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 | ||
