User:Mr.Z-man/autopatrol.js

function autopatrolclick() {

debug = false;

if (window.location.href.indexOf('debug=1') != -1) {

debug = true;

}

var username = $('#mw-np-username').val();

var bits = $('link[rel="alternate"]')[1].href.split('&');

var ns = 0;

var lim = 50;

var start = false;

var hidepat = false;

var hidered = true;

for (var i=0; i

b = bits[i].split('=');

if (b.length == 1) {

continue;

}

if (b[0] == 'limit') {

lim = parseInt(b[1]);

}

if (b[0] == 'namespace') {

ns = b[1];

}

if (b[0] == 'hidepatrolled' && b[1] == '1') {

hidepat = true;

}

if (b[0] == 'hideredirs' && b[1] != '1') {

hidered = false;

}

if (b[0] == 'offset') {

start = b[1].replace(/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/, "$1-$2-$3T$4:$5:$6Z")

}

}

dir = 'older';

if (document.URL.indexOf('dir=prev') != -1) {

dir = 'newer';

}

if (lim>500 && $.inArray('sysop', mw.config.get('wgUserGroups')) == -1) {

lim = 500;

}

var params = {'action':'query',

'list':'recentchanges',

'rcuser':username,

'rctype':'new',

'rcnamespace':ns,

'rclimit':lim,

'rctoken':'patrol',

'rcdir':dir,

'rcprop':'ids|patrolled',

'format':'json'

}

if (start) {

params['rcstart'] = start;

}

if (hidepat) {

params['rcshow'] = '!patrolled';

if (hidered) {

params['rcshow'] += '|!redirect';

}

} else if(hidered) {

params['rcshow'] = '!redirect';

}

$('#autopatrolbutton').after('');

$('#autopatrol-done').ajaxStop(function() {

$(this).html('  Finished!');

});

if (debug) {

for (var p in params) {

console.log(p);

console.log(params[p]);

}

}

$.post(mw.config.get('wgServer')+wgScriptPath+'/api.php', params, function(data) {

rclen = data['query']['recentchanges'].length

for (var i=0; i

if (typeof(data['query']['recentchanges'][i].patrolled) != "undefined" ) {

continue;

}

if (!debug) {

autopatrol(data['query']['recentchanges'][i]['rcid'], data['query']['recentchanges'][i]['patroltoken']);

}

}

});

}

function autopatrol(rcid, token, last) {

params = {'action':'patrol',

'token':token,

'rcid':rcid

}

$.post(mw.config.get('wgServer')+wgScriptPath+'/api.php', params);

}

function autopatrollink() {

if (document.getElementById('mw-np-username').value) {

button = document.createElement('input');

button.type = 'button';

button.id = 'autopatrolbutton';

button.value = 'Autopatrol';

button.onclick = autopatrolclick;

button.title = 'Autopatrol all edits by this user';

document.getElementById('mw-np-username').parentNode.appendChild(button);

}

}

if (mw.config.get('wgPageName') == 'Special:NewPages') {

$(document).ready(autopatrollink);

}