diff --git a/Resources.php b/Resources.php index eb5ce6a7..9f092af3 100644 --- a/Resources.php +++ b/Resources.php @@ -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', diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 6de74ed9..15f510b2 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -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; + } } diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index edafa598..fa5f73a5 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -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'; diff --git a/extension.json b/extension.json index cf8ab08a..b0178879 100644 --- a/extension.json +++ b/extension.json @@ -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",