User:一位史蒂夫/JS/MarkAsResolved.js
注意:在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。
- Firefox / Safari:按住「Shift」時點選「重新整理」,或按「Ctrl-F5」或「Ctrl-R」 (Mac則為「⌘-R」)
- Google Chrome:按「Ctrl-Shift-R」 (Mac 則為「⌘-Shift-R」)
- Internet Explorer:按住「Ctrl」時點選「重新整理」,或按「Ctrl-F5」
- Opera:進入「工具→偏好設定」中清除快取。
- 如果您已登入但該頁面出現未登入狀態,請嘗試在網址列的URL最後新增代碼
?_=1
來訪問最新頁面。
- /*
- MarkAsResolved.js
- by User:AnnAngela
- Adapted for autoconfirmed by User:一位史蒂夫
- Warning:Abuse of this tool is prohibited!
- Original script: http://zh.moegirl.tw/User:AnnAngela/js/MarkAsResolved.js
- More versions (upward compatible) :
- > Goodeditor [[User:Leranjun/MarkAsResolved.js]]
- > Patroller [[User:AnnAngela/js/MarkAsResolved.js]]
- */
- // <pre>
- "use strict";
- (async function () {
- if (!mw.config.get("wgPageName").startsWith("萌娘百科_talk:討論版/")) {
- return;
- }
- if (!mw.config.get("wgUserGroups").includes("autoconfirmed")) {
- return;
- }
- mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/User:AnnAngela/js/quick-save.js/style.css?action=raw&ctype=text/css", "text/css");
- await mw.loader.using(["mw.Api", "mediawiki.Uri"]);
- var runningFlag = false;
- var container = $("<div class=\"AnnTools_Frame\" style=\"display: none;\"><div class=\"AnnTools_Frame_Head\"><div class=\"AnnTools_Frame_Title\">公共討論頁MAR工具(自確版)</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=\"p\" id=\"AnnTools_radio_p\" type=\"radio\"><label for=\"AnnTools_radio_p\">問題已答覆</label></li><li><input class=\"AnnTools_radio\" value=\"w\" id=\"AnnTools_radio_w\" type=\"radio\" ><label for=\"AnnTools_radio_w\">請求被撤回</label></li><li><input class=\"AnnTools_radio\" value=\"n\" id=\"AnnTools_radio_n\" type=\"radio\"><label for=\"AnnTools_radio_n\">無人回覆<s>(點名批評)</s></label></li></ul></dd><dt>前置留言:</dt><dd><input id=\"AnnTools_precomment\" type=\"text\" size=\"255\" placeholder=\"(但是如果不寫就啥也沒有)\"></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") || "");
- var offsets = {
- n: 10,
- s: 10
- };
- var toggle = function toggle(type) {
- var isHide = type === "hide";
- $(".AnnTools_form .AnnTools_radio" + (isHide ? ":not(:checked)" : "")).closest("li")[isHide ? "hide" : "show"]();
- $("#AnnTools_precomment, #AnnTools_comment").each(function (_, input) {
- var $input = $(input);
- if (!isHide || ($input.val() || "").length === 0) {
- $input.closest("dd")[isHide ? "hide" : "show"]();
- $input.closest("dd").prev()[isHide ? "hide" : "show"]();
- }
- });
- var inputs = container.find("input");
- if (isHide) {
- inputs.attr("disabled", "disabled");
- } else {
- inputs.removeAttr("disabled");
- }
- };
- 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();
- });
- toggle("show");
- } else if (target.is("#AnnTools_Confirm_First .AnnTools_Confirm_Yes")) {
- container.find("#AnnTools_Confirm_First").hide();
- container.find("#AnnTools_Confirm_Second").show();
- } 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();
- });
- toggle("show");
- } else if (target.is(".AnnTools_radio")) {
- target.closest(".AnnTools_form").find(".AnnTools_radio:checked").prop("checked", false);
- target.prop("checked", true);
- }
- }).on("submit", async function () {
- 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("正在標記中……");
- toggle("hide");
- var c = $("#AnnTools_comment").val();
- var v = container.find(".AnnTools_radio:checked").val();
- var pc = $("#AnnTools_precomment").val() || "";
- var hash = container.data("sectionTitle");
- var toclist = Object.fromEntries((await api.post({
- action: "parse",
- format: "json",
- pageid: mw.config.get("wgArticleId"),
- prop: "sections"
- })).parse.sections.map(function (_ref) {
- var anchor = _ref.anchor;
- var index = _ref.index;
- return [anchor, index];
- }));
- if (!(hash in toclist)) {
- throw new Error("請移除該標題內的模板後再行操作……");
- }
- var section = toclist[hash];
- await api.postWithToken("csrf", {
- action: "edit",
- pageid: mw.config.get("wgArticleId"),
- section: section,
- summary: "標記討論串「/* " + container.data("sectionTitle") + " */」狀態為【" + container.find(".AnnTools_radio:checked + label").text() + "】",
- tags: "Automation tool",
- nocreate: true,
- appendtext: (pc.length > 0 ? "\n:" + pc + "--~~~~" : "") + "\n\n{{MarkAsResolved|time={{subst:#timel:Ymd}}|status=" + (v in offsets ? v + "|archive-offset=" + offsets[v] : v) + "|comment=" + c + "|sign=~~~~}}"
- });
- container.find(".AnnTools_status").text("編輯完成!即將刷新!").addClass("AnnTools_WorkDetail_Succeed");
- // localStorage.setItem("AnnTools_MarkAsResolved_comment", c);
- setTimeout(function () {
- 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("我再想想");
- toggle("show");
- }
- });
- $("#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: sectionTitle
- }).fadeIn(370);
- });
- var quicksave = self.find(".AnnTools_QuickSave");
- if (quicksave[0]) {
- var divider = quicksave.next(".mw-editsection-divider");
- self.find(".mw-editsection .mw-editsection-bracket").first().after(divider).after(quicksave);
- }
- });
- })();
- // </pre>
此頁面最後編輯於 2021年5月20日 (週四) 00:14。