User:HueSatLum/pendingChangesLink.js

( function( $, mw ) { var baseTooltip = 'List of pages with unreviewed edits'  mw.util.addPortletLink( 'p-tb', // toolbox ID   mw.util.getUrl( 'Special:PendingChanges' ), // Pending changes link 'Pending changes', // link text 't-pendingchanges', // link ID   baseTooltip // link tooltip ); function plural( num, text ) {    return num + ' ' + text + ( num !== 1 ? 's' : '' ); }  function updateNumChanges {    new mw.Api.get( { action: 'query', list: 'oldreviewedpages', orlimit: 40, ornamespace: [ 0, 4 ] } ).done( function ( data ) { if ( !data.query ) { return; }     var numChanges = data.query.oldreviewedpages.length, oldestTimestamp = null; if ( numChanges > 0 ) { oldestTimestamp = data.query.oldreviewedpages[0].pending_since; var then = new Date( oldestTimestamp ).getTime, now = Date.now, msDiff = now - then, hourDiff = Math.round( msDiff / 36e5 ); }     if( data.continue ){ numChanges += '+'; }     $( '#t-pendingchanges a' ) .text( plural( numChanges, 'pending edit' ) ) .attr( 'title', function {          if ( !oldestTimestamp ) {            return baseTooltip;          }          return baseTooltip + '.\nOldest is ' + plural( hourDiff, 'hour' ) + ' old.';        } ); }); }  updateNumChanges;  setInterval( updateNumChanges, 2 * 60000 ); // update every 2 minutes } ) ( jQuery, mediaWiki );