mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-24 08:23:52 +00:00
Move body classes code to BeforePageDisplay hook
Seems like a better place and it avoids duplication. Change-Id: I26643c42cb7aa19cf0dfae449347f2fec2f8bc61
This commit is contained in:
parent
7ee34804ac
commit
884d1f6ec6
|
@ -76,13 +76,21 @@ class PageHooks implements
|
||||||
public function onBeforePageDisplay( $output, $skin ): void {
|
public function onBeforePageDisplay( $output, $skin ): void {
|
||||||
$user = $output->getUser();
|
$user = $output->getUser();
|
||||||
$req = $output->getRequest();
|
$req = $output->getRequest();
|
||||||
|
foreach ( HookUtils::FEATURES as $feature ) {
|
||||||
|
// Add a CSS class for each enabled feature
|
||||||
|
if ( HookUtils::isFeatureEnabledForOutput( $output, $feature ) ) {
|
||||||
|
$output->addBodyClasses( "ext-discussiontools-$feature-enabled" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load style modules if the tools can be available for the title
|
// Load style modules if the tools can be available for the title
|
||||||
// as this means the DOM may have been modified in the parser cache.
|
// to selectively hide DT features, depending on the body classes added above.
|
||||||
if ( HookUtils::isAvailableForTitle( $output->getTitle() ) ) {
|
if ( HookUtils::isAvailableForTitle( $output->getTitle() ) ) {
|
||||||
$output->addModuleStyles( [
|
$output->addModuleStyles( [
|
||||||
'ext.discussionTools.init.styles',
|
'ext.discussionTools.init.styles',
|
||||||
] );
|
] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load modules if any DT feature is enabled for this user
|
// Load modules if any DT feature is enabled for this user
|
||||||
if ( HookUtils::isFeatureEnabledForOutput( $output ) ) {
|
if ( HookUtils::isFeatureEnabledForOutput( $output ) ) {
|
||||||
$output->addModules( [
|
$output->addModules( [
|
||||||
|
@ -160,9 +168,6 @@ class PageHooks implements
|
||||||
*/
|
*/
|
||||||
public function onOutputPageBeforeHTML( $output, &$text ) {
|
public function onOutputPageBeforeHTML( $output, &$text ) {
|
||||||
$lang = $output->getLanguage();
|
$lang = $output->getLanguage();
|
||||||
|
|
||||||
$this->addFeatureBodyClasses( $output );
|
|
||||||
|
|
||||||
if ( HookUtils::isFeatureEnabledForOutput( $output, HookUtils::TOPICSUBSCRIPTION ) ) {
|
if ( HookUtils::isFeatureEnabledForOutput( $output, HookUtils::TOPICSUBSCRIPTION ) ) {
|
||||||
$text = CommentFormatter::postprocessTopicSubscription(
|
$text = CommentFormatter::postprocessTopicSubscription(
|
||||||
$text, $lang, $this->subscriptionStore, $output->getUser()
|
$text, $lang, $this->subscriptionStore, $output->getUser()
|
||||||
|
@ -215,11 +220,6 @@ class PageHooks implements
|
||||||
$output->enableOOUI();
|
$output->enableOOUI();
|
||||||
$output->enableClientCache( false );
|
$output->enableClientCache( false );
|
||||||
|
|
||||||
// OutputPageBeforeHTML won't have run, since there's no parsed text
|
|
||||||
// to display, but we need these classes or reply links won't show
|
|
||||||
// after a topic is posted.
|
|
||||||
$this->addFeatureBodyClasses( $output );
|
|
||||||
|
|
||||||
$coreConfig = RequestContext::getMain()->getConfig();
|
$coreConfig = RequestContext::getMain()->getConfig();
|
||||||
$iconpath = $coreConfig->get( 'ExtensionAssetsPath' ) . '/DiscussionTools/images';
|
$iconpath = $coreConfig->get( 'ExtensionAssetsPath' ) . '/DiscussionTools/images';
|
||||||
|
|
||||||
|
@ -303,19 +303,4 @@ class PageHooks implements
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper to add feature-toggle classes to the output's body
|
|
||||||
*
|
|
||||||
* @param OutputPage $output
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function addFeatureBodyClasses( OutputPage $output ): void {
|
|
||||||
foreach ( HookUtils::FEATURES as $feature ) {
|
|
||||||
// Add a CSS class for each enabled feature
|
|
||||||
if ( HookUtils::isFeatureEnabledForOutput( $output, $feature ) ) {
|
|
||||||
$output->addBodyClasses( "ext-discussiontools-$feature-enabled" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue