מדיה ויקי:Gadget-RangePatrol.js

גרסה מ־22:29, 26 באפריל 2021 מאת חלוקת קונטרסים (שיחה | תרומות) (מויקיפדיה: https://he.wikipedia.org/wiki/%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:%D7%A1%D7%A7%D7%A8%D7%99%D7%A4%D7%98%D7%99%D7%9D/61.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)
		);
	}
});