const sActionButtons = ''; const orders_status = { pending: { id: 1, color: 'text-teal-400' }, processing: { id: 2, color: 'text-yellow-400' }, shipped: { id: 3, color: 'text-green-400' }, pendingPayment: { id: 7, color: 'text-red-400' }, readyForShipping: { id: 10, color: 'text-blue-400' }, }; $(document).ready(function () { displayCartCount(); ageVerification(); $('#search').click(function (e) { $('#form-search').submit(); }) $("#search-dropdown").on('keyup', function (e) { if (e.key === 'Enter' || e.keyCode === 13) { $('#search').click(); } }); $('.cat-element').click(function (e) { catId = $(this).data('catid'); $('#catId').val(catId); const catName = $(this).find('.cat-name').text(); $('.cat-element.active').removeClass('bg-gray-600'); $('.cat-element').removeClass('active'); $(this).addClass('active bg-gray-600'); $('#dropdown-button span').text(catName); $('#search').click(); }); // const menuDropdown = $('#user_menu_dropdown'); // $('#user_menu').click(function(){ // if($(menuDropdown).hasClass('hidden')){ // $(menuDropdown).removeClass('hidden'); // } else { // $(menuDropdown).addClass('hidden'); // } // }); $('#user_login').click(function () { location.href = "index.php?app=backend/login/index" }) $('#hamburger').click(function () { $('#sidemenu').animate({ width: 'toggle' }, 250); }); $('#browsetoggle').click(function () { $('#menucategories').slideToggle(); }); }); function getColorStatus(status_id) { let color = 'text-white'; for (const [key, value] of Object.entries(orders_status)) { if (value.id == status_id) color = value.color; } return color; } function getIsAdult() { return localStorage.getItem('isAdult') ?? false; } function setIsAdult(param) { return localStorage.setItem('isAdult', param); } function ageVerification() { const isAdult = getIsAdult(); if (isAdult) { // Si ya ha verificado su edad, no hacemos nada. $('.age-verification').removeClass('age-verification'); $('.blur-2xl').removeClass('blur-2xl'); return; } $('.age-verification').bind('click.ageverification', function (event) { const element = $(this); event.preventDefault(); const elementType = element[0].tagName; Swal.fire({ title: 'Age Verification', html: 'Please, verify your age.', icon: 'warning', showDenyButton: true, showCancelButton: false, customClass: { confirmButton: 'bg-[--green] text-black px-4 py-2 m-3', denyButton: 'bg-[--red] text-white px-4 py-2 m-3' }, buttonsStyling: false, confirmButtonText: `i am over 18`, denyButtonText: `i am under 18`, }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { setIsAdult('true'); $('.blur-2xl').removeClass('blur-2xl'); $('.age-verification').removeClass('age-verification').unbind('click.ageverification'); } else if (result.isDenied) { } }) }); }; function initTable(module, aColumns) { $('#tabla').DataTable({ "language": { "url": "./resources/vendor/datatables/es_es.json" }, "ajax": { "url": "./app/backend/ajax.php?module=" + module + "_list", "dataSrc": "" }, "initComplete": function (settings, json) { initTableButtons(module); }, columns: aColumns }); } function initTableButtons(module) { $('.action-edit').click(function () { var id = $(this).parent().parent().find('input#id').val(); location.href = "index.php?app=backend/" + module + "_edit&id=" + id; }); $('.action-delete').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(); $('.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); } }); $('.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); } }); };