{% if app.user %}<span class="favorito curso-favorito {% if actividad.isFavorito is defined and actividad.isFavorito %}active{% endif %}"data-actividad-id="{{ actividad.id }}"data-actividad-tipo="{{ actividad.tipo }}">*</span><script>document.addEventListener('DOMContentLoaded', function() {// Inicializar botón de favorito para la actividad {{ actividad.tipo }}-{{ actividad.id }}const favoritoBtn = document.querySelector('.curso-favorito[data-actividad-id="{{ actividad.id }}"][data-actividad-tipo="{{ actividad.tipo }}"]');if (favoritoBtn) {favoritoBtn.addEventListener('click', function(e) {e.preventDefault();toggleFavorito(favoritoBtn);});}/*** Función para alternar el estado de favorito de un curso** @param {HTMLElement} button Botón de favorito*/function toggleFavorito(button) {const actividadId = button.dataset.actividadId;const actividadTipo = button.dataset.actividadTipo;// URL del endpointconst url = `/${document.documentElement.lang}/courses/ajax/favorito/${actividadTipo}/${actividadId}`;// Petición AJAXfetch(url, {method: 'POST',headers: {'X-Requested-With': 'XMLHttpRequest','Content-Type': 'application/json'},credentials: 'same-origin'}).then(response => {if (!response.ok) {if (response.status === 403) {// Redirigir al login si no está autenticadowindow.location.href = `/${document.documentElement.lang}/login`;return Promise.reject('Redirect to login');}return Promise.reject(`Error: ${response.status}`);}return response.json();}).then(data => {if (data.success) {// Cambiar la clase del botón según el nuevo estadoif (data.isFavorito) {button.classList.add('active');} else {button.classList.remove('active');}}}).catch(error => {console.error('Error:', error);});}});</script>{% endif %}