注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
?_=1
来访问最新页面。https://mzh.moegirl.org.cn/User:Cstd/js/MarkAsResolved.js?_=1
/* eslint-disable no-magic-numbers */ /* global mw */ // <pre> (async () => { if (!mw.config.get("wgPageName").startsWith("萌娘百科_talk:讨论版/")) return; if (!mw.config.get("wgUserGroups").includes("sysop") && !mw.config.get("wgUserGroups").includes("patroller")) { return; } mw.loader.load("https://zh.moegirl.org/User:AnnAngela/js/quick-save.js/style.css?action=raw&ctype=text/css", "text/css"); await new Promise((res) => { const i = setInterval(() => { if (typeof mw.Uri === "function" && typeof mw.Api === "function") { clearInterval(i); res(); } }, 1000); }); let runningFlag = false; const container = $(`<div class="AnnTools_Frame" style="display: none;"><div class="AnnTools_Frame_Head"><div class="AnnTools_Frame_Title">公共讨论页段落状态标记工具</div><span class="AnnTools_Frame_Close">×</span></div><div class="AnnTools_Frame_Content"><div class="AnnTools_Confirm" id="AnnTools_Confirm_First"><div class="AnnTools_Confirm_Content">请问你是要标记这个段落吗?<br>段落标题:<span class="AnnTools_SectionTitle"></span></div><div class="AnnTools_Confirm_Yes">是呀是呀</div><div class="AnnTools_Confirm_No">并不是呢</div></div><div class="AnnTools_Confirm AnnTools_Confirm_expand" id="AnnTools_Confirm_Second"><div class="AnnTools_Confirm_Content">请问你想标记这个段落为什么状态?<br>段落标题:<span class="AnnTools_SectionTitle"></span><dl><dt>状态:</dt><dd><ul class="AnnTools_form"><li><input class="AnnTools_radio" value="r" id="AnnTools_radio_r" type="radio" checked="checked"><label for="AnnTools_radio_r">问题已解决</label></li><li><input class="AnnTools_radio" value="a" id="AnnTools_radio_a" type="radio"><label for="AnnTools_radio_a">请求已接受</label></li><li><input class="AnnTools_radio" value="s" id="AnnTools_radio_s" type="radio"><label for="AnnTools_radio_s">请求被暂缓</label></li><li><input class="AnnTools_radio" value="n" id="AnnTools_radio_n" type="radio"><label for="AnnTools_radio_n">无人回复<s>(点名批评)</s></label></li><li><input class="AnnTools_radio" value="d" id="AnnTools_radio_d" type="radio"><label for="AnnTools_radio_d">请求被拒绝</label></li></ul></dd><dt>留言(会被保存到浏览器供下次复用):</dt><dd><input id="AnnTools_comment" type="text" size="255" placeholder="(但是如果不写就啥也没有)"></dd></dl></div><div class="AnnTools_Confirm_Yes">就是这样</div><div class="AnnTools_Confirm_No">我再想想</div><div class="AnnTools_status"></div></div></div></div>`).appendTo("body"), api = new mw.Api(); // container.find("#AnnTools_comment").val(localStorage.getItem("AnnTools_MarkAsResolved_comment") || ""); container.on("click", function(event) { if (runningFlag) { return; } var target = $(event.target); if (target.is(".AnnTools_Frame_Close") && !target.is(".disable")) { container.fadeOut(370).queue(function() { container.find(".AnnTools_Confirm").removeAttr("style"); $(this).dequeue(); }); } else if (target.is("#AnnTools_Confirm_First .AnnTools_Confirm_Yes")) { container.find("#AnnTools_Confirm_First").fadeOut(370); container.find("#AnnTools_Confirm_Second").fadeIn(370); } else if (target.is("#AnnTools_Confirm_Second .AnnTools_Confirm_Yes")) { container.trigger("submit"); } else if (target.is(".AnnTools_Confirm_No")) { container.fadeOut(370).queue(function() { container.find(".AnnTools_Confirm").removeAttr("style"); $(this).dequeue(); }); } else if (target.is(".AnnTools_radio")) { target.closest(".AnnTools_form").find(".AnnTools_radio:checked").prop("checked", false); target.prop("checked", true); } }).on("submit", async () => { try { if (typeof Object.fromEntries !== "function") { throw new Error("请更新浏览器到最新版本以使用本工具(最低可用版本为 Chrome & Edge: 73+, Firefox: 63+, Safari: 12.1+)"); } runningFlag = true; container.find(".AnnTools_Confirm_Yes, .AnnTools_Confirm_No").text("正在运行"); container.find(".AnnTools_status").text("正在标记中……"); const c = $("#AnnTools_comment").val(); const v = container.find(".AnnTools_radio:checked").val(); const hash = container.data("sectionTitle"); const toclist = Object.fromEntries((await api.post({ action: "parse", format: "json", pageid: mw.config.get("wgArticleId"), prop: "sections", })).parse.sections.map(({ anchor, index }) => [anchor, index])); if (!(hash in toclist)) { throw new Error("请移除该标题内的模板后再行操作……"); } const section = toclist[hash]; await api.postWithToken("csrf", { action: "edit", pageid: mw.config.get("wgArticleId"), section, summary: `标记讨论串「/* ${container.data("sectionTitle")} */」状态为【${container.find(".AnnTools_radio:checked + label").text()}】`, tags: "Automation tool", nocreate: true, appendtext: `\n{{MarkAsResolved|time={{subst:#timel:Ymd}}|status=${v === "s" ? `s|archive-offset=10` : v}|comment=${c}|sign=~~~~}}` }); container.find(".AnnTools_status").text("编辑完成!即将刷新!").addClass("AnnTools_WorkDetail_Succeed"); // localStorage.setItem("AnnTools_MarkAsResolved_comment", c); setTimeout(() => { location.reload(false); }, 1307); } catch (e) { console.error("MarkAsResolved.js", e); container.find(".AnnTools_status").text(`发生错误:${e}`); runningFlag = false; container.find(".AnnTools_Confirm_Yes").text("就是这样"); container.find(".AnnTools_Confirm_No").text("我再想想"); } }); $("#mw-content-text > .mw-parser-output > h2, #mw-content-text > .mw-parser-output > .discussionContainer > h2").each(function() { var self = $(this); var content = self.nextUntil("h2").not("h2"); if (content.hasClass("saveNotice") || content.hasClass("MarkAsResolved")) { return; } var sectionTitle = self.find(".mw-headline").attr("id"); self.find(".mw-editsection-bracket").first() .after('<span class="mw-editsection-divider"> | </span>') .after('<a href="javascript:void(0)" class="AnnTools_MarkAsResolved">标记状态</a>'); self.on("click", function(event) { if (!$(event.target).is(".AnnTools_MarkAsResolved") || container.is(":visible")) { return true; } container.find(".AnnTools_SectionTitle").text(sectionTitle); container.data({ sectionTitle }).fadeIn(370); }); var quicksave = self.find(".AnnTools_QuickSave"); if (quicksave[0]) { var mar = self.find(".AnnTools_MarkAsResolved"); var divider = mar.next(".mw-editsection-divider"); self.find(".mw-editsection").prepend(divider).prepend(mar); } }); })(); // </pre>