diff --git a/lib/jquery.uls/src/jquery.uls.lcd.js b/lib/jquery.uls/src/jquery.uls.lcd.js index ce232686..67a314d5 100644 --- a/lib/jquery.uls/src/jquery.uls.lcd.js +++ b/lib/jquery.uls/src/jquery.uls.lcd.js @@ -141,9 +141,6 @@ // Pick only the first elements, because we don't have room for more var that = this, quickList = this.options.quickList; - quickList = $.grep( quickList, function( langCode, index ) { - return that.options.languages[langCode]; - } ); quickList = quickList.slice( 0, 16 ); quickList.sort( $.uls.data.sortByAutonym ); var $quickListsection = $( '
' ).addClass( 'twelve columns uls-lcd-region-section' ).prop( 'id', 'uls-lcd-quicklist' ); diff --git a/resources/js/ext.uls.displaysettings.js b/resources/js/ext.uls.displaysettings.js index badb8b68..59db20ed 100644 --- a/resources/js/ext.uls.displaysettings.js +++ b/resources/js/ext.uls.displaysettings.js @@ -103,7 +103,7 @@ var that = this; var $languages = this.$template.find( 'div.uls-ui-languages' ); $languages.empty(); - var previousLanguages = this.previousLanguages(); + var previousLanguages = this.frequentLanguageList(); var languages = [this.uiLanguage]; for ( var lang in previousLanguages ) { if ( previousLanguages[lang] === this.uiLanguage ) { @@ -169,6 +169,9 @@ that.$parent.show(); that.prepareUIFonts(); that.prepareLanguages(); + }, + quickList: function() { + return mw.uls.getFrequentLanguageList(); } } ); @@ -181,9 +184,8 @@ * Get previous languages * @returns {Array} */ - previousLanguages: function () { - // FIXME - return [ $.cookie( 'uls-previous-language' ) || 'he', 'hi', 'ml', 'ta']; + frequentLanguageList: function () { + return mw.uls.getFrequentLanguageList(); }, /** diff --git a/resources/js/ext.uls.init.js b/resources/js/ext.uls.init.js index ec0143c1..19bd54a9 100644 --- a/resources/js/ext.uls.init.js +++ b/resources/js/ext.uls.init.js @@ -63,6 +63,28 @@ return mw.config.get( "wgULSAcceptLanguageList" ); }; + mw.uls.getFrequentLanguageList = function() { + var unique = [], + list = [ mw.config.get( 'wgUserLanguage' ), + mw.config.get( 'wgContentLanguage' ), + mw.uls.getBrowserLanguage() ] + .concat( mw.uls.getPreviousLanguages() ) + .concat( mw.uls.getAcceptLanguageList() ); + if ( window.GEO ) { + list = list.concat( $.uls.data.languagesInTerritory( window.GEO.country_code ) ); + } + $.each( list, function( i, v ) { + if ( $.inArray( v, unique ) === -1 ) { + unique.push( v ); + } + } ); + // Filter out unknown and unsupported languages + unique = $.grep( unique, function( langCode, index ) { + return $.fn.uls.defaults.languages[langCode]; + } ); + return unique; + }; + $( document ).ready( function() { var $ulsTrigger = $( '.uls-trigger' ), previousLanguages = mw.uls.getPreviousLanguages() || [], @@ -106,23 +128,7 @@ languages: mw.config.get( 'wgULSLanguages' ), searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch", quickList: function() { - var unique = [], - list = [ - mw.config.get( 'wgUserLanguage' ), - mw.config.get( 'wgContentLanguage' ), - mw.uls.getBrowserLanguage() - ] - .concat( mw.uls.getPreviousLanguages() ) - .concat( mw.uls.getAcceptLanguageList() ); - if ( window.GEO ) { - list = list.concat( $.uls.data.languagesInTerritory( window.GEO.country_code ) ); - } - $.each( list, function ( i, v ) { - if ( $.inArray( v, unique ) === -1 ) { - unique.push( v ); - } - } ); - return unique; + return mw.uls.getFrequentLanguageList(); } } );