User:MordantMaenad/scripts/markpatrolled.js

From RationalWiki
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
function qbonc(stuff, rcid, title, func, i, rlinks, arr) {
  stuff.onclick = function() {
    func(rcid, title);
    for (var ab in arr) {
      if (arr[ab].className == "unpatrolled") rlinks[i].parentNode.removeChild(arr[ab]);
    }
    var spans = rlinks[i].parentNode.getElementsByTagName('span');
    for (var s in spans) {
      if (spans[s].className == "mark-as-patrolled-link") rlinks[i].parentNode.removeChild(spans[s]);
    }
  }
}

function markpatrolled(rcid, title) {
  var req = sajax_init_object();
  req.open('GET', wgServer + wgScriptPath + '/index.php?title=' + title + '&action=markpatrolled&rcid=' + rcid, true);
  req.send(null);
}

function markpat() {
  var reflinks = getElementsByClassName(document.getElementById('bodyContent'),"*","mw-usertoollinks");
  var unpatsar = new Array();
  for (var j = 0; j < reflinks.length; j++) {
    var lef = reflinks[j].parentNode.getElementsByTagName('abbr');
    if (lef.length != 0) {
      var lefclasses = new Array();
      for (var n = 0; n < lef.length; n++) {
        lefclasses.push(lef[n].className);
      }
      if (lefclasses.toString().search("unpatrolled") != -1) {
        var markspan = document.createElement('span');
        markspan.className = "mark-as-patrolled-link";
        var marklink = document.createElement('a');
        marklink.innerHTML = "mark as patrolled";
        var anchs = reflinks[j].parentNode.getElementsByTagName('a');
        if (lefclasses[0] == "newpage") {
          var rcid = anchs[1].href.slice(anchs[1].href.length-6);
          var artName = escape(anchs[1].innerHTML);
        } else {
          var rcid = anchs[0].href.slice(anchs[0].href.length-6);
          var artName = escape(anchs[2].innerHTML);         
        }
        //marklink.href = wgServer + wgScript + "?&title=" + artName + "&action=markpatrolled&rcid=" + rcid;
        qbonc(marklink, rcid, artName, markpatrolled, j, reflinks, lef);
        marklink.style.cursor = "pointer";
        markspan.appendChild(document.createTextNode(" ["));
        markspan.appendChild(marklink);
        markspan.appendChild(document.createTextNode("]"));
        reflinks[j].parentNode.appendChild(markspan);
      }
    }
  }
}

addOnloadHook(markpat);