“MediaWiki:Gadget-autocomplete-core.js”的版本间差异

无编辑摘要
 
(未显示同一用户的17个中间版本)
//<nowiki>
$(function() {
var editbox, = $('#wpTextbox1')prefix,
if(!['edit','submit'].includes( mw.config.get('wgAction') ) ||
mw.config.get('wgPageContentModel') != 'wikitext') {
return;
}
mw.util.addCSS('.wikiEditor-ui-text { position:relative; } #autocompleteHints { display:inline-block; position:absolute; left:50%; top:0; cursor:move; padding:0.1em 0.3em; } #autocompleteHints ul { list-style:none; margin:0; } #autocompleteHints li { cursor:pointer; color:#0645ad; } #autocompleteHints li:hover { text-decoration:underline; }');
var editbox = $('#wpTextbox1'),
api = new mw.Api(),
autocomplete = false;
const regexp1 = /\[\[((?:(?!(\[|]|\|)).)*)$/,
regexp2 = /{{((?:(?!({|}|\||:|#)).)*)$/,
regexp3 = /{{#invoke:((?:(?!({|}|\|)).)*)$/i,
regexp4 = /{{#widget:((?:(?!({|}|\|)).)*)$/i;
var getPrefix = function() {
var position = editbox.prop('selectionEnd'),
left = editbox.val().substring(0, position),
result = null;
if(result = left.match(regexp1)) { return ['*', result[1]]; }
if( /^(.+)#/.test(result[1]) ) {
var section = result[1].match(/^(.+)#(.*)/);
return ['sec', section[1], section[2]];
}
if( /^(.+):/.test(result[1]) ) { return ['*', result[1]]; }
if( /^:/.test(result[1]) ) { return ['6|14', result[1]]; }
return ['0', result[1]];
}
if(result = left.match(regexp2)) { return ['10', result[1]]; }
if(result = left.match(regexp3)) { return ['828', result[1]]; }
};
var showHints = function() {
//console.log('Autocompletion begins.');
autocomplete = true;
var if(prefix[1]) ={ getPrefixupdateHints(); }
if(prefix[1]) { updateHints(prefix); }
editbox.on('input', function() {
var prefix = getPrefix();
if(!prefix) {
hideHints();
else {
setTimeout(function() {
updateHints(prefix);
}, 500);
}
};
var hideHints = function() {
//console.log('Autocompletion ends.');
autocomplete = false;
editbox.off('input');
$('#autocompleteHints').remove();
};
var updateHints = function(prefix) {
var hints;
if( $('#autocompleteHints').length ) {
hints = $('#autocompleteHints').eq(0);
}
else {
hints = $('<div id="autocompleteHints" class="ui-widget-content">').insertAfter(editbox);
hints.draggable();
hints.on('click', 'li', function(e) {
var ele = $(e.target),
left = editbox.val().substring(0, position),
right = editbox.val().substring(position);
ifswitch(prefix[0] == '*') {
editbox.val(left.replace(regexp1,'[[') + ele.text() +case ']]sec' + right);:
left = left.replace(regexp1,'[[') + prefix[1] + '#' + ele.text() + ']]';
}
else if(prefix[0] == 10) { break;
editbox.val(left.replace(regexp1,'{{') + ele.text().substring(9) +case '}}*' + right);:
} case '0':
else if left = left.replace(prefixregexp1,'[0][') ==+ 274ele.text() {+ ']]';
editbox.val(left.replace(regexp1,'{{#') + ele.text() + ']]' + right)break;
} case '6|14':
else if left = left.replace(prefixregexp1,'[0][:') ==+ 828ele.text() {+ ']]';
editbox.val(left.replace(regexp1,'{{#invoke') + ele.text().substring(6) + ']]' + right)break;
case '10':
left = left.replace(regexp2,'{{') + ele.text().substring(9) + '}}';
break;
case '828':
left = left.replace(regexp3,'{{#invoke') + ele.text().substring(2) + '}}';
break;
case '274':
left = left.replace(regexp4,'{{#') + ele.text() + '}}';
}
editbox.val(left + right);
editbox.prop('selectionStart', left.length);
editbox.prop('selectionEnd', left.length);
hideHints();
});
}
else {
hints = $('<div id="autocompleteHints" class="ui-widget-content">').insertAfter(editbox);
hints.draggable();
}
if(!prefix[1]) {
return;
}
if(prefix[10]) {== updateHints(prefix'sec'); }{
api.get({action:'query', list:'prefixsearch', pssearch:prefix[1], psnamespace:prefix[0], formatversion:2})
api.get({action:'parse', page:prefix[1], prop:'sections', formatversion:2})
.then(function(data) {
var section = data.parse.sections.map((ele) => ele.anchor),
secHints = [],
regexp = new RegExp('^' + prefix[2]);
section.forEach(function(ele) {
if(regexp.test(ele)) { secHints.push(ele); }
});
if(secHints.length === 0) { hints.html('<span class="error">' + wgUCS("该页面没有对应章节", "該頁面沒有對應章節") + '</span>'); }
else { hints.html('<ul><li>' + secHints.join('</li><li>') + '</li></ul>'); }
}, function() {
hints.html('<span class="error">' + wgUCS("没有对应页面", "沒有對應頁面") + '</span>');
}
);
return;
}
api.get({action:'query', list:'prefixsearch', pssearch:prefix[1].replace(/^:/, ''), psnamespace:prefix[0], formatversion:2})
.then(function(data) {
var titles = data.query.prefixsearch.map( (ele) => '<li>' + ele.title + '</li>' );
};
 
editbox$('body').keydownon('keydown', '#wpTextbox1, #Wikiplus-Quickedit', function(e) {
editbox = $(this);
if(e.keyCode == 9) {
var prefix = getPrefix();
e.preventDefault();
if(prefix && !autocomplete) {
});
});
//</nowiki>
16,874

个编辑