17,233
edits
mNo edit summary |
(finished) |
||
Line 1: | Line 1: | ||
if (mw.user.tokens.exists('patrolToken')) { | |||
// add patrol link under diff-multi notice | |||
var $diffMultiNotice = $('td.diff-multi'); | |||
if ($diffMultiNotice.length > 0) { | |||
var $patrolAllLink = $('<a href="#">Mark all as patrolled</a>'); | |||
$diffMultiNotice.append('<br>[').append($patrolAllLink).append(']'); | |||
// patrol link click handler | |||
$patrolAllLink.click(function(e) { | |||
var $this = $(this); | |||
var $spinner; | |||
// replace text with spinner | |||
mw.loader.using('jquery.spinner').then(function() { | |||
$spinner = $.createSpinner({ size :'small', type: 'inline' }); | |||
$this.hide().after($spinner); | |||
}); | |||
// find bounding revision ids | |||
var oldid = mw.util.getParamValue('oldid'); | |||
var newid = mw.util.getParamValue('diff'); | |||
var pageid = mw.util.getParamValue('curid'); | |||
// call api for all revisions in that span | |||
var api = new mw.Api(); | |||
api.get({ | |||
action: 'query', | |||
prop: 'revisions', | |||
rvprop: 'ids', | |||
rvstartid: newid, | |||
rvendid: oldid, | |||
rvlimit: 'max', | |||
pageids: pageid | |||
}).done(function (data) { | |||
var revisions = data.query.pages[pageid].revisions; | |||
// fire off a patrol action for each revision | |||
var promises = []; | |||
for (var i = 0; i < revisions.length; i++) { | |||
promises.push(api.postWithToken('patrol', { | |||
formatversion: 2, // no clue what this is or if it's needed | |||
action: 'patrol', | |||
revid: revisions[i].revid | |||
})); | |||
} | |||
$.when.apply($, promises).then( | |||
function(result) { | |||
$spinner.remove(); | |||
$this.after($('<span style="color:green">Marked as patrolled</span>')); | |||
}, function(error) { | |||
$spinner.remove(); | |||
$this.after($('<span style="color:red">Cannot mark as patrolled</span>')); | |||
}); | |||
}); | |||
e.preventDefault(); | |||
}); | |||
} | |||
} | } | ||