跳转到内容

User:魔琴/gadgets/chn2prc/index.js

维基百科,自由的百科全书

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ 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}}改为{{中国大陆}}');
$(linkp).click(function(event) {
    parse('PRC');
});
$(linkm).click(function(event) {
    parse('中国大陆');
});

function parse(a) {
    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|&nbsp;)\[\[(中([華华]人民共和)?[国國]\|)?中[国國]\]\])/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 ' + a,
	                minWidth: 600,
	                minHeight: 100,
	                buttons: [{
	                        text: "确定",
	                        click: function() {
	                            edit(newtext, a);
	                            $(this).dialog('close');
	                            $("#chn2prc-table").closest(".ui-dialog").remove();
	                        }
	                    },
	                    {
	                        text: "取消",
	                        click: function() {
	                            $(this).dialog('close');
	                        }
	                    }
	                ]
	            });
            } else {
            	dl = $(html).dialog({
	                title: 'CHN to ' + a,
	                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) {
    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}} → {{' + a + '}}]]'
            }).then(function(result) {
                mw.notify("编辑成功,将自动刷新页面");
                setTimeout(function() {
                    window.location.reload();
                }, 4000);
            }).fail(function(error) {
                mw.notify("错误:" + error);
            });
        }
    }).fail(function(error) {
        mw.notify("错误:" + error);
    });
}

});