Benutzer:ElBe/message.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
/*Originalskript von [[Benutzer:Schnark/js/deprecated.js]]
Überarbeitet von [[Benutzer:ElBe]]*/
/* Zeigt Nachrichten an: <nowiki>
mw.libs.deprecated = $.extend(mw.libs.deprecated, {'Das ist eine Nachricht!'});
importScript('Benutzer:ElBe/message.js');
*/
/*global mediaWiki*/
(function ($, mw, libs) {
"use strict";
var cookieName = 'ElBe_Message_Show';

function parse (text) {
	return text.replace(/\[\[(.*?)\]\]/g, function (all, title) {
		return mw.html.element('a', {href: mw.util.getUrl(title).replace('%23', '#')}, title);
	});
}

function getUnreadDeprecations () {
	var	read = (mw.cookie.get(cookieName) || '').split('|'),
		unread = [], key;
	for (key in libs.deprecated) {
		if ($.inArray(key, read) === -1) {
			unread.push(key);
		}
	}
	return unread;
}

function setRead (read) {
	mw.cookie.set(cookieName, (mw.cookie.get(cookieName) || '') + read.join('|'));
}

function getNotice (unread) {
	var	list = $.map(unread, function (key) {
			return mw.html.element('p', {}, new mw.html.Raw(parse(libs.deprecated[key])));
		}).join(''),
		link = '[Meldung ausblenden]',
		html = mw.html.element('p', {}, new mw.html.Raw(list)) +
			mw.html.element('p', {}, new mw.html.Raw(
				mw.html.element('a', {id: 'elbe-message', style: 'float: right', href: '#'}, link)
			)),
		$div = $(mw.html.element('div', {}, new mw.html.Raw(html)));
		$div.find('#elbe-message').click(function () {
			$div.hide();
			setRead(unread);
			return false;
		});
		return $div;
}

function showNotice () {
	var unread = getUnreadDeprecations();
	if (unread.length === 0) {
		return;
	}
	$('#firstHeading').before(getNotice(unread));
}

function init () {
	mw.loader.using(['mediawiki.util', 'mediawiki.cookie'], function () {
		window.setTimeout(function () {
			$(showNotice);
		}, 2000); //2 Sekunden warten, dass alle veralteten Skripte geladen sind
	});
}

init();

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