55 lines
1.8 KiB
JavaScript
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;
|
|
});
|
|
});
|
|
});
|