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

Reply via email to