Benutzer:Schnark/js/wochentag.js
< Benutzer:Schnark | js
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
//Dokumentation unter [[Benutzer:Schnark/js/wochentag]] <nowiki>
/*global mediaWiki*/
(function ($, mw) {
"use strict";
var config = {
beo: true, //auf Beobachtungsliste ausführen?
rc: false, //auf Letzen Änderungen etc. ausführen?
seiten: mw.config.get('wgDBname') === 'dewiki' ? //auf diesen Seiten ausführen
['Wikipedia:Fragen_zur_Wikipedia', 'Wikipedia:Auskunft'] :
[]
}, parserDefaults, parserExtends = {};
parserDefaults = {
re: /^\s*(\d+)\.?\s*(.*?)\s*((?:\d{4})?)\s*$/,
order: [1, 2, 3],
parseDay: Number,
parseMonth: function (month) {
return Number(month.replace(/\D/g, '')) - 1;
},
parseYear: function parseYear (year, month) {
if (year) {
return Number(year);
}
var now = new Date();
if (month > now.getMonth()) {
return now.getFullYear() - 1;
} else {
return now.getFullYear();
}
},
format: '$1, $2'
};
parserExtends.de = {
parseMonth: function (monat) {
monat = monat.toLowerCase();
if (monat.indexOf('jan') === 0) {
return 0;
}
if (monat.indexOf('feb') === 0) {
return 1;
}
if (monat.indexOf('mär') === 0) {
return 2;
}
if (monat.indexOf('apr') === 0) {
return 3;
}
if (monat.indexOf('mai') === 0) {
return 4;
}
if (monat.indexOf('jun') === 0) {
return 5;
}
if (monat.indexOf('jul') === 0) {
return 6;
}
if (monat.indexOf('aug') === 0) {
return 7;
}
if (monat.indexOf('sep') === 0) {
return 8;
}
if (monat.indexOf('okt') === 0) {
return 9;
}
if (monat.indexOf('nov') === 0) {
return 10;
}
if (monat.indexOf('dez') === 0) {
return 11;
}
return Number(monat.replace(/\D/g, '')) - 1;
},
days: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
};
parserExtends.en = {
parseMonth: function (month) {
month = month.toLowerCase();
if (month.indexOf('jan') === 0) {
return 0;
}
if (month.indexOf('feb') === 0) {
return 1;
}
if (month.indexOf('mar') === 0) {
return 2;
}
if (month.indexOf('apr') === 0) {
return 3;
}
if (month.indexOf('may') === 0) {
return 4;
}
if (month.indexOf('jun') === 0) {
return 5;
}
if (month.indexOf('jul') === 0) {
return 6;
}
if (month.indexOf('aug') === 0) {
return 7;
}
if (month.indexOf('sep') === 0) {
return 8;
}
if (month.indexOf('oct') === 0) {
return 9;
}
if (month.indexOf('nov') === 0) {
return 10;
}
if (month.indexOf('dec') === 0) {
return 11;
}
return Number(month.replace(/\D/g, '')) - 1;
},
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
};
function parseDate (date, parserData) {
var match = parserData.re.exec(date),
day, month, year;
if (!match) {
return false;
}
day = parserData.parseDay(match[parserData.order[0]]);
month = parserData.parseMonth(match[parserData.order[1]]);
if (month < 0 || month > 11) {
return false;
}
year = parserData.parseYear(match[parserData.order[2]], month);
return new Date(year, month, day);
}
function formatDate (dateString, parserData) {
var date = parseDate(dateString, parserData);
if (date) {
return parserData.format
.replace(/\$1/, parserData.days[date.getDay()])
.replace(/\$2/, dateString);
}
}
function datumMitTag (datum) {
var parserData = $.extend({}, parserDefaults, parserExtends[mw.config.get('wgPageContentLanguage')]);
if (!parserData.days) {
return;
}
return formatDate(datum, parserData);
}
//fügt einen Wochentag vor ein Datum ein
function einfuegen () {
/*jshint validthis: true*///Funktion für $().each mit explizitem Kontext
var datum = datumMitTag(this.innerHTML);
if (datum) {
this.innerHTML = datum;
}
}
//Bearbeitet die Beobachtungsliste/...
function beobachtungsliste ($content) {
$content.find('h4').each(einfuegen);
}
//Bearbeitet die aktuelle Seite
function seite ($content) {
$content.find('#toc .toclevel-1 > a .toctext').each(einfuegen);
$content.find('h1 .mw-headline').each(einfuegen);
}
function run ($content) {
var special = mw.config.get('wgCanonicalSpecialPageName');
if (
(special === 'Watchlist' && config.beo) ||
(special === 'Recentchanges' && config.rc) ||
(special === 'Recentchangeslinked' && config.rc)
) {
beobachtungsliste($content);
} else if (config.seiten.indexOf(mw.config.get('wgPageName')) !== -1) {
seite($content);
}
}
mw.hook('userjs.load-script.wochentag').fire(config);
mw.hook('wikipage.content').add(run);
})(jQuery, mediaWiki);
//</nowiki>