/home/dvjjulio/softtrash/public/js/pages/users.js
/*
* Document : login.js
* Author : pixelcave
* Description: Custom javascript code used in Login page
*/
var _udto = null;
var _rdto = null;
var UsersDatatables = function () {
return {
init: function () {
/* Initialize Bootstrap Datatables Integration */
App.datatables();
/* Tabla de usuario */
_udto = $('#users-datatable').dataTable({
"iDisplayLength": 10,
"aLengthMenu": [[10, 20, 30], [10, 20, 30]],
"bProcessing": true,
"bServerSide": true,
"sAjaxSource" : base_path+"/cp/users/load",
"fnServerParams": function ( aoData ) {
aoData.push( { "name": "uid", "value": uid } );
},
"columns" : [
{ "data": "id" },
{ "data": "username" },
{ "data": "full_name" },
{ "data": "role" },
{ "data": null }
],
"aoColumnDefs": [
{ // id
"aTargets": [0],
"bSearchable": false,
"bSortable": true,
"sClass": "text-center"
},
{ // Usuario
"aTargets": [1],
"bSearchable": true,
"bSortable": true,
"mRender": function (data, type, full) {
return '<strong>'+full.username+'</strong>';
}
},
{ // Nombre
"aTargets": [2],
"bSearchable": true,
"bSortable": false,
},
{ // role
"aTargets": [3],
"bSearchable": false,
"bSortable": true,
"mRender": function (data, type, full) {
var _badgetColor = 'label-info';
if(full.role==1) _badgetColor = 'label-primary';
return '<span class="label '+_badgetColor+'">'+full.role_name+'</span>';
}
},
{ // actions
"aTargets": [4],
"bSearchable": false,
"bSortable": false,
"sClass": "text-center",
"mRender": function (data, type, full) {
var _btn_groups = '<div class="btn-group">';
_btn_groups += ' <a href="javascript:void(0)" data-toggle="tooltip" title="Editar" data-action="edit" class="btn btn-xs btn-default" data-id="'+full.id+'"><i class="fa fa-pencil"></i></a>';
_btn_groups += ' <a href="javascript:void(0)" data-toggle="tooltip" title="Eliminar" data-action="del" class="btn btn-xs btn-danger" data-id="'+full.id+'"><i class="fa fa-times"></i></a>';
_btn_groups += '</div>';
return _btn_groups;
},
"fnCreatedCell": function ( cell ) {
$('a', cell).on('click', function (e) {
var _action = $(this).data('action');
var _id = $(this).data('id');
if(_action=='edit') {
$.d3POST(base_path+'/cp/users/info',{id:_id},function(data){
if(data.status==true) {
$("#form-edit-usesr").trigger('reset');
$("#user-id","#form-edit-usesr").val(data.user.id);
$(".lavel-role").html('').html(data.user.role.name);
$("#user-role","#form-edit-usesr").val(data.user.role_id);
$("#user-user","#form-edit-usesr").val(data.user.username);
$("#user-firstname","#form-edit-usesr").val(data.user.first_name);
$("#user-lastname","#form-edit-usesr").val(data.user.last_name);
}
});
$("#modal-user-edit").modal('show');
}
else if(_action=='del') {
$(".confirm-content").html('').html('Realmente desea eliminar este suario del sistema?');
$("#fmc-param","#form-modal-confirm").val('user');
$("#fmc-value","#form-modal-confirm").val('del:'+_id);
$("#modal-confirm").modal('show');
}
});
}
}
],
"order": [ 0, 'desc' ]
});
/* Add placeholder attribute to the search input */
$('#users-datatable_filter input').attr('placeholder', 'Buscar');
$('<label><button class="btn btn-primary btn-sm" id="users_data_refresh"><span class="fa fa-refresh"></span></button></label>').css('margin-left','5px').css('margin-top','2px').insertBefore('div#users-datatable_filter > label');
$('button#users_data_refresh').click(function(){
_udto.dataTable()._fnAjaxUpdate();
});
/* Tabla de roles */
_rdto = $('#roles-datatable').dataTable({
"iDisplayLength": 5,
"aLengthMenu": [[5, 10], [5, 10]],
"bProcessing": false,
"bServerSide": true,
"sAjaxSource" : base_path+"/cp/roles/load",
"columns" : [
{ "data": "id" },
{ "data": "name" },
{ "data": null }
],
"aoColumnDefs": [
{ // id
"aTargets": [0],
"bSearchable": false,
"bSortable": true,
"sClass": "text-center"
},
{ // Nombre
"aTargets": [1],
"bSearchable": true,
"bSortable": true,
},
{ // actions
"aTargets": [2],
"bSearchable": false,
"bSortable": false,
"sClass": "text-center",
"mRender": function (data, type, full) {
var _btn_groups = '<div class="btn-group">';
_btn_groups += ' <a href="javascript:void(0)" data-toggle="tooltip" title="Editar" data-action="edit" class="btn btn-xs btn-default" data-id="'+full.id+'"><i class="fa fa-pencil"></i></a>';
_btn_groups += ' <a href="javascript:void(0)" data-toggle="tooltip" title="Eliminar" data-action="del" class="btn btn-xs btn-danger" data-id="'+full.id+'"><i class="fa fa-times"></i></a>';
_btn_groups += '</div>';
return _btn_groups;
},
"fnCreatedCell": function ( cell ) {
$('a', cell).on('click', function (e) {
var _action = $(this).data('action');
var _id = $(this).data('id');
if(_action=='edit') {
$.d3POST(base_path+'/cp/roles/info',{id:_id},function(data){
if(data.status==true) {
$("#form-roles").trigger('reset');
$("#form-role-id","#form-roles").val(data.role.id);
$("#form-role-cmd","#form-roles").val('edit');
$("#role-name","#form-roles").val(data.role.name);
}
});
}
else if(_action=='del') {
$(".confirm-content").html('').html('Realmente desea eliminar este rol del sistema?');
$("#fmc-param","#form-modal-confirm").val('roles');
$("#fmc-value","#form-modal-confirm").val('del:'+_id);
$("#modal-confirm").modal('show');
}
});
}
}
],
"order": [ 0, 'asc' ]
});
/* Add placeholder attribute to the search input */
$('#roles-datatable_filter input').attr('name','role-table-search').attr('placeholder', 'Buscar');
}
};
}();
var Users = function() {
return {
init: function() {
// Boton de confirmacion de dialogos
$('#button-modal-confirm').click(function(e){
var _param = $("#fmc-param","#form-modal-confirm").val();
var _value = $("#fmc-value","#form-modal-confirm").val();
var _g = $.bootstrapGrowl;
if(_param=='user') {
var _sval = _value.split(':');
if(_sval[0]=='del') {
$.d3POST(base_path+'/cp/users/del',{id:_sval[1]},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
_udto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
}
} else if(_param=='roles') {
var _sval = _value.split(':');
if(_sval[0]=='del') {
$.d3POST(base_path+'/cp/roles/del',{id:_sval[1]},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
_rdto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
}
}
$("#modal-confirm").modal('hide');
e.preventDefault();
});
// Validation config
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
// Add user
var _formAddData = $('#form-add-usesr');
var _buttonRole = $('.btn-role', _formAddData);
var _lavelRole = $('.lavel-role', _formAddData);
var _inputRole = $('#user-role', _formAddData);
$('#modal-user-add').on('show.bs.modal', function (e) {
_formAddData.trigger('reset');
$.d3GET(base_path+'/cp/roles/get',{},function(data){
if(data.status==true && data.roles.length>0) {
$(".user-add-role-selection").html('');
$.each(data.roles,function(i, item){
var _roleItem = '<li><a href="javascript:void(0)" class="btn-role" data-role="'+item.id+'">'+item.name+'</a></li>';
$(".user-add-role-selection").append(_roleItem);
if(item.default==1) {
_lavelRole.html(item.name);
_inputRole.val(item.id);
}
});
$('.btn-role').on('click',function(e){
var _role = $(this).data('role');
var _lavel = $(this).html();
_lavelRole.html(_lavel);
_inputRole.val(_role);
});
} else {
$('#modal-user-add').modal('hide');
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
});
$('#modal-user-add').on('hidden.bs.modal', function (e) {
$("#form-add-usesr :input").prop("disabled", false);
});
_formAddData.validate({
errorClass: 'help-block animation-slideDown', // You can change the animation class for a different entrance animation - check animations page
errorElement: 'div',
errorPlacement: function(error, e) {
e.parents('.form-group > div').append(error);
},
highlight: function(e) {
$(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
$(e).closest('.help-block').remove();
},
success: function(e) {
e.closest('.form-group').removeClass('has-success has-error');
e.closest('.help-block').remove();
},
rules: {
'user-user': {
required: true,
minlength: 5,
lettersonly: true
},
'user-firstname': {
required: true,
minlength: 5
},
'user-lastname': {
required: true,
minlength: 5
},
'user_password': {
required: true,
minlength: 5
},
user_repassword: {
equalTo: "#user_password"
}
},
messages: {
'user-user': {
required: 'Por favor ingrese un nombre usuario',
minlength: 'Debe contener almenos 5 caracteres',
lettersonly: 'Solo de admiten letras'
},
'user-firstname': {
required: 'Por favor ingrese un nombre',
minlength: 'Debe contener almenos 5 caracteres'
},
'user-lastname': {
required: 'Por favor ingrese un apellido',
minlength: 'Debe contener almenos 5 caracteres'
},
'user_password': {
required: 'Por favor ingrese una contraseña',
minlength: 'Debe contener almenos 5 caracteres'
},
user_repassword: {
equalTo: 'La contraseña y la confirmacion no coinciden'
}
},
submitHandler: function(form) {
$("#form-add-usesr :input").prop("disabled", true);
var _role = $('#user-role',_formAddData).val();
var _username = $('#user-user',_formAddData).val();
var _fname = $('#user-firstname',_formAddData).val();
var _lname = $('#user-lastname',_formAddData).val();
var _password = $('#user_password',_formAddData).val();
var _g = $.bootstrapGrowl;
$.d3POST(base_path+'/cp/users',{role:_role,username:_username,first_name:_fname,last_name:_lname,password:_password},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
$('#modal-user-add').modal('hide');
_udto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
$("#form-add-usesr :input").prop("disabled", false);
}
});
}
});
// Edit user
var _formEditData = $('#form-edit-usesr');
var _e_buttonRole = $('.btn-role', _formEditData);
var _e_lavelRole = $('.lavel-role', _formEditData);
var _e_inputRole = $('#user-role', _formEditData);
var _validateForm;
$('#modal-user-edit').on('show.bs.modal', function (e) {
_formEditData.trigger('reset');
$.d3GET(base_path+'/cp/roles/get',{},function(data){
if(data.status==true && data.roles.length>0) {
$(".user-edit-role-selection").html('');
$.each(data.roles,function(i, item){
var _roleItem = '<li><a href="javascript:void(0)" class="btn-role" data-role="'+item.id+'">'+item.name+'</a></li>';
$(".user-edit-role-selection").append(_roleItem);
});
$('.btn-role').on('click',function(e){
var _role = $(this).data('role');
var _lavel = $(this).html();
_e_lavelRole.html(_lavel);
_e_inputRole.val(_role);
});
} else {
$('#modal-user-edit').modal('hide');
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
});
$('#modal-user-edit').on('hidden.bs.modal', function (e) {
$("#form-edit-usesr :input").prop("disabled", false);
});
_e_buttonRole.click(function(e){
var _role = $(this).data('role');
var _lavel = $(this).html();
_e_lavelRole.html(_lavel);
_e_inputRole.val(_role);
});
_validateForm = _formEditData.validate({
errorClass: 'help-block animation-slideDown', // You can change the animation class for a different entrance animation - check animations page
errorElement: 'div',
errorPlacement: function(error, e) {
e.parents('.form-group > div').append(error);
},
highlight: function(e) {
$(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
$(e).closest('.help-block').remove();
},
success: function(e) {
e.closest('.form-group').removeClass('has-success has-error');
e.closest('.help-block').remove();
},
rules: {
'user-user': {
required: true,
minlength: 5
},
'user-firstname': {
required: true,
minlength: 5
},
'user-lastname': {
required: true,
minlength: 5
},
'user_password': {
required: false,
minlength: 5
},
user_repassword: {
equalTo: {
param: "#user_password",
depends: function(element) {
return (
$("#user_password", _formEditData).val() != '' &&
($(element).val() != $("#user_password", _formEditData).val())
);
}
}
}
},
messages: {
'user-user': {
required: 'Por favor ingrese un nombre usuario',
minlength: 'Debe contener almenos 5 caracteres'
},
'user-firstname': {
required: 'Por favor ingrese un nombre',
minlength: 'Debe contener almenos 5 caracteres'
},
'user-lastname': {
required: 'Por favor ingrese un apellido',
minlength: 'Debe contener almenos 5 caracteres'
},
'user_password': {
required: 'Por favor ingrese una contraseña',
minlength: 'Debe contener almenos 5 caracteres'
},
user_repassword: {
equalTo: 'La contraseña y la confirmacion no coinciden'
}
},
submitHandler: function(form) {
$(":input", form).prop("disabled", true);
var _id = $('#user-id', form).val();
var _role = $('#user-role', form).val();
var _username = $('#user-user', form).val();
var _fname = $('#user-firstname', form).val();
var _lname = $('#user-lastname', form).val();
var _password = $('#user_password', form).val();
var _g = $.bootstrapGrowl;
$.d3POST(base_path+'/cp/users/edit',{id:_id,role:_role,username:_username,first_name:_fname,last_name:_lname,password:_password},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
$('#modal-user-edit').modal('hide');
_udto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
$(":input", form).prop("disabled", false);
}
});
return false;
}
});
// Add role
var _formAddRole = $('#form-roles');
$("#btn-add-role").click(function(e){
_formAddRole.submit();
e.preventDefault();
});
$('#modal-roles').on('show.bs.modal', function (e) {
_formAddRole.trigger('reset');
$("#form-role-cmd",_formAddRole).val('new');
});
$('#modal-roles').on('hidden.bs.modal', function (e) {
_formAddRole.trigger('reset');
$("#form-role-cmd",_formAddRole).val('new');
});
_formAddRole.validate({
errorClass: 'help-block animation-slideDown', // You can change the animation class for a different entrance animation - check animations page
errorElement: 'div',
errorPlacement: function(error, e) {
e.parents('.form-group > div').append(error);
},
highlight: function(e) {
$(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
$(e).closest('.help-block').remove();
},
success: function(e) {
e.closest('.form-group').removeClass('has-success has-error');
e.closest('.help-block').remove();
},
rules: {
'role-name': {
required: true,
minlength: 4
}
},
messages: {
'role-name': {
required: 'Por favor ingrese un nombre de rol',
minlength: 'Debe contener almenos 4 caracteres'
}
},
submitHandler: function(form) {
var _id = $('#form-role-id', form).val();
var _name = $('#role-name', form).val();
var _cmd = $('#form-role-cmd', form).val();
var _g = $.bootstrapGrowl;
if(_cmd=='new') {
$.d3POST(base_path+'/cp/roles',{name:_name},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
$('#role-name', form).val('');
_rdto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
} else if(_cmd=='edit') {
$.d3POST(base_path+'/cp/roles/edit',{id:_id,name:_name},function(data){
if(data.status==true) {
_g(data.message, {
type: "success",
delay: 4500,
allow_dismiss: true
});
$('#role-name', form).val('');
$('#form-role-cmd', form).val('new');
$('#form-role-id', form).val('');
_rdto.dataTable()._fnAjaxUpdate();
} else {
_g(data.message, {
type: "danger",
delay: 4500,
allow_dismiss: true
});
}
});
}
return false;
}
});
}
};
}();