From 610236b46746f6429a9b1ac1931908581bd5fee5 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 9 Feb 2014 04:59:53 +0530 Subject: [PATCH] Implement listing for tracking categories Special page to implement list of Tracking Categories. Global $wgTrackingCategories added containing list of tracking categories Bug: 60333 Change-Id: I7d4bb90622a6bae60845942ef93cfe64f229d2d2 --- includes/AutoLoader.php | 1 + includes/DefaultSettings.php | 19 +++ includes/specialpage/SpecialPageFactory.php | 1 + .../specials/SpecialTrackingCategories.php | 135 ++++++++++++++++++ languages/messages/MessagesEn.php | 17 +++ languages/messages/MessagesQqq.php | 16 +++ maintenance/language/messages.inc | 19 ++- 7 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 includes/specials/SpecialTrackingCategories.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 0873d8722d..305831e971 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -1023,6 +1023,7 @@ $wgAutoloadLocalClasses = array( 'SpecialSpecialpages' => 'includes/specials/SpecialSpecialpages.php', 'SpecialStatistics' => 'includes/specials/SpecialStatistics.php', 'SpecialTags' => 'includes/specials/SpecialTags.php', + 'SpecialTrackingCategories' => 'includes/specials/SpecialTrackingCategories.php', 'SpecialUnblock' => 'includes/specials/SpecialUnblock.php', 'SpecialUndelete' => 'includes/specials/SpecialUndelete.php', 'SpecialUnlockdb' => 'includes/specials/SpecialUnlockdb.php', diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 9a85dd4d24..917cd5aec2 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -3607,6 +3607,25 @@ $wgNamespacesWithSubpages = array( NS_CATEGORY_TALK => true ); +/** + * Array holding default tracking category names. + * + * Array contains the system messages for each tracking category. + * Tracking categories allow pages with certain characteristics to be tracked. + * It works by adding any such page to a category automatically. + * + * @since 1.23 + */ +$wgTrackingCategories = array( + 'index-category', + 'noindex-category', + 'expensive-parserfunction-category', + 'post-expand-template-argument-category', + 'post-expand-template-inclusion-category', + 'hidden-category-category', + 'broken-file-category', +); + /** * Array of namespaces which can be deemed to contain valid "content", as far * as the site statistics are concerned. Useful if additional namespaces also diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 18793e3f79..15a71fffdc 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -79,6 +79,7 @@ class SpecialPageFactory { 'Categories' => 'SpecialCategories', 'Listredirects' => 'ListredirectsPage', 'PagesWithProp' => 'SpecialPagesWithProp', + 'TrackingCategories' => 'SpecialTrackingCategories', // Login/create account 'Userlogin' => 'LoginForm', diff --git a/includes/specials/SpecialTrackingCategories.php b/includes/specials/SpecialTrackingCategories.php new file mode 100644 index 0000000000..9ec3c5b3b5 --- /dev/null +++ b/includes/specials/SpecialTrackingCategories.php @@ -0,0 +1,135 @@ +setHeaders(); + $this->outputHeader(); + $this->getOutput()->allowClickjacking(); + $this->getOutput()->addHTML( + Html::openElement( 'table', array( 'class' => 'mw-datatable TablePager', + 'id' => 'mw-trackingcategories-table' ) ) . "\n" . + " + " . + $this->msg( 'trackingcategories-msg' )->escaped() . " + + " . + $this->msg( 'trackingcategories-name' )->escaped() . + " + " . + $this->msg( 'trackingcategories-desc' )->escaped() . " + + " + ); + + foreach( $wgTrackingCategories as $catMsg ) { + /* + * Check if the tracking category varies by namespace + * Otherwise only pages in the current namespace will be displayed + * If it does vary, show pages considering all namespaces + */ + $msgObj = $this->msg( $catMsg )->inContentLanguage(); + $allMsgs = array(); + $catDesc = $catMsg . '-desc'; + $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg ); + $catMsgTitleText = Linker::link( + $catMsgTitle, + htmlspecialchars( $catMsg ) + ); + + if ( strpos( $msgObj->plain(), '{{NAMESPACE}}' ) !== false ) { + $ns = MWNamespace::getValidNamespaces(); + foreach ( $ns as $namesp ) { + $tempTitle = Title::makeTitleSafe( $namesp, $catMsg ); + $catName = $msgObj->title( $tempTitle )->text(); + if ( !$msgObj->isDisabled() ) { + $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); + $catTitleText = Linker::link( + $catTitle, + htmlspecialchars( $catName ) + ); + $allMsgs[] = $catTitleText; + } + } + } else { + $catName = $msgObj->text(); + if ( !$msgObj->isDisabled() ) { + $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); + $catTitleText = Linker::link( + $catTitle, + htmlspecialchars( $catName ) + ); + $classes = array(); + } else { + $catTitleText = $this->msg( 'trackingcategories-disabled' )->parse(); + } + $allMsgs[] = $catTitleText; + } + + /* + * 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' ) ); + } + + protected function getGroupName() { + return 'pages'; + } +} diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 8b7b00586c..ed0afa10c7 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -467,6 +467,7 @@ $specialPageAliases = array( 'Specialpages' => array( 'SpecialPages' ), 'Statistics' => array( 'Statistics' ), 'Tags' => array( 'Tags' ), + 'TrackingCategories' => array( 'TrackingCategories' ), 'Unblock' => array( 'Unblock' ), 'Uncategorizedcategories' => array( 'UncategorizedCategories' ), 'Uncategorizedimages' => array( 'UncategorizedFiles', 'UncategorizedImages' ), @@ -2947,6 +2948,22 @@ There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] a 'listgrouprights-addgroup-self-all' => 'Add all groups to own account', 'listgrouprights-removegroup-self-all' => 'Remove all groups from own account', +# Tracking categories page +'trackingcategories' => 'Tracking categories', +'trackingcategories-summary' => 'This page lists tracking categories which are automatically populated by the MediaWiki software. Their names can be changed by altering the relevant system messages in the {{ns:8}} namespace.', +'trackingcategories-msg' => 'Tracking Category', +'trackingcategories-name' => 'Message name', +'trackingcategories-desc' => 'Category inclusion criteria', +'noindex-category-desc' => 'The page has a __NOINDEX__ magic word on it (and is in a namespace where that flag is allowed), and hence is not indexed by robots.', +'index-category-desc' => 'The page has a __INDEX__ on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn\'t be.', +'post-expand-template-inclusion-category-desc' => 'After expanding all the templates, the page size is bigger than $wgMaxArticleSize, so some templates weren\'t expanded.', +'post-expand-template-argument-category-desc' => 'After expanding a template argument (something in triple braces, like {{{Foo}}}), the page is bigger than $wgMaxArticleSize.', +'expensive-parserfunction-category-desc' => 'Too many expensive parser functions (like #ifexists) included on a page. See [https://www.mediawiki.org/wiki/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].', +'broken-file-category-desc' => 'Category added if the page contains a broken file link (a link to embed a file when the file does not exist).', +'hidden-category-category-desc' => 'This is a category with __HIDDENCAT__ on it, which prevents it from showing up in the category links box on pages, by default.', +'trackingcategories-nodesc' => 'Description not available', +'trackingcategories-disabled' => 'Category is disabled', + # Email user 'mailnologin' => 'No send address', 'mailnologintext' => 'You must be [[Special:UserLogin|logged in]] and have a valid email address in your [[Special:Preferences|preferences]] to send email to other users.', diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php index 184e91284e..a5b6705346 100644 --- a/languages/messages/MessagesQqq.php +++ b/languages/messages/MessagesQqq.php @@ -10882,4 +10882,20 @@ test 'expand_templates_generate_rawhtml' => 'Used as checkbox label.', 'expand_templates_preview' => '{{Identical|Preview}}', +# Tracking categories special page +'trackingcategories' => 'Special:TrackingCategories page implementing list of Tracking categories [[mw:Help:Tracking categories|tracking category]]', +'trackingcategories-summary' => 'Description for [[Special:TrackingCategories]] page [[mw:Help:Tracking categories|tracking category]]', +'trackingcategories-msg' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the mediawiki message that controls the tracking category in question.', +'trackingcategories-name' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the name of the tracking category in the content language.', +'trackingcategories-desc' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the inclusion criteria for the category.', +'noindex-category-desc' => 'No-index category-description. Shown on [[Special:TrackingCategories]]', +'index-category-desc' => 'Index category-description. Shown on [[Special:TrackingCategories]]', +'post-expand-template-inclusion-category-desc' => 'Post expand template inclusion category description. Shown on [[Special:TrackingCategories]]', +'post-expand-template-argument-category-desc' => 'Post expand template argument category description. Shown on [[Special:TrackingCategories]]', +'expensive-parserfunction-category-desc' => 'Expensive parserfunction category description. Shown on [[Special:TrackingCategories]]', +'broken-file-category-desc' => 'Broken file category description. Shown on [[Special:TrackingCategories]]', +'hidden-category-category-desc' => 'Hidden-category category description. Shown on [[Special:TrackingCategories]]', +'trackingcategories-nodesc' => 'Tracking category description not available message', +'trackcategories-disabled' => 'Tracking category disabled message', + ); diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 67b21e9ec4..a953d3e6a9 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -4029,6 +4029,22 @@ $wgMessageStructure = array( 'expand_templates_generate_rawhtml', 'expand_templates_preview', ), + 'trackingcategories' => array( + 'trackingcategories', + 'trackingcategories-summary', + 'trackingcategories-msg', + 'trackingcategories-name', + 'trackingcategories-desc', + 'noindex-category-desc', + 'index-category-desc', + 'post-expand-template-inclusion-category-desc', + 'post-expand-template-argument-category-desc', + 'expensive-parserfunction-category-desc', + 'broken-file-category-desc', + 'hidden-category-category-desc', + 'trackingcategories-nodesc', + 'trackcategories-disabled', + ), ); /** Comments for each block */ @@ -4277,5 +4293,6 @@ Variants for Chinese language", 'cachedspecial' => 'SpecialCachedPage', 'rotation' => 'Image rotation', 'limitreport' => 'Limit report', - 'expandtemplates' => 'Special:ExpandTemplates' + 'expandtemplates' => 'Special:ExpandTemplates', + 'trackingcategories' => 'Special:TrackingCategories' ); -- 2.20.1