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-groups.js
Edit
function ResourceGroupManagement(opts)
{
    var options = opts;

    var elements = {
        groupDiv: $('#group-tree'),
        deleteResource: $('.remove-resource'),

        addGroupButton: $('#btnAddGroup'),
        addGroupForm: $('#addGroupForm'),

        activeId: $('#activeId'),

        renameForm: $('#renameForm'),
        renameDialog: $('#renameDialog'),
        newName: $('#editName'),

        deleteForm: $('#deleteForm'),
        deleteDialog: $('#deleteDialog'),

        addChildForm: $('#addChildForm'),
        addChildDialog: $('#addChildDialog')
    };

    ResourceGroupManagement.prototype.init = function (groups)
    {
        ConfigureAdminDialog(elements.renameDialog, 300, 135);
        ConfigureAdminDialog(elements.deleteDialog, 300, 200);
        ConfigureAdminDialog(elements.addChildDialog, 300, 135);

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

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

        $(".new-group").watermark(opts.newGroupText);

        wireUpTree(groups);
        wireUpContextMenu();

        ConfigureAdminForm(elements.addGroupForm, defaultSubmitCallback(elements.addGroupForm), onGroupAdded, null, {onBeforeSubmit: onBeforeAddGroup});
        ConfigureAdminForm(elements.renameForm, defaultSubmitCallback(elements.renameForm), hideDialogs, null, {onBeforeSubmit: onBeforeRename});
        ConfigureAdminForm(elements.deleteForm, defaultSubmitCallback(elements.deleteForm), hideDialogs, null, {onBeforeSubmit: onBeforeDelete});
        ConfigureAdminForm(elements.addChildForm, defaultSubmitCallback(elements.addChildForm), onChildGroupAdded, null, {onBeforeSubmit: onBeforeAddGroup});
    };

    function wireUpTree(groups)
    {
        elements.groupDiv.tree({
            data: groups,
            saveState: false,
            dragAndDrop: true,
            selectable: false,
            autoOpen: true,

            onCreateLi: function (node, $li)
            {
                $li.attr('node-id', node.id);

                if (node.type == 'resource')
                {
                    $li.addClass('group-resource');
                    $li.find('.jqtree-title').after('<div class="remove-resource" node-id="' + node.id + '">&nbsp;</div>');
                }
                else
                {
                    $li.find('.jqtree-element').droppable({
                        drop: function (event, ui)
                        {
                            $(this).removeClass("drop-resource");
                            addResource(node, ui.draggable);
                        },
                        over: function (event, ui)
                        {
                            $(this).addClass("drop-resource");
                        },
                        out: function (event, ui)
                        {
                            $(this).removeClass("drop-resource");
                        }
                    });
                }
            },

            onCanMove: function (node)
            {
                return !node.resource_id
            },

            onCanMoveTo: function (moved_node, target_node, position)
            {
                if (moved_node.resource_id)
                {
                    return canAddResource(target_node, moved_node.resource_id);
                }

                return true;
            }
        });

        elements.groupDiv.bind(
                'tree.move',
                function (event)
                {
                    moveNode(event.move_info.moved_node, event.move_info.target_node, event.move_info.previous_parent, event.move_info.position);
                });

        elements.groupDiv.delegate('.remove-resource', 'click', function (e)
        {
            var nodeId = $(this).attr('node-id');
            var resourceNode = elements.groupDiv.tree('getNodeById', nodeId);
            removeResource(resourceNode);
        });

        $('.resource-draggable').draggable({ revert: true });

        elements.addGroupButton.click(function (e)
        {
            e.preventDefault();
            elements.addGroupForm.submit();
        });
    }

    function wireUpContextMenu()
    {
        function getNode(options)
        {
            var id = options.$trigger.parent().attr("node-id");
            return elements.groupDiv.tree('getNodeById', id);
        }

        elements.groupDiv.contextMenu({
                    selector: '.ui-droppable',
                    callback: function (key, options){},
                    items: {
                        "rename": {name: options.renameText, icon: "edit", callback: function (key, options)
                        {
                            var node = getNode(options);
                            showRename(node);
                        }},
                        "delete": {name: options.deleteText, icon: "delete", callback: function (key, options)
                        {
                            var node = getNode(options);
                            showDelete(node);
                        }},
                        "addChild": {name: options.addChildText, icon: "add", callback: function (key, options)
                        {
                            var node = getNode(options);
                            showAddChild(node);
                        }},
                        "sep1": "---------",
                        "quit": {name: options.exitText, icon: "quit"}
                    }}
        );
    }

    function showRename(node)
    {
        elements.activeId.val(node.id);
        elements.renameDialog.dialog("open");

        elements.newName.val(node.name);
    }

    function showDelete(node)
    {
        elements.activeId.val(node.id);
        elements.deleteDialog.dialog("open");
    }

    function showAddChild(node)
    {
        elements.activeId.val(node.id);
        $('#groupParentId').val(node.id);
        $('#childName').val('');
        elements.addChildDialog.dialog("open");
    }

    function onBeforeRename(arr, $form, options)
    {
        var id = elements.activeId.val();
        var node = elements.groupDiv.tree('getNodeById', id);
        var newName = elements.newName.val();

        elements.groupDiv.tree('updateNode', node, newName);
    }

    function onBeforeDelete(arr, $form, options)
    {
        var id = elements.activeId.val();
        var node = elements.groupDiv.tree('getNodeById', id);

        elements.groupDiv.tree('removeNode', node);
    }

    function addResource(targetNode, resourceElement)
    {
        var resourceId = resourceElement.attr('resource-id');
        if (canAddResource(targetNode, resourceId))
        {
            PerformAsyncPost(getResourceActionUrl(targetNode.id, resourceId, opts.actions.addResource), {done: function (data)
            {
            }});

            elements.groupDiv.tree(
                    'appendNode',
                    {
                        label: resourceElement.attr('resource-name'),
                        id: resourceId,
                        resource_id: resourceId,
                        type: 'resource'
                    },
                    targetNode);
        }
    }

    function removeResource(resourceNode)
    {
        var resourceId = resourceNode.resource_id;
        PerformAsyncPost(getResourceActionUrl(resourceNode.group_id, resourceId, opts.actions.removeResource), {done: function (data)
        {
        }});

        elements.groupDiv.tree('removeNode', resourceNode);
    }

    function canAddResource(targetNode, resourceId)
    {
        var canAdd = true;
        $.each(targetNode.children, function (index, value)
        {
            if (value.resource_id && value.resource_id == resourceId)
            {
                canAdd = false;
            }
        });
        return canAdd;
    }

    function onGroupAdded(data)
    {
        var parentNode = null;

        data = JSON.parse(data);
        if (data.parent_id && data.parent_id != null && data.parent_id != '')
        {
            parentNode = elements.groupDiv.tree('getNodeById', data.parent_id);
        }
        elements.groupDiv.tree('appendNode', data, parentNode);
    }

    function onChildGroupAdded(data)
    {
        onGroupAdded(data);

        hideDialogs(data);
    }

    function onBeforeAddGroup(arr, $form, options)
    {
        var newGroup = $form.find('.new-group').first();
        var groupName = $.trim(newGroup.val());

        if (groupName != '')
        {
            $form.find('.new-group').val('');
            return true;
        }

        return false;
    }

    function hideDialogs(data)
    {
        $.each($('div.dialog'), function (index, element)
        {
            if ($(element).is(':visible'))
            {
                $(element).dialog('close');
            }
        });
    }

    function getMoveNodeUrl(targetNodeId, movedNodeId, previousId, type, action)
    {
        return options.submitUrl + "?gid=" + targetNodeId + "&nid=" + movedNodeId + "&type=" + type + "&pid=" + previousId + "&action=" + action;
    }

    function moveNode(movedNode, targetNode, previousNode, newPosition)
    {
        var movedId = movedNode.id;
        var targetNodeId = targetNode.id;
        if (movedNode.type == 'resource')
        {
            movedId = movedNode.resource_id;
        }
        if (newPosition == 'before')
        {
            targetNodeId = null;
        }
        if (newPosition == 'after')
        {
            targetNodeId = targetNode.parent.id;
        }
        var previousId = previousNode.id;
        PerformAsyncPost(getMoveNodeUrl(targetNodeId, movedId, previousId, movedNode.type, opts.actions.moveNode), {done: function (data)
        {
        }});
    }

    var getResourceActionUrl = function (targetGroupId, resourceId, action)
    {
        return options.submitUrl + "?gid=" + targetGroupId + "&rid=" + resourceId + "&action=" + action;
    };

    var defaultSubmitCallback = function (form)
    {
        return function ()
        {
            return options.submitUrl + "?action=" + form.attr('ajaxAction') + '&nid=' + elements.activeId.val();
        };
    };

    var handleAddError = function (result)
    {
    };
}

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

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL