Widget:Autorenbox: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
KKeine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
window.RLQ.push(function(){
window.RLQ.push(function(){
   mw.loader.enqueue(['mediawiki.api'], function(){
   mw.loader.enqueue(['mediawiki.api'], function(){
     const userlistEl = $(element).children('[data-zum-hook="userlist"]');
    const getCurrentTitle = () => mw.Title.makeTitle(
     const lastModifiedEl = $(element).children('[data-zum-hook="last-modified"]');
                                    mw.config.get('wgNamespaceNumber'),
                                    mw.config.get('wgTitle')
                                  ).getPrefixedText()
                            ;
     const userlistEl = $(element).find('[data-zum-hook="userlist"]');
     const lastModifiedEl = $(element).find('[data-zum-hook="last-modified"]');
     const api = new mw.Api();
     const api = new mw.Api();
     const response = api.get({
     const response = api.get({
Zeile 20: Zeile 25:
       indexpageids: 1,
       indexpageids: 1,
       prop:['revisions', 'contributors', 'info'],
       prop:['revisions', 'contributors', 'info'],
       titles:'<!--{$artikel|escape:'javascript'}-->'||mw.Title.makeTitle(mw.config.get('wgNamespaceNumber'), mw.config.get('wgTitle')).getPrefixedText(),
       titles:"<!--{$artikel|escape:'javascript'}-->"||getCurrentTitle(),
       rvlimit:1000
       rvlimit:1000
     });
     });
Zeile 36: Zeile 41:
       let userChanges = pageData
       let userChanges = pageData
         .contributors
         .contributors
         .reduce((acc, c)=>acc[c] = {count:0, last:0}, {});
         .reduce((acc, c)=> {acc[c.name] = {count:0, last:0, id:c.id}; return acc;}, {});
       userChanges = pageData.revisions.reduce((acc, r) => {
       userChanges = pageData.revisions.reduce((acc, r) => {
         acc[r.user] = acc[r.user] || {count:0, last:0};
         acc[r.user] = acc[r.user] || {count:0, last:0};
Zeile 43: Zeile 48:
         return acc;
         return acc;
       }, userChanges);
       }, userChanges);
       const users = Object.keys(userChanges).sort((a,b) => {
       const usernames = Object.keys(userChanges).sort((a,b) => {
         let diff = userChanges[b].count - userChanges[a].count;
         let diff = userChanges[b].count - userChanges[a].count;
         if(diff !== 0){
         if(diff !== 0){
Zeile 49: Zeile 54:
         }
         }
         return userChanges[b].last - userChanges[a].last;
         return userChanges[b].last - userChanges[a].last;
       });
       })
       users.map((user) => $('<img>')
      const userdatas = usernames.map((user) => api
          .attr('src', mw.config.get('wgScriptPath') + '/extensions/Avatar/avatar.php?user=' + user)
                          .parse(`{{#:avatar|${user}|l}}`)
          .wrap('<a href="test">')
                          .then((imgTag) => $(imgTag))
          .wrap('<div class="uk-border-circle uk-text-center" style="overflow:hidden;width:60%;margin:auto;">')
                          .then((img$) => img$.find('img').andSelf().filter('img').attr('src'))
          .wrap('<div class="uk-panel uk-panel-border uk-text-small" style="max-width:12h">')
                          .then((imgSrc) => {user, imgSrc})
          .appendTo($(userlistEl)));
                          .fail((ignored)=> null))
      $(element).removeClass('uk-hidden');
                        );
     });
       $.when(...userdatas)
    }
        .then((...userdatas) => userdatas.filter((ud) => ud !== null)
        .then((userdatas) => {
          userdatas.forEach(({user, imgSrc}) => {
            $('<img>')
              .attr('src', imgSrc)
              .wrap('<a>').attr('href', mw.Title.makeTitle(mw.config.get('wgNamespaceIds')['benutzer'], user).getUrl())
              .wrap('<div class="uk-border-circle uk-text-center" style="overflow:hidden;width:60%;margin:auto;">')
              .wrap('<div class="uk-panel uk-panel-border uk-text-small" style="max-width:12h">')
              .appendTo($(userlistEl));
          });
        })
        .then((ignored) => $(element).removeClass('uk-hidden'));
     });//end response.then
  });//end loader.enqueue
});//end RLQ.push
}//end if
})();
})();
</script>
</script>
</includeonly>
</includeonly>

Version vom 13. November 2021, 13:55 Uhr