משתמש:בוט גאון הירדן/היסטוריית עריכות.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
"use strict";
mw.loader.using(["mediawiki.diff.styles", "mediawiki.api"]).then(function () {
var span = $(
'<table class="ambox ambox-content plainlinks noprint" align="center" style="border: 1px solid gray;border-radius:1em;background: #jjjj;clear: both;margin:auto;">' +
"<tbody><tr>" +
'<td style="text-align: center;" class="mbox-text"><div id="mySpan"><b></b></div>' +
"</td></tr></tbody>" +
"</table>"
);
const button = document.createElement("button");
button.textContent = "בדוק גרסאות";
const wikiRevision = [];
function getPageEdits() {
const page = mw.config.get("wgPageName");
const point = "/w/api.php?";
const data = {
action: "query",
format: "json",
prop: "revisions",
indexpageids: 1,
titles: page,
utf8: 1,
rvlimit: "max",
};
$.ajax({
url: point,
data: data,
dataType: "json",
}).done(function (result) {
if (result && result.query) {
const revisions = result.query.pages[result.query.pageids[0]].revisions;
calculateRevisions(revisions);
}
});
}
const impo = /(יבוא מוו?יקיפדיה העברית|גרסה אחת של הדף)/;
const idkun = /עי?דכון מוו?יקיפדיה גי?רסה (\d+)/;
const wikiRevIdFromHtml = document.getElementById("wikiRevid")?.innerText;
function calculateRevisions(revisions) {
for (const revision of revisions) {
const { comment, user } = revision;
const time = calculateTime(revision.timestamp);
if (idkun.test(comment)) {
const wikiRevid = comment.match(idkun)[1];
const wikiIDToCall = isNaN(+wikiRevid)
? wikiRevIdFromHtml
: isNaN(+wikiRevIdFromHtml)
? wikiRevid
: +wikiRevid > +wikiRevIdFromHtml
? wikiRevid
: wikiRevIdFromHtml;
//console.log(wikiRevid);
const msg = "עודכן " + time + ' ע"י ' + user;
$("#bodyContent").prepend(span);
//$('.minerva__tab-container').append(span);
$("#mySpan").append(msg);
$("#mySpan").append(button);
button.addEventListener("click", () => {
button.remove();
checkWiki(wikiIDToCall);
});
return;
}
if (impo.test(comment)) {
const msg = "הייבוא היה " + time + ' ע"י ' + user + " ולא עודכן.";
$("#bodyContent").prepend(span);
//$('.minerva__tab-container').append(span);
$("#mySpan").append(msg);
if (wikiRevIdFromHtml) {
$("#mySpan").append(button);
button.addEventListener("click", () => {
button.remove();
checkWiki(wikiRevIdFromHtml);
});
}
return;
}
}
}
function checkWiki(wikiRevid, rvcontinue = "") {
if (!wikiRevid || isNaN(+wikiRevid)) return;
console.log(wikiRevid);
const page =
document.getElementById("wikiPageName")?.innerText ||
mw.config.get("wgPageName");
const 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;
}
const apiEndpoint = "/import/get_wik1i.php";
$.ajax({
url: apiEndpoint,
data: data,
dataType: "json",
}).done(function (result) {
if (!result?.query) {
console.log("שגיאה בקבלת גרסאות מוויקיפדיה: " + result.error.code);
return;
}
if (result.query.pages["-1"]) {
$("#mySpan").append(
" שגיאה בקבלת גרסאות מוויקיפדיה: הדף " + page + " לא נמצא "
);
return;
}
for (const revision of result.query.pages[result.query.pageids[0]]
.revisions) {
wikiRevision.push(revision);
}
if (result["continue"]) {
checkWiki(wikiRevid, result["continue"].rvcontinue);
} else {
const lastIndex = wikiRevision.length - 1;
let newRev =
lastIndex > 0
? "\n" + " נערך בוויקיפדיה מאז " + lastIndex + " פעמים."
: " אין גרסאות חדשות.";
const difflength =
wikiRevision[0]["size"] - wikiRevision[lastIndex]["size"];
if (wikiRevision.length > 1) {
newRev += " (" + difflength + ")";
}
const firstrevid = wikiRevision[lastIndex]["revid"];
if (
mw.config.get("wgUserGroups").indexOf("wikiupdate") !== -1 &&
mw.config.get("wgUserGroups").indexOf("aspaklaryaEditor") !== -1
)
diff(firstrevid);
$("#mySpan").append(newRev);
}
});
}
function calculateTime(mytime) {
const lastEdit = new Date(mytime);
const now = new Date();
const distanceInSeconds = Math.floor((now - lastEdit) / 1000);
const oneMinute = 60;
const oneHour = 3600;
const oneDay = 86400;
const oneMonth = 2592000; // Average month: 30 days
const oneYear = 31536000; // Average year: 365 days
if (distanceInSeconds < oneMinute) {
return 'עכשיו';
} else if (distanceInSeconds < oneHour) {
const minutes = Math.floor(distanceInSeconds / oneMinute);
return `לפני ${minutes} דקות`;
} else if (distanceInSeconds < oneDay) {
const hours = Math.floor(distanceInSeconds / oneHour);
if (hours === 1) {
return 'לפני שעה';
}
return `לפני ${hours} שעות`;
} else if (distanceInSeconds < oneMonth) {
const days = Math.floor(distanceInSeconds / oneDay);
if (days === 1) {
return 'אתמול';
}
return `לפני ${days} ימים`;
} else if (distanceInSeconds < oneYear) {
const months = Math.floor(distanceInSeconds / oneMonth);
if (months === 1) {
return 'לפני חודש';
}
return `לפני ${months} חודשים`;
} else {
const years = Math.floor(distanceInSeconds / oneYear);
if (years === 1) {
return 'לפני שנה';
}
return `לפני ${years} שנים`;
}
}
function diff(firstrevid) {
const data = {
action: "compare",
format: "json",
fromrev: firstrevid,
torelative: "cur",
utf8: 1,
origin: "*",
};
const apiEndpoint = "https://import.hamichlol.org.il/";
$.ajax({
url: apiEndpoint,
data: data,
dataType: "json",
}).done(function (result) {
if (!result || !result.compare) return;
console.log(result.compare);
const diffString = result.compare["*"];
const msg = "(אין הבדלים)";
if (diffString === "") {
$("#mySpan").append(msg);
return;
}
const pageParse = '<table id = "difftable">' + diffString + "</table>";
const but12 = $("<a>")
.text("הצג הבדלים")
.click(function () {
const mydiv = document.getElementById("difftable");
if (mydiv) {
$(mydiv).toggle();
} else {
$("#mySpan").append(pageParse);
}
});
$("#mySpan").append(" ", but12);
});
}
if (
mw.config.get("wgArticleId") > 0 &&
mw.config.get("wgNamespaceNumber") === 0 &&
mw.config.get("wgPageName") != "עמוד_ראשי" &&
mw.config.get("wgAction") === "view" &&
location.href.indexOf("&diff") == -1
) {
getPageEdits();
}
});