MediaWiki:Common.js
Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur 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
/* Das folgende JavaScript wird für alle Benutzer geladen. */
// Top 10 zuletzt geänderte Seiten:
$(function() {
var $target = $('#seo-pages-table');
if (!$target.length) return;
// 1. Neue Seiten holen und Dubletten filtern
new mw.Api().get({
action: 'query',
list: 'recentchanges',
rcprop: 'title|timestamp',
rcshow: 'new',
rcnamespace: 0,
rclimit: 50, // Höheres Limit für Dublettenfilterung
format: 'json'
}).done(function(data) {
var pages = data.query?.recentchanges || [];
var uniquePages = {}; // Dublettenfilter
var filteredPages = [];
// 2. Einzigartige Seiten filtern
pages.forEach(function(p) {
if (!uniquePages[p.title] && !p.title.includes(':')) {
uniquePages[p.title] = true;
filteredPages.push(p);
if (filteredPages.length >= 10) return; // Auf 10 begrenzen
}
});
if (!filteredPages.length) {
$target.html('Keine neuen Seiten gefunden.');
return;
}
// 3. SEO-Daten für gefilterte Seiten holen
var titles = filteredPages.map(p => p.title).join('|');
new mw.Api().get({
action: 'query',
prop: 'pageprops',
titles: titles,
format: 'json'
}).done(function(seoData) {
var seoProps = {};
Object.values(seoData.query?.pages || {}).forEach(function(page) {
seoProps[page.title] = page.pageprops?.wikiseo_title || page.pageprops?.seo_title;
});
// 4. Tabelle generieren
var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellt am</th><th>SEO-Titel</th></tr>';
filteredPages.forEach(function(p) {
var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>';
var date = new Date(p.timestamp).toLocaleDateString('de-DE', {day: '2-digit', month: '2-digit', year: 'numeric'});
var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–';
table += `<tr><td>${link}</td><td>${date}</td><td>${seo}</td></tr>`;
});
$target.html(table + '</table>');
}).fail(() => $target.html('Fehler bei SEO-Daten'));
}).fail(() => $target.html('Fehler beim Laden'));
});