{"id":2,"date":"2025-03-13T16:57:48","date_gmt":"2025-03-13T15:57:48","guid":{"rendered":"https:\/\/tickets.artikaweb.com\/?page_id=2"},"modified":"2025-03-13T20:31:02","modified_gmt":"2025-03-13T19:31:02","slug":"tickets","status":"publish","type":"page","link":"https:\/\/tickets.artikaweb.com\/","title":{"rendered":"Tickets"},"content":{"rendered":"\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f8-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"8\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/index.php\/wp-json\/wp\/v2\/pages\/2#wpcf7-f8-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"8\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.0.5\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f8-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/div>\n<h4>Crear ticket de soporte\n<\/h4>\n<p><label> Nombre<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"nombre\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"nombre\" \/><\/span><br \/>\n<\/label><br \/>\n<label> Apellido<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"apellido\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"apellido\" \/><\/span><br \/>\n<\/label><br \/>\n<label> Email<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email\" \/><\/span><br \/>\n<\/label><br \/>\n<label> Categor\u00eda<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"categoria\"><select class=\"wpcf7-form-control wpcf7-select wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"categoria\"><option value=\"\">&#8212;Por favor, elige una opci\u00f3n&#8212;<\/option><option value=\"Temario (Dudas sobre la formaci\u00f3n)\">Temario (Dudas sobre la formaci\u00f3n)<\/option><option value=\"Campus (Funcionamiento-Acceso-Etc)\">Campus (Funcionamiento-Acceso-Etc)<\/option><\/select><\/span><br \/>\n<\/label><br \/>\n<label> Asunto<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"asunto\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"asunto\" \/><\/span><br \/>\n<\/label><br \/>\n<label> Nombre del Curso<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"nombre-del-curso\"><select class=\"wpcf7-form-control wpcf7-select wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"nombre-del-curso\"><option value=\"M\u00e1ster de IA\">M\u00e1ster de IA<\/option><\/select><\/span><br \/>\n<\/label><br \/>\n<label>M\u00f3dulo<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"modulo\"><select class=\"wpcf7-form-control wpcf7-select wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"modulo\"><option value=\"\">&#8212;Por favor, elige una opci\u00f3n&#8212;<\/option><option value=\"Bienvenida - MIA\">Bienvenida - MIA<\/option><option value=\"Introduciendo la Inteligencia Artificial - MIA\">Introduciendo la Inteligencia Artificial - MIA<\/option><option value=\"Open Source vs. Closed Source - MIA\">Open Source vs. Closed Source - MIA<\/option><option value=\"ChatGPT - MIA\">ChatGPT - MIA<\/option><option value=\"Alternativas a ChatGPT - MIA\">Alternativas a ChatGPT - MIA<\/option><option value=\"GPTs - MIA\">GPTs - MIA<\/option><option value=\"GPTs Avanzados - MIA\">GPTs Avanzados - MIA<\/option><option value=\"Make - MIA\">Make - MIA<\/option><option value=\"Assistant API - MIA\">Assistant API - MIA<\/option><option value=\"LLMs Avanzados - MIA\">LLMs Avanzados - MIA<\/option><option value=\"Botpress - MIA\">Botpress - MIA<\/option><option value=\"Directos II Edici\u00f3n - MIA\">Directos II Edici\u00f3n - MIA<\/option><\/select><\/span><br \/>\n<\/label><br \/>\n<label> Descripci\u00f3n<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"descripcion\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"descripcion\"><\/textarea><\/span><br \/>\n<\/label><br \/>\n<label> Adjuntar archivo (m\u00e1ximo 20MB)<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"archivo\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\".pdf,.doc,.docx,.jpg,.png\" aria-invalid=\"false\" type=\"file\" name=\"archivo\" \/><\/span><br \/>\n<\/label>\n<\/p>\n<div class=\"wpcf7-buttons-container\">\n\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Enviar\" \/><br \/>\n<button type=\"button\" id=\"resetButton\">Restablecer<\/button>\n\t<\/p>\n<\/div>\n<p><script>\n\/**\n * Soluci\u00f3n para evitar env\u00edos prematuros en Contact Form 7\n * Incluye correcci\u00f3n espec\u00edfica para el select de M\u00f3dulo\n *\/\ndocument.addEventListener('DOMContentLoaded', function() {\n \/\/ 1. Obtener referencia a elementos del DOM\n let forms = document.querySelectorAll('.wpcf7-form');\n \n if (forms.length === 0) return;\n \n \/\/ NUEVO: Interceptar inmediatamente el comportamiento de los selects\n forms.forEach(function(form) {\n \/\/ Obtener todos los select, especialmente el de m\u00f3dulo\n let selectFields = form.querySelectorAll('select');\n selectFields.forEach(function(select) {\n \/\/ Clonar el select para eliminar todos los event listeners\n let newSelect = select.cloneNode(true);\n select.parentNode.replaceChild(newSelect, select);\n \n \/\/ Agregar listener espec\u00edfico que bloquee la propagaci\u00f3n\n newSelect.addEventListener('change', function(e) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n \n \/\/ Prevenir cualquier intento de validaci\u00f3n o env\u00edo\n let event = e.originalEvent || e;\n if (event) {\n event.preventDefault();\n }\n \n return false;\n }, true); \/\/ Usar captura para interceptar antes que otros listeners\n });\n });\n \n \/\/ 2. Manejar wpcf7 de forma m\u00e1s segura sin sobreescribir m\u00e9todos\n if (typeof wpcf7 !== 'undefined') {\n \/\/ Usar try-catch para manejar posibles errores\n try {\n \/\/ Desactivar validaci\u00f3n autom\u00e1tica en selects\n if (typeof wpcf7.validateForm === 'function') {\n const originalValidateForm = wpcf7.validateForm;\n wpcf7.validateForm = function(form) {\n \/\/ Solo validar cuando se env\u00eda realmente\n if (form.getAttribute('data-submitting') === 'true') {\n return originalValidateForm(form);\n }\n return true; \/\/ Simular validaci\u00f3n exitosa\n };\n }\n \n \/\/ Escuchar evento de env\u00edo\n document.addEventListener('wpcf7beforesubmit', function(event) {\n try {\n \/\/ Solo verificar si existe event.detail\n if (event && event.target) {\n let form = event.target;\n let submitter = document.activeElement;\n let isValidSubmit = submitter && submitter.classList.contains('wpcf7-submit');\n \n \/\/ Marcar el formulario cuando es un env\u00edo real\n if (isValidSubmit) {\n form.setAttribute('data-submitting', 'true');\n } else if (event.target !== submitter) {\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n }\n } catch (e) {\n console.log('Aviso: Error controlado en wpcf7beforesubmit', e);\n }\n }, true);\n \n \/\/ Asegurarse de que los mensajes de respuesta sean visibles despu\u00e9s del env\u00edo\n document.addEventListener('wpcf7submit', function(event) {\n try {\n if (event && event.target) {\n let form = event.target;\n let responseOutput = form.querySelector('.wpcf7-response-output');\n \n if (responseOutput) {\n \/\/ Asegurarnos de que el mensaje est\u00e9 visible\n responseOutput.style.display = 'block';\n }\n }\n } catch (e) {\n console.log('Aviso: Error al mostrar mensaje de respuesta', e);\n }\n });\n \n \/\/ Capturar espec\u00edficamente el evento de env\u00edo exitoso\n document.addEventListener('wpcf7mailsent', function(event) {\n try {\n \/\/ Verificar que event existe\n if (event && event.target) {\n let form = event.target;\n \n if (form) {\n \/\/ Asegurarnos de que el mensaje de \u00e9xito sea visible\n let responseOutput = form.querySelector('.wpcf7-response-output');\n if (responseOutput) {\n responseOutput.style.display = 'block';\n \/\/ Asegurarse de que tiene contenido\n if (!responseOutput.textContent.trim()) {\n responseOutput.textContent = \"Gracias por tu mensaje. Ha sido enviado.\";\n }\n }\n \n \/\/ Desactivar validadores despu\u00e9s de enviar\n let inputs = form.querySelectorAll('input, textarea, select');\n inputs.forEach(function(input) {\n input.setAttribute('data-no-validation', 'true');\n });\n }\n }\n } catch (e) {\n console.log('Aviso: Error controlado en wpcf7mailsent', e);\n }\n });\n } catch (e) {\n console.log('Aviso: Error al configurar listeners de CF7', e);\n }\n }\n \n \/\/ 3. Prevenir validaci\u00f3n prematura usando jQuery si est\u00e1 disponible\n if (typeof jQuery !== 'undefined') {\n try {\n jQuery(document).ready(function($) {\n $('.wpcf7-form').each(function() {\n let $form = $(this);\n \n \/\/ MODIFICADO: Especial atenci\u00f3n a los selects\n $form.find('select').off('change blur');\n \n \/\/ Desconectar eventos de jQuery para CF7\n $form.off('.wpcf7');\n \n \/\/ Desactivar eventos de validaci\u00f3n\n $form.find('input, textarea, select').each(function() {\n $(this).off('.wpcf7');\n \n \/\/ Para selects, ser m\u00e1s agresivos\n if (this.tagName === 'SELECT') {\n $(this).off('change blur');\n \n \/\/ Reemplazar con delegaci\u00f3n de eventos\n $(this).on('change', function(e) {\n e.stopPropagation();\n return false;\n });\n }\n \n \/\/ Usar eventos con captura\n this.addEventListener('blur', function(e) {\n e.stopPropagation();\n }, true);\n \n this.addEventListener('change', function(e) {\n e.stopPropagation();\n }, true);\n });\n \n \/\/ Reinstaurar solo el evento de submit\n $form.on('submit', function(event) {\n $(this).attr('data-submitting', 'true');\n });\n });\n });\n } catch (e) {\n console.log('Aviso: Error en configuraci\u00f3n jQuery', e);\n }\n }\n \n \/\/ 4. Desactivar la validaci\u00f3n HTML5 nativa\n forms.forEach(function(form) {\n form.setAttribute('novalidate', 'novalidate');\n \n \/\/ Prevenir que el Enter env\u00ede el formulario excepto en el textarea\n form.addEventListener('keydown', function(e) {\n if (e.key === 'Enter' && e.target.tagName !== 'TEXTAREA') {\n e.preventDefault();\n }\n });\n \n \/\/ MODIFICADO: Procesar espec\u00edficamente los selects\n let moduleSelect = form.querySelector('select[name=\"modulo\"]');\n if (moduleSelect) {\n \/\/ Tratamiento especial para el select de m\u00f3dulo\n ['change', 'blur', 'input'].forEach(function(eventType) {\n moduleSelect.addEventListener(eventType, function(e) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n return false;\n }, true);\n });\n }\n \n \/\/ Procesar otros campos problem\u00e1ticos\n let problemFields = form.querySelectorAll('input[type=\"email\"], input[name*=\"asunto\"], textarea[name*=\"descripcion\"]');\n problemFields.forEach(function(field) {\n \/\/ Capturar y detener eventos que causan validaci\u00f3n\n ['blur', 'change', 'input'].forEach(function(eventType) {\n field.addEventListener(eventType, function(e) {\n e.stopPropagation();\n }, true);\n });\n });\n \n \/\/ Configurar el bot\u00f3n de reset\n let resetButton = form.querySelector('#resetButton');\n if (resetButton) {\n resetButton.addEventListener('click', function() {\n form.reset();\n form.removeAttribute('data-submitting');\n \n \/\/ Limpiar cualquier mensaje de error\n let errorMsgs = form.querySelectorAll('.wpcf7-not-valid-tip');\n errorMsgs.forEach(function(msg) {\n msg.style.display = 'none';\n });\n \n \/\/ Quitar clases de error\n let invalidFields = form.querySelectorAll('.wpcf7-not-valid');\n invalidFields.forEach(function(field) {\n field.classList.remove('wpcf7-not-valid');\n });\n \n \/\/ Manejar el mensaje de respuesta\n let responseOutput = form.querySelector('.wpcf7-response-output');\n if (responseOutput) {\n responseOutput.innerHTML = '';\n responseOutput.style.display = 'none';\n form.setAttribute('data-reset-clicked', 'true');\n }\n \n \/\/ Eliminar otras clases de estado\n form.classList.remove('invalid', 'valid', 'sent', 'failed', 'unaccepted');\n });\n }\n \n \/\/ Reinstaurar el comportamiento del mensaje de respuesta en el env\u00edo\n form.addEventListener('submit', function() {\n this.setAttribute('data-submitted', 'true');\n this.setAttribute('data-submitting', 'true');\n \n if (this.hasAttribute('data-reset-clicked')) {\n const responseOutput = this.querySelector('.wpcf7-response-output');\n if (responseOutput) {\n responseOutput.style.display = '';\n }\n }\n });\n });\n \n \/\/ 5. Interceptar errores en el evento submit\n window.addEventListener('error', function(event) {\n if (event && event.error && event.error.stack && \n (event.error.stack.includes('wpcf7') || \n event.error.stack.includes('contact-form'))) {\n event.preventDefault();\n }\n }, true);\n \n \/\/ 6. Observar cambios en los formularios\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n if (mutation.type === 'attributes' && \n mutation.target.classList.contains('wpcf7-form') &&\n (mutation.target.classList.contains('sent') || \n mutation.target.classList.contains('invalid'))) {\n \n const responseOutput = mutation.target.querySelector('.wpcf7-response-output');\n if (responseOutput && responseOutput.style.display === 'none') {\n responseOutput.style.display = 'block';\n }\n }\n });\n });\n \n forms.forEach(function(form) {\n observer.observe(form, { \n attributes: true, \n attributeFilter: ['class'] \n });\n });\n }\n});\n<\/script>\n<\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":2,"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":15,"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions\/15"}],"wp:attachment":[{"href":"https:\/\/tickets.artikaweb.com\/index.php\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}