מדיה ויקי:סקריפטים/102.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', "mediawiki.user", "jquery.ui" ] ).then( function() {
	var RecentChangeID = "";
	function rollbackTheRecentChange(title, user) {
		new mw.Api().get({
			"action": "query",
			"format": "json",
			"meta": "tokens",
			"type": "rollback"
		}).done(function(d){
			if (d && d.query && d.query.tokens && d.query.tokens.rollbacktoken) {
				window.open('/w/index.php?title=' + title + '&action=rollback&from=' + user + '&token=' + encodeURIComponent(d.query.tokens.rollbacktoken), '_blank');
			}
		});
	}
	function getTheRecentChange() {
		new mw.Api().get({
			"action": "query",
			"format": "json",
			"list": "recentchanges",
			"rcprop": "title|timestamp|ids|user|comment",
			"rctype": "edit",
			"rcshow": "!patrolled",
			"rcnamespace": "0"
		}).done(function(d){
			if (d && d.query && d.query.recentchanges) {
				if (RecentChangeID !== d.query.recentchanges["0"].revid) {
					RecentChangeID = d.query.recentchanges["0"].revid;
					OpenDiffDialog(d);
				}
			} else {
				alert();
			}
		});
		setTimeout(getTheRecentChange, 2000);
	}
	function OpenDiffDialog(d) {
	new mw.Api().get({
		"action": "query",
		"format": "json",
		"prop": "revisions",
		"revids": d.query.recentchanges["0"].revid,
		"rvdiffto": "prev"
	}).done(function(e){
		if (e && e.query && e.query.pages)
		if (d.query.recentchanges["0"].comment === "") {
			DialogHTML = $("<div>").append($("<h1>").append($("<a href='" + mw.util.getUrl(d.query.recentchanges["0"].title) + "'>").append(d.query.recentchanges["0"].title)), "נערך על ידי: ", $("<a href='" + mw.util.getUrl("User:" + d.query.recentchanges["0"].user) + "'>").append(d.query.recentchanges["0"].user), e.query.pages[d.query.recentchanges["0"].pageid].revisions["0"].diff["*"]);
		} else {
			DialogHTML = $("<div>").append($("<h1>").append($("<a href='" + mw.util.getUrl(d.query.recentchanges["0"].title) + "'>").append(d.query.recentchanges["0"].title)), "נערך על ידי: ", $("<a href='" + mw.util.getUrl("User:" + d.query.recentchanges["0"].user) + "'>").append(d.query.recentchanges["0"].user), $("<br>"), "תקציר עריכה: " + d.query.recentchanges["0"].comment, e.query.pages[d.query.recentchanges["0"].pageid].revisions["0"].diff["*"]);
		}
	$( '<div>' )
		.dialog( { 
			title: 'הבדל',
			width: 'auto', 
			height: 'auto',
			position: [$('body').width() * 0.2, $('body').height() * 0.1],
			buttons: {
				"סגירה": function() {$( this ).dialog( "close" );},
				"שחזור": function() {rollbackTheRecentChange(d.query.recentchanges["0"].title, d.query.recentchanges["0"].user); $(this).dialog("close");},
				"!": function() {$(this).dialog("close"); new mw.Api().post({"action": "patrol", "revid": d.query.recentchanges["0"].revid, "token": mw.user.tokens.get("patrolToken")}).done(function(q){if (q && q.patrol && q.patrol.rcid){console.log(q)}else{alert();}});}
			}
		} )
	.append(DialogHTML);
	});
	}
	$(mw.util.addPortletLink('p-navigation', '#', 'סקריפט ניטור', 't-NRC', 'כלי חדש לניטור שינויים בזמן אמת')).click(getTheRecentChange);
});