Uname: Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/old/booked/Web/scripts/admin      ( Reset | Go to )
File Name: resource.js
Edit
function ResourceManagement(opts) {
    var options = opts;

    var elements = {
        activeId:$('#activeId'),

        renameDialog:$('#renameDialog'),
        imageDialog:$('#imageDialog'),
        scheduleDialog:$('#scheduleDialog'),
        locationDialog:$('#locationDialog'),
        descriptionDialog:$('#descriptionDialog'),
        notesDialog:$('#notesDialog'),
        deleteDialog:$('#deleteDialog'),
        configurationDialog:$('#configurationDialog'),
        groupAdminDialog:$('#groupAdminDialog'),
        sortOrderDialog:$('#sortOrderDialog'),
        resourceTypeDialog:$('#resourceTypeDialog'),
        statusDialog:$('#statusDialog'),

        renameForm:$('#renameForm'),
        imageForm:$('#imageForm'),
        scheduleForm:$('#scheduleForm'),
        locationForm:$('#locationForm'),
        descriptionForm:$('#descriptionForm'),
        notesForm:$('#notesForm'),
        deleteForm:$('#deleteForm'),
        configurationForm:$('#configurationForm'),
        groupAdminForm:$('#groupAdminForm'),
        attributeForm:$('.attributesForm'),
        sortOrderForm:$('#sortOrderForm'),
        statusForm:$('#statusForm'),
        resourceTypeForm:$('#resourceTypeForm'),

        statusReasons:$('#reasonId'),
        statusOptions:$('#statusId'),
        addStatusReason:$('#addStatusReason'),
        newStatusReason:$('#newStatusReason'),

        addForm:$('#addResourceForm'),
        statusOptionsFilter:$('#resourceStatusIdFilter'),
        statusReasonsFilter:$('#resourceReasonIdFilter'),
        filterTable:$('#filterTable'),
        filterButton:$('#filter'),
        clearFilterButton:$('#clearFilter'),

        bulkUpdatePromptButton:$('#bulkUpdatePromptButton'),
        bulkUpdateDialog:$('#bulkUpdateDialog'),
        bulkUpdateList:$('#bulkUpdateList'),
        bulkUpdateForm:$('#bulkUpdateForm'),
        bulkEditStatusOptions:$('#bulkEditStatusId'),
        bulkEditStatusReasons:$('#bulkEditStatusReasonId')
    };

    var resources = {};
    var reasons = [];

    ResourceManagement.prototype.init = function () {
        $(".days").watermark('days');
        $(".hours").watermark('hrs');
        $(".minutes").watermark('mins');

        ConfigureAdminDialog(elements.renameDialog);
        ConfigureAdminDialog(elements.imageDialog);
        ConfigureAdminDialog(elements.scheduleDialog);
        ConfigureAdminDialog(elements.locationDialog);
        ConfigureAdminDialog(elements.descriptionDialog);
        ConfigureAdminDialog(elements.notesDialog);
        ConfigureAdminDialog(elements.deleteDialog);
        ConfigureAdminDialog(elements.configurationDialog);
        ConfigureAdminDialog(elements.groupAdminDialog);
        ConfigureAdminDialog(elements.sortOrderDialog);
        ConfigureAdminDialog(elements.resourceTypeDialog);
        ConfigureAdminDialog(elements.statusDialog);

        $('.resourceDetails').each(function () {
            var id = $(this).find(':hidden.id').val();
            var indicator = $('.indicator');

            $(this).find('a.update').click(function (e) {
                e.preventDefault();
                setActiveResourceId(id);
            });

            $(this).find('.imageButton').click(function (e) {
                showChangeImage(e);
            });

            $(this).find('.removeImageButton').click(function (e) {
                PerformAsyncAction($(this), getSubmitCallback(options.actions.removeImage), indicator);
            });

            $(this).find('.enableSubscription').click(function (e) {
                PerformAsyncAction($(this), getSubmitCallback(options.actions.enableSubscription), indicator);
            });

            $(this).find('.disableSubscription').click(function (e) {
                PerformAsyncAction($(this), getSubmitCallback(options.actions.disableSubscription), indicator);
            });

            $(this).find('.renameButton').click(function (e) {
                showRename(e);
            });

            $(this).find('.changeScheduleButton').click(function (e) {
                showScheduleMove(e);
            });

            $(this).find('.changeResourceType').click(function (e) {
                showResourceType(e);
            });

            $(this).find('.changeLocationButton').click(function (e) {
                showChangeLocation(e);
            });

            $(this).find('.descriptionButton').click(function (e) {
                showChangeDescription(e);
            });

            $(this).find('.notesButton').click(function (e) {
                showChangeNotes(e);
            });

            $(this).find('.adminButton').click(function (e) {
                showResourceAdmin(e);
            });

            $(this).find('.deleteButton').click(function (e) {
                showDeletePrompt(e);
            });

            $(this).find('.changeConfigurationButton').click(function (e) {
                showConfigurationPrompt(e);
            });

            $(this).find('.changeAttributes, .customAttributes .cancel').click(function (e) {
                var otherResources = $(".resourceDetails[resourceid!='" + id + "']");
                otherResources.find('.attribute-readwrite, .validationSummary').hide();
                otherResources.find('.attribute-readonly').show();
                var container = $(this).closest('.customAttributes');
                container.find('.attribute-readwrite').toggle();
                container.find('.attribute-readonly').toggle();
                container.find('.validationSummary').hide();
            });

            $(this).find('.changeSortOrder').click(function (e) {
                showSortPrompt(e);
            });

            $(this).find('.changeStatus').click(function (e) {
                showStatusPrompt(e);
            });
        });

        $(".save").click(function () {
            $(this).closest('form').submit();
        });

        $(".cancel").click(function () {
            $(this).closest('.dialog').dialog("close");
        });

        $(".cancelColorbox").click(function () {
            $('#bulkUpdateDialog').hide();
            $.colorbox.close();
        });

        elements.statusOptions.change(function(e){
            populateReasonOptions(elements.statusOptions.val(), elements.statusReasons);
        });

        elements.bulkEditStatusOptions.change(function(e){
            populateReasonOptions(elements.bulkEditStatusOptions.val(), elements.bulkEditStatusReasons);
        });

        elements.addStatusReason.click(function(e){
            e.preventDefault();
            elements.newStatusReason.toggle();

            if (elements.newStatusReason.is(':visible')){
                elements.statusReasons.data('prev', elements.statusReasons.val());
                elements.statusReasons.val('');
            }
            else{
                elements.statusReasons.val(elements.statusReasons.data('prev'));
            }
        });

        elements.statusOptionsFilter.change(function(e){
            populateReasonOptions(elements.statusOptionsFilter.val(), elements.statusReasonsFilter);
        });

        elements.filterButton.click(filterResources);

        elements.clearFilterButton.click(function (e)
        {
            e.preventDefault();
            elements.filterTable.find('input,select,textarea').val('')

            filterResources();
        });

        elements.bulkUpdatePromptButton.click(function(e){
            e.preventDefault();

            var items = [];
            elements.bulkUpdateList.empty();
            $.each(resources, function (i, r) {
                items.push('<li><label><input type="checkbox" name="resourceId[]" checked="checked" value="' + r.id + '" /> ' + r.name + '</li>');
            });
            $('<ul/>', {'class': 'no-style', html: items.join('')}).appendTo(elements.bulkUpdateList);

            wireUpIntervalToggle(elements.bulkUpdateDialog);

            $.colorbox({inline:true,
                href:"#bulkUpdateDialog",
                transition: "none",
                width: "100%",
                height: "100%"});
            elements.bulkUpdateDialog.show();
        });

        var imageSaveErrorHandler = function (result) {
            alert(result);
        };

        var combineIntervals = function (jqForm, opts) {
            $(jqForm).find('.interval').each(function (i, v) {
                var id = $(v).attr('id');
                var d = $('#' + id + 'Days').val();
                var h = $('#' + id + 'Hours').val();
                var m = $('#' + id + 'Minutes').val();
                $(v).val(d + 'd' + h + 'h' + m + 'm');
                console.log($(v).val());
            });
        };

        var attributesHandler = function(responseText, form)
        {
            if (responseText.ErrorIds && responseText.Messages.attributeValidator)
            {
                var messages =  responseText.Messages.attributeValidator.join('</li><li>');
                messages = '<li>' + messages + '</li>';
                var validationSummary = $(form).find('.validationSummary');
                validationSummary.find('ul').empty().append(messages);
                validationSummary.show();
            }
        };

        var errorHandler = function (result) {
            $("#globalError").html(result).show();
        };

        var bulkUpdateErrorHandler = function (result) {
            $("#bulkUpdateErrors").html(result).show();
        };

        ConfigureAdminForm(elements.imageForm, defaultSubmitCallback(elements.imageForm), null, imageSaveErrorHandler);
        ConfigureAdminForm(elements.renameForm, defaultSubmitCallback(elements.renameForm), null, errorHandler);
        ConfigureAdminForm(elements.scheduleForm, defaultSubmitCallback(elements.scheduleForm));
        ConfigureAdminForm(elements.locationForm, defaultSubmitCallback(elements.locationForm));
        ConfigureAdminForm(elements.descriptionForm, defaultSubmitCallback(elements.descriptionForm));
        ConfigureAdminForm(elements.notesForm, defaultSubmitCallback(elements.notesForm));
        ConfigureAdminForm(elements.addForm, defaultSubmitCallback(elements.addForm), null, handleAddError);
        ConfigureAdminForm(elements.deleteForm, defaultSubmitCallback(elements.deleteForm));
        ConfigureAdminForm(elements.configurationForm, defaultSubmitCallback(elements.configurationForm), null, errorHandler, {onBeforeSerialize:combineIntervals});
        ConfigureAdminForm(elements.groupAdminForm, defaultSubmitCallback(elements.groupAdminForm));
        ConfigureAdminForm(elements.resourceTypeForm, defaultSubmitCallback(elements.resourceTypeForm));
        ConfigureAdminForm(elements.bulkUpdateForm, defaultSubmitCallback(elements.bulkUpdateForm), null, bulkUpdateErrorHandler, {onBeforeSerialize:combineIntervals});

        $.each(elements.attributeForm, function(i,form){
            ConfigureAdminForm($(form), defaultSubmitCallback($(form)), null, attributesHandler, {validationSummary:null});
        });

        ConfigureAdminForm(elements.sortOrderForm, defaultSubmitCallback(elements.sortOrderForm));
        ConfigureAdminForm(elements.statusForm, defaultSubmitCallback(elements.statusForm));
    };

    ResourceManagement.prototype.add = function (resource) {
        resources[resource.id] = resource;
    };

    ResourceManagement.prototype.addStatusReason = function (id, statusId, description) {
        if (!(statusId in reasons))
        {
            reasons[statusId] = [];
        }

        reasons[statusId].push({id:id,description:description});
    };

    ResourceManagement.prototype.initializeStatusFilter = function (statusId, reasonId)    {
        elements.statusOptionsFilter.val(statusId);
        elements.statusOptionsFilter.trigger('change');
        elements.statusReasonsFilter.val(reasonId);
    };

    var getSubmitCallback = function (action) {
        return function () {
            return options.submitUrl + "?rid=" + getActiveResourceId() + "&action=" + action;
        };
    };

    var defaultSubmitCallback = function (form) {
        return function () {
            return options.submitUrl + "?action=" + form.attr('ajaxAction') + '&rid=' + getActiveResourceId();
        };
    };

    var setActiveResourceId = function (scheduleId) {
        elements.activeId.val(scheduleId);
    };

    var getActiveResourceId = function () {
        return elements.activeId.val();
    };

    var getActiveResource = function () {
        return resources[getActiveResourceId()];
    };

    var showChangeImage = function (e) {
        elements.imageDialog.dialog("open");
    };

    var showRename = function (e) {
        $('#editName').val(getActiveResource().name);
        elements.renameDialog.dialog("open");
    };

    var showScheduleMove = function (e) {
        $('#editSchedule').val(getActiveResource().scheduleId);
        elements.scheduleDialog.dialog("open");
    };

    var showResourceType = function (e) {
        $('#editResourceType').val(getActiveResource().resourceTypeId);
        elements.resourceTypeDialog.dialog("open");
    };

    var showChangeLocation = function (e) {
        $('#editLocation').val(getActiveResource().location);
        $('#editContact').val(getActiveResource().contact);
        elements.locationDialog.dialog("open");
    };

    var showChangeDescription = function (e) {
        $('#editDescription').val(HtmlDecode(getActiveResource().description));
        elements.descriptionDialog.dialog("open");
    };

    var showChangeNotes = function (e) {
        $('#editNotes').val(HtmlDecode(getActiveResource().notes));
        elements.notesDialog.dialog("open");
    };

    var showResourceAdmin = function (e) {
        $('#adminGroupId').val(getActiveResource().adminGroupId);
        elements.groupAdminDialog.dialog("open");
    };

    var showDeletePrompt = function (e) {
        elements.deleteDialog.dialog("open");
    };

    var showConfigurationPrompt = function (e) {

        wireUpIntervalToggle(elements.configurationDialog);

        var resource = getActiveResource();

        setDaysHoursMinutes('#minDuration', resource.minLength, $('#noMinimumDuration'));
        setDaysHoursMinutes('#maxDuration', resource.maxLength, $('#noMaximumDuration'));
        setDaysHoursMinutes('#startNotice', resource.startNotice, $('#noStartNotice'));
        setDaysHoursMinutes('#endNotice', resource.endNotice, $('#noEndNotice'));
        setDaysHoursMinutes('#bufferTime', resource.bufferTime, $('#noBufferTime'));
        showHideConfiguration(resource.maxParticipants, $('#maxCapacity'), $('#unlimitedCapacity'));

        $('#allowMultiday').val(resource.allowMultiday);
        $('#requiresApproval').val(resource.requiresApproval);
        $('#autoAssign').val(resource.autoAssign);

        elements.configurationDialog.dialog("open");
    };

    var showSortPrompt = function (e) {
        $('#editSortOrder').val(getActiveResource().sortOrder);
        elements.sortOrderDialog.dialog("open");
    };

    var showStatusPrompt = function (e) {
        var resource = getActiveResource();
        elements.statusOptions.val(resource.statusId);

        populateReasonOptions(elements.statusOptions, elements.statusReasons);

        elements.statusReasons.val(resource.reasonId);

        elements.statusDialog.dialog("open");
    };

    function populateReasonOptions(statusId, reasonsElement){
        reasonsElement.empty().append($('<option>', {value:'', text:'-'}));

        if (statusId in reasons)
        {
            $.each(reasons[statusId], function(i, v){
                reasonsElement.append($('<option>', {
                        value: v.id,
                        text : v.description
                    }));
            });
        }
    }

    function setDaysHoursMinutes(elementPrefix, interval, attributeCheckbox) {
        $(elementPrefix + 'Days').val(interval.days);
        $(elementPrefix + 'Hours').val(interval.hours);
        $(elementPrefix + 'Minutes').val(interval.minutes);
        showHideConfiguration(interval.value, $(elementPrefix), attributeCheckbox);
    }

    function showHideConfiguration(attributeValue, attributeDisplayElement, attributeCheckbox) {
        attributeDisplayElement.val(attributeValue);
        var id = attributeCheckbox.attr('id');
        var span = elements.configurationDialog.find('.' + id);

        if (attributeValue == '' || attributeValue == undefined) {
            attributeCheckbox.prop('checked', true);
            span.hide();
        }
        else {
            attributeCheckbox.prop('checked', false);
            span.show();
        }
    }

    function wireUpIntervalToggle(container) {
        container.find(':checkbox').change(function ()
        {
            var id = $(this).attr('id');
            var span = container.find('.' + id);

            if ($(this).is(":checked"))
            {
                span.find(":text").val('');
                span.hide();
            }
            else
            {
                span.show();
            }
        });
    }

    function filterResources() {
        window.location = document.location.pathname + '?' + $('#filterForm').serialize();
    }

    var handleAddError = function (result) {
        $('#addResourceResults').text(result).show();
    };
}

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL