]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - skins/Standard.php
MediaWiki 1.5.8 (initial commit)
[autoinstallsdev/mediawiki.git] / skins / Standard.php
1 <?php
2 /**
3  * See skin.txt
4  *
5  * @todo document
6  * @package MediaWiki
7  * @subpackage Skins
8  */
9
10 if( !defined( 'MEDIAWIKI' ) )
11         die();
12
13 /**
14  * @todo document
15  * @package MediaWiki
16  * @subpackage Skins
17  */
18 class SkinStandard extends Skin {
19
20         /**
21          *
22          */
23         function getHeadScripts() {
24                 global $wgStylePath, $wgJsMimeType;
25
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";
30                 }
31                 return $s;
32         }
33
34         /**
35          *
36          */
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";
43                 } else if ( 4 == $this->qbSetting() ) { # Floating right        
44                         $s .= "<style type='text/css'>\n" .
45                           "@import '{$wgStylePath}/common/quickbar-right.css';\n</style>\n";
46                 }
47                 $s .= parent::getUserStyles();
48                 return $s;
49         }
50
51         /**
52          *
53          */
54         function doGetUserStyles() {
55                 global $wgUser, $wgOut, $wgStylePath;
56
57                 $s = parent::doGetUserStyles();
58                 $qb = $this->qbSetting();
59
60                 if ( 2 == $qb ) { # Right
61                         $s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
62                           "border-left: 2px solid #000000; }\n" .
63                           "#article { margin-left: 4px; margin-right: 152px; }\n";
64                 } else if ( 1 == $qb || 3 == $qb ) {
65                         $s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
66                           "border-right: 1px solid gray; }\n" .
67                           "#article { margin-left: 152px; margin-right: 4px; }\n";
68                 } else if ( 4 == $qb) {
69                         $s .= "#quickbar { border-right: 1px solid gray; }\n" .
70                           "#article { margin-right: 152px; margin-left: 4px; }\n";
71                 }       
72                 return $s;
73         }
74
75         /**
76          *
77          */
78         function getBodyOptions() {
79                 $a = parent::getBodyOptions();
80
81                 if ( 3 == $this->qbSetting() ) { # Floating left
82                         $qb = "setup(\"quickbar\")";
83                         if($a["onload"]) {
84                                 $a["onload"] .= ";$qb";
85                         } else {
86                                 $a["onload"] = $qb;
87                         }
88                 }
89                 return $a;
90         }
91
92         function doAfterContent() {
93                 global $wgUser, $wgOut, $wgContLang;
94                 $fname =  'SkinStandard::doAfterContent';
95                 wfProfileIn( $fname );
96                 wfProfileIn( $fname.'-1' );
97
98                 $s = "\n</div><br style=\"clear:both\" />\n";
99                 $s .= "\n<div id='footer'>";
100                 $s .= '<table border="0" cellspacing="0"><tr>';
101
102                 wfProfileOut( $fname.'-1' );
103                 wfProfileIn( $fname.'-2' );
104
105                 $qb = $this->qbSetting();
106                 $shove = ($qb != 0);
107                 $left = ($qb == 1 || $qb == 3);
108                 if($wgContLang->isRTL()) $left = !$left;
109
110                 if ( $shove && $left ) { # Left
111                                 $s .= $this->getQuickbarCompensator();
112                 }
113                 wfProfileOut( $fname.'-2' );
114                 wfProfileIn( $fname.'-3' );
115                 $l = $wgContLang->isRTL() ? 'right' : 'left';
116                 $s .= "<td class='bottom' align='$l' valign='top'>";
117
118                 $s .= $this->bottomLinks();
119                 $s .= "\n<br />" . $this->mainPageLink()
120                   . ' | ' . $this->aboutLink()
121                   . ' | ' . $this->specialLink( 'recentchanges' )
122                   . ' | ' . $this->searchForm()
123                   . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
124
125                 $s .= "</td>";
126                 if ( $shove && !$left ) { # Right
127                         $s .= $this->getQuickbarCompensator();
128                 }
129                 $s .= "</tr></table>\n</div>\n</div>\n";
130
131                 wfProfileOut( $fname.'-3' );
132                 wfProfileIn( $fname.'-4' );
133                 if ( 0 != $qb ) { $s .= $this->quickBar(); }
134                 wfProfileOut( $fname.'-4' );
135                 wfProfileOut( $fname );
136                 return $s;
137         }
138
139         function quickBar() {
140                 global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang;
141                 global $wgEnableUploads, $wgRemoteUploads;
142
143                 $fname =  'Skin::quickBar';
144                 wfProfileIn( $fname );
145
146                 $action = $wgRequest->getText( 'action' );
147                 $wpPreview = $wgRequest->getBool( 'wpPreview' );
148                 $tns=$wgTitle->getNamespace();
149
150                 $s = "\n<div id='quickbar'>";
151                 $s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
152
153                 $sep = "\n<br />";
154                 
155                 # Use the first heading from the Monobook sidebar as the "browse" section
156                 $bar = $this->buildSidebar();
157                 $browseLinks = reset( $bar );
158
159                 foreach ( $browseLinks as $link ) {
160                         if ( $link['text'] != '-' ) {
161                                 $s .= "<a href=\"{$link['href']}\">" .
162                                         htmlspecialchars( $link['text'] ) . '</a>' . $sep;
163                         }
164                 }
165
166                 if( $wgUser->isLoggedIn() ) {
167                         $s.= $this->specialLink( 'watchlist' ) ;
168                         $s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ),
169                                 wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
170                 }
171                 // only show watchlist link if logged in
172                 $s .= "\n<hr class='sep' />";
173                 $articleExists = $wgTitle->getArticleId();
174                 if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
175                         if($wgOut->isArticle()) {
176                                 $s .= '<strong>' . $this->editThisPage() . '</strong>';
177                         } else { # backlink to the article in edit or history mode
178                                 if($articleExists){ # no backlink if no article
179                                         switch($tns) {
180                                                 case 0:
181                                                 $text = wfMsg('articlepage');
182                                                 break;
183                                                 case 1:
184                                                 $text = wfMsg('viewtalkpage');
185                                                 break;
186                                                 case 2:
187                                                 $text = wfMsg('userpage');
188                                                 break;
189                                                 case 3:
190                                                 $text = wfMsg('viewtalkpage');
191                                                 break;
192                                                 case 4:
193                                                 $text = wfMsg('wikipediapage');
194                                                 break;
195                                                 case 5:
196                                                 $text = wfMsg('viewtalkpage');
197                                                 break;
198                                                 case 6:
199                                                 $text = wfMsg('imagepage');
200                                                 break;
201                                                 case 7:
202                                                 $text = wfMsg('viewtalkpage');
203                                                 break;
204                                                 default:
205                                                 $text= wfMsg('articlepage');
206                                         }
207
208                                         $link = $wgTitle->getText();
209                                         if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary
210                                                 $link = $nstext . ':' . $link ;
211                                         }
212
213                                         $s .= $this->makeLink( $link, $text );
214                                 } elseif( $wgTitle->getNamespace() != NS_SPECIAL ) {
215                                         # we just throw in a "New page" text to tell the user that he's in edit mode,
216                                         # and to avoid messing with the separator that is prepended to the next item
217                                         $s .= '<strong>' . wfMsg('newpage') . '</strong>';
218                                 }
219
220                         }
221
222
223                         if( $tns%2 && $action!='edit' && !$wpPreview) {
224                                 $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit&section=new');
225                         }
226
227                         /*
228                         watching could cause problems in edit mode:
229                         if user edits article, then loads "watch this article" in background and then saves
230                         article with "Watch this article" checkbox disabled, the article is transparently
231                         unwatched. Therefore we do not show the "Watch this page" link in edit mode
232                         */
233                         if ( $wgUser->isLoggedIn() && $articleExists) {
234                                 if($action!='edit' && $action != 'submit' )
235                                 {
236                                         $s .= $sep . $this->watchThisPage();
237                                 }
238                                 if ( $wgTitle->userCanEdit() )
239                                         $s .= $sep . $this->moveThisPage();
240                         }
241                         if ( $wgUser->isAllowed('delete') and $articleExists ) {
242                                 $s .= $sep . $this->deleteThisPage() .
243                                 $sep . $this->protectThisPage();
244                         }
245                         $s .= $sep . $this->talkLink();
246                         if ($articleExists && $action !='history') {
247                                 $s .= $sep . $this->historyLink();
248                         }
249                         $s.=$sep . $this->whatLinksHere();
250
251                         if($wgOut->isArticleRelated()) {
252                                 $s .= $sep . $this->watchPageLinksLink();
253                         }
254
255                         if ( NS_USER == $wgTitle->getNamespace()
256                                 || $wgTitle->getNamespace() == NS_USER_TALK ) {
257
258                                 $id=User::idFromName($wgTitle->getText());
259                                 $ip=User::isIP($wgTitle->getText());
260
261                                 if($id||$ip) {
262                                         $s .= $sep . $this->userContribsLink();
263                                 }
264                                 if( $this->showEmailUser( $id ) ) {
265                                         $s .= $sep . $this->emailUserLink();
266                                 }
267                         }
268                         $s .= "\n<br /><hr class='sep' />";
269                 }
270
271                 if ( $wgUser->isLoggedIn() && ( $wgEnableUploads || $wgRemoteUploads ) ) {
272                         $s .= $this->specialLink( 'upload' ) . $sep;
273                 }
274                 $s .= $this->specialLink( 'specialpages' )
275                   . $sep . $this->bugReportsLink();
276
277                 global $wgSiteSupportPage;
278                 if( $wgSiteSupportPage ) {
279                         $s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
280                           '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
281                 }
282
283                 $s .= "\n<br /></div>\n";
284                 wfProfileOut( $fname );
285                 return $s;
286         }
287
288
289 }
290
291 ?>