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

    var elements = {
        activeId: $('#activeId'),
        groupList: $('table.list'),

        autocompleteSearch: $('#groupSearch'),
        userSearch: $('#userSearch'),

        groupUserList: $('#groupUserList'),
        membersDialog: $('#membersDialog'),
        permissionsDialog: $('#permissionsDialog'),
        deleteDialog: $('#deleteDialog'),
        renameDialog: $('#renameDialog'),
        browseUserDialog: $('#allUsers'),
        rolesDialog: $('#rolesDialog'),
        groupAdminDialog: $('#groupAdminDialog'),

        permissionsForm: $('#permissionsForm'),
        addUserForm: $('#addUserForm'),
        removeUserForm: $('#removeUserForm'),
        renameGroupForm: $('#renameGroupForm'),
        deleteGroupForm: $('#deleteGroupForm'),
        rolesForm: $('#rolesForm'),
        groupAdminForm: $('#groupAdminForm'),

        addForm: $('#addGroupForm')
    };

    var allUserList = null;

    GroupManagement.prototype.init = function() {

        ConfigureAdminDialog(elements.membersDialog, 420, 500);
        ConfigureAdminDialog(elements.permissionsDialog, 400, 300);
        ConfigureAdminDialog(elements.deleteDialog,  400, 300);
        ConfigureAdminDialog(elements.renameDialog, 500, 100);
        ConfigureAdminDialog(elements.browseUserDialog, 500, 100);
        ConfigureAdminDialog(elements.rolesDialog, 500, 300);
        ConfigureAdminDialog(elements.groupAdminDialog, 500, 100);

        elements.groupList.delegate('a.update', 'click', function(e) {
            setActiveId($(this));
            e.preventDefault();
        });

        elements.groupList.delegate('.rename', 'click', function() {
            renameGroup();
        });

        elements.groupList.delegate('.permissions', 'click', function() {
            changePermissions();
        });

        elements.groupList.delegate('.members', 'click', function() {
            changeMembers();
        });

        elements.groupList.delegate('.delete', 'click', function() {
            deleteGroup();
        });

        elements.groupList.delegate('.roles', 'click', function() {
            changeRoles();
        });

        elements.browseUserDialog.delegate('.add', 'click', function() {
            var link = $(this);
            var userId = link.siblings('.id').val();

            addUserToGroup(userId);

            link.find('img').attr('src', '../img/tick-white.png');
        });

        elements.groupUserList.delegate('.delete', 'click', function() {
            var userId = $(this).siblings('.id').val();
            removeUserFromGroup($(this), userId);
        });

        elements.autocompleteSearch.autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: options.groupAutocompleteUrl,
                    dataType: "json",
                    data: {
                        term: request.term
                    },
                    success: function(data) {
                        response($.map(data, function(item) {
                            return {
                                label: item.Name,
                                value: item.Id
                            }
                        }));
                    }
                });
            },
            focus: function(event, ui) {
                elements.autocompleteSearch.val(ui.item.label);
                return false;
            },
            select: function(event, ui) {
                elements.autocompleteSearch.val(ui.item.label);
                window.location.href = options.selectGroupUrl + ui.item.value
                return false;
            }
        });

        elements.userSearch.userAutoComplete(options.userAutocompleteUrl, function(ui) {
            addUserToGroup(ui.item.value);
            elements.userSearch.val('');
        });

        elements.groupList.delegate('.groupAdmin', 'click', function() {
            changeGroupAdmin();
        });

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

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

        var hidePermissionsDialog = function() {
            elements.permissionsDialog.dialog('close');
        };

        var error = function(errorText) {
            alert(errorText);
        };

        $("#browseUsers").click(function() {
            showAllUsersToAdd();
        });

        ConfigureAdminForm(elements.addUserForm, getSubmitCallback(options.actions.addUser), changeMembers, error);
        ConfigureAdminForm(elements.removeUserForm, getSubmitCallback(options.actions.removeUser), changeMembers, error);
        ConfigureAdminForm(elements.permissionsForm, getSubmitCallback(options.actions.permissions), hidePermissionsDialog, error);
        ConfigureAdminForm(elements.renameGroupForm, getSubmitCallback(options.actions.renameGroup), null, error);
        ConfigureAdminForm(elements.deleteGroupForm, getSubmitCallback(options.actions.deleteGroup), null, error);
        ConfigureAdminForm(elements.addForm, getSubmitCallback(options.actions.addGroup), null, error);
        ConfigureAdminForm(elements.rolesForm, getSubmitCallback(options.actions.roles), null, error);
        ConfigureAdminForm(elements.groupAdminForm, getSubmitCallback(options.actions.groupAdmin), null, error);
    };

    var showAllUsersToAdd = function() {
        elements.browseUserDialog.empty();

        if (allUserList == null) {
            $.ajax({
                url: options.userAutocompleteUrl,
                dataType: 'json',
                async: false,
                success: function(data) {
                    allUserList = data;
                }
            });
        }

        var items = [];
        if (allUserList != null)
        {
            $.map(allUserList, function(item) {
                if (elements.groupUserList.data('userIds')[item.Id] == undefined) {
                    items.push('<li><a href="#" class="add"><img src="../img/plus-button.png" alt="Add To Group" /></a> ' + item.DisplayName + '<input type="hidden" class="id" value="' + item.Id + '"/></li></li>');
                }
                else {
                    items.push('<li><img src="../img/tick-white.png" alt="Group Member" /> <span>' + item.DisplayName + '</span></li>');
                }
            });
        }

        $('<ul/>', {'class': '', html: items.join('')}).appendTo(elements.browseUserDialog);

        elements.browseUserDialog.dialog('open');
    };

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

    function setActiveId(activeElement) {
        var id = activeElement.parents('td').siblings('td.id').find(':hidden').val();
        elements.activeId.val(id);
    }

    function getActiveId() {
        return elements.activeId.val();
    }

    var renameGroup = function() {
        elements.renameDialog.dialog('open');
    };

    var changeMembers = function() {
        var groupId = getActiveId();
        $.getJSON(opts.groupsUrl + '?dr=groupMembers', {gid: groupId}, function(data) {
            var items = [];
            var userIds = [];

            $('#totalUsers').text(data.Total);
            if (data.Users != null)
            {
                $.map(data.Users, function(item) {
                    items.push('<li><a href="#" class="delete"><img src="../img/cross-button.png" /></a> ' + item.DisplayName + '<input type="hidden" class="id" value="' + item.Id + '"/></li>');
                    userIds[item.Id] = item.Id;
                });
            }

            elements.groupUserList.empty();
            elements.groupUserList.data('userIds', userIds);

            $('<ul/>', {'class': '', html: items.join('')}).appendTo(elements.groupUserList);
            elements.membersDialog.dialog('open');
        });
    };

    var addUserToGroup = function(userId) {
        $('#addUserId').val(userId);
        elements.addUserForm.submit();
    };

    var removeUserFromGroup = function(element, userId) {
        $('#removeUserId').val(userId);
        elements.removeUserForm.submit();
    };

    var changePermissions = function () {
        var groupId = getActiveId();

        var data = {dr: opts.dataRequests.permissions, gid: groupId};
        $.get(opts.permissionsUrl, data, function(resourceIds) {
            elements.permissionsForm.find(':checkbox').attr('checked', false);
            $.each(resourceIds, function(index, value) {
                elements.permissionsForm.find(':checkbox[value="' + value + '"]').attr('checked', true);
            });

            elements.permissionsDialog.dialog('open');
        });
    };

    var deleteGroup = function() {
        elements.deleteDialog.dialog('open');
    };

    var changeRoles = function() {
        var groupId = getActiveId();

        var data = {dr: opts.dataRequests.roles, gid: groupId};
        $.get(opts.rolesUrl, data, function(roleIds) {
            elements.rolesForm.find(':checkbox').attr('checked', false);
            $.each(roleIds, function(index, value) {
                elements.rolesForm.find(':checkbox[value="' + value + '"]').attr('checked', true);
            });

            elements.rolesDialog.dialog('open');
        });
    };

    var changeGroupAdmin = function() {
        var groupId = getActiveId();

        elements.groupAdminForm.find('select').val('');
        
        elements.groupAdminDialog.dialog('open');
    };
}

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

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL