X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fmw.rcfilters.init.js;h=14f0f6bafd9773e0f10f234707e30e064beb28bd;hb=fe4b09380562976aea9f06e59d342fff8d91b026;hp=73259f67851e7fdb4c41fe2201383cdad9c01d41;hpb=d75a576e2606db6a719e99ca488aa700c1db487d;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 73259f6785..1f72484c02 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -8,34 +8,85 @@ * @private */ init: function () { - var $topLinks, - rcTopSection, - $watchlistDetails, - wlTopSection, + var $topSection, + mainWrapperWidget, + conditionalViews = {}, + $initialFieldset = $( 'fieldset.cloptions' ), savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), + daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ), + limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ), filtersModel = new mw.rcfilters.dm.FiltersViewModel(), - changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), - savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel(), + changesListModel = new mw.rcfilters.dm.ChangesListViewModel( $initialFieldset ), + savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ), + specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ), controller = new mw.rcfilters.Controller( filtersModel, changesListModel, savedQueriesModel, { - savedQueriesPreferenceName: savedQueriesPreferenceName + savedQueriesPreferenceName: savedQueriesPreferenceName, + daysPreferenceName: daysPreferenceName, + limitPreferenceName: limitPreferenceName, + normalizeTarget: specialPage === 'Recentchangeslinked' } - ), - $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' ); + ); // 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, $( '.mw-changeslist, .mw-changeslist-empty' ) ); + + 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: [ + { + name: 'page', + type: 'any_value', + title: '', + hidden: true, + sticky: true, + filters: [ + { + name: 'target', + 'default': '' + } + ] + }, + { + name: 'toOrFrom', + type: 'boolean', + title: '', + hidden: true, + sticky: true, + filters: [ + { + name: 'showlinkedto', + 'default': false + } + ] + } + ] + }; + } + + 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: $initialFieldset + } + ); // 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() @@ -44,18 +95,13 @@ controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ), - mw.config.get( 'wgFormattedNamespaces' ), - mw.config.get( 'wgRCFiltersChangeTags' ) + // All namespaces without Media namespace + rcfilters.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' ); + mainWrapperWidget.initFormWidget( specialPage ); $( 'a.mw-helplink' ).attr( 'href', @@ -64,37 +110,7 @@ controller.replaceUrl(); - if ( specialPage === 'Recentchanges' || - specialPage === 'Recentchangeslinked' ) { - $topLinks = $( '.mw-recentchanges-toplinks' ).detach(); - - rcTopSection = new mw.rcfilters.ui.RcTopSectionWidget( - savedLinksListWidget, $topLinks - ); - filtersWidget.setTopSection( rcTopSection.$element ); - } // end Special:RC - - if ( specialPage === 'Watchlist' ) { - $( '#contentSub, form#mw-watchlist-resetbutton' ).detach(); - $watchlistDetails = $( '.watchlistDetails' ).detach().contents(); - - wlTopSection = new mw.rcfilters.ui.WatchlistTopSectionWidget( - controller, changesListModel, savedLinksListWidget, $watchlistDetails - ); - filtersWidget.setTopSection( wlTopSection.$element ); - } // end Special:WL - - // Log performance data - if ( window.performance && window.performance.now ) { - mw.track( - 'timing.MediaWiki.timing.structuredChangeFilters.ready.' + specialPage, - window.performance.now() - ); - mw.track( - 'timing.MediaWiki.timing.structuredChangeFilters.backendResponse.' + specialPage, - mw.config.get( 'wgBackendResponseTime' ) - ); - } + mainWrapperWidget.setTopSection( specialPage ); /** * Fired when initialization of the filtering interface for changes list is complete. @@ -103,6 +119,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; } };