Merge "Use more appropriate word in a Korean translation"
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderStartUpModule.php
index bdf1b21..c704c1a 100644 (file)
@@ -88,6 +88,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
                        'wgSiteName' => $conf->get( 'Sitename' ),
                        'wgDBname' => $conf->get( 'DBname' ),
+                       'wgExtraSignatureNamespaces' => $conf->get( 'ExtraSignatureNamespaces' ),
                        'wgAvailableSkins' => Skin::getSkinNames(),
                        'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
                        // MediaWiki sets cookies to have this prefix by default
@@ -100,6 +101,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
                        'wgResourceLoaderStorageVersion' => $conf->get( 'ResourceLoaderStorageVersion' ),
                        'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ),
+                       'wgResourceLoaderLegacyModules' => self::getLegacyModules(),
                );
 
                Hooks::run( 'ResourceLoaderGetConfigVars', array( &$vars ) );
@@ -187,6 +189,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
                $resourceLoader = $context->getResourceLoader();
                $target = $context->getRequest()->getVal( 'target', 'desktop' );
+               // Bypass target filter if this request is from a unit test context. To prevent misuse in
+               // production, this is only allowed if testing is enabled server-side.
+               $byPassTargetFilter = $this->getConfig()->get( 'EnableJavaScriptTest' ) && $target === 'test';
 
                $out = '';
                $registryData = array();
@@ -195,7 +200,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                foreach ( $resourceLoader->getModuleNames() as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        $moduleTargets = $module->getTargets();
-                       if ( !in_array( $target, $moduleTargets ) ) {
+                       if ( !$byPassTargetFilter && !in_array( $target, $moduleTargets ) ) {
                                continue;
                        }
 
@@ -289,6 +294,20 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                return array( 'jquery', 'mediawiki' );
        }
 
+       public static function getLegacyModules() {
+               global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil;
+
+               $legacyModules = array();
+               if ( $wgIncludeLegacyJavaScript ) {
+                       $legacyModules[] = 'mediawiki.legacy.wikibits';
+               }
+               if ( $wgPreloadJavaScriptMwUtil ) {
+                       $legacyModules[] = 'mediawiki.util';
+               }
+
+               return $legacyModules;
+       }
+
        /**
         * Get the load URL of the startup modules.
         *
@@ -330,7 +349,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                $pairs = array_map( function ( $value ) {
                        $value = FormatJson::encode( $value, ResourceLoader::inDebugMode(), FormatJson::ALL_OK );
                        // Fix indentation
-                       $value = str_replace( "\n", "\n\t", $value  );
+                       $value = str_replace( "\n", "\n\t", $value );
                        return $value;
                }, array(
                        '$VARS.wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ),