From b3becd3a6113d0dc03023df2dfeaf403bb6da814 Mon Sep 17 00:00:00 2001 From: Matthew Flaschen Date: Mon, 11 Sep 2017 03:12:03 -0400 Subject: [PATCH] Add class marking whether RCFilters is enabled Also added OutputPage->addBodyClasses to allow this Bug: T175062 Change-Id: I2111d0762328f2e59038c92d63583a9bb267fc9f --- includes/OutputPage.php | 15 ++++++++++++++- includes/specialpage/ChangesListSpecialPage.php | 8 +++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/includes/OutputPage.php b/includes/OutputPage.php index b71ae89cfa..52161466a6 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -139,6 +139,9 @@ class OutputPage extends ContextSource { /** @var array Array of elements in "". Parser might add its own headers! */ protected $mHeadItems = []; + /** @var array Additional classes; there are also classes from other sources */ + protected $mAdditionalBodyClasses = []; + /** @var array */ protected $mModules = []; @@ -705,6 +708,16 @@ class OutputPage extends ContextSource { return isset( $this->mHeadItems[$name] ); } + /** + * Add a class to the element + * + * @since 1.30 + * @param string|string[] $classes One or more classes to add + */ + public function addBodyClasses( $classes ) { + $this->mAdditionalBodyClasses = array_merge( $this->mAdditionalBodyClasses, (array)$classes ); + } + /** * @deprecated since 1.28 Obsolete - wgUseETag experiment was removed. * @param string $tag @@ -2923,7 +2936,7 @@ class OutputPage extends ContextSource { $pieces[] = Html::closeElement( 'head' ); - $bodyClasses = []; + $bodyClasses = $this->mAdditionalBodyClasses; $bodyClasses[] = 'mediawiki'; # Classes for LTR/RTL directionality support diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index d943d036b6..7f6fdf7484 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -573,10 +573,12 @@ abstract class ChangesListSpecialPage extends SpecialPage { /** * Include the modules and configuration for the RCFilters app. * Conditional on the user having the feature enabled. + * + * If it is disabled, add a class marking that */ protected function includeRcFiltersApp() { + $out = $this->getOutput(); if ( $this->isStructuredFilterUiEnabled() ) { - $out = $this->getOutput(); $jsData = $this->getStructuredFilterJsData(); $messages = []; @@ -584,6 +586,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { $messages[$key] = $this->msg( $key )->plain(); } + $out->addBodyClasses( 'mw-rcfilters-enabled' ); + $out->addHTML( ResourceLoader::makeInlineScript( ResourceLoader::makeMessageSetScript( $messages ) @@ -616,6 +620,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'daysDefault' => $this->getDefaultDays(), ] ); + } else { + $out->addBodyClasses( 'mw-rcfilters-disabled' ); } } -- 2.20.1