From bad94719a8fcc3ca0bbda9ee16a9eef0019ab29e Mon Sep 17 00:00:00 2001 From: DannyS712 Date: Mon, 20 Sep 2021 21:33:07 +0000 Subject: [PATCH] RCFilters: Merge mediawiki.rcfilters.filters.dm into ui module The new module retains the name .ui name so that existing skin style overrides continue to work. We can consider renaming it to just "mediawiki.rcfilters.filters" in a future patch. This does not handle file reorganization, since both of the modules used package files - instead, in the main script we also require() the old main script for the .dm module so that its setup code runs. But, we did need to rename the virtual config file from the .dm module to not clash with the virtual config file from the .ui module, since the latter uses a callback instead of retrieving configuration variables directly. These can be merged later as well. Bug: T256836 Change-Id: I5ec0af8b8e6bcdba6b7881f946f777b854a33739 --- resources/Resources.php | 45 +++++++++---------- .../src/mediawiki.rcfilters/Controller.js | 3 +- .../mediawiki.rcfilters/mw.rcfilters.init.js | 16 ++++--- .../src/mediawiki.rcfilters/mw.rcfilters.js | 8 ++++ tests/qunit/QUnitTestResources.php | 2 +- 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/resources/Resources.php b/resources/Resources.php index 6a7655ef22c..686e33b528d 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1660,11 +1660,19 @@ return [ ], ], ], - 'mediawiki.rcfilters.filters.dm' => [ + // TODO consider renaming to mediawiki.rcfilters.filters following merge of + // mediawiki.rcfilters.filters.dm into mediawiki.rcfilters.filters.ui, see T256836 + 'mediawiki.rcfilters.filters.ui' => [ 'targets' => [ 'desktop', 'mobile' ], 'localBasePath' => "$IP/resources/src/mediawiki.rcfilters", 'remoteBasePath' => "$wgResourceBasePath/resources/src/mediawiki.rcfilters", 'packageFiles' => [ + // This used to be the `main` script for the .dm module, and the .ui module + // had a `main` script mw.rcfilters.init.js - that file depends on mw.rcfilters + // being defined in this one, because module dependencies get executed before + // those that depend on them. The two scripts should probably be merged, + // but for now this simply `require()`s mw.rcfilters.init.js at the end so + // that the setup code there can be run 'mw.rcfilters.js', 'Controller.js', 'UriProcessor.js', @@ -1675,27 +1683,10 @@ return [ 'dm/ItemModel.js', 'dm/SavedQueriesModel.js', 'dm/SavedQueryItemModel.js', - [ 'name' => 'config.json', 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ], - ], - 'dependencies' => [ - 'mediawiki.String', - 'oojs', - 'mediawiki.api', - 'mediawiki.jqueryMsg', - 'mediawiki.Uri', - 'mediawiki.user', - 'user.options', - ], - 'messages' => [ - 'quotation-marks', - 'rcfilters-filterlist-title', - ], - ], - 'mediawiki.rcfilters.filters.ui' => [ - 'targets' => [ 'desktop', 'mobile' ], - 'localBasePath' => "$IP/resources/src/mediawiki.rcfilters", - 'remoteBasePath' => "$wgResourceBasePath/resources/src/mediawiki.rcfilters", - 'packageFiles' => [ + // TODO consider merging this with the config.json for the ui code + [ 'name' => 'dmConfig.json', 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ], + // Used to be the `main` script for mediawiki.rcfilters.filters.ui, now + // triggered by mw.rcfilters.js 'mw.rcfilters.init.js', 'HighlightColors.js', 'ui/CheckboxInputWidget.js', @@ -1855,14 +1846,17 @@ return [ 'quotation-marks', ], 'dependencies' => [ - 'oojs-ui-widgets', 'jquery.makeCollapsible', + 'mediawiki.String', + 'mediawiki.api', 'mediawiki.jqueryMsg', 'mediawiki.language', + 'mediawiki.Uri', 'mediawiki.user', 'mediawiki.util', 'mediawiki.widgets', - 'mediawiki.rcfilters.filters.dm', + 'oojs', + 'oojs-ui-widgets', 'oojs-ui.styles.icons-content', 'oojs-ui.styles.icons-moderation', 'oojs-ui.styles.icons-editing-core', @@ -1870,7 +1864,8 @@ return [ 'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-layout', 'oojs-ui.styles.icons-media', - 'oojs-ui-windows.icons' + 'oojs-ui-windows.icons', + 'user.options', ], ], 'mediawiki.interface.helpers.styles' => [ diff --git a/resources/src/mediawiki.rcfilters/Controller.js b/resources/src/mediawiki.rcfilters/Controller.js index b70ce0da880..6e88b17b68d 100644 --- a/resources/src/mediawiki.rcfilters/Controller.js +++ b/resources/src/mediawiki.rcfilters/Controller.js @@ -32,7 +32,8 @@ Controller = function MwRcfiltersController( filtersModel, changesListModel, sav this.collapsedPreferenceName = config.collapsedPreferenceName; this.normalizeTarget = !!config.normalizeTarget; - this.pollingRate = require( './config.json' ).StructuredChangeFiltersLiveUpdatePollingRate; + // TODO merge dmConfig.json and config.json virtual files, see T256836 + this.pollingRate = require( './dmConfig.json' ).StructuredChangeFiltersLiveUpdatePollingRate; this.requestCounter = {}; this.uriProcessor = null; diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 5034146b95f..fce35c2e1c9 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -148,11 +148,13 @@ function init() { // Import i18n messages from config mw.messages.set( mw.config.get( 'wgStructuredChangeFiltersMessages' ) ); -// Early execute of init -if ( document.readyState === 'interactive' || document.readyState === 'complete' ) { - init(); -} else { - $( init ); +// Don't try to run init during QUnit tests, some of the code depends on mw.config variables +// that are not set, and the ui code here isn't even being tested. +if ( !window.QUnit ) { + if ( document.readyState === 'interactive' || document.readyState === 'complete' ) { + // Early execute of init + init(); + } else { + $( init ); + } } - -module.exports = mw.rcfilters; diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.js index 5bf991680b7..694ac90740b 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.js @@ -56,4 +56,12 @@ mw.rcfilters = { } }; +// This used to be the `main` script for the mediawiki.rcfilters.filters.dm module, +// and the mediawiki.rcfilters.filters.ui module had a `main` script mw.rcfilters.init.js +// that file depends on mw.rcfilters being defined in this one, because module dependencies +// get executed before those that depend on them. The two scripts should probably be merged, +// but for now this simply `require()`s mw.rcfilters.init.js so that the setup code there can +// be run +require( './mw.rcfilters.init.js' ); + module.exports = mw.rcfilters; diff --git a/tests/qunit/QUnitTestResources.php b/tests/qunit/QUnitTestResources.php index 20a657a1f9a..70c4511d4ca 100644 --- a/tests/qunit/QUnitTestResources.php +++ b/tests/qunit/QUnitTestResources.php @@ -133,7 +133,7 @@ return [ 'mediawiki.util', 'mediawiki.viewport', 'mediawiki.special.recentchanges', - 'mediawiki.rcfilters.filters.dm', + 'mediawiki.rcfilters.filters.ui', 'mediawiki.language', 'mediawiki.language.testdata', 'mediawiki.cldr',