Jump to content

MediaWiki:Gadget-MulembiWaMwezi.xx

Kufuma Wikipedia

(function () { 'use strict';

var DAYS = 30; var API = new mw.Api();

function getTimestamp(daysAgo) { var d = new Date(); d.setUTCDate(d.getUTCDate() - daysAgo); return d.toISOString(); }

function getRecentChanges(start, end, cont) { var params = { action: 'query', list: 'recentchanges', rcstart: start, rcend: end, rcdir: 'older', rcnamespace: 0, rcprop: 'user|timestamp|title|flags', rcshow: '!bot', rctype: 'edit|new', rclimit: '500', format: 'json' };

if (cont) { Object.assign(params, cont); }

return API.get(params); }

function collectChanges() { var start = new Date().toISOString(); var end = getTimestamp(DAYS); var counts = {}; var lastTimestamp = null;

function next(cont) { return getRecentChanges(start, end, cont).then(function (data) { var changes = (data.query && data.query.recentchanges) || [];

changes.forEach(function (change) { if (!change.user) { return; }

counts[change.user] = (counts[change.user] || 0) + 1; lastTimestamp = change.timestamp; });

if (data.continue) { return next(data.continue); }

return counts; }); }

return next(null); }

function getWinner(counts) { var users = Object.keys(counts);

if (!users.length) { return null; }

users.sort(function (a, b) { return counts[b] - counts[a]; });

return { user: users[0], edits: counts[users[0]] }; }

function render() { $('.mulembi-wa-mwezi-result').each(function () { var box = $(this);

box.text('Ŵeruzgani...');

collectChanges().then(function (counts) { var winner = getWinner(counts);

if (!winner) { box.text('Palije vyakuŵerengeka.'); return; }

var userPage = mw.util.getUrl('User:' + winner.user); var contributions = mw.util.getUrl('Special:Contributions/' + winner.user);

box.html(

'

' +

'<a href="' + userPage + '">' + mw.util.escape(winner.user) + '</a>' +

'

' + '

' +

'' + winner.edits + ' vyakusinthika mu mazuŵa ' + DAYS + ' ghaumaliro · ' + '<a href="' + contributions + '">Wonani vyakusinthika</a>' +

'

'

); }).catch(function () { box.text('Chinthu chachitika pakupanga ziŵerengero.'); }); }); }

$(render); })();