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 );
|
$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';
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -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