artabro/wire/modules/LanguageSupport/ProcessLanguage.js
2024-08-27 11:35:37 +02:00

55 lines
1.8 KiB
JavaScript

jQuery(document).ready(function($) {
$('.language-phrase-search').each(function() {
var $input = $(this);
$input.autocomplete({
source: function(request, response) {
var data = [];
var n = 0;
var offset = 0;
do {
offset = phraseIndex.toLowerCase().indexOf(request.term.toLowerCase(), offset);
if(offset < 0) break;
var first = phraseIndex.lastIndexOf('|', offset);
var last = phraseIndex.indexOf('|', offset);
var phrase = phraseIndex.substring(first + 1, last);
first = phraseIndex.indexOf('^', offset);
last = phraseIndex.indexOf('|', first + 1);
var col = phraseIndex.indexOf(':', first);
var textdomain = phraseIndex.substring(first + 1, col);
var file = phraseIndex.substring(col + 1, last - 1);
var basename = file.substring(file.lastIndexOf('/') + 1);
if(phrase.length > 100) phrase = phrase.substring(0, 100) + '…';
offset = first;
if(phrase.indexOf('^') > -1) continue;
phrase = basename + ': ' + phrase;
data[n++] = {label: phrase, value: textdomain + ':' + file};
if(n > 50) break;
} while(1);
if(n > 50) n = "50+";
$input.next(".language-phrase-search-cnt").text(n);
response(data);
},
minLength: 3,
select: function(event, ui) {
if(ui.item) {
var x = ui.item.value.split(':');
var textdomain = x[0];
var file = x[1];
var url = '../../language-translator/edit/?language_id=' + phraseLanguageID +
'&textdomain=' + textdomain + '&filename=' + file;
window.location.href = url;
}
/*
console.log( ui.item ?
'Selected: ' + ui.item.label :
'Nothing selected, input was ' + this.value);
*/
}
}).on('blur', function() {
$input.next(".language-phrase-search-cnt").text('');
}).on('keydown', function(e) {
if(e.keyCode == 13) return false;
});
});
});