MediaWiki:Gadget-SpecialPages.js/UserRights.js

( function ( mw, $ ) {	if( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Userrights' ) {		//INITIALIZE VARIABLES		// Define the api check variables		var apiAllusersDone = false;		var apiAllusersFailed = false;		var apiUsercontribsDone = false;		var apiUsercontribsFailed = false;		// Get the username from the page title from mw.config variables		var urUsername = $( '#username' ).val;		// Define edit count as -1 to start		var urEditCount = -1;		// Define registration time as empty to start, may modify this to epoch later and return a message warning about created before reg date existed		var urRegistration = "";		// Define user's age in months since Jan 2000 as -1 to start, may need to go back further at some point		var urAgeInMonths = -1;		// Check to see if the VIP checkbox is checked and if it is, they are a VIP already && set isVIP to false for viewing user		var urVIP = $( '#wpGroup-ddowikivip' ).is( ':checked' ); var isVIP = false; // Check to see if the SU checkbox is checked and if it is, they are a SU already && set isSU to false for viewing user var urSU = $( '#wpGroup-superuser' ).is( ':checked' ); var isfSU = false; // Check to see if the admin checkbox is checked and if it is, they are an admin already && set isAdmin to false for viewing user var urAdmin = $( '#wpGroup-sysop' ).is( ':checked' ); var isAdmin = false; // Check to see if the crat checkbox is checked and if it is, they are a crat already && set isCrat to false for viewing user var urCrat = $( '#wpGroup-bureaucrat' ).is( ':checked' ); var isCrat = false; // Check to see if the steward checkbox is checked and if it is, they are a steward already && set isSteward to false for viewing user var urSteward = $( '#wpGroup-steward' ).is( ':checked' ); var isSteward = false; // Check to see if the bot checkbox is checked and if it is, they are a bot already && set isBot to false for viewing user var urBot = $( '#wpGroup-bot' ).is( ':checked' ); var isBot = false; // Get viewing user's groups for ( var group in mw.config.get( 'wgUserGroups' ) ){ switch ( mw.config.get( 'wgUserGroups' )[ group ]){ case 'ddowikivip' : isVIP = true; break; case 'superuser' : isSU = true; break; case 'sysop' : isAdmin = true; break; case 'bureaucrat' : isCrat = true; break; case 'steward' : isSteward = true; break; case 'bot' : isBot = true; break; default: break; }		}		// Define a new date constructor var currDate = new Date; // Calculate the current number of months since Jan 2000 var currDateInMonths = currDate.getFullYear * 12 + currDate.getMonth; // function to format numbers with commas function numformat(nStr){ nStr += ''; x = nStr.split( '.' ); x1 = x[ 0 ]; x2 = x.length > 1 ? '.' + x[ 1 ] : ''; var rgx = /(\d+)(\d{3})/; while ( rgx.test( x1 ) ) { x1 = x1.replace( rgx, '$1' + ',' + '$2' ); }			return x1 + x2; }		// Update the table function updateInfo{ /* Need to get edit history to look for gaps and last contribution (doesn't have to be an edit, a move, delete, protect etc counts) if( urGapLong <= *//* 1 month /*) {*/ $( '.mo-gap' ).html( '?' );/* $( '.mo-gap' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); }			if( urLongGaps <= 3 ) {*/ $( '.no-gaps' ).html( '?' );/* $( '.no-gaps' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); }			if(urActive === true){*/ $( '.active' ).html( '?' );/* $( '.active' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); }			*/			if ( urAdmin === true ){ $( '.is-admin' ).css( 'color', '#00FF00' ).html( '&#x2714;' ); }			// If they are a VIP but not a crat or stewart, then show the message about what the * means if ( isVIP === true && !( isCrat === true || isSteward === true ) ) { $( '#groups-add-noremove' ).removeClass( 'hidden' ); }			// Change the exclaimation mark to a semicolon $( '#groups-qualified-js' ).html( ':' ); // Unhide completed table $( '#groups-add-table-js' ).removeClass( 'hidden' ); }		$.ajax( {			url: mw.config.get( 'wgScriptPath' ) + '/api.php?action=query&format=json&list=allusers&auprop=editcount|registration&aulimit=1&aufrom=' + encodeURIComponent( urUsername ),			dataType: 'json',			success: function( data ){				urEditCount = data.query.allusers[ 0 ].editcount;				urRegistration = data.query.allusers[ 0 ].registration;				if ( typeof( urRegistration ) !== 'undefined' ) {					urRegistration = new Date( urRegistration );				} else {					urRegistration = new Date( 1999, 11, 30 );				}				urAgeInMonths = ( ( urRegistration.getFullYear * 12 ) + urRegistration.getMonth );				urAgeInMonths = ( currDateInMonths - urAgeInMonths );				if ( urEditCount >= 0 ){								if ( urEditCount >= 100 ){						$( '.100' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' );						if ( urEditCount >= 250 ){							$( '.250' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); if ( urEditCount >= 1000 ) { $( '.1k' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); }						}					}				} else { $( '.100' ).html( '?' ) $( '.250' ).html( '?' ) $( '.1k' ).html( '?' ) }				// If account is 6+ months old, tick box in green. If account is between 3-6 months old, tick it in yellow if ( urAgeInMonths >= 0 && urAgeInMonths < 3 ) { /* Account isn't at least 3 months old - not eligible */ } else if ( urAgeInMonths >= 3 && urAgeInMonths < 6 ) { /* Account is at least 3 months old, but is less than 6 months old - eligible for probational status */ $( '.age' ).css( { 'color': '#AAAA00', 'font-size': '12pt' } ).html( '&#x2714;' ); } else { /* Account is at least 6 months old or there's no registration date - fully eligible */ $( '.age' ).css( { 'color': '#00FF00', 'font-size': '12pt' } ).html( '&#x2714;' ); }				// Add the registration date and edit count to the bottom left cell in the table // Create text string var textUserStats = "This "; if ( urAgeInMonths < 0 || isNaN( urAgeInMonths ) ){ textUserStats += 'account is too old '; }				else if ( urAgeInMonths === 0 ) { textUserStats += 'is a new account '; }				else if ( urAgeInMonths === 1 ) { textUserStats += 'account is a month old '; } else { textUserStats += 'account is ' + urAgeInMonths + ' months old '; }				textUserStats += 'and has made '; if ( urEditCount < 0 || isNaN( urEditCount ) ) { textUserStats += 'an undefined number of edits.'; }				else if ( urEditCount === 0 ) { textUserStats += 'no edits.'; }				else if ( urEditCount === 1 ) { textUserStats += 'an edit.'; } else { textUserStats += numformat( urEditCount ) + ' edits.'; }				$( '#groups-userstats-js' ).html( textUserStats ); apiAllusersDone = true; updateInfo; },			fail: function( reason ){ $( '.100' ).html( '??' ) $( '.250' ).html( '???</a>' ) $( '.1k' ).html( '???</a>' ) $( '.age' ).css({"color": "#AA0", "font-size": "12pt"}).html( '???</a>' ); console.error( 'apiAllusers failed: %o', reason ); apiAllusersFailed = true; }		} );	} } )( mediaWiki, jQuery );