「MediaWiki:Gadget-allmessageFilter.js」の版間の差分
細 (// Edit Via InPageEdit) |
星海-interfacebot (トーク | 投稿記録) 細 (跨站同步) (タグ: Bot) |
||
1行目: | 1行目: | ||
− | + | /* <pre> */ | |
− | + | /** | |
− | + | * ------------------------------------------------------------------------- | |
− | + | * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!! | |
− | + | * ------------------------------------------------------------------------- | |
− | + | */ | |
− | + | var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/allmessageFilter/MediaWiki:Gadget-allmessageFilter.js|user=[[U:AnnAngela]]|longId=4f769b86c99bf278bee8d120937a50b49682e4e2|shortId=4f769b8|message=refactor: Stop using jQuery deprecated event shorthand methods}}'; | |
− | + | ||
− | + | "use strict"; | |
− | + | (function (isCompleted) { | |
− | + | function run() { | |
− | + | if (mw.config.get("wgNamespaceNumber") !== -1 || mw.config.get("wgCanonicalSpecialPageName") !== "Allmessages") { | |
− | + | return; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | if ( | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | mw.util.addCSS([ | |
− | + | ".TablePager_nav {", | |
− | + | " user-select: none;", | |
− | + | "}", | |
− | + | ".TablePager_nav-enabled {", | |
− | + | " cursor: pointer;", | |
− | + | "}", | |
− | + | "#mw-allmessages-filter-status {", | |
− | + | " color: red;", | |
− | + | "}", | |
− | load(am.slice(index, index + length)); | + | ].join("\n")); |
+ | var containter = $("<fieldset/>"), api = new mw.Api(), length = +$("#mw-table_pager_limit_label").val(); | ||
+ | var index = 0, filter, rfilter, am; | ||
+ | var enablePrevLink = function enablePrevLink(b) { | ||
+ | if (!b) { | ||
+ | $(".TablePager_nav-prev div").removeClass("TablePager_nav-enabled").addClass("TablePager_nav-disabled"); | ||
+ | } | ||
+ | else { | ||
+ | $(".TablePager_nav-prev div").removeClass("TablePager_nav-disabled").addClass("TablePager_nav-enabled"); | ||
+ | } | ||
+ | }; | ||
+ | var enableNextLink = function enableNextLink(b) { | ||
+ | if (!b) { | ||
+ | $(".TablePager_nav-next div").removeClass("TablePager_nav-enabled").addClass("TablePager_nav-disabled"); | ||
+ | } | ||
+ | else { | ||
+ | $(".TablePager_nav-next div").removeClass("TablePager_nav-disabled").addClass("TablePager_nav-enabled"); | ||
+ | } | ||
+ | }; | ||
+ | var check = function check(am) { | ||
+ | if (am.length <= length) { | ||
+ | enableNextLink(false); | ||
+ | enablePrevLink(false); | ||
+ | } | ||
+ | else if (index === 0) { | ||
+ | enablePrevLink(false); | ||
+ | enableNextLink(true); | ||
+ | } | ||
+ | else if (index + length < am.length) { | ||
+ | enablePrevLink(true); | ||
+ | enableNextLink(true); | ||
+ | } | ||
+ | else { | ||
+ | enablePrevLink(true); | ||
+ | enableNextLink(false); | ||
+ | } | ||
+ | }; | ||
+ | var init = function init() { | ||
+ | if (!$("#mw-allmessages-form")[0]) { | ||
+ | return; | ||
+ | } | ||
+ | $("#mw-allmessages-form").remove(); | ||
+ | $(".TablePager_nav td").remove(); | ||
+ | $(".TablePager_nav tr").append('<td style="width: 50%;" class="TablePager_nav-prev"><div class="TablePager_nav-disabled">上一页</div></td><td style="width: 50%;" class="TablePager_nav-next"><div class="TablePager_nav-disabled">下一页</div></td>'); | ||
+ | $(".TablePager_nav-prev div").on("click", function () { | ||
+ | if ($(this).hasClass("TablePager_nav-disabled")) { | ||
+ | return false; | ||
+ | } | ||
+ | index -= length; | ||
+ | if (index < 0) { | ||
+ | index = 0; | ||
+ | } | ||
+ | load(am.slice(index, index + length)); | ||
+ | }); | ||
+ | $(".TablePager_nav-next div").on("click", function () { | ||
+ | if ($(this).hasClass("TablePager_nav-disabled")) { | ||
+ | return false; | ||
+ | } | ||
+ | index += length; | ||
+ | load(am.slice(index, index + length)); | ||
+ | }); | ||
+ | }; | ||
+ | var load = function (_am) { | ||
+ | check(am); | ||
+ | var head = $("#mw-allmessagestable thead"); | ||
+ | if (head.find("tr").length !== 1) { | ||
+ | head.find("td:first").removeAttr("rowspan"); | ||
+ | head.find("tr:first td:last").text("当前信息文字"); | ||
+ | head.find("tr:not(:first)").remove(); | ||
+ | } | ||
+ | var list = $("#mw-allmessagestable tbody"); | ||
+ | list.empty(); | ||
+ | _am.forEach(function (n) { | ||
+ | var name = n.name, text = n["*"]; | ||
+ | var row = $("<tr/>"); | ||
+ | row.attr("id", name).append('<td class="am_title"></td><td class="am_default"></td>'); | ||
+ | $("<a/>").addClass("external").attr({ | ||
+ | href: "".concat(mw.config.get("wgServer")).concat(mw.config.get("wgScriptPath"), "/MediaWiki:").concat(name), | ||
+ | rel: "nofollow" | ||
+ | }).html(name.replace(rfilter, "<span style=\"font-weight: bold;\">".concat(filter, "</span>"))).appendTo(row.find(".am_title")); | ||
+ | row.find(".am_default").text(text); | ||
+ | list.append(row); | ||
+ | }); | ||
+ | }; | ||
+ | $("#mw-allmessages-form").after(containter); | ||
+ | containter.append("<legend>搜索</legend>"); | ||
+ | var table = $("<table/>"); | ||
+ | containter.append(table); | ||
+ | table.append("<tr></tr><tr></tr>"); | ||
+ | $("<td/>").addClass("mw-label").html('<label for="mw-allmessages-filter">以含有此字符串过滤:</label>').appendTo(table.find("tr:first")); | ||
+ | $("<td/>").addClass("mw-input").html('<input size="20" value="" id="mw-allmessages-filter">').appendTo(table.find("tr:first")); | ||
+ | $("<td/>").appendTo(table.find("tr:last")); | ||
+ | var submit = $("<button/>"); | ||
+ | submit.text("搜索"); | ||
+ | $("<td/>").addClass("mw-input").append(submit).appendTo(table.find("tr:last")); | ||
+ | var input = $("#mw-allmessages-filter"); | ||
+ | submit.on("click", function () { | ||
+ | if (!input.val()) { | ||
+ | return oouiDialog.alert("请输入内容以搜索系统消息"); | ||
+ | } | ||
+ | $("#mw-allmessages-filter-status").remove(); | ||
+ | init(); | ||
+ | filter = input.val(); | ||
+ | rfilter = RegExp(filter, "i"); | ||
+ | containter.append('<div id="mw-allmessages-filter-status">正在加载中……</div>'); | ||
+ | api.post({ | ||
+ | action: "query", | ||
+ | format: "json", | ||
+ | meta: "allmessages", | ||
+ | amfilter: filter | ||
+ | }).then(function (data) { | ||
+ | am = data.query.allmessages; | ||
+ | index = 0; | ||
+ | $("#mw-allmessages-filter-status").remove(); | ||
+ | load(am.slice(index, index + length)); | ||
+ | }, function () { | ||
+ | $("#mw-allmessages-filter-status").remove(); | ||
+ | containter.append('<div id="mw-allmessages-filter-status">发生错误,请重试!</div>'); | ||
+ | }); | ||
}); | }); | ||
− | + | input.on("keypress", function (e) { | |
− | if ( | + | if (e.key === "Enter") { |
− | + | submit.trigger("click"); | |
− | + | } | |
}); | }); | ||
− | } | + | } |
− | + | if (isCompleted) { | |
− | + | run(); | |
− | + | } | |
− | + | else { | |
− | + | $(window).on("load", run); | |
− | + | } | |
− | + | })(document.readyState === "complete"); | |
− | + | ||
− | + | /* </pre> */ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2022年9月6日 (火) 02:54時点における最新版
/* <pre> */ /** * ------------------------------------------------------------------------- * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!! * ------------------------------------------------------------------------- */ var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/allmessageFilter/MediaWiki:Gadget-allmessageFilter.js|user=[[U:AnnAngela]]|longId=4f769b86c99bf278bee8d120937a50b49682e4e2|shortId=4f769b8|message=refactor: Stop using jQuery deprecated event shorthand methods}}'; "use strict"; (function (isCompleted) { function run() { if (mw.config.get("wgNamespaceNumber") !== -1 || mw.config.get("wgCanonicalSpecialPageName") !== "Allmessages") { return; } mw.util.addCSS([ ".TablePager_nav {", " user-select: none;", "}", ".TablePager_nav-enabled {", " cursor: pointer;", "}", "#mw-allmessages-filter-status {", " color: red;", "}", ].join("\n")); var containter = $("<fieldset/>"), api = new mw.Api(), length = +$("#mw-table_pager_limit_label").val(); var index = 0, filter, rfilter, am; var enablePrevLink = function enablePrevLink(b) { if (!b) { $(".TablePager_nav-prev div").removeClass("TablePager_nav-enabled").addClass("TablePager_nav-disabled"); } else { $(".TablePager_nav-prev div").removeClass("TablePager_nav-disabled").addClass("TablePager_nav-enabled"); } }; var enableNextLink = function enableNextLink(b) { if (!b) { $(".TablePager_nav-next div").removeClass("TablePager_nav-enabled").addClass("TablePager_nav-disabled"); } else { $(".TablePager_nav-next div").removeClass("TablePager_nav-disabled").addClass("TablePager_nav-enabled"); } }; var check = function check(am) { if (am.length <= length) { enableNextLink(false); enablePrevLink(false); } else if (index === 0) { enablePrevLink(false); enableNextLink(true); } else if (index + length < am.length) { enablePrevLink(true); enableNextLink(true); } else { enablePrevLink(true); enableNextLink(false); } }; var init = function init() { if (!$("#mw-allmessages-form")[0]) { return; } $("#mw-allmessages-form").remove(); $(".TablePager_nav td").remove(); $(".TablePager_nav tr").append('<td style="width: 50%;" class="TablePager_nav-prev"><div class="TablePager_nav-disabled">上一页</div></td><td style="width: 50%;" class="TablePager_nav-next"><div class="TablePager_nav-disabled">下一页</div></td>'); $(".TablePager_nav-prev div").on("click", function () { if ($(this).hasClass("TablePager_nav-disabled")) { return false; } index -= length; if (index < 0) { index = 0; } load(am.slice(index, index + length)); }); $(".TablePager_nav-next div").on("click", function () { if ($(this).hasClass("TablePager_nav-disabled")) { return false; } index += length; load(am.slice(index, index + length)); }); }; var load = function (_am) { check(am); var head = $("#mw-allmessagestable thead"); if (head.find("tr").length !== 1) { head.find("td:first").removeAttr("rowspan"); head.find("tr:first td:last").text("当前信息文字"); head.find("tr:not(:first)").remove(); } var list = $("#mw-allmessagestable tbody"); list.empty(); _am.forEach(function (n) { var name = n.name, text = n["*"]; var row = $("<tr/>"); row.attr("id", name).append('<td class="am_title"></td><td class="am_default"></td>'); $("<a/>").addClass("external").attr({ href: "".concat(mw.config.get("wgServer")).concat(mw.config.get("wgScriptPath"), "/MediaWiki:").concat(name), rel: "nofollow" }).html(name.replace(rfilter, "<span style=\"font-weight: bold;\">".concat(filter, "</span>"))).appendTo(row.find(".am_title")); row.find(".am_default").text(text); list.append(row); }); }; $("#mw-allmessages-form").after(containter); containter.append("<legend>搜索</legend>"); var table = $("<table/>"); containter.append(table); table.append("<tr></tr><tr></tr>"); $("<td/>").addClass("mw-label").html('<label for="mw-allmessages-filter">以含有此字符串过滤:</label>').appendTo(table.find("tr:first")); $("<td/>").addClass("mw-input").html('<input size="20" value="" id="mw-allmessages-filter">').appendTo(table.find("tr:first")); $("<td/>").appendTo(table.find("tr:last")); var submit = $("<button/>"); submit.text("搜索"); $("<td/>").addClass("mw-input").append(submit).appendTo(table.find("tr:last")); var input = $("#mw-allmessages-filter"); submit.on("click", function () { if (!input.val()) { return oouiDialog.alert("请输入内容以搜索系统消息"); } $("#mw-allmessages-filter-status").remove(); init(); filter = input.val(); rfilter = RegExp(filter, "i"); containter.append('<div id="mw-allmessages-filter-status">正在加载中……</div>'); api.post({ action: "query", format: "json", meta: "allmessages", amfilter: filter }).then(function (data) { am = data.query.allmessages; index = 0; $("#mw-allmessages-filter-status").remove(); load(am.slice(index, index + length)); }, function () { $("#mw-allmessages-filter-status").remove(); containter.append('<div id="mw-allmessages-filter-status">发生错误,请重试!</div>'); }); }); input.on("keypress", function (e) { if (e.key === "Enter") { submit.trigger("click"); } }); } if (isCompleted) { run(); } else { $(window).on("load", run); } })(document.readyState === "complete"); /* </pre> */