משתמש:איסתרק/גיבוי עריכות.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/*
*הסקריפט המקורי הוצע כאן בדף משתמש:איסתרק/גיבוי עריכות.js
*קוד ראשוני לא תקין נלקח מצ'אטבוט רובי הבוט
*כעת נכתב מחדש עם שיפורים משמעותיים
*/
mw.loader.using(["mw.util", "mw.storage"]).then(() => {
const revisionid = mw.config.get("wgCurRevisionId");
const section = mw.util.getParamValue("section");
function debounce(func, wait) {
let timeout;
return function executedFunction() {
const later = () => {
clearTimeout(timeout);
func();
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
function saveText() {
const text = $("#wpTextbox1").val();
const info = {
revisionid,
section,
};
mw.storage.setObject(
`unsavedText ${mw.config.get("wgPageName")}`,
JSON.stringify({ text, info })
);
}
function getStoredText() {
const storedText = mw.storage.getObject(
`unsavedText ${mw.config.get("wgPageName")}`
);
if (!storedText) return;
const { text, info } = JSON.parse(storedText);
const sameSection = section === info.section;
if (info.revisionid === revisionid && sameSection) {
if (confirm("קיים לדף זה טקסט שלא שמרת\nתרצה לשחזרו?")) {
mw.storage.remove(`unsavedText ${mw.config.get("wgPageName")}`);
$("#wpTextbox1").val(text);
} else {
mw.storage.remove(`unsavedText ${mw.config.get("wgPageName")}`);
}
} else if (
info.revisionid !== mw.config.get("wgCurRevisionId") &&
sameSection
) {
if (
confirm(
"קיים לדף זה טקסט שלא שמרת, אולם הדף נערך מאז.\nתרצה לשחזר את הטקסט תוך הקפדה על שמירת העריכות החדשות?"
)
) {
mw.storage.remove(`unsavedText ${mw.config.get("wgPageName")}`);
$("#wpTextbox1").val(text);
} else {
mw.storage.remove(`unsavedText ${mw.config.get("wgPageName")}`);
}
}
}
if ($.inArray(mw.config.get("wgAction"), ["edit", "submit"]) + 1) {
getStoredText();
$("#wpTextbox1").on("input", debounce(saveText, 5000));
}
});