Utilisateur:0x010C/script/EnhancedContribToolList.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Log Counter
 */

$( async function() {
	var api = new mw.Api(),
      groups = mw.config.get( 'wgUserGroups' );
	
	function getNode( mwMessage ) {
		var i,
			$candidates = $( '#contentSub .mw-changeslist-links > span' ),
			textF = mw.msg( mwMessage, 'female' ),
			textM = mw.msg( mwMessage, 'male' );
		
		for ( i = 0; i < $candidates.length; i++ ) {
			if ( $candidates.eq( i ).children( 'a' ).text() === textF || $candidates.eq( i ).children( 'a' ).text() === textM ) {
				return $candidates.eq( i );
			}
		}
	};
	
	async function displayBlockNumber() {
		var result, i, $span,
			block = 0,
			reblock = 0,
			unblock = 0;
		
		// Get up to 5000 block logs
		result = await api.get( {
			action: 'query',
			format: 'json',
			list: 'logevents',
			letype: 'block',
			letitle: 'User:' + mw.config.get( 'wgRelevantUserName' ),
			lelimit: 'max'
		} );
		
		// Sum up all revs to count them
		for ( i = 0; i < result.query.logevents.length; i++ ) {
			switch( result.query.logevents[ i ].action ) {
				case 'block':
					block++;
					break;
				case 'reblock':
					reblock++;
					break;
				case 'unblock':
					unblock++;
					break;
			}
		}
		
		// Display the result
		$span = $( '<span> (<span title="block">' + block + '</span> / <span title="reblock">' + reblock + '</span> / <span title="unblock">' + unblock + '</span>)</span>' );
		if ( block > 0 ) {
			$span.css( 'font-weight', 'bold' );
		}
		getNode( 'sp-contributions-blocklog' ).append( $span );
	};
	
	async function displayDeletedRevisionNumber() {
		var result, i, $span
			count = 0;
		
		// Get up to 5000 deleted revs
		result = await api.get( {
			action: 'query',
			format: 'json',
			list: 'alldeletedrevisions',
			formatversion: 2,
			adrlimit: 'max',
			adruser: mw.config.get( 'wgRelevantUserName' )
		} );
		
		// Sum up all revs to count them
		for ( i = 0; i < result.query.alldeletedrevisions.length; i++ ) {
			count += result.query.alldeletedrevisions[ i ].revisions.length;
		}
		
		// Display the result
		$span = $( '<span>' ).text( ' (' + count + ( count > 4900 ? '+' : '' ) + ')' );
		if ( count > 0 ) {
			$span.css( 'font-weight', 'bold' );
		}
		getNode( 'sp-contributions-deleted' ).append( $span );
	};
	
	async function displayAbuselogNumber() {
		var result, i, $span
			count = 0;
		
		// Get up to 5000 deleted revs
		result = await api.get( {
			action: 'query',
			format: 'json',
			list: 'abuselog',
			afluser: mw.config.get( 'wgRelevantUserName' ),
			afllimit: 'max',
			aflprop: 'ids'
		} );
		count = result.query.abuselog.length;
		
		// Display the result
		$span = $( '<span>' ).text( ' (' + count + ( count > 4900 ? '+' : '' ) + ')' );
		if ( count > 0 ) {
			$span.css( 'font-weight', 'bold' );
		}
		getNode( 'abusefilter-log-linkoncontribs' ).append( $span );
	};
	
	async function displayCULogNumber() {
		var result, i, $span
		count = 0;
		
		// Get up to 5000 deleted revs
		result = await api.get( {
			action: 'query',
			format: 'json',
			list: 'checkuserlog',
			cultarget: mw.config.get( 'wgRelevantUserName' ),
			cullimit: 'max',
		} );
		count = result.query.checkuserlog.entries.length;
		
		// Display the result
		$span = $( '<span>' ).text( ' (' + count + ( count > 4900 ? '+' : '' ) + ')' );
		if ( count > 0 ) {
			$span.css( 'font-weight', 'bold' );
		}
		getNode( 'checkuser-contribs-log' ).append( $span );
	};
	
	// If we're on the "Contributions" special page
	if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' ) {
		await api.loadMessagesIfMissing( [ 'abusefilter-log-linkoncontribs', 'sp-contributions-deleted', 'sp-contributions-blocklog', 'checkuser-contribs-log' ] );
		
		displayBlockNumber();
		displayAbuselogNumber();
		if ( groups.indexOf( 'sysop' ) > -1 || groups.indexOf( 'checkuser' ) > -1 ) {
			displayDeletedRevisionNumber();
		}
		if ( groups.indexOf( 'checkuser' ) > -1 ) {
			displayCULogNumber();
		}
	}
} );