Revert "RCFilters: Export config vars in the RL modules where possible"
authorCatrope <roan@wikimedia.org>
Tue, 12 Feb 2019 00:54:39 +0000 (00:54 +0000)
committerKrinkle <krinklemail@gmail.com>
Tue, 12 Feb 2019 01:02:27 +0000 (01:02 +0000)
This reverts commit bf4f9d0313495dd67a53b9925edf9a3cc6ef36fe.

Reason for revert: causes issues with OAuth extension

The OAuth extension uses a hook to override certain tag messages, and
that hook uses RequestContext::getMain()->msg(), which tries to load
the current user. That's not allowed in load.php requests, so we get a
"Sessions are disabled for this entry point" error.

Change-Id: If58b7edfca116cd7a11f38556f74bed82609d96a

includes/changetags/ChangeTags.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialWatchlist.php
resources/Resources.php
resources/src/mediawiki.rcfilters/Controller.js
resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js

index 6ebe800..a1cf468 100644 (file)
@@ -141,11 +141,11 @@ class ChangeTags {
         * we consider the tag hidden, and return false.
         *
         * @param string $tag
-        * @param MessageLocalizer $context
+        * @param IContextSource $context
         * @return string|bool Tag description or false if tag is to be hidden.
         * @since 1.25 Returns false if tag is to be hidden.
         */
-       public static function tagDescription( $tag, MessageLocalizer $context ) {
+       public static function tagDescription( $tag, IContextSource $context ) {
                $msg = $context->msg( "tag-$tag" );
                if ( !$msg->exists() ) {
                        // No such message, so return the HTML-escaped tag name.
@@ -168,11 +168,11 @@ class ChangeTags {
         * for the long description.
         *
         * @param string $tag
-        * @param MessageLocalizer $context
+        * @param IContextSource $context
         * @return Message|bool Message object of the tag long description or false if
         *  there is no description.
         */
-       public static function tagLongDescriptionMessage( $tag, MessageLocalizer $context ) {
+       public static function tagLongDescriptionMessage( $tag, IContextSource $context ) {
                $msg = $context->msg( "tag-$tag-description" );
                if ( !$msg->exists() ) {
                        return false;
@@ -196,8 +196,6 @@ class ChangeTags {
         * @return string Truncated long tag description.
         */
        public static function truncateTagDescription( $tag, $length, IContextSource $context ) {
-               // FIXME: Make this accept MessageLocalizer and Language instead of IContextSource
-
                $originalDesc = self::tagLongDescriptionMessage( $tag, $context );
                // If there is no tag description, return empty string
                if ( !$originalDesc ) {
index 4e23777..ea1cf59 100644 (file)
@@ -792,6 +792,10 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        $out->addJsConfigVars( 'wgStructuredChangeFiltersMessages', $messages );
                        $out->addJsConfigVars( 'wgStructuredChangeFiltersCollapsedState', $collapsed );
 
+                       $out->addJsConfigVars(
+                               'wgRCFiltersChangeTags',
+                               $this->getChangeTagList()
+                       );
                        $out->addJsConfigVars(
                                'StructuredChangeFiltersDisplayConfig',
                                [
@@ -819,35 +823,26 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                'wgStructuredChangeFiltersCollapsedPreferenceName',
                                static::$collapsedPreferenceName
                        );
+
+                       $out->addJsConfigVars(
+                               'StructuredChangeFiltersLiveUpdatePollingRate',
+                               $this->getConfig()->get( 'StructuredChangeFiltersLiveUpdatePollingRate' )
+                       );
                } else {
                        $out->addBodyClasses( 'mw-rcfilters-disabled' );
                }
        }
 
-       /**
-        * Get config vars to export with the mediawiki.rcfilters.filters.ui module.
-        *
-        * @param ResourceLoaderContext $context
-        * @return array
-        */
-       public static function getRcFiltersConfigVars( ResourceLoaderContext $context ) {
-               return [
-                       'RCFiltersChangeTags' => self::getChangeTagList( $context ),
-                       'StructuredChangeFiltersEditWatchlistUrl' =>
-                               SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
-               ];
-       }
-
        /**
         * Fetch the change tags list for the front end
         *
-        * @param ResourceLoaderContext $context
         * @return array Tag data
         */
-       protected static function getChangeTagList( ResourceLoaderContext $context ) {
+       protected function getChangeTagList() {
                $cache = ObjectCache::getMainWANInstance();
+               $context = $this->getContext();
                return $cache->getWithSetCallback(
-                       $cache->makeKey( 'changeslistspecialpage-changetags', $context->getLanguage() ),
+                       $cache->makeKey( 'changeslistspecialpage-changetags', $context->getLanguage()->getCode() ),
                        $cache::TTL_MINUTE * 10,
                        function () use ( $context ) {
                                $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 );
@@ -863,10 +858,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                */
                                $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags );
 
-                               // HACK work around ChangeTags::truncateTagDescription() requiring a RequestContext
-                               $fakeContext = new RequestContext;
-                               $fakeContext->setLanguage( Language::factory( $context->getLanguage() ) );
-
                                // Build the list and data
                                $result = [];
                                foreach ( $tagHitCounts as $tagName => $hits ) {
@@ -884,7 +875,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                                ChangeTags::truncateTagDescription(
                                                                        $tagName,
                                                                        self::TAG_DESC_CHARACTER_LIMIT,
-                                                                       $fakeContext
+                                                                       $context
                                                                ),
                                                        'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ),
                                                        'hits' => $hits,
index 971aa43..0fc6e13 100644 (file)
@@ -102,6 +102,11 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                if ( $this->isStructuredFilterUiEnabled() ) {
                        $output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] );
+
+                       $output->addJsConfigVars(
+                               'wgStructuredChangeFiltersEditWatchlistUrl',
+                               SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
+                       );
                }
        }
 
index d62f3e3..f774993 100644 (file)
@@ -1813,7 +1813,6 @@ return [
                        'dm/ItemModel.js',
                        'dm/SavedQueriesModel.js',
                        'dm/SavedQueryItemModel.js',
-                       'config.json' => [ 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ],
                ],
                'dependencies' => [
                        'mediawiki.String',
@@ -1867,7 +1866,6 @@ return [
                        'ui/RclTargetPageWidget.js',
                        'ui/RclToOrFromWidget.js',
                        'ui/WatchlistTopSectionWidget.js',
-                       'config.json' => [ 'callback' => 'ChangesListSpecialPage::getRcFiltersConfigVars' ],
                ],
                'styles' => [
                        'styles/mw.rcfilters.mixins.less',
index 56a95eb..30d4a90 100644 (file)
@@ -33,8 +33,6 @@
                this.collapsedPreferenceName = config.collapsedPreferenceName;
                this.normalizeTarget = !!config.normalizeTarget;
 
-               this.pollingRate = require( './config.json' ).StructuredChangeFiltersLiveUpdatePollingRate;
-
                this.requestCounter = {};
                this.baseFilterState = {};
                this.uriProcessor = null;
                this.initialized = true;
                this.switchView( 'default' );
 
+               this.pollingRate = mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' );
                if ( this.pollingRate ) {
                        this._scheduleLiveUpdate();
                }
index a69dc55..4e0d3da 100644 (file)
                        mw.config.get( 'wgStructuredChangeFilters' ),
                        // All namespaces without Media namespace
                        getNamespaces( [ 'Media' ] ),
-                       require( './config.json' ).RCFiltersChangeTags,
+                       mw.config.get( 'wgRCFiltersChangeTags' ),
                        conditionalViews
                );
 
index cb297f6..2674cc2 100644 (file)
@@ -90,7 +90,7 @@
                                this.numChangesAndDateWidget.$element
                        );
 
-               if ( this.controller.pollingRate ) {
+               if ( mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) ) {
                        $bottom.prepend( this.liveUpdateButton.$element );
                }
 
index 16c0533..a1c9776 100644 (file)
@@ -30,7 +30,7 @@
                editWatchlistButton = new OO.ui.ButtonWidget( {
                        label: mw.msg( 'rcfilters-watchlist-edit-watchlist-button' ),
                        icon: 'edit',
-                       href: require( '../config.json' ).StructuredChangeFiltersEditWatchlistUrl
+                       href: mw.config.get( 'wgStructuredChangeFiltersEditWatchlistUrl' )
                } );
                markSeenButton = new MarkSeenButtonWidget( controller, changesListModel );