diff --git a/lib/jquery.uls/css/jquery.uls.css b/lib/jquery.uls/css/jquery.uls.css index ff1c8cbf..ac7880a1 100644 --- a/lib/jquery.uls/css/jquery.uls.css +++ b/lib/jquery.uls/css/jquery.uls.css @@ -180,7 +180,7 @@ input:focus#languagefilter { float: right; } -span#languagefilter-clear { +#languagefilter-clear { /* @embed */ background: url('../images/clear.png') no-repeat scroll left center transparent; @@ -553,7 +553,7 @@ img { } .uls-language-block ul { - margin: 0px 0px 1.6em; + margin: 0 0 1.6em; } .uls-language-list ul li { diff --git a/lib/jquery.uls/jquery.uls.js b/lib/jquery.uls/jquery.uls.js index 7a75f6d3..d7df3145 100644 --- a/lib/jquery.uls/jquery.uls.js +++ b/lib/jquery.uls/jquery.uls.js @@ -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 * Copyright (c) 2012 Santhosh Thottingal; Licensed GPL, MIT */ @@ -30,52 +30,81 @@ ( function ( $ ) { "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. * @param string language code * @return string */ - $.uls.data.script = function( language ) { + $.uls.data.getScript = function( language ) { 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. * @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'; }; + $.uls.data.regions = function( language ) { // deprecated + deprecated( "regions", "getRegions" ); + return $.uls.data.getRegions( language ); + }; + /** * Returns the autonym of the language. * @param string language code * @return string */ - $.uls.data.autonym = function( language ) { + $.uls.data.getAutonym = function( 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 * @return array */ - $.uls.data.autonyms = function() { + $.uls.data.getAutonyms = function() { var autonymsByCode = {}; for ( var language in $.uls.data.languages ) { - autonymsByCode[language] = $.uls.data.autonym( language ); + autonymsByCode[language] = $.uls.data.getAutonym( language ); } return autonymsByCode; }; + $.uls.data.autonyms = function() { // deprecated + deprecated( "autonyms", "getAutonyms" ); + return $.uls.data.getAutonyms(); + }; + /** * Returns an array of all region codes. * @return array */ - $.uls.data.allRegions = function() { + $.uls.data.getAllRegions = function() { var allRegions = []; for( var region in $.uls.data.regiongroups ) { @@ -85,26 +114,36 @@ return allRegions; }; + $.uls.data.allRegions = function() { // deprecated + deprecated( "allRegions", "getAllRegions" ); + return $.uls.data.getAllRegions(); + }; + /** * Returns all languages written in script. * @param script string * @return array of strings (languages codes) */ - $.uls.data.languagesInScript = function( script ) { + $.uls.data.getLanguagesInScript = function( 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. * @param scripts array of strings * @return array of strings (languages codes) */ - $.uls.data.languagesInScripts = function( scripts ) { + $.uls.data.getLanguagesInScripts = function( scripts ) { var languagesInScripts = []; for ( var language in $.uls.data.languages ) { 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 ); break; } @@ -114,13 +153,23 @@ return languagesInScripts; }; + $.uls.data.languagesInScripts = function( scripts ) { // deprecated + deprecated( "languagesInScripts", "getLanguagesInScripts" ); + return $.uls.data.getLanguagesInScripts( scripts ); + }; + /** * Returns all languages in a given region. * @param region string * @return array of strings (languages codes) */ - $.uls.data.languagesInRegion = function( region ) { - return $.uls.data.languagesInRegions( [ region ] ); + $.uls.data.getLanguagesInRegion = function( 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. * @return array of strings (languages codes) */ - $.uls.data.languagesInRegions = function( regions ) { + $.uls.data.getLanguagesInRegions = function( regions ) { var languagesInRegions = []; for ( var language in $.uls.data.languages ) { 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 ); break; } @@ -143,13 +192,23 @@ return languagesInRegions; }; + $.uls.data.languagesInRegions = function( regions ) { // deprecated + deprecated( "languagesInRegions", "getLanguagesInRegions" ); + return $.uls.data.getLanguagesInRegions( regions ); + }; + /** * Returns all languages in a region group. * @param groupNum number. * @return array of strings (languages codes) */ - $.uls.data.languagesInRegionGroup = function( groupNum ) { - return $.uls.data.languagesInRegions( $.uls.data.regionsInGroup( groupNum ) ); + $.uls.data.getLanguagesInRegionGroup = function( 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 * @return associative array */ - $.uls.data.languagesByScriptInRegion = function( region ) { + $.uls.data.getLanguagesByScriptInRegion = function( region ) { var languagesByScriptInRegion = {}; for ( var language in $.uls.data.languages ) { - if ( $.inArray( region, $.uls.data.regions( language ) ) !== -1 ) { - var script = $.uls.data.script( language ); + if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) { + var script = $.uls.data.getScript( language ); if ( languagesByScriptInRegion[script] === undefined ) { languagesByScriptInRegion[script] = []; } @@ -174,14 +233,24 @@ 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, * grouped by script group. * @param string region code * @return associative array */ - $.uls.data.languagesByScriptGroupInRegion = function( region ) { - return $.uls.data.languagesByScriptGroupInRegions( [ region ] ); + $.uls.data.getLanguagesByScriptGroupInRegion = function( 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. * @return associative array */ - $.uls.data.allLanguagesByScriptGroup = function() { - return $.uls.data.languagesByScriptGroupInRegions( $.uls.data.allRegions() ); + $.uls.data.getAllLanguagesByScriptGroup = function() { + 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 * @return {Object} Array of languages indexed by script codes */ - $.uls.data.languagesByScriptGroup = function( languages ) { + $.uls.data.getLanguagesByScriptGroup = function( languages ) { var languagesByScriptGroup = {}, scriptGroup, language, @@ -206,7 +280,7 @@ for ( scriptGroup in $.uls.data.scriptgroups ) { for ( language in languages ) { - langScriptGroup = $.uls.data.scriptGroupOfLanguage( language ); + langScriptGroup = $.uls.data.getScriptGroupOfLanguage( language ); if( langScriptGroup !== scriptGroup ) { continue; } @@ -220,19 +294,24 @@ 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, * grouped by script group. * @param array of strings - region codes * @return associative array */ - $.uls.data.languagesByScriptGroupInRegions = function( regions ) { + $.uls.data.getLanguagesByScriptGroupInRegions = function( regions ) { var languagesByScriptGroupInRegions = {}; for ( var language in $.uls.data.languages ) { for ( var i = 0; i < regions.length; i++ ) { - if ( $.inArray( regions[i], $.uls.data.regions( language ) ) !== -1 ) { - var scriptGroup = $.uls.data.scriptGroupOfLanguage( language ); + if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) { + var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language ); if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) { languagesByScriptGroupInRegions[scriptGroup] = []; } @@ -245,12 +324,17 @@ 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, * region, script group and script. * @return associative array */ - $.uls.data.allLanguagesByRegionAndScript = function() { + $.uls.data.getAllLanguagesByRegionAndScript = function() { var allLanguagesByRegionAndScript = {}, region, regionGroup; @@ -264,9 +348,9 @@ } for ( var language in $.uls.data.languages ) { - var script = $.uls.data.script( language ); - var scriptGroup = $.uls.data.groupOfScript( script ); - var regions = $.uls.data.regions( language ); + var script = $.uls.data.getScript( language ); + var scriptGroup = $.uls.data.getGroupOfScript( script ); + var regions = $.uls.data.getRegions( language ); for ( var regionNum = 0; regionNum < regions.length; regionNum++ ) { region = regions[regionNum]; @@ -287,12 +371,17 @@ return allLanguagesByRegionAndScript; }; + $.uls.data.allLanguagesByRegionAndScript = function() { // deprecated + deprecated( "allLanguagesByRegionAndScript", "getAllLanguagesByRegionAndScript" ); + return $.uls.data.getAllLanguagesByRegionAndScript(); + }; + /** * Returns all regions in a region group. * @param number groupNum * @return array of strings */ - $.uls.data.regionsInGroup = function( groupNum ) { + $.uls.data.getRegionsInGroup = function( groupNum ) { var regionsInGroup = []; for ( var region in $.uls.data.regiongroups ) { @@ -304,13 +393,18 @@ 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 * belong to any group. * @param string script code * @return string script group name */ - $.uls.data.groupOfScript = function( script ) { + $.uls.data.getGroupOfScript = function( script ) { for ( var group in $.uls.data.scriptgroups ) { if ( $.inArray( script, $.uls.data.scriptgroups[group] ) !== -1 ) { return group; @@ -320,13 +414,23 @@ return 'Other'; }; + $.uls.data.groupOfScript = function( script ) { // deprecated + deprecated( "groupOfScript", "getGroupOfScript" ); + return $.uls.data.getGroupOfScript( script ); + }; + /** * Returns the script group of a language. * @param string language code * @return string script group name */ - $.uls.data.scriptGroupOfLanguage = function( language ) { - return $.uls.data.groupOfScript( $.uls.data.script( language ) ); + $.uls.data.getScriptGroupOfLanguage = function( 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 */ $.uls.data.sortByAutonym = function( a, b ) { - var autonymA = $.uls.data.autonym( a ) || a, - autonymB = $.uls.data.autonym( b ) || b; + var autonymA = $.uls.data.getAutonym( a ) || a, + autonymB = $.uls.data.getAutonym( b ) || b; return ( autonymA.toLowerCase() < autonymB.toLowerCase() ) ? -1 : 1; }; @@ -346,7 +450,7 @@ * @return boolean */ $.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 * @return list of language codes */ - $.uls.data.languagesInTerritory = function( territory ) { + $.uls.data.getLanguagesInTerritory = function( territory ) { return $.uls.data.territories[territory]; }; + + $.uls.data.languagesInTerritory = function( territory ) { // deprecated + deprecated( "languagesInTerritory", "getLanguagesInTerritory" ); + return $.uls.data.getLanguagesInTerritory( territory ); + }; } ( jQuery ) ); /** @@ -444,13 +553,13 @@ addToRegion: function( langCode, region ) { var that = this; var language = that.options.languages[langCode], - langName = $.uls.data.autonym( langCode ) || language || langCode, + langName = $.uls.data.getAutonym( langCode ) || language || langCode, regions = []; if ( region ) { regions.push( region ); } else { - regions = $.uls.data.regions( langCode ); + regions = $.uls.data.getRegions( langCode ); } // World wide languages need not be repeated in all regions. @@ -476,8 +585,8 @@ var lastLanguage = $column.find( 'li:last' ).data( 'code' ); if ( lastLanguage ) { - var lastScriptGroup = $.uls.data.scriptGroupOfLanguage( lastLanguage ), - currentScriptGroup = $.uls.data.scriptGroupOfLanguage( langCode ); + var lastScriptGroup = $.uls.data.getScriptGroupOfLanguage( lastLanguage ), + currentScriptGroup = $.uls.data.getScriptGroupOfLanguage( langCode ); if ( lastScriptGroup !== currentScriptGroup ) { if ( $column.find( 'li' ).length > 2 ) { @@ -576,7 +685,7 @@ var $column = this.getColumn( 'quick', i % 4 === 0 ); var langCode = quickList[i]; var language = this.options.languages[langCode]; - var langName = $.uls.data.autonym( langCode ) || language || langCode; + var langName = $.uls.data.getAutonym( langCode ) || language || langCode; var $li = $( '
  • ' ) .data( 'code', langCode ) .attr( { @@ -812,7 +921,7 @@ search: function() { var query = $.trim( this.$element.val() ), - languages = $.uls.data.languagesByScriptGroup( this.options.languages ), + languages = $.uls.data.getLanguagesByScriptGroup( this.options.languages ), scriptGroup, langNum, langCode; this.resultCount = 0; for ( scriptGroup in languages ) { @@ -885,7 +994,7 @@ suggestion = userInput + languageName.substring( userInput.length, languageName.length ); if ( suggestion.toLowerCase() !== languageName.toLowerCase() ) { // see if it was autonym match - autonym = $.uls.data.autonym( langCode ) || ''; + autonym = $.uls.data.getAutonym( langCode ) || ''; suggestion = userInput + autonym.substring( userInput.length, autonym.length ); if ( suggestion !== autonym ) { // Give up. It may be iso/script code match. @@ -924,9 +1033,9 @@ var matcher = new RegExp( "^" + this.escapeRegex( searchTerm ), 'i' ), languageName = this.options.languages[langCode]; return matcher.test( languageName ) || - matcher.test( $.uls.data.autonym( langCode ) ) || + matcher.test( $.uls.data.getAutonym( langCode ) ) || matcher.test( langCode ) || - matcher.test( $.uls.data.script( langCode ) ); + matcher.test( $.uls.data.getScript( langCode ) ); } }; @@ -993,7 +1102,7 @@ * @licence MIT License */ -(function ( $ ) { +( function ( $ ) { "use strict"; /* RegionSelector plugin definition */ @@ -1020,14 +1129,14 @@ init: function() { var region = this.$element.data( 'region' ); - this.regions = $.uls.data.regionsInGroup( this.regionGroup ); + this.regions = $.uls.data.getRegionsInGroup( this.regionGroup ); if ( region ) { this.regions.push( region ); } }, test: function( langCode ) { - var langRegions = $.uls.data.regions( langCode ), + var langRegions = $.uls.data.getRegions( langCode ), region; for ( var i = 0; i < this.regions.length; i++ ) { @@ -1050,7 +1159,7 @@ } else { this.cache = {}; // 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 ) { // Get the languages for the script group var languages = languagesByScriptGroup[scriptGroup]; @@ -1101,21 +1210,19 @@ }, click: function( e ) { + // Don't do anything if a region is selected already if( this.$element.hasClass( 'active' ) ) { - this.$element.removeClass( 'active' ); - if ( this.options.noresults ) { - this.options.noresults.call(); - } - } else { - // Re-populate the list of languages - this.options.$target.empty(); - this.show(); - // Make the selected region (and it only) active - $( '.regionselector' ).removeClass( 'active' ); - if ( this.regionGroup ) { - // if there is a region group, make it active. - this.$element.addClass( 'active' ); - } + return; + } + + // Re-populate the list of languages + this.options.$target.empty(); + this.show(); + // Make the selected region (and it only) active + $( '.regionselector' ).removeClass( 'active' ); + if ( this.regionGroup ) { + // if there is a region group, make it active. + this.$element.addClass( 'active' ); } } }; @@ -1475,7 +1582,7 @@ menu: template, onSelect: null, // Callback function to be called when a language is selected 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 };