MediaWiki:Common.js: Unterschied zwischen den Versionen
Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur Suche springen
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
$(function() { | $(function() { | ||
const $target = $('#seo-pages-table'); | |||
if (!$target.length) return; | if (!$target.length) return; | ||
// 1. Neue Seiten über API abrufen | |||
$.getJSON(mw.util.wikiScript('api'), { | $.getJSON(mw.util.wikiScript('api'), { | ||
action: 'query', | action: 'query', | ||
list: 'recentchanges', | list: 'recentchanges', | ||
rcprop: 'title|timestamp| | rcprop: 'title|timestamp|ids', | ||
rctype: 'new' | rctype: 'new', | ||
rcnamespace: 0, | rcnamespace: 0, | ||
rclimit: 10, | |||
format: 'json' | format: 'json' | ||
}) | }).done(async function(data) { | ||
const pages = data.query.recentchanges; | |||
let tableHTML = ` | |||
<table class="wikitable"> | |||
<tr> | |||
<th>Seitenname</th> | |||
<th>Erstellungsdatum</th> | |||
<th>SEO-Titel</th> | |||
</tr> | |||
`; | |||
// 2. Für jede Seite SEO-Metadaten abrufen | |||
for (const page of pages) { | |||
try { | |||
const seoData = await fetchSEOMetadata(page.title); | |||
const date = new Date(page.timestamp).toLocaleDateString('de-DE'); | |||
tableHTML += ` | |||
<tr> | |||
<td>${createPageLink(page.title)}</td> | |||
}); | <td>${date}</td> | ||
<td>${seoData || '–'}</td> | |||
</tr> | |||
`; | |||
} catch (e) { | |||
console.error(`Fehler bei ${page.title}:`, e); | |||
} | |||
} | } | ||
tableHTML += '</table>'; | |||
$target.html(tableHTML); | |||
}).fail(function(err) { | |||
$target.html(`<div class="error">Fehler: ${err.statusText}</div>`); | |||
}); | |||
// Hilfsfunktionen | |||
function createPageLink(title) { | |||
return `<a href="${mw.util.getUrl(title)}">${mw.html.escape(title)}</a>`; | |||
} | |||
async function fetchSEOMetadata(title) { | |||
const response = await $.getJSON(mw.util.wikiScript('api'), { | |||
action: 'query', | |||
prop: 'pageprops', | |||
titles: title, | |||
format: 'json' | |||
}); | |||
const page = response.query.pages[Object.keys(response.query.pages)[0]]; | |||
return page.pageprops?.wikiseo_title || page.pageprops?.seo_title; | |||
} | |||
} | |||
}); | }); |
Version vom 13. Mai 2025, 06:58 Uhr
/* Das folgende JavaScript wird für alle Benutzer geladen. */ // Top 10 zuletzt geänderte Seiten: $(function() { const $target = $('#seo-pages-table'); if (!$target.length) return; // 1. Neue Seiten über API abrufen $.getJSON(mw.util.wikiScript('api'), { action: 'query', list: 'recentchanges', rcprop: 'title|timestamp|ids', rctype: 'new', rcnamespace: 0, rclimit: 10, format: 'json' }).done(async function(data) { const pages = data.query.recentchanges; let tableHTML = ` <table class="wikitable"> <tr> <th>Seitenname</th> <th>Erstellungsdatum</th> <th>SEO-Titel</th> </tr> `; // 2. Für jede Seite SEO-Metadaten abrufen for (const page of pages) { try { const seoData = await fetchSEOMetadata(page.title); const date = new Date(page.timestamp).toLocaleDateString('de-DE'); tableHTML += ` <tr> <td>${createPageLink(page.title)}</td> <td>${date}</td> <td>${seoData || '–'}</td> </tr> `; } catch (e) { console.error(`Fehler bei ${page.title}:`, e); } } tableHTML += '</table>'; $target.html(tableHTML); }).fail(function(err) { $target.html(`<div class="error">Fehler: ${err.statusText}</div>`); }); // Hilfsfunktionen function createPageLink(title) { return `<a href="${mw.util.getUrl(title)}">${mw.html.escape(title)}</a>`; } async function fetchSEOMetadata(title) { const response = await $.getJSON(mw.util.wikiScript('api'), { action: 'query', prop: 'pageprops', titles: title, format: 'json' }); const page = response.query.pages[Object.keys(response.query.pages)[0]]; return page.pageprops?.wikiseo_title || page.pageprops?.seo_title; } });