跳转到内容

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}}改为{{中国大陆}}');
    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|&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 ' + 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);
        });
    }

});