Use jQuery.i18n from MediaWiki core if available.

This allows other extensions to use this too, without needing a hack to detect
ULS's existence and work around it by not loading their copies of j/i18n code.

Preserves backwards-compatibility for archaïc versions of MediaWiki.

Bug: T95666
Change-Id: I25b33437ceddb60570322b9aa51844acc42a3e32
This commit is contained in:
James D. Forrester
2015-07-07 17:01:25 -07:00
committed by Kunal Mehta
parent dac85690d4
commit 9afbea2914
4 changed files with 61 additions and 61 deletions

View File

@@ -191,35 +191,6 @@ $wgResourceModules['ext.uls.webfonts.mobile'] = array(
),
) + $resourcePaths;
$wgResourceModules['jquery.i18n'] = array(
'scripts' => array(
'lib/jquery.i18n/jquery.i18n.js',
'lib/jquery.i18n/jquery.i18n.messagestore.js',
'lib/jquery.i18n/jquery.i18n.parser.js',
'lib/jquery.i18n/jquery.i18n.emitter.js',
'lib/jquery.i18n/jquery.i18n.emitter.bidi.js',
'lib/jquery.i18n/jquery.i18n.language.js',
),
'dependencies' => 'mediawiki.libs.pluralruleparser',
'languageScripts' => array(
'bs' => 'lib/jquery.i18n/languages/bs.js',
'dsb' => 'lib/jquery.i18n/languages/dsb.js',
'fi' => 'lib/jquery.i18n/languages/fi.js',
'ga' => 'lib/jquery.i18n/languages/ga.js',
'he' => 'lib/jquery.i18n/languages/he.js',
'hsb' => 'lib/jquery.i18n/languages/hsb.js',
'hu' => 'lib/jquery.i18n/languages/hu.js',
'hy' => 'lib/jquery.i18n/languages/hy.js',
'la' => 'lib/jquery.i18n/languages/la.js',
'ml' => 'lib/jquery.i18n/languages/ml.js',
'os' => 'lib/jquery.i18n/languages/os.js',
'ru' => 'lib/jquery.i18n/languages/ru.js',
'sl' => 'lib/jquery.i18n/languages/sl.js',
'uk' => 'lib/jquery.i18n/languages/uk.js',
),
'targets' => array( 'desktop', 'mobile' ),
) + $resourcePaths;
$wgResourceModules['jquery.ime'] = array(
'scripts' => 'lib/jquery.ime/jquery.ime.js',
'styles' => 'lib/jquery.ime/css/jquery.ime.css',

View File

@@ -393,4 +393,62 @@ class UniversalLanguageSelectorHooks {
return true;
}
/**
* Conditionally register jquery.18n (backwards copatbility for those on pre-MediaWiki 1.26).
*
* @param ResourceLoader $resourceLoader
* @return boolean true
*/
public static function onResourceLoaderRegisterModules( ResourceLoader &$resourceLoader ) {
global $wgResourceModules;
if (
(
(
is_callable( array( $resourceLoader, 'isModuleRegistered' ) ) &&
!$resourceLoader->isModuleRegistered( 'jquery.i18n' )
)
||
$resourceLoader->getModule( 'jquery.i18n' ) === null
)
&&
!isset( $wgResourceModules[ 'jquery.i18n' ] )
) {
$resourceLoader->register( array(
'jquery.i18n' => array(
'scripts' => array(
'lib/jquery.i18n/jquery.i18n.js',
'lib/jquery.i18n/jquery.i18n.messagestore.js',
'lib/jquery.i18n/jquery.i18n.parser.js',
'lib/jquery.i18n/jquery.i18n.emitter.js',
'lib/jquery.i18n/jquery.i18n.emitter.bidi.js',
'lib/jquery.i18n/jquery.i18n.language.js',
),
'dependencies' => 'mediawiki.libs.pluralruleparser',
'languageScripts' => array(
'bs' => 'lib/jquery.i18n/languages/bs.js',
'dsb' => 'lib/jquery.i18n/languages/dsb.js',
'fi' => 'lib/jquery.i18n/languages/fi.js',
'ga' => 'lib/jquery.i18n/languages/ga.js',
'he' => 'lib/jquery.i18n/languages/he.js',
'hsb' => 'lib/jquery.i18n/languages/hsb.js',
'hu' => 'lib/jquery.i18n/languages/hu.js',
'hy' => 'lib/jquery.i18n/languages/hy.js',
'la' => 'lib/jquery.i18n/languages/la.js',
'ml' => 'lib/jquery.i18n/languages/ml.js',
'os' => 'lib/jquery.i18n/languages/os.js',
'ru' => 'lib/jquery.i18n/languages/ru.js',
'sl' => 'lib/jquery.i18n/languages/sl.js',
'uk' => 'lib/jquery.i18n/languages/uk.js',
),
'targets' => array( 'desktop', 'mobile' ),
'localBasePath' => __DIR__,
'remoteExtPath' => 'UniversalLanguageSelector',
)
) );
}
return true;
}
}

View File

@@ -212,6 +212,8 @@ $GLOBALS['wgHooks']['BeforePageDisplay'][] = 'UniversalLanguageSelectorHooks::ad
$GLOBALS['wgHooks']['EventLoggingRegisterSchemas'][] =
'UniversalLanguageSelectorHooks::onEventLoggingRegisterSchemas';
$GLOBALS['wgHooks']['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addPersonalBarTrigger';
$GLOBALS['wgHooks']['ResourceLoaderRegisterModules'][] =
'UniversalLanguageSelectorHooks::onResourceLoaderRegisterModules';
$GLOBALS['wgHooks']['ResourceLoaderTestModules'][] =
'UniversalLanguageSelectorHooks::addTestModules';
$GLOBALS['wgHooks']['ResourceLoaderGetConfigVars'][] = 'UniversalLanguageSelectorHooks::addConfig';

View File

@@ -23,6 +23,7 @@
"MakeGlobalVariablesScript": "UniversalLanguageSelectorHooks::addVariables",
"PersonalUrls": "UniversalLanguageSelectorHooks::addPersonalBarTrigger",
"ResourceLoaderGetConfigVars": "UniversalLanguageSelectorHooks::addConfig",
"ResourceLoaderRegisterModules": "UniversalLanguageSelectorHooks::onResourceLoaderRegisterModules",
"ResourceLoaderTestModules": "UniversalLanguageSelectorHooks::addTestModules",
"SkinTemplateOutputPageBeforeExec": "UniversalLanguageSelectorHooks::onSkinTemplateOutputPageBeforeExec",
"UserGetLanguageObject": "UniversalLanguageSelectorHooks::getLanguage"
@@ -284,38 +285,6 @@
"localBasePath": "resources",
"remoteExtPath": "UniversalLanguageSelector/resources"
},
"jquery.i18n": {
"scripts": [
"jquery.i18n/jquery.i18n.js",
"jquery.i18n/jquery.i18n.messagestore.js",
"jquery.i18n/jquery.i18n.parser.js",
"jquery.i18n/jquery.i18n.emitter.js",
"jquery.i18n/jquery.i18n.language.js"
],
"dependencies": "mediawiki.libs.pluralruleparser",
"languageScripts": {
"bs": "jquery.i18n/languages/bs.js",
"dsb": "jquery.i18n/languages/dsb.js",
"fi": "jquery.i18n/languages/fi.js",
"ga": "jquery.i18n/languages/ga.js",
"he": "jquery.i18n/languages/he.js",
"hsb": "jquery.i18n/languages/hsb.js",
"hu": "jquery.i18n/languages/hu.js",
"hy": "jquery.i18n/languages/hy.js",
"la": "jquery.i18n/languages/la.js",
"ml": "jquery.i18n/languages/ml.js",
"os": "jquery.i18n/languages/os.js",
"ru": "jquery.i18n/languages/ru.js",
"sl": "jquery.i18n/languages/sl.js",
"uk": "jquery.i18n/languages/uk.js"
},
"targets": [
"desktop",
"mobile"
],
"localBasePath": "lib",
"remoteExtPath": "UniversalLanguageSelector/lib"
},
"jquery.ime": {
"scripts": "jquery.ime/jquery.ime.js",
"styles": "jquery.ime/css/jquery.ime.css",