User:Markhurd/watchcontrib.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.
// Testing for [[User:MarkHurd/hidetopcontrib.js]]

//[[User:Markhurd/hidetopcontrib.js]]
// Based on [[User:Ais523/hidetopcontrib.js]]
// By a suggestion by [[User:Discospinster]]
// 090325 MEH Fixed where it is not hiding all (top)s, starting with redirects
//            and continuing after any regex mismatch.
// 090615 MEH Cater for new <span class="mw-uctop">
//            Add userHideAllSubsequent user setting.
//            Fix issue reported by [[User talk:Markhurd/hidetopcontrib.js#Bug|Lenore]].
// 100407 MEH Use simplified regex that works on IE8.
// 100413 MEH Cater for new pages.
// 100428 MEH Cater better for new pages.
// 100519 User:Ale_jrb Cater for Single-Revision Deletion, newly available to Admins.
// 110520 User:Waldir Better page check.
// 120206 MEH Cater for IE renderer differences.
// 120207 MEH Cater for all skins.
// 120321 MEH Cater for [[Wikipedia:Added or removed characters|WP:AORC]] by removing support for top not using the mw-uctop class.
// 121123 User:Waldir Allow user configuration of link location and text.
// 150121 MEH Remove legacy Javascript.

// This script hides lines according to who has the top contribution for a page.
// If userHideAllSubsequent=true, all subsequent contributions are hidden too, more like watchlists.
 
//<pre><nowiki>
 
if ( typeof userHideAllSubsequent == 'undefined' )
 userHideAllSubsequent = false;
if ( typeof wcPortletId == 'undefined' )
 wcPortletId = 'p-cactions';
if ( typeof wcPortletText == 'undefined' )
 wcPortletText = 'show/hide top (debug)';
 
function watchcontrib()
{
   var i,li,a;
   li = document.getElementById( "bodyContent" );
   if ( li === null )
     li = document.getElementById( "article" );
   if ( li === null )
     li = document.getElementById( "mw_main" );
   li = li.getElementsByTagName( "li" );
   i = -1;
   a = new Array();
   while ( ++i < li.length )
   {
     var s,t,links,b;
     links = li[i].getElementsByTagName( "a" );
 
     b = 2;
     if ( li[i].innerHTML.match( /<abbr +[^>]*class *= *(['"])?newpage\1/i ) == undefined )
       b++;
     if ( li[i].innerHTML.match( /class *= *(['"])?mw-revdelundel-link\1/i ) != undefined )
       b++;
 
     if ( typeof links == 'undefined' || links.length<( b + 1 ) )
       continue;
 
     t = links[b].innerHTML;
 
     if ( li[i].innerHTML.match(/mw\-uctop/i) != undefined || ( typeof wcRegex != 'undefined' &&  li[i].innerHTML.match(wcRegex) != undefined ))
       s = "none";
     else
       s = "";
 
     if ( a[t] != undefined )
       s = userHideAllSubsequent ? "none" : a[t];
     else
       a[t] = s;
 
     if ( s != "" )
       // li[i].innerHTML=li[i].innerHTML + ":'" + s + "'";
       li[i].style.display = ( li[i].style.display == "none" ? "list-item" : "none" );
   }
 }
 
jQuery( function( $ ) {
    if ( mw.config.get( 'wgCanonicalSpecialPageName' ) == 'Contributions') {
      var wcPortletLink = mw.util.addPortletLink( wcPortletId, '#', wcPortletText, 'ca-watchcontrib',
        "Show/hide pages for which you're the top contributor (debug)", '' );
      $( wcPortletLink ).click( function ( e ) {
        e.preventDefault();
        watchcontrib();
      });
    }
});
 
//</nowiki></pre>
//[[:Category:Wikipedia scripts]]