置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

User:实验性:无用论废人/js/QuickUndo.js

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
  • Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
  • Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
  • Opera:在“工具→首选项”中清除缓存
如果您已登录但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码?_=1来访问最新页面。
添加代码后的本页地址如下:-{R|https://moegirl.uk/User:%E5%AE%9E%E9%AA%8C%E6%80%A7%EF%BC%9A%E6%97%A0%E7%94%A8%E8%AE%BA%E5%BA%9F%E4%BA%BA/js/QuickUndo.js?_=1}-
/**
  * mw.loader.load('https://mzh.moegirl.org.cn/index.php?title=User:Nzh21/js/QuickUndo.js&action=raw&ctype=text/javascript');
  */
$(function () {
    function undo(pageid, undoid, undoafter, ignoreabusefilter = true) {
        ajaxdata = {
            "action": "edit",
            "format": "json",
            "pageid": pageid,
            "summary": '[[User:Nzh21/js/QuickUndo.js|快速撤销]]从版本' + undoafter + '到版本' + undoid + '的[[Special:Diff/' + undoafter + '/' + undoid + '|所有编辑]]',
            "undo": undoid,
            "token": mw.user.tokens.values.csrfToken,// 此处小更改
        };
        if (undoafter) ajaxdata.undoafter = undoafter;
        mw.notify('正在操作');
        $.ajax({
            type: "POST",
            url: '/api.php',
            data: ajaxdata,
            success: function (data) {
                if (data.edit && data.edit.result == 'Success') {
                    if (data.edit.nochange != undefined) {
                        mw.notify('这次编辑似乎已被撤销。');
                    } else {
                        mw.notify('完成');
                        setTimeout(function () { window.open('/Special:Diff/' + data.edit.newrevid); }, 0);
                    }
                } else if (data.edit && data.edit.result == 'Failure' && data.edit.abusefilter && data.edit.abusefilter.actions.indexOf('warn') != -1 && ignoreabusefilter) {
                    mw.notify('遇到过滤器' + data.edit.abusefilter.id + '(' + data.edit.abusefilter.description + '),忽略警告');
                    setTimeout(function () { undo(pageid, undoid, undoafter, false) }, 0);
                } else if (data.error && data.error.info == 'The edit could not be undone due to conflicting intermediate edits.') {
                    mw.notify('因存在冲突的中间编辑,本编辑不能撤销。');
                } else {
                    mw.notify('出现未知错误,以下是错误信息:'
                        + JSON.stringify(data));
                    console.log(JSON.stringify(data))
                }
            },
            error: function () {
                mw.notify('网络连接出错');
            }
        })
    }
    if (mw.config.values.wgDiffNewId || mw.config.values.wgDiffOldId) {
        $('.mw-diff-undo').each(function () {
            this.innerHTML = this.innerHTML.replace(/)$/, '/<a href="#." title = "无需确定并忽略过滤器警告" class="quickundo_diff">快速撤销</a >)')
        });
        $('a.quickundo_diff').each(function () {
            this.onclick = function () {
                undo(mw.config.values.wgArticleId, mw.config.values.wgDiffNewId, mw.config.values.wgDiffOldId);
            }
        });
    }
    if (mw.config.values.wgAction == 'history') {
        $('.mw-history-undo').append('/<a href="#." title = "无需确定并忽略过滤器警告" class="quickundo_history">快速撤销</a >');
        $('a.quickundo_history').each(function () {
            this.onclick = function () {
                var href = $(this).parents('span.mw-history-undo').children('a:not(.quickundo_history)')[0].href;
                var undoid = href.match(/undo=(\d+)/)[1];
                var undoafter = href.match(/undoafter=(\d+)/)[1];
                undo(mw.config.values.wgArticleId, undoid, undoafter);
            }
        });
 
        var last_user = $('.history-user:first .mw-userlink:first')[0].href;
        var undoafter = -1;
        var times = 0;
        $.each($('.history-user .mw-userlink'), function () {
            if (this.href != last_user) {
                undoafter = $(this).parents('li')[0].dataset.mwRevid;
                return false;
            } else {
                times++;
            }
        });
        var rollback = document.createElement('a');
        rollback.innerText = '回退' + times + '次的编辑';
        rollback.href = '#.';
        rollback.onclick = function () {
            undo(mw.config.values.wgArticleId, mw.config.values.wgCurRevisionId, undoafter);
        }
        $('#pagehistory li:first').append('[').append(rollback).append(']')
    }
    window.QuickDiffExtension = window.QuickDiffExtension || [];
    window.QuickDiffExtension.push(function (that, data) {
        $(that).find('#quick-diff-content').prepend('<input class="quick-undo-quick-diff" title="查无需确定并忽略过滤器警告" type="submit" value="快速撤销此编辑">');
        $(that).find('input.quick-undo-quick-diff').each(function () {
            this.onclick = function () {
                undo(data.compare.fromid, data.compare.fromrevid, data.compare.torevid);
            }
        });
    });
});