MediaWiki:Common.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Markierung: Zurückgesetzt |
Markierungen: Manuelle Zurücksetzung Zurückgesetzt |
||
| Zeile 85: | Zeile 85: | ||
list.appendChild(li); | list.appendChild(li); | ||
}); | }); | ||
}); | }); | ||
})(); | })(); | ||
Version vom 7. November 2025, 21:57 Uhr
/* 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);
});
});
})();