Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/49468
Change subject: Update jquery.uls from upstream ...................................................................... Update jquery.uls from upstream Change-Id: Ib965e43f987436ddaa398b43c71e1ad25183f1d5 --- M lib/jquery.uls/css/jquery.uls.css A lib/jquery.uls/i18n/cy.json M lib/jquery.uls/i18n/fa.json M lib/jquery.uls/i18n/fi.json M lib/jquery.uls/i18n/hu.json M lib/jquery.uls/i18n/kn.json M lib/jquery.uls/i18n/ml.json M lib/jquery.uls/i18n/mn.json A lib/jquery.uls/i18n/sw.json M lib/jquery.uls/i18n/tly.json M lib/jquery.uls/i18n/tt-cyrl.json M lib/jquery.uls/i18n/war.json M lib/jquery.uls/jquery.uls.js 13 files changed, 155 insertions(+), 83 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UniversalLanguageSelector refs/changes/68/49468/1 diff --git a/lib/jquery.uls/css/jquery.uls.css b/lib/jquery.uls/css/jquery.uls.css index 50d4a4d..f99be6c 100644 --- a/lib/jquery.uls/css/jquery.uls.css +++ b/lib/jquery.uls/css/jquery.uls.css @@ -74,7 +74,7 @@ background: transparent url('../images/world_map.png') no-repeat scroll right top; background-image: -webkit-linear-gradient(transparent, transparent), url('../images/world_map.svg'); background-image: -moz-linear-gradient(transparent, transparent), url('../images/world_map.svg'); - background-image: linear-gradient(transparent, transparent), url('../images/world_map.svg'); + background-image: linear-gradient(transparent, transparent), url('../images/world_map.svg'); background-size: 100%; } @@ -166,7 +166,7 @@ background: transparent url('../images/close.png') no-repeat scroll center center; background-image: -webkit-linear-gradient(transparent, transparent), url('../images/close.svg'); background-image: -moz-linear-gradient(transparent, transparent), url('../images/close.svg'); - background-image: linear-gradient(transparent, transparent), url('../images/close.svg'); + background-image: linear-gradient(transparent, transparent), url('../images/close.svg'); float: right; padding: 15px; cursor: pointer; diff --git a/lib/jquery.uls/i18n/cy.json b/lib/jquery.uls/i18n/cy.json new file mode 100644 index 0000000..c747839 --- /dev/null +++ b/lib/jquery.uls/i18n/cy.json @@ -0,0 +1,21 @@ +{ + "@metadata": { + "authors": [ + "Lloffiwr" + ] + }, + "uls-select-language": "Dewis iaith", + "uls-region-WW": "Aml i fan", + "uls-region-SP": "Neilltuol", + "uls-region-AM": "America", + "uls-region-AF": "Affrica", + "uls-region-EU": "Ewrop", + "uls-region-AS": "Asia", + "uls-region-ME": "Y Dwyrain Canol", + "uls-region-PA": "Y Pasiffig", + "uls-no-results-found": "Ni chafwyd unrhyw ganlyniadau", + "uls-common-languages": "Awgrymiadau o ieithoedd", + "uls-no-results-suggestion-title": "Hwyrach bod y rhai sy'n dilyn o ddiddordeb i chi:", + "uls-search-help": "Gallwch chwilio am enw iaith, enw sgript, c\u00f4d ISO rhyw iaith neu gallwch bori fesul rhanbarth:", + "uls-search-placeholder": "Chwilio am iaith" +} \ No newline at end of file diff --git a/lib/jquery.uls/i18n/fa.json b/lib/jquery.uls/i18n/fa.json index c29cab6..d80d8b4 100644 --- a/lib/jquery.uls/i18n/fa.json +++ b/lib/jquery.uls/i18n/fa.json @@ -6,6 +6,7 @@ }, "uls-select-language": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0632\u0628\u0627\u0646", "uls-region-WW": "\u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u062c\u0647\u0627\u0646", + "uls-region-SP": "\u0648\u06cc\u0698\u0647", "uls-region-AM": "\u0622\u0645\u0631\u06cc\u06a9\u0627", "uls-region-AF": "\u0622\u0641\u0631\u06cc\u0642\u0627", "uls-region-EU": "\u0627\u0631\u0648\u067e\u0627", diff --git a/lib/jquery.uls/i18n/fi.json b/lib/jquery.uls/i18n/fi.json index c8ed523..40aa3d3 100644 --- a/lib/jquery.uls/i18n/fi.json +++ b/lib/jquery.uls/i18n/fi.json @@ -8,6 +8,7 @@ }, "uls-select-language": "Valitse kieli", "uls-region-WW": "Ymp\u00e4ri maailmaa", + "uls-region-SP": "Erikoiskielet", "uls-region-AM": "Amerikka", "uls-region-AF": "Afrikka", "uls-region-EU": "Eurooppa", diff --git a/lib/jquery.uls/i18n/hu.json b/lib/jquery.uls/i18n/hu.json index 271fc83..c2dbc6c 100644 --- a/lib/jquery.uls/i18n/hu.json +++ b/lib/jquery.uls/i18n/hu.json @@ -6,6 +6,7 @@ }, "uls-select-language": "Nyelv kiv\u00e1laszt\u00e1sa", "uls-region-WW": "Vil\u00e1gszerte", + "uls-region-SP": "Speci\u00e1lis", "uls-region-AM": "Amerika", "uls-region-AF": "Afrika", "uls-region-EU": "Eur\u00f3pa", diff --git a/lib/jquery.uls/i18n/kn.json b/lib/jquery.uls/i18n/kn.json index d46f3b7..ae5f13d 100644 --- a/lib/jquery.uls/i18n/kn.json +++ b/lib/jquery.uls/i18n/kn.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ - "Omshivaprakash" + "Omshivaprakash", + "Shankar" ] }, "uls-select-language": "\u0cad\u0cbe\u0cb7\u0cc6\u0caf \u0c86\u0caf\u0ccd\u0c95\u0cc6", "uls-region-WW": "\u0caa\u0ccd\u0cb0\u0caa\u0c82\u0c9a\u0ca6\u0cbe\u0ca6\u0ccd\u0caf\u0c82\u0ca4", + "uls-region-SP": "\u0cb5\u0cbf\u0cb6\u0cc7\u0cb7", "uls-region-AM": "\u0c85\u0cae\u0cc7\u0cb0\u0cbf\u0c95", "uls-region-AF": "\u0c86\u0cab\u0ccd\u0cb0\u0cbf\u0c95", "uls-region-EU": "\u0caf\u0cc1\u0cb0\u0ccb\u0caa\u0ccd", diff --git a/lib/jquery.uls/i18n/ml.json b/lib/jquery.uls/i18n/ml.json index dedc5cf..5ffea75 100644 --- a/lib/jquery.uls/i18n/ml.json +++ b/lib/jquery.uls/i18n/ml.json @@ -6,6 +6,7 @@ }, "uls-select-language": "\u0d2d\u0d3e\u0d37 \u0d24\u0d3f\u0d30\u0d1e\u0d4d\u0d1e\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15", "uls-region-WW": "\u0d06\u0d17\u0d4b\u0d33 \u0d2d\u0d3e\u0d37\u0d15\u0d7e", + "uls-region-SP": "\u0d2a\u0d4d\u0d30\u0d24\u0d4d\u0d2f\u0d47\u0d15 \u0d2d\u0d3e\u0d37\u0d15\u0d7e", "uls-region-AM": "\u0d05\u0d2e\u0d47\u0d30\u0d3f\u0d15\u0d4d\u0d15", "uls-region-AF": "\u0d06\u0d2b\u0d4d\u0d30\u0d3f\u0d15\u0d4d\u0d15", "uls-region-EU": "\u0d2f\u0d42\u0d31\u0d4b\u0d2a\u0d4d\u0d2a\u0d4d", diff --git a/lib/jquery.uls/i18n/mn.json b/lib/jquery.uls/i18n/mn.json index 59d8ac2..225e67a 100644 --- a/lib/jquery.uls/i18n/mn.json +++ b/lib/jquery.uls/i18n/mn.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "Amire80", "Wisdom" ] }, "uls-select-language": "\u0425\u044d\u043b \u0441\u043e\u043d\u0433\u043e\u0445", "uls-region-WW": "\u0414\u044d\u043b\u0445\u0438\u0439 \u0434\u0430\u044f\u0430\u0440", + "uls-region-SP": "\u0422\u0443\u0441\u0433\u0430\u0439", "uls-region-AM": "\u0410\u043c\u0435\u0440\u0438\u043a", "uls-region-AF": "\u0410\u0444\u0440\u0438\u043a", "uls-region-EU": "\u0415\u0432\u0440\u043e\u043f", diff --git a/lib/jquery.uls/i18n/sw.json b/lib/jquery.uls/i18n/sw.json new file mode 100644 index 0000000..f525d8a --- /dev/null +++ b/lib/jquery.uls/i18n/sw.json @@ -0,0 +1,22 @@ +{ + "@metadata": { + "authors": [ + "Lloffiwr", + "Muddyb Blast Producer" + ] + }, + "uls-select-language": "Chagua lugha", + "uls-region-WW": "Dunia nzima", + "uls-region-SP": "Maalumu", + "uls-region-AM": "Marekani", + "uls-region-AF": "Afrika", + "uls-region-EU": "Ulaya", + "uls-region-AS": "Asia", + "uls-region-ME": "Mashariki ya Kati", + "uls-region-PA": "Pasifiki", + "uls-no-results-found": "Hakuna matokeo", + "uls-common-languages": "Lugha za kawaida", + "uls-no-results-suggestion-title": "Pengine unaweza kuvutiwa na:", + "uls-search-help": "Unaweza kutafuta kwa jina la lugha, jina la maandishi, msimbo wa ISO wa lugha, ama unaweza kutafuta kwa eneo.", + "uls-search-placeholder": "Tafuta lugha" +} \ No newline at end of file diff --git a/lib/jquery.uls/i18n/tly.json b/lib/jquery.uls/i18n/tly.json index 7c9567f..80dcc6b 100644 --- a/lib/jquery.uls/i18n/tly.json +++ b/lib/jquery.uls/i18n/tly.json @@ -7,8 +7,10 @@ }, "uls-select-language": "\u0417\u044b\u0432\u043e\u043d\u0438 \u0432\u044b\u0436\u043d\u0438\u0458\u0435", "uls-region-AM": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430", + "uls-region-AF": "\u0410\u0444\u0440\u0438\u043a\u0430", "uls-region-EU": "\u0410\u0432\u0440\u043e\u043f\u0430", "uls-no-results-found": "\u04ba\u0438\u0447\u0438 \u043f\u04d9\u0458\u0434\u043e \u0431\u044b\u04d9\u043d\u0438", "uls-common-languages": "\u0412\u044b\u0436\u043d\u0438\u0458\u04d9 \u0431\u044b\u04d9 \u0437\u044b\u0432\u043e\u043d\u043e\u043d", - "uls-no-results-suggestion-title": "\u0411\u04d9\u0437\u043d\u0435 \u0431\u0435 \u043a\u0438 \u0431\u043e \u0448\u044b\u043c\u04d9 \u043c\u0430\u0440\u0430\u0493\u0438\u043d\u0438\u043d \u044b\u043d \u0437\u044b\u0432\u043e\u043d\u043e\u043d:" + "uls-no-results-suggestion-title": "\u0411\u04d9\u0437\u043d\u0435 \u0431\u0435 \u043a\u0438 \u0431\u043e \u0448\u044b\u043c\u04d9 \u043c\u0430\u0440\u0430\u0493\u0438\u043d\u0438\u043d \u044b\u043d \u0437\u044b\u0432\u043e\u043d\u043e\u043d:", + "uls-search-placeholder": "\u0417\u044b\u0432\u043e\u043d\u0438 \u043d\u044b\u0432\u0435" } \ No newline at end of file diff --git a/lib/jquery.uls/i18n/tt-cyrl.json b/lib/jquery.uls/i18n/tt-cyrl.json index cc37262..847a544 100644 --- a/lib/jquery.uls/i18n/tt-cyrl.json +++ b/lib/jquery.uls/i18n/tt-cyrl.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "Ajdar", "\u0418\u043b\u044c\u043d\u0430\u0440" ] }, "uls-select-language": "\u0422\u0435\u043b \u0441\u0430\u0439\u043b\u0430\u0443", "uls-region-WW": "\u0411\u04e9\u0442\u0435\u043d\u0434\u04e9\u043d\u044c\u044f", + "uls-region-SP": "\u041c\u0430\u0445\u0441\u0443\u0441", "uls-region-AM": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430", "uls-region-AF": "\u0410\u0444\u0440\u0438\u043a\u0430", "uls-region-EU": "\u0410\u0443\u0440\u0443\u043f\u0430", diff --git a/lib/jquery.uls/i18n/war.json b/lib/jquery.uls/i18n/war.json index 936a2df..b0e1f08 100644 --- a/lib/jquery.uls/i18n/war.json +++ b/lib/jquery.uls/i18n/war.json @@ -7,6 +7,7 @@ }, "uls-select-language": "Pili-a an Pinulongan", "uls-region-WW": "ha Kalibutan", + "uls-region-SP": "Pinaurog", "uls-region-AM": "Amerika", "uls-region-AF": "Afrika", "uls-region-EU": "Europa", diff --git a/lib/jquery.uls/jquery.uls.js b/lib/jquery.uls/jquery.uls.js index 62c92db..f2d53db 100644 --- a/lib/jquery.uls/jquery.uls.js +++ b/lib/jquery.uls/jquery.uls.js @@ -1,4 +1,4 @@ -/*! jquery.uls - v0.1.0 - 2013-02-06 +/*! jquery.uls - v0.1.0 - 2013-02-17 * https://github.com/wikimedia/jquery.uls * Copyright (c) 2013 Santhosh Thottingal; Licensed GPL, MIT */ @@ -91,9 +91,10 @@ * @return array */ $.uls.data.getAutonyms = function () { - var autonymsByCode = {}; + var language, + autonymsByCode = {}; - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } @@ -109,9 +110,10 @@ * @return array */ $.uls.data.getAllRegions = function () { - var allRegions = []; + var region, + allRegions = []; - for ( var region in $.uls.data.regiongroups ) { + for ( region in $.uls.data.regiongroups ) { allRegions.push( region ); } @@ -134,14 +136,15 @@ * @return array of strings (languages codes) */ $.uls.data.getLanguagesInScripts = function ( scripts ) { - var languagesInScripts = []; + var language, i, + languagesInScripts = []; - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } - for ( var i = 0; i < scripts.length; i++ ) { + for ( i = 0; i < scripts.length; i++ ) { if ( scripts[i] === $.uls.data.getScript( language ) ) { languagesInScripts.push( language ); break; @@ -167,14 +170,15 @@ * @return array of strings (languages codes) */ $.uls.data.getLanguagesInRegions = function ( regions ) { - var languagesInRegions = []; + var language, i, + languagesInRegions = []; - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } - for ( var i = 0; i < regions.length; i++ ) { + for ( i = 0; i < regions.length; i++ ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) { languagesInRegions.push( language ); break; @@ -201,15 +205,16 @@ * @return associative array */ $.uls.data.getLanguagesByScriptInRegion = function ( region ) { - var languagesByScriptInRegion = {}; + var language, script, + languagesByScriptInRegion = {}; - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) { - var script = $.uls.data.getScript( language ); + script = $.uls.data.getScript( language ); if ( languagesByScriptInRegion[script] === undefined ) { languagesByScriptInRegion[script] = []; @@ -274,16 +279,17 @@ * @return associative array */ $.uls.data.getLanguagesByScriptGroupInRegions = function ( regions ) { - var languagesByScriptGroupInRegions = {}; + var language, i, scriptGroup, + languagesByScriptGroupInRegions = {}; - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } - for ( var i = 0; i < regions.length; i++ ) { + for ( i = 0; i < regions.length; i++ ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) { - var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language ); + scriptGroup = $.uls.data.getScriptGroupOfLanguage( language ); if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) { languagesByScriptGroupInRegions[scriptGroup] = []; @@ -304,9 +310,9 @@ * @return associative array */ $.uls.data.getAllLanguagesByRegionAndScript = function () { - var allLanguagesByRegionAndScript = {}, - region, - regionGroup; + var region, regionGroup, language, + script, scriptGroup, regions, regionNum, + allLanguagesByRegionAndScript = {}; for ( region in $.uls.data.regiongroups ) { regionGroup = $.uls.data.regiongroups[region]; @@ -318,16 +324,16 @@ allLanguagesByRegionAndScript[regionGroup][region] = {}; } - for ( var language in $.uls.data.languages ) { + for ( language in $.uls.data.languages ) { if ( $.uls.data.isRedirect( language ) ) { continue; } - var script = $.uls.data.getScript( language ); - var scriptGroup = $.uls.data.getGroupOfScript( script ); - var regions = $.uls.data.getRegions( language ); + script = $.uls.data.getScript( language ); + scriptGroup = $.uls.data.getGroupOfScript( script ); + regions = $.uls.data.getRegions( language ); - for ( var regionNum = 0; regionNum < regions.length; regionNum++ ) { + for ( regionNum = 0; regionNum < regions.length; regionNum++ ) { region = regions[regionNum]; regionGroup = $.uls.data.regiongroups[region]; @@ -352,9 +358,10 @@ * @return array of strings */ $.uls.data.getRegionsInGroup = function ( groupNum ) { - var regionsInGroup = []; + var region, + regionsInGroup = []; - for ( var region in $.uls.data.regiongroups ) { + for ( region in $.uls.data.regiongroups ) { if ( $.uls.data.regiongroups[region] === groupNum ) { regionsInGroup.push( region ); } @@ -371,9 +378,11 @@ * @return string script group name */ $.uls.data.getGroupOfScript = function ( script ) { - for ( var group in $.uls.data.scriptgroups ) { - if ( $.inArray( script, $.uls.data.scriptgroups[group] ) !== -1 ) { - return group; + var scriptGroup; + + for ( scriptGroup in $.uls.data.scriptgroups ) { + if ( $.inArray( script, $.uls.data.scriptgroups[scriptGroup] ) !== -1 ) { + return scriptGroup; } } @@ -488,6 +497,7 @@ ( function ( $ ) { 'use strict'; + /*jshint multistr:true */ var noResultsTemplate = '\ <div class="twelve columns uls-no-results-view">\ <h2 data-i18n="uls-no-results-found" class="eleven columns end offset-by-one uls-no-results-found-title">\ @@ -510,6 +520,7 @@ </div>\ </div>\ </div>'; + /*jshint multistr:false */ var LanguageCategoryDisplay = function ( element, options ) { this.$element = $( element ); @@ -677,7 +688,7 @@ .text( 'Common languages' ); // This is placeholder text if jquery.i18n not present $quickListSection.append( $quickListSectionTitle ); this.$element.prepend( $quickListSection ); - this.regionDivs[ 'quick' ] = $quickListSection; + this.regionDivs.quick = $quickListSection; for ( var i = 0; i < quickList.length; i++) { var $column = this.getColumn( 'quick', i % 4 === 0 ); @@ -965,7 +976,7 @@ for ( langNum = 0; langNum < languagesInScript.length; langNum++ ) { langCode = languagesInScript[langNum]; - if ( query === "" || this.filter( langCode, query ) ) { + if ( query === '' || this.filter( langCode, query ) ) { if ( this.resultCount === 0 ) { // Autofill the first result. this.autofill( langCode ); @@ -993,14 +1004,16 @@ var languageFilter = this; $.get( languageFilter.options.searchAPI, { search: query }, function( result ) { - $.each( result['languagesearch'], function( code, name ) { + $.each( result.languagesearch, function( code, name ) { if ( languageFilter.resultCount === 0 ) { // Autofill the first result. languageFilter.autofill( code, name ); } + languageFilter.render( code ); languageFilter.resultCount++; } ); + languageFilter.resultHandler( query ); } ); }, @@ -1040,15 +1053,16 @@ // see if it was autonym match 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. - suggestion = ""; + // Give up. It may be an ISO/script code match. + suggestion = ''; } } // Make sure that it is a visual prefix. if ( !isVisualPrefix( userInput, suggestion ) ) { - suggestion = ""; + suggestion = ''; } this.$suggestion.val( suggestion ); @@ -1065,7 +1079,7 @@ }, escapeRegex: function( value ) { - return value.replace( /[\-\[\]{}()*+?.,\\\^$\|#\s]/g, "\\$&" ); + return value.replace( /[\-\[\]{}()*+?.,\\\^$\|#\s]/g, '\\$&' ); }, /** @@ -1078,7 +1092,7 @@ */ filter: function( langCode, searchTerm ) { // FIXME script is ISO 15924 code. We might need actual name of script. - var matcher = new RegExp( "^" + this.escapeRegex( searchTerm ), 'i' ), + var matcher = new RegExp( '^' + this.escapeRegex( searchTerm ), 'i' ), languageName = this.options.languages[langCode]; return matcher.test( languageName ) || @@ -1134,7 +1148,7 @@ function isVisualPrefix( prefix, string ) { // Pre-base vowel signs of Indic languages. A vowel sign is called pre-base if // consonant + vowel becomes [vowel][consonant] when rendered. Eg: ക + െ => കെ - var prebases = "െേൈൊോൌெேைொோௌେୈୋୌિਿिিেৈোৌෙේෛොෝෞ"; + var prebases = 'െേൈൊോൌெேைொோௌେୈୋୌિਿिিেৈোৌෙේෛොෝෞ'; return prebases.indexOf( string[prefix.length] ) <= 0; } } ( jQuery ) ); @@ -1365,6 +1379,7 @@ 'use strict'; // Region numbers in id attributes also appear in the langdb. + /*jshint multistr:true */ var template = '\ <div class="grid uls-menu uls-wide"> \ <div class="row"> \ @@ -1417,15 +1432,17 @@ <div class="row uls-language-list"></div>\ <div class="row" id="settings-block"></div>\ </div> '; + /*jshint multistr:false */ /** * ULS Public class definition */ - var ULS = function( element, options ) { + var ULS = function ( element, options ) { this.$element = $( element ); this.options = $.extend( {}, $.fn.uls.defaults, options ); this.$menu = $( template ); this.languages = this.options.languages; + for ( var code in this.languages ) { if ( $.uls.data.languages[code] === undefined ) { if ( window.console && window.console.log ) { @@ -1434,13 +1451,16 @@ delete this.languages[code]; } } + this.left = this.options.left; this.top = this.options.top; this.shown = false; this.initialized = false; + this.$languageFilter = this.$menu.find( '#languagefilter' ); this.$regionFilters = this.$menu.find( '.uls-region' ); this.$resultsView = this.$menu.find( 'div.uls-language-list' ); + this.render(); this.listen(); this.ready(); @@ -1449,7 +1469,7 @@ ULS.prototype = { constructor: ULS, - ready: function() { + ready: function () { if ( this.options.onReady ) { this.options.onReady.call( this ); } @@ -1460,7 +1480,7 @@ * Returns an object with top and left properties. * @returns {Object} */ - position: function() { + position: function () { var pos = $.extend( {}, this.$element.offset(), { height: this.$element[0].offsetHeight } ); @@ -1473,7 +1493,7 @@ /** * Show the ULS window */ - show: function() { + show: function () { var pos = this.position(); this.$menu.css( { top: pos.top, @@ -1500,7 +1520,7 @@ } }, - i18n: function() { + i18n: function () { if ( $.i18n ) { this.$menu.find( '[data-i18n]' ).i18n(); this.$languageFilter.prop( 'placeholder', $.i18n( 'uls-search-placeholder' ) ); @@ -1520,7 +1540,7 @@ /** * Hide the ULS window */ - hide: function() { + hide: function () { this.$menu.hide(); this.shown = false; }, @@ -1529,29 +1549,28 @@ * Render the UI elements. * Does nothing by default. Can be used for customization. */ - render: function() { + render: function () { // Rendering stuff here }, /** - * callback for no results found context. - * @param search string The search term + * Callback for no results found context. */ - noresults: function( search ) { + noresults: function () { this.$resultsView.lcd( 'noResults' ); }, /** * callback for results found context. */ - success: function() { + success: function () { this.$resultsView.show(); }, /** * Bind the UI elements with their event listeners */ - listen: function() { + listen: function () { var lcd, uls = this; @@ -1570,6 +1589,7 @@ // Handle key press events on the menu uls.$menu.on( 'keypress', $.proxy( this.keypress, this ) ) .on( 'keyup', $.proxy( this.keyup, this ) ); + if ( this.eventSupported( 'keydown' ) ) { this.$menu.on( 'keydown', $.proxy( this.keypress, this ) ); } @@ -1586,11 +1606,11 @@ uls.$languageFilter.languagefilter( { $target: lcd, languages: uls.languages, - success: function() { + success: function () { $( '.regionselector' ).removeClass( 'active' ); uls.success(); }, - noresults: function() { + noresults: function () { $( '.regionselector' ).removeClass( 'active' ); uls.noresults(); }, @@ -1602,17 +1622,19 @@ this.$menu.find( '.uls-region, .uls-region-link' ).regionselector( { $target: lcd, languages: uls.languages, - success: function( regionfilter ) { + success: function ( regionfilter ) { // Deactivate search filtering uls.$languageFilter.languagefilter( 'deactivate' ); - // If it is WW region, show the quicklist + + // If it is the WW region, show the quicklist if ( regionfilter.regionGroup === 1 ) { lcd.quicklist(); } + // Show 'results view' if we are in no results mode uls.success(); }, - noresults: function() { + noresults: function () { uls.$languageFilter.languagefilter( 'clear' ); } } ); @@ -1622,8 +1644,9 @@ * On select handler for search results * @param langCode */ - select: function( langCode ) { + select: function ( langCode ) { this.hide(); + if ( this.options.onSelect ) { this.options.onSelect.call( this, langCode ); } @@ -1632,17 +1655,19 @@ /** * On cancel handler for the uls menu */ - cancel: function() { + cancel: function () { this.hide(); + if ( this.options.onCancel ) { this.options.onCancel.call( this ); } }, - keyup: function( e ) { + keyup: function ( e ) { if ( !this.shown ) { return; } + if ( e.keyCode === 27 ) { // escape this.cancel(); e.preventDefault(); @@ -1650,10 +1675,11 @@ } }, - keypress: function( e ) { + keypress: function ( e ) { if ( !this.shown ) { return; } + if ( e.keyCode === 27 ) { // escape this.cancel(); e.preventDefault(); @@ -1661,9 +1687,10 @@ } }, - click: function( e ) { + click: function ( e ) { e.stopPropagation(); e.preventDefault(); + if ( this.shown ) { this.hide(); } else { @@ -1678,6 +1705,7 @@ this.$element.setAttribute( eventName, 'return;' ); isSupported = typeof this.$element[eventName] === 'function'; } + return isSupported; }, @@ -1689,8 +1717,8 @@ /* ULS PLUGIN DEFINITION * =========================== */ - $.fn.uls = function( option ) { - return this.each( function() { + $.fn.uls = function ( option ) { + return this.each( function () { var $this = $( this ), data = $this.data( 'uls' ), options = typeof option === 'object' && option; @@ -1698,6 +1726,7 @@ if ( !data ) { $this.data( 'uls', ( data = new ULS( this, options ) ) ); } + if ( typeof option === 'string' ) { data[option](); } @@ -1715,23 +1744,10 @@ }; // Define a dummy i18n function, if jquery.i18n not integrated. - if( !$.fn.i18n ) { - $.fn.i18n = function( option ) { + if ( !$.fn.i18n ) { + $.fn.i18n = function () { }; } $.fn.uls.Constructor = ULS; - - // Private utility functions - - function getObjectLength ( obj ) { - var k, count = 0; - for ( k in obj ) { - if ( obj.hasOwnProperty( k ) ) { - count++; - } - } - return count; - } - } ( jQuery ) ); -- To view, visit https://gerrit.wikimedia.org/r/49468 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib965e43f987436ddaa398b43c71e1ad25183f1d5 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits