User:Prodego/Sandbox.js

addOnloadHook(function {    ttext = document.getElementById("firstHeading").firstChild.innerHTML;    suffix = ": Difference between revisions";    if(ttext.indexOf(suffix, ttext.length - suffix.length) !== -1) {    mw.util.addPortletLink("p-cactions", "javascript:vandalBlock", "Kill", "ca-vandal", "Block user");    } }); function vandalBlock { var rcol = document.getElementById('bodyContent').getElementsByTagName('td').item(1); if (rcol != null) var user = rcol.getElementsByTagName('a')[3].innerHTML; var expiry = 'indefinite'; var others = '&autoblock=1&nocreate=1&allowusertalk=1' jsMsg(' '); if(user != mw.config.get('wgUserName')) { if(IPhandler(user) == true){ expiry = '1%20week'; others = '&autoblock=1&nocreate=1&allowusertalk=1'; }     if(!isUserBlocked(user)) { var token = getBlockToken(user); blockUser(user, token, expiry, others); }       }     else { document.getElementById('vandalblockinfo').innerHTML+= "Attempt to block self rejected. Please check your edits. "; }       var rollback = getElementsByClassName(document, "span", "mw-rollback-link"); if (rollback[0]) { rollbacklink = rollback[0].getElementsByTagName('a')[0].href; rollbacktoken = rollbacklink.substring(rollbacklink.indexOf('&token=')+7) doRollback(rollbacktoken, user); }       else { document.getElementById('vandalblockinfo').innerHTML+= "Edit already rolled back. "; } } function getBlockToken(user) { document.getElementById('vandalblockinfo').innerHTML+= "Getting block token... "; var req = sajax_init_object; var params = "action=block&user=" + encodeURIComponent(user) + "&gettoken=1&format=json"; req.open("POST", wgScriptPath + "/api.php?", false); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(params); response = eval('(' + req.responseText + ')'); token = response['block']['blocktoken']; delete req; return token; } function doRollback(rollbacktoken, user) { var req = sajax_init_object; title = wgPageName; var params = "action=rollback&token="+rollbacktoken+"&title="+title+"&user="+encodeURIComponent(user)+"&markbot=1&format=json"; url = wgScriptPath + "/api.php"; req.open("POST", url, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.onreadystatechange = function { if(req.readyState == 4 && req.status == 200) { response = eval('(' + req.responseText + ')'); try { document.getElementById('vandalblockinfo').innerHTML += "Rollback on "+response['rollback']['title']+" succeeded "; } catch(err) { document.getElementById('vandalblockinfo').innerHTML += "Error " + response['error']['info']+" "; }   delete req; } }  req.send(params) }

function isUserBlocked(user) { var req = sajax_init_object; var params = "action=query&format=json&list=blocks&bkusers="+encodeURIComponent(user)+"&bkprop=by"; url = wgScriptPath + "/api.php"; req.open("POST", url, false); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(params); response = eval('(' + req.responseText + ')'); try { document.getElementById('vandalblockinfo').innerHTML+= "User already blocked by "+ response['query']['blocks'][0]['by']+" "; }  catch(err) { delete req; return false; } delete req; return true; }

function blockUser(user, token, expiry, others) { document.getElementById('vandalblockinfo').innerHTML+= "Blocking... "; var req = sajax_init_object; var params = "action=block&format=json&token="+encodeURIComponent(token)+"&user="+encodeURIComponent(user)+"&expiry="+expiry+"&reason=Vandalism"+others; url = wgScriptPath + "/api.php"; req.open("POST", url, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.onreadystatechange = function { if(req.readyState == 4 && req.status == 200) { response = eval('(' + req.responseText + ')'); try { document.getElementById('vandalblockinfo').innerHTML+= response['block']['user']+" has been blocked "; }      catch(err) { document.getElementById('vandalblockinfo').innerHTML+= "Error " + response['error']['info'] + " "; }     delete req; } }  req.send(params) }