跳转到内容

MediaWiki:Gadget-blockEnhance.js

来自萌娘共享
AnnAngela-dbot留言 | 贡献2025年7月26日 (六) 00:07的版本 (代码变动:103d1a56 - feat: rename (#594) by U:AnnAngela, co-authored-by: GH:github-actions[bot])
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
/**
 * -------------------------------------------------------------------------
 * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!!
 * -------------------------------------------------------------------------
 */
var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/blockEnhance/Gadget-blockEnhance.js|user=[[U:AnnAngela]]|co-authors=GH:github-actions[bot]|longId=103d1a563ea4ccc8ff29fb55c9bcd88329a56eb5|shortId=103d1a56|summary=feat: rename (#594)|body=<nowiki>Co-authored-by: github-actions[bot] <41898282+github-actions[bot]📧users.noreply.github.com></nowiki>}}'; 

/* <pre> */

"use strict";(async()=>{if("Block"!==mw.config.get("wgCanonicalSpecialPageName"))return;await $.ready;const showResults=(e,t)=>{$("#mw-checkuser-cidr-res").val(t),$("#mw-checkuser-ipnote").text(e)},updateCIDRresult=()=>{const e=document.getElementById("mw-checkuser-cidrform");if(!e)return;e.style.display="inline";const t=document.getElementById("mw-checkuser-iplist");if(!t)return;const r=t.value;let i;i=-1!==r.indexOf("\n")?r.split("\n"):-1!==r.indexOf("\t")?r.split("\t"):-1!==r.indexOf(",")?r.split(","):-1!==r.indexOf(" - ")?r.split(" - "):-1!==r.indexOf("-")?r.split("-"):-1!==r.indexOf(" ")?r.split(" "):r.split(";");let s,o,n,l=0,c=0,a="",u=!1,f=!1;for(let e=0;e<i.length;e++){const t=i[e].replace(/^\s*|\s*$/,""),r=mw.util.isIPv4Address(t,!0),m=mw.util.isIPv6Address(t,!0),w=t.match(/^(.*)(?:\/(\d+))?$/);let p,d,k,$,g="",b=0,h=0,y=0,L=0;if(r){if(u=!0,f){a="";break}for(p=w[1],d=w[2]||null,o=p.split("."),b=0;b<o.length;b++){for(k=parseInt(o[b],10),$=k.toString(2);$.length<8;)$=`0${$}`;g+=$}if(a="",d&&(g=g.substring(0,d)),0===l)l=g;else for(b=0;b<l.length;b++)if(void 0===g[b]||l[b]!==g[b]){l=l.substring(0,b);break}for(c=l.length,c<16&&(n=!0),h=0;h<=3;h++){for(k=0,y=8*h,L=y+7,b=y;b<=L&&void 0!==l[b];b++)k+=parseInt(l[b],10)*2**(L-b);a+=3===h?k:`${k}.`}s=2**(32-c),32===c&&(c=!1)}else if(m){if(f=!0,u){a="";break}p=w[1],d=w[2]||null;const e=p.match(/::/g);if(e&&e.length>0){let e=7-(p.match(/:/g).length-2),t="";for(;e>1;)t+=":0",e--;p=p.replace("::",`${t}:`),":"===p[0]&&(p=`0${p}`)}for(o=p.split(":"),b=0;b<=7;b++){for(k=o[b]||"0",$=parseInt(k,16).toString(2);$.length<16;)$=`0${$}`;g+=$}if(a="",d&&(g=g.substring(0,d)),0===l)l=g;else for(b=0;b<l.length;b++)if(void 0===g[b]||l[b]!==g[b]){l=l.substring(0,b);break}for(c=l.length,c<32&&(n=!0),h=0;h<=7;h++){for(k=0,y=16*h,L=y+15,b=y;b<=L&&void 0!==l[b];b++)k+=parseInt(l[b],10)*2**(L-b);k=k.toString(16),a+=7===h?k:`${k}:`}s=2**(128-c),128===c&&(c=!1)}}if(""!==a){let e=a;!1!==c&&(e+=`/${c}`),showResults(`~${s}${n?" [OVERFLOW]":""}`,e)}else showResults("?","")};$("#mw-content-text form").prepend('<fieldset id="mw-checkuser-cidrform" class="checkuser-show" style="display: block; float: right;"><legend>检查指定IP列表的共同区段</legend><textarea id="mw-checkuser-iplist" dir="ltr" rows="5" cols="50"></textarea><br>通用CIDR:&nbsp;<input name="mw-checkuser-cidr-res" size="35" value="" id="mw-checkuser-cidr-res">&nbsp;<strong id="mw-checkuser-ipnote">?</strong></fieldset><style>#mw-content-text form .oo-ui-fieldLayout:before, #mw-content-text form .oo-ui-fieldLayout:after {clear: left;}'),updateCIDRresult(),$("#mw-checkuser-iplist").on("keyup click",updateCIDRresult);const e=OO.ui.infuse($("#mw-input-wpAutoBlock"));""===$("input#mw-input-wpConfirm, input[name=wpConfirm]").val()&&e.setSelected(!1);let t=!1;const r=$('[name="wpTarget"]');let i=[];const s=OO.ui.infuse($('#mw-content-text [type="submit"]').parent()),o=s.$element.closest("form"),n=s.getLabel();s.setDisabled(!0).setLabel(wgULS("正在加载中……","正在載入中……")),o.on("submit.warning",async e=>{e.preventDefault(),e.stopImmediatePropagation(),!1!==t&&(i.includes(r.val())&&!await oouiDialog.confirm(`您要${wgULS("封禁的用户","封鎖的使用者",null,null,"封鎖的用戶")}${r.val()}${wgULS("持有“封禁”和“自我解封”权限,您的封禁很可能无效且有可能违反封禁方针,您是否要继续?","持有「封鎖」和「自我解封」權限,您的封鎖很可能無效且有可能違反封鎖方針,您是否要繼續?")}`,{title:wgULS("封禁辅助工具","封鎖輔助工具")})||o.off("submit.warning").trigger("submit"))});try{const e=await new mw.Api({timeout:5e3}).post({action:"query",assertuser:mw.config.get("wgUserName"),list:"allusers",aurights:"block|unblockself",aulimit:"max",auprop:"rights"});i=e.query.allusers.filter(e=>e.rights.includes("block")&&e.rights.includes("unblockself")).map(e=>e.name)}catch(e){console.error(e),s.after(`<span class="error">${wgULS("无法获取持有“封禁”和“自我解封”权限的用户列表,请谨慎操作","無法獲取持有「封鎖」和「自我解封」權限的使用者列表,請謹慎操作",null,null,"無法獲取持有「封鎖」和「自我解封」權限的用戶列表,請謹慎操作")}。</span>`)}finally{s.setDisabled(!1).setLabel(n),t=!0}})(); 

/* </pre> */