http://www.mediawiki.org/wiki/Special:Code/MediaWiki/88771
Revision: 88771
Author: tparscal
Date: 2011-05-25 00:44:46 +0000 (Wed, 25 May 2011)
Log Message:
-----------
Added $wgArticleFeedbackBlacklistCategories, a way to disable ArticleFeedback
on pages in a certain category (such as "All disambiguation pages" on English
Wikipedia). Also refactored the category intersection code, making it a little
easier to read.
Modified Paths:
--------------
trunk/extensions/ArticleFeedback/ArticleFeedback.hooks.php
trunk/extensions/ArticleFeedback/ArticleFeedback.php
trunk/extensions/ArticleFeedback/modules/ext.articleFeedback/ext.articleFeedback.startup.js
Modified: trunk/extensions/ArticleFeedback/ArticleFeedback.hooks.php
===================================================================
--- trunk/extensions/ArticleFeedback/ArticleFeedback.hooks.php 2011-05-25
00:30:08 UTC (rev 88770)
+++ trunk/extensions/ArticleFeedback/ArticleFeedback.hooks.php 2011-05-25
00:44:46 UTC (rev 88771)
@@ -232,12 +232,14 @@
public static function resourceLoaderGetConfigVars( &$vars ) {
global $wgArticleFeedbackSMaxage,
$wgArticleFeedbackCategories,
+ $wgArticleFeedbackBlacklistCategories,
$wgArticleFeedbackLotteryOdds,
$wgArticleFeedbackTracking,
$wgArticleFeedbackOptions,
$wgArticleFeedbackNamespaces;
$vars['wgArticleFeedbackSMaxage'] = $wgArticleFeedbackSMaxage;
$vars['wgArticleFeedbackCategories'] =
$wgArticleFeedbackCategories;
+ $vars['wgArticleFeedbackBlacklistCategories'] =
$wgArticleFeedbackBlacklistCategories;
$vars['wgArticleFeedbackLotteryOdds'] =
$wgArticleFeedbackLotteryOdds;
$vars['wgArticleFeedbackTracking'] = $wgArticleFeedbackTracking;
$vars['wgArticleFeedbackOptions'] = $wgArticleFeedbackOptions;
Modified: trunk/extensions/ArticleFeedback/ArticleFeedback.php
===================================================================
--- trunk/extensions/ArticleFeedback/ArticleFeedback.php 2011-05-25
00:30:08 UTC (rev 88770)
+++ trunk/extensions/ArticleFeedback/ArticleFeedback.php 2011-05-25
00:44:46 UTC (rev 88771)
@@ -31,6 +31,9 @@
// Extension is "disabled" if this field is an empty array (as per default
configuration)
$wgArticleFeedbackCategories = array();
+// Which categories the pages must not belong to have the rating widget added
(with _ in text)
+$wgArticleFeedbackBlacklistCategories = array();
+
// Only load the module / enable the tool in these namespaces
// Default to $wgContentNamespaces (defaults to array( NS_MAIN ) ).
$wgArticleFeedbackNamespaces = $wgContentNamespaces;
Modified:
trunk/extensions/ArticleFeedback/modules/ext.articleFeedback/ext.articleFeedback.startup.js
===================================================================
---
trunk/extensions/ArticleFeedback/modules/ext.articleFeedback/ext.articleFeedback.startup.js
2011-05-25 00:30:08 UTC (rev 88770)
+++
trunk/extensions/ArticleFeedback/modules/ext.articleFeedback/ext.articleFeedback.startup.js
2011-05-25 00:44:46 UTC (rev 88771)
@@ -16,29 +16,42 @@
// Not viewing a redirect
&& mw.util.getParamValue( 'redirect' ) != 'no'
) {
- var trackingBucket = mw.user.bucket(
+ // Assign a tracking bucket using options from
wgArticleFeedbackTracking
+ mw.user.bucket(
'ext.articleFeedback-tracking', mw.config.get(
'wgArticleFeedbackTracking' )
);
- // Category activation
- var articleFeedbackCategories = mw.config.get(
'wgArticleFeedbackCategories', [] );
- var articleCategories = mw.config.get( 'wgCategories', [] );
- var inCategory = false;
- for ( var i = 0; i < articleCategories.length; i++ ) {
- for ( var j = 0; j < articleFeedbackCategories.length;
j++ ) {
- if ( articleCategories[i] ==
articleFeedbackCategories[j] ) {
- inCategory = true;
- // Break 2 levels - could do this with
a label, but eww.
- i = articleCategories.length;
- j = articleFeedbackCategories.length;
- }
+
+ // Collect categories for intersection tests
+ var categories = {
+ 'include': mw.config.get(
'wgArticleFeedbackCategories', [] ),
+ 'exclude': mw.config.get(
'wgArticleFeedbackBlacklistCategories', [] ),
+ 'current': mw.config.get( 'wgCategories', [] )
+ };
+
+ // Category exclusion
+ var disable = false;
+ for ( var i = 0; i < categories.current.length; i++ ) {
+ if ( $.inArray( categories.current[i],
categories.exclude ) > -1 ) {
+ disable = true;
+ break;
}
}
- // Lottery activation
+
+ // Category inclusion
+ var enable = false;
+ for ( var i = 0; i < categories.current.length; i++ ) {
+ if ( $.inArray( categories.current[i],
categories.include ) > -1 ) {
+ enable = true;
+ break;
+ }
+ }
+
+ // Lottery inclusion
var wonLottery = ( Number( mw.config.get( 'wgArticleId', 0 ) )
% 1000 )
< Number( mw.config.get(
'wgArticleFeedbackLotteryOdds', 0 ) ) * 10;
-
+
// Lazy loading
- if ( wonLottery || inCategory ) {
+ if ( !disable && ( wonLottery || enable ) ) {
mw.loader.load( 'ext.articleFeedback' );
}
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs