Year of the Dragon: Through May 28th, claim free Expansion Pack (excluding Vecna Unleashed) or a Greater Elixir of Discovery! Speak to Xatheral in the Hall of Heroes. edit
Thank you for your patience while we continue to upgrade DDOwiki to the latest MediaWiki LTS version. If you find any errors on the site, please visit the Discord chat server and let us know.
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 remove ads, 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
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]]