editUserDialog: function()

in enginframe/hydrogen.manage-users.js [430:583]


    editUserDialog: function (dialogTitle, buttonLabel, isEdit, actor, oldUserName, oldRealName, oldIsAdmin, isEFAdmin, oldGroups, actionfunc) {
        var dialog, button, dialogButtons, warningBox;
        var userNameEntry, passwordEntry, re_passwordEntry, realNameEntry, isAdminLabel, isAdminEntry, filteredGroups, groupsInputId, groupsEntry;

        dialog = jQuery('<div class="ef-manage-user-dialog hy-simple-input-dialog"/>').appendTo(jQuery('body'));
        jQuery('<div class="ef-manage-user-dialog-message" style="display:none;" />').appendTo(dialog);

        if (!isEdit) {
            jQuery('<label for="user-name" style="display:block">User Name:</label>').appendTo(dialog);
            userNameEntry = jQuery('<input type="text" name="user-name" id="user-name"/>').appendTo(dialog);
            jQuery('<label for="password" style="display:block">Password:</label>').appendTo(dialog);
            passwordEntry = jQuery('<input type="password" name="password" id="password"/>').appendTo(dialog);
            jQuery('<label for="re_password" style="display:block">Re-Password:</label>').appendTo(dialog);
            re_passwordEntry = jQuery('<input type="password" name="re_password" id="re_password"/>').appendTo(dialog);
        }

        jQuery('<label for="real-name" style="display:block">Real Name:</label>').appendTo(dialog);
        realNameEntry = jQuery('<input type="text" name="real-name" id="real-name"/>').appendTo(dialog);
        if (isEdit) {
            realNameEntry.val(oldRealName);
        }

        isAdminLabel = jQuery('<label for="is-admin" style="display:block">Administrator:</label>').appendTo(dialog);
        isAdminEntry = jQuery('<input type="checkbox" name="is-admin" id="is-admin" value="admin"/>').appendTo(isAdminLabel);

        filteredGroups = oldGroups;
        if (isEdit && oldIsAdmin === "true") {
            isAdminEntry.prop('checked', true);
            filteredGroups = oldGroups.split(',').filter(function (currentValue) {
                // admin group is managed by the checkbox
                return currentValue != "admin";
            }).join();
        }

        if (isEdit && ((actor && actor === oldUserName) || isEFAdmin === "true")) {
            isAdminEntry.prop('disabled', true);
        }

        groupsInputId = 'groups_' + Math.floor(Math.random() * 1000) + 1;
        jQuery('<label for="' + groupsInputId + '" style="display:block">Groups:</label>').appendTo(dialog);
        groupsEntry = jQuery('<input type="text" name="groups" id="' + groupsInputId + '"/>').appendTo(dialog);
        if (isEdit) {
            groupsEntry.val(filteredGroups);
        }

        manageUsers.tagIt("#" + groupsInputId, "groups", "", false, '//com.enginframe.user-group-manager/list.groups');

        warningBox = jQuery('<div class="ui-state-error ui-corner-all ef-ugm-reserved-group ui-helper-hidden">' +
                '<table width="100%"><tbody><tr><td><span class="ui-icon ui-icon-alert"/></td><td width="99%"><span class="msgErr"/></td></tr></tbody></table>' +
            '</div>').appendTo(dialog);

        jQuery("#" + groupsInputId).tagit({
            beforeTagAdded: function (event, ui) {
                if (ui.tagLabel === "admin" || ui.tagLabel === "all-users") {
                    jQuery(".ef-ugm-reserved-group span.msgErr").text("Group " + ui.tagLabel + " is reserved!");
                    jQuery(".ef-ugm-reserved-group").removeClass("ui-helper-hidden");
                    return false;
                }
                else if (!(new RegExp('^[\\w.-]+$')).test(ui.tagLabel)) {
                    jQuery(".ef-ugm-reserved-group span.msgErr").text("Invalid character for group name!");
                    jQuery(".ef-ugm-reserved-group").removeClass("ui-helper-hidden");
                    return false;
                }
                else {
                    jQuery(".ef-ugm-reserved-group").addClass("ui-helper-hidden");
                }
            }
        });

        dialogButtons = {
            Cancel: function () {
                jQuery(this).dialog("close");
            }
        };
        dialogButtons[buttonLabel] = function () {
            var userName, password, re_password, realName, groups, sdf, namespace;

            if (!isEdit) {
                userName = userNameEntry.val();
                password = passwordEntry.val();
                re_password = re_passwordEntry.val();
                if (userName.length <= 0) {
                    jQuery('.ef-manage-user-dialog-message').hymessage().hymessage('alert', "User Name cannot be empty");
                    return false;
                }
                if (!/^[_a-zA-Z0-9][_a-zA-Z0-9.@\-]*$/.test(userName)) {
                    jQuery('.ef-manage-user-dialog-message').hymessage().hymessage('alert', "Invalid User Name: Allowed characters are letters, digits or one of _ . - @");
                    return false;
                }
                if (password != re_password) {
                    jQuery('.ef-manage-user-dialog-message').hymessage().hymessage('alert', "You entered two different password.");
                    return false;
                }
                
                

                
            }
            else {
                userName = oldUserName;
            }
            realName = realNameEntry.val();
            groups = groupsEntry.val();

            jQuery(this).dialog("close");

            // add group admin if checkbox Administrator is checked
            if (jQuery(isAdminEntry).is(':checked')) {
                if (groups) {
                    groups += ",admin";
                }
                else {
                    groups += "admin";
                }
            }
            actionfunc(userName, password, re_password, realName, groups);
        };

        dialog.dialog({
            title: dialogTitle,
            resizable: false,
            buttons: dialogButtons,
            modal: true
        });

        button = jQuery('button:contains(' + buttonLabel + ')', dialog.parent('div.ui-dialog'));
        button.addClass('ui-priority-primary');

        if (!isEdit) {
            userNameEntry.keypress(function (e) {
                if (e.which === 13) {
                    button.click();
                    return false;
                }
                return true;
            });
        }

        realNameEntry.keypress(function (e) {
            if (e.which === 13) {
                button.click();
                return false;
            }
            return true;
        });

        groupsEntry.keypress(function (e) {
            if (e.which === 13) {
                button.click();
                return false;
            }
            return true;
        });
    },