X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialTrackingCategories.php;h=7684c0511729d5fd7914cbf561afb7e917bdeba0;hb=8ff5c74bdca30cdc536ec0eab0d2a9c560171922;hp=5e5588c425a32720dcd01fb428ee7282592c8663;hpb=57ec9e066978d4d0ffdca2e82d4f4116c39047bf;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialTrackingCategories.php b/includes/specials/SpecialTrackingCategories.php index 5e5588c425..7684c05117 100644 --- a/includes/specials/SpecialTrackingCategories.php +++ b/includes/specials/SpecialTrackingCategories.php @@ -41,7 +41,7 @@ class SpecialTrackingCategories extends SpecialPage { $this->outputHeader(); $this->getOutput()->allowClickjacking(); $this->getOutput()->addHTML( - Html::openElement( 'table', array( 'class' => 'mw-datatable TablePager', + Html::openElement( 'table', array( 'class' => 'mw-datatable', 'id' => 'mw-trackingcategories-table' ) ) . "\n" . " " . @@ -56,6 +56,71 @@ class SpecialTrackingCategories extends SpecialPage { " ); + $trackingCategories = $this->prepareTrackingCategoriesData(); + + $batch = new LinkBatch(); + foreach ( $trackingCategories as $catMsg => $data ) { + $batch->addObj( $data['msg'] ); + foreach ( $data['cats'] as $catTitle ) { + $batch->addObj( $catTitle ); + } + } + $batch->execute(); + + foreach ( $trackingCategories as $catMsg => $data ) { + $allMsgs = array(); + $catDesc = $catMsg . '-desc'; + + $catMsgTitleText = Linker::link( + $data['msg'], + htmlspecialchars( $catMsg ) + ); + + foreach ( $data['cats'] as $catTitle ) { + $catTitleText = Linker::link( + $catTitle, + htmlspecialchars( $catTitle->getText() ) + ); + $allMsgs[] = $catTitleText; + } + + # Extra message, when no category was found + if ( !count( $allMsgs ) ) { + $allMsgs[] = $this->msg( 'trackingcategories-disabled' )->parse(); + } + + /* + * Show category description if it exists as a system message + * as category-name-desc + */ + $descMsg = $this->msg( $catDesc ); + if ( $descMsg->isBlank() ) { + $descMsg = $this->msg( 'trackingcategories-nodesc' ); + } + + $this->getOutput()->addHTML( + Html::openElement( 'tr' ) . + Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-name' ) ) . + $this->getLanguage()->commaList( array_unique( $allMsgs ) ) . + Html::closeElement( 'td' ) . + Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-msg' ) ) . + $catMsgTitleText . + Html::closeElement( 'td' ) . + Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-desc' ) ) . + $descMsg->parse() . + Html::closeElement( 'td' ) . + Html::closeElement( 'tr' ) + ); + } + $this->getOutput()->addHTML( Html::closeElement( 'table' ) ); + } + + /** + * Read the global and extract title objects from the corresponding messages + * @return array Array( 'msg' => Title, 'cats' => Title[] ) + */ + private function prepareTrackingCategoriesData() { + $trackingCategories = array(); foreach ( $this->getConfig()->get( 'TrackingCategories' ) as $catMsg ) { /* * Check if the tracking category varies by namespace @@ -63,16 +128,11 @@ class SpecialTrackingCategories extends SpecialPage { * If it does vary, show pages considering all namespaces */ $msgObj = $this->msg( $catMsg )->inContentLanguage(); - $allMsgs = array(); - $catDesc = $catMsg . '-desc'; + $allCats = array(); $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg ); if ( !$catMsgTitle ) { continue; } - $catMsgTitleText = Linker::link( - $catMsgTitle, - htmlspecialchars( $catMsg ) - ); // Match things like {{NAMESPACE}} and {{NAMESPACENUMBER}}. // False positives are ok, this is just an efficiency shortcut @@ -88,11 +148,7 @@ class SpecialTrackingCategories extends SpecialPage { if ( $catName !== '-' ) { $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); if ( $catTitle ) { - $catTitleText = Linker::link( - $catTitle, - htmlspecialchars( $catName ) - ); - $allMsgs[] = $catTitleText; + $allCats[] = $catTitle; } } } @@ -102,44 +158,17 @@ class SpecialTrackingCategories extends SpecialPage { if ( $catName !== '-' ) { $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); if ( $catTitle ) { - $catTitleText = Linker::link( - $catTitle, - htmlspecialchars( $catName ) - ); - $allMsgs[] = $catTitleText; + $allCats[] = $catTitle; } } } - - # Extra message, when no category was found - if ( !count( $allMsgs ) ) { - $allMsgs[] = $this->msg( 'trackingcategories-disabled' )->parse(); - } - - /* - * Show category description if it exists as a system message - * as category-name-desc - */ - $descMsg = $this->msg( $catDesc ); - if ( $descMsg->isBlank() ) { - $descMsg = $this->msg( 'trackingcategories-nodesc' ); - } - - $this->getOutput()->addHTML( - Html::openElement( 'tr' ) . - Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-name' ) ) . - $this->getLanguage()->commaList( array_unique( $allMsgs ) ) . - Html::closeElement( 'td' ) . - Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-msg' ) ) . - $catMsgTitleText . - Html::closeElement( 'td' ) . - Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-desc' ) ) . - $descMsg->parse() . - Html::closeElement( 'td' ) . - Html::closeElement( 'tr' ) + $trackingCategories[$catMsg] = array( + 'cats' => $allCats, + 'msg' => $catMsgTitle, ); } - $this->getOutput()->addHTML( Html::closeElement( 'table' ) ); + + return $trackingCategories; } protected function getGroupName() {