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

Change subject: [wip] RCFilters UI: Read preferences as base state
......................................................................

[wip] RCFilters UI: Read preferences as base state

Read user preferences for filters as a base state that is then
overriden by URL parameters.

Bug: T144448
Change-Id: I9e8e3430ca2f80d3f67422681e8fb69a43ee4bef
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
M resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
M resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
4 files changed, 51 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/64/326064/1

diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
index c689420..aa3556f 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
@@ -22,6 +22,7 @@
                this.group = config.group || '';
                this.label = config.label || this.name;
                this.description = config.description;
+               this.preference = config.preference;
 
                this.selected = !!config.selected;
        };
@@ -80,6 +81,15 @@
        };
 
        /**
+        * Return the preference name associated with this filter
+        *
+        * @return {string} Preference name
+        */
+       mw.rcfilters.dm.FilterItem.prototype.getPreferenceName = function () {
+               return this.preference;
+       };
+
+       /**
         * Get the selected state of this filter
         *
         * @return {boolean} Filter is selected
diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
index 2933fb8..ef160c6 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
@@ -86,13 +86,17 @@
                        model.groups[ group ].title = data.title;
                        model.groups[ group ].type = data.type;
                        model.groups[ group ].separator = data.separator || '|';
+                       if ( data.preference ) {
+                               model.groups[ group ].preference = preference;
+                       }
 
                        for ( i = 0; i < data.filters.length; i++ ) {
                                filterItem = new mw.rcfilters.dm.FilterItem( 
data.filters[ i ].name, {
                                        group: group,
                                        label: data.filters[ i ].label,
                                        description: data.filters[ i 
].description,
-                                       selected: data.filters[ i ].selected
+                                       selected: data.filters[ i ].selected,
+                                       preference: data.filters[ i ].preference
                                } );
 
                                model.groups[ group ].filters.push( filterItem 
);
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
index 61c06ce..e3407d6 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
@@ -18,14 +18,45 @@
         * Initialize the filter and parameter states
         */
        mw.rcfilters.Controller.prototype.initialize = function () {
-               var uri = new mw.Uri();
+               var paramData,
+                       controller = this,
+                       uri = new mw.Uri(),
+                       prefParamStates = {};
 
+mw.user.options.set( 'hidemyself', 1 ); // Test purpose only!
+
+               // Go over filters and fetch preferences, if those are set up 
and exist
+               $.each( this.model.getFilterGroups(), function( group, data ) {
+                       var prefValue;
+
+                       if ( data.type === 'string_options' ) {
+                               // Preference is set on the group
+                               if ( data.preference ) {
+                                       prefValue = mw.user.options.get( 
data.preference );
+                                       if ( prefValue !== null ) {
+                                               prefParamStates[ group ] = 
prefValue;
+                                       }
+                               }
+                       } else if ( data.type === 'send_unselected_if_any' ) {
+                               // Preference is set on the individual filters
+                               data.filters.forEach( function ( filterItem ) {
+                                       if ( filterItem.getPreferenceName() ) {
+                                               prefParamStates[ 
filterItem.getName() ] = mw.user.options.get( filterItem.getPreferenceName() );
+                                       }
+                               } );
+                       }
+               } );
+
+               // Combine preference data with url params (URL should override)
+               paramData = $.extend( {}, prefParamStates, uri.query );
+
+               // Give the model a full parameter state from which to
+               // update the filters
                this.model.updateFilters(
-                       // Translate the url params to filter select states
-                       this.model.getParametersToFilters( uri.query )
+                       this.model.getParametersToFilters( paramData )
                );
 
-               this.model.updateParameters( uri.query );
+               this.model.updateParameters( paramData );
        };
 
        /**
@@ -62,11 +93,6 @@
                var filter,
                        uri = new mw.Uri(),
                        currFilters = this.model.getFiltersToParameters();
-
-               // Translate true/false to integer values
-               for ( filter in currFilters ) {
-                       currFilters[ filter ] = Number( currFilters[ filter ] );
-               }
 
                // Add to existing queries in URL
                currFilters = $.extend( uri.query, currFilters );
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
index a4354f6..d5b7172 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
@@ -29,6 +29,7 @@
                                        filters: [
                                                {
                                                        name: 'hidemyself',
+                                                       preference: 
'hidemyself',
                                                        label: mw.msg( 
'rcfilters-filter-editsbyself-label' ),
                                                        description: mw.msg( 
'rcfilters-filter-editsbyself-description' )
                                                },

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9e8e3430ca2f80d3f67422681e8fb69a43ee4bef
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <mor...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to