File: WIAdmin/WICore/WIJ/WIUsers.js

Recommend this page to a friend!
  Classes of Jules Warner  >  WICMS  >  WIAdmin/WICore/WIJ/WIUsers.js  >  Download  
File: WIAdmin/WICore/WIJ/WIUsers.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: WICMS
Database driven content management system with PDO
Author: By
Last change: WI CMS

I am in process of building up my own cms system, its not quiet complete
yet.
There are multiple PDO classes, database driven, in process of making an
installer package for it.
The back end is being built UI with drag and drop, for a simple set up
Date: 3 years ago
Size: 11,795 bytes
 

 

Contents

Class file image Download
/** USERS NAMESPACE
 ======================================== */

var users = {};

users.addEditData = {
    username      : $("#adduser-username"),
    email         : $("#adduser-email"),
    firstName     : $("#adduser-first_name"),
    lastName      : $("#adduser-last_name"),
    address       : $("#adduser-address"),
    phone         : $("#adduser-phone"),
    password      : $("#adduser-password"),
    conf_password : $("#adduser-confirm_password"),
    button        : $("#btn-add-user")
};

users.displayInfo = function (userId) {
jQuery.noConflict();

    var username    = $("#modal-username"),
        email       = $("#modal-email"),
        firstName   = $("#modal-first-name"),
        lastName    = $("#modal-last-name"),
        address     = $("#modal-address"),
        phone       = $("#modal-phone"),
        last_login  = $("#modal-last-login"),
        ajaxLoading = $("#ajax-loading"),
        detailsBody = $("#details-body"),
        modal       = $("#modal-user-details");

   //display modal
   //modal.modal('show');
   $("#modal-user-details").removeClass('hide');
 $("#modal-user-details").addClass('show');


   // set username (title of modal window) to loading...
   username.text($_lang.loading);
   
   //display ajax loading gif
   ajaxLoading.show();
   
   //hide details body
   detailsBody.hide();
   
   $.ajax({
       url: "WICore/WIClass/WIAjax.php",
       type: "POST",
       data: {
           action: "getUserDetails",
           userId: userId
       },
       success: function (result) {
           //parse result as JSON
           var res = JSON.parse(result);
           //console.log(res);
           //update modal fields
           username .text(res.username);
           email    .text(res.email);
           firstName.text(res.first_name);
           lastName .text(res.last_name);
           address  .text(res.address);
           phone    .text(res.phone);
           last_login.text(res.last_login);

           //hide ajax loading
           ajaxLoading.hide();
           
           //display user info
           detailsBody.show();
       }
   });
   


};


/**
 * Deletes an user.
 * @param {object} element Clicked DOM element.
 * @param {int} userId Id of user that will be deleted.
 */
users.deleteUser = function (element, userId) {
        //get whole user row that will be deleted
    var userRow = $(element).parents(".user-row");
        
        //ask admin to confirm that he want to delete this user
    var c = confirm($_lang.are_you_sure);
    if(c) {
                //confimed
                
                //send data to server
        $.ajax({
            type: "POST",
            url: "WICore/WIClass/WIAjax.php",
            data: {
                action: "deleteUser",
                userId: userId
            },
            success: function (result) {
                  console.log(result);
                                
          //remove user row from table
                userRow.fadeOut(600, function () {
                     $(this).remove();
                });
            }
        });
    }
};


/**
 * Changes user's role.
 * @param {Object} Clicked DOM element.
 * @param {int} userId User ID.
 */
users.changeRole = function (element, role, userId) {
  //send data to server
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            action: "changeRole",
            userId: userId,
            role  : role
        },
        success: function (newRole) {
            //change button text
            element.text(newRole);
        }
    });
};


users.roleChanger = function (element, userId) {
    jQuery.noConflict();
   /* $("#modal-change-role").modal({
        keyboard: false,
        backdrop: "static",
        show: true
    });
    */
       $("#modal-change-role").removeClass('hide');
 $("#modal-change-role").addClass('show');

   //find elements needed for changing text
    var userRoleSpan = $(element).parents(".btn-group").find(".user-role");

    $("#change-role-button").unbind().bind('click', function () {
        var newRole = $("#select-user-role").val();
        users.changeRole(userRoleSpan, newRole, userId);
    });
};


users.showAddUserModal = function () {
    jQuery.noConflict();
    $("#modal-add-edit-user").modal({
        keyboard: false,
        backdrop: "static",
        show: true
    });

    $("#modal-username").text($_lang.add_user);
    WICore.removeErrorMessages();

    $("#add-user-form input[type='text'], #add-user-form input[type='password']").each(function () {
        $(this).val('');
    });

    users.addEditData.button.attr('onclick', 'users.addUser();');
};


users.addUser = function (editMode) {
    var data  = users.addEditData;
    var modal = $("#modal-add-edit-user");
    var btn   = $("#btn-add-user");

    if ( editMode )
        var forUpdate = true;
    else
        var forUpdate = false;

    if ( users._validateUser(data, forUpdate) ) {

        var action = "addUser";
        var userId = 0;

        if ( editMode === true ) {
            action = "updateUser";
            userId = $("#adduser-userId").val();
        }

        //create data object that will be sent to server
        var forServer = { 
            action : action,
            userId : userId,
            userData: {
                email      : data.email.val(),
                phone      : data.phone.val(),
                address    : data.address.val(),
                username   : data.username.val(),
                password   : CryptoJS.SHA512(data.password.val()).toString(),
                last_name  : data.lastName.val(),
                first_name : data.firstName.val(),
                confirm_password: CryptoJS.SHA512(data.conf_password.val()).toString()
            },
            fieldId: {
                email      : "adduser-email",
                username   : "adduser-username",
                password   : "adduser-password",
                address    : "adduser-address",
                phone      : "adduser-phone",
                last_name  : "adduser-last_name",
                first_name : "adduser-first_name",
                confirm_password: "adduser-confirm_password",
            }
        };

        //put button to loading state
        WICore.loadingButton(btn, $_lang.working);

        $.ajax({
            type: "POST",
            url: "WICore/WIClass/WIAjax.php",
            data: forServer,
            success: function ( result ) {
                //return button to normal state
                WICore.removeLoadingButton(btn);
                
                //parse result to JSON
                var res = JSON.parse(result);

                if(res.status === "error") {
                    //error
                    
                    //display all errors
                    for(var i=0; i<res.errors.length; i++) {
                        var error = res.errors[i];
                        WICore.displayErrorMessage($("#"+error.id), error.msg);
                    }
                }
                else {
                   location.reload();
                }
            }
        });
    }
};

users.updateUser = function () {
    users.addUser(true);
};

users.editUser = function (userId) {
    $("#adduser-userId").val(userId);

    var modal = $("#modal-add-edit-user"),
        data  = users.addEditData,
        modalTitle = modal.find(".modal-title"),
        modalBody  = modal.find(".modal-body"),
        ajaxLoading = modal.find(".ajax-loading");

    data.button.attr('onclick', 'users.updateUser();');

    WICore.removeErrorMessages();
    
    modal.modal('show');
    modalTitle.text($_lang.loading);
    modalBody.hide();
    ajaxLoading.show();

    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: { action : "getUser", userId : user_Id },
        success : function (result) {
            //parse result to JSON
            var res = JSON.parse(result);

            data.email.val( res.email );
            data.username.val( res.username );
            data.firstName.val( res.first_name );
            data.lastName.val( res.last_name );
            data.address.val( res.address );
            data.phone.val( res.phone );

            data.password.attr('placeholder', $_lang.leave_blank);
            data.conf_password.attr('placeholder', $_lang.leave_blank);

            data.button.text($_lang.update);

            ajaxLoading.hide();
            modalTitle.text( res.username );
            modalBody.show();
        }
    });
};

users.banUser = function (el, userid) {
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            userId : userid,
            action : "banUser"
        },
        success: function ( result ) {
            var buttons = $(el).parents('.btn-group').find(".btn-primary");
            buttons.each(function () {
                $(this).removeClass("btn-primary").addClass("btn-danger");
            });
            $(el).find('span').text($_lang.unban);
            $(el).attr('onclick', 'users.unbanUser(this,'+userid+');');
        }
    });
};

users.unbanUser = function (el, userid) {
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            userId : userid,
            action : "unbanUser"
        },
        success: function ( result ) {
            var buttons = $(el).parents('.btn-group').find(".btn-danger");
            buttons.each(function () {
                $(this).removeClass("btn-danger").addClass("btn-primary");
            });
            $(el).find('span').text($_lang.ban);
            $(el).attr('onclick', 'users.banUser(this,'+userid+');');
        }
    });
};


users._validateUser = function (data, forUpdate) {
    var valid = true;

    //remove previous error messages
    WICore.removeErrorMessages();

    // validate username
    if ( $.trim( data.username.val() ) == "" ) {
        valid = false;
        WICore.displayErrorMessage( data.username, $_lang.field_required );
    }

    // validate email
    if ( $.trim( data.email.val() ) == "" ) {
        valid = false;
        WICore.displayErrorMessage( data.email, $_lang.field_required );
    }
    else if ( ! WICore.validateEmail( data.email.val() ) ) {
        valid = false;
        WICore.displayErrorMessage( data.email, $_lang.email_wrong_format );
    }

    // validate passwords

    if ( forUpdate === true )
    {
        if ( data.password.val().length > 0 && data.password.val().length < 6 ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.password_length );
        }

        if ( data.password.val() != data.conf_password.val() ) {
            valid = false;
            WICore.displayErrorMessage( data.password );
            WICore.displayErrorMessage( data.conf_password, $_lang.passwords_dont_match );
        }
    }
    else
    {
        if ( $.trim( data.password.val() ) == "" ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.field_required );
        }
        else if ( data.password.val().length < 6 ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.password_length );
        }

        if ( $.trim( data.conf_password.val() ) == "" ) {
            valid = false;
            WICore.displayErrorMessage( data.conf_password, $_lang.field_required );
        }

        if ( data.password.val() != data.conf_password.val() ) {
            valid = false;
            WICore.displayErrorMessage( data.password );
            WICore.displayErrorMessage( data.conf_password, $_lang.passwords_dont_match );
        }
    }

    return valid;
};

For more information send a message to info at phpclasses dot org.