Widget:Autorenbox: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
KKeine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
Zeile 26: Zeile 26:
     const query = paramKategorie ? {
     const query = paramKategorie ? {
       action:'query',
       action:'query',
      indexpageids: 1,
       prop:['contributors', 'info'],
       prop:['revisions', 'contributors', 'info'],
       generator: 'categorymembers',
       generator: 'categorymembers',
       gcmtitle: `Kategorie:${paramKategorie}`,
       gcmtitle: `Kategorie:${paramKategorie}`,
       gcmnamespace:0,
       gcmnamespace:0,
       gcmtype: 'page',
       gcmtype: 'page',
       gcmlimit: 500
       gcmlimit: 'max'
     } : {
     } : {
       action:'query',
       action:'query',
      indexpageids: 1,
       prop:['revisions', 'contributors', 'info'],
       prop:['revisions', 'contributors', 'info'],
       titles: paramArtikel || getCurrentTitle(),
       titles: paramArtikel || getCurrentTitle(),
       rvlimit:1000
      rvprop:['userid', 'user', 'flags', 'timestamp'],
       rvlimit:150
     };
     };
 
     const response = jQuery.Deferred();
 
    function continueQueryOrResolve(pages, query, lastContinue){
     const response = api.get(query);
      api.get({...query, ...lastContinue})
    response.then((data) => {
        .then((response) => {
    //TODO continuation handling
          const newResult = response.query.pages.reduce((pages, page) => {
 
            pages[page.pageid] = {...pages[page.pageid], ...page};
      if (data.query.pageids[0] === "-1") {
            return acc;
         return;
          }, pages);
      }
          if (response.continue !== undefined) {
 
            continueOrResolve(newResult, query, response.continue);
       const userCounts = data.query.pageids.reduce((acc, pageid) => {
          } else if (response.batchcomplete !== undefined) {
        const pageData = data
            response.resolve(newResult);
              .query
          }
              .pages[pageid];
         });
 
    }
         acc.lastmodified = Math.max(acc.lastmodified, Date.parse(pageData.touched));
    response.then((pages) => {
       const userCounts = pages.reduce((acc, pageData) => {
         acc = pageData
         acc.touched = Math.max(acc.touched||-1, Date.parse(pageData.touched));
          .contributors && pageData
         acc.userChanges = (pageData.contributors||[])
          .contributors
           .reduce((userChanges, c)=> {
           .reduce((acc, c)=> {acc.userChanges[c.name] = acc.userChanges[c.name]||{count:0, last:0, id:c.id}; return acc;}, acc);
            userChanges[c.userid] = userChanges[c.userid] || {count:0, last:-1, userid: c.userid, username: c.name};
         acc = pageData.revisions.reduce((acc, r) => {
            userChanges[c.userid].count += 1;
          acc.userChanges[r.user] = acc.userChanges[r.user] || {count:0, last:0};
            return userChanges;
          acc.userChanges[r.user].count += r.minor === '' ? 0.1 : 1;
        }, acc.userChanges||{});
          acc.userChanges[r.user].last = Math.max(acc.userChanges[r.user].last, r.revid);
         acc.userChanges = (pageData.revisions||[])
          return acc;
          .reduce((userChanges, r) => {
         }, acc);
            userChanges[r.userid] = userChanges[r.userid] || {count:0, last:-1, userid: r.userid, username: r.user};
            userChanges[r.userid].count += r.minor !== undefined ? 0.1 : 1;
            userChanges[r.userid].last = Math.max(userChanges[r.userid].last, r.revid);
            return userChanges;
         }, acc.userChanges||{});
         return acc;
         return acc;
       }, {lastmodified: -1, userChanges:{}});
       }, {});
       const usernames = Object.keys(userCounts.userChanges).sort((a,b) => {
       const usernames = Object.values(userCounts.userChanges).sort((a,b) => {
         let diff = userCounts.userChanges[b].count - userCounts.userChanges[a].count;
         let diff = b.count - a.count;
         if(diff !== 0){
         if(diff !== 0){
           return diff;
           return diff;
         }
         }
         return userCounts.userChanges[b].last - userCounts.userChanges[a].last;
         return b.last - a.last;
       })
       }).map((user) => user.username);


       $(lastModifiedEl).append(new Date(userCounts.lastmodified).toLocaleDateString());
       $(lastModifiedEl).append(new Date(userCounts.touched).toLocaleDateString());
       const userdatas = usernames.map((user) => api
       const userdatas = usernames.map((user) => api
                           .parse(`{{#avatar:${user}|l}}`)
                           .parse(`{{#avatar:${user}|l}}`)

Version vom 14. November 2021, 19:25 Uhr