var sActionButtons = ''; function initTable(module, aColumns, initCustomTableButtons){ $('#tabla').DataTable({ "order": [], "language": { "url": "./resources/vendor/datatables/es_es.json" }, "ajax": { "url": "./app/backend/ajax.php?module=" + module + "_list", "dataSrc": "" }, "initComplete":function( settings, json){ initTableButtons(module); if(initCustomTableButtons != undefined){ initCustomTableButtons(); } }, "fnDrawCallback": function( settings ) { initTableButtons(module); if(initCustomTableButtons != undefined){ initCustomTableButtons(); } }, columns: aColumns }); } const callWebservice = (url, type, datos, callBack) => { var jqxhr = $.ajax({ url: url, type: type, data: datos }) .done(function(response) { callBack(response); }) .fail(function(error) { console.log( error ); }) .always(function() { }); }; function initTableButtons(module){ $('.action-edit').unbind('click').click(function(){ var id = $(this).parent().parent().find('input#id').val(); location.href= "index.php?app=backend/" + module + "_edit&id=" + id; }); $('.action-delete').unbind('click').click(function(){ var id = $(this).parent().parent().find('input#id').val(); Swal.fire({ title: '¿Desea eliminar el elemento?', text: "El cambio no se podrá revertir.", icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: '#3085d6', confirmButtonText: 'Eliminar', cancelButtonText: 'Cancelar' }).then((result) => { if (result.isConfirmed) { location.href= "index.php?app=backend/" + module + "_delete&id=" + id; } }); }); } //Función generica de guardado de formulario function initForm(urlBack){ $('.form-save').click(function(){ if(validate("datos")){ $('form#datos').submit(); } }); $('.form-cancel').click(function(){ location.href = urlBack; }); } function redirect(urlBack){ location.href = urlBack; } function validate(form){ form = form.replace("#",""); var form = document.getElementById(form); pristine = new Pristine(form); var valid = pristine.validate(); return valid; } function initTextEditor(){ tinymce.remove(); tinymce.init({ selector:'textarea', languaje:'es', height: 350, branding: false, menubar: false, plugins: [ "link image media filemanager responsivefilemanager" ], toolbar1: "undo redo | bold italic underline | forecolor backcolor | link unlink | image media | code", external_filemanager_path:"filemanager/", filemanager_title:"Responsive Filemanager" , external_plugins: { "responsivefilemanager": "../../js/tinymce/plugins/responsivefilemanager/plugin.min.js", "filemanager": "../../../filemanager/plugin.min.js" }, }); } //Definimos un obj con todos los metodos de la gestión por idiomas. let formLanguage = {}; //Definimos las tres variables necesarias para la gestion del formulario de idiomas formLanguage.module_get = ''; formLanguage.module_save = ''; formLanguage.module_delete = ''; formLanguage.form_name = ''; formLanguage.id = 0; //Función que obtiene la información de la bd de contenido formLanguage.getContent = ( language ) => { //Mostramos la ventana de contenido, mostramos la ventana de cargando y ocultamos la ventana de información mientras cargamos. $('#form-content-info').hide(); $('#form-content-loading').show(); $('#form-content-info div#datos').html(''); let datos = { 'id' : formLanguage.id }; //Si pasamos un language, generamos el form añadiendo un nuevo idioma. if(language){ datos.language = language; } $.ajax({ url: './app/backend/ajax.php?module=' + formLanguage.module_get, type: "post", data: datos , success: function (response) { if( response ){ $('#form-content-info').show(); $('#form-content-loading').hide(); $('#form-content-info div#datos').html(response); initTextEditor(); initDatepicker('input.datepicker'); $('.form-cancel').unbind('click').bind("click", (e) =>{ redirect(url_back); }); $('.form-save').unbind('click').bind('click', (e) =>{ if(validate(formLanguage.form_name)){ formLanguage.saveContent(); setTimeout(function(){ redirect(url_back); }, 500); } }); $('.add-language').click(function(event) { launchLangModal(saveLanguage); }); $('.delete-language').click(function(event) { //Obtenemos el idioma del objeto html que le hemos const lang = $(this).attr('id').replace('-delete',''); formLanguage.deleteLanguage( lang ); }); } }, error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); }; //Función que guarda la información en la bd por idiomas formLanguage.saveContent = () => { //Actualizamos los textarea con la información de los editores. tinymce.triggerSave(); //Serializamos el form, con el nombre que hemos definido en la clase ajax. const postdata = $(formLanguage.form_name).serialize(); const datos = { 'id' : formLanguage.id, postdata }; $.ajax({ url: './app/backend/ajax.php?module=' + formLanguage.module_save, type: "post", data: datos , success: function (response) { //Asignamos el id a la variable id creada, sólo si es insert if( formLanguage.id == 0 ){ formLanguage.id = response; } console.log(formLanguage.id); }, error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); }; //Eliminar un idioma creado formLanguage.deleteLanguage = ( language ) => { Swal.fire({ title: '¿Desea eliminar el idioma?', text: "Se perderán los datos asociados a ese idioma.", icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: '#3085d6', confirmButtonText: 'Eliminar', cancelButtonText: 'Cancelar' }).then((result) => { if (result.isConfirmed) { formLanguage.deleteLanguageContent(language); } }); }; //Función que elimina la información en la bd formLanguage.deleteLanguageContent = ( language ) => { formLanguage.saveContent(); const datos = { 'id' : formLanguage.id, language }; $.ajax({ url: './app/backend/ajax.php?module=' + formLanguage.module_delete, type: "post", data: datos , success: function (response) { formLanguage.getContent(); }, error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); }; function initDatepicker(selector, hours, defaultDate){ let format = "DD/MM/YYYY HH:mm"; let timePicker = false; if(hours == undefined){ hours = true; timePicker = true; } if(!hours){ format = "DD/MM/YYYY"; } let options = { "singleDatePicker": true, "autoApply": true, "timePicker": timePicker, "timePicker24Hour": true, "locale": { "format" : format, "separator" : " - ", "applyLabel": "Aceptar", "cancelLabel": "Cancel", "fromLabel": "Desde", "toLabel": "Hasta", "customRangeLabel": "Custom", "weekLabel": "S", "daysOfWeek": [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa" ], "monthNames": [ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ], "firstDay": 1 } }; if(defaultDate != undefined){ options.startDate = defaultDate; } //console.log(options); $(selector).daterangepicker(options); }