User:Stumblean/common.js: Difference between revisions
Created page with "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');" Tags: Mobile edit Mobile web edit Advanced mobile edit |
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
Line 1: | Line 1: | ||
/// Twinkle is here because it's really good for vandalism. BTW DELETE THIS LINE!!!! | |||
/// Twinkle | |||
mw.loader.load('//vi.wikipedia.org/w/index.php?title=User:Plantaest/TwinkleMobile.js&action=raw&ctype=text/javascript'); | |||
// [[User:Plantaest/TwinkleMobile]] by [[:vi:User:Plantaest]] | |||
/// Kill it with fire (mass undo) | |||
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript'); | mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript'); | ||
/// null edit stuff | |||
{{subst:Iusc|User:Ahecht/Scripts/refresh.js|User:Ahecht/Scripts/refresh}} | |||
mw.loader.load('/w/index.php?title=User:BrandonXLF/NullEdit.js&action=raw&ctype=text/javascript'); // [[User:BrandonXLF/NullEdit.js]] | |||
/// Mass edit (really useful, also had to put full script in bc I couldn't find a mw loader load thing) | |||
function doMassEdit() { | |||
document.getElementById("wpMassEditSubmit").disabled = true; | |||
var articles = document.getElementById("wpMassEditPages").value.split("\n"); | |||
if(articles.length == 0) return; | |||
var newtext = document.getElementById("wpMassEditText1").value; | |||
var text2 = document.getElementById("wpMassEditText2").value; | |||
var wpMassEditType = document.getElementById("wpMassEditType").value, wpMassEditSummary = document.getElementById("wpMassEditSummary").value, edited = 0, failed = new Array(), error = new Array(); | |||
var wpMassEditMinor = document.getElementById("wpMassEditMinor").checked; | |||
for(i=0;i<articles.length;i++) { | |||
var article = articles[i]; | |||
if(article.length > 0) { | |||
var req = new XMLHttpRequest(); | |||
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?format=json&action=query&prop=info&meta=tokens&type=csrf&titles=" + encodeURIComponent(article), false); | |||
req.send(null); | |||
var query = eval("(" + req.responseText + ")").query; | |||
var edittoken = query.tokens.csrftoken; | |||
var response = query.pages; | |||
for(var index in response) { | |||
var info = response[index]; | |||
var postdata = "format=json" | |||
+ "&action=edit&watchlist=nochange" | |||
+ "&title=" + encodeURIComponent(article) | |||
+ "&summary=" + encodeURIComponent(wpMassEditSummary) | |||
+ "&token=" + encodeURIComponent(edittoken); | |||
if(wpMassEditMinor) | |||
postdata += "&minor=1"; | |||
else | |||
postdata += "¬minor=1"; | |||
if(wpMassEditType == "prepend"){ | |||
postdata += "&prependtext=" + encodeURIComponent(newtext + "\n"); | |||
} | |||
else if(wpMassEditType == "append"){ | |||
postdata += "&appendtext=" + encodeURIComponent("\n" + newtext); | |||
} | |||
else if(wpMassEditType == "replacepage"){ | |||
postdata += "&text=" + encodeURIComponent(newtext); | |||
} | |||
else if(wpMassEditType == "replacetext" || wpMassEditType == "replacetextg" || wpMassEditType == "bothpend"){ | |||
var pagetext = gettext(article); | |||
if(wpMassEditType == "replacetextg"){ | |||
newtext = newtext.replace(/([.*+?|(){}\[\]\\])/g, "\\$1"); | |||
pagetext = pagetext.replace(new RegExp(newtext, "g"), text2); | |||
} | |||
else if(wpMassEditType == "replacetext"){ | |||
pagetext = pagetext.replace(newtext, text2); | |||
} | |||
else | |||
pagetext = newtext + pagetext + text2; | |||
postdata += "&text=" + encodeURIComponent(pagetext); | |||
} | |||
var req = new XMLHttpRequest(); | |||
req.open("POST", mw.config.get('wgScriptPath') + "/api.php", false); | |||
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); | |||
req.setRequestHeader("Content-length", postdata.length); | |||
req.send(postdata); | |||
if(eval("(" + req.responseText + ")").edit ) { //If edited, update the count and the button. | |||
edited++; | |||
document.getElementById("wpMassEditSubmit").value = "(" + edited + ")"; | |||
} else { //If not edited, add the title to the "failed" array and a description of the error to the "error" array. | |||
failed.push(article); | |||
error.push(eval("(" + req.responseText + ")").error.info); | |||
} | |||
} | |||
} | |||
if(!articles[i+1]) { | |||
document.getElementById("wpMassEditSubmit").value = "Done (" + edited + ")"; | |||
if(failed.length > 0) { | |||
var linkedList = ""; | |||
for(x=0; x<failed.length; x++) { | |||
linkedList += "<li><a href=\"" + mw.config.get('wgScript') + "?title=" + encodeURIComponent(failed[x]) + "\">" + failed[x] + "</a>: " + error[x] + "</li>"; //Links the titles in the "failed" array | |||
} | |||
document.getElementById("wpMassEditFailedContainer").innerHTML += '<br /><b>Failed edits:</b><ul>' + linkedList + '</ul>'; | |||
} | |||
} | |||
} | |||
} | |||
function gettext(title){ | |||
var req = new XMLHttpRequest(); | |||
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?action=query&prop=revisions&rvprop=content&format=json&indexpageids=1&titles="+encodeURIComponent(title), false); | |||
req.send(null); | |||
var response = eval('(' + req.responseText + ')'); | |||
pageid = response['query']['pageids'][0]; | |||
if (pageid == "-1") { | |||
delete req; | |||
return ''; | |||
} | |||
var pagetext = response['query']['pages'][pageid]['revisions'][0]['*']; | |||
return pagetext; | |||
} | |||
function masseditform() { | |||
var bodyContent; | |||
switch (mw.config.get('skin')) { | |||
case 'modern': | |||
bodyContent = 'mw_contentholder'; | |||
break; | |||
case 'cologneblue': | |||
bodyContent = 'article'; | |||
break; | |||
case 'vector': | |||
case 'monobook': | |||
case 'vector': | |||
default: | |||
bodyContent = 'bodyContent'; | |||
break; | |||
} | |||
document.getElementsByTagName("h1")[0].textContent = "Tim's mass edit tool"; | |||
document.title = "Tim's mass-editing tool - Wikipedia, the free encyclopedia"; | |||
document.getElementById(bodyContent).innerHTML = '<h3 id="siteSub">From Wikipedia, the free encyclopedia</h3><br /><br />' | |||
+ '<form id="wpMassEdit" name="wpMassEdit">' | |||
+ '<b>If you abuse this tool, it\'s <i>your</i> fault, not mine.</b>' | |||
+ '<div id="wpMassEditFailedContainer"></div>' | |||
+ '<br /><br />' | |||
+ 'Pages to edit (one on each line, please):<br />' | |||
+ '<textarea tabindex="1" name="wpMassEditPages" id="wpMassEditPages" rows="10" cols="80"></textarea>' | |||
+ 'Text 1 (see below):<br />' | |||
+ '<textarea tabindex="2" name="wpMassEditText1" id="wpMassEditText1" rows="10" cols="80"></textarea>' | |||
+ 'Text 2 (see below):<br />' | |||
+ '<textarea tabindex="3" name="wpMassEditText2" id="wpMassEditText2" rows="10" cols="80"></textarea>' | |||
+ '<br /><br /><table style="background-color:transparent">' | |||
+ '<tr><td>Edit type:</td>' | |||
+ '<td><select id="wpMassEditType">' | |||
+ '<option value="prepend">Prepend text 1</option>' | |||
+ '<option value="append">Append text 1</option>' | |||
+ '<option value="bothpend">Prepend text 1 and append text 2</option>' | |||
+ '<option value="replacetext">Replace first instance of text 1 with text 2</option>' | |||
+ '<option value="replacetextg">Replace all instances of text 1 with text 2</option>' | |||
+ '<option value="replacepage">Replace page with text 1</option>' | |||
+ '</select></td></tr>' | |||
+ '<tr><td>Edit summary:</td>' | |||
+ '<td><input type="text" id="wpMassEditSummary" name="wpMassEditSummary" maxlength="255" /></td></tr>' | |||
+ '<tr><td>Mark edit as minor:</td>' | |||
+ '<td><input type="checkbox" id="wpMassEditMinor" name="wpMassEditMinor"/></td></tr>' | |||
+ '<tr><td><input type="button" id="wpMassEditSubmit" name="wpMassEditSubmit" value="Edit" onclick="doMassEdit()" /></td>' | |||
+ '</form>'; | |||
} | |||
var massedit_whitelist = ["Sven Manguard", "DeltaQuad.alt", "T. Canens"]; | |||
if(mw.config.get("wgNamespaceNumber") == -1 && (mw.config.get("wgTitle").toLowerCase() == "massedit") && | |||
(/sysop/.test(mw.config.get("wgUserGroups")) || massedit_whitelist.indexOf(mw.config.get("wgUserName")) != -1 )) $(masseditform); |