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:
committed by
Amir E. Aharoni
parent
bce461b980
commit
8f7382b242
@@ -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 .= "
|
||||
<div class='uls-menu' data-languages=\"" . $languageData . "\">
|
||||
<div class='uls-menu'>
|
||||
<div class='row'>
|
||||
<span class='icon-close'></span>
|
||||
</div>
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
onSelect: function( language ) {
|
||||
changeLanguage( language );
|
||||
},
|
||||
languages: mw.config.get( 'wgULSLanguages' ),
|
||||
searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch"
|
||||
} );
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user