Revert "RCFilters: Export config vars in the RL modules where possible"

This reverts commit bf4f9d0313.

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
This commit is contained in:
Catrope 2019-02-12 00:54:39 +00:00 committed by Krinkle
parent bf4f9d0313
commit 492969e12b
8 changed files with 26 additions and 35 deletions

View 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 ) {

View 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,

View 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()
);
}
}

View 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',

View 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;
@ -280,6 +278,7 @@
this.initialized = true;
this.switchView( 'default' );
this.pollingRate = mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' );
if ( this.pollingRate ) {
this._scheduleLiveUpdate();
}

View file

@ -123,7 +123,7 @@
mw.config.get( 'wgStructuredChangeFilters' ),
// All namespaces without Media namespace
getNamespaces( [ 'Media' ] ),
require( './config.json' ).RCFiltersChangeTags,
mw.config.get( 'wgRCFiltersChangeTags' ),
conditionalViews
);

View file

@ -90,7 +90,7 @@
this.numChangesAndDateWidget.$element
);
if ( this.controller.pollingRate ) {
if ( mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) ) {
$bottom.prepend( this.liveUpdateButton.$element );
}

View 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 );