User:Enterprisey/StatusChanger.js

//////////STATUS CHANGER // Creator: Misza13 // Credits: Voyagerfan5761 for some minor improvements //    Modified by Xenocidic to simply use /Status as a one word indicator, //    Modified by Kraftlos to include Sleep status //    Modified by APerson for compatibility with // compatible with for display $.when(   $.ready,    mw.loader.using( [ "mediawiki.api" ] ) ).then( function  {    // create variable to store configuration    if (typeof(statusChangerConfig) == 'undefined') {        statusChangerConfig = {}    }

// check for configuration options, and set them to default values if   // they're undefined

if (typeof(statusChangerConfig.statusList) == 'undefined') { statusChangerConfig.statusList = [ 'online', 'offline', 'sleeping' ]; }

if (typeof(statusChangerConfig.statusPage) == 'undefined') { statusChangerConfig.statusPage = 'User:' + mw.config.get('wgUserName') + '/Status'; }

function makeListener(newStatus) { return function ( evt ) { evt.preventDefault; var api = new mw.Api({               ajax: { headers: { 'Api-User-Agent': 'w:User:Enterprisey/StatusChanger.js' } }            });

api.postWithEditToken({               action: 'edit',                title: statusChangerConfig.statusPage,                text: newStatus,                summary: mw.config.get('wgUserName') + " is now " + ((newStatus === "sleep") ? "sleeping" : newStatus) + "."           }).then(function{                api.post( { action: "purge", titles: 'User:' + mw.config.get('wgUserName') } );                mw.notify('Done setting status!');            }); return false; };   }

//Add the links for (var i=0; i<statusChangerConfig.statusList.length; i++) { var stat = statusChangerConfig.statusList[i]; var message = (stat === "sleeping") ? link = "asleep" : link = stat; mw.util.addPortletLink(           "p-personal", //target tab - personal links            "#",            stat, //link text            "pt-status-" + stat, //id of new button            "I'm " + message + "!", //hover text            "", // access key - no need to define one            document.getElementById("pt-logout")) //add before logout button .addEventListener('click',makeListener(stat)); } }); //