X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/rappels.php?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fmw.rcfilters.init.js;h=582d25fa34610eaa111d0facb700333d5a64a029;hb=4064701b68bb7dd78dc74e37c24a595f718fdb7e;hp=40b8bd2bb3ad47b440e5d077d3ea1c77169f292a;hpb=44cdb42faf5581b2941c45d51b44c7ed236a776f;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 40b8bd2bb3..582d25fa34 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -8,10 +8,8 @@ * @private */ init: function () { - var $topLinks, - topSection, - $watchlistDetails, - namespaces, + var $topSection, + mainWrapperWidget, conditionalViews = {}, savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ), @@ -19,6 +17,7 @@ filtersModel = new mw.rcfilters.dm.FiltersViewModel(), changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ), + specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ), controller = new mw.rcfilters.Controller( filtersModel, changesListModel, savedQueriesModel, { @@ -26,23 +25,17 @@ daysPreferenceName: daysPreferenceName, limitPreferenceName: limitPreferenceName } - ), - $overlay = $( '
' ) - .addClass( 'mw-rcfilters-ui-overlay' ), - filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget( - controller, filtersModel, savedQueriesModel, changesListModel, { $overlay: $overlay } ), - savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget( - controller, savedQueriesModel, { $overlay: $overlay } - ), - specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ), - $changesListRoot = $( [ - '.mw-changeslist', - '.mw-changeslist-empty', - '.mw-changeslist-timeout', - '.mw-changeslist-notargetpage' - ].join( ', ' ) ); + ); + + // TODO: The changesListWrapperWidget should be able to initialize + // after the model is ready. - if ( specialPage === 'Recentchangeslinked' ) { + if ( specialPage === 'Recentchanges' ) { + $topSection = $( '.mw-recentchanges-toplinks' ).detach(); + } else if ( specialPage === 'Watchlist' ) { + $( '#contentSub, form#mw-watchlist-resetbutton' ).remove(); + $topSection = $( '.watchlistDetails' ).detach().contents(); + } else if ( specialPage === 'Recentchangeslinked' ) { conditionalViews.recentChangesLinked = { groups: [ { @@ -73,41 +66,39 @@ } ] }; - } - // TODO: The changesListWrapperWidget should be able to initialize - // after the model is ready. - - // eslint-disable-next-line no-new - new mw.rcfilters.ui.ChangesListWrapperWidget( - filtersModel, changesListModel, controller, $changesListRoot ); + mainWrapperWidget = new mw.rcfilters.ui.MainWrapperWidget( + controller, + filtersModel, + savedQueriesModel, + changesListModel, + { + $topSection: $topSection, + $filtersContainer: $( '.rcfilters-container' ), + $changesListContainer: $( [ + '.mw-changeslist', + '.mw-changeslist-empty', + '.mw-changeslist-timeout', + '.mw-changeslist-notargetpage' + ].join( ', ' ) ), + $formContainer: $( 'fieldset.cloptions' ) + } + ); // Remove the -loading class that may have been added on the server side. // If we are in fact going to load a default saved query, this .initialize() // call will do that and add the -loading class right back. $( 'body' ).removeClass( 'mw-rcfilters-ui-loading' ); - // Remove Media namespace - namespaces = mw.config.get( 'wgFormattedNamespaces' ); - delete namespaces[ mw.config.get( 'wgNamespaceIds' ).media ]; - controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ), - namespaces, + // All namespaces without Media namespace + this.getNamespaces( [ 'Media' ] ), mw.config.get( 'wgRCFiltersChangeTags' ), conditionalViews ); - // eslint-disable-next-line no-new - new mw.rcfilters.ui.FormWrapperWidget( - filtersModel, changesListModel, controller, $( 'fieldset.cloptions' ) ); - - $( '.rcfilters-container' ).append( filtersWidget.$element ); - $( 'body' ) - .append( $overlay ) - .addClass( 'mw-rcfilters-ui-initialized' ); - $( 'a.mw-helplink' ).attr( 'href', 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review' @@ -115,33 +106,7 @@ controller.replaceUrl(); - if ( specialPage === 'Recentchanges' ) { - $topLinks = $( '.mw-recentchanges-toplinks' ).detach(); - - topSection = new mw.rcfilters.ui.RcTopSectionWidget( - savedLinksListWidget, $topLinks - ); - filtersWidget.setTopSection( topSection.$element ); - } // end Recentchanges - - if ( specialPage === 'Recentchangeslinked' ) { - topSection = new mw.rcfilters.ui.RclTopSectionWidget( - savedLinksListWidget, controller, - filtersModel.getGroup( 'toOrFrom' ).getItemByParamName( 'showlinkedto' ), - filtersModel.getGroup( 'page' ).getItemByParamName( 'target' ) - ); - filtersWidget.setTopSection( topSection.$element ); - } // end Recentchangeslinked - - if ( specialPage === 'Watchlist' ) { - $( '#contentSub, form#mw-watchlist-resetbutton' ).detach(); - $watchlistDetails = $( '.watchlistDetails' ).detach().contents(); - - topSection = new mw.rcfilters.ui.WatchlistTopSectionWidget( - controller, changesListModel, savedLinksListWidget, $watchlistDetails - ); - filtersWidget.setTopSection( topSection.$element ); - } // end Watchlist + mainWrapperWidget.setTopSection( specialPage ); /** * Fired when initialization of the filtering interface for changes list is complete. @@ -150,6 +115,29 @@ * @member mw.hook */ mw.hook( 'structuredChangeFilters.ui.initialized' ).fire(); + }, + + /** + * Get list of namespaces and remove unused ones + * + * @member mw.rcfilters + * @private + * + * @param {Array} unusedNamespaces Names of namespaces to remove + * @return {Array} Filtered array of namespaces + */ + getNamespaces: function ( unusedNamespaces ) { + var i, length, name, id, + namespaceIds = mw.config.get( 'wgNamespaceIds' ), + namespaces = mw.config.get( 'wgFormattedNamespaces' ); + + for ( i = 0, length = unusedNamespaces.length; i < length; i++ ) { + name = unusedNamespaces[ i ]; + id = namespaceIds[ name.toLowerCase() ]; + delete namespaces[ id ]; + } + + return namespaces; } };