From ca32f08966f1b51fcb19460f0996bb0c4048e6fe Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sat, 3 Dec 2011 13:29:22 +0100 Subject: Update to MediaWiki 1.18.0 * also update ArchLinux skin to chagnes in MonoBook * Use only css to hide our menu bar when printing --- includes/CategoryPage.php | 197 +++++++++++++++++++++++++++++++--------------- 1 file changed, 135 insertions(+), 62 deletions(-) (limited to 'includes/CategoryPage.php') diff --git a/includes/CategoryPage.php b/includes/CategoryPage.php index f990b79b..6a0f6132 100644 --- a/includes/CategoryPage.php +++ b/includes/CategoryPage.php @@ -1,6 +1,6 @@ mTitle ); - // If any of these are not 0, then has members - if ( $cat->getPageCount() - || $cat->getSubcatCount() - || $cat->getFileCount() - ) { - return true; - } - } - return false; - } - function openShowCategory() { # For overloading } @@ -70,27 +65,77 @@ class CategoryPage extends Article { function closeShowCategory() { global $wgOut, $wgRequest; + // Use these as defaults for back compat --catrope + $oldFrom = $wgRequest->getVal( 'from' ); + $oldUntil = $wgRequest->getVal( 'until' ); + + $reqArray = $wgRequest->getValues(); + $from = $until = array(); foreach ( array( 'page', 'subcat', 'file' ) as $type ) { - $from[$type] = $wgRequest->getVal( "{$type}from" ); - $until[$type] = $wgRequest->getVal( "{$type}until" ); + $from[$type] = $wgRequest->getVal( "{$type}from", $oldFrom ); + $until[$type] = $wgRequest->getVal( "{$type}until", $oldUntil ); + + // Do not want old-style from/until propagating in nav links. + if ( !isset( $reqArray["{$type}from"] ) && isset( $reqArray["from"] ) ) { + $reqArray["{$type}from"] = $reqArray["from"]; + } + if ( !isset( $reqArray["{$type}to"] ) && isset( $reqArray["to"] ) ) { + $reqArray["{$type}to"] = $reqArray["to"]; + } } - $viewer = new $this->mCategoryViewerClass( $this->mTitle, $from, $until, $wgRequest->getValues() ); + unset( $reqArray["from"] ); + unset( $reqArray["to"] ); + + $viewer = new $this->mCategoryViewerClass( $this->mTitle, $from, $until, $reqArray ); $wgOut->addHTML( $viewer->getHTML() ); } } class CategoryViewer { - var $title, $limit, $from, $until, + var $limit, $from, $until, $articles, $articles_start_char, $children, $children_start_char, - $showGallery, $gallery, - $imgsNoGalley, $imgsNoGallery_start_char, - $skin, $collation; - # Category object for this page + $showGallery, $imgsNoGalley, + $imgsNoGallery_start_char, + $imgsNoGallery; + + /** + * @var + */ + var $nextPage; + + /** + * @var Array + */ + var $flip; + + /** + * @var Title + */ + var $title; + + /** + * @var Collation + */ + var $collation; + + /** + * @var ImageGallery + */ + var $gallery; + + /** + * Category object for this page + * @var Category + */ private $cat; - # The original query array, to be used in generating paging links. + + /** + * The original query array, to be used in generating paging links. + * @var array + */ private $query; function __construct( $title, $from = '', $until = '', $query = array() ) { @@ -111,7 +156,7 @@ class CategoryViewer { * @return string HTML output */ public function getHTML() { - global $wgOut, $wgCategoryMagicGallery, $wgContLang; + global $wgOut, $wgCategoryMagicGallery, $wgLang, $wgContLang; wfProfileIn( __METHOD__ ); $this->showGallery = $wgCategoryMagicGallery && !$wgOut->mNoGallery; @@ -127,7 +172,7 @@ class CategoryViewer { if ( $r == '' ) { // If there is no category content to display, only // show the top part of the navigation links. - // FIXME: cannot be completely suppressed because it + // @todo FIXME: Cannot be completely suppressed because it // is unknown if 'until' or 'from' makes this // give 0 results. $r = $r . $this->getCategoryTop(); @@ -142,6 +187,12 @@ class CategoryViewer { $r = wfMsgExt( 'category-empty', array( 'parse' ) ); } + $pageLang = $this->title->getPageLanguage(); + $langAttribs = array( 'lang' => $wgLang->getCode(), 'dir' => $wgLang->getDir() ); + # close the previous div, show the headings in user language, + # then open a new div with the page content language again + $r = Html::openElement( 'div', $langAttribs ) . $r . ''; + wfProfileOut( __METHOD__ ); return $wgContLang->convert( $r ); } @@ -160,14 +211,6 @@ class CategoryViewer { } } - function getSkin() { - if ( !$this->skin ) { - global $wgUser; - $this->skin = $wgUser->getSkin(); - } - return $this->skin; - } - /** * Add a subcategory to the internal lists, using a Category object */ @@ -175,7 +218,7 @@ class CategoryViewer { // Subcategory; strip the 'Category' namespace from the link text. $title = $cat->getTitle(); - $link = $this->getSkin()->link( $title, $title->getText() ); + $link = Linker::link( $title, htmlspecialchars( $title->getText() ) ); if ( $title->isRedirect() ) { // This didn't used to add redirect-in-category, but might // as well be consistent with the rest of the sections @@ -190,7 +233,7 @@ class CategoryViewer { /** * Add a subcategory to the internal lists, using a title object - * @deprecated kept for compatibility, please use addSubcategoryObject instead + * @deprecated since 1.17 kept for compatibility, please use addSubcategoryObject instead */ function addSubcategory( Title $title, $sortkey, $pageLength ) { $this->addSubcategoryObject( Category::newFromTitle( $title ), $sortkey, $pageLength ); @@ -233,7 +276,7 @@ class CategoryViewer { $this->gallery->add( $title ); } } else { - $link = $this->getSkin()->link( $title ); + $link = Linker::link( $title ); if ( $isRedirect ) { // This seems kind of pointless given 'mw-redirect' class, // but keeping for back-compatibility with user css. @@ -252,7 +295,7 @@ class CategoryViewer { function addPage( $title, $sortkey, $pageLength, $isRedirect = false ) { global $wgContLang; - $link = $this->getSkin()->link( $title ); + $link = Linker::link( $title ); if ( $isRedirect ) { // This seems kind of pointless given 'mw-redirect' class, // but keeping for back-compatiability with user css. @@ -309,7 +352,7 @@ class CategoryViewer { 'page_is_redirect', 'cl_sortkey', 'cat_id', 'cat_title', 'cat_subcats', 'cat_pages', 'cat_files', 'cl_sortkey_prefix', 'cl_collation' ), - array( 'cl_to' => $this->title->getDBkey() ) + $extraConds, + array_merge( array( 'cl_to' => $this->title->getDBkey() ), $extraConds ), __METHOD__, array( 'USE INDEX' => array( 'categorylinks' => 'cl_sortkey' ), @@ -385,7 +428,7 @@ class CategoryViewer { # Don't show articles section if there are none. $r = ''; - # FIXME, here and in the other two sections: we don't need to bother + # @todo FIXME: Here and in the other two sections: we don't need to bother # with this rigamarole if the entire category contents fit on one page # and have already been retrieved. We can just use $rescnt in that # case and save a query and some logic. @@ -460,13 +503,20 @@ class CategoryViewer { * @private */ function formatList( $articles, $articles_start_char, $cutoff = 6 ) { + $list = ''; if ( count ( $articles ) > $cutoff ) { - return self::columnList( $articles, $articles_start_char ); + $list = self::columnList( $articles, $articles_start_char ); } elseif ( count( $articles ) > 0 ) { // for short lists of articles in categories. - return self::shortList( $articles, $articles_start_char ); + $list = self::shortList( $articles, $articles_start_char ); } - return ''; + + $pageLang = $this->title->getPageLanguage(); + $attribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(), + 'class' => 'mw-content-'.$pageLang->getDir() ); + $list = Html::rawElement( 'div', $attribs, $list ); + + return $list; } /** @@ -539,10 +589,8 @@ class CategoryViewer { static function shortList( $articles, $articles_start_char ) { $r = '

' . htmlspecialchars( $articles_start_char[0] ) . "

\n"; $r .= '

" . htmlspecialchars( $articles_start_char[$index] ) . "

\n