משתמש:קיפודנחש/common.js/parrolRange.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
if (mw.util.getParamValue('action') == 'history')
$(document).ready(function () {
    
    function markRangeIn() {
		var suspects = $('li:[class=selected]').filter(':has(".mw-history-histlinks")');
		if (suspects.length != 2) 
			throw 'found number other than 2 of elements (' + suspects.length + '). no can do';
		var all = suspects.parent().children();
		var start = all.index($(suspects[0])), finish = all.index($(suspects[1]));
		if (start < 0 || finish < 0 || start >= finish) 
			throw 'something is wrong: start = ' + start + ' finish = ' + finish;
		var actionable = all.slice(start, finish);
		var actionableids = [];
		var user = $(suspects[0]).find('.history-user > a').text();
		if (! user) 
			throw 'Could not find user';
		actionable.each(function(index, item) {
			var $item = $(item);
			if ($item.find('.history-user > a').text() != user)
				throw "Can't mark range - not all changes are by the same user";
			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', rctoken: 'patrol', rclimit: 500, rcuser: user, format: 'json'},
			success: function(data) {
				var token = data.query.recentchanges[0].patroltoken;
				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: function(data){
							if (data && data.patrol && data.patrol.rcid && (data.patrol.rcid == rcids[i]))
								count++;
						} // success
					});
			} //success for get;
		}); // ajax
		alert('הסקריפט סיים לרוץ. ' + count + ' עריכות סומנו כבדוקות.');
	}
	
	function markRange() {
		try {
			markRangeIn();
		}
		catch(e) {
			alert(e);
		}
	}
	
	$('input:[class=historysubmit]').after(
		$('<input>', {type: 'button', value: 'סימון טווח כבדוקות', title: 'סמן את כל העריכות בין המסומנות (לא כולל הראשונה, כלומר המוקדמת ביניהם) כבדוקות'}).click(markRange));
	});