משתמש:מוטי בוט/היסטוריה.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
//[[משתמש:בוט גאון הירדן/היסטוריית עריכות.js]] מותאם לעורך ממשק
mw.loader.using(['mediawiki.diff.styles', 'mediawiki.api']).then(function () {
var span = $('<table class="ambox-content plainlinks noprint" align="center" style="border: 1px solid gray;border-radius:1em;clear: both;margin:auto;">' +
'<tbody><tr>' +
'<td style="text-align: center;" class="mbox-text"><div id="mySpan"><b></b></div>' +
'</td></tr></tbody>' +
'</table>');
var wikiRevision = [];
function getPageEdits() {
var page = mw.config.get('wgPageName');
var point = '/w/api.php?';
var data = {
"action": "query",
"format": "json",
"prop": "revisions",
"indexpageids": 1,
"titles": page,
"utf8": 1,
"rvlimit": "max"
};
var request = $.ajax({
url: point,
data: data,
dataType: "json"
})
.done(function (result) {
if (result && result.query) {
var revisions = result.query.pages[result.query.pageids[0]].revisions;
calculateRevisions(revisions);
}
})
}
function calculateRevisions(revisions) {
for (var r in revisions) {
var comment = revisions[r].comment
var mytime = revisions[r].timestamp,
time = calculateTime(mytime);
var user = revisions[r].user;
var impo = /(ייבוא מוו?יקיפדיה העברית|גרסה אחת של הדף)/;
let idkun = /עי?דכון מוו?יקיפדיה גי?רסה (\d+)/;
if (idkun.test(comment)) {
var wikiRevid = comment.match(idkun)[1];
//console.log(wikiRevid);
msg = "עודכן " + time + " ע\"י " + user;
$('#bodyContent').prepend(span);
//$('.minerva__tab-container').append(span);
$("#mySpan").append(msg);
var rvcontinue = false;
checkWiki(wikiRevid, rvcontinue)
return;
} else if (impo.test(comment)) {
msg = "הייבוא היה " + time + " ע\"י " + user + " ולא עודכן.";
$('#bodyContent').prepend(span);
//$('.minerva__tab-container').append(span);
$("#mySpan").append(msg);
if (document.getElementById('wikiRevid')) {
var d = document.getElementById('wikiRevid').innerText;
wikiRevid = d;
var rvcontinue = false;
checkWiki(wikiRevid, rvcontinue)
}
return;
}
}
}
function checkWiki(wikiRevid, rvcontinue) {
var page = mw.config.get('wgPageName');
if (document.getElementById('wikiPageName')) {
var p = document.getElementById('wikiPageName').innerText;
page = p;
}
var data = {
"action": "query",
"format": "json",
"prop": "revisions",
"indexpageids": 1,
"continue": "||",
"titles": page,
"utf8": 1,
"rvprop": "ids|timestamp|comment|content|slotsize|size",
"rvendid": wikiRevid,
"rvdir": "older"
}
if (rvcontinue) data.rvcontinue = rvcontinue;
var apiEndpoint = '/import/get_wik1i.php';
var request = $.ajax({
url: apiEndpoint,
data: data,
dataType: "json"
})
.done(function (result) {
if (!result || !result.query) {
console.log("שגיאה בקבלת גרסאות מוויקיפדיה: " + result.error.code);
return;
}
if (result.query.pages['-1']) {
$("#mySpan").append(
" שגיאה בקבלת גרסאות מוויקיפדיה: הדף " + page + " לא נמצא ");
return;
}
var rev = result.query.pages[result.query.pageids[0]].revisions;
for (var r = 0; r < rev.length; r++) {
wikiRevision.push(rev[r]);
}
if (result["continue"]) {
rvcontinue = result["continue"].rvcontinue;
checkWiki(wikiRevid, rvcontinue);
} else {
all = wikiRevision.length - 1;
var newRev = all > 0 ? "\n" + " נערך בוויקיפדיה מאז " + all + " פעמים." : " אין גרסאות חדשות.";
var difflength = wikiRevision[0]['size'] - wikiRevision[all]['size'];
if (wikiRevision.length > 1) newRev += " (" + difflength + ")";
var firstrevid = wikiRevision[all]['revid'];
if (mw.config.get('wgUserGroups').indexOf('editinterface') !== -1 && mw.config.get('wgUserGroups').indexOf('עורך_אספקלריה') !== -1) diff(firstrevid)
$("#mySpan").append(newRev)
}
});
}
function calculateTime(mytime) {
var lastEdit = new Date(mytime);
var now = Date.now();
var distance = now - lastEdit;
// Time calculations for days, hours, minutes and seconds
var years = Math.floor(distance / (1000 * 60 * 60 * 24 * 30 * 12));
var Months = Math.floor(distance / (1000 * 60 * 60 * 24 * 30));
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
var d = " ימים, ", h = " שעות, ", m = " דקות, ", s = " שניות ";
var diff = days + d + hours + h
+ minutes + m + seconds + s;
var distance;
var textmonths = Months > 1 ? Months + " חודשים" : " חודש ";
var textyears = years > 1 ? years + " שנים" : " שנה ";
const abc = new Date();
let hour = abc.getHours();
if (Months >= 12) {
distance = " לפני " + textyears;
}
else if (Months > 0) {
distance = " לפני " + textmonths;
}
else if (days == 0) {
if (hour < 12 && hours > 12) {
distance = "אתמול";
} else {
distance = "היום";
}
} else if (days == 1) {
distance = "אתמול";
}
else if (days > 1) {
distance = " לפני " + days + " ימים. ";
}
return distance;
}
function diff(firstrevid) {
var data = {
"action": "compare",
"format": "json",
"fromrev": firstrevid,
"torelative": "cur",
"utf8": 1,
"origin": "*"
}
var apiEndpoint = 'import.hamichlol.org.il';
var request = $.ajax({
url: apiEndpoint,
data: data,
dataType: "json"
})
.done(function (result) {
if (!result || !result.compare) return;
console.log(result.compare);
var diffString = result.compare['*'];
var msg = "(אין הבדלים)";
if (diffString === "") {
$("#mySpan").append(msg);
return;
}
var pageParse = '<table id = "difftable">' + diffString + '</table>';
var but12 = $('<a>').text('הצג הבדלים').click(function () {
var mydiv = document.getElementById("difftable");
if (mydiv) {
$(mydiv).toggle();
} else {
$("#mySpan").append(pageParse);
}
});
$("#mySpan").append(" ", but12)
});
}
if (mw.config.get('wgArticleId') > 0 && mw.config.get('wgPageName') != 'עמוד_ראשי' && mw.config.get('wgAction') === 'view' && location.href.indexOf("&diff") == -1) {
getPageEdits();
}
})