MediaWiki:Common.js: Unterschied zwischen den Versionen
Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur Suche springen
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 7: | Zeile 7: | ||
if (!$target.length) return; | if (!$target.length) return; | ||
// 1. Neue Seiten holen | // 1. Neue Seiten holen | ||
new mw.Api().get({ | new mw.Api().get({ | ||
action: 'query', | action: 'query', | ||
| Zeile 14: | Zeile 14: | ||
rcshow: 'new', | rcshow: 'new', | ||
rcnamespace: 0, | rcnamespace: 0, | ||
rclimit: | rclimit: 30, | ||
format: 'json' | format: 'json' | ||
}).done(function(data) { | }).done(function(data) { | ||
var pages = data.query | var pages = data.query && data.query.recentchanges ? data.query.recentchanges : []; | ||
if (!pages.length) { | |||
if (! | |||
$target.html('Keine neuen Seiten gefunden.'); | $target.html('Keine neuen Seiten gefunden.'); | ||
return; | return; | ||
} | } | ||
// | // 2. Für jede Seite SEO-Title holen (pageprops) | ||
var titles = | var titles = pages.map(function(p) { return p.title; }).join('|'); | ||
new mw.Api().get({ | new mw.Api().get({ | ||
action: 'query', | action: 'query', | ||
| Zeile 44: | Zeile 32: | ||
}).done(function(seoData) { | }).done(function(seoData) { | ||
var seoProps = {}; | var seoProps = {}; | ||
Object.values(seoData.query | if (seoData.query && seoData.query.pages) { | ||
Object.values(seoData.query.pages).forEach(function(page) { | |||
if (page.pageprops && (page.pageprops.wikiseo_title || page.pageprops.seo_title)) { | |||
seoProps[page.title] = page.pageprops.wikiseo_title || page.pageprops.seo_title; | |||
} | |||
}); | |||
} | |||
// | // 3. Tabelle bauen | ||
var table = '<table class="wikitable"><tr><th>Seitenname</th><th> | var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellungsdatum</th><th>SEO-Titel</th></tr>'; | ||
pages.forEach(function(p) { | |||
var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>'; | var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>'; | ||
var date = new Date(p.timestamp).toLocaleDateString('de-DE' | var date = new Date(p.timestamp).toLocaleDateString('de-DE'); | ||
var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–'; | var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–'; | ||
table += | table += '<tr><td>' + link + '</td><td>' + date + '</td><td>' + seo + '</td></tr>'; | ||
}); | }); | ||
table += '</table>'; | |||
}).fail(() | $target.html(table); | ||
}).fail(() | }).fail(function() { | ||
$target.html('Fehler beim Laden der SEO-Daten.'); | |||
}); | |||
}).fail(function() { | |||
$target.html('Fehler beim Laden der neuen Seiten.'); | |||
}); | |||
}); | }); | ||
Aktuelle Version vom 13. Mai 2025, 12:24 Uhr
/* 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
new mw.Api().get({
action: 'query',
list: 'recentchanges',
rcprop: 'title|timestamp',
rcshow: 'new',
rcnamespace: 0,
rclimit: 30,
format: 'json'
}).done(function(data) {
var pages = data.query && data.query.recentchanges ? data.query.recentchanges : [];
if (!pages.length) {
$target.html('Keine neuen Seiten gefunden.');
return;
}
// 2. Für jede Seite SEO-Title holen (pageprops)
var titles = pages.map(function(p) { return p.title; }).join('|');
new mw.Api().get({
action: 'query',
prop: 'pageprops',
titles: titles,
format: 'json'
}).done(function(seoData) {
var seoProps = {};
if (seoData.query && seoData.query.pages) {
Object.values(seoData.query.pages).forEach(function(page) {
if (page.pageprops && (page.pageprops.wikiseo_title || page.pageprops.seo_title)) {
seoProps[page.title] = page.pageprops.wikiseo_title || page.pageprops.seo_title;
}
});
}
// 3. Tabelle bauen
var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellungsdatum</th><th>SEO-Titel</th></tr>';
pages.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');
var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–';
table += '<tr><td>' + link + '</td><td>' + date + '</td><td>' + seo + '</td></tr>';
});
table += '</table>';
$target.html(table);
}).fail(function() {
$target.html('Fehler beim Laden der SEO-Daten.');
});
}).fail(function() {
$target.html('Fehler beim Laden der neuen Seiten.');
});
});