Benutzer:Fomafix/Gadget-revisionCounter.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
//===========================================================================
// Fügt an den Reiter "Versionen/Autoren" die Anzahl Versionen an und die
// Anzahl vom Nutzer erstellter Versionen.
//===========================================================================

( function ( mw, $ ) {
	'use strict';

	switch ( mw.config.get( 'wgUserLanguage' ) ) {
	case 'de':
	case 'de-at':
	case 'de-ch':
	case 'de-formal':
		mw.messages.set( {
			'revisioncounter-text': '($1/$2)',
			'revisioncounter-title': 'Insgesamt $1 Versionen, davon $2 von mir'
		} );
		break;
	//case 'en':
	default:
		mw.messages.set( {
			'revisioncounter-text': '($1/$2)',
			'revisioncounter-title': 'a total of $1 versions, including $2 versions of me'
		} );
		break;
	}

	var revisionCount, revisionCountUser, api;

	function showCounter() {
		$( '#ca-history a' )
		.append(
			' ',
			mw.html.element( 'span',
				{ title: mw.msg( 'revisioncounter-title', revisionCount, revisionCountUser ) },
				mw.msg( 'revisioncounter-text', revisionCount, revisionCountUser )
			)
		);
	}

	function queryResult( res ) {
		var revs, index;

		if ( !res.query ||
			!res.query.pages ||
			!res.query.pages[mw.config.get( 'wgArticleId' )] ||
			!res.query.pages[mw.config.get( 'wgArticleId' )].revisions
		) {
			return;
		}

		revs = res.query.pages[mw.config.get( 'wgArticleId' )].revisions;

		// Alle Beiträge zählen.
		revisionCount += revs.length;

		// Eigene Beiträge zählen.
		for ( index in revs ) {
			if ( revs[index].user === mw.config.get( 'wgUserName' ) ) {
				revisionCountUser++;
			}
		}

		if ( res['continue'] ) {
			// Es sind noch weitere Revisionen vorhanden. Nächsten Block abholen.
			api.get( res['continue'] ).done( queryResult );
		} else {
			showCounter();
		}
	}

	function init() {
		// Bisherige Einstellung über die globale Variable checkOnlyOnHistory übernehmen.
		if ( !mw.user.options.exists( 'checkOnlyOnHistory' ) &&
			typeof checkOnlyOnHistory !== 'undefined'
		) {
			mw.user.options.set( 'checkOnlyOnHistory', checkOnlyOnHistory );
		}

		if ( mw.user.options.get( 'checkOnlyOnHistory', true ) &&
			mw.config.get( 'wgAction' ) !== 'history'
		) {
			return;
		}

		revisionCount = 0;
		revisionCountUser = 0;
		api = new mw.Api( {
			parameters: {
				prop: 'revisions',
				pageids: mw.config.get( 'wgArticleId' ),
				rvprop: 'user',
				rvlimit: 'max',
				'continue': ''
			}
		} );
		api.get( {} ).done( queryResult );
	}

	if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 &&
		mw.config.get( 'wgArticleId' ) > 0
	) {
		$( init );
	}

}( mediaWiki, jQuery ) );