User:Dbeef/cplus.js: Difference between revisions

Content deleted Content added
[BOT] fee1-dead: don't recognize empty string in socklist (https://github.com/fee1-dead/cplus/compare/fae4122df8f9...a4ad9c5718b4)
[BOT] dbeef: add support for "get users" page (https://github.com/fee1-dead/cplus/compare/08e7ef10f3e5...3f4fad996ecd)
 
(2 intermediate revisions by the same user not shown)
Line 1:
// {{Wikipedia:USync |repo=https://github.com/fee1-dead/cplus |ref=refs/heads/production |path=main.js}}
// A helper for Special:CheckUser.
function FG(LN){if(document.readyState==="complete")setTimeout(LN,1);else document.addEventListener("DOMContentLoaded",LN)}FG(()=>{if(mw.config.get("wgPageName")!=="Special:CheckUser")return;let LN=document.getElementById("checkuserresults");if(!LN){console.error("cplus: can't get cu results!");return}let P=N.previousElementSibling;if(!P){console.info("cplus: can't find place to inject, bailing");return}if(!P.classList.contains("mw-pager-navigation-bar")&&!P.classList.contains("mw-checkbox-toggle-controls")){console.info("cplus: not a 'get actions' or 'get users' page, bailing");return}mw.util.addCSS(`
.cplus-injected-header {
padding: 5px 0 5px 0;
font-size: 1.14285714em;
font-weioghtweight: 700;
}
 
Line 15:
margin-right: 4px;
}
`);let Z=document.querySelectorAll(".mw-checkuser-helper-table tbody tr td a.mw-userlink"),$=document.querySelectorAll(".mw-checkuser-user-link a.mw-userlink"),PQ=new Map,gD=0,XY=(BH)=>{let q=BH.querySelector("bdi")?.innerText;if(q===void 0)return;if(mw.util.isIPAddress(q))return;let HB=PQ.get(q);if(!HB)HB=`cplus-checkbox-${gD++}`,PQ.set(q,B);return B},Z=(H)=>{let q=Y(H);if(!q)return;let IB=document.createElement("input");IB.type="checkbox",IB.value=BH.firstElementChild?.innerHTML??"",IB.classList.add("cplus-injected","cplus-checkbox",Hq),BH.before(IB)},E=document.querySelector(".mw-checkuser-get-users-results");if(document.querySelectorAll(".mw-checkuser-helper-table tbody tr td a.mw-userlink").forEach(Z),E)document.querySelectorAll(".mw-checkuser-user-link a.mw-userlink").forEach(X(q)=>{let B=Y(q);if(!B)return;let I=q.parentElement?.parentElement?.querySelector("input");if(!I)return;I.classList.add("cplus-checkbox",$B)});else document.querySelectorAll(".mw-checkuser-user-link a.mw-userlink").forEach(XZ);let J=document.createElement("div");J.classList.add("cplus-injected","cplus-injected-top");let SX=document.createElement("div");SX.innerText="C+",J.append(SX),SX.classList.add("cplus-injected","cplus-injected-header");let K=document.createElement("textarea"),Y$=()=>{let BH=K.value.trim();if(BH==="")return new Set;if(BH.startsWith("{{sock list|")&&BH.endsWith("}}")){let q=BH.substring(12,BH.length-2);return document.getElementById("cplus-warning")?.remove(),new Set(q.split("|").map((HB)=>HB.trim()).filter((HB)=>HB!==""))}else if(!document.getElementById("cplus-warning")){let q=document.createElement("span");q.innerText="C+ Warning: could not parse input sock list",q.id="cplus-warning",J.appendChild(q)}return new Set};J.append(K),J.classList.add("oo-ui-panelLayout-padded","oo-ui-panelLayout-framed"),K.classList.add("cplus-injected","cplus-textarea"),K.oninput=()=>{let BH=Y$();PQ.forEach((q,HB)=>{let I=BH.has(HB);document.querySelectorAll("."+q).forEach((NL)=>{NL.checked=I})})},PQ.forEach((BH,q)=>{document.querySelectorAll("."+BH).forEach((HB)=>{HB.addEventListener("change",()=>{let I=HB.checked,NL=Y$();if(I&&!NL.has(q))NL.add(q);if(!I)NL.delete(q);K.value=`{{sock list|${[...NL].join("|")}}}`,document.querySelectorAll("."+BH).forEach((EF)=>{EF.checked=I})})})});let D=L.previousElementSibling??L,QS=document.createElement("button");QS.classList.add("cplus-injected","cplus-copybtn"),QS.innerText="Copy socklist",QS.addEventListener("click",()=>{K.select(),window.navigator.clipboard.writeText(K.value)}),J.append(QS),DP.before(J)});