Jump to content

User:Highspeedrailguy/aiv.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
$(document).ready(AIV);

var AIVpageName = 'Wikipedia:Administrator_intervention_against_vandalism';
var section = '1';
var vandal;
var reason;

function addlilinkAIV(url, name, id){
    mw.util.addPortletLink( 'p-cactions', url, name, id, null, null );
}

function AIV(){
  if (document.title.indexOf("User talk:") != -1){
    username = encodeURIComponent( wgTitle );
    var test = username.split('.');
    if(test[3]) {
    addlilinkAIV('javascript:AIVandal("' + username + '")', 'Report IP', 'td-report');
    }
    else {
    addlilinkAIV('javascript:AIVandal("' + username + '")', 'Report', 'td-report');
    }
  }
  if (document.title.indexOf("User contributions") != -1){
    username = location.href.split('/')[5];
    if(username == undefined || username == ""){
      //if this is the case, then something is up
      if(location.href.indexOf("&target=")){
        //it looks like we came here from a target link, lets just take the username from that
        username = location.href.split('=')[2];
      }
    }
    addlilinkAIV('javascript:AIVandal("' + username + '")', 'Report', 'td-report');
  }
}

function AIVandal(vandalU){
  vandal = vandalU;
  if(vandal ==  document.getElementById('pt-userpage').getElementsByTagName('a')[0].innerHTML){
    alert('You don\'t want to report yourself, do you?');
    return;
  }
  reason = prompt('Reason?:');
  if(!reason)
    return;
  document.getElementById('bodyContent').innerHTML = 'Please wait' + '...';
  document.getElementById('bodyContent').innerHTML += '<br />Grabbing page...';

  $.ajax({
      type: 'GET',
      url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=info|revisions&format=xml&intoken=edit&rvprop=content&titles=' + AIVpageName + '&rvsection=' + section,
      dataType: "xml",
      success: function(xml){
        var pagetext = $(xml).find('rev').text();
        var edittoken = $(xml).find('page').attr('edittoken');
        PageReady(pagetext, edittoken);
      },
      error: function(){
        document.getElementById('bodyContent').innerHTML += '<br />Error reading page: ' + AIVpageName;
      }
  });
}

function PageReady(pagetext, edittoken){

  var x;
  var myArray = pagetext.split(" ");
  var add = true;
  document.getElementById('bodyContent').innerHTML += '<br />Searching for existing report...';
  for (x=0; x < myArray.length; x++)
  {
    var myArray2 = myArray[x].split(/\n/);
    var y;
    for (y=0; y < myArray2.length; y++ ){
 
     if(myArray2[y] == '{{IPvandal|' + vandal + '}}' ||
        myArray2[y] == '*{{IPvandal|' + vandal + '}}' ||
        myArray2[y] == '{{vandal|' + vandal + '}}' ||
        myArray2[y] == '*{{vandal|' + vandal + '}}'){
        add = false;
      }
    }
  }
  if(add){
    document.getElementById('bodyContent').innerHTML += '<br />No report found, adding...';
  }
  else{
    //alert('CSD tag found');
    document.getElementById('bodyContent').innerHTML += '<br />Report found, will not add...';
    return;
  }
  //let's do something expiremntal, to see if it's an IP address
    var test = username.split('.');
    if(test[3]) {
      pagetext += '\n*{{IPvandal|' + vandal + '}} - ' + reason + ' --~' + '~' + '~' + '~';
    }
    else {
      pagetext += '\n*{{vandal|' + vandal + '}} - ' + reason + ' --~' + '~' + '~' + '~';
    }

  var params = {
    action : 'edit',
    title : AIVpageName,
    section : section,
    summary : 'Reporting [[Special:Contributions/' + vandal + '|' + vandal + ']] using [[WP:ARV|ARV 2.2]].',
    minor : null,
    text : pagetext,
    token : edittoken
  }

  document.getElementById('bodyContent').innerHTML += '<br />Submitting form...';

  var xmlhttp = sajax_init_object();
  xmlhttp.overrideMimeType('application/json');
  xmlhttp.open( 'POST' , mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php', true);
  xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  xmlhttp.send( AIVparams(params) );
}

function AIVparams( arr ) {
    var resarr = Array();
    for( var i in arr ) {
        if( typeof arr[i] == 'undefined' ) {
            continue;
        }
        var res;
        if( arr[i] instanceof Array ){
            var v =  Array();
            for(var j = 0; j < arr[i].length; ++j ) {
                v[j] = encodeURIComponent( arr[i][j] );
            }
            res = v.join('|');
        } else {
            res = encodeURIComponent( arr[i] );
        }
        resarr.push( encodeURIComponent( i ) + '=' + res );
    }
    return resarr.join('&');
}