diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 6d620097..f361cf94 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -67,13 +67,13 @@ class UniversalLanguageSelectorHooks {
-
+ -
+ - diff --git a/examples/index.html b/examples/index.html index f9225441..da3b6ee6 100644 --- a/examples/index.html +++ b/examples/index.html @@ -47,17 +47,17 @@
-
+ -
+ -
+
Asia
Australia diff --git a/resources/ext.uls.languagefilter.js b/resources/ext.uls.languagefilter.js index d3623039..646d7488 100644 --- a/resources/ext.uls.languagefilter.js +++ b/resources/ext.uls.languagefilter.js @@ -104,15 +104,15 @@ /* * Region selector is a language selector based on regions. * Usage: $( 'jqueryselector' ).regionselector( options ); - * The attached element should have data-region attribute - * that defines the region for the selector. + * The attached element should have data-regiongroup attribute + * that defines the regiongroup for the selector. */ var RegionSelector = function( element, options ) { this.$element = $( element ); this.options = $.extend( {}, $.fn.regionselector.defaults, options ); this.$element.addClass( 'regionselector' ); this.listen(); - this.region = this.$element.data( 'region' ); + this.regionGroup = this.$element.data( 'regiongroup' ); }; RegionSelector.prototype = { @@ -122,13 +122,13 @@ var languages = $.uls.data.languages; var regionGroups = $.uls.data.regiongroups; var regions = languages[langCode][1]; - // 1. loop over all regions - like {EU: 2, AF: 2, AS: 3 ...} + // 1. loop over all regiongroups - like {EU: 2, AF: 2, AS: 3 ...} // 2. check that the region matches the active region group // 3. if this language is included in that region, show it // 4. if none of the conditions match, the language is not shown - $.each( regionGroups, function( regionGroup, groupId ) { - if ( groupId === that.region && $.inArray( regionGroup, regions ) >= 0 ) { - that.render( langCode, regionGroup ); + $.each( regionGroups, function( region, regionGroup) { + if ( regionGroup === that.regionGroup && $.inArray( region, regions ) >= 0 ) { + that.render( langCode, region ); return; } } ); @@ -152,12 +152,12 @@ that.options.callback.call(); } }, - render: function( langCode, regionGroup) { + render: function( langCode, region) { var $target = this.options.$target; if ( !$target ) { return; } - $target.append( langCode, regionGroup ); + $target.append( langCode, region ); }, listen: function(){ this.$element.on( 'click', $.proxy( this.click, this ) ); diff --git a/resources/ext.uls.lcd.js b/resources/ext.uls.lcd.js index ed1a67c9..ea38afcc 100644 --- a/resources/ext.uls.lcd.js +++ b/resources/ext.uls.lcd.js @@ -12,12 +12,18 @@ LanguageCategoryDisplay.prototype = { constructor: LanguageCategoryDisplay, - append: function( langCode, regionGroup ) { + append: function( langCode, regionCode ) { var that = this; - this.addToRegion( langCode, regionGroup ); + this.addToRegion( langCode, regionCode ); }, - - addToRegion: function( langCode, regionGroup ) { + /** + * Add the language to a region. + * If the region parameter is given , add to that region alone + * Otherwise to all regions that this language belongs. + * @param langCode + * @param region + */ + addToRegion: function( langCode, region ) { var that = this, language = $.uls.data.languages[langCode]; @@ -28,20 +34,23 @@ var langName = that.options.languages[langCode]; - var regions = $.uls.data.regions( langCode ); + var regions = []; + if ( region ) { + regions.push( region ); + } else{ + regions = $.uls.data.regions( langCode ); + } + for ( var i = 0; i < regions.length; i++ ) { var regionCode = regions[i]; - if ( regionGroup && regionCode !== regionGroup ) { - continue; - } - var $li = $( '
  • ' ) .data( 'code', langCode ) .append( $( '' ).prop( 'href', '#' ).html( langName ) ); that.getColumn( regionCode ).append( $li ); + if ( that.options.clickhandler ) { $li.click( function() { that.options.clickhandler.call( this, langCode );