User:Technical 13/MRollback.js

/* global mw:true, Flash:true */

/**

* Mass Rollback Script

*

* Creates a form to mass rollback edits

*

* @author Kangaroopower

* @credits Ale_jrb (UI)

*

* From: User:Kangaroopower/Scripts

*

* To Do :

* - From what time

*

*/

$(function () {

importScript('User:Kangaroopower/Flash.js');

window.MRollback = {

version: "2.22",

active: false,

GUI: {}

};

var MRollback = window.MRollback;

MRollback.init = function () {

if ( mw.config.get('wgCanonicalSpecialPageName') === "Contributions" && $.inArray( mw.config.get('wgUserGroups'), ["reviewer", "rollbacker", "sysop"]) ) {

mw.util.addPortletLink('p-cactions', 'javascript:MRollback.GUI.initiate();', "Mrollback", "ca-mrollback", "Mass Rollback");

}

};

/* GUI Module */

MRollback.GUI.initiate = function () {

if (MRollback.active !== true) {

MRollback.active = true;

var popupHTML = '

';

$('body').append(popupHTML);

$('#mr-ui').show();

$('#mr-ui').draggable();

$("#mr-all").click(function () {

MRollback.rollback(true);

});

$("#mr-some").click(MRollback.rollback);

}

};

MRollback.GUI.close = function () {

if (MRollback.active !== false) {

MRollback.active = false;

$('#mr-ui').hide();

}

};

/* API functions */

MRollback.rollback = function (all) {

var mrlimit = $('#mr-limit').val(), rbcontribs = 0;

if (all === true) {

mrlimit = 500;

} else {

if (mrlimit !== '' && /^\d+$/.test(mrlimit)) mrlimit = parseInt(mrlimit, 10);

else return;

}

var ucuser = encodeURIComponent($('#contentSub a:first').html());

Flash('getUserContribs').load({number: mrlimit, user: ucuser}).wait(function (data) {

for(var i in data.query.usercontribs) {

if(data.query.usercontribs[i].top == '') {

var rbsummary = $('#mr-sum').val(),

latestcontribs = data.query.usercontribs[i].title;

console.log("Latest Contribs:" + latestcontribs);

Flash('rollback').load({targ: latestcontribs, user: ucuser, summary: rbsummary}).wait(function () {

rbcontribs++

console.log("rbcontribs:" + rbcontribs);

}).run();

}

}

}).run();

};

$(document).ready(MRollback.init);

});