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();
}
} );