* 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.
* 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;
* @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 ) {
$out->addJsConfigVars( 'wgStructuredChangeFiltersMessages', $messages );
$out->addJsConfigVars( 'wgStructuredChangeFiltersCollapsedState', $collapsed );
+ $out->addJsConfigVars(
+ 'wgRCFiltersChangeTags',
+ $this->getChangeTagList()
+ );
$out->addJsConfigVars(
'StructuredChangeFiltersDisplayConfig',
[
'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 );
*/
$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 ) {
ChangeTags::truncateTagDescription(
$tagName,
self::TAG_DESC_CHARACTER_LIMIT,
- $fakeContext
+ $context
),
'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ),
'hits' => $hits,
if ( $this->isStructuredFilterUiEnabled() ) {
$output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] );
+
+ $output->addJsConfigVars(
+ 'wgStructuredChangeFiltersEditWatchlistUrl',
+ SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
+ );
}
}
'dm/ItemModel.js',
'dm/SavedQueriesModel.js',
'dm/SavedQueryItemModel.js',
- 'config.json' => [ 'config' => [ 'StructuredChangeFiltersLiveUpdatePollingRate' ] ],
],
'dependencies' => [
'mediawiki.String',
'ui/RclTargetPageWidget.js',
'ui/RclToOrFromWidget.js',
'ui/WatchlistTopSectionWidget.js',
- 'config.json' => [ 'callback' => 'ChangesListSpecialPage::getRcFiltersConfigVars' ],
],
'styles' => [
'styles/mw.rcfilters.mixins.less',
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();
}
mw.config.get( 'wgStructuredChangeFilters' ),
// All namespaces without Media namespace
getNamespaces( [ 'Media' ] ),
- require( './config.json' ).RCFiltersChangeTags,
+ mw.config.get( 'wgRCFiltersChangeTags' ),
conditionalViews
);
this.numChangesAndDateWidget.$element
);
- if ( this.controller.pollingRate ) {
+ if ( mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) ) {
$bottom.prepend( this.liveUpdateButton.$element );
}
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 );