User:Xenocidic/autofill.js

// restores "autofill" functionality that used to be available when deleting pages // it was removed per Village pump (proposals)/Archive 40 // portion of content gets pasted into deletion reason ("Content was..." and "only contributor was...") // this was written by User:CharlotteWebb, I take no credit whatsoever.

// *** REMEMBER TO REMOVE INAPPROPRIATE CONTENT WHERE APPROPRIATE, i.e. attack pages, etc. ***

s1 = "content was: '$1'"; s2 = "content before blanking was: '$1'"; s3 = " (and the only contributor was \"$2\")"; function bytes(s){ return encodeURIComponent(s).replace(/\%[0-9A-F]{2}/gi, '_').length; } function contentwas{ if(mw.config.get('wgAction')!="delete" || !(field = document.getElementById("wpReason"))) return; x = new XMLHttpRequest; x.open("GET", mw.config.get('wgServer') + "/w/api.php?action=query&format=xml&prop=revisions&rvprop=user|content&rvlimit=25&titles=" + encodeURIComponent(mw.config.get('wgPageName')), true); x.onreadystatechange = function { if(x.readyState != 4) return; z = new DOMParser.parseFromString(x.responseText,"text/xml"); rev = z.getElementsByTagName("rev"); content = ""; if(rev[0].childNodes.length) { content = rev[0].childNodes[0].nodeValue; s = s1; } else { s = s2; for(i = 1; i < rev.length && !content.length; i++) if(rev[i].childNodes.length) content = rev[i].childNodes[0].nodeValue; } if(!content.length) { field.value = "page was blank"; return; } content = content.replace(/\s+/, " "); only = rev[0].getAttribute("user"); for(i = 1; i < rev.length; i++) if(rev[i].getAttribute("user") != only) { only = null; break; } if(only && bytes(only) > 64) only = null; if(only) s += s3.replace("$2", only, "g"); limit = 257-bytes(s); // SIC! if(bytes(content) > limit){ content = content.substring(0, limit); while(bytes(content) > limit - 3) content = content.substring(0, content.length-1); content += "..."; } field.value = s.replace("$1", content); } x.send(""); } addOnloadHook(function{ setTimeout("contentwas", 1000); });