From 7865a65bb0a6160eaad7242277c8fcd7675c67a6 Mon Sep 17 00:00:00 2001 From: eranroz Date: Mon, 25 Aug 2014 23:59:33 +0300 Subject: [PATCH] Compact links: Set href for langugage links in ULS panel Based on jquery.uls upstream version 982e2c32e7b3 https://github.com/wikimedia/jquery.uls/commit/982e2c32e7b3 Bug: 64797 Change-Id: Ia8b2ad22913693d2f88693091d288ca74d7d8c87 --- lib/jquery.uls/src/jquery.uls.core.js | 6 ++++-- lib/jquery.uls/src/jquery.uls.lcd.js | 7 +++++-- resources/js/ext.uls.compactlinks.js | 4 ++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/jquery.uls/src/jquery.uls.core.js b/lib/jquery.uls/src/jquery.uls.core.js index 548a07be..8852d59e 100644 --- a/lib/jquery.uls/src/jquery.uls.core.js +++ b/lib/jquery.uls/src/jquery.uls.core.js @@ -267,7 +267,8 @@ quickList: this.options.quickList, clickhandler: $.proxy( this.select, this ), source: this.$languageFilter, - showRegions: this.options.showRegions + showRegions: this.options.showRegions, + languageDecorator: this.options.languageDecorator } ).data( 'lcd' ); this.$languageFilter.languagefilter( { @@ -400,7 +401,8 @@ languages: $.uls.data.getAutonyms(), // Languages to be used for ULS, default is all languages quickList: null, // Array of language codes or function that returns such compact: false, // Show ULS in compact mode - showRegions: [ 'WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA' ] + showRegions: [ 'WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA' ], + languageDecorator: null // Callback function to be called when a language link is prepared - for custom decoration. }; // Define a dummy i18n function, if jquery.i18n not integrated. diff --git a/lib/jquery.uls/src/jquery.uls.lcd.js b/lib/jquery.uls/src/jquery.uls.lcd.js index 7d207bd0..8ae56388 100644 --- a/lib/jquery.uls/src/jquery.uls.lcd.js +++ b/lib/jquery.uls/src/jquery.uls.lcd.js @@ -246,7 +246,9 @@ a.className = 'autonym'; li.appendChild( a ); - + if ( this.options.languageDecorator ) { + this.options.languageDecorator( $( a ), code ); + } return li; }, @@ -386,7 +388,8 @@ $.fn.lcd.defaults = { languages: null, showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA'], - itemsPerColumn: 8 + itemsPerColumn: 8, + languageDecorator: null }; $.fn.lcd.Constructor = LanguageCategoryDisplay; diff --git a/resources/js/ext.uls.compactlinks.js b/resources/js/ext.uls.compactlinks.js index 871f0764..20c44e9f 100644 --- a/resources/js/ext.uls.compactlinks.js +++ b/resources/js/ext.uls.compactlinks.js @@ -132,6 +132,10 @@ } this.$menu.css( 'left', this.left ); }, + languageDecorator: function ( $languageLink, language ) { + // set href according to language + $languageLink.prop( 'href', compactLinks.interlanguageList[ language ].href ); + }, // Use compact version of ULS compact: true, // Top position of the language selector. Top it 250px above to take care of