User:Nyakase/Scripts/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 //    Modified by Vukky to use Morebits and the MediaWiki API instead of cluttering the page with portlets //         Some code from Twinkle modules $(function {   //Check if the config is defined    if (typeof(statusChangerConfig) == 'undefined') {      statusChangerConfig = {}    }    if (typeof(statusChangerConfig.statusList) == 'undefined') {        statusChangerConfig.statusList = [ 'online', 'offline', 'sleeping' ];    }    if (typeof(statusChangerConfig.statusPage) == 'undefined') {        statusChangerConfig.statusPage = 'User:' + mw.config.get('wgUserName') + '/Status';    }    mw.util.addPortletLink( "p-personal", //target tab - personal links "#", //link URL "Status", //link text "pt-status", //id of new button "Change your status", //hover text "", //???       document.getElementById("pt-logout")); //add before logout button    $("#pt-status").click(function { var Window = new Morebits.simpleWindow(600, 500); Window.setTitle('Change your status'); Window.setScriptName('StatusChanger'); Window.display; var form = new Morebits.quickForm(publish); var categories = form.append({           type: 'select',            name: 'status',            label: 'Select your status:'        }); for (var i = 0; i < statusChangerConfig.statusList.length; ++i) { categories.append({               type: 'option',                label: statusChangerConfig.statusList[i],                value: statusChangerConfig.statusList[i]            }); }       form.append({ type: 'submit' }); var result = form.render; Window.setContent(result); Window.display;

function publish(e){ var form = e.target; var status = form.status.value; Morebits.simpleWindow.setButtonsEnabled(false); Morebits.status.init(form); Morebits.wiki.actionCompleted.notice = 'Status set!'; var statusPage = new Morebits.wiki.page(statusChangerConfig.statusPage, 'Processing'); statusPage.setFollowRedirect(true); statusPage.load(function {               statusPage.getStatusElement.status('Setting status');                if(statusPage.getPageText == status) {                	statusPage.getStatusElement.error('Your status is already ' + status + '.');                	return;                }                statusPage.setEditSummary(mw.config.get('wgUserName') + ' set their status to "' + status + '".');                statusPage.setPageText(status);                statusPage.save;            }); }   }); });

//