User:WiTo7946/Gadget/DraftInserter/main.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
(function () {
'use strict';
// --- 在這裡新增或修改 --- //
var skeletons = {
'Bird': 'User:WiTo7946/Gadget/DraftInserter/1',
'Genus': 'User:WiTo7946/Gadget/DraftInserter/2',
};
// ------------------------------- //
var action = mw.config.get('wgAction');
if (action !== 'edit' && action !== 'submit') return;
mw.loader.using('mediawiki.api', function () {
var api = new mw.Api();
// 決定要加在哪個 portlet
var area;
switch (mw.config.get('skin')) {
case 'vector2022':
area = 'mw-editTools'; break;
case 'minerva':
area = 'p-tb'; break;
default:
area = 'p-views'; break;
}
// 新增連結
mw.util.addPortletLink(
area,
'#',
'插入草稿',
'ca-insertskel',
'在編輯框插入選定的草稿'
);
$('#ca-insertskel').on('click', function (e) {
e.preventDefault();
var keys = Object.keys(skeletons);
var list = keys.map(function (k, i) { return (i + 1) + '. ' + k; }).join('\n');
var idx = prompt('請輸入要插入的草稿編號:\n' + list);
var num = parseInt(idx, 10);
if (!num || num < 1 || num > keys.length) {
alert('無效的編號,操作已取消');
return;
}
var pageTitle = skeletons[keys[num - 1]];
var $txt = $('#wpTextbox1');
if (!$txt.length) {
alert('找不到編輯框'); return;
}
if ($txt.val().length > 0 && !confirm('編輯框已有內容,確定要插入?')) return;
api.get({ action: 'query', prop: 'revisions', rvprop: 'content', titles: pageTitle })
.done(function (data) {
var pages = data.query.pages, content = '';
Object.values(pages).forEach(function (p) {
if (p.revisions) content = p.revisions[0]['*'];
});
insertAtCursor($txt[0], content);
})
.fail(function () { alert('無法取得內容'); });
});
function insertAtCursor(textarea, text) {
var scroll = textarea.scrollTop;
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.slice(0, start) + text + textarea.value.slice(end);
textarea.selectionStart = textarea.selectionEnd = start + text.length;
textarea.focus(); textarea.scrollTop = scroll;
}
});
})();