diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
commit | ca32f08966f1b51fcb19460f0996bb0c4048e6fe (patch) | |
tree | ec04cc15b867bc21eedca904cea9af0254531a11 /skins/MonoBook.php | |
parent | a22fbfc60f36f5f7ee10d5ae6fe347340c2ee67c (diff) |
Update to MediaWiki 1.18.0
* also update ArchLinux skin to chagnes in MonoBook
* Use only css to hide our menu bar when printing
Diffstat (limited to 'skins/MonoBook.php')
-rw-r--r-- | skins/MonoBook.php | 299 |
1 files changed, 127 insertions, 172 deletions
diff --git a/skins/MonoBook.php b/skins/MonoBook.php index 95833e56..0cf72e93 100644 --- a/skins/MonoBook.php +++ b/skins/MonoBook.php @@ -25,23 +25,22 @@ class SkinMonoBook extends SkinTemplate { function setupSkinUserCss( OutputPage $out ) { global $wgHandheldStyle; - parent::setupSkinUserCss( $out ); - // Append to the default screen common & print styles... - $out->addStyle( 'monobook/main.css', 'screen' ); + $out->addModuleStyles( 'skins.monobook' ); + + // Ugh. Can't do this properly because $wgHandheldStyle may be a URL if( $wgHandheldStyle ) { // Currently in testing... try 'chick/main.css' $out->addStyle( $wgHandheldStyle, 'handheld' ); } + // TODO: Migrate all of these $out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' ); $out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' ); $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' ); $out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' ); - $out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' ); - } } @@ -49,8 +48,13 @@ class SkinMonoBook extends SkinTemplate { * @todo document * @ingroup Skins */ -class MonoBookTemplate extends QuickTemplate { +class MonoBookTemplate extends BaseTemplate { + + /** + * @var Skin + */ var $skin; + /** * Template filter callback for MonoBook skin. * Takes an associative array of data set from a SkinTemplate-based @@ -60,38 +64,14 @@ class MonoBookTemplate extends QuickTemplate { * @access private */ function execute() { - global $wgRequest; - - $this->skin = $skin = $this->data['skin']; - $action = $wgRequest->getText( 'action' ); + $this->skin = $this->data['skin']; // Suppress warnings to prevent notices about missing indexes in $this->data wfSuppressWarnings(); - // Generate additional footer links - $footerlinks = $this->data["footerlinks"]; - // fold footerlinks into a single array using a bit of trickery - $footerlinks = call_user_func_array('array_merge', array_values($footerlinks)); - // Generate additional footer icons - $footericons = $this->data["footericons"]; - // Unset any icons which don't have an image - foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) { - foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) { - if ( !is_string($footerIcon) && !isset($footerIcon["src"]) ) { - unset($footerIconsBlock[$footerIconKey]); - } - } - } - // Redo removal of any empty blocks - foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) { - if ( count($footerIconsBlock) <= 0 ) { - unset($footericons[$footerIconsKey]); - } - } - $this->html( 'headelement' ); ?><div id="globalWrapper"> -<div id="column-content"><div id="content"<?php $this->html("specialpageattributes") ?>> +<div id="column-content"><div id="content"> <a id="top"></a> <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?> @@ -115,77 +95,45 @@ class MonoBookTemplate extends QuickTemplate { </div> </div></div> <div id="column-one"<?php $this->html('userlangattributes') ?>> - <div id="p-cactions" class="portlet"> - <h5><?php $this->msg('views') ?></h5> - <div class="pBody"> - <ul><?php - foreach($this->data['content_actions'] as $key => $tab) { - echo ' - <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"'; - if( $tab['class'] ) { - echo ' class="'.htmlspecialchars($tab['class']).'"'; - } - echo '><a href="'.htmlspecialchars($tab['href']).'"'; - # We don't want to give the watch tab an accesskey if the - # page is being edited, because that conflicts with the - # accesskey on the watch checkbox. We also don't want to - # give the edit tab an accesskey, because that's fairly su- - # perfluous and conflicts with an accesskey (Ctrl-E) often - # used for editing in Safari. - if( in_array( $action, array( 'edit', 'submit' ) ) - && in_array( $key, array( 'edit', 'watch', 'unwatch' ))) { - echo $skin->tooltip( "ca-$key" ); - } else { - echo $skin->tooltipAndAccesskey( "ca-$key" ); - } - echo '>'.htmlspecialchars($tab['text']).'</a></li>'; - } ?> - - </ul> - </div> - </div> +<?php $this->cactions(); ?> <div class="portlet" id="p-personal"> <h5><?php $this->msg('personaltools') ?></h5> <div class="pBody"> <ul<?php $this->html('userlangattributes') ?>> -<?php foreach($this->data['personal_urls'] as $key => $item) { ?> - <li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php - if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php - echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php - if(!empty($item['class'])) { ?> class="<?php - echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php - echo htmlspecialchars($item['text']) ?></a></li> -<?php } ?> +<?php foreach($this->getPersonalTools() as $key => $item) { ?> + <?php echo $this->makeListItem($key, $item); ?> + +<?php } ?> </ul> </div> </div> <div class="portlet" id="p-logo"> - <a style="background-image: url(<?php $this->text('logopath') ?>);" <?php - ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php - echo $skin->tooltipAndAccesskey('p-logo') ?>></a> + <?php + $logoAttribs = array() + Linker::tooltipAndAccesskeyAttribs('p-logo'); + $logoAttribs['style'] = "background-image: url({$this->data['logopath']});"; + $logoAttribs['href'] = $this->data['nav_urls']['mainpage']['href']; + echo Html::element( 'a', $logoAttribs ); + ?> + </div> <script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script> <?php - $sidebar = $this->data['sidebar']; - if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true; - if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true; - if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true; - foreach ($sidebar as $boxName => $cont) { - if ( $boxName == 'SEARCH' ) { - $this->searchBox(); - } elseif ( $boxName == 'TOOLBOX' ) { - $this->toolbox(); - } elseif ( $boxName == 'LANGUAGES' ) { - $this->languageBox(); - } else { - $this->customBox( $boxName, $cont ); - } - } + $this->renderPortals( $this->data['sidebar'] ); ?> </div><!-- end of the left (by default at least) column --> <div class="visualClear"></div> +<?php + $validFooterIcons = $this->getFooterIcons( "icononly" ); + $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links + + if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?> <div id="footer"<?php $this->html('userlangattributes') ?>> -<?php foreach ( $footericons as $blockName => $footerIcons ) { ?> +<?php + $footerEnd = '</div>'; + } else { + $footerEnd = ''; + } + foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?> <div id="f-<?php echo htmlspecialchars($blockName); ?>ico"> <?php foreach ( $footerIcons as $icon ) { ?> <?php echo $this->skin->makeFooterIcon( $icon ); ?> @@ -195,42 +143,50 @@ class MonoBookTemplate extends QuickTemplate { </div> <?php } - // Generate additional footer links - $validFooterLinks = array(); - foreach( $footerlinks as $aLink ) { - if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) { - $validFooterLinks[] = $aLink; - } - } if ( count( $validFooterLinks ) > 0 ) { ?> <ul id="f-list"> <?php - foreach( $validFooterLinks as $aLink ) { - if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) { -?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li> -<?php } + foreach( $validFooterLinks as $aLink ) { ?> + <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li> +<?php } ?> </ul> <?php } +echo $footerEnd; ?> -</div> -</div> -<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?> -<?php $this->html('reporttime') ?> -<?php if ( $this->data['debug'] ): ?> -<!-- Debug output: -<?php $this->text( 'debug' ); ?> - ---> -<?php endif; +</div> +<?php + $this->printTrail(); echo Html::closeElement( 'body' ); echo Html::closeElement( 'html' ); wfRestoreWarnings(); } // end of execute() method /*************************************************************************************************/ + + protected function renderPortals( $sidebar ) { + if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true; + if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true; + if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true; + + foreach( $sidebar as $boxName => $content ) { + if ( $content === false ) + continue; + + if ( $boxName == 'SEARCH' ) { + $this->searchBox(); + } elseif ( $boxName == 'TOOLBOX' ) { + $this->toolbox(); + } elseif ( $boxName == 'LANGUAGES' ) { + $this->languageBox(); + } else { + $this->customBox( $boxName, $content ); + } + } + } + function searchBox() { global $wgUseTwoButtonsSearchForm; ?> @@ -239,19 +195,15 @@ class MonoBookTemplate extends QuickTemplate { <div id="searchBody" class="pBody"> <form action="<?php $this->text('wgScript') ?>" id="searchform"> <input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/> - <?php - echo Html::input( 'search', - isset( $this->data['search'] ) ? $this->data['search'] : '', 'search', - array( - 'id' => 'searchInput', - 'title' => $this->skin->titleAttrib( 'search' ), - 'accesskey' => $this->skin->accesskey( 'search' ) - ) ); ?> + <?php echo $this->makeSearchInput(array( "id" => "searchInput" )); ?> - <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>  - <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?> + <?php echo $this->makeSearchButton("go", array( "id" => "searchGoButton", "class" => "searchButton" )); + if ($wgUseTwoButtonsSearchForm): ?>  + <?php echo $this->makeSearchButton("fulltext", array( "id" => "mw-searchButton", "class" => "searchButton" )); + else: ?> - <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?> + <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php + endif; ?> </form> </div> @@ -259,6 +211,43 @@ class MonoBookTemplate extends QuickTemplate { <?php } + /** + * Prints the cactions bar. + * Shared between MonoBook and Modern + */ + function cactions() { +?> + <div id="p-cactions" class="portlet"> + <h5><?php $this->msg('views') ?></h5> + <div class="pBody"> + <ul><?php + foreach($this->data['content_actions'] as $key => $tab) { + $linkAttribs = array( 'href' => $tab['href'] ); + + if( isset( $tab["tooltiponly"] ) && $tab["tooltiponly"] ) { + $title = Linker::titleAttrib( "ca-$key" ); + if ( $title !== false ) { + $linkAttribs['title'] = $title; + } + } else { + $linkAttribs += Linker::tooltipAndAccesskeyAttribs( "ca-$key" ); + } + $linkHtml = Html::element( 'a', $linkAttribs, $tab['text'] ); + + /* Surround with a <li> */ + $liAttribs = array( 'id' => Sanitizer::escapeId( "ca-$key" ) ); + if( $tab['class'] ) { + $liAttribs['class'] = $tab['class']; + } + echo ' + ' . Html::rawElement( 'li', $liAttribs, $linkHtml ); + } ?> + + </ul> + </div> + </div> +<?php + } /*************************************************************************************************/ function toolbox() { ?> @@ -267,51 +256,13 @@ class MonoBookTemplate extends QuickTemplate { <div class="pBody"> <ul> <?php - if($this->data['notspecialpage']) { ?> - <li id="t-whatlinkshere"><a href="<?php - echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href']) - ?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li> -<?php - if( $this->data['nav_urls']['recentchangeslinked'] ) { ?> - <li id="t-recentchangeslinked"><a href="<?php - echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href']) - ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li> -<?php } - } - if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?> - <li id="t-trackbacklink"><a href="<?php - echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href']) - ?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li> -<?php } - if($this->data['feeds']) { ?> - <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) { - ?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php - 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>  - <?php } ?></li><?php - } - - foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) { - - if($this->data['nav_urls'][$special]) { - ?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href']) - ?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li> -<?php } - } - - if(!empty($this->data['nav_urls']['print']['href'])) { ?> - <li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href']) - ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php - } + foreach ( $this->getToolbox() as $key => $tbitem ) { ?> + <?php echo $this->makeListItem($key, $tbitem); ?> - if(!empty($this->data['nav_urls']['permalink']['href'])) { ?> - <li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href']) - ?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php - } elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?> - <li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php +<?php } - wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) ); - wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) ); + wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) ); ?> </ul> </div> @@ -327,10 +278,9 @@ class MonoBookTemplate extends QuickTemplate { <h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5> <div class="pBody"> <ul> -<?php foreach($this->data['language_urls'] as $langlink) { ?> - <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php - ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>" title="<?php - echo htmlspecialchars($langlink['title']) ?>"><?php echo $langlink['text'] ?></a></li> +<?php foreach($this->data['language_urls'] as $key => $langlink) { ?> + <?php echo $this->makeListItem($key, $langlink); ?> + <?php } ?> </ul> </div> @@ -341,16 +291,21 @@ class MonoBookTemplate extends QuickTemplate { /*************************************************************************************************/ function customBox( $bar, $cont ) { + $portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) ); + $tooltip = Linker::titleAttrib( "p-$bar" ); + if ( $tooltip !== false ) { + $portletAttribs['title'] = $tooltip; + } + echo ' ' . Html::openElement( 'div', $portletAttribs ); ?> - <div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>> - <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5> + + <h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5> <div class='pBody'> <?php if ( is_array( $cont ) ) { ?> <ul> -<?php foreach($cont as $val) { ?> - <li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php - if ( $val['active'] ) { ?> class="active" <?php } - ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li> +<?php foreach($cont as $key => $val) { ?> + <?php echo $this->makeListItem($key, $val); ?> + <?php } ?> </ul> <?php } else { |