var elements = { handle: "users", model: "user", route: "Stack.Admin.User", route_api: "Stack.Admin.API.User", table_selector: "#users_datatable", exist: "the_user_type_already_exists", added: "user_has_been_added", modified: "user_has_been_modified", deleted: "user_has_been_deleted" }; var columnsdef = [ { orderable: false, targets: [0, 6] }, { responsivePriority: 1, targets: [0, 1, 6] } ]; var columns = [ { data: "active", searchable: false, className: 'text-center', render: function ( data, type, row, meta ) { var checked = data ? "checked" : ""; tpl = '
'; return tpl; } }, { data: "name", render: function ( data, type, row, meta ) { return '  ' + data; } }, { data: "username" }, { data: "email" }, { data: "phone" }, { data: "roles", searchable: false, render: function ( data, type, row, meta ) { if (data) { tpl = ''; for (var k in data){ if (data.hasOwnProperty(k)) { tpl += data[k]['name'] + ' '; } } return tpl; } else { return ''; } } }, { data: "id", render: function ( data, type, row ) { var name = row.name; tpl = '
'; tpl += ''; if (hasPermission('users_client')) { tpl += ''; } if (hasPermission('users_update')) { tpl += ''; } if (hasPermission('users_delete')) { tpl += ''; } tpl += '
'; return tpl; } } ]; var users = handleAdmin; var users_addon = { avatar: null, upload_avatar: false, upload_input: null, passwordButtonsClick: function() { $('.password-btn').off('click').on('click', function() { var id = $(this).parent().data('id'); var name = $(this).parent().data('name'); users.passwordUser(id, name); }); }, avatarButtonsClick: function() { $('#users_datatable .avatar-user-btn').off('click').on('click', function() { var id = $(this).parent().data('id'); var name = $(this).parent().data('name'); users.avatarUser(id, name); }); }, generatePassword: function(elt) { $.ajax({ type: "POST", dataType: "json", url: laroute.route("Stack.Admin.API.User.generateUserPassword"), success: function(response) { elt.val(response.pwd); }, error: function() { admin_content.alertError(); } }); }, initAvatarUploader: function() { users.upload_input = $("#avatar_file").filer({ showThumbs: true, addMore: true, allowDuplicates: false, limit: 1, maxSize: 5, extensions: [ 'jpg' ], uploadFile: { url: laroute.route("Stack.Admin.API.User.uploadAvatar"), data: { "extension": 'jpg' }, type: 'POST', enctype: 'multipart/form-data', synchron: true, success: function(data, itemEl, listEl, boxEl, newInputEl, inputEl, id){ var parent = itemEl.find(".jFiler-jProgressBar").parent(), new_file_name = JSON.parse(data), filerKit = inputEl.prop("jFiler"); filerKit.files_list[id].name = new_file_name; itemEl.find(".jFiler-jProgressBar").fadeOut("slow", function(){ $("
Success
").hide().appendTo(parent).fadeIn("slow"); }); $("#avatar_file_hidden").val(new_file_name); }, error: function(el){ var parent = el.find(".jFiler-jProgressBar").parent(); el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ $("
Error
").hide().appendTo(parent).fadeIn("slow"); }); }, statusCode: null, onProgress: null, onComplete: null }, files: null, clipBoardPaste: true, excludeName: null, beforeRender: null, afterRender: null, beforeShow: null, beforeSelect: null, onSelect: null, afterShow: null, onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){ var filerKit = inputEl.prop("jFiler"), file_name = filerKit.files_list[id].name; $.post(laroute.route('Stack.Admin.API.User.removeAvatar'), {file: file_name}); }, onEmpty: null, options: null, dialogs: { alert: function(text) { $.alert({ title: translate.getText.informations, type: 'red', content: text, }); }, confirm: function (text, callback) { $.confirm({ title: translate.getText.informations, type: 'red', content: text, buttons: { confirm: { text: translate.getText.confirm, btnClass: 'btn-danger', action: function(){ callback() } }, cancel: { text: translate.getText.cancel } } }); } }, captions: { button: translate.getText.choose_file, feedback: "", feedback2: translate.getText.selected_files, removeConfirmation: translate.getText.are_you_sure_you_want_to_remove_this_file, errors: { filesLimit: translate.getText.file_number_authorized + ": {{fi-limit}}", filesType: translate.getText.file_extension_authorized + ": .{{fi-extensions}}", filesSize: translate.getText.file_max_size_authorized + ": {{fi-maxSize}} MB." } } }); }, avatarUser: function(id, name) { $.confirm({ title: translate.getText.avatar, columnClass: 'small', content: function () { var self = this; return $.ajax({ type: "POST", dataType: "json", url: laroute.route("Stack.Admin.API.User.getAvatar"), data: { 'id': id }, }).done(function (response) { if (response.error == -1) { header.logout(); } else if (response.avatar == "") { self.setContent('
'+name+'

'); users.upload_avatar = true; } else { self.setContent('
'+name+'


'); users.upload_avatar = false; } }).fail(function(){ self.setContent(translate.getText.an_error_occured); }); }, typeAnimated: true, onContentReady: function() { $("#delete_avatar").off('click').on('click', function(){ $("#avatar_upload").html(''); users.upload_avatar = true; users.initAvatarUploader(); }); if (users.upload_avatar) { users.initAvatarUploader(); } }, type: 'blue', buttons: { confirm: { text: translate.getText.validate, btnClass: 'btn-blue', action: function(){ if($('#novation_select').val() == '') { admin_content.alertCustomError('please_select_third_party'); } else { var datas = {}; datas['ujcaid'] = id; datas["ujcafile"] = $('#avatar_file_hidden').val(); $.ajax({ type: "POST", dataType: "json", url: laroute.route("Stack.Admin.API.User.updateAvatar"), data: datas, success: function(response) { if (response.error == -1) { header.logout(); } else if(response.error == -6) { admin_content.alertNotFound(); } }, error: function() { admin_content.alertError(); } }); } } }, cancel: { text: translate.getText.cancel } } }); }, passwordUser: function(id, name) { $.confirm({ title: translate.getText.change_password, columnClass: 'small', content: '
'+name+'
', typeAnimated: true, type: 'dark', animation: 'RotateXR', onContentReady: function() { $("#user_password_regenerate").off('click').on('click', function(){ event.preventDefault(); users.generatePassword($("#update_password")); }); }, buttons: { confirm: { text: translate.getText.confirm, btnClass: 'btn-dark', action: function() { if ($("#update_password").val() == "") { return false; } else { var datas = {}; datas['id'] = id; datas['password'] = $("#update_password").val(); $.ajax({ type: "POST", dataType: "json", url: laroute.route("Stack.Admin.API.User.updatePassword"), data: datas, success: function(response) { if (response.error == -1) { header.logout(); } else if(response.error == -6) { admin_content.alertNotFound(); } else if(response.error == -7) { admin_content.alertCustomError('the_password_must_have_at_least_six_characters'); } }, error: function() { admin_content.alertError(); } }); } } }, cancel: { text: translate.getText.cancel } } }); }, }; users = {...users, ...users_addon }; $(document).ready(function() { users.selectAll(); $(elements.table_selector).on('draw.dt', function () { handleTable(); initIcheck(); users.passwordButtonsClick(); users.avatarButtonsClick(); } ); } );