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;
}
};