MediaWiki:Common.js
Version vom 7. November 2025, 21:55 Uhr von Rettungsdienstblog.eu (Diskussion | Beiträge)
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
/* global mw, $ */
(function () {
'use strict';
$.when( mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ), $.ready ).then( function () {
// 1) Referenz-Portlet finden (Werkzeuge = p-tb). Daran hängen wir unseren Block direkt DARUNTER an.
var tools = document.getElementById('p-tb') || document.getElementById('p-navigation');
if ( !tools ) {
console.warn('[NewPages] Referenz-Portlet nicht gefunden.');
return;
}
// 2) Eigenen Portlet-Block erstellen – Klassen/Struktur von bestehendem Portlet ableiten
var block = document.createElement('div');
block.id = 'p-newpages';
// Klassen vom Werkzeuge-Portlet übernehmen (wirkt in Timeless/Vector/MonoBook sauber)
block.className = tools.className || 'mw-portlet';
// passende Überschrift (h3 oder h2 – je nach Skin) ermitteln
var headingTag = (tools.querySelector('h3,h2') || { tagName: 'H3' }).tagName;
var heading = document.createElement(headingTag);
heading.textContent = 'Neueste Beiträge';
// Body + UL wie bei anderen Portlets
var body = document.createElement('div');
body.className = 'body';
var list = document.createElement('ul');
body.appendChild(list);
block.appendChild(heading);
block.appendChild(body);
// Block direkt UNTERHALB von "Werkzeuge" einfügen
if (tools.insertAdjacentElement) {
tools.insertAdjacentElement('afterend', block);
} else if (tools.parentNode) {
tools.parentNode.insertBefore(block, tools.nextSibling);
}
// 3) Einträge via API laden
var api = new mw.Api();
api.get({
action: 'query',
list: 'recentchanges',
rctype: 'new',
rcprop: 'title|timestamp',
rcnamespace: 0, // nur Artikel
rcshow: '!bot|!redirect', // Bots & Weiterleitungen ausblenden
rclimit: 3,
format: 'json'
}).done(function (data) {
var items = (data.query && data.query.recentchanges) || [];
// Helper: <li><a/></li> hinzufügen
function addItem(href, text, title) {
var li = document.createElement('li');
var a = document.createElement('a');
a.href = href;
a.textContent = text;
if (title) a.title = title;
li.appendChild(a);
list.appendChild(li);
}
if (!items.length) {
addItem(mw.util.getUrl('Special:NewPages'), 'Keine neuen Seiten', 'Zur vollständigen Liste');
return;
}
for (var i = 0; i < items.length; i++) {
var rc = items[i];
var href = mw.util.getUrl(rc.title);
var tip = new Date(rc.timestamp).toLocaleString('de-DE', { dateStyle: 'medium', timeStyle: 'short' });
addItem(href, rc.title, tip);
}
// Abschluss-Link
addItem(mw.util.getUrl('Special:NewPages'), 'Alle neuen Seiten →', 'Zur vollständigen Liste');
}).fail(function (err) {
console.error('[NewPages] API-Fehler:', err);
var li = document.createElement('li');
li.textContent = 'Fehler beim Laden';
list.appendChild(li);
});
});
})();
/* global mw, $ */
(function () {
'use strict';
$.when($.ready).then(function () {
var content =
document.getElementById('mw-content-text') ||
document.getElementById('mw-content') ||
document.getElementById('bodyContent') ||
document.getElementById('content');
if (!content) return;
if (document.getElementById('support-box')) return;
// ---- Box erstellen ----
var box = document.createElement('aside');
box.id = 'support-box';
box.setAttribute('role', 'complementary');
box.setAttribute('aria-label', 'Unterstützung');
var header = document.createElement('div');
header.className = 'support-header';
header.innerHTML =
'<span class="support-badge">Anzeige</span>' +
'<span style="font-weight:600;">Unterstütze dieses Wiki</span>';
var body = document.createElement('div');
body.className = 'support-body';
// Amazon-Link dynamisch (Spamfilter umgehen)
var amazonHost = 'amazon.' + 'de';
var amazonBase = 'https://www.' + amazonHost + '/';
var partnerTag = 'rettungsdie00-21'; // <- anpassen!
var u = new URL(amazonBase);
u.searchParams.set('tag', partnerTag);
var amazonUrl = u.toString();
// Optionaler PayPal-QR-Code (eigenes Bild oder von PayPal)
var paypalQR = 'https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_111x69.jpg'; // Beispielbild
var paypalLink = 'https://www.paypal.me/rettungsdienstblog'; // <- anpassen!
// HTML-Inhalt
body.innerHTML = `
<img src="${paypalQR}" alt="Spenden oder einkaufen zur Unterstützung">
<div>
<a class="support-btn btn-amazon" href="${amazonUrl}" target="_blank" rel="nofollow sponsored noopener noreferrer">
🛒 Bei Amazon einkaufen
</a>
<a class="support-btn btn-paypal" href="${paypalLink}" target="_blank" rel="nofollow noopener noreferrer">
💙 Mit PayPal spenden
</a>
<a class="support-btn" href="/index.php?title=Spezial:Zufällige_Seite">
🔄 Zufälliger Artikel →
</a>
</div>
<small>* Als Amazon-Partner verdienen wir an qualifizierten Verkäufen.</small>
`;
box.appendChild(header);
box.appendChild(body);
content.insertBefore(box, content.firstChild);
});
})();