* Removed $wgNavigationLinks, doesn't have any effect
[mediawiki.git] / skins / Standard.php
blob6ef32d9ed8cd3bf4ddf9c77fb7202d44c99b29d7
1 <?php
2 /**
3 * See skin.txt
5 * @todo document
6 * @package MediaWiki
7 * @subpackage Skins
8 */
10 if( !defined( 'MEDIAWIKI' ) )
11 die();
13 /**
14 * @todo document
15 * @package MediaWiki
16 * @subpackage Skins
18 class SkinStandard extends Skin {
20 /**
23 function getHeadScripts() {
24 global $wgStylePath, $wgJsMimeType;
26 $s = parent::getHeadScripts();
27 if ( 3 == $this->qbSetting() ) { # Floating left
28 $s .= "<script language='javascript' type='$wgJsMimeType' " .
29 "src='{$wgStylePath}/common/sticky.js'></script>\n";
31 return $s;
34 /**
37 function getUserStyles() {
38 global $wgStylePath;
39 $s = '';
40 if ( 3 == $this->qbSetting() ) { # Floating left
41 $s .= "<style type='text/css'>\n" .
42 "@import '{$wgStylePath}/common/quickbar.css';\n</style>\n";
44 $s .= parent::getUserStyles();
45 return $s;
48 /**
51 function doGetUserStyles() {
52 global $wgUser, $wgOut, $wgStylePath;
54 $s = parent::doGetUserStyles();
55 $qb = $this->qbSetting();
57 if ( 2 == $qb ) { # Right
58 $s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
59 "border-left: 2px solid #000000; }\n" .
60 "#article { margin-left: 4px; margin-right: 152px; }\n";
61 } else if ( 1 == $qb || 3 == $qb ) {
62 $s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
63 "border-right: 1px solid gray; }\n" .
64 "#article { margin-left: 152px; margin-right: 4px; }\n";
66 return $s;
69 /**
72 function getBodyOptions() {
73 $a = parent::getBodyOptions();
75 if ( 3 == $this->qbSetting() ) { # Floating left
76 $qb = "setup(\"quickbar\")";
77 if($a["onload"]) {
78 $a["onload"] .= ";$qb";
79 } else {
80 $a["onload"] = $qb;
83 return $a;
86 function doAfterContent() {
87 global $wgUser, $wgOut, $wgContLang;
88 $fname = 'SkinStandard::doAfterContent';
89 wfProfileIn( $fname );
90 wfProfileIn( $fname.'-1' );
92 $s = "\n</div><br style=\"clear:both\" />\n";
93 $s .= "\n<div id='footer'>";
94 $s .= '<table border="0" cellspacing="0"><tr>';
96 wfProfileOut( $fname.'-1' );
97 wfProfileIn( $fname.'-2' );
99 $qb = $this->qbSetting();
100 $shove = ($qb != 0);
101 $left = ($qb == 1 || $qb == 3);
102 if($wgContLang->isRTL()) $left = !$left;
104 if ( $shove && $left ) { # Left
105 $s .= $this->getQuickbarCompensator();
107 wfProfileOut( $fname.'-2' );
108 wfProfileIn( $fname.'-3' );
109 $l = $wgContLang->isRTL() ? 'right' : 'left';
110 $s .= "<td class='bottom' align='$l' valign='top'>";
112 $s .= $this->bottomLinks();
113 $s .= "\n<br />" . $this->mainPageLink()
114 . ' | ' . $this->aboutLink()
115 . ' | ' . $this->specialLink( 'recentchanges' )
116 . ' | ' . $this->searchForm()
117 . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
119 $s .= "</td>";
120 if ( $shove && !$left ) { # Right
121 $s .= $this->getQuickbarCompensator();
123 $s .= "</tr></table>\n</div>\n</div>\n";
125 wfProfileOut( $fname.'-3' );
126 wfProfileIn( $fname.'-4' );
127 if ( 0 != $qb ) { $s .= $this->quickBar(); }
128 wfProfileOut( $fname.'-4' );
129 wfProfileOut( $fname );
130 return $s;
133 function quickBar() {
134 global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang;
135 global $wgEnableUploads, $wgRemoteUploads;
137 $fname = 'Skin::quickBar';
138 wfProfileIn( $fname );
140 $action = $wgRequest->getText( 'action' );
141 $wpPreview = $wgRequest->getBool( 'wpPreview' );
142 $tns=$wgTitle->getNamespace();
144 $s = "\n<div id='quickbar'>";
145 $s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
147 $sep = "\n<br />";
149 if( $wgUser->isLoggedIn() ) {
150 $s.= $this->specialLink( 'watchlist' ) ;
151 $s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ),
152 wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
154 // only show watchlist link if logged in
155 $s .= "\n<hr class='sep' />";
156 $articleExists = $wgTitle->getArticleId();
157 if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
158 if($wgOut->isArticle()) {
159 $s .= '<strong>' . $this->editThisPage() . '</strong>';
160 } else { # backlink to the article in edit or history mode
161 if($articleExists){ # no backlink if no article
162 switch($tns) {
163 case 0:
164 $text = wfMsg('articlepage');
165 break;
166 case 1:
167 $text = wfMsg('viewtalkpage');
168 break;
169 case 2:
170 $text = wfMsg('userpage');
171 break;
172 case 3:
173 $text = wfMsg('viewtalkpage');
174 break;
175 case 4:
176 $text = wfMsg('wikipediapage');
177 break;
178 case 5:
179 $text = wfMsg('viewtalkpage');
180 break;
181 case 6:
182 $text = wfMsg('imagepage');
183 break;
184 case 7:
185 $text = wfMsg('viewtalkpage');
186 break;
187 default:
188 $text= wfMsg('articlepage');
191 $link = $wgTitle->getText();
192 if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary
193 $link = $nstext . ':' . $link ;
196 $s .= $this->makeLink( $link, $text );
197 } elseif( $wgTitle->getNamespace() != NS_SPECIAL ) {
198 # we just throw in a "New page" text to tell the user that he's in edit mode,
199 # and to avoid messing with the separator that is prepended to the next item
200 $s .= '<strong>' . wfMsg('newpage') . '</strong>';
206 if( $tns%2 && $action!='edit' && !$wpPreview) {
207 $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit&section=new');
211 watching could cause problems in edit mode:
212 if user edits article, then loads "watch this article" in background and then saves
213 article with "Watch this article" checkbox disabled, the article is transparently
214 unwatched. Therefore we do not show the "Watch this page" link in edit mode
216 if ( $wgUser->isLoggedIn() && $articleExists) {
217 if($action!='edit' && $action != 'submit' )
219 $s .= $sep . $this->watchThisPage();
221 if ( $wgTitle->userCanEdit() )
222 $s .= $sep . $this->moveThisPage();
224 if ( $wgUser->isAllowed('delete') and $articleExists ) {
225 $s .= $sep . $this->deleteThisPage() .
226 $sep . $this->protectThisPage();
228 $s .= $sep . $this->talkLink();
229 if ($articleExists && $action !='history') {
230 $s .= $sep . $this->historyLink();
232 $s.=$sep . $this->whatLinksHere();
234 if($wgOut->isArticleRelated()) {
235 $s .= $sep . $this->watchPageLinksLink();
238 if ( NS_USER == $wgTitle->getNamespace()
239 || $wgTitle->getNamespace() == NS_USER_TALK ) {
241 $id=User::idFromName($wgTitle->getText());
242 $ip=User::isIP($wgTitle->getText());
244 if($id||$ip) {
245 $s .= $sep . $this->userContribsLink();
247 if( $this->showEmailUser( $id ) ) {
248 $s .= $sep . $this->emailUserLink();
251 $s .= "\n<br /><hr class='sep' />";
254 if ( $wgUser->isLoggedIn() && ( $wgEnableUploads || $wgRemoteUploads ) ) {
255 $s .= $this->specialLink( 'upload' ) . $sep;
257 $s .= $this->specialLink( 'specialpages' )
258 . $sep . $this->bugReportsLink();
260 global $wgSiteSupportPage;
261 if( $wgSiteSupportPage ) {
262 $s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
263 '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
266 $s .= "\n<br /></div>\n";
267 wfProfileOut( $fname );
268 return $s;