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

添加1,280字节 、​ 2021年2月24日 (星期三)
无编辑摘要
imported>=海豚=
无编辑摘要
imported>=海豚=
无编辑摘要
第1行: 第1行:
(async () => {
(async () => {
    if (!["edit", "submit"].includes(mw.config.get("wgAction"))) {
    if (!["edit", "submit"].includes(mw.config.get("wgAction"))) {
     return;
    }
    }
    await mw.loader.using("mw.Api");
    await mw.loader.using("mw.Api");
第10行: 第11行:
    const wpSave = $("#wpSave");
    const wpSave = $("#wpSave");
    const editform = $("#editform");
    const editform = $("#editform");
   const conflictAlert = "请注意!如果您在没有备份您的编辑内容时就选择显示预览或更改,\n我们会无法检测到编辑冲突,\n并且届时您点下了保存按钮后您的编辑内容会直接丢失!!\n请备份您的编辑后刷新页面再进行相关操作!";
    const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
第22行: 第24行:
        needCheckFlag = false;
        needCheckFlag = false;
        setTimeout(async () => {
        setTimeout(async () => {
          disable(wpSave.attr("disabled", "disabled").val("正在 保存..."));
          disable(wpSave.attr("disabled", "disabled").val("正在 检查编辑冲突……"));
          for (let i = 1; i <= 4; i++) {
          for (let i = 1; i <= 4; i++) {
            try {
            try {
第34行: 第36行:
              const pageid = Object.keys(result.query.pages)[0];
              const pageid = Object.keys(result.query.pages)[0];
              if (pageid > 0 && result.query.pages[pageid].revisions[0].revid > wgCurRevisionId) {
              if (pageid > 0 && result.query.pages[pageid].revisions[0].revid > wgCurRevisionId) {
                wpSave.val(" 失败");
                wpSave.val("存 在编辑冲突!");
               $("body").append(`<div style="background: #3366CC; color: white; text-align: center; padding: .5rem; position: fixed; top: 0; left: 0; right: 0; z-index: 9999;"><p>本页面已被他人更改。请复制您的编辑到剪贴板,然后刷新页面,重新开始编辑,以避免编辑冲突。</p><p><span id="copyCurrentRawCode" class="mw-ui-button">复制当前编辑内容</span> <span id="showNewestRevisionDiff" class="mw-ui-button">查看最新版本差异</span> <span id="refreshPage" class="mw-ui-button mw-ui-destructive">刷新页面(慎重!)</span></p></div>`);
                const pre = $("<pre/>", {
                const pre = $("<pre/>", {
                  css: {
                  css: {
第40行: 第43行:
                    left: "-99999px",
                    left: "-99999px",
                    "z-index": "-99999",
                    "z-index": "-99999",
                  }3
                  }
                });
                });
                const textarea = $("#wpTextbox1");
                const textarea = $("#wpTextbox1");
第50行: 第53行:
                  }).appendTo("body");
                  }).appendTo("body");
                  if ($(".ace_editor").length > 0) {
                  if ($(".ace_editor").length > 0) {
                   mw.notify("当前已开启代码编辑器,无法获取真实编辑内容,请手动复制。");
                   return;
                  }
                  }
                  const selection = window.getSelection();
                  const selection = window.getSelection();
第81行: 第86行:
                    alert(conflictAlert);
                    alert(conflictAlert);
                  }, 1);
                  }, 1);
                 return false;
                }).attr("title", conflictAlert));
                }).attr("title", conflictAlert));
              } else {
              } else {
                wpSave.val("正在保存...");
                wpSave.val(" 没有编辑冲突, 正在保存 ……");
                editform.submit();
                editform.submit();
              }
              }
              await mw.loader.using('mediawiki.notification');
              await mw.loader.using('mediawiki.notification');
             return;
            } catch (e) {
            } catch (e) {
              console.error("editConflict", e);
              console.error("editConflict", e);
              wpSave.val(i <= 3 ? ` 保存 失败,正在重试(第${i}次)……` : " 保存 失败,请稍后重试……");
              wpSave.val(i <= 3 ? ` 编辑冲突检查 失败,正在重试(第${i}次)……` : " 编辑冲突检查 失败,请稍后重试……");
            }
            }
          }
          }
第98行: 第105行:
        }, 1);
        }, 1);
      }
      }
     return false;
    });
    });
})();
})();
匿名用户