mediawiki-extensions-Visual.../includes/VisualEditorDesktopArticleTargetInitModule.php
Bartosz Dziewoński dc842277c7 Fix tab messages being changed wrong by JavaScript
Following the MediaWiki changes from T301203, we should use
the messages 'skin-view-edit' and 'skin-view-create' instead
of 'edit' and 'create'.

(Also remove redundant definitions in extension.json, we load
all messages listed in 'VisualEditorTabMessages'.)

Bug: T310529
Change-Id: If055fa2a4dc009be869425e6c2262c9b62056179
2022-06-13 20:21:32 +02:00

57 lines
1.7 KiB
PHP

<?php
/**
* ResourceLoader module for the 'ext.visualEditor.desktopArticleTarget.init'
* module. Necessary to incorporate the VisualEditorTabMessages
* configuration setting.
*
* @file
* @ingroup Extensions
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
* @license MIT
*/
namespace MediaWiki\Extension\VisualEditor;
use MediaWiki\MediaWikiServices;
use MediaWiki\ResourceLoader\FileModule;
class VisualEditorDesktopArticleTargetInitModule extends FileModule {
/**
* @inheritDoc
*/
public function getMessages() {
$messages = parent::getMessages();
$services = MediaWikiServices::getInstance();
$veConfig = $services->getConfigFactory()->makeConfig( 'visualeditor' );
$messages = array_merge(
$messages,
array_filter( $veConfig->get( 'VisualEditorTabMessages' ) )
);
// Some skins don't use the default 'edit' and 'create' message keys.
// Check the localisation cache for which skins have a custom message for this.
// We only need this for the current skin, but ResourceLoader's message cache
// does not fragment by skin.
foreach ( [ 'edit', 'create' ] as $msgKey ) {
// MediaWiki defaults
$messages[] = "skin-view-$msgKey";
foreach ( $services->getSkinFactory()->getSkinNames() as $skname => $unused ) {
// Per-skin overrides
// Messages: vector-view-edit, vector-view-create
// Disable database lookups for site-level message overrides as they
// are expensive and not needed here (T221294). We only care whether the
// message key is known to localisation cache at all.
$msg = wfMessage( "$skname-view-$msgKey" )->useDatabase( false )->inContentLanguage();
if ( $msg->exists() ) {
$messages[] = "$skname-view-$msgKey";
}
}
}
return $messages;
}
}