Correct the naming of region and region groups

Change-Id: I857178bc9f830e1ecee7c34541ebab3fbbe95fbd
This commit is contained in:
Santhosh Thottingal
2012-07-03 10:23:10 +05:30
parent 765e9be3fd
commit 851d07dd8c
4 changed files with 33 additions and 24 deletions

View File

@@ -67,13 +67,13 @@ class UniversalLanguageSelectorHooks {
</div> </div>
<div class=\"uls-menu-header-right\"> <div class=\"uls-menu-header-right\">
<div class='uls-worldmap'> <div class='uls-worldmap'>
<div class='uls-region' id='uls-region-1' data-region='1'> <div class='uls-region' id='uls-region-1' data-regiongroup='1'>
<a>North America<br>Latin America<br>South America</a> <a>North America<br>Latin America<br>South America</a>
</div> </div>
<div class='uls-region' id='uls-region-2' data-region='2'> <div class='uls-region' id='uls-region-2' data-regiongroup='2'>
<a>Europe<br>Middle East<br>Africa</a> <a>Europe<br>Middle East<br>Africa</a>
</div> </div>
<div class='uls-region' id='uls-region-3' data-region='3'> <div class='uls-region' id='uls-region-3' data-regiongroup='3'>
<a>Asia<br>Australia<br>Pacific</a> <a>Asia<br>Australia<br>Pacific</a>
</div> </div>
</div> </div>

View File

@@ -47,17 +47,17 @@
</div> </div>
<div class="uls-menu-header-right"> <div class="uls-menu-header-right">
<div class="uls-worldmap"> <div class="uls-worldmap">
<div data-region="1" id="uls-region-1" class="uls-region regionselector"> <div data-regiongroup="1" id="uls-region-1" class="uls-region regionselector">
<a>America</a> <a>America</a>
</div> </div>
<div data-region="2" id="uls-region-2" class="uls-region regionselector"> <div data-regiongroup="2" id="uls-region-2" class="uls-region regionselector">
<a>Europe <a>Europe
<br> <br>
Middle East Middle East
<br> <br>
Africa</a> Africa</a>
</div> </div>
<div data-region="3" id="uls-region-3" class="uls-region regionselector"> <div data-regiongroup="3" id="uls-region-3" class="uls-region regionselector">
<a>Asia <a>Asia
<br> <br>
Australia Australia

View File

@@ -104,15 +104,15 @@
/* /*
* Region selector is a language selector based on regions. * Region selector is a language selector based on regions.
* Usage: $( 'jqueryselector' ).regionselector( options ); * Usage: $( 'jqueryselector' ).regionselector( options );
* The attached element should have data-region attribute * The attached element should have data-regiongroup attribute
* that defines the region for the selector. * that defines the regiongroup for the selector.
*/ */
var RegionSelector = function( element, options ) { var RegionSelector = function( element, options ) {
this.$element = $( element ); this.$element = $( element );
this.options = $.extend( {}, $.fn.regionselector.defaults, options ); this.options = $.extend( {}, $.fn.regionselector.defaults, options );
this.$element.addClass( 'regionselector' ); this.$element.addClass( 'regionselector' );
this.listen(); this.listen();
this.region = this.$element.data( 'region' ); this.regionGroup = this.$element.data( 'regiongroup' );
}; };
RegionSelector.prototype = { RegionSelector.prototype = {
@@ -122,13 +122,13 @@
var languages = $.uls.data.languages; var languages = $.uls.data.languages;
var regionGroups = $.uls.data.regiongroups; var regionGroups = $.uls.data.regiongroups;
var regions = languages[langCode][1]; 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 // 2. check that the region matches the active region group
// 3. if this language is included in that region, show it // 3. if this language is included in that region, show it
// 4. if none of the conditions match, the language is not shown // 4. if none of the conditions match, the language is not shown
$.each( regionGroups, function( regionGroup, groupId ) { $.each( regionGroups, function( region, regionGroup) {
if ( groupId === that.region && $.inArray( regionGroup, regions ) >= 0 ) { if ( regionGroup === that.regionGroup && $.inArray( region, regions ) >= 0 ) {
that.render( langCode, regionGroup ); that.render( langCode, region );
return; return;
} }
} ); } );
@@ -152,12 +152,12 @@
that.options.callback.call(); that.options.callback.call();
} }
}, },
render: function( langCode, regionGroup) { render: function( langCode, region) {
var $target = this.options.$target; var $target = this.options.$target;
if ( !$target ) { if ( !$target ) {
return; return;
} }
$target.append( langCode, regionGroup ); $target.append( langCode, region );
}, },
listen: function(){ listen: function(){
this.$element.on( 'click', $.proxy( this.click, this ) ); this.$element.on( 'click', $.proxy( this.click, this ) );

View File

@@ -12,12 +12,18 @@
LanguageCategoryDisplay.prototype = { LanguageCategoryDisplay.prototype = {
constructor: LanguageCategoryDisplay, constructor: LanguageCategoryDisplay,
append: function( langCode, regionGroup ) { append: function( langCode, regionCode ) {
var that = this; 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, var that = this,
language = $.uls.data.languages[langCode]; language = $.uls.data.languages[langCode];
@@ -28,20 +34,23 @@
var langName = that.options.languages[langCode]; 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++ ) { for ( var i = 0; i < regions.length; i++ ) {
var regionCode = regions[i]; var regionCode = regions[i];
if ( regionGroup && regionCode !== regionGroup ) {
continue;
}
var $li = $( '<li>' ) var $li = $( '<li>' )
.data( 'code', langCode ) .data( 'code', langCode )
.append( .append(
$( '<a>' ).prop( 'href', '#' ).html( langName ) $( '<a>' ).prop( 'href', '#' ).html( langName )
); );
that.getColumn( regionCode ).append( $li ); that.getColumn( regionCode ).append( $li );
if ( that.options.clickhandler ) { if ( that.options.clickhandler ) {
$li.click( function() { $li.click( function() {
that.options.clickhandler.call( this, langCode ); that.options.clickhandler.call( this, langCode );