00001 <?php
00013 if( !defined( 'MEDIAWIKI' ) )
00014 die( -1 );
00015
00021 class SkinMonoBook extends SkinTemplate {
00023 var $skinname = 'monobook', $stylename = 'monobook',
00024 $template = 'MonoBookTemplate', $useHeadElement = true;
00025
00026 function setupSkinUserCss( OutputPage $out ) {
00027 global $wgHandheldStyle;
00028
00029 parent::setupSkinUserCss( $out );
00030
00031
00032 $out->addStyle( 'monobook/main.css', 'screen' );
00033 if( $wgHandheldStyle ) {
00034
00035 $out->addStyle( $wgHandheldStyle, 'handheld' );
00036 }
00037
00038 $out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
00039 $out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' );
00040 $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
00041 $out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
00042
00043 $out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
00044
00045 }
00046 }
00047
00052 class MonoBookTemplate extends QuickTemplate {
00053 var $skin;
00062 function execute() {
00063 global $wgRequest;
00064
00065 $this->skin = $skin = $this->data['skin'];
00066 $action = $wgRequest->getText( 'action' );
00067
00068
00069 wfSuppressWarnings();
00070
00071 $this->html( 'headelement' );
00072 ?><div id="globalWrapper">
00073 <div id="column-content"><div id="content" <?php $this->html("specialpageattributes") ?>>
00074 <a id="top"></a>
00075 <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
00076
00077 <h1 id="firstHeading" class="firstHeading"><?php $this->html('title') ?></h1>
00078 <div id="bodyContent">
00079 <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
00080 <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
00081 <?php if($this->data['undelete']) { ?>
00082 <div id="contentSub2"><?php $this->html('undelete') ?></div>
00083 <?php } ?><?php if($this->data['newtalk'] ) { ?>
00084 <div class="usermessage"><?php $this->html('newtalk') ?></div>
00085 <?php } ?><?php if($this->data['showjumplinks']) { ?>
00086 <div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
00087 <?php } ?>
00088 <!-- start content -->
00089 <?php $this->html('bodytext') ?>
00090 <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
00091 <!-- end content -->
00092 <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
00093 <div class="visualClear"></div>
00094 </div>
00095 </div></div>
00096 <div id="column-one"<?php $this->html('userlangattributes') ?>>
00097 <div id="p-cactions" class="portlet">
00098 <h5><?php $this->msg('views') ?></h5>
00099 <div class="pBody">
00100 <ul><?php
00101 foreach($this->data['content_actions'] as $key => $tab) {
00102 echo '
00103 <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
00104 if( $tab['class'] ) {
00105 echo ' class="'.htmlspecialchars($tab['class']).'"';
00106 }
00107 echo '><a href="'.htmlspecialchars($tab['href']).'"';
00108 # We don't want to give the watch tab an accesskey if the
00109 # page is being edited, because that conflicts with the
00110 # accesskey on the watch checkbox. We also don't want to
00111 # give the edit tab an accesskey, because that's fairly su-
00112 # perfluous and conflicts with an accesskey (Ctrl-E) often
00113 # used for editing in Safari.
00114 if( in_array( $action, array( 'edit', 'submit' ) )
00115 && in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
00116 echo $skin->tooltip( "ca-$key" );
00117 } else {
00118 echo $skin->tooltipAndAccesskey( "ca-$key" );
00119 }
00120 echo '>'.htmlspecialchars($tab['text']).'</a></li>';
00121 } ?>
00122
00123 </ul>
00124 </div>
00125 </div>
00126 <div class="portlet" id="p-personal">
00127 <h5><?php $this->msg('personaltools') ?></h5>
00128 <div class="pBody">
00129 <ul<?php $this->html('userlangattributes') ?>>
00130 <?php foreach($this->data['personal_urls'] as $key => $item) { ?>
00131 <li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
00132 if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
00133 echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
00134 if(!empty($item['class'])) { ?> class="<?php
00135 echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
00136 echo htmlspecialchars($item['text']) ?></a></li>
00137 <?php } ?>
00138 </ul>
00139 </div>
00140 </div>
00141 <div class="portlet" id="p-logo">
00142 <a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
00143 ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
00144 echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
00145 </div>
00146 <script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
00147 <?php
00148 $sidebar = $this->data['sidebar'];
00149 if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
00150 if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
00151 if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
00152 foreach ($sidebar as $boxName => $cont) {
00153 if ( $boxName == 'SEARCH' ) {
00154 $this->searchBox();
00155 } elseif ( $boxName == 'TOOLBOX' ) {
00156 $this->toolbox();
00157 } elseif ( $boxName == 'LANGUAGES' ) {
00158 $this->languageBox();
00159 } else {
00160 $this->customBox( $boxName, $cont );
00161 }
00162 }
00163 ?>
00164 </div><!-- end of the left (by default at least) column -->
00165 <div class="visualClear"></div>
00166 <div id="footer"<?php $this->html('userlangattributes') ?>>
00167 <?php
00168 if($this->data['poweredbyico']) { ?>
00169 <div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
00170 <?php }
00171 if($this->data['copyrightico']) { ?>
00172 <div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
00173 <?php }
00174
00175
00176 $footerlinks = array(
00177 'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
00178 'privacy', 'about', 'disclaimer', 'tagline',
00179 );
00180 $validFooterLinks = array();
00181 foreach( $footerlinks as $aLink ) {
00182 if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
00183 $validFooterLinks[] = $aLink;
00184 }
00185 }
00186 if ( count( $validFooterLinks ) > 0 ) {
00187 ?> <ul id="f-list">
00188 <?php
00189 foreach( $validFooterLinks as $aLink ) {
00190 if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
00191 ?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
00192 <?php }
00193 }
00194 ?>
00195 </ul>
00196 <?php }
00197 ?>
00198 </div>
00199 </div>
00200 <?php $this->html('bottomscripts'); ?>
00201 <?php $this->html('reporttime') ?>
00202 <?php if ( $this->data['debug'] ): ?>
00203 <!-- Debug output:
00204 <?php $this->text( 'debug' ); ?>
00205
00206 -->
00207 <?php endif; ?>
00208 </body></html>
00209 <?php
00210 wfRestoreWarnings();
00211 }
00212
00213
00214 function searchBox() {
00215 global $wgUseTwoButtonsSearchForm;
00216 ?>
00217 <div id="p-search" class="portlet">
00218 <h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
00219 <div id="searchBody" class="pBody">
00220 <form action="<?php $this->text('wgScript') ?>" id="searchform">
00221 <input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
00222 <?php
00223 echo Html::input( 'search',
00224 isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
00225 array(
00226 'id' => 'searchInput',
00227 'title' => $this->skin->titleAttrib( 'search' ),
00228 'accesskey' => $this->skin->accesskey( 'search' )
00229 ) ); ?>
00230
00231 <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>
00232 <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
00233
00234 <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
00235
00236 </form>
00237 </div>
00238 </div>
00239 <?php
00240 }
00241
00242
00243 function toolbox() {
00244 ?>
00245 <div class="portlet" id="p-tb">
00246 <h5><?php $this->msg('toolbox') ?></h5>
00247 <div class="pBody">
00248 <ul>
00249 <?php
00250 if($this->data['notspecialpage']) { ?>
00251 <li id="t-whatlinkshere"><a href="<?php
00252 echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
00253 ?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
00254 <?php
00255 if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
00256 <li id="t-recentchangeslinked"><a href="<?php
00257 echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
00258 ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
00259 <?php }
00260 }
00261 if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
00262 <li id="t-trackbacklink"><a href="<?php
00263 echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
00264 ?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
00265 <?php }
00266 if($this->data['feeds']) { ?>
00267 <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
00268 ?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
00269 echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>
00270 <?php } ?></li><?php
00271 }
00272
00273 foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
00274
00275 if($this->data['nav_urls'][$special]) {
00276 ?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
00277 ?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
00278 <?php }
00279 }
00280
00281 if(!empty($this->data['nav_urls']['print']['href'])) { ?>
00282 <li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
00283 ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
00284 }
00285
00286 if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
00287 <li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
00288 ?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
00289 } elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
00290 <li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
00291 }
00292
00293 wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
00294 wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
00295 ?>
00296 </ul>
00297 </div>
00298 </div>
00299 <?php
00300 }
00301
00302
00303 function languageBox() {
00304 if( $this->data['language_urls'] ) {
00305 ?>
00306 <div id="p-lang" class="portlet">
00307 <h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
00308 <div class="pBody">
00309 <ul>
00310 <?php foreach($this->data['language_urls'] as $langlink) { ?>
00311 <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
00312 ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
00313 <?php } ?>
00314 </ul>
00315 </div>
00316 </div>
00317 <?php
00318 }
00319 }
00320
00321
00322 function customBox( $bar, $cont ) {
00323 ?>
00324 <div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
00325 <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
00326 <div class='pBody'>
00327 <?php if ( is_array( $cont ) ) { ?>
00328 <ul>
00329 <?php foreach($cont as $key => $val) { ?>
00330 <li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
00331 if ( $val['active'] ) { ?> class="active" <?php }
00332 ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
00333 <?php } ?>
00334 </ul>
00335 <?php } else {
00336 # allow raw HTML block to be defined by extensions
00337 print $cont;
00338 }
00339 ?>
00340 </div>
00341 </div>
00342 <?php
00343 }
00344 }
00345
00346