User:MordantMaenad/scripts/contemplinks.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.
// be warned: only works for first 500 revisions of nontalk page

if (wgNamespaceNumber == 1) {
  var name = wgTitle;
} else {
  var name = new String(wgPageName);
  name = name.replace(/_talk/i, "");
}
name = escape(name);

function genurl(id, list) {
  if (id == "null") {
    return wgServer + '/wiki/' + name;
  }
  for (var j in list) {
    if (eval(list[j]) < eval(id)) {
      return wgServer + wgScriptPath + "/index.php?title=" + name + "&oldid=" + list[j];
    }
  }
}

function genlist(data) {
  var pages = data.query.pages;
  var rlist = new Array();
  for (var n = 0; n < 500; n++) {
    for (var page in pages) {
      try {
        var oldid = pages[page].revisions[n].revid;
      } catch(err) {
        break;
      }
    }
    rlist.push(oldid);
  }
  var histlinkies = getElementsByClassName(document.getElementById('bodyContent'),"*","mw-history-histlinks");
  var datelinks = getElementsByClassName(document.getElementById('bodyContent'),"*","history-user");
  for (var j = 0; j< histlinkies.length; j++) {
    var addspan = document.createElement('span');
    var adda = document.createElement('a');
    var d = datelinks[j].parentNode.getElementsByTagName('a');
    if (j != 0) {
      var idurl = new String(d[2].href);
      var idtarget = idurl.substr(idurl.length-6);
    } else {
      var idtarget = "null";
    }
    var contempurl = genurl(idtarget, rlist);
    adda.href = contempurl;
    adda.innerHTML = "contemp";
    addspan.appendChild(document.createTextNode("("));
    if (contempurl != undefined) {
      addspan.appendChild(adda);
    } else {
      addspan.appendChild(document.createTextNode("contemp"));
    }
    addspan.appendChild(document.createTextNode(")"));
    addspan.className = "contemp-link";
    histlinkies[j].parentNode.insertBefore(addspan,histlinkies[j].nextSibling);
    histlinkies[j].parentNode.insertBefore(document.createTextNode(addspan.nextSibling.textContent),addspan);
  }
  var last = document.getElementById("pagehistory").lastChild;
  if (last.getElementsByTagName("span")[1].className != "contemp-link") last.insertBefore(document.createTextNode("(contemp)"), last.getElementsByTagName("span")[0].nextSibling);
  
}

function init_contemp() {
  var t = wgCanonicalNamespace;
  if (t.search(/talk/i) != -1) {
    var u = new String(document.URL);
    var target = u.replace(/_talk/i, "");
    var obt = document.createElement('script');
    obt.src = wgServer + wgScriptPath + '/api.php?format=json&action=query&titles=' + name + '&prop=revisions&rvprop=ids|timestamp&rvlimit=500&callback=genlist';
    document.body.appendChild(obt);
  }
}

addOnloadHook(init_contemp);