let bodyStyles = undefined; $(document).ready(function(){ bodyStyles = window.getComputedStyle(document.body); $('#yterase').click(function(e){ tracker.connect(0x10C4, 'erase'); }); const intervalSelect2 = setInterval(function(){ if(typeof $("select").select2 === "function"){ $("select").select2(); clearInterval(intervalSelect2); } }, 200); $('.language-item').click(function() { const data = { lang: $(this).data('lang') }; const urlData = './app/backend/ajax.php?module=update_user_language'; callWebservice(urlData, 'POST', data, (res) => { location.reload(); }); }); // Load icons $('i.my-icon').each(async function() { loadIcon($(this)); }) }); var sActionButtons = ''; var sActionButtonEdit = ''; function initTable(module, aColumns, initCustomTableButtons, sParams) { if(sParams != undefined){ sParams = "&" + sParams; }else{ sParams = ""; } $('#tabla').DataTable({ "order": [], // "language": { // "url": "./resources/vendor/datatables/es_es.json" // }, "ajax": { "url": "./app/backend/ajax.php?module=" + module + "_list" + sParams, "dataSrc": "" }, "initComplete":function( settings, json){ initTableButtons(module, sParams); if(initCustomTableButtons != undefined){ initCustomTableButtons(module, sParams); } }, "fnDrawCallback": function( settings ) { initTableButtons(module, sParams); if(initCustomTableButtons != undefined){ initCustomTableButtons(module, sParams); } }, columns: aColumns }); } const loadIcon = (element) => { const bodyStyles = window.getComputedStyle(document.body); const attrs = element.attr('class').split(' '); const icon = attrs.find((c) => c.includes('svg')).split('icon-svg-')[1]; const color = attrs.find((c) => c.includes('color')).split('icon-color-')[1]; const classes = attrs.filter((c) => c.includes('class')); const prevId = element.attr('data-icon'); if (prevId) { console.log(prevId); console.log($(`svg[data-icon=${prevId}]`)); $(`svg[data-icon=${prevId}]`).remove(); } const elementId = (new Date()).getTime() + '' + Math.floor(Math.random() * 10**4); try { fetch(`/resources/images/icons/${icon}.svg`).then(async (r) => { if (r.status == 200) { const blob = await r.blob(); const svgContent = await blob.text(); element.after(` ${svgContent} `); element.attr('data-icon', elementId); element.parent().find('svg').attr('data-icon', elementId); if (color == 'primary') { element.parent().find('svg').css('fill', bodyStyles.getPropertyValue('--my-primary')); } else { element.parent().find('svg').css('fill', bodyStyles.getPropertyValue('--my-text-primary')); } for (const c of classes) { element.parent().find('svg').addClass(c.split('icon-class-')[1]); } } }); } catch (error) { console.log(error); } } 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, sParams){ $('.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 + sParams; }); $('.action-delete').unbind('click').click(function(){ var id = $(this).parent().parent().find('input#id').val(); Swal.fire({ title: 'Do you want to delete this element?', text: 'This change cannot be reversed.', icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: '#3085d6', confirmButtonText: 'Delete', cancelButtonText: 'Cancel' }).then((result) => { if (result.isConfirmed) { location.href= "index.php?app=backend/" + module + "_delete&id=" + id + sParams; } }); }); } //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: 'Do you want to delete the language?', text: "The data from this language will be lost", icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: '#3085d6', confirmButtonText: 'Delete', cancelButtonText: 'Cancel' }).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); } function formatDate(oDate){ var currentdate = new Date(oDate); return ((currentdate.getDate() < 10)?"0":"") + currentdate.getDate() +"/"+(((currentdate.getMonth()+1) < 10)?"0":"") + (currentdate.getMonth()+1) +"/"+ currentdate.getFullYear(); } function formatTime(oDate){ var currentdate = new Date(oDate); return ((currentdate.getHours() < 10)?"0":"") + currentdate.getHours() +":"+ ((currentdate.getMinutes() < 10)?"0":"") + currentdate.getMinutes() +":"+ ((currentdate.getSeconds() < 10)?"0":"") + currentdate.getSeconds(); }