User:Irukaza/js/editConflict.js:修订间差异

H萌娘,万物皆可H的百科全书!
跳到导航 跳到搜索
imported>=海豚=
无编辑摘要
imported>=海豚=
无编辑摘要
第1行: 第1行:
(async () => {
(async () => {
   if (!["edit", "submit"].includes(mw.config.get("wgAction"))) {
     return;
   }
    await mw.loader.using("mw.Api");
    await mw.loader.using("mw.Api");
    mw.loader.using('mediawiki.notification');
    mw.loader.using('mediawiki.notification');
第21行: 第18行:
    }
    }
    wpSave.on("click", () => {
    wpSave.on("click", () => {
     if (needCheckFlag === true) {
        needCheckFlag = false;
        needCheckFlag = false;
       setTimeout(async () => {
          disable(wpSave.attr("disabled", "disabled").val("正在提交......"));
          disable(wpSave.attr("disabled", "disabled").val("正在提交......"));
         for (let i = 1; i <= 4; i++) {
            catch (e) {
            try {
             const result = await api.post({
               action: "query",
               prop: "revisions",
               rvprop: "ids",
               rvlimit: 1,
               titles: wgPageName,
             });
             const pageid = Object.keys(result.query.pages)[0];
             if (pageid > 0 && result.query.pages[pageid].revisions[0].revid > wgCurRevisionId) {
               wpSave.val("正在提交......");
               const pre = $("<pre/>", {
                 css: {
                   position: "absolute",
                   left: "-99999px",
                   "z-index": "-99999",
                 }
               });
               $("#showNewestRevisionDiff").on("click", () => {
                 window.open(`https://www.hmoegirl.com/?diff=${result.query.pages[pageid].revisions[0].revid}`, "_blank").focus();
               });
               disable($("#wikieditor").on("click", () => {
                 setTimeout(() => {
                   alert(conflictAlert);
                 }, 1);
                 return false;
               }).attr("title", conflictAlert));
               await mw.loader.using('mediawiki.notification');
               $("#mw-notification-area").css({
                 position: "fixed",
                 top: 0,
               }).appendTo("body");
             } else {
               wpSave.val("正在提交......");
               editform.submit();
             }
           } catch (e) {
              console.error("editConflict", e);
              console.error("editConflict", e);
              wpSave.val(i <= 3 ? `提交失败!正在重试(第${i}次)......` : "提交失败,请备份您的编辑内容后刷新界面重新编辑");
              wpSave.val(i <= 3 ? `提交失败!正在重试(第${i}次)......` : "提交失败,请备份您的编辑内容后刷新界面重新编辑");
            }
            }
         }
          setTimeout(() => {
          setTimeout(() => {
            needCheckFlag = true;
            needCheckFlag = true;

2020年5月27日 (三) 15:11的版本

(async () => {
    await mw.loader.using("mw.Api");
    mw.loader.using('mediawiki.notification');
    const wgPageName = mw.config.get("wgPageName");
    const wgCurRevisionId = mw.config.get("wgCurRevisionId");
    let needCheckFlag = true;
    const api = new mw.Api({ timeout: 5000 });
    const wpSave = $("#wpSave");
    const editform = $("#editform");
    const conflictAlert = "";
    const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
        const val = $.fn.val.bind(wpSave);
        return value === SYMBOL_UNDEFINED ? val() : val(value).attr("title", value);
    };
    const disable = ($buttons) => {
        return $buttons.css("font-weight", "normal").parent().removeClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").addClass("oo-ui-widget-disabled");
    }
    wpSave.on("click", () => {
            needCheckFlag = false;
                disable(wpSave.attr("disabled", "disabled").val("正在提交......"));
                    catch (e) {
                        console.error("editConflict", e);
                        wpSave.val(i <= 3 ? `提交失败!正在重试(第${i}次)......` : "提交失败,请备份您的编辑内容后刷新界面重新编辑");
                    }
                setTimeout(() => {
                    needCheckFlag = true;
                }, 2000);
            }, 1);
        }
        return false;
    });
})();