Mattflaschen has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/353479 )

Change subject: Gate option to save RC filters to default false
......................................................................

Gate option to save RC filters to default false

Change-Id: I1c9e382c265a097b5eea07b529ec542a60562307
(cherry picked from commit 5b9f2c8d002ea91c73480a3f8c1390feae2a4c49)
---
M includes/DefaultSettings.php
M includes/specials/SpecialRecentchanges.php
M resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
M 
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
5 files changed, 88 insertions(+), 49 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/79/353479/1

diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 5526479..b909b0e 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -6763,6 +6763,11 @@
 $wgUseRCPatrol = true;
 
 /**
+ * Whether to allow users to save their RecentChanges filters
+ */
+$wgStructuredChangeFiltersEnableSaving = false;
+
+/**
  * Use new page patrolling to check new pages on Special:Newpages
  */
 $wgUseNPPatrol = true;
diff --git a/includes/specials/SpecialRecentchanges.php 
b/includes/specials/SpecialRecentchanges.php
index 5553218..acfc1c0 100644
--- a/includes/specials/SpecialRecentchanges.php
+++ b/includes/specials/SpecialRecentchanges.php
@@ -138,6 +138,8 @@
         * @param string $subpage
         */
        public function execute( $subpage ) {
+               global $wgStructuredChangeFiltersEnableSaving;
+
                // Backwards-compatibility: redirect to new feed URLs
                $feedFormat = $this->getRequest()->getVal( 'feed' );
                if ( !$this->including() && $feedFormat ) {
@@ -178,6 +180,10 @@
                        );
 
                        $out->addJsConfigVars( 'wgStructuredChangeFilters', 
$jsData['groups'] );
+                       $out->addJsConfigVars(
+                               'wgStructuredChangeFiltersEnableSaving',
+                               $wgStructuredChangeFiltersEnableSaving
+                       );
                }
        }
 
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
index 35541d1..1dd0f83 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
@@ -503,7 +503,9 @@
                        savedHighlights = {},
                        defaultSavedQueryItem = 
this.savedQueriesModel.getItemByID( this.savedQueriesModel.getDefault() );
 
-               if ( defaultSavedQueryItem ) {
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) &&
+                       defaultSavedQueryItem ) {
+
                        data = defaultSavedQueryItem.getData();
 
                        queryHighlights = data.highlights || {};
diff --git 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
index cbf8747..78f3a08 100644
--- 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
+++ 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
@@ -13,7 +13,9 @@
         * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for 
popups
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget = function 
MwRcfiltersUiFilterTagMultiselectWidget( controller, model, savedQueriesModel, 
config ) {
-               var title = new OO.ui.LabelWidget( {
+               var rcFiltersRow,
+                       areSavedQueriesEnabled = mw.config.get( 
'wgStructuredChangeFiltersEnableSaving' ),
+                       title = new OO.ui.LabelWidget( {
                                label: mw.msg( 'rcfilters-activefilters' ),
                                classes: [ 
'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-title' ]
                        } ),
@@ -27,6 +29,7 @@
                this.queriesModel = savedQueriesModel;
                this.$overlay = config.$overlay || this.$element;
                this.matchingQuery = null;
+               this.areSavedQueriesEnabled = areSavedQueriesEnabled;
 
                // Parent
                mw.rcfilters.ui.FilterTagMultiselectWidget.parent.call( this, 
$.extend( true, {
@@ -68,10 +71,19 @@
                        classes: [ 
'mw-rcfilters-ui-filterTagMultiselectWidget-resetButton' ]
                } );
 
-               this.saveQueryButton = new 
mw.rcfilters.ui.SaveFiltersPopupButtonWidget(
-                       this.controller,
-                       this.queriesModel
-               );
+               if ( areSavedQueriesEnabled ) {
+                       this.saveQueryButton = new 
mw.rcfilters.ui.SaveFiltersPopupButtonWidget(
+                               this.controller,
+                               this.queriesModel
+                       );
+
+                       this.saveQueryButton.$element.on( 'mousedown', function 
( e ) { e.stopPropagation(); } );
+
+                       this.saveQueryButton.connect( this, {
+                               click: 'onSaveQueryButtonClick',
+                               saveCurrent: 'setSavedQueryVisibility'
+                       } );
+               }
 
                this.emptyFilterMessage = new OO.ui.LabelWidget( {
                        label: mw.msg( 'rcfilters-empty-filter' ),
@@ -84,17 +96,40 @@
                // Stop propagation for mousedown, so that the widget doesn't
                // trigger the focus on the input and scrolls up when we click 
the reset button
                this.resetButton.$element.on( 'mousedown', function ( e ) { 
e.stopPropagation(); } );
-               this.saveQueryButton.$element.on( 'mousedown', function ( e ) { 
e.stopPropagation(); } );
                this.model.connect( this, {
                        initialize: 'onModelInitialize',
                        itemUpdate: 'onModelItemUpdate',
                        highlightChange: 'onModelHighlightChange'
                } );
-               this.saveQueryButton.connect( this, {
-                       click: 'onSaveQueryButtonClick',
-                       saveCurrent: 'setSavedQueryVisibility'
-               } );
                this.queriesModel.connect( this, { itemUpdate: 
'onSavedQueriesItemUpdate' } );
+
+               // The filter list and button should appear side by side 
regardless of how
+               // wide the button is; the button also changes its width 
depending
+               // on language and its state, so the safest way to present both 
side
+               // by side is with a table layout
+               rcFiltersRow = $( '<div>' )
+                       .addClass( 'mw-rcfilters-ui-row' )
+                       .append(
+                               this.$content
+                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                       .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-filters' )
+                       );
+
+               if ( areSavedQueriesEnabled ) {
+                       rcFiltersRow.append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                       .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-save' )
+                                       .append( this.saveQueryButton.$element )
+                       );
+               }
+
+               rcFiltersRow.append(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-cell' )
+                               .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-reset' )
+                               .append( this.resetButton.$element )
+               );
 
                // Build the content
                $contentWrapper.append(
@@ -103,25 +138,7 @@
                        $( '<div>' )
                                .addClass( 'mw-rcfilters-ui-table' )
                                .append(
-                                       // The filter list and button should 
appear side by side regardless of how
-                                       // wide the button is; the button also 
changes its width depending
-                                       // on language and its state, so the 
safest way to present both side
-                                       // by side is with a table layout
-                                       $( '<div>' )
-                                               .addClass( 
'mw-rcfilters-ui-row' )
-                                               .append(
-                                                       this.$content
-                                                               .addClass( 
'mw-rcfilters-ui-cell' )
-                                                               .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-filters' ),
-                                                       $( '<div>' )
-                                                               .addClass( 
'mw-rcfilters-ui-cell' )
-                                                               .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-save' )
-                                                               .append( 
this.saveQueryButton.$element ),
-                                                       $( '<div>' )
-                                                               .addClass( 
'mw-rcfilters-ui-cell' )
-                                                               .addClass( 
'mw-rcfilters-ui-filterTagMultiselectWidget-cell-reset' )
-                                                               .append( 
this.resetButton.$element )
-                                               )
+                                       rcFiltersRow
                                )
                );
 
@@ -221,16 +238,18 @@
         * Set the visibility of the saved query button
         */
        
mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.setSavedQueryVisibility = 
function () {
-               this.matchingQuery = 
this.controller.findQueryMatchingCurrentState();
+               if ( this.areSavedQueriesEnabled ) {
+                       this.matchingQuery = 
this.controller.findQueryMatchingCurrentState();
 
-               this.savedQueryTitle.setLabel(
-                       this.matchingQuery ? this.matchingQuery.getLabel() : ''
-               );
-               this.savedQueryTitle.toggle( !!this.matchingQuery );
-               this.saveQueryButton.toggle(
-                       !this.isEmpty() &&
-                       !this.matchingQuery
-               );
+                       this.savedQueryTitle.setLabel(
+                               this.matchingQuery ? 
this.matchingQuery.getLabel() : ''
+                       );
+                       this.savedQueryTitle.toggle( !!this.matchingQuery );
+                       this.saveQueryButton.toggle(
+                               !this.isEmpty() &&
+                               !this.matchingQuery
+                       );
+               }
        };
        /**
         * Respond to model itemUpdate event
diff --git 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
index 738a981..ebef62f 100644
--- 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
+++ 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
@@ -33,19 +33,26 @@
                        { $overlay: this.$overlay }
                );
 
-               this.savedLinksListWidget = new 
mw.rcfilters.ui.SavedLinksListWidget(
-                       this.controller,
-                       this.queriesModel,
-                       { $overlay: this.$overlay }
-               );
-
                // Initialize
                this.$element
-                       .addClass( 'mw-rcfilters-ui-filterWrapperWidget' )
-                       .append(
-                               this.savedLinksListWidget.$element,
-                               this.filterTagWidget.$element
+                       .addClass( 'mw-rcfilters-ui-filterWrapperWidget' );
+
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) ) 
{
+                       this.savedLinksListWidget = new 
mw.rcfilters.ui.SavedLinksListWidget(
+                               this.controller,
+                               this.queriesModel,
+                               { $overlay: this.$overlay }
                        );
+
+                       this.$element.append(
+                               this.savedLinksListWidget.$element
+                       );
+
+               }
+
+               this.$element.append(
+                       this.filterTagWidget.$element
+               );
        };
 
        /* Initialization */

-- 
To view, visit https://gerrit.wikimedia.org/r/353479
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1c9e382c265a097b5eea07b529ec542a60562307
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.30.0-wmf.1
Gerrit-Owner: Mattflaschen <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to