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, 05: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;
}
});