User:Timotheus Canens/massedit.js
///Tim's Mass Edit Tool
/// Adapted from User:Animum/massdelete.js
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 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 linkedList += " } document.getElementById("wpMassEditFailedContainer").innerHTML += '
Failed edits:' + linkedList + '
';
}
}
}
}
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 = '
From Wikipedia, the free encyclopedia
'
+ '