משתמש:איתן ברוך/timer blocker.js

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
// Set a Cookie
function setCookie(cName, cValue, expDays, expMin) {
    var date = new Date();
    date.setTime(date.getTime() + (expDays * 24 * 60 * 60 * 1000) + (expMin * 60 * 1000));
    var expires = "expires=" + date.toUTCString();
    document.cookie = cName + "=" + cValue + "; " + expires + "; path=/";
}

function getCookie(cName) {
    var name = cName + "=";
    var cDecoded = decodeURIComponent(document.cookie); //to be careful
    var cArr = cDecoded.split('; ');
    var res = 0;
    for (var i in cArr) {
        if (cArr[i].indexOf(name) === 0)
            res = cArr[i].substring(name.length);
    }
    return res;
}

function set_timer_to_block() {
    var mins = +prompt("לכמה דקות אתה מעוניין לחסום את האפשרות לעריכה?");
    if (mins || mins < 0) {
        var date = new Date();
        date.setTime(date.getTime() + (mins * 60 * 1000));

        setCookie("block1", date.toString(), 0, mins);
        location.reload();
    } else {
        alert("בוטל");
    }
}

function set_label_of_block_timer() {
    var block_until = getCookie("block1")
    var label = " לנעול 🔐 "
    if (block_until) {
        label = "נעול מעריכה עד " + new Date(block_until).toLocaleString()
    }
    var ppersonal = document.getElementById("p-personal");
    var NavTop = ppersonal ? ppersonal.getElementsByTagName("ul")[0] : null;
    if (NavTop) {

        var newListItem = document.createElement("li");
        var newLink = document.createElement("b");
        newLink.appendChild(document.createTextNode(label));
        if (block_until == 0)
            newLink.onclick = set_timer_to_block;
        else {
            newLink.style.backgroundColor = "red";
        }
        newListItem.appendChild(newLink);
        newLink = document.createElement("b");
        newLink.appendChild(document.createTextNode(" לחסום 🔒"));
        newLink.onclick = function() {
            var min = +prompt("לכמה דקות אתה רוצה לנעול את עצמך מחוץ לחשבון?");
            if (min || min < 0) {
                setCookie("block_auto", min, 0, 1);
                window.location.href = 'https://he.wikipedia.org/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%94%D7%93%D7%A3%20%D7%A9%D7%9C%D7%99/common.js&action=edit';
            }
        };
        newListItem.appendChild(newLink);
        NavTop.appendChild(newListItem);
        if (false) {
            NavTop.insertBefore(newListItem, NavTop.childNodes[1]);
        } else {
            NavTop.appendChild(newListItem);
        }

    }
}

function check_if_need_to_block() {
    if (window.location.href.indexOf("=edit") != -1 && getCookie("block1") &&
        Date.parse(getCookie("block1")) > new Date())
        window.location.replace("https://he.wikipedia.org");
}

function set_currect_time_in_block_time() {
    var min = getCookie("block_auto");
    if (min != 0) {
        var items = document.getElementsByClassName("oo-ui-iconElement-icon oo-ui-icon-markup oo-ui-image-progressive");
        if (items[0])
            items[0].click();
        var data = wpTextbox1.value.split("\n")
        var date = new Date();
        date.setTime(date.getTime() + min * 60 * 1000);
        for (var i in data) {
            if (data[i].startsWith("var dateblock = ")) {
                data[i] = "var dateblock = { year: " + (date.getYear() + 1900) +
                    ", month: " + (date.getMonth() + 1) + ", day: " + date.getDate() + " };"
            }
            if (data[i].startsWith("var timeblock = ")) {
                data[i] = "var timeblock = { hours: " + date.getHours() + ", minutes: " + date.getMinutes() + ", seconds: " + date.getSeconds() + " };"
            }
        }
        wpTextbox1.value = data.join("\n");
        setTimeout(function() {
            document.getElementById("wpSave").click();
        }, 2000);

    }
}
check_if_need_to_block()
set_label_of_block_timer()

if (getCookie("block1"))
    setInterval(check_if_need_to_block, 10 * 1000)
if (window.location.href.endsWith("common.js&action=edit")) {
    set_currect_time_in_block_time();
}