Cross-language language name search
Implementation of Also Written As language name search algorithm. See http://etherpad.wikimedia.org/l10n-uls-language-search Change-Id: Iff84408c531b650a44d031b63d5c823737cceafc
This commit is contained in:
@@ -96,7 +96,8 @@
|
||||
|
||||
that.$languageFilter.languagefilter( {
|
||||
$target: $lcd, //$( 'ul.uls-language-filter-result' ),
|
||||
languages: that.languages
|
||||
languages: that.languages,
|
||||
searchAPI: that.options.searchAPI
|
||||
} );
|
||||
|
||||
// Create region selectors, one per region
|
||||
@@ -174,7 +175,8 @@
|
||||
|
||||
$.fn.uls.defaults = {
|
||||
menu: '.uls-menu',
|
||||
onSelect: null // Callback function to be called when a language is selected
|
||||
onSelect: null, // Callback function to be called when a language is selected
|
||||
searchAPI: null // Language search API
|
||||
};
|
||||
|
||||
$.fn.uls.Constructor = ULS;
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
setlang : language
|
||||
} );
|
||||
window.location.href = uri.toString();
|
||||
}
|
||||
},
|
||||
searchAPI: mw.util.wikiScript( 'api' ) + "?action=languagesearch"
|
||||
} );
|
||||
} );
|
||||
} )( jQuery );
|
||||
|
||||
@@ -59,14 +59,27 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
// Also do a search to search API
|
||||
if( this.options.searchAPI && query){
|
||||
this.searchAPI( query );
|
||||
}
|
||||
},
|
||||
|
||||
render: function( langCode ) {
|
||||
searchAPI: function( query ) {
|
||||
var that = this;
|
||||
$.get( that.options.searchAPI, { search: query }, function( result ) {
|
||||
$.each( result['languagesearch'], function( code, name ) {
|
||||
that.render( code, name );
|
||||
} );
|
||||
} );
|
||||
},
|
||||
|
||||
render: function( langCode, languageName ) {
|
||||
var $target = this.options.$target;
|
||||
if ( !$target ) {
|
||||
return;
|
||||
}
|
||||
$target.append( langCode );
|
||||
$target.append( langCode, null, languageName );
|
||||
},
|
||||
|
||||
escapeRegex: function( value ) {
|
||||
@@ -110,7 +123,8 @@
|
||||
$.fn.languagefilter.defaults = {
|
||||
$target: null, // Where to append the results
|
||||
languages: null, // Languages as code:name format. Default values come from data.languages.
|
||||
clickhandler: null
|
||||
clickhandler: null,
|
||||
searchAPI: null
|
||||
};
|
||||
|
||||
$.fn.languagefilter.Constructor = LanguageFilter;
|
||||
|
||||
@@ -31,27 +31,39 @@
|
||||
LanguageCategoryDisplay.prototype = {
|
||||
constructor: LanguageCategoryDisplay,
|
||||
|
||||
append: function( langCode, regionCode ) {
|
||||
append: function( langCode, regionCode, languageName ) {
|
||||
var that = this;
|
||||
this.addToRegion( langCode, regionCode );
|
||||
this.addToRegion( langCode, regionCode, languageName );
|
||||
},
|
||||
/**
|
||||
* Check whether a language code is already displayed or not.
|
||||
* @param langCode
|
||||
* @return boolean
|
||||
*/
|
||||
exists: function( langCode ) {
|
||||
return this.$element.find( 'li' ).filter(function() {
|
||||
return $(this).data('code') === langCode;
|
||||
} ).length > 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param region Optional region
|
||||
* @param languageName Optional languageName
|
||||
*/
|
||||
addToRegion: function( langCode, region ) {
|
||||
var that = this,
|
||||
language = that.options.languages[langCode];
|
||||
|
||||
var langName = $.uls.data.autonym( langCode )
|
||||
|| that.options.languages[langCode]
|
||||
|| langCode;
|
||||
|
||||
var regions = [];
|
||||
addToRegion: function( langCode, region, languageName) {
|
||||
var that = this;
|
||||
if ( that.exists( langCode ) ) {
|
||||
return;
|
||||
}
|
||||
var language = $.uls.data.languages[langCode],
|
||||
langName = languageName
|
||||
|| $.uls.data.autonym( langCode )
|
||||
|| that.options.languages[langCode]
|
||||
|| langCode,
|
||||
regions = [];
|
||||
if ( region ) {
|
||||
regions.push( region );
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user