Benutzer:Martinnitus/Bearbeitungsstatistik/Generator: Unterschied zwischen den Versionen

Aus Stupidedia, der sinnfreien Enzyklopädie!
Wechseln zu: Navigation, Suche
(Erster Entwurf)
 
K (Änderte die Versiegelung von „Benutzer:Martinnitus/Bearbeitungsstatistik/Generator“ ([Bearbeiten=Nur Diktatoren] (unbeschränkt) [Verschieben=Nur Diktatoren] (unbeschränkt)))
 
(33 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<html><script type="text/javascript">
+
<html>
$.get('http://www.stupidedia.org/api.php?action=query&list=allusers&aulimit=max&auprop=editcount|groups&auactiveusers', function (userprops) {
+
<div id="status">Bitte warten...</div>
       $('#bodyContent > #mw-content-text').html(userprops);
+
<hr />
       var userprops2 = $('#bodyContent > #mw-content-text').text().split('<allusers>')[1].split('</allusers>')[0];
+
<div id="table"></div>
      //$('#bodyContent > #mw-content-text').html('<plaintext>' + userprops2 + '</plaintext>');
+
<script type="text/javascript">
      $('#bodyContent > #mw-content-text').html(userprops2);
+
//<nowiki>
      var len = $('#bodyContent > #mw-content-text u').length;
+
var stat = {
      var editcount = [];
+
 
      var recentedit = [];
+
  kasten: '<div style="font-weight: bold; text-align: center; padding: 10px; -webkit-border-radius: 5px; -moz-border-radius-: 5px; border-radius: 5px; background: #FFE4B5; background: -moz-linear-gradient(top, #FFE4B5 0%, #DBA23F 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFE4B5), color-stop(100%,#DBA23F)); background: -webkit-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -o-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -ms-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: linear-gradient(to bottom, #FFE4B5 0%,#DBA23F 100%);">',
       var username = [];
+
 
       var tabelle = '<table style="width: 100%;"><tr><th>Benutzername</th><th>Beiträge in den letzten 30 Tagen</th><th>Beiträge insgesamt</th>';
+
  text: '<table style="font-size: 0.8em; width: 100%;" class="wikitable sortable">\n<tr><th>Benutzername</th><th>Ränge</th><th>Beiträge insgesamt</th><th>Beiträge insgesamt (inkl. Gelöschte)</th><th>Beiträge in den letzten 48 Stunden</th><th>Beiträge in den letzten 7 Tagen</th><th>Beiträge in den letzten 28 Tagen</th><th>Beiträge in den letzten 365 Tagen</th><th>Artikel-Edits</th><th>Diskussions-Edits</th><th>Erster Beitrag</th><th>Letzter Beitrag</th><th>Aktive Tage</th><th>Ø-Edits pro aktivem Tag</th></tr>',
       for(var i=0; i<len; i++){
+
 
      editcount[i] = $('#bodyContent > #mw-content-text u:eq(' + i + ')').attr('editcount');
+
  init: function(){
       recentedit[i] = $('#bodyContent > #mw-content-text u:eq(' + i + ')').attr('recenteditcount');
+
       $( '#status' ).html( 'Ermittle alle User mit 1000 oder mehr Beiträgen...' );
       username[i] = $('#bodyContent > #mw-content-text u:eq(' + i + ')').attr('name');
+
       api.request( stat.req, stat.getusers, [] );
 +
  },
 +
 
 +
  date: function( zahl ){
 +
    var t = new Date();
 +
    t.setTime( t.getTime() - zahl * 24 * 3600 * 1000 );
 +
    return $.toJSON( t ).replace( /"/g , '' ).replace( /\.[0-9]*/g, '' );
 +
  },
 +
 
 +
  groupnames: function( groups ){
 +
    var gnames = [];
 +
    $.each( groups, function(){
 +
        $.inArray( global.groups.names[ this ], ['Alle','Benutzer','Automatisch bestätigte Benutzer'] ) === -1 ? gnames.push( '[{{SERVER}}' + mw.util.getUrl( 'Spezial:Benutzer' , { group: this } ) + ' <span title="Spezial:Benutzer/' + this + '">' + global.groups.names[ this ] + '</span>]' ) : '';
 +
    });
 +
    return gnames.length ? gnames.join(', ') : 'Arbeiter';
 +
  },
 +
 
 +
  req: {
 +
      action: 'query',
 +
      list: 'allusers',
 +
      auprop: 'editcount',
 +
      aulimit: 'max'
 +
  },
 +
 
 +
  getusers: function( data, oldusers ){
 +
    var users = $.merge( oldusers, api.makeArray( data ) );
 +
    if( data['query-continue'] ){
 +
        stat.req.aufrom = users[ users.length - 1 ].name;
 +
        api.request( stat.req, stat.getusers, users );
 +
    }else{
 +
        var usernames = [];
 +
        $.each( users, function( i, user ){
 +
          if( user.editcount >= 1000 )
 +
              usernames.push( user.name );
 +
        });
 +
        stat.getprops( usernames );
 +
    }
 +
  },
 +
 
 +
  getprops: function( unames ){
 +
       stat.usercount = unames.length;
 +
       $.each( unames, function( i, user ){
 +
        api.request({
 +
                action: 'query',
 +
                list: 'users',
 +
                ususers: user,
 +
                usprop: 'groups|editcount'
 +
        }, stat.groupsncount );
 +
       });
 +
  },
 +
 
 +
  groupsncount: function( data ){
 +
      var userdata = {
 +
        groups: stat.groupnames( api.makeArray( data )[0].groups ),
 +
        editcount: api.makeArray( data )[0].editcount,
 +
        name: api.makeArray( data )[0].name
 +
      };
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(2)
 +
      };
 +
       api.request( userdata.reqobj, stat.daycons, userdata );
 +
  },
 +
 
 +
  daycons: function( data, userdata ){
 +
      userdata.lastdays = userdata.lastdays ? userdata.lastdays + api.makeArray( data ).length : api.makeArray( data ).length;
 +
       if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.daycons, userdata );
 +
        return;
 
       }
 
       }
       for(var i=0; i<len; i++){
+
       userdata.reqobj = {
      tabelle += '<tr><th>' + username[i] + '</th><th>' + recentedit[i] + '</th><th>' + editcount[i] + '</th></tr>';
+
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(7)
 
       }
 
       }
       tabelle += '</table>';
+
       api.request( userdata.reqobj, stat.weekcons, userdata );
       document.write(tabelle);
+
  },
 +
 
 +
  weekcons: function( data, userdata ){
 +
      userdata.lastweek = userdata.lastweek ? userdata.lastweek + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.weekcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(28)
 +
      };
 +
      api.request( userdata.reqobj, stat.monthcons, userdata );
 +
  },
 +
 
 +
  monthcons: function( data, userdata ){
 +
      userdata.lastmonth = userdata.lastmonth ? userdata.lastmonth + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.monthcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(365)
 +
      };
 +
      api.request( userdata.reqobj, stat.yearcons, userdata );
 +
  },
 +
 
 +
  yearcons: function( data, userdata ){
 +
      userdata.lastyear = userdata.lastyear ? userdata.lastyear + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.yearcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucnamespace: '0|102|104|106'
 +
      };
 +
      api.request( userdata.reqobj, stat.articlecons, userdata );
 +
  },
 +
 
 +
  articlecons: function( data, userdata ){
 +
      userdata.articles = userdata.articles ? userdata.articles + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.articlecons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucnamespace: '1|3|5|7|9|11|13|15|101|103|105|107|109|275'
 +
      };
 +
      api.request( userdata.reqobj, stat.discons, userdata );
 +
  },
 +
 
 +
  discons: function( data, userdata ){
 +
      userdata.dis = userdata.dis ? userdata.dis + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.discons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucnamespace: '0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101|102|103|104|105|106|107|108|109|274|275'
 +
      };
 +
      userdata.dayarr = [];
 +
      userdata.days = 0;
 +
      api.request( userdata.reqobj, stat.alledits, userdata );
 +
  },
 +
 
 +
  alledits: function( data, userdata ){
 +
      userdata.all = userdata.all ? userdata.all + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      $.each( api.makeArray( data ), function( i, c ){
 +
        if( $.inArray( c.timestamp.split('T')[0], userdata.dayarr ) === -1 ){
 +
            userdata.days++;
 +
            userdata.dayarr.push( c.timestamp.split('T')[0] );
 +
        }
 +
      });
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.alledits, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: '1',
 +
                ucdir: 'newer',
 +
                ucprop: 'ids|timestamp'
 +
      };
 +
      api.request( userdata.reqobj, stat.firstedit, userdata );
 +
  },
 +
 
 +
  firstedit: function( data, userdata ){
 +
      userdata.firstcon = api.makeArray( data )[0].timestamp.split('T')[0].split('-').reverse().join('.');
 +
      userdata.firstconrevision = api.makeArray( data )[0].revid;
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: '1',
 +
                ucdir: 'older',
 +
                ucprop: 'ids|timestamp'
 +
      };
 +
      api.request( userdata.reqobj, stat.lastedit, userdata );
 +
  },
 +
 
 +
  lastedit: function( data, userdata ){
 +
      userdata.averageedit = ( Math.round( 100 * userdata.all / userdata.days )/100 ).toFixed(2);
 +
      userdata.lastcon = api.makeArray( data )[0].timestamp.split('T')[0].split('-').reverse().join('.');
 +
      userdata.lastconrevision = api.makeArray( data )[0].revid;
 +
      stat.text += '\n<tr><td>[[Benutzer:' + userdata.name + '|' + userdata.name + ']]</td><td>' + userdata.groups + '</td><td>' + userdata.all + '</td><td>' + userdata.editcount + '</td><td>' + userdata.lastdays + '</td><td>' + userdata.lastweek + '</td><td>' + userdata.lastmonth + '</td><td>' + userdata.lastyear + '</td><td>' + userdata.articles + '</td><td>' + userdata.dis + '</td><td>[{{SERVER}}/stupi?diff=' + userdata.firstconrevision + ' ' + userdata.firstcon + ']</td><td>[{{SERVER}}/stupi?diff=' + userdata.lastconrevision + ' ' + userdata.lastcon + ']</td><td>' + userdata.days + '</td><td>' + userdata.averageedit + '</td></tr>';
 +
      api.request({
 +
          action: 'parse',
 +
          text: stat.text + '\n</table>',
 +
          disablepp: true,
 +
          pst: true
 +
      },function( data ){
 +
          $( '#table' ).html( data.parse.text['*'] );
 +
          $( '#status' ).html( 'User ' + $( '#table table tr' ).length + ' von ' + stat.usercount + ' wird abgefragt...' );
 +
          if( $( '#table table tr' ).length === stat.usercount )
 +
            $( '#status' ).html( $( '<input />' ).attr({
 +
                            type: 'button',
 +
                            value: 'Bearbeitungsstatistik aktualisieren',
 +
                            onclick: 'stat.edit();'
 +
            }) );
 +
       });
 +
  },
 +
 
 +
  edit: function(){
 +
      api.request({
 +
          action: 'edit',
 +
          title: 'Benutzer:Martinnitus/Bearbeitungsstatistik',
 +
          bot: true,
 +
          summary: '[[Benutzer:Martinnitus/Bearbeitungsstatistik/Generator|Bearbeitungsstatistik aktualisiert]]',
 +
          text: stat.kasten + '\nStand: {{subst:#time: d.m.Y, H:i}}\n</div>\n' + stat.text + '\n</table>',
 +
          token: global.editToken
 +
      },function( data ){
 +
          if( data.error ){
 +
            alert( 'Fehler.\nCode: ' + data.error.code + ', Info: ' + data.error.info + '.' );
 +
          }else if( data.edit.result === 'Failure' ){
 +
            alert( 'Unbekannter Fehler.' );
 +
          }else{
 +
            window.location.href = mw.util.getUrl( 'Benutzer:Martinnitus/Bearbeitungsstatistik' );
 +
          }
 
       });
 
       });
</script></html>
+
  }
 +
 
 +
};
 +
 
 +
execute( 'stat.init' );
 +
//</nowiki>
 +
</script>
 +
</html>

Aktuelle Version vom 22. November 2015, 15:35 Uhr

Bitte warten...


Linktipps: Faditiva und 3DPresso