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