Widget:Autorenbox: Unterschied zwischen den Versionen
Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung Markierung: 2017-Quelltext-Bearbeitung |
KKeine Bearbeitungszusammenfassung Markierung: 2017-Quelltext-Bearbeitung |
||
Zeile 11: | Zeile 11: | ||
const paramArtikel = "<!--{$artikel|escape:'javascript'}-->" || null; | const paramArtikel = "<!--{$artikel|escape:'javascript'}-->" || null; | ||
const paramKategorie = "<!--{$kategorie|escape:'javascript'}-->" || null; | const paramKategorie = "<!--{$kategorie|escape:'javascript'}-->" || null; | ||
const paramMitUnterseiten = "<!--{$mit_unterseiten|escape:'javascript'}-->" === "ja"; | |||
const element = document.currentScript && document.currentScript.previousElementSibling; | const element = document.currentScript && document.currentScript.previousElementSibling; | ||
if (element) { | if (element) { | ||
Zeile 23: | Zeile 24: | ||
const lastModifiedEl = $(element).find('[data-zum-hook="last-modified"]'); | const lastModifiedEl = $(element).find('[data-zum-hook="last-modified"]'); | ||
const api = new mw.Api(); | const api = new mw.Api(); | ||
const | const queries; | ||
if (paramKategorie) { | |||
queries = [{ | |||
action: 'query', | action: 'query', | ||
prop: ['contributors', 'info'], | prop: ['contributors', 'info'], | ||
Zeile 31: | Zeile 34: | ||
gcmtype: 'page', | gcmtype: 'page', | ||
gcmlimit: 'max' | gcmlimit: 'max' | ||
} | }]; | ||
} else if (paramMitUnterseiten) { | |||
queries = [{ | |||
action: 'query', | action: 'query', | ||
prop: ['revisions', ' | prop: ['contributors', 'info'], | ||
generator: 'allpages', | |||
titles: paramArtikel || getCurrentTitle(), | |||
}, | |||
{ | |||
action: 'query', | |||
prop: ['revisions', 'info', 'contributors'], | |||
titles: paramArtikel || getCurrentTitle(), | titles: paramArtikel || getCurrentTitle(), | ||
rvlimit: 150, | |||
rvprop: ['userid', 'user', 'flags', 'timestamp'], | rvprop: ['userid', 'user', 'flags', 'timestamp'], | ||
rvlimit: 150 | }]; | ||
} | } else { | ||
const response = | queries = [{ | ||
action: 'query', | |||
prop: ['revisions', 'info', 'contributors'], | |||
titles: paramArtikel || getCurrentTitle(), | |||
rvlimit: 150, | |||
rvprop: ['userid', 'user', 'flags', 'timestamp'], | |||
}]; | |||
} | |||
const response = $.Deferred(); | |||
function continueQueryOrResolve(result, query, pages, lastContinue) { | function continueQueryOrResolve(result, query, pages, lastContinue) { | ||
api.get({...query, ...lastContinue}) | api.get({...query, ...lastContinue}) | ||
Zeile 53: | Zeile 73: | ||
}); | }); | ||
} | } | ||
queries.reduce((result, query) => { | |||
const newResult = $.Deferred(); | |||
continueQueryOrResolve(newResult, query, {}, null); | |||
return newResult.then((b) => { | |||
return result.then((a) => ([...a, ...b])); | |||
}); | |||
}, jQuery.Deferred()) | |||
.then((data) => { response.resolve(data);}); | |||
continueQueryOrResolve(response, query, {}, null); | continueQueryOrResolve(response, query, {}, null); | ||
response | response |