User:DerHexer/rollback.js

 // originally from [[User:DerHexer]]  // get URL parameters (used for page type variables) var UrlParameters = new Array (); readparams();  function readparams() {  var asReadInUrlParameters;  var asReadInUrlParameter;   // Get URL parameters  asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");  for (i = 0; i < asReadInUrlParameters.length; i++) {    asReadInUrlParameter = asReadInUrlParameters[i].split("=");    UrlParameters[decodeURIComponent(asReadInUrlParameter[0])] = decodeURIComponent(asReadInUrlParameter[1]);  } } if(!usersignature) var usersignature = '\~\~\~\~'         //standard signature if(!automaticblock) var automaticblock=false; if(!automaticwarning) var automaticwarning=false;  function fillActionPageRevert() {   if (UrlParameters["blockreason"] > "" && UrlParameters["blockduration"] > "") {     document.forms["blockip"].wpBlockReason.value = UrlParameters["blockreason"];     document.forms["blockip"].wpBlockOther.value = UrlParameters["blockduration"];     var blocktime = UrlParameters["blockduration"];     var isBlocked = UrlParameters["title"].replace(/Special:Block\//, '');     if (isBlocked.search(/\d+\.\d+\.\d+\.\d+/) == -1) {        if (prompt('Are you sure to block, ' + isBlocked + ' ?','ja')) {         var newurl = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=User:" + isBlocked + "&action=edit&addtemplate=2";         if(automaticblock) { window.setTimeout(function() { document.forms["blockip"].wpBlock.click(); }, 100); }        }     } else {       var newurl = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=User_talk:" + isBlocked + "&action=edit&addtemplate=1&blockduration=" + blocktime;       if(automaticblock) { window.setTimeout(function() { document.forms["blockip"].wpBlock.click(); }, 100);}     }     if(automaticblock) { if ((UrlParameters["blockduration"] != 'infinite') || (isBlocked.search(/\d+\.\d+\.\d+\.\d+/) == -1)) { window.setTimeout(function() { location.href = newurl; }, 1000); } }   }    if (UrlParameters["diff"] > "") {     function searchRollbackLink() {       var tds = document.getElementsByTagName("td");       for (var i=0; i<tds.length; i++) {         var td = tds[i];          if (td.className != "diff-ntitle") continue;         var as = td.getElementsByTagName("a");         for (var j=0; j<as.length; j++) {           var a = as[j];           if (!/.*action=rollback.*/(a.href)) continue;           var newlink = document.createElement('a');           a.setAttribute('accesskey', "s");           newlink.setAttribute('href', a.href);           var EditTextNode = document.createTextNode("normal rollback");           newlink.appendChild(EditTextNode);           as[j].parentNode.insertBefore( newlink, as[j].nextSibling );           as[j].parentNode.insertBefore( document.createTextNode(' | '), as[j].nextSibling );           return a;         }       }       return tds;     }      function RollAndSpam(rolluri) {       location.href = rolluri;       var backrolled = rolluri.split("from=")[1].split("&token=")[0];       var vandalizedpage = mw.config.get('wgPageName');       var uri = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=User talk:" + backrolled + "&vandalizedpage=" + vandalizedpage + "&action=edit&spam=1";       window.setTimeout(function() { location.href = uri; }, 500);     }     var revlink = searchRollbackLink();     revlink.onclick = function() { RollAndSpam(revlink.href); return false; }   }    if ( (UrlParameters["spam"] > "") && (UrlParameters["vandalizedpage"] > "") ) {       document.editform.wpMinoredit.checked=true;       var splitted = document.forms["editform"].wpTextbox1.value.split("<!--");       var lastsplitted = splitted[splitted.length-1];          var jetzt = new Date();         var thisyear = jetzt.getFullYear().toString();         var thismonth = jetzt.getMonth()+1;         if (thismonth < 10) { thismonth = "0" + thismonth; }         var thisday = jetzt.getDate();         if (thisday < 10) { thisday = "0" + thisday; }         var thishour = jetzt.getHours();         if (thishour < 10) { thishour = "0" + thishour; }         var thisminute = jetzt.getMinutes();         if (thisminute < 10) { var thisminute2 = "0" + thisminute; } else { var thisminute2 = thisminute; }         var thissecond = jetzt.getSeconds();         if (thissecond < 10) { thissecond = "0" + thissecond; }         var thistime = thisyear + thismonth + thisday + thishour + thisminute + thissecond;         var req;         if (req = newRequest()) {           var text = '/w/api.php?format=xml&action=query&prop=revisions&titles=' + mw.config.get('wgPageName') + '&rvlimit=1&rvprop=timestamp&rvdir=older&rvstart=' + thistime;           req.open("GET", text, false);           req.send("");            var lasttimestamp = req.responseXML.getElementsByTagName("rev")[0].getAttribute('timestamp');           var lastminute = lasttimestamp.match(/([^\-]*)\-([^\-]*)\-([^T]*)T([^\:]*)\:([^\:]*)\:([^Z]*)Z/);           lastyear = RegExp.$1;           lastmonth = RegExp.$2;           lastday = RegExp.$3;           lasthour = parseInt(RegExp.$4)+1;           if (lasthour < 10) { lasthour = "0" + lasthour.toString(); } else { lasthour = lasthour.toString() }           lastminute = RegExp.$5;           lastsecond = RegExp.$6;           var lastdate = Date.parse(lastmonth + ' ' + lastday + ' ' + lastyear + ' ' + lasthour + ':' + lastminute + ':' + lastsecond);           var thisdate = Date.parse(thismonth + ' ' + thisday + ' ' + thisyear + ' ' + thishour + ':' + thisminute + ':' + thissecond);       }        var matchedtemplate = lastsplitted.match(/uw\-([^\d]*)(\d)/);       var matchedtemplatename = RegExp.$1;       var matchednumber = RegExp.$2;       var matchedtemplate2 = lastsplitted.match(/Template\:Test(\d)/);       var matchednumber2 = RegExp.$1;       if (lastsplitted.search(/Uw\-Blank(\d)/) != -1) {         var matchednumber = RegExp.$1;         var matchedtemplatename = 'vandalism';       } else if (lastsplitted.search(/Uw\-Blank[^\d]/) != -1) {         var matchednumber = 1;         var matchedtemplatename = 'vandalism';       }       if ((lastsplitted.search(/Uw\-bv/) != -1) || (lastsplitted.search(/Blatantvandal/) != -1) || (lastsplitted.search(/longterm/) != -1)) {         var matchednumber = 4;         var matchedtemplatename = 'vandalism';       }       if ((!matchedtemplatename) || (matchedtemplatename == 'cluebotwarning') || (matchedtemplatename == 'block') || (matchedtemplatename == 'huggle') || (matchedtemplatename == 'huggleblock') || (matchedtemplatename.search(/\d/) != -1)) {          var matchedtemplatename = 'vandalism';       }       if (document.forms["editform"].wpTextbox1.value == "") {         document.editform.wpSummary.value = "Caution: " + matchedtemplatename + " on \[\[" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\]\]";         document.forms["editform"].wpTextbox1.value = document.forms["editform"].wpTextbox1.value + "\{\{subst\:uw-" + matchedtemplatename + "2\|" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\}\} " + usersignature;          if(automaticwarning) { document.editform.wpSave.click();         window.setTimeout(function() { window.close(); }, 1000); }       } else {                var confirmcontinue = true;               var oldip = false;               if ((thisdate-lastdate) < 20000) {                 confirmcontinue = confirm('This IP was warned less than 20 second ago. There might be an edit conflict. Do you want to continue nevertheless?');               } else if ((thisdate-lastdate) > 86400000) {                 var oldip = true;               }          if (confirmcontinue && oldip) {           document.editform.wpSummary.value = "Caution: " + matchedtemplatename + " on \[\[" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\]\]";           document.forms["editform"].wpTextbox1.value = document.forms["editform"].wpTextbox1.value + "\n\n\{\{subst\:uw-" + matchedtemplatename + "2\|" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\}\} " + usersignature;           if(automaticwarning) { document.editform.wpSave.click();           window.setTimeout(function() { window.close(); }, 1000); }         } else if (confirmcontinue && !oldip) {             if ((matchednumber == 4) || (matchednumber2 == 4)) {               if (mw.config.get('wgTitle').match(/\d+\.\d+\.\d+\.\d+/)) {                 function newRequest()                {                  try {                    if (window.XMLHttpRequest) {                      return new XMLHttpRequest();                    } else {                      return new ActiveXObject("MSXML2.XMLHTTP");                    }                  } catch (e) {                    return false;                  }                }                 var req;                if (req = newRequest()) {                  var text = "/w/api.php?format=xml&action=query&list=logevents&letype=block&letitle=User:" + mw.config.get('wgTitle');                  req.open("GET", text, false);                  req.send("");                        var blocks = req.responseXML.getElementsByTagName("block");                  if (blocks.length > 0) {                    if (blocks[0].getAttribute('duration').search(/\./) == -1) {                      var duration = blocks[0].getAttribute('duration');                    } else {                      var duration = "12 hours";                    }                  } else {                    var duration = "12 hours";                  }                }                 if (duration.search(/(\d+) (\w+)/) != -1) {                  var newblockdurationnumber = 2 * RegExp.$1;                  var lastblockdurationname = RegExp.$2;                  if (lastblockdurationname.search(/s\b/) != -1) {                    var newblockdurationname = lastblockdurationname;                  } else {                    var newblockdurationname = lastblockdurationname + "s";                  }                  var blockurl = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=Special:Block/" + mw.config.get('wgTitle') + "&blockduration=" + newblockdurationnumber + "%20" + newblockdurationname + "&blockreason=vandalism";                } else {                  var blockurl = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=Special:Block/" + mw.config.get('wgTitle');                }               } else {                 var blockurl = "http:https://www.search.com.vn/wiki/index.php?lang=en&q=Special:Block/" + mw.config.get('wgTitle') + "&blockduration=infinite&blockreason=vandalism-only%20account";               }               if(automaticwarning) { window.setTimeout(function() { location.href = blockurl; }, 1000); }             } else {               document.editform.wpSummary.value = "Final warning: " + matchedtemplatename + " on \[\[" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\]\]";               document.forms["editform"].wpTextbox1.value = document.forms["editform"].wpTextbox1.value + "\n\n\{\{subst\:uw-" + matchedtemplatename + "4\|" + UrlParameters["vandalizedpage"].replace(/\_/g, ' ') + "\}\} " + usersignature;               if(automaticwarning) { document.editform.wpSave.click();               window.setTimeout(function() { window.close(); }, 1000); }             }         }       }   }    if (UrlParameters["addtemplate"] > '') {     document.editform.wpMinoredit.checked=true;     if (UrlParameters["addtemplate"] == 1) {       document.editform.wpSummary.value = "You have been temporarily blocked.";       document.forms["editform"].wpTextbox1.value = document.forms["editform"].wpTextbox1.value + "\n\n\{\{subst\:uw-block1\|time=" + UrlParameters["blockduration"] + "\|reason\=vandalism\|subst\=subst\:\}\}";     } else if (UrlParameters["addtemplate"] == 2) {       document.editform.wpSummary.value = "\{\{indefblockeduser\}\}";       document.forms["editform"].wpTextbox1.value = "\{\{indefblockeduser\}\}";     }     document.editform.wpSave.click();     window.setTimeout(function() { window.close(); }, 1000);   } } if ( (UrlParameters["blockreason"] > "") || (UrlParameters["diff"] > "") || ( (UrlParameters["spam"] > "") && (UrlParameters["vandalizedpage"] > "") ) || (UrlParameters["addtemplate"] > '') ) {   addOnloadHook(fillActionPageRevert); }