diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index ce7e52ee..cfdf7fdd 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -94,6 +94,16 @@ class UniversalLanguageSelectorHooks { $code = RequestContext::sanitizeLangCode( $code ); return true; } + /** + * Hook: ResourceLoaderGetConfigVars + * @param $vars Array + * @return bool + */ + public static function addConfig( &$vars ) { + global $wgContLang; + $vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode() ); + return true; + } /** * Add the template for the ULS to the body. @@ -102,11 +112,8 @@ class UniversalLanguageSelectorHooks { * TODO: hardcoded English */ public static function addTemplate( &$data, $skin ) { - global $wgContLang; - $languages = Language::fetchLanguageNames( $wgContLang->getCode() ); - $languageData = htmlspecialchars( FormatJSON::encode( $languages ) ); $data .= " -
+
diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index 0f8207a1..ac85c794 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -59,6 +59,7 @@ $wgHooks['BeforePageDisplay'][] = 'UniversalLanguageSelectorHooks::addModules'; $wgHooks['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addTrigger'; $wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate'; $wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules'; +$wgHooks['ResourceLoaderGetConfigVars'][] = 'UniversalLanguageSelectorHooks::addConfig'; $wgAPIModules['languagesearch'] = 'ApiLanguageSearch'; $wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage'; diff --git a/lib/jquery.uls/examples/index.html b/lib/jquery.uls/examples/index.html index 17748b53..774e856d 100644 --- a/lib/jquery.uls/examples/index.html +++ b/lib/jquery.uls/examples/index.html @@ -48,7 +48,7 @@

-
+
diff --git a/lib/jquery.uls/src/jquery.uls.core.js b/lib/jquery.uls/src/jquery.uls.core.js index d536799b..2299b0b4 100644 --- a/lib/jquery.uls/src/jquery.uls.core.js +++ b/lib/jquery.uls/src/jquery.uls.core.js @@ -24,7 +24,7 @@ this.$element = $( element ); this.options = $.extend( {}, $.fn.uls.defaults, options ); this.$menu = $( this.options.menu ); - this.languages = this.$menu.data( 'languages' ); + this.languages = this.options.languages; for ( var code in this.languages ) { if ( $.uls.data.languages[code] === undefined ) { window.console && console.log && console.log( "ULS: Unknown language " + code + "." ); @@ -104,7 +104,7 @@ that.$menu.on('keypress', $.proxy(this.keypress, this) ) .on('keyup', $.proxy(this.keyup, this) ); if ( $.browser.webkit || $.browser.msie ) { - this.$menu.on( 'keydown', $.proxy( this.keypress, this ) ) + this.$menu.on( 'keydown', $.proxy( this.keypress, this ) ); } lcd = that.$resultsView.lcd( { @@ -208,7 +208,8 @@ $.fn.uls.defaults = { menu: '.uls-menu', onSelect: null, // Callback function to be called when a language is selected - searchAPI: null // Language search API + searchAPI: null, // Language search API + languages: $.uls.data.autonyms() // Languages to be used for ULS, default is all languages }; $.fn.uls.Constructor = ULS; diff --git a/lib/jquery.uls/src/jquery.uls.data.utils.js b/lib/jquery.uls/src/jquery.uls.data.utils.js index 8a4c3199..3466934b 100644 --- a/lib/jquery.uls/src/jquery.uls.data.utils.js +++ b/lib/jquery.uls/src/jquery.uls.data.utils.js @@ -47,6 +47,20 @@ return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language; }; + /** + * Returns all language codes and corresponding autonyms + * @return array + */ + $.uls.data.autonyms = function() { + var autonymsByCode = {}; + + for ( var language in $.uls.data.languages ) { + autonymsByCode[language] = $.uls.data.autonym( language ); + } + + return autonymsByCode; + }; + /** * Returns an array of all region codes. * @return array diff --git a/resources/js/ext.uls.init.js b/resources/js/ext.uls.init.js index 8f9751fa..550c85a8 100644 --- a/resources/js/ext.uls.init.js +++ b/resources/js/ext.uls.init.js @@ -66,6 +66,7 @@ onSelect: function( language ) { changeLanguage( language ); }, + languages: mw.config.get( 'wgULSLanguages' ), searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch" } ); diff --git a/tests/qunit/ext.uls.tests.js b/tests/qunit/ext.uls.tests.js index 064607ed..b7cd612f 100644 --- a/tests/qunit/ext.uls.tests.js +++ b/tests/qunit/ext.uls.tests.js @@ -61,7 +61,9 @@ test( "-- Initial check", function() { } ); test( "-- $.uls.data testing", function() { - expect( 20 ); + expect( 21 ); + + strictEqual( $.uls.data.autonyms()['he'], 'עברית', 'Correct autonym is returned for Hebrew using autonyms().' ); // This test assumes that we don't want any scripts to be in the 'Other' // group. Actually, this may become wrong some day.