Content deleted Content added
[BOT] fee1-dead: use orig message when deploying (https://github.com/fee1-dead/cplus/compare/fb9816fe1c95...d447f3583ba5) |
[BOT] fee1-dead: coompletely overhaul functionality (https://github.com/fee1-dead/cplus/compare/d447f3583ba5...eedd673b5536) |
||
Line 1:
// {{Wikipedia:USync |repo=https://github.com/fee1-dead/cplus |ref=refs/heads/production |path=main.js}}
// A helper for Special:CheckUser.
function T(I){if(document.readyState==="complete"||document.readyState==="interactive")setTimeout(I,1);else document.addEventListener("DOMContentLoaded",I)}T(()=>{if(mw.config.get("wgPageName")!=="Special:CheckUser")return;let I=document.querySelectorAll(".mw-checkuser-helper-table tbody tr td a.mw-userlink"),P=document.querySelectorAll(".mw-checkuser-user-link a.mw-userlink"),J=new Map,Q=0,K=(j)=>{let g=j.querySelector("bdi")?.innerText;if(g===void 0)return;if(mw.util.isIPAddress(g))return;let q=J.get(g);if(!q)q=`cplus-checkbox-${Q++}`,J.set(g,q);let B=document.createElement("input");B.type="checkbox",B.value=j.firstElementChild?.innerHTML??"",B.classList.add("cplus-injected"),B.classList.add(q),j.before(B)};I.forEach(K),P.forEach(K);let G=document.createElement("div"),E=document.createElement("textarea"),L=()=>{let j=E.value.trim();if(j==="")return new Set;if(j.startsWith("{{sock list|")&&j.endsWith("}}")){let g=j.substring(12,j.length-2);return document.getElementById("cplus-warning")?.remove(),new Set(g.split("|").map((q)=>q.trim()))}else if(!document.getElementById("cplus-warning")){let g=document.createElement("span");g.innerText="C+ Warning: could not parse input sock list",g.id="cplus-warning",G.appendChild(g)}return new Set};G.append(E),G.classList.add("cplus-injected"),E.classList.add("cplus-injected"),E.style="left: 100px; position: relative; float: left;",E.oninput=()=>{let j=L();J.forEach((g,q)=>{let B=j.has(q);document.querySelectorAll("."+g).forEach((F)=>{F.checked=B})})},J.forEach((j,g)=>{document.querySelectorAll("."+j).forEach((q)=>{q.addEventListener("change",()=>{let B=q.checked,F=L();if(B&&!F.has(g))F.add(g);if(!B)F.delete(g);E.value=`{{sock list|${[...F].join("|")}}}`,document.querySelectorAll("."+j).forEach((S)=>{S.checked=B})})})});let N=document.querySelector("div.mw-checkuser-helper-copy-text-layout div.oo-ui-fieldLayout-body div span.oo-ui-copyTextLayout-multiline-button");if(!N){console.error("cplus: can't find copy button for table!");return}let H=document.createElement("button");H.style="left: 105px; position: relative",H.classList.add("cplus-injected"),H.innerText="Copy socklist",H.addEventListener("click",()=>{E.select(),window.navigator.clipboard.writeText(E.value)}),G.append(H),N.after(G)});
|