User:魔琴/gadgets/chn2prc/index.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
mw.loader.using('mediawiki.util').done(function () {
if (mw.config.get("wgNamespaceNumber") < 0) {
return;
}
var p = mw.config.get("wgPageName");
var API = new mw.Api();
var linkp = mw.util.addPortletLink('p-cactions', '#', 'CHN→PRC', 'ca-chn2prc', '将{{CHN}}改为{{PRC}}');
var linkm = mw.util.addPortletLink('p-cactions', '#', 'CHN→CHNML', 'ca-chn2chnml', '将{{CHN}}改为{{中国大陆}}');
var linkc = mw.util.addPortletLink('p-cactions', '#', 'CHN→China', 'ca-chn2china', '将{{CHN}}改为[[中國]]');
$(linkp).click(function (event) {
parse('{{PRC}}', '{{PRC}}');
});
$(linkm).click(function (event) {
parse('{{中国大陆}}', '{{中国大陆}}');
});
$(linkc).click(function (event) {
parse('[[中國]]', '中國');
});
function parse(a, st) {
var getText = API.post({
action: 'parse',
page: p,
prop: 'wikitext',
formatversion: '2'
}).done(function (data) {
newtext = data.parse.wikitext.replace(/{{\s*(((flag\s*\|\s*(China|CHN|中[国國]))|CHN(-1949)?)(\|.*?)?}}|flag\s*\|\s*(People's Republic of China|China, People's Republic of|China PR|China|CHN|PRC|中国大陆|中國大陸|中([華华]人民共和)?[国國])\s*\|\s*name\s*=\s*中[国國]|flag(icon|deco)\s*\|\s*(People's Republic of China|China, People's Republic of|China PR|China|CHN|PRC|中国大陆|中國大陸|中([華华]人民共和)?[国國])\s*}}(\s| )\[\[(中([華华]人民共和)?[国國]\|)?中[国國]\]\])/gmi, a + '$6');
var getDiff = API.post({
action: 'compare',
format: 'json',
fromtitle: p,
toslots: 'main',
prop: 'diff',
"totext-main": newtext,
formatversion: '2'
}).done(function (data) {
var dl = null;
var html = data.compare.body
? '<div id="chn2prc-table" style="overflow-y:scroll"><table class="diff"><colgroup><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content"></colgroup><tbody>' + data.compare.body + '</tbody></table></div>'
: '<div style="margin:20px;font-size:18px;text-align:center;" id="chn2prc-table">无差异</div>';
if (dl) {
dl.html(html).dialog("open");
return null;
}
if (data.compare.body) {
dl = $(html).dialog({
title: 'CHN to ' + st,
minWidth: 600,
minHeight: 100,
buttons: [{
text: "确定",
click: function () {
edit(newtext, a, st);
$(this).dialog('close');
$("#chn2prc-table").closest(".ui-dialog").remove();
}
},
{
text: "取消",
click: function () {
$(this).dialog('close');
}
}
]
});
} else {
dl = $(html).dialog({
title: 'CHN to ' + st,
minWidth: 600,
minHeight: 100,
buttons: [{
text: "关闭",
click: function () {
$(this).dialog('close');
}
}
]
});
}
}).fail(function (error) {
mw.notify("错误:" + error);
});
}).fail(function (error) {
mw.notify("错误:" + error);
});
}
function edit(t, a, st) {
var revId = mw.config.get('wgRevisionId');
var checkId = API.post({
action: 'parse',
page: p,
prop: 'revid',
formatversion: '2'
}).done(function (data) {
if (data.parse.revid !== revId) {
mw.notify('编辑冲突,请重试。');
} else {
var promise = API.postWithToken('csrf', {
action: 'edit',
title: p,
text: t,
summary: '[[User:魔琴/gadgets/chn2prc|{{CHN}} → ' + st + ']]'
}).then(function (result) {
mw.notify("编辑成功,将自动刷新页面");
setTimeout(function () {
window.location.reload();
}, 4000);
}).fail(function (error) {
mw.notify("错误:" + error);
});
}
}).fail(function (error) {
mw.notify("错误:" + error);
});
}
});