Year of the Dragon: Through April 23rd, claim the adventure pack Slice of Life for free! Speak to Xatheral in the Hall of Heroes.
Game mechanics • Newbie guide • In development • DDO Store • Social Media
Challenges • Classes • Collectables • Crafting • Enhancements • Epic Destinies • Favor • Feats
Glossary • Items • Maps • Monsters • Places • Quests • Races • Reincarnation • Skills • Spells
Please create an account or log in to build a reputation and unlock more editing privileges, and then visit DDO wiki's IRC Chat/Discord if you need any help!
MediaWiki:Gadget-SpecialPages.js/Autopromote.js
Jump to navigation
Jump to search
Note: After saving, you may have to bypass your browser's cache to see the changes, you can click here or try one of the methods below..
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl+F5 or Ctrl+r (⌘ Command+r on a Mac)
- Google Chrome: Press Ctrl+⇧ Shift+R (⌘ Command+⇧ Shift+R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl+F5
- Konqueror: Click Reload or press F5
- Opera: Clear the cache in Tools ‣ Preferences
//<nowiki>
( function ( $, mw ) {
// Get a complete list of users, edit counts, account ages, and current groups.
var promotionCandidates = {};
var ecVIP = 100;// [[DDO:Ddowikivip]]: "The general consensus seems to be that any user with a triple digit edit count ([[:C:100 edit users]]) is qualified for this group."
var ecSU = 250;// [[DDO:Superuser]]: "Users that are up to at least [[:C:250 edit users]] should be in this group."
var aufrom = '';// start at the beginning
while( aufrom !== '#' ) {
$.ajax( {//* REALLY DON'T LIKE THIS!!! *//*
url: 'https://ddowiki.com/api.php?action=query&format=json&aulimit=max&list=allusers&auexcludegroup=sysop|bureaucrat|steward&auprop=groups|blockinfo|editcount|registration&auwitheditsonly=1&aufrom=' + aufrom,
dataType: 'json',
async: false,//* REALLY DON'T LIKE THIS!!! IT WILL FAIL IN THE FUTURE!!! *//*
success: function( successData ) {
var resultObject = successData.query.allusers;
$.each( resultObject, function( ) {
var isBlocked = ( $( this )[ 0 ].blockedby !== undefined ? true : false );
var editCount = $( this )[ 0 ].editcount;// Get the edit count from the API (doesn't include deleted edits)
var isSU = ( $.inArray( 'superuser', $( this )[ 0 ].groups ) !== -1 ? true : false );// Is the user a superuser
var isVIP = ( $.inArray( 'ddowikivip', $( this )[ 0 ].groups ) !== -1 ? true : false );// Is the user a ddowikivip
// If the user is not blocked, and should be a VIP or SU but isn't, then...
if ( !isBlocked && ( ( !isVIP && editCount >= ecVIP ) || ( !isSU && editCount >= ecSU ) ) ) {
promotionCandidates[ $( this )[ 0 ].name ] = {};// Create an object with the user name
promotionCandidates[ $( this )[ 0 ].name ].editcount = editCount;// Put edit count in user's object
var currDate = new Date();// Define a new date constructor
var currDateInMonths = currDate.getFullYear() * 12 + currDate.getMonth();// Calculate the current number of months since Jan 2000
var regSince = ( $( this )[ 0 ].registration === '' ? new Date( 1999, 11, 30 ) : new Date( $( this )[ 0 ].registration ) );// Date object for registration date
var age = ( currDateInMonths - ( ( regSince.getFullYear() * 12 ) + regSince.getMonth() ) );// Calculate age in months
promotionCandidates[ $( this )[ 0 ].name ].age = age;// Put the age in the user's object
promotionCandidates[ $( this )[ 0 ].name ].isSU = isSU;// Toggle the superuser object element
promotionCandidates[ $( this )[ 0 ].name ].isVIP = isVIP;// Toggle the ddowikivip object element
}
} );
if ( successData[ 'query-continue' ] !== undefined ) {
aufrom = successData[ 'query-continue' ].allusers.aufrom;// More users to process
} else {
aufrom = '#';// Last page - [[User:#]] can not exits and returns "Bad title" if you try. Seems like a fitting way to end the while loop
}
},
fail: function( failureData ) {
alert( 'Sorry, failed to retrieve information from API.\nPlease check the console for more details if available.' );
console.error( '%O', failureData );
}
} );
}
$( 'a[title="Special:UserRights"]' ).parent( 'li' ).after( '<li><a href="./Special:BlankPage?withJS=MediaWiki:Autopromote.js" title="Special:Semi-auto-promote">Semi-auto-promote</a> (' + Object.keys(promotionCandidates).length.toLocaleString() + ')</li>' );
} )( mediaWiki, jQuery );
//</nowiki>[[Category:Gadgets]]