X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/resources/src/mediawiki.rcfilters/mw.rcfilters.js diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.js new file mode 100644 index 00000000..d2033289 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.js @@ -0,0 +1,53 @@ +( function ( mw ) { + /** + * @class + * @singleton + */ + mw.rcfilters = { + dm: {}, + ui: {}, + utils: { + addArrayElementsUnique: function ( arr, elements ) { + elements = Array.isArray( elements ) ? elements : [ elements ]; + + elements.forEach( function ( element ) { + if ( arr.indexOf( element ) === -1 ) { + arr.push( element ); + } + } ); + + return arr; + }, + normalizeParamOptions: function ( givenOptions, legalOptions ) { + var result = []; + + if ( givenOptions.indexOf( 'all' ) > -1 ) { + // If anywhere in the values there's 'all', we + // treat it as if only 'all' was selected. + // Example: param=valid1,valid2,all + // Result: param=all + return [ 'all' ]; + } + + // Get rid of any dupe and invalid parameter, only output + // valid ones + // Example: param=valid1,valid2,invalid1,valid1 + // Result: param=valid1,valid2 + givenOptions.forEach( function ( value ) { + if ( + legalOptions.indexOf( value ) > -1 && + result.indexOf( value ) === -1 + ) { + result.push( value ); + } + } ); + + return result; + } + }, + featureFlags: { + liveUpdate: mw.config.get( 'wgStructuredChangeFiltersLiveUpdateSupported' ) && + ( mw.user.options.get( 'rcenhancedfilters' ) || new mw.Uri().query.liveupdate ) + } + }; +}( mediaWiki ) );