Add $wgCodeMirrorRTL to control rollout to RTL wikis

We want to get moving on rolling out CodeMirror 6 to LTR wikis, but want
to slow rollout to RTL wikis since we are still ironing out some issues
there, specifically T358804.

Bug: T170001
Bug: T358804
Change-Id: Iac30ffe2746139326159fd406fab3b097b3187f5
This commit is contained in:
MusikAnimal 2024-04-14 17:19:43 -04:00
parent 3339cbb3a5
commit 3dcbb6590d
2 changed files with 7 additions and 1 deletions

View file

@ -36,6 +36,10 @@
"value": null, "value": null,
"description": "List of namespace IDs where line numbering should be enabled, or `null` to enable for all namespaces. Set to [] to disable everywhere.", "description": "List of namespace IDs where line numbering should be enabled, or `null` to enable for all namespaces. Set to [] to disable everywhere.",
"public": true "public": true
},
"CodeMirrorRTL": {
"value": true,
"description": "Temporary feature flag to control rollout of CodeMirror on RTL wikis."
} }
}, },
"MessagesDirs": { "MessagesDirs": {

View file

@ -28,6 +28,7 @@ class Hooks implements
private UserOptionsLookup $userOptionsLookup; private UserOptionsLookup $userOptionsLookup;
private array $conflictingGadgets; private array $conflictingGadgets;
private bool $useV6; private bool $useV6;
private bool $isSupportedRtlWiki;
/** /**
* @param UserOptionsLookup $userOptionsLookup * @param UserOptionsLookup $userOptionsLookup
@ -40,6 +41,7 @@ class Hooks implements
$this->userOptionsLookup = $userOptionsLookup; $this->userOptionsLookup = $userOptionsLookup;
$this->useV6 = $config->get( 'CodeMirrorV6' ); $this->useV6 = $config->get( 'CodeMirrorV6' );
$this->conflictingGadgets = $config->get( 'CodeMirrorConflictingGadgets' ); $this->conflictingGadgets = $config->get( 'CodeMirrorConflictingGadgets' );
$this->isSupportedRtlWiki = $config->get( 'CodeMirrorRTL' );
} }
/** /**
@ -74,7 +76,7 @@ class Hooks implements
// Disable CodeMirror if we're on an edit page with a conflicting gadget. See T178348. // Disable CodeMirror if we're on an edit page with a conflicting gadget. See T178348.
return !$this->conflictingGadgetsEnabled( $extensionRegistry, $out->getUser() ) && return !$this->conflictingGadgetsEnabled( $extensionRegistry, $out->getUser() ) &&
// CodeMirror 5 on textarea wikitext editors doesn't support RTL (T170001) // CodeMirror 5 on textarea wikitext editors doesn't support RTL (T170001)
( !$isRTL || $this->shouldUseV6( $out ) ) && ( !$isRTL || ( $this->shouldUseV6( $out ) && $this->isSupportedRtlWiki ) ) &&
// Limit to supported content models that use wikitext. // Limit to supported content models that use wikitext.
// See https://www.mediawiki.org/wiki/Content_handlers#Extension_content_handlers // See https://www.mediawiki.org/wiki/Content_handlers#Extension_content_handlers
in_array( $out->getTitle()->getContentModel(), $contentModels ); in_array( $out->getTitle()->getContentModel(), $contentModels );