מדיה ויקי:סקריפטים/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);
});