מדיה ויקי:Gadget-RangePatrol.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
// rangePatrol.js - mark multiple edits by same user as patrolled.
mw.loader.using(['mediawiki.util', 'mediawiki.user', 'mediawiki.page.ready']).done( function() {
function markRange() {
var suspects = $('li.selected').filter(':has(".mw-history-histlinks")');
if (suspects.length != 2)
throw 'נמצא מספר שונה מאשר שני אלמנטים (' + suspects.length + '). לא יכול לבצע';
var all = suspects.parent().children();
var start = all.index($(suspects[0])), finish = all.index($(suspects[1]));
if (start < 0 || finish < 0 || start >= finish)
throw 'משהו השתבש: start = ' + start + ' finish = ' + finish;
var actionable = all.slice(start, finish);
var actionableids = [];
var user = $(suspects[0]).find('.history-user > a').text();
var token = mw.user.tokens.get('patrolToken');
if (! user)
throw 'לא נמצא משתמש';
actionable.each(function(index, item) {
var $item = $(item);
if ($item.find('.history-user > a').text() != user) {
alert("אופס, לא ניתן לסמן את הטווח - לא כל השינויים בוצעו על ידי אותו משתמש");
return;
}
var id = $item.find('input[type=radio]:eq(0)').attr('value');
actionableids.push(id);
});
var count = 0;
$.ajax({
url: mw.util.wikiScript('api'),
async: false,
data: {action: 'query', list: 'recentchanges', rclimit: 500, rcuser: user, format: 'json'},
success: function(data) {
var rcids = [];
$(data.query.recentchanges).each(function(index, item) {
if ($.inArray(item.revid + '', actionableids) + 1)
rcids.push(item.rcid);
});
for (var i in rcids)
$.ajax({
url: mw.util.wikiScript('api'),
type: 'post',
async: false,
data: {action:'patrol', rcid: rcids[i], token:token, format:'json'},
success: help1
});
function help1(data) {
if (data && data.patrol && data.patrol.rcid && (data.patrol.rcid == rcids[i]))
count++;
}
} //success for get;
}); // ajax
mw.notify('הסקריפט סיים לרוץ. ' + count + ' עריכות סומנו כבדוקות');
}
if (mw.util.getParamValue('action') == 'history') {
$('input.historysubmit').after(
$('<input>', {
type: 'button',
value: 'סימון טווח כבדוקות',
title: 'סמן את כל העריכות בין המסומנות (לא כולל הראשונה, כלומר המוקדמת ביניהן) כבדוקות',
style: 'margin-right: 4px'
}
).addClass('mw-ui-button')
.click(markRange)
);
}
});