User:Hulkbot/common.js

// Localized en version // Create portlet link var portletLinkOnline = mw.util.addPortletLink(   'p-personal',    '#',    'Find Admins',    't-onlineadmin',    'Seek help from admins.',    '',    '#pt-userpage' ); var rcstart, rcend, time; var users = []; var admins = [], bureaucrats = [], stewards = []; var api = new mw.Api;

// Bind click handler $(portletLinkOnline).click(function(e) {       e.preventDefault;        users = [];        var usersExt = [];        admins = [];        // Recent edits within 30 minutes        time = new Date;        rcstart = time.toISOString;        time.setMinutes(time.getMinutes - 30);        rcend = time.toISOString;        //API:RecentChanges        api.get({ format: 'json', action: 'query', list: 'recentchanges', rcprop: 'user', rcstart: rcstart, rcend: rcend, rcshow: '!bot|!anon', rclimit: 500 }).done(function(data) { $.each(data.query.recentchanges, function(i, item) {               users[i] = item.user;            }); api.get({               format: 'json',                action: 'query',                list: 'logevents',                leprop: 'user',                lestart: rcstart,                leend: rcend,                lelimit: 500            }).done(function(data) {                $.each(data.query.logevents, function(i, item) { usersExt[i] = item.user; });

Array.prototype.push.apply(users, usersExt);

// Removing Duplicate Usernames users = $.unique(users.sort);

var promises = []; var mark = function(data) { $.each(data.query.users, function(i, user) {                       if ($.inArray('bot', user.groups) === -1) {                            if ($.inArray('sysop', user.groups) > -1) {                                admins[i] = user.name;                            }                        }                    }); };               for (var i=0; i<(users.length+50)/50; i++) { promises.push(api.get({ format: 'json', action: 'query', list: 'users', ususers: users.slice(i*50, (i+1)*50).join('|'), usprop: 'groups' }).done(mark)); }               $.when.apply($, promises).done(function  {                    var filter = function(n) {                        return n;                    };                    admins = admins.filter(filter);                    var userlink = function(user) {                        var user2 = user.replace(/&/g, '&amp;').replace(//g, '&lt;');                        return ' ' + user2 + ' (Talk) 　';                    };                    if (admins.length > 0) {                        var adminsstring = [' Online Admin(s) '];

if (admins.length > 0) { adminsstring.push('There are currently ' + admins.length + ' administrator(s) online:'); $.each(admins, function(i, e) {                               adminsstring.push(userlink(e));                            }); adminsstring.push(' '); }                       mw.notify($(adminsstring.join(''))); } else { mw.notify('Sorry! There are currently no administrators online'); }               }).fail(function  { mw.notify('Error 404'); });           });        });    }); // Create portlet link var portletLinkOnline = mw.util.addPortletLink(   'p-personal',    '#',    'Bureaucrats',    't-onlinebureaucrat',    'Seek help from bureaucrats.',    '',    '#pt-userpage' ); var rcstart, rcend, time; var users = []; var admins = [], bureaucrats = [], stewards = []; var api = new mw.Api;

// Bind click handler $(portletLinkOnline).click(function(e) {       e.preventDefault;

users = []; var usersExt = []; admins = []; bureaucrats = []; stewards = [];

//Recent edit within 30 minutes time = new Date; rcstart = time.toISOString; time.setMinutes(time.getMinutes - 30); rcend = time.toISOString;

//API:RecentChanges api.get({           format: 'json',            action: 'query',            list: 'recentchanges',            rcprop: 'user',            rcstart: rcstart,            rcend: rcend,            rcshow: '!bot|!anon',            rclimit: 500        }).done(function(data) {            $.each(data.query.recentchanges, function(i, item) { users[i] = item.user; });           api.get({ format: 'json', action: 'query', list: 'logevents', leprop: 'user', lestart: rcstart, leend: rcend, lelimit: 500 }).done(function(data) { $.each(data.query.logevents, function(i, item) {                   usersExt[i] = item.user;                }); Array.prototype.push.apply(users, usersExt); users = $.unique(users.sort); var promises = []; var mark = function(data) { $.each(data.query.users, function(i, user) {                       if ($.inArray('bot', user.groups) === -1) {                            if ($.inArray('bureaucrat', user.groups) > -1) {                                bureaucrats[i] = user.name;                            }                        }                    }); };               for (var i=0; i<(users.length+50)/50; i++) { promises.push(api.get({ format: 'json', action: 'query', list: 'users', ususers: users.slice(i*50, (i+1)*50).join('|'), usprop: 'groups' }).done(mark)); }               $.when.apply($, promises).done(function  {                    var filter = function(n) {                        return n;                    };                    admins = admins.filter(filter);                    bureaucrats = bureaucrats.filter(filter);                    stewards = stewards.filter(filter);                    var userlink = function(user) {                        var user2 = user.replace(/&/g, '&amp;').replace(//g, '&lt;');                        return ' ' + user2 + ' (Talk) 　';                    };                    if (bureaucrats.length > 0) {                        var adminsstring = [' Bureaucrat(s) Online: '];                        if (bureaucrats.length > 0) { adminsstring.push('There are currently ' + bureaucrats.length + ' bureaucrat(s) online:'); $.each(bureaucrats, function(i, e) {                               adminsstring.push(userlink(e));                            }); adminsstring.push(' '); }                       mw.notify($(adminsstring.join(''))); } else { mw.notify('Sorry! There are no bureaucrats online'); }               }).fail(function  { mw.notify('Error 404'); });           });        });    }); // Create portlet link var portletLinkOnline = mw.util.addPortletLink(   'p-personal',    '#',    'Stewards',    't-onlinesteward',    'Seek help from stewards.',    '',    '#pt-userpage' ); var rcstart, rcend, time; var users = []; var admins = [], bureaucrats = [], stewards = []; var api = new mw.Api;

// Bind click handler $(portletLinkOnline).click(function(e) {       e.preventDefault;

users = []; var usersExt = []; admins = []; bureaucrats = []; stewards = [];

//Recent edit within 30 minutes time = new Date; rcstart = time.toISOString; time.setMinutes(time.getMinutes - 30); rcend = time.toISOString;

//API:RecentChanges api.get({           format: 'json',            action: 'query',            list: 'recentchanges',            rcprop: 'user',            rcstart: rcstart,            rcend: rcend,            rcshow: '!bot|!anon',            rclimit: 500        }).done(function(data) {            $.each(data.query.recentchanges, function(i, item) { users[i] = item.user; });           api.get({ format: 'json', action: 'query', list: 'logevents', leprop: 'user', lestart: rcstart, leend: rcend, lelimit: 500 }).done(function(data) { $.each(data.query.logevents, function(i, item) {                   usersExt[i] = item.user;                }); Array.prototype.push.apply(users, usersExt); users = $.unique(users.sort); var promises = []; var mark = function(data) { $.each(data.query.users, function(i, user) {                       if ($.inArray('bot', user.groups) === -1) {                            if ($.inArray('steward', user.groups) > -1) {                                stewards[i] = user.name;                            }                        }                    }); };               for (var i=0; i<(users.length+50)/50; i++) { promises.push(api.get({ format: 'json', action: 'query', list: 'users', ususers: users.slice(i*50, (i+1)*50).join('|'), usprop: 'groups' }).done(mark)); }               $.when.apply($, promises).done(function  {                    var filter = function(n) {                        return n;                    };                    admins = admins.filter(filter);                    bureaucrats = bureaucrats.filter(filter);                    stewards = stewards.filter(filter);                    var userlink = function(user) {                        var user2 = user.replace(/&/g, '&amp;').replace(//g, '&lt;');                        return ' ' + user2 + '</a> <small style="opacity:.75;">(<a href="/wiki/User talk:' + user2 + '" target="_blank">Talk</a>) 　';                    };                    if (stewards.length > 0) {                        var adminsstring = [' Steward(s) Online: '];                        if (stewards.length > 0) {                            adminsstring.push('<p style="word-break:break-all;">There are currently ' + steward(s).length + ' steward(s) online:'); $.each(bureaucrats, function(i, e) {                               adminsstring.push(userlink(e));                            }); adminsstring.push(' '); }                       mw.notify($(adminsstring.join(''))); } else { mw.notify('Sorry! There are no stewards online'); }               }).fail(function  { mw.notify('Error 404'); });           });        });    });