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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//Dokumentatin unter [[Benutzer:Schnark/js/kackbalken]] <nowiki>
/*global mediaWiki*/
(function ($, mw) {
"use strict";
var normalMsg = {
		en: ['You have ', 'new messages', ' on your ', 'talk page', '.'],
		de: ['Du hast ', 'neue Nachrichten', ' auf deiner ', 'Diskussionsseite', '.'],
		'de-formal': ['Sie haben ', 'neue Nachrichten', ' auf Ihrer ', 'Diskussionsseite', '.']
	}, funnyMsg = {
		de: [ //von [[Benutzer:Revvar/irrenhaus.js]]
			['Du hast ', 'neuen Spam', ', den du eh nicht ', 'liest', '.'],
			['Da hat wieder so ein ', 'Trottel', ' deine ', 'Disk', ' gespammt.'],
			['Reverten ist ', 'ja', ' so ', 'schön', '.'],
			['Haaaaloooo, da will ', 'wer', ' mit dir ', 'sprechen', '.'],
			['Zufällig hat ', 'jemand', ' den Weg auf deine ', 'Disk', ' gefunden.'],
			['', 'Jemand', ' mag ', 'dich', '.'],
			['Ein ', 'Troll', ' will mit dir ', 'diskutieren', '.'],
			['Hey, da ', 'wartet wer', ' auf ', 'deine Antwort', '!'],
			['Schon mal nach deinen ', 'neusten Nachrichten', ' ', 'geschaut', '?'],
			['Da ist wohl ', 'jemand', ' sauer auf ', 'dich', '?!'],
			['Deine Disk wird gerade ', 'vandaliert', '. Schnell, ', 'revertieren', '!']
		]
	};

function getFunnyMsg () {
	var chain = mw.language.getFallbackLanguageChain(), i, msgs = [];
	for (i = 0; i < chain.length; i++) {
		if (chain[i] in funnyMsg) {
			msgs = funnyMsg[chain[i]];
			break;
		}
	}
	if (msgs.length) {
		return msgs[Math.floor(msgs.length * Math.random())];
	} else {
		return getNormalMsg();
	}
}

function getNormalMsg () {
	var chain = mw.language.getFallbackLanguageChain(), i;
	for (i = 0; i < chain.length; i++) {
		if (chain[i] in normalMsg) {
			return normalMsg[chain[i]];
		}
	}
	return normalMsg.en; //sollte nicht passieren
}

function setMsg () {
	var m = mw.user.options.get('userjs-schnark-kackbalken-irr') ? getFunnyMsg() : getNormalMsg();
	mw.messages.set({
		//ursprüngliche Nachrichten werden hier stark modifiziert, daher neue Namen
		'schnark-kackbalken-youhavenewmessages': m[0] + '$2' + m[2] + '$1' + m[4],
		'schnark-kackbalken-newmessageslink': m[3],
		'schnark-kackbalken-newmessagesdifflink': m[1]
	});
}

function getLinks (revId) {
	var d = mw.config.get('wgFormattedNamespaces')[3] + ':' + mw.config.get('wgUserName');
	return [mw.util.getUrl(d, {redirect: 'no'}), mw.util.getUrl(d, {oldid: revId, diff: 'curr'})];
}

function getNewMessage (revId) {
	var l = getLinks(revId);
	l[0] = mw.html.element('a', {href: l[0]}, mw.msg('schnark-kackbalken-newmessageslink'));
	l[1] = mw.html.element('a', {href: l[1]}, mw.msg('schnark-kackbalken-newmessagesdifflink'));
	return mw.msg('schnark-kackbalken-youhavenewmessages', l[0], l[1]);
}

function showNewMessage (revId) {
	var html = getNewMessage(revId);
	$('#jump-to-nav').before(mw.html.element('div', {'class': 'usermessage'}, new mw.html.Raw(html)));
}

function init () {
	var revId;
	revId = mw.util.getParamValue('kackbalken') || //zum Testen
		mw.config.get('wgUserNewMsgRevisionId');
	if (
		revId &&
		!(
			mw.config.get('wgNamespaceNumber') === 3 &&
			mw.config.get('wgTitle') === mw.config.get('wgUserName')
		)
	) {
		mw.loader.using('mediawiki.language').then(function () {
			setMsg();
			$(function () {
				showNewMessage(revId);
			});
		});
	}
}

mw.loader.using(['mediawiki.util', 'user.options']).then(init);

})(jQuery, mediaWiki);
//</nowiki>