User:DannyS712/ContribSearch.js

// //Copied from [[User:Abelmoschus Esculentus/ContribSearch.js] var user, rollbacktoken, cs_limit, blocked = false, lastcontrib = null, newcontrib = false; var enabled = false; function checkifblocked { var cs_http3 = new XMLHttpRequest;  cs_http3.onreadystatechange = function {    var items3 = cs_http3.responseXML.getElementsByTagName('block');    if (items3.length !== 0) {      blocked = true;    }    else blocked = false;  };  cs_http3.open("GET", "/w/api.php?action=query&list=blocks&bkusers=" + user + "&format=xml", true);  cs_http3.send; } function get_content {  if ($("#CS-interface-content").text != "Loading contributions..." && enabled === true) $("#CS-interface-header").text("Contribution Search - " + user.replace('_', ' ') + " (Updating...)");  var cs_http2 = new XMLHttpRequest;  cs_http2.onreadystatechange = function {    if (cs_http2.readyState == 4 && cs_http2.status == 200 && enabled === true) {      var items = cs_http2.responseXML.getElementsByTagName('item');      if (items.length === 0) {        alert("Cannot find any contributions for " + user.replace('_', ' '));        screen00;        return;      }      if (lastcontrib !== null && lastcontrib != items[0].getAttribute('revid').substring(0)) {        newcontrib = true;      }      if ($("#CS-interface-content").text == "Loading contributions...") {        $("#CS-interface-content").empty;      }      $("#CS-interface-content").empty;      var temp = user.replace('_', '+');      for (var i = 0; i < items.length; i++) {        var diff = items[i].getAttribute('revid').substring(0);        var gs = items[i].getAttribute('timestamp').substring(0);        var ts = gs.replace('T', ' ');        var timestamp = ts.replace('Z', '');        var editsummary = items[i].getAttribute('comment').substring(0);        if (editsummary === "") {        	editsummary = "No summary";        }        var item_name = items[i].getAttribute('title').substring(0);        var item_url = 'http://en.wikipedia.org/wiki/' + item_name;        var diff_url = 'https://en.wikipedia.org/w/index.php?title=' + item_name + '&diff=prev&oldid=' + diff;        var rollbackurl = 'http://en.wikipedia.org/w/index.php?action=rollback&title=' + item_name + '&from=' + temp + '&token=' + rollbacktoken;        if (newcontrib === true && lastcontrib == diff) {          $('#HRULE').remove;          newcontrib = false;          lastcontrib = diff;          if (items[i].hasAttribute('minor')) {            $("#CS-interface-content").append(              $(' ').css('margin-bottom','0.5em').append(                $(' ').attr({'id':'HRULE'}),                $(' ').text(timestamp+' '),                $('').text('m '),                $('').attr({'href':item_url}).text(item_name),                $(' ').text(' ('),                $('').attr({'href':diff_url}).text('diff'),                $(' ').text(') ['),                $('').attr({'href':rollbackurl}).text('rollback'),                $(' ').text(']')              ),              $(' ').css('margin-bottom','0.5em').append(                $('').text(' (' + editsummary + ')')              )            );          }          else {            $("#CS-interface-content").append(              $(' ').css('margin-bottom','0.5em').append(                $(' ').attr({'id':'HRULE'}),                $(' ').text(timestamp+' '),                $('').attr({'href':item_url}).text(item_name),                $(' ').text(' ('),                $('').attr({'href':diff_url}).text('diff'),                $(' ').text(') ['),                $('').attr({'href':rollbackurl}).text('rollback'),                $(' ').text(']')              ),              $(' ').css('margin-bottom','0.5em').append(                $('').text(' (' + editsummary + ')')              )            );          }        }        else {          if (items[i].hasAttribute('minor')) {            $("#CS-interface-content").append(              $(' ').css('margin-bottom','0.5em').append(                $(' ').text(timestamp+' '),                $('').text('m '),                $('').attr({'href':item_url}).text(item_name),                $(' ').text(' ('),                $('').attr({'href':diff_url}).text('diff'),                $(' ').text(') ['),                $('').attr({'href':rollbackurl}).text('rollback'),                $(' ').text(']')              ),              $(' ').css('margin-bottom','0.5em').append(                $('').text(' (' + editsummary + ')')              )            );          }          else {            $("#CS-interface-content").append(              $(' ').css('margin-bottom','0.5em').append(                $(' ').text(timestamp+' '),                $('').attr({'href':item_url}).text(item_name),                $(' ').text(' ('),                $('').attr({'href':diff_url}).text('diff'),                $(' ').text(') ['),                $('<a>').attr({'href':rollbackurl}).text('rollback'),                $(' ').text(']')              ),              $(' ').css('margin-bottom','0.5em').append(                $('<i>').text(' (' + editsummary + ')')              )            );          }        }      }      if (lastcontrib === null) {        lastcontrib = items[0].getAttribute('revid').substring(0);      }      $('#SHOWING').text(" Showing " + items.length + " items; Maximum " + cs_limit + " items ");      $("#CS-interface-header").text("Contribution Search - " + user.replace('_', ' '));      checkifblocked;      if (blocked === true) {        $("#CS-interface-header").append(          $(' ').attr({'color':'red','font-weight':'bold'}).text(' (BLOCKED)')        );      }      setTimeout(get_content, 3000);    }  };  cs_http2.open("GET", "/w/api.php?action=query&list=usercontribs&ucuser=" + user + "&uclimit=" + cs_limit + "&format=xml&ucdir=older", true);  cs_http2.send; } function cs_init {  mw.util.addPortletLink('p-tb', 'javascript:void(0)', 'Contrib Search', 'aca-contribsearch', null, null);  $('#aca-contribsearch').on('click', function {    $('body').prepend(' '+      ' '+        '<h4 id="CS-interface-header"> '+        ' '+        ' '+        ' '+        ' '+      ' '+    ' ');    $("#CS-modal").css({      "position": "fixed",      "z-index": "1",      "left": "0",      "top": "0",      "width": "100%",      "height": "100%",      "overflow": "hidden",      "background-color": "rgba(0,0,0,0.4)"    });    $("#CS-interface").css({      "background-color": "#ffe8e8",      "margin": "15% auto",      "padding": "2px 20px",      "border": "1px solid #888",      "width": "80%",      "max-width": "60em",      "font-size": "90%"    });    $("#CS-interface-content").css({      "min-height": "7em",      "width" : "875px",      "height" : "400px",      "overflow-y": "scroll"    });    $("#CS-interface-footor").css("min-height", "3em");    screen00;  }); } var screen00 = function {  $("#CS-interface-header, #CS-interface-content, #CS-interface-footer").empty;  $("#CS-interface-header").text("Contribution Search");  $("#CS-interface-content").append(    $(' ').css('margin-bottom','0.5em').append(      $(' ').attr({'for':'CS-userinput-label', 'id':'CS-userinput-label'}).text('Insert user: '),      $(' ').attr({'type':'text', 'name':'CS-userinput','id':'CS-userinput'})    ),    $(' ').css('margin-bottom','0.5em').append(      $(' ').attr({'for':'CS-userinput-limit-label', 'id':'CS-userinput-limit-label'}).text('Limit (1-500): '),      $(' ').attr({'type':'number', 'name':'CS-userinput-limit','id':'CS-userinput-limit','min':'1','max':'500','value':'100'})    ),    $(' ').css('margin-bottom','0.5em').append(      $(' ').attr({'name':'CS-userinput-button', 'id':'CS-userinput-button'}).text('Load')    ),    $(' ').css('margin-bottom','0.5em').append(      $(' ').attr({'src':'https://upload.wikimedia.org/wikipedia/commons/e/e5/OOjs_UI_icon_alert_destructive_black-darkred.svg','height':'23','width':'23'}),	  $(' ').attr('style','font-size:94%;font-weight:bold;').text('You take full responsibility for any action you perform using this script. Persistent misuse of rollback will lead to the removal of the permission. In extreme circumstances, you may even be blocked from editing.')	)  );  $("#CS-interface-footer").append(    $(' ').attr('id', 'CS-cancel').text('Close')  );  $('#CS-cancel').click(function {  	user = null, rollbacktoken = null, cs_limit = null, blocked = false;  	enabled = false;    $('#CS-modal').remove;  });  $('#CS-userinput-button').click(function  {  	var ttt = $('#CS-userinput-limit').val;  	if (ttt > 500 || ttt < 1) {  		alert('Invalid value');  	}  	else if ($('#CS-userinput').val.length < 1) {  		alert('Please specify a user!');  	}  	else {  	enabled = true;    var temp = $('#CS-userinput').val;    user = temp.replace(' ', '_');    cs_limit = $('#CS-userinput-limit').val;    var temp2 = temp.replace('_', ' ');    $("#CS-interface-header").text("Contribution Search - " + temp2);    $("#CS-interface-content").empty;    $("#CS-interface-content").text("Loading contributions...");    var cs_http = new XMLHttpRequest;    cs_http.onreadystatechange = function {      if (cs_http.readyState == 4 && cs_http.status == 200) {        var items2 = cs_http.responseXML.getElementsByTagName('tokens');        var t = items2[0].getAttribute('rollbacktoken');        rollbacktoken = t.replace('+', '%2B');        $("#CS-interface-footer").append(    		  $(' ').attr('id', 'CS-back').css('margin-left','1em').text('Back')		    );        $('#CS-back').click(function  {          user = null, rollbacktoken = null, cs_limit = null, blocked = false;          enabled = false;          document.getElementById("CS-back").remove;          screen00;        });        $('#CS-interface-footer').append(          $(' ').attr({'id':'SHOWING'}).text(' ')        );        checkifblocked;        get_content;      }    };    cs_http.open("GET", "/w/api.php?action=query&meta=tokens&type=rollback&format=xml");    cs_http.send;  	}  }); }; mw.loader.using(['mediawiki.util', 'mediawiki.api', 'mediawiki.Title'], function {  cs_init; }); //