Benutzer:Martinnitus/Bearbeitungsstatistik/Generator: Unterschied zwischen den Versionen
Aus Stupidedia, der sinnfreien Enzyklopädie!
Sky (Diskussion | Beiträge) K (Änderte die Versiegelung von „Benutzer:Martinnitus/Bearbeitungsstatistik/Generator“ ([Bearbeiten=Nur Diktatoren] (unbeschränkt) [Verschieben=Nur Diktatoren] (unbeschränkt))) |
|||
(30 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
<html> | <html> | ||
− | <div id=" | + | <div id="status">Bitte warten...</div> |
− | + | <hr /> | |
− | < | + | <div id="table"></div> |
− | < | ||
− | < | ||
− | |||
− | |||
<script type="text/javascript"> | <script type="text/javascript"> | ||
− | + | //<nowiki> | |
− | + | var stat = { | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | var | ||
− | + | 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%);">', | |
− | + | ||
− | + | 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>', | |
− | |||
− | |||
− | |||
− | |||
− | function | + | init: function(){ |
− | + | $( '#status' ).html( 'Ermittle alle User mit 1000 oder mehr Beiträgen...' ); | |
− | + | 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, '' ); | ||
+ | }, | ||
− | function | + | 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 ){ | |
− | if( | + | 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 ); | ||
+ | } | ||
+ | }, | ||
− | function | + | getprops: function( unames ){ |
− | + | stat.usercount = unames.length; | |
− | + | $.each( unames, function( i, user ){ | |
− | + | api.request({ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
action: 'query', | action: 'query', | ||
list: 'users', | list: 'users', | ||
− | ususers: | + | ususers: user, |
usprop: 'groups|editcount' | 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; | ||
+ | } | ||
+ | userdata.reqobj = { | ||
+ | action: 'query', | ||
+ | list: 'usercontribs', | ||
+ | ucuser: userdata.name, | ||
+ | uclimit: 'max', | ||
+ | ucend: stat.date(7) | ||
+ | } | ||
+ | api.request( userdata.reqobj, stat.weekcons, userdata ); | ||
+ | }, | ||
+ | |||
+ | 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', | action: 'query', | ||
− | list: ' | + | 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', | action: 'query', | ||
list: 'usercontribs', | list: 'usercontribs', | ||
− | ucuser: | + | ucuser: userdata.name, |
uclimit: 'max', | 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', | action: 'query', | ||
list: 'usercontribs', | list: 'usercontribs', | ||
− | ucuser: | + | ucuser: userdata.name, |
uclimit: 'max', | 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', | action: 'query', | ||
list: 'usercontribs', | list: 'usercontribs', | ||
− | ucuser: | + | ucuser: userdata.name, |
uclimit: 'max', | 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 = []; | |
− | api.request({ | + | 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', | action: 'query', | ||
list: 'usercontribs', | list: 'usercontribs', | ||
− | ucuser: | + | ucuser: userdata.name, |
uclimit: '1', | uclimit: '1', | ||
− | ucdir: 'newer' | + | 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', | action: 'query', | ||
list: 'usercontribs', | list: 'usercontribs', | ||
− | ucuser: | + | ucuser: userdata.name, |
− | uclimit: '1', | + | uclimit: '1', |
− | ucdir: 'older' | + | 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' ); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | }; | ||
+ | |||
+ | execute( 'stat.init' ); | ||
+ | //</nowiki> | ||
</script> | </script> | ||
</html> | </html> |
Aktuelle Version vom 22. November 2015, 15:35 Uhr
Bitte warten...