<div class="modal fade" id="solicitudModal" tabindex="-1" role="dialog" aria-labelledby="solicitudModalLabel" aria-hidden="true"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="solicitudModalLabel">{{ 'modal.solicitud.title'|trans({}, 'courses')|default('Solicitar información sobre el curso') }}</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button></div><div class="modal-body"><form id="solicitudForm"><input type="hidden" id="actividadId" name="actividadId" value=""><input type="hidden" id="actividadTipo" name="actividadTipo" value=""><div class="form-group"><label for="nombre">{{ 'modal.solicitud.nombre'|trans({}, 'courses')|default('Nombre completo') }} *</label><input type="text" class="form-control" id="nombre" name="nombre" required><div class="invalid-feedback" id="error-nombre"></div></div><div class="form-group"><label for="email">{{ 'modal.solicitud.email'|trans({}, 'courses')|default('Correo electrónico') }} *</label><input type="email" class="form-control" id="email" name="email" required><div class="invalid-feedback" id="error-email"></div></div><div class="form-group"><label for="telefono">{{ 'modal.solicitud.telefono'|trans({}, 'courses')|default('Teléfono') }} *</label><input type="tel" class="form-control" id="telefono" name="telefono" required><div class="invalid-feedback" id="error-telefono"></div></div><div class="form-group"><label for="comentario">{{ 'modal.solicitud.comentario'|trans({}, 'courses')|default('Comentarios o consultas') }}</label><textarea class="form-control" id="comentario" name="comentario" rows="3"></textarea><div class="invalid-feedback" id="error-comentario"></div></div></form></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">{{ 'modal.solicitud.cancel'|trans({}, 'courses')|default('Cancelar') }}</button><button type="button" class="btn btn-primary" id="submitSolicitud">{{ 'modal.solicitud.submit'|trans({}, 'courses')|default('Enviar solicitud') }}</button></div></div></div></div><script>document.addEventListener('DOMContentLoaded', function() {// Inicializar los botones de solicitudconst solicitudBtns = document.querySelectorAll('.btn-apply');const solicitudModal = document.getElementById('solicitudModal');// Ya no necesitamos manejar los botones de solicitud a través de JavaScript// para usuarios logueados, pero sí mantener la funcionalidad para usuarios no logueadossolicitudBtns.forEach(btn => {// Solo manejamos los botones que no tienen atributo href (los que no se han convertido en enlaces)if (!btn.hasAttribute('href')) {btn.addEventListener('click', function() {const actividadId = this.dataset.actividadId;const actividadTipo = this.dataset.actividadTipo;// Mostrar el modal solo para usuarios no registradosif (!document.body.classList.contains('logged-in')) {document.getElementById('actividadId').value = actividadId;document.getElementById('actividadTipo').value = actividadTipo;$('#solicitudModal').modal('show');}});}});// Manejar el envío del formulariodocument.getElementById('submitSolicitud').addEventListener('click', function() {const form = document.getElementById('solicitudForm');const actividadId = document.getElementById('actividadId').value;const actividadTipo = document.getElementById('actividadTipo').value;// Limpiar mensajes de error previosform.querySelectorAll('.is-invalid').forEach(el => el.classList.remove('is-invalid'));form.querySelectorAll('.invalid-feedback').forEach(el => el.textContent = '');// Recoger datos del formularioconst formData = {nombre: document.getElementById('nombre').value,email: document.getElementById('email').value,telefono: document.getElementById('telefono').value,comentario: document.getElementById('comentario').value};// Enviar solicitudenviarSolicitudUsuarioNoRegistrado(actividadTipo, actividadId, formData);});// Función para enviar solicitud de usuario no registradofunction enviarSolicitudUsuarioNoRegistrado(tipo, id, formData) {fetch(`/${document.documentElement.lang}/courses/ajax/muestra-interes/${tipo}/${id}`, {method: 'POST',headers: {'X-Requested-With': 'XMLHttpRequest','Content-Type': 'application/json'},body: JSON.stringify(formData),credentials: 'same-origin'}).then(response => response.json()).then(data => {if (data.success) {$('#solicitudModal').modal('hide');mostrarMensajeExito(data.message);// Limpiar formulariodocument.getElementById('solicitudForm').reset();} else {// Mostrar errores en el formularioif (data.errors) {Object.keys(data.errors).forEach(field => {const fieldName = field.replace(/\[|\]/g, '');const inputElement = document.getElementById(fieldName);const errorElement = document.getElementById(`error-${fieldName}`);if (inputElement && errorElement) {inputElement.classList.add('is-invalid');errorElement.textContent = data.errors[field];}});} else {mostrarMensajeError(data.message);}}}).catch(error => {console.error('Error:', error);mostrarMensajeError('{{ 'error.general'|trans({}, 'courses')|default('Ha ocurrido un error. Inténtelo de nuevo más tarde.') }}');});}// Función para mostrar mensaje de éxitofunction mostrarMensajeExito(mensaje) {const alertDiv = document.createElement('div');alertDiv.className = 'alert alert-success alert-dismissible fade show mt-3';alertDiv.innerHTML = `${mensaje}<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>`;// Insertar alerta después del primer elemento con clase containerconst container = document.querySelector('.container');if (container) {container.prepend(alertDiv);// Desaparecer después de 5 segundossetTimeout(() => {alertDiv.classList.remove('show');setTimeout(() => alertDiv.remove(), 150);}, 5000);}}// Función para mostrar mensaje de errorfunction mostrarMensajeError(mensaje) {const alertDiv = document.createElement('div');alertDiv.className = 'alert alert-danger alert-dismissible fade show mt-3';alertDiv.innerHTML = `${mensaje}<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>`;// Insertar alerta después del primer elemento con clase containerconst container = document.querySelector('.container');if (container) {container.prepend(alertDiv);// Desaparecer después de 5 segundossetTimeout(() => {alertDiv.classList.remove('show');setTimeout(() => alertDiv.remove(), 150);}, 5000);}}});</script>