Replace wgVisualEditorNamespaces with an associative array

Bug: T104898
Change-Id: Ibf4812caeaa9290959bc757fc49a151854bff337
This commit is contained in:
Alex Monk 2015-07-09 22:23:05 +01:00 committed by Jforrester
parent 31e45cf530
commit 647a5597bb
4 changed files with 23 additions and 19 deletions

View file

@ -278,8 +278,11 @@ class ApiVisualEditor extends ApiBase {
$isSafeAction = in_array( $params['paction'], self::$SAFE_ACTIONS, true );
if ( !$isSafeAction &&
!in_array( $title->getNamespace(), $this->veConfig->get( 'VisualEditorNamespaces' ) ) ) {
$availableNamespaces = $this->veConfig->get( 'VisualEditorAvailableNamespaces' );
if ( !$isSafeAction && (
!isset( $availableNamespaces[$title->getNamespace()] ) ||
!$availableNamespaces[$title->getNamespace()]
) ) {
$this->dieUsage( "VisualEditor is not enabled in namespace " .
$title->getNamespace(), 'novenamespace' );

View file

@ -121,7 +121,9 @@ class ApiVisualEditorEdit extends ApiVisualEditor {
if ( !$page ) {
$this->dieUsageMsg( 'invalidtitle', $params['page'] );
}
if ( !in_array( $page->getNamespace(), $this->veConfig->get( 'VisualEditorNamespaces' ) ) ) {
$availableNamespaces = $this->veConfig->get( 'VisualEditorAvailableNamespaces' );
if ( !isset( $availableNamespaces[$page->getNamespace()] ) ||
!$availableNamespaces[$page->getNamespace()] ) {
$this->dieUsage( "VisualEditor is not enabled in namespace " .
$page->getNamespace(), 'novenamespace' );
}

View file

@ -21,22 +21,18 @@ class VisualEditorHooks {
}
/**
* Initialise the 'VisualEditorNamespaces' setting, and add content namespaces
* and NS_USER to it. This will run after LocalSettings.php is processed.
* Initialise the 'VisualEditorAvailableNamespaces' setting, and add content
* namespaces to it. This will run after LocalSettings.php is processed.
*/
public static function onRegistration() {
global $wgVisualEditorNamespaces, $wgContentNamespaces;
global $wgVisualEditorAvailableNamespaces, $wgContentNamespaces;
if ( !isset( $wgVisualEditorNamespaces ) ) {
$wgVisualEditorNamespaces = array();
foreach ( $wgContentNamespaces as $contentNamespace ) {
if ( !isset( $wgVisualEditorAvailableNamespaces[$contentNamespace] ) ) {
$wgVisualEditorAvailableNamespaces[$contentNamespace] = true;
}
}
$wgVisualEditorNamespaces = array_merge(
$wgVisualEditorNamespaces,
$wgContentNamespaces,
array( NS_USER )
);
}
public static function VisualEditorApiFactory( $main, $name ) {
@ -288,7 +284,8 @@ class VisualEditorHooks {
if ( !class_exists( 'BetaFeatures' ) ) {
$namespaces = ConfigFactory::getDefaultInstance()
->makeConfig( 'visualeditor' )
->get( 'VisualEditorNamespaces' );
->get( 'VisualEditorAvailableNamespaces' );
$onNamespaces = array_keys( array_filter( $namespaces ) );
$preferences['visualeditor-enable'] = array(
'type' => 'toggle',
@ -296,9 +293,9 @@ class VisualEditorHooks {
'visualeditor-preference-enable',
$wgLang->commaList( array_map(
array( 'self', 'convertNs' ),
$namespaces
$onNamespaces
) ),
count( $namespaces )
count( $onNamespaces )
),
'section' => 'editing/editor'
);
@ -375,11 +372,13 @@ class VisualEditorHooks {
$defaultUserOptions = $coreConfig->get( 'DefaultUserOptions' );
$thumbLimits = $coreConfig->get( 'ThumbLimits' );
$veConfig = ConfigFactory::getDefaultInstance()->makeConfig( 'visualeditor' );
$availableNamespaces = $veConfig->get( 'VisualEditorAvailableNamespaces' );
$onNamespaces = array_keys( array_filter( $availableNamespaces ) );
$vars['wgVisualEditorConfig'] = array(
'disableForAnons' => $veConfig->get( 'VisualEditorDisableForAnons' ),
'preferenceModules' => $veConfig->get( 'VisualEditorPreferenceModules' ),
'namespaces' => $veConfig->get( 'VisualEditorNamespaces' ),
'namespaces' => $onNamespaces,
'pluginModules' => array_merge(
ExtensionRegistry::getInstance()->getAttribute( 'VisualEditorPluginModules' ),
$veConfig->get( 'VisualEditorPluginModules' ) // @todo deprecate the global setting

View file

@ -97,7 +97,7 @@
"VisualEditorNewAccountEnableProportion": false,
"VisualEditorEnableTocWidget": false,
"VisualEditorAutoAccountEnable": false,
"VisualEditorNamespaces": [],
"VisualEditorAvailableNamespaces": { "2": true },
"VisualEditorParsoidTimeout": 100
},
"APIModules": {