X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fmw.rcfilters.init.js;h=a6bce1434e4e11480a7f6112bc4bba651743dc74;hp=e758f26fcd6816fcb530a030f98f987a41ce7785;hb=e7720b8f8e09287384ddee271641d1b1721318bb;hpb=101556a17482f59ba6b6c07f3a9a747494520a9d diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index e758f26fcd..a6bce1434e 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -2,27 +2,40 @@ * 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 toplinksTitle, + topLinksCookieName = 'rcfilters-toplinks-collapsed-state', + topLinksCookie = mw.cookie.get( topLinksCookieName ), + topLinksCookieValue = topLinksCookie || 'collapsed', + 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 ), + 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 } ), + markSeenButton, + currentPage = mw.config.get( 'wgCanonicalNamespace' ) + + ':' + + 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' ) ); controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ), @@ -32,7 +45,7 @@ // 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 ); @@ -44,6 +57,39 @@ ); controller.replaceUrl(); + + if ( currentPage === 'Special:Recentchanges' ) { + toplinksTitle = new OO.ui.ButtonWidget( { + framed: false, + indicator: topLinksCookieValue === 'collapsed' ? 'down' : 'up', + flags: [ 'progressive' ], + label: $( '' ).append( mw.message( 'rcfilters-other-review-tools' ).parse() ).contents() + } ); + $( '.mw-recentchanges-toplinks-title' ).replaceWith( toplinksTitle.$element ); + // Move the top links to a designated area so it's near the + // 'saved filters' button and make it collapsible + $( '.mw-recentchanges-toplinks' ) + .addClass( 'mw-rcfilters-ui-ready' ) + .makeCollapsible( { + collapsed: topLinksCookieValue === 'collapsed', + $customTogglers: toplinksTitle.$element + } ) + .on( 'beforeExpand.mw-collapsible', function () { + mw.cookie.set( topLinksCookieName, 'expanded' ); + toplinksTitle.setIndicator( 'up' ); + } ) + .on( 'beforeCollapse.mw-collapsible', function () { + mw.cookie.set( topLinksCookieName, 'collapsed' ); + toplinksTitle.setIndicator( 'down' ); + } ) + .appendTo( '.mw-rcfilters-ui-filterWrapperWidget-top-placeholder' ); + } // end Special:RC + + if ( currentPage === 'Special:Watchlist' ) { + markSeenButton = new mw.rcfilters.ui.MarkSeenButtonWidget( controller, changesListModel ); + $( 'form#mw-watchlist-resetbutton' ).detach(); + filtersWidget.prependToTopRow( markSeenButton ); + } // end Special:WL } };