X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fmw.rcfilters.init.js;h=0819351fd30e2e77c198832e8caecc6507461d18;hb=31495b9e60e01438f5906cb24d484599e4930e66;hp=e758f26fcd6816fcb530a030f98f987a41ce7785;hpb=783e689d7d06ed4e5509c716a22e99769eee3e29;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 e758f26fcd..bab8ee5d14 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -2,27 +2,45 @@ * JavaScript for Special:RecentChanges */ ( function ( mw, $ ) { - /** - * @class mw.rcfilters - * @singleton - */ var rcfilters = { - /** */ + /** + * @member mw.rcfilters + * @private + */ init: function () { - var filtersModel = new mw.rcfilters.dm.FiltersViewModel(), + var $topLinks, + rcTopSection, + $watchlistDetails, + wlTopSection, + savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), + filtersModel = new mw.rcfilters.dm.FiltersViewModel(), changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), - savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel(), - controller = new mw.rcfilters.Controller( filtersModel, changesListModel, savedQueriesModel ), + savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ), + controller = new mw.rcfilters.Controller( + filtersModel, changesListModel, savedQueriesModel, + { + savedQueriesPreferenceName: savedQueriesPreferenceName + } + ), $overlay = $( '
' ) .addClass( 'mw-rcfilters-ui-overlay' ), filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget( - controller, filtersModel, savedQueriesModel, { $overlay: $overlay } ); + 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, $( '.mw-changeslist, .mw-changeslist-empty' ) ); + filtersModel, changesListModel, controller, $( '.mw-changeslist, .mw-changeslist-empty' ) ); + + // 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' ); controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ), @@ -32,11 +50,12 @@ // eslint-disable-next-line no-new new mw.rcfilters.ui.FormWrapperWidget( - filtersModel, changesListModel, controller, $( 'fieldset.rcoptions' ) ); + filtersModel, changesListModel, controller, $( 'fieldset.cloptions' ) ); $( '.rcfilters-container' ).append( filtersWidget.$element ); - $( 'body' ).append( $overlay ); - $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' ); + $( 'body' ) + .append( $overlay ) + .addClass( 'mw-rcfilters-ui-initialized' ); $( 'a.mw-helplink' ).attr( 'href', @@ -44,10 +63,43 @@ ); 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 + + /** + * Fired when initialization of the filtering interface for changes list is complete. + * + * @event structuredChangeFilters_ui_initialized + * @member mw.hook + */ + mw.hook( 'structuredChangeFilters.ui.initialized' ).fire(); } }; - $( rcfilters.init ); + // Early execute of init + if ( document.readyState === 'interactive' || document.readyState === 'complete' ) { + rcfilters.init(); + } else { + $( rcfilters.init ); + } module.exports = rcfilters;