2ffa8f20af0611e77040767b45bcefee103e96bb
15 class SkinStandard
extends Skin
{
20 function getHeadScripts() {
23 $s = parent
::getHeadScripts();
24 if ( 3 == $this->qbSetting() ) { # Floating left
25 $s .= "<script language='javascript' type='text/javascript' " .
26 "src='{$wgStylePath}/common/sticky.js'></script>\n";
34 function getUserStyles() {
37 if ( 3 == $this->qbSetting() ) { # Floating left
38 $s .= "<style type='text/css'>\n" .
39 "@import '{$wgStylePath}/common/quickbar.css';\n</style>\n";
41 $s .= parent
::getUserStyles();
48 function doGetUserStyles() {
49 global $wgUser, $wgOut, $wgStylePath;
51 $s = parent
::doGetUserStyles();
52 $qb = $this->qbSetting();
54 if ( 2 == $qb ) { # Right
55 $s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
56 "border-left: 2px solid #000000; }\n" .
57 "#article { margin-left: 4px; margin-right: 152px; }\n";
58 } else if ( 1 == $qb ||
3 == $qb ) {
59 $s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
60 "border-right: 1px solid gray; }\n" .
61 "#article { margin-left: 152px; margin-right: 4px; }\n";
69 function getBodyOptions() {
70 $a = parent
::getBodyOptions();
72 if ( 3 == $this->qbSetting() ) { # Floating left
73 $qb = "setup(\"quickbar\")";
75 $a["onload"] .= ";$qb";
83 function doAfterContent() {
84 global $wgUser, $wgOut, $wgContLang;
85 $fname = 'SkinStandard::doAfterContent';
86 wfProfileIn( $fname );
87 wfProfileIn( $fname.'-1' );
89 $s = "\n</div><br style=\"clear:both\" />\n";
90 $s .= "\n<div id='footer'>";
91 $s .= '<table border="0" cellspacing="0"><tr>';
93 wfProfileOut( $fname.'-1' );
94 wfProfileIn( $fname.'-2' );
96 $qb = $this->qbSetting();
98 $left = ($qb == 1 ||
$qb == 3);
99 if($wgContLang->isRTL()) $left = !$left;
101 if ( $shove && $left ) { # Left
102 $s .= $this->getQuickbarCompensator();
104 wfProfileOut( $fname.'-2' );
105 wfProfileIn( $fname.'-3' );
106 $l = $wgContLang->isRTL() ?
'right' : 'left';
107 $s .= "<td class='bottom' align='$l' valign='top'>";
109 $s .= $this->bottomLinks();
110 $s .= "\n<br />" . $this->mainPageLink()
111 . ' | ' . $this->aboutLink()
112 . ' | ' . $this->specialLink( 'recentchanges' )
113 . ' | ' . $this->searchForm()
114 . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
117 if ( $shove && !$left ) { # Right
118 $s .= $this->getQuickbarCompensator();
120 $s .= "</tr></table>\n</div>\n</div>\n";
122 wfProfileOut( $fname.'-3' );
123 wfProfileIn( $fname.'-4' );
124 if ( 0 != $qb ) { $s .= $this->quickBar(); }
125 wfProfileOut( $fname.'-4' );
126 wfProfileOut( $fname );
130 function quickBar() {
131 global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang;
132 global $wgDisableUploads, $wgRemoteUploads, $wgNavigationLinks;
134 $fname = 'Skin::quickBar';
135 wfProfileIn( $fname );
137 $action = $wgRequest->getText( 'action' );
138 $wpPreview = $wgRequest->getBool( 'wpPreview' );
139 $tns=$wgTitle->getNamespace();
141 $s = "\n<div id='quickbar'>";
142 $s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
146 foreach ( $wgNavigationLinks as $link ) {
147 $msg = wfMsgForContent( $link['href'] );
149 $s .= '<a href="' . $this->makeInternalOrExternalUrl( $msg ) . '">' .
150 wfMsg( $link['text'] ) . '</a>' . $sep;
155 if ($wgUser->getID()) {
156 $s.= $this->specialLink( 'watchlist' ) ;
157 $s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ),
158 wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
161 // only show watchlist link if logged in
162 $s .= "\n<hr class='sep' />";
163 $articleExists = $wgTitle->getArticleId();
164 if ( $wgOut->isArticle() ||
$action =='edit' ||
$action =='history' ||
$wpPreview) {
165 if($wgOut->isArticle()) {
166 $s .= '<strong>' . $this->editThisPage() . '</strong>';
167 } else { # backlink to the article in edit or history mode
168 if($articleExists){ # no backlink if no article
171 $text = wfMsg('articlepage');
174 $text = wfMsg('viewtalkpage');
177 $text = wfMsg('userpage');
180 $text = wfMsg('viewtalkpage');
183 $text = wfMsg('wikipediapage');
186 $text = wfMsg('viewtalkpage');
189 $text = wfMsg('imagepage');
192 $text = wfMsg('viewtalkpage');
195 $text= wfMsg('articlepage');
198 $link = $wgTitle->getText();
199 if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary
200 $link = $nstext . ':' . $link ;
203 $s .= $this->makeLink( $link, $text );
204 } elseif( $wgTitle->getNamespace() != Namespace::getSpecial() ) {
205 # we just throw in a "New page" text to tell the user that he's in edit mode,
206 # and to avoid messing with the separator that is prepended to the next item
207 $s .= '<strong>' . wfMsg('newpage') . '</strong>';
213 if( $tns%2
&& $action!='edit' && !$wpPreview) {
214 $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new');
218 watching could cause problems in edit mode:
219 if user edits article, then loads "watch this article" in background and then saves
220 article with "Watch this article" checkbox disabled, the article is transparently
221 unwatched. Therefore we do not show the "Watch this page" link in edit mode
223 if ( 0 != $wgUser->getID() && $articleExists) {
224 if($action!='edit' && $action != 'submit' )
226 $s .= $sep . $this->watchThisPage();
228 if ( $wgTitle->userCanEdit() )
229 $s .= $sep . $this->moveThisPage();
231 if ( $wgUser->isSysop() and $articleExists ) {
232 $s .= $sep . $this->deleteThisPage() .
233 $sep . $this->protectThisPage();
235 $s .= $sep . $this->talkLink();
236 if ($articleExists && $action !='history') {
237 $s .= $sep . $this->historyLink();
239 $s.=$sep . $this->whatLinksHere();
241 if($wgOut->isArticleRelated()) {
242 $s .= $sep . $this->watchPageLinksLink();
245 if ( Namespace::getUser() == $wgTitle->getNamespace()
246 ||
$wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser())
249 $id=User
::idFromName($wgTitle->getText());
250 $ip=User
::isIP($wgTitle->getText());
253 $s .= $sep . $this->userContribsLink();
255 if ( 0 != $wgUser->getID() ) {
256 if($id) { # can only email real users
257 $s .= $sep . $this->emailUserLink();
261 $s .= "\n<br /><hr class='sep' />";
264 if ( 0 != $wgUser->getID() && ( !$wgDisableUploads ||
$wgRemoteUploads ) ) {
265 $s .= $this->specialLink( 'upload' ) . $sep;
267 $s .= $this->specialLink( 'specialpages' )
268 . $sep . $this->bugReportsLink();
270 global $wgSiteSupportPage;
271 if( $wgSiteSupportPage ) {
272 $s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
273 '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
276 $s .= "\n<br /></div>\n";
277 wfProfileOut( $fname );