Jump to content

User:Jmcgnh/hidetopcontribs.js

From Wikipedia, the free encyclopedia
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.
/* Contributions (top) edit hider, version [0.0.4] 
Originally from http://en.wikipedia.org/wiki/User:Splarka/hidetopcontribs.js
Repairs by user jmcgnh 2017-10-22

On Special:Contributions page, add button to hide all pages the current user is top contributor on

Notes:
* If on an offset or dir URI, one cannot reliably determine top edits, so it isn't active.

* When I use this, I am also uninterested in seeing my own earlier contributions, so we only want to display the latest of my own contribs

*/

// This first stanza checks to see if the current page is a Special Contributions page and adds a button hooking into this script
if(mw.config.get('wgCanonicalSpecialPageName') && mw.config.get('wgCanonicalSpecialPageName') == 'Contributions' && !queryString('offset') && !queryString('dir')) addOnloadHook(hideTopContribsButton);

function hideTopContribsButton() {
  mw.util.addPortletLink('p-tb','javascript:hideTopContribs()','Hide tops','tb-top','Hide all links to pages which this user is the last editor of');
}

function hideTopContribs() {
  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document.body;
  var titles = [];
  var ul = docobj.getElementsByTagName('ul')[0]; // pick first list (checked that this is the right index)
  var tops = ul.getElementsByClassName('mw-uctop'); // this mw-uctop class name is present when the entry is marked "(current)" to say that this user is the most recent contributor
  for(var i=0;i<tops.length;i++) {
    var titlelink = tops[i].parentNode.getElementsByTagName('a')[0].title; // pulls title attribute from first <a> link in the entry
    titles.push(titlelink); // keep track of titles of entries flagged with mw-uctop
    // console.log("pushing title=", titlelink);
  }

  var li = ul.getElementsByTagName('li');
  for( i=0;i<li.length;i++) {
    var lititle = li[i].getElementsByTagName('a')[0].title;
    var seen = 0;
    for(var j=0;j<titles.length;j++) {
      if(lititle == titles[j]) {
        li[i].style.display = 'none';
        seen = 1;
      }
    }
    if( ! seen ) {
    	titles.push(lititle);
    	// console.log("pushing li title=", lititle);
    }
  }
}

function queryString(p) { // I think this works because I can see the buttton appearing
  var re = RegExp('[&?#]' + p + '=([^&#]*)');
  var matches;
  if (matches = re.exec(document.location)) {
    try { 
      return decodeURI(matches[1]);
    } catch (e) {
    }
  }
  return null;
}