Introduce languages options to ULS
Default value of this option will be $.uls.data.autonyms(). It can be set to limit language selection to a set of languages. Updated examples, used a config variable wgULSLanguages to set this. Change-Id: Ia322cbdcdb14f08619d2e4df5b23e2702841d147
This commit is contained in:
1 parent
bce461b980
commit
8f7382b242
7 files changed
+35
-9
No files matched your search
@@ -94,6 +94,16 @@ class UniversalLanguageSelectorHooks {
|
|||||||
$code = RequestContext::sanitizeLangCode( $code );
|
$code = RequestContext::sanitizeLangCode( $code );
|
||||||
return true;
|
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.
|
* Add the template for the ULS to the body.
|
||||||
@@ -102,11 +112,8 @@ class UniversalLanguageSelectorHooks {
|
|||||||
* TODO: hardcoded English
|
* TODO: hardcoded English
|
||||||
*/
|
*/
|
||||||
public static function addTemplate( &$data, $skin ) {
|
public static function addTemplate( &$data, $skin ) {
|
||||||
global $wgContLang;
|
|
||||||
$languages = Language::fetchLanguageNames( $wgContLang->getCode() );
|
|
||||||
$languageData = htmlspecialchars( FormatJSON::encode( $languages ) );
|
|
||||||
$data .= "
|
$data .= "
|
||||||
<div class='uls-menu' data-languages=\"" . $languageData . "\">
|
<div class='uls-menu'>
|
||||||
<div class='row'>
|
<div class='row'>
|
||||||
<span class='icon-close'></span>
|
<span class='icon-close'></span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ $wgHooks['BeforePageDisplay'][] = 'UniversalLanguageSelectorHooks::addModules';
|
|||||||
$wgHooks['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addTrigger';
|
$wgHooks['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addTrigger';
|
||||||
$wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate';
|
$wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate';
|
||||||
$wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules';
|
$wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules';
|
||||||
|
$wgHooks['ResourceLoaderGetConfigVars'][] = 'UniversalLanguageSelectorHooks::addConfig';
|
||||||
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
|
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
|
||||||
$wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage';
|
$wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage';
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div data-languages="{"aa":"Afar","ab":"Abkhazian","ace":"Achinese","af":"Afrikaans","ak":"Akan","aln":"Gheg Albanian","als":"Alemannisch","am":"Amharic","an":"Aragonese","ang":"Old English","anp":"Angika","ar":"Arabic","arc":"Aramaic","arn":"Araucanian","ary":"Moroccan Spoken Arabic","arz":"Egyptian Spoken Arabic","as":"Assamese","ast":"Asturian","av":"Avaric","avk":"Kotava","ay":"Aymara","az":"Azerbaijani","ba":"Bashkir","bar":"Bavarian","bat-smg":"\u017eemait\u0117\u0161ka","bcc":"Southern Balochi","bcl":"Bikol Central","be":"Belarusian","be-tarask":"Belarusian (Tara\u0161kievica orthography)","be-x-old":"\u202a\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)\u202c","bg":"Bulgarian","bh":"Bihari","bho":"Bhojpuri","bi":"Bislama","bjn":"Banjar","bm":"Bambara","bn":"Bengali","bo":"Tibetan","bpy":"Bishnupria Manipuri","bqi":"Bakhtiari","br":"Breton","brh":"Brahui","bs":"Bosnian","bug":"Buginese","bxr":"\u0431\u0443\u0440\u044f\u0430\u0434","ca":"Catalan","cbk-zam":"Chavacano de Zamboanga","cdo":"Min Dong Chinese","ce":"Chechen","ceb":"Cebuano","ch":"Chamorro","cho":"Choctaw","chr":"Cherokee","chy":"Cheyenne","ckb":"Sorani Kurdish","co":"Corsican","cps":"Capiznon","cr":"Cree","crh":"Crimean Turkish","crh-latn":"Crimean Turkish (Latin script)","crh-cyrl":"Crimean Turkish (Cyrillic script)","cs":"Czech","csb":"Kashubian","cu":"Church Slavic","cv":"Chuvash","cy":"Welsh","da":"Danish","de":"German","de-at":"Austrian German","de-ch":"Swiss High German","de-formal":"German (formal address)","diq":"Zazaki","dsb":"Lower Sorbian","dtp":"Central Dusun","dv":"Divehi","dz":"Dzongkha","ee":"Ewe","egl":"Emili\u00e0n","el":"Greek","eml":"Emiliano-Romagnolo","en":"English","en-ca":"Canadian English","en-gb":"British English","eo":"Esperanto","es":"Spanish","et":"Estonian","eu":"Basque","ext":"Extremaduran","fa":"Persian","ff":"Fulah","fi":"Finnish","fit":"me\u00e4nkieli","fiu-vro":"V\u00f5ro","fj":"Fijian","fo":"Faroese","fr":"French","frc":"Cajun French","frp":"Franco-Proven\u00e7al","frr":"Northern Frisian","fur":"Friulian","fy":"Western Frisian","ga":"Irish","gag":"Gagauz","gan":"Gan","gan-hans":"Simplified Gan script","gan-hant":"Traditional Gan script","gd":"Scottish Gaelic","gl":"Galician","glk":"Gilaki","gn":"Guarani","got":"Gothic","grc":"Ancient Greek","gsw":"Swiss German","gu":"Gujarati","gv":"Manx","ha":"Hausa","hak":"Hakka","haw":"Hawaiian","he":"Hebrew","hi":"Hindi","hif":"Fiji Hindi","hif-latn":"Fiji Hindi (Latin script)","hil&quoLine truncated
|
<div class="uls-menu">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="icon-close"></span>
|
<span class="icon-close"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
this.$element = $( element );
|
this.$element = $( element );
|
||||||
this.options = $.extend( {}, $.fn.uls.defaults, options );
|
this.options = $.extend( {}, $.fn.uls.defaults, options );
|
||||||
this.$menu = $( this.options.menu );
|
this.$menu = $( this.options.menu );
|
||||||
this.languages = this.$menu.data( 'languages' );
|
this.languages = this.options.languages;
|
||||||
for ( var code in this.languages ) {
|
for ( var code in this.languages ) {
|
||||||
if ( $.uls.data.languages[code] === undefined ) {
|
if ( $.uls.data.languages[code] === undefined ) {
|
||||||
window.console && console.log && console.log( "ULS: Unknown language " + code + "." );
|
window.console && console.log && console.log( "ULS: Unknown language " + code + "." );
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
that.$menu.on('keypress', $.proxy(this.keypress, this) )
|
that.$menu.on('keypress', $.proxy(this.keypress, this) )
|
||||||
.on('keyup', $.proxy(this.keyup, this) );
|
.on('keyup', $.proxy(this.keyup, this) );
|
||||||
if ( $.browser.webkit || $.browser.msie ) {
|
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( {
|
lcd = that.$resultsView.lcd( {
|
||||||
@@ -208,7 +208,8 @@
|
|||||||
$.fn.uls.defaults = {
|
$.fn.uls.defaults = {
|
||||||
menu: '.uls-menu',
|
menu: '.uls-menu',
|
||||||
onSelect: null, // Callback function to be called when a language is selected
|
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;
|
$.fn.uls.Constructor = ULS;
|
||||||
|
|||||||
@@ -47,6 +47,20 @@
|
|||||||
return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language;
|
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.
|
* Returns an array of all region codes.
|
||||||
* @return array
|
* @return array
|
||||||
|
|||||||
@@ -66,6 +66,7 @@
|
|||||||
onSelect: function( language ) {
|
onSelect: function( language ) {
|
||||||
changeLanguage( language );
|
changeLanguage( language );
|
||||||
},
|
},
|
||||||
|
languages: mw.config.get( 'wgULSLanguages' ),
|
||||||
searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch"
|
searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch"
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,9 @@ test( "-- Initial check", function() {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
test( "-- $.uls.data testing", 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'
|
// This test assumes that we don't want any scripts to be in the 'Other'
|
||||||
// group. Actually, this may become wrong some day.
|
// group. Actually, this may become wrong some day.
|
||||||
|
|||||||
Reference in new issue
Block a user