m (i give up :( this one is probably broken too) |
mNo edit summary |
||
(41 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
/***********************************************************************************/ |
/***********************************************************************************/ |
||
− | /* |
+ | /* */ |
− | /* |
+ | /* MEDIAWIKI EDITCOUNTER */ |
+ | /* */ |
||
⚫ | |||
+ | /* */ |
||
+ | /* Original credit: */ |
||
+ | /* author: Najzere @ strategywiki.org */ |
||
/* source: http://strategywiki.org/wiki/User:Najzere/edit_counter.js */ |
/* source: http://strategywiki.org/wiki/User:Najzere/edit_counter.js */ |
||
/* documentation: http://strategywiki.org/wiki/User_talk:Najzere/edit_counter.js */ |
/* documentation: http://strategywiki.org/wiki/User_talk:Najzere/edit_counter.js */ |
||
/* contact: http://strategywiki.org/wiki/User_talk:Najzere */ |
/* contact: http://strategywiki.org/wiki/User_talk:Najzere */ |
||
+ | /* Minecraft Wiki credit: */ |
||
⚫ | |||
− | /* |
+ | /* author: Matt (Majr) @ minecraft.gamepedia.com */ |
− | /* |
+ | /* source: http://minecraft.gamepedia.com/User:Majr/editcounter.js */ |
− | /* |
+ | /* Current version credit: */ |
− | /* |
+ | /* author: Kanegasi @ minecraft.gamepedia.com/en.wikipedia.org */ |
+ | /* source: http://en.wikipedia.org/wiki/User:Kanegasi/editcounter.js */ |
||
− | /* THIS VERSION HERE IS SPECIFIC TO ME. DO NOT USE UNLESS YOU KNOW WHAT TO CHANGE! */ |
||
+ | /* documentation: http://en.wikipedia.org/wiki/User:Kanegasi/editcounter */ |
||
+ | /* contacts: http://minecraft.gamepedia.com/User_talk:Kanegasi -OR- */ |
||
+ | /* http://en.wikipedia.org/wiki/User_talk:Kanegasi */ |
||
/***********************************************************************************/ |
/***********************************************************************************/ |
||
− | |||
− | $(document).ready(function() { |
||
− | |||
− | // Add a new link after "User contributions" in the toolbox |
||
− | if ($('#t-contributions').length==0) { |
||
− | alert('Expected element not found. Please see http://strategywiki.org/wiki/User_talk:Najzere to have your wiki added.'); |
||
− | return; |
||
− | }; |
||
− | var $editCountLink = $('<a>Edit counter</a>').attr( { id: 't-editcounter', href: '#', title: 'Run edit counter script' } ); |
||
− | $('#t-contributions').after($('<li></li>').html($editCountLink)); |
||
− | |||
− | $('#t-editcounter').click( function() { |
||
− | |||
− | // Change edit counter link to let the user know it's thinking |
||
− | $(this).html('Calculating...'); |
||
− | |||
− | // Set up variables |
||
− | var editSummary = 'updated'; |
||
− | var tableTop = '[http://strategywiki.org/wiki/User_talk:Najzere/edit_counter.js edit counter.js] [http://strategywiki.org/wiki/User_talk:Najzere/edit_counter.js#Bugs Why don\'t the numbers match the total?]'; |
||
− | var edits = []; |
||
− | var namespaces = []; |
||
− | var movelog = []; |
||
− | var protectlog = []; |
||
− | var next; |
||
− | var edittoken; |
||
− | var succeeded = false; |
||
− | var brace = '{'; |
||
− | var table = '<div style="text-align: center; margin-bottom: 1em"><span style="font-weight: bold">Edit Count</span>\n{| class="wikitable '+tableClass+'" style="text-align: center; margin: 0 auto"\n|-\n! '; |
||
− | |||
− | // Initialize namespace, move log and patrol log arrays |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&meta=siteinfo&siprop=namespaces&format=json', |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(siResponse) { |
||
− | for (var ns in siResponse.query.namespaces) { |
||
− | if (siResponse.query.namespaces[ns].id > -1) { |
||
− | if(siResponse.query.namespaces[ns].id != namespaces.length) |
||
− | break; |
||
− | if (siResponse.query.namespaces[ns].id == 0) { |
||
− | namespaces[siResponse.query.namespaces[ns].id] = 'Main'; |
||
− | } else if (siResponse.query.namespaces[ns].id == 4) { |
||
− | namespaces[siResponse.query.namespaces[ns].id] = 'Minecraft Wiki'; |
||
− | } else if (siResponse.query.namespaces[ns].id == 5) { |
||
− | namespaces[siResponse.query.namespaces[ns].id] = 'Minecraft Wiki talk'; |
||
− | } else { |
||
− | namespaces[siResponse.query.namespaces[ns].id] = siResponse.query.namespaces[ns].canonical; |
||
− | }; |
||
− | movelog[siResponse.query.namespaces[ns].id] = 0; |
||
− | protectlog[siResponse.query.namespaces[ns].id] = 0; |
||
− | }; |
||
− | }; |
||
− | } |
||
− | }); |
||
− | |||
− | // Fill move log array |
||
− | next = ''; |
||
− | while (next != 'stop') { |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&list=logevents&letype=move&leuser=kanegasi&lelimit=max&leprop=title&format=json'+next, |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(moveResponse) { |
||
− | for (var event in moveResponse.query.logevents) { |
||
− | movelog[moveResponse.query.logevents[event].ns] += 1; |
||
− | }; |
||
− | if (moveResponse["query-continue"]) { |
||
− | next = '&lestart='+moveResponse["query-continue"].logevents.lestart; |
||
− | } else { |
||
− | next = 'stop'; |
||
− | }; |
||
− | } |
||
− | }); |
||
− | }; |
||
− | |||
− | // Fill protect log array |
||
− | next = ''; |
||
− | while (next != 'stop') { |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&list=logevents&letype=protect&leuser=kanegasi&lelimit=max&leprop=title&format=json'+next, |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(protectResponse) { |
||
− | for (var event in protectResponse.query.logevents) { |
||
− | protectlog[protectResponse.query.logevents[event].ns] += 1; |
||
− | }; |
||
− | if (protectResponse["query-continue"]) { |
||
− | next = '&lestart='+protectResponse["query-continue"].logevents.lestart; |
||
− | } else { |
||
− | next = 'stop'; |
||
− | }; |
||
− | } |
||
− | }); |
||
− | }; |
||
− | |||
− | // Loop through namespaces counting edits and subtracting page moves and patrols |
||
− | for (var i = 0; i < namespaces.length; i++) { |
||
− | next = ''; |
||
− | while (next != 'stop') { |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&list=usercontribs&ucuser=kanegasi&uclimit=max&ucdir=newer&format=json&ucnamespace='+i+next, |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(ucResponse) { |
||
− | edits[i] = ucResponse.query.usercontribs.length - movelog[i] - protectlog[i]; |
||
− | if (ucResponse["query-continue"]) { |
||
− | next = '&ucstart='+ucResponse["query-continue"].usercontribs.ucstart; |
||
− | } else { |
||
− | next = 'stop'; |
||
− | }; |
||
− | } |
||
− | }); |
||
− | }; |
||
− | }; |
||
− | |||
− | for (var i = 0; i < namespaces.length; i++) { |
||
− | if (edits[i] > 0) { |
||
− | table += namespaces[i]+' !! '; |
||
− | }; |
||
− | } |
||
− | table += 'Total\n|-\n| '; |
||
− | |||
− | for (var i = 0; i < namespaces.length; i++) { |
||
− | if (edits[i] > 0) { |
||
− | table += brace+brace+'subst:formatnum:'+edits[i]+'}} || '; |
||
− | }; |
||
− | } |
||
− | |||
− | // Get full edit count, as tracked by MW, add it to table |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&meta=userinfo&uiprop=editcount&format=json', |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(uiResponse) { |
||
− | table += brace+brace+'subst:formatnum:'+uiResponse.query.userinfo.editcount+'}}\n|}'; |
||
− | } |
||
− | }); |
||
− | |||
− | table += '<span style="font-size: x-small">Last updated: '+brace+brace+'subst:#time:F j, Y}}. Generated with '+tableTop+'</span>\n</div>'; |
||
− | |||
− | // Get edit token |
||
− | $.ajax({ |
||
− | url: '/api.php?action=query&prop=info|revisions&intoken=edit&format=json&titles=User:Kanegasi/edit_counter', |
||
− | dataType: 'json', |
||
− | async: false, |
||
− | success: function(propResponse) { |
||
− | for (var page in propResponse.query.pages) { |
||
− | edittoken = propResponse.query.pages[page].edittoken.replace(/\+\\$/g,'%2B%5C'); |
||
− | }; |
||
− | } |
||
− | }); |
||
− | |||
− | // Edit the target page with the table |
||
− | $.ajax({ |
||
− | url: '/api.php?action=edit&title=User:Kanegasi/edit_counter&summary='+editSummary+'&minor=1&recreate=1&bot=1&text='+escape(table)+'&token='+edittoken, |
||
− | type: 'POST', |
||
− | async: false, |
||
− | success: function() { succeeded = true; } |
||
− | }); |
||
− | |||
− | // change edit count link to reflect the status of the page save |
||
− | if (succeeded) { |
||
− | $(this).html('Done!'); |
||
− | } else { |
||
− | $(this).html('Error!'); |
||
− | }; |
||
− | |||
− | }); |
||
− | }); |
Latest revision as of 01:42, 28 October 2013
/***********************************************************************************/
/* */
/* MEDIAWIKI EDITCOUNTER */
/* */
/* license: CC-BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/ */
/* */
/* Original credit: */
/* author: Najzere @ strategywiki.org */
/* source: http://strategywiki.org/wiki/User:Najzere/edit_counter.js */
/* documentation: http://strategywiki.org/wiki/User_talk:Najzere/edit_counter.js */
/* contact: http://strategywiki.org/wiki/User_talk:Najzere */
/* Minecraft Wiki credit: */
/* author: Matt (Majr) @ minecraft.gamepedia.com */
/* source: http://minecraft.gamepedia.com/User:Majr/editcounter.js */
/* Current version credit: */
/* author: Kanegasi @ minecraft.gamepedia.com/en.wikipedia.org */
/* source: http://en.wikipedia.org/wiki/User:Kanegasi/editcounter.js */
/* documentation: http://en.wikipedia.org/wiki/User:Kanegasi/editcounter */
/* contacts: http://minecraft.gamepedia.com/User_talk:Kanegasi -OR- */
/* http://en.wikipedia.org/wiki/User_talk:Kanegasi */
/***********************************************************************************/