Update from GitHub

Utils refactoring
CSS lint
bug 39932: Clicking twice in a region moves the focus to the Worldwide region

Change-Id: I7853700a077db8de7dbe3c57fd71b829784f2fe6
This commit is contained in:
Amir E. Aharoni
2012-10-08 11:19:40 +02:00
parent a0aae6d1b9
commit 22c20f9dbb
2 changed files with 178 additions and 71 deletions

View File

@@ -180,7 +180,7 @@ input:focus#languagefilter {
float: right; float: right;
} }
span#languagefilter-clear { #languagefilter-clear {
/* @embed */ /* @embed */
background: url('../images/clear.png') no-repeat scroll left center background: url('../images/clear.png') no-repeat scroll left center
transparent; transparent;
@@ -553,7 +553,7 @@ img {
} }
.uls-language-block ul { .uls-language-block ul {
margin: 0px 0px 1.6em; margin: 0 0 1.6em;
} }
.uls-language-list ul li { .uls-language-list ul li {

View File

@@ -1,4 +1,4 @@
/*! jquery.uls - v0.1.0 - 2012-10-07 /*! jquery.uls - v0.1.0 - 2012-10-08
* https://github.com/wikimedia/jquery.uls * https://github.com/wikimedia/jquery.uls
* Copyright (c) 2012 Santhosh Thottingal; Licensed GPL, MIT */ * Copyright (c) 2012 Santhosh Thottingal; Licensed GPL, MIT */
@@ -30,52 +30,81 @@
( function ( $ ) { ( function ( $ ) {
"use strict"; "use strict";
/**
* Log deprecated functions
*/
function deprecated( oldFunc, newFunc ) {
if ( window.console && window.console.log ) {
window.console.log( oldFunc + " is deprecated. Please use " + newFunc );
}
}
/** /**
* Returns the script of the language. * Returns the script of the language.
* @param string language code * @param string language code
* @return string * @return string
*/ */
$.uls.data.script = function( language ) { $.uls.data.getScript = function( language ) {
return $.uls.data.languages[language][0]; return $.uls.data.languages[language][0];
}; };
$.uls.data.script = function( language ) { // deprecated
deprecated( "script", "getScript" );
return $.uls.data.getScript( language );
};
/** /**
* Returns the regions in which a language is spoken. * Returns the regions in which a language is spoken.
* @param string language code * @param string language code
* @return array of strings * @return array|string 'UNKNOWN'
*/ */
$.uls.data.regions = function( language ) { $.uls.data.getRegions = function( language ) {
return ( $.uls.data.languages[language] && $.uls.data.languages[language][1] ) || 'UNKNOWN'; return ( $.uls.data.languages[language] && $.uls.data.languages[language][1] ) || 'UNKNOWN';
}; };
$.uls.data.regions = function( language ) { // deprecated
deprecated( "regions", "getRegions" );
return $.uls.data.getRegions( language );
};
/** /**
* Returns the autonym of the language. * Returns the autonym of the language.
* @param string language code * @param string language code
* @return string * @return string
*/ */
$.uls.data.autonym = function( language ) { $.uls.data.getAutonym = function( language ) {
return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language; return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language;
}; };
$.uls.data.autonym = function( language ) { // deprecated
deprecated( "autonym", "getAutonym" );
return $.uls.data.getAutonym( language );
};
/** /**
* Returns all language codes and corresponding autonyms * Returns all language codes and corresponding autonyms
* @return array * @return array
*/ */
$.uls.data.autonyms = function() { $.uls.data.getAutonyms = function() {
var autonymsByCode = {}; var autonymsByCode = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
autonymsByCode[language] = $.uls.data.autonym( language ); autonymsByCode[language] = $.uls.data.getAutonym( language );
} }
return autonymsByCode; return autonymsByCode;
}; };
$.uls.data.autonyms = function() { // deprecated
deprecated( "autonyms", "getAutonyms" );
return $.uls.data.getAutonyms();
};
/** /**
* Returns an array of all region codes. * Returns an array of all region codes.
* @return array * @return array
*/ */
$.uls.data.allRegions = function() { $.uls.data.getAllRegions = function() {
var allRegions = []; var allRegions = [];
for( var region in $.uls.data.regiongroups ) { for( var region in $.uls.data.regiongroups ) {
@@ -85,26 +114,36 @@
return allRegions; return allRegions;
}; };
$.uls.data.allRegions = function() { // deprecated
deprecated( "allRegions", "getAllRegions" );
return $.uls.data.getAllRegions();
};
/** /**
* Returns all languages written in script. * Returns all languages written in script.
* @param script string * @param script string
* @return array of strings (languages codes) * @return array of strings (languages codes)
*/ */
$.uls.data.languagesInScript = function( script ) { $.uls.data.getLanguagesInScript = function( script ) {
return $.uls.data.languagesInScripts( [ script ] ); return $.uls.data.languagesInScripts( [ script ] );
}; };
$.uls.data.languagesInScript = function( script ) { // deprecated
deprecated( "languagesInScript", "getLanguagesInScript" );
return $.uls.data.getLanguagesInScript( script );
};
/** /**
* Returns all languages written in the given scripts. * Returns all languages written in the given scripts.
* @param scripts array of strings * @param scripts array of strings
* @return array of strings (languages codes) * @return array of strings (languages codes)
*/ */
$.uls.data.languagesInScripts = function( scripts ) { $.uls.data.getLanguagesInScripts = function( scripts ) {
var languagesInScripts = []; var languagesInScripts = [];
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
for ( var i = 0; i < scripts.length; i++ ) { for ( var i = 0; i < scripts.length; i++ ) {
if ( scripts[i] === $.uls.data.script(language) ) { if ( scripts[i] === $.uls.data.getScript( language ) ) {
languagesInScripts.push( language ); languagesInScripts.push( language );
break; break;
} }
@@ -114,13 +153,23 @@
return languagesInScripts; return languagesInScripts;
}; };
$.uls.data.languagesInScripts = function( scripts ) { // deprecated
deprecated( "languagesInScripts", "getLanguagesInScripts" );
return $.uls.data.getLanguagesInScripts( scripts );
};
/** /**
* Returns all languages in a given region. * Returns all languages in a given region.
* @param region string * @param region string
* @return array of strings (languages codes) * @return array of strings (languages codes)
*/ */
$.uls.data.languagesInRegion = function( region ) { $.uls.data.getLanguagesInRegion = function( region ) {
return $.uls.data.languagesInRegions( [ region ] ); return $.uls.data.getLanguagesInRegions( [ region ] );
};
$.uls.data.languagesInRegion = function( region ) { // deprecated
deprecated( "languagesInRegion", "getLanguagesInRegion" );
return $.uls.data.getLanguagesInRegion( region );
}; };
/** /**
@@ -128,12 +177,12 @@
* @param region array of strings. * @param region array of strings.
* @return array of strings (languages codes) * @return array of strings (languages codes)
*/ */
$.uls.data.languagesInRegions = function( regions ) { $.uls.data.getLanguagesInRegions = function( regions ) {
var languagesInRegions = []; var languagesInRegions = [];
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
for ( var i = 0; i < regions.length; i++ ) { for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.regions( language ) ) !== -1 ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
languagesInRegions.push( language ); languagesInRegions.push( language );
break; break;
} }
@@ -143,13 +192,23 @@
return languagesInRegions; return languagesInRegions;
}; };
$.uls.data.languagesInRegions = function( regions ) { // deprecated
deprecated( "languagesInRegions", "getLanguagesInRegions" );
return $.uls.data.getLanguagesInRegions( regions );
};
/** /**
* Returns all languages in a region group. * Returns all languages in a region group.
* @param groupNum number. * @param groupNum number.
* @return array of strings (languages codes) * @return array of strings (languages codes)
*/ */
$.uls.data.languagesInRegionGroup = function( groupNum ) { $.uls.data.getLanguagesInRegionGroup = function( groupNum ) {
return $.uls.data.languagesInRegions( $.uls.data.regionsInGroup( groupNum ) ); return $.uls.data.getLanguagesInRegions( $.uls.data.getRegionsInGroup( groupNum ) );
};
$.uls.data.languagesInRegionGroup = function( groupNum ) { // deprecated
deprecated( "languagesInRegionGroup", "getLanguagesInRegionGroup" );
return $.uls.data.getLanguagesInRegionGroup( groupNum );
}; };
/** /**
@@ -158,12 +217,12 @@
* @param string region code * @param string region code
* @return associative array * @return associative array
*/ */
$.uls.data.languagesByScriptInRegion = function( region ) { $.uls.data.getLanguagesByScriptInRegion = function( region ) {
var languagesByScriptInRegion = {}; var languagesByScriptInRegion = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.inArray( region, $.uls.data.regions( language ) ) !== -1 ) { if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) {
var script = $.uls.data.script( language ); var script = $.uls.data.getScript( language );
if ( languagesByScriptInRegion[script] === undefined ) { if ( languagesByScriptInRegion[script] === undefined ) {
languagesByScriptInRegion[script] = []; languagesByScriptInRegion[script] = [];
} }
@@ -174,14 +233,24 @@
return languagesByScriptInRegion; return languagesByScriptInRegion;
}; };
$.uls.data.languagesByScriptInRegion = function( region ) { // deprecated
deprecated( "languagesByScriptInRegion", "getLanguagesByScriptInRegion" );
return $.uls.data.getLanguagesByScriptInRegion( region );
};
/** /**
* Returns an associative array of languages in a region, * Returns an associative array of languages in a region,
* grouped by script group. * grouped by script group.
* @param string region code * @param string region code
* @return associative array * @return associative array
*/ */
$.uls.data.languagesByScriptGroupInRegion = function( region ) { $.uls.data.getLanguagesByScriptGroupInRegion = function( region ) {
return $.uls.data.languagesByScriptGroupInRegions( [ region ] ); return $.uls.data.getLanguagesByScriptGroupInRegions( [ region ] );
};
$.uls.data.languagesByScriptGroupInRegion = function( region ) { // deprecated
deprecated( "languagesByScriptGroupInRegion", "getLanguagesByScriptGroupInRegion" );
return $.uls.data.getLanguagesByScriptGroupInRegion( region );
}; };
/** /**
@@ -189,8 +258,13 @@
* grouped by script group. * grouped by script group.
* @return associative array * @return associative array
*/ */
$.uls.data.allLanguagesByScriptGroup = function() { $.uls.data.getAllLanguagesByScriptGroup = function() {
return $.uls.data.languagesByScriptGroupInRegions( $.uls.data.allRegions() ); return $.uls.data.getLanguagesByScriptGroupInRegions( $.uls.data.getAllRegions() );
};
$.uls.data.allLanguagesByScriptGroup = function() { // deprecated
deprecated( "allLanguagesByScriptGroup", "getAllLanguagesByScriptGroup" );
return $.uls.data.getAllLanguagesByScriptGroup();
}; };
/** /**
@@ -198,7 +272,7 @@
* @param languages Array of language codes * @param languages Array of language codes
* @return {Object} Array of languages indexed by script codes * @return {Object} Array of languages indexed by script codes
*/ */
$.uls.data.languagesByScriptGroup = function( languages ) { $.uls.data.getLanguagesByScriptGroup = function( languages ) {
var languagesByScriptGroup = {}, var languagesByScriptGroup = {},
scriptGroup, scriptGroup,
language, language,
@@ -206,7 +280,7 @@
for ( scriptGroup in $.uls.data.scriptgroups ) { for ( scriptGroup in $.uls.data.scriptgroups ) {
for ( language in languages ) { for ( language in languages ) {
langScriptGroup = $.uls.data.scriptGroupOfLanguage( language ); langScriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
if( langScriptGroup !== scriptGroup ) { if( langScriptGroup !== scriptGroup ) {
continue; continue;
} }
@@ -220,19 +294,24 @@
return languagesByScriptGroup; return languagesByScriptGroup;
}; };
$.uls.data.languagesByScriptGroup = function( languages ) { // deprecated
deprecated( "languagesByScriptGroup", "getLanguagesByScriptGroup" );
return $.uls.data.getLanguagesByScriptGroup( languages );
};
/** /**
* Returns an associative array of languages in several regions, * Returns an associative array of languages in several regions,
* grouped by script group. * grouped by script group.
* @param array of strings - region codes * @param array of strings - region codes
* @return associative array * @return associative array
*/ */
$.uls.data.languagesByScriptGroupInRegions = function( regions ) { $.uls.data.getLanguagesByScriptGroupInRegions = function( regions ) {
var languagesByScriptGroupInRegions = {}; var languagesByScriptGroupInRegions = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
for ( var i = 0; i < regions.length; i++ ) { for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.regions( language ) ) !== -1 ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
var scriptGroup = $.uls.data.scriptGroupOfLanguage( language ); var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) { if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) {
languagesByScriptGroupInRegions[scriptGroup] = []; languagesByScriptGroupInRegions[scriptGroup] = [];
} }
@@ -245,12 +324,17 @@
return languagesByScriptGroupInRegions; return languagesByScriptGroupInRegions;
}; };
$.uls.data.languagesByScriptGroupInRegions = function( regions ) { // deprecated
deprecated( "languagesByScriptGroupInRegions", "getLanguagesByScriptGroupInRegions" );
return $.uls.data.getLanguagesByScriptGroupInRegions( regions );
};
/** /**
* Returns an array of languages grouped by region group, * Returns an array of languages grouped by region group,
* region, script group and script. * region, script group and script.
* @return associative array * @return associative array
*/ */
$.uls.data.allLanguagesByRegionAndScript = function() { $.uls.data.getAllLanguagesByRegionAndScript = function() {
var allLanguagesByRegionAndScript = {}, var allLanguagesByRegionAndScript = {},
region, region,
regionGroup; regionGroup;
@@ -264,9 +348,9 @@
} }
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
var script = $.uls.data.script( language ); var script = $.uls.data.getScript( language );
var scriptGroup = $.uls.data.groupOfScript( script ); var scriptGroup = $.uls.data.getGroupOfScript( script );
var regions = $.uls.data.regions( language ); var regions = $.uls.data.getRegions( language );
for ( var regionNum = 0; regionNum < regions.length; regionNum++ ) { for ( var regionNum = 0; regionNum < regions.length; regionNum++ ) {
region = regions[regionNum]; region = regions[regionNum];
@@ -287,12 +371,17 @@
return allLanguagesByRegionAndScript; return allLanguagesByRegionAndScript;
}; };
$.uls.data.allLanguagesByRegionAndScript = function() { // deprecated
deprecated( "allLanguagesByRegionAndScript", "getAllLanguagesByRegionAndScript" );
return $.uls.data.getAllLanguagesByRegionAndScript();
};
/** /**
* Returns all regions in a region group. * Returns all regions in a region group.
* @param number groupNum * @param number groupNum
* @return array of strings * @return array of strings
*/ */
$.uls.data.regionsInGroup = function( groupNum ) { $.uls.data.getRegionsInGroup = function( groupNum ) {
var regionsInGroup = []; var regionsInGroup = [];
for ( var region in $.uls.data.regiongroups ) { for ( var region in $.uls.data.regiongroups ) {
@@ -304,13 +393,18 @@
return regionsInGroup; return regionsInGroup;
}; };
$.uls.data.regionsInGroup = function( groupNum ) { // deprecated
deprecated( "regionsInGroup", "getRegionsInGroup" );
return $.uls.data.getRegionsInGroup( groupNum );
};
/** /**
* Returns the script group of a script or 'Other' if it doesn't * Returns the script group of a script or 'Other' if it doesn't
* belong to any group. * belong to any group.
* @param string script code * @param string script code
* @return string script group name * @return string script group name
*/ */
$.uls.data.groupOfScript = function( script ) { $.uls.data.getGroupOfScript = function( script ) {
for ( var group in $.uls.data.scriptgroups ) { for ( var group in $.uls.data.scriptgroups ) {
if ( $.inArray( script, $.uls.data.scriptgroups[group] ) !== -1 ) { if ( $.inArray( script, $.uls.data.scriptgroups[group] ) !== -1 ) {
return group; return group;
@@ -320,13 +414,23 @@
return 'Other'; return 'Other';
}; };
$.uls.data.groupOfScript = function( script ) { // deprecated
deprecated( "groupOfScript", "getGroupOfScript" );
return $.uls.data.getGroupOfScript( script );
};
/** /**
* Returns the script group of a language. * Returns the script group of a language.
* @param string language code * @param string language code
* @return string script group name * @return string script group name
*/ */
$.uls.data.scriptGroupOfLanguage = function( language ) { $.uls.data.getScriptGroupOfLanguage = function( language ) {
return $.uls.data.groupOfScript( $.uls.data.script( language ) ); return $.uls.data.getGroupOfScript( $.uls.data.getScript( language ) );
};
$.uls.data.scriptGroupOfLanguage = function( language ) { // deprecated
deprecated( "scriptGroupOfLanguage", "getScriptGroupOfLanguage" );
return $.uls.data.getScriptGroupOfLanguage( language );
}; };
/** /**
@@ -335,8 +439,8 @@
* @param two language codes * @param two language codes
*/ */
$.uls.data.sortByAutonym = function( a, b ) { $.uls.data.sortByAutonym = function( a, b ) {
var autonymA = $.uls.data.autonym( a ) || a, var autonymA = $.uls.data.getAutonym( a ) || a,
autonymB = $.uls.data.autonym( b ) || b; autonymB = $.uls.data.getAutonym( b ) || b;
return ( autonymA.toLowerCase() < autonymB.toLowerCase() ) ? -1 : 1; return ( autonymA.toLowerCase() < autonymB.toLowerCase() ) ? -1 : 1;
}; };
@@ -346,7 +450,7 @@
* @return boolean * @return boolean
*/ */
$.uls.data.isRtl = function( language ) { $.uls.data.isRtl = function( language ) {
return $.inArray( $.uls.data.script( language ), $.uls.data.rtlscripts ) !== -1; return $.inArray( $.uls.data.getScript( language ), $.uls.data.rtlscripts ) !== -1;
}; };
/** /**
@@ -363,9 +467,14 @@
* @param string Territory code * @param string Territory code
* @return list of language codes * @return list of language codes
*/ */
$.uls.data.languagesInTerritory = function( territory ) { $.uls.data.getLanguagesInTerritory = function( territory ) {
return $.uls.data.territories[territory]; return $.uls.data.territories[territory];
}; };
$.uls.data.languagesInTerritory = function( territory ) { // deprecated
deprecated( "languagesInTerritory", "getLanguagesInTerritory" );
return $.uls.data.getLanguagesInTerritory( territory );
};
} ( jQuery ) ); } ( jQuery ) );
/** /**
@@ -444,13 +553,13 @@
addToRegion: function( langCode, region ) { addToRegion: function( langCode, region ) {
var that = this; var that = this;
var language = that.options.languages[langCode], var language = that.options.languages[langCode],
langName = $.uls.data.autonym( langCode ) || language || langCode, langName = $.uls.data.getAutonym( langCode ) || language || langCode,
regions = []; regions = [];
if ( region ) { if ( region ) {
regions.push( region ); regions.push( region );
} else { } else {
regions = $.uls.data.regions( langCode ); regions = $.uls.data.getRegions( langCode );
} }
// World wide languages need not be repeated in all regions. // World wide languages need not be repeated in all regions.
@@ -476,8 +585,8 @@
var lastLanguage = $column.find( 'li:last' ).data( 'code' ); var lastLanguage = $column.find( 'li:last' ).data( 'code' );
if ( lastLanguage ) { if ( lastLanguage ) {
var lastScriptGroup = $.uls.data.scriptGroupOfLanguage( lastLanguage ), var lastScriptGroup = $.uls.data.getScriptGroupOfLanguage( lastLanguage ),
currentScriptGroup = $.uls.data.scriptGroupOfLanguage( langCode ); currentScriptGroup = $.uls.data.getScriptGroupOfLanguage( langCode );
if ( lastScriptGroup !== currentScriptGroup ) { if ( lastScriptGroup !== currentScriptGroup ) {
if ( $column.find( 'li' ).length > 2 ) { if ( $column.find( 'li' ).length > 2 ) {
@@ -576,7 +685,7 @@
var $column = this.getColumn( 'quick', i % 4 === 0 ); var $column = this.getColumn( 'quick', i % 4 === 0 );
var langCode = quickList[i]; var langCode = quickList[i];
var language = this.options.languages[langCode]; var language = this.options.languages[langCode];
var langName = $.uls.data.autonym( langCode ) || language || langCode; var langName = $.uls.data.getAutonym( langCode ) || language || langCode;
var $li = $( '<li>' ) var $li = $( '<li>' )
.data( 'code', langCode ) .data( 'code', langCode )
.attr( { .attr( {
@@ -812,7 +921,7 @@
search: function() { search: function() {
var query = $.trim( this.$element.val() ), var query = $.trim( this.$element.val() ),
languages = $.uls.data.languagesByScriptGroup( this.options.languages ), languages = $.uls.data.getLanguagesByScriptGroup( this.options.languages ),
scriptGroup, langNum, langCode; scriptGroup, langNum, langCode;
this.resultCount = 0; this.resultCount = 0;
for ( scriptGroup in languages ) { for ( scriptGroup in languages ) {
@@ -885,7 +994,7 @@
suggestion = userInput + languageName.substring( userInput.length, languageName.length ); suggestion = userInput + languageName.substring( userInput.length, languageName.length );
if ( suggestion.toLowerCase() !== languageName.toLowerCase() ) { if ( suggestion.toLowerCase() !== languageName.toLowerCase() ) {
// see if it was autonym match // see if it was autonym match
autonym = $.uls.data.autonym( langCode ) || ''; autonym = $.uls.data.getAutonym( langCode ) || '';
suggestion = userInput + autonym.substring( userInput.length, autonym.length ); suggestion = userInput + autonym.substring( userInput.length, autonym.length );
if ( suggestion !== autonym ) { if ( suggestion !== autonym ) {
// Give up. It may be iso/script code match. // Give up. It may be iso/script code match.
@@ -924,9 +1033,9 @@
var matcher = new RegExp( "^" + this.escapeRegex( searchTerm ), 'i' ), var matcher = new RegExp( "^" + this.escapeRegex( searchTerm ), 'i' ),
languageName = this.options.languages[langCode]; languageName = this.options.languages[langCode];
return matcher.test( languageName ) || return matcher.test( languageName ) ||
matcher.test( $.uls.data.autonym( langCode ) ) || matcher.test( $.uls.data.getAutonym( langCode ) ) ||
matcher.test( langCode ) || matcher.test( langCode ) ||
matcher.test( $.uls.data.script( langCode ) ); matcher.test( $.uls.data.getScript( langCode ) );
} }
}; };
@@ -993,7 +1102,7 @@
* @licence MIT License * @licence MIT License
*/ */
(function ( $ ) { ( function ( $ ) {
"use strict"; "use strict";
/* RegionSelector plugin definition */ /* RegionSelector plugin definition */
@@ -1020,14 +1129,14 @@
init: function() { init: function() {
var region = this.$element.data( 'region' ); var region = this.$element.data( 'region' );
this.regions = $.uls.data.regionsInGroup( this.regionGroup ); this.regions = $.uls.data.getRegionsInGroup( this.regionGroup );
if ( region ) { if ( region ) {
this.regions.push( region ); this.regions.push( region );
} }
}, },
test: function( langCode ) { test: function( langCode ) {
var langRegions = $.uls.data.regions( langCode ), var langRegions = $.uls.data.getRegions( langCode ),
region; region;
for ( var i = 0; i < this.regions.length; i++ ) { for ( var i = 0; i < this.regions.length; i++ ) {
@@ -1050,7 +1159,7 @@
} else { } else {
this.cache = {}; this.cache = {};
// Get the languages grouped by script group // Get the languages grouped by script group
var languagesByScriptGroup = $.uls.data.languagesByScriptGroup( this.options.languages ); var languagesByScriptGroup = $.uls.data.getLanguagesByScriptGroup( this.options.languages );
for ( var scriptGroup in languagesByScriptGroup ) { for ( var scriptGroup in languagesByScriptGroup ) {
// Get the languages for the script group // Get the languages for the script group
var languages = languagesByScriptGroup[scriptGroup]; var languages = languagesByScriptGroup[scriptGroup];
@@ -1101,21 +1210,19 @@
}, },
click: function( e ) { click: function( e ) {
// Don't do anything if a region is selected already
if( this.$element.hasClass( 'active' ) ) { if( this.$element.hasClass( 'active' ) ) {
this.$element.removeClass( 'active' ); return;
if ( this.options.noresults ) { }
this.options.noresults.call();
} // Re-populate the list of languages
} else { this.options.$target.empty();
// Re-populate the list of languages this.show();
this.options.$target.empty(); // Make the selected region (and it only) active
this.show(); $( '.regionselector' ).removeClass( 'active' );
// Make the selected region (and it only) active if ( this.regionGroup ) {
$( '.regionselector' ).removeClass( 'active' ); // if there is a region group, make it active.
if ( this.regionGroup ) { this.$element.addClass( 'active' );
// if there is a region group, make it active.
this.$element.addClass( 'active' );
}
} }
} }
}; };
@@ -1475,7 +1582,7 @@
menu: template, menu: template,
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 languages: $.uls.data.getAutonyms(), // Languages to be used for ULS, default is all languages
quickList: null // Array of language codes of function that returns such quickList: null // Array of language codes of function that returns such
}; };