X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialCategories.php;h=1232e3fa7530115ac67303f98627b18a0c7897de;hb=21b7b27f0379cff1b06efa95d27fa88684b65c57;hp=8c2ae2b682e6b488f8badf72194cfb7ada86973c;hpb=a859cc72eac5fea66299ed54f4a23dde92f62acb;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialCategories.php b/includes/specials/SpecialCategories.php index 8c2ae2b682..1232e3fa75 100644 --- a/includes/specials/SpecialCategories.php +++ b/includes/specials/SpecialCategories.php @@ -1,27 +1,55 @@ getText( 'from' ); - } else { - $from = $par; + function __construct() { + parent::__construct( 'Categories' ); + } + + function execute( $par ) { + $this->setHeaders(); + $this->outputHeader(); + $this->getOutput()->allowClickjacking(); + + $from = $this->getRequest()->getText( 'from', $par ); + + $cap = new CategoryPager( $this->getContext(), $from ); + $cap->doQuery(); + + $this->getOutput()->addHTML( + Html::openElement( 'div', array( 'class' => 'mw-spcontent' ) ) . + $this->msg( 'categoriespagetext', $cap->getNumRows() )->parseAsBlock() . + $cap->getStartForm( $from ) . + $cap->getNavigationBar() . + '' . + $cap->getNavigationBar() . + Html::closeElement( 'div' ) + ); } - $cap = new CategoryPager( $from ); - $wgOut->addHTML( - XML::openElement( 'div', array('class' => 'mw-spcontent') ) . - wfMsgExt( 'categoriespagetext', array( 'parse' ) ) . - $cap->getStartForm( $from ) . - $cap->getNavigationBar() . - '' . - $cap->getNavigationBar() . - XML::closeElement( 'div' ) - ); } /** @@ -31,24 +59,21 @@ function wfSpecialCategories( $par=null ) { * @ingroup SpecialPage Pager */ class CategoryPager extends AlphabeticPager { - function __construct( $from ) { - parent::__construct(); + function __construct( IContextSource $context, $from ) { + parent::__construct( $context ); $from = str_replace( ' ', '_', $from ); if( $from !== '' ) { - global $wgCapitalLinks, $wgContLang; - if( $wgCapitalLinks ) { - $from = $wgContLang->ucfirst( $from ); - } - $this->mOffset = $from; + $from = Title::capitalize( $from, NS_CATEGORY ); + $this->setOffset( $from ); + $this->setIncludeOffset( true ); } } - + function getQueryInfo() { - global $wgRequest; return array( 'tables' => array( 'category' ), 'fields' => array( 'cat_title','cat_pages' ), - 'conds' => array( 'cat_pages > 0' ), + 'conds' => array( 'cat_pages > 0' ), 'options' => array( 'USE INDEX' => 'cat_title' ), ); } @@ -61,6 +86,7 @@ class CategoryPager extends AlphabeticPager { function getDefaultQuery() { parent::getDefaultQuery(); unset( $this->mDefaultQuery['from'] ); + return $this->mDefaultQuery; } # protected function getOrderTypeMessages() { # return array( 'abc' => 'special-categories-sort-abc', @@ -74,14 +100,11 @@ class CategoryPager extends AlphabeticPager { /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */ public function getBody() { - if (!$this->mQueryDone) { - $this->doQuery(); - } $batch = new LinkBatch; $this->mResult->rewind(); - while ( $row = $this->mResult->fetchObject() ) { + foreach ( $this->mResult as $row ) { $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cat_title ) ); } $batch->execute(); @@ -90,25 +113,22 @@ class CategoryPager extends AlphabeticPager { } function formatRow($result) { - global $wgLang; $title = Title::makeTitle( NS_CATEGORY, $result->cat_title ); - $titleText = $this->getSkin()->makeLinkObj( $title, htmlspecialchars( $title->getText() ) ); - $count = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ), - $wgLang->formatNum( $result->cat_pages ) ); - return Xml::tags('li', null, "$titleText ($count)" ) . "\n"; + $titleText = Linker::link( $title, htmlspecialchars( $title->getText() ) ); + $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped(); + return Xml::tags( 'li', null, $this->getLanguage()->specialList( $titleText, $count ) ) . "\n"; } - + public function getStartForm( $from ) { global $wgScript; - $t = SpecialPage::getTitleFor( 'Categories' ); - + return Xml::tags( 'form', array( 'method' => 'get', 'action' => $wgScript ), - Xml::hidden( 'title', $t->getPrefixedText() ) . - Xml::fieldset( wfMsg( 'categories' ), - Xml::inputLabel( wfMsg( 'categoriesfrom' ), + Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . + Xml::fieldset( $this->msg( 'categories' )->text(), + Xml::inputLabel( $this->msg( 'categoriesfrom' )->text(), 'from', 'from', 20, $from ) . ' ' . - Xml::submitButton( wfMsg( 'allpagessubmit' ) ) ) ); + Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) ) ); } }