无编辑摘要
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", | ||
} | } | ||
}); | }); | ||
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 ? ` | wpSave.val(i <= 3 ? ` 编辑冲突检查 失败,正在重试(第${i}次)……` : " 编辑冲突检查 失败,请稍后重试……"); | ||
} | } | ||
} | } | ||
第98行: | 第105行: | ||
}, 1); | }, 1); | ||
} | } | ||
return false; | |||
}); | }); | ||
})(); | })(); |