Limit access to a NewForm / EditForm at specific times and weekdays

I got a request for a solution to limit access to a form for 30 minutes while a report was being made to ensure no records was added or modified.

This example code must be added to the specific form – in the Custom JS section. Change the from, to and weekdays to match the time and weekdays you want to limit access.

function limitAccessToForm(arg) {
    var disableStart = new Date();
    disableStart.setHours(arg.from.hour, arg.from.minute, 0); // hour, minute, second
    var disableEnd = new Date();
    disableEnd.setHours(arg.to.hour, arg.to.minute, 0); // hour, minute, second
    var disableStartFriendly = disableStart.toLocaleString();
    var disableEndFriendly = disableEnd.toLocaleString();
    var now = new Date();
    if (now > disableStart && now < disableEnd) {
        if (arg.weekdays.length > 0) {
            var pass = false;
            var today = now.getDay();
            jQuery.each(arg.weekdays, function (i, day) {
                if (today === day) {
                    pass = true;
                    return false;
                }
            });
            if (!pass) {
                // Not today
                return;
            }
        }
        jQuery("#part1").css("visibility", "hidden");
        spjs.dffs.alert({
            "title": "No access",
            "msg": "This form is disabled between " + disableStartFriendly + " and " + disableEndFriendly,
            "ok": function () {
                if(GetUrlKeyValue("IsDlg") === "1"){
                    window.frameElement.cancelPopUp();
                }else{
                    window.history.back();
                }
            }
        });
    }
}

// If you like to limit it to specific weekdays add them to the array weekdays (sunday = 0 and saturday = 6) - leave the array empty if you want it on all weekdays
limitAccessToForm({
    "from": {
        "hour": 13,
        "minute": 0
    },
    "to": {
        "hour": 13,
        "minute": 30
    },
    "weekdays": []
});

Post any comments below, or in the forum.

Alexander

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.