File: VisualEditorDesktopArticleTargetInitModule.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (56 lines) | stat: -rw-r--r-- 1,812 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?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', 'edit-local', 'create-local' ] as $msgKey ) {
			// MediaWiki defaults
			$messages[] = "skin-view-$msgKey";
			foreach ( $services->getSkinFactory()->getInstalledSkins() 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;
	}

}