MediaWiki:Gadget-rollback-summary.js

提供: 萌えっ娘百科事典
2017年12月28日 (木) 15:39時点におけるAnnAngela (トーク | 投稿記録)による版 (bot work)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explorer: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: メニュー → 設定 (Mac では Opera → 環境設定) に移動し、プライバシーとセキュリティ → 閲覧データを消去 → キャッシュされた画像およびファイル からキャッシュをクリアしてください。
$(function() {
    mw.config.set({
        'wgRollbacking': false,
        'wgRollbackTool': 'inited'
    });
    $.fn.extend({
        getParamValue: function getParamValue(param) {
            var href = this.data('href');
            if (!href) return undefined;
            return mw.util.getParamValue(param, href);
        }
    });
    $('.mw-rollback-link a').each(loop);
    $(document.body).on('click', function(event) {
        if (!$(event.target).is('.mw-rollback-link a')) return true;
        var self = $(event.target),
            parent = self.parent();
        if (!self.data('href')) loop.bind(event.target)();
        if (!parent.find(self)[0]) return false;
        if (mw.config.get('wgRollbacking')) return true;
        var rollbackSummary = prompt('回退操作的编辑摘要【xxx//Rollback】\n【空白则使用默认回退摘要】\n【取消则不进行回退】:');
        if (rollbackSummary !== null) $.ajax({
            type: 'POST',
            url: 'https://zh.moegirl.org/api.php',
            beforeSend: function() {
                self.replaceWith('<span id="rbing"><img src="https://static.mengniang.org/common/d/d1/Windows_10_loading.gif" style="height: 1em; margin-top: -.25em;">正在回退中……</span>');
                self = $('#rbing');
                $('.mw-rollback-link a').not(self).css({
                    color: '#aaa',
                    "text-decoration": 'none'
                });
                mw.config.set('wgRollbacking', true);
            },
            data: {
                title: self.getParamValue('title'),
                user: self.getParamValue('from'),
                summary: rollbackSummary ? rollbackSummary + ' //Rollback' : '//Rollback',
                token: self.getParamValue('token'),
                action: 'rollback',
                format: 'json'
            },
            error: function(eO, eM, eC) {
                eC = eM ? eC + '(' + eM + ')' : eC;
                self.css('color', 'red').html('错误:' + eC + '。将在<span id="rbcount">3</span>秒内刷新');
                exit();
            },
            success: function(d) {
                if (d.error) self.css('color', 'red').html('错误:已被回退。将在<span id="rbcount">3</span>秒内刷新');
                else self.css('color', 'green').html('成功!将在<span id="rbcount">3</span>秒内刷新');
                exit();
            }
        });
        return false;
    });
    function exit() {
        window.setInterval(function() {
            var count = +$('#rbcount').text();
            if (count-- == 1) window.location.reload();
            $('#rbcount').text(count > 0 ? count : '0');
        }, 1000);
    }
    function loop() {
        var self = $(this);
        self.data('href', self.attr('href')).removeAttr('href') //取消拖动链接回退
            .attr('title', this.title + '(启用自定义摘要)').css('cursor', 'pointer').append('<sup>+</sup>');
        if ($('.ns-special')[0] && self.text().indexOf('10') != -1) self.parent().text('[超过10次的编辑]').attr('title', '超过10次的编辑请使用撤销功能,以便检查差异(自定义摘要小工具)');
    }
});