imported>=海豚= |
imported>=海豚= |
| 第1行: |
第1行: |
| (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 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", () => {
| |
| if (needCheckFlag === true) {
| |
| needCheckFlag = false;
| |
| setTimeout(async () => {
| |
| disable(wpSave.attr("disabled", "disabled").val("正在保存......"));
| |
| for (let i = 1; i <= 4; i++) {
| |
| 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",
| |
| }
| |
| });
| |
| const textarea = $("#wpTextbox1");
| |
| $("#showNewestRevisionDiff").on("click", () => {
| |
| window.open(`${mw.config.get("wgServer")}${mw.config.get("wgScriptPath")}/index.php?diff=${result.query.pages[pageid].revisions[0].revid}`, "_blank").focus();
| |
| });
| |
| disable($("#wpPreview, #wpDiff").on("click", () => {
| |
| setTimeout(() => {
| |
| alert(conflictAlert);
| |
| }, 1);
| |
| return false;
| |
| }).attr("title", conflictAlert));
| |
| } else {
| |
| wpSave.val("正在保存......");
| |
| editform.submit();
| |
| }
| |
| await mw.loader.using('mediawiki.notification');
| |
| return;
| |
| } catch (e) {
| |
| console.error("editConflict", e);
| |
| wpSave.val(i <= 3 ? `保存失败,正在重试(第${i}次)……` : "保存失败,请检查您的网络!");
| |
| }
| |
| }
| |
| setTimeout(() => {
| |
| needCheckFlag = true;
| |
| wpSave.removeAttr("disabled").val("保存更改").css("font-weight", "700").parent().addClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").removeClass("oo-ui-widget-disabled");
| |
| }, 2000);
| |
| }, 1);
| |
| }
| |
| return false;
| |
| });
| |
| })();
| |