10 if( !defined( 'MEDIAWIKI' ) )
18 class SkinStandard
extends Skin
{
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";
37 function getUserStyles() {
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();
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";
72 function getBodyOptions() {
73 $a = parent
::getBodyOptions();
75 if ( 3 == $this->qbSetting() ) { # Floating left
76 $qb = "setup(\"quickbar\")";
78 $a["onload"] .= ";$qb";
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();
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>';
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 );
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' />";
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
164 $text = wfMsg('articlepage');
167 $text = wfMsg('viewtalkpage');
170 $text = wfMsg('userpage');
173 $text = wfMsg('viewtalkpage');
176 $text = wfMsg('wikipediapage');
179 $text = wfMsg('viewtalkpage');
182 $text = wfMsg('imagepage');
185 $text = wfMsg('viewtalkpage');
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§ion=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());
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 );