diff --git a/app/controllers/Event_Controller.php b/app/controllers/Event_Controller.php index ff360ae..3b6bc1c 100644 --- a/app/controllers/Event_Controller.php +++ b/app/controllers/Event_Controller.php @@ -567,12 +567,21 @@ class CRVI_Event_Controller { $langue_term = get_term_by('slug', $langue_original, 'langue'); if ($langue_term && !is_wp_error($langue_term)) { $langue_label = $langue_term->name; + } else { + // Debug: comprendre pourquoi on ne trouve pas le terme + error_log('CRVI Debug - Langue non trouvée: ID=' . $langue_original); + if (is_wp_error($langue_term)) { + error_log('CRVI Debug - Erreur WP: ' . $langue_term->get_error_message()); + } } } - // Ajouter le label de la langue pour l'affichage dans la modal + // Ajouter le label de la langue pour l'affichage dans la modal (seulement si on a trouvé le nom) if (!empty($langue_label)) { $event['langue_label'] = $langue_label; + } else { + // Ne pas assigner l'ID comme fallback - laisser le champ vide + $event['langue_label'] = ''; } } @@ -626,12 +635,21 @@ class CRVI_Event_Controller { $langue_term = get_term_by('slug', $langue_original, 'langue'); if ($langue_term && !is_wp_error($langue_term)) { $langue_label = $langue_term->name; + } else { + // Debug: comprendre pourquoi on ne trouve pas le terme + error_log('CRVI Debug get_event - Langue non trouvée: ID=' . $langue_original); + if (is_wp_error($langue_term)) { + error_log('CRVI Debug get_event - Erreur WP: ' . $langue_term->get_error_message()); + } } } - // Ajouter le label de la langue pour l'affichage dans la modal + // Ajouter le label de la langue pour l'affichage dans la modal (seulement si on a trouvé le nom) if (!empty($langue_label)) { $event['langue_label'] = $langue_label; + } else { + // Ne pas assigner l'ID comme fallback - laisser le champ vide + $event['langue_label'] = ''; } } @@ -1517,6 +1535,12 @@ class CRVI_Event_Controller { $langue_term = get_term_by('slug', $langue_original, 'langue'); if ($langue_term && !is_wp_error($langue_term)) { $langue_label = $langue_term->name; + } else { + // Debug: comprendre pourquoi on ne trouve pas le terme + error_log('CRVI Debug FullCalendar - Langue non trouvée: ID=' . $langue_original); + if (is_wp_error($langue_term)) { + error_log('CRVI Debug FullCalendar - Erreur WP: ' . $langue_term->get_error_message()); + } } } } diff --git a/assets/js/modules/agenda-modal-select.js b/assets/js/modules/agenda-modal-select.js index aeee5f6..cace592 100644 --- a/assets/js/modules/agenda-modal-select.js +++ b/assets/js/modules/agenda-modal-select.js @@ -133,6 +133,12 @@ function mergeEventDataWithAvailability(availabilityData, eventData) { langueNom = eventData.langue.nom || 'Langue'; langueSlug = eventData.langue.slug || eventData.langue.id || langueId; } else { + // Vérifier si langue_label existe et n'est pas égal à l'ID + if (eventData.langue_label && eventData.langue_label !== langueId) { + langueNom = eventData.langue_label; + } else if (extendedProps.langue_label && extendedProps.langue_label !== langueId) { + langueNom = extendedProps.langue_label; + } langueSlug = langueId; } diff --git a/assets/js/modules/agenda-modal.js b/assets/js/modules/agenda-modal.js index 3581a42..195f39d 100644 --- a/assets/js/modules/agenda-modal.js +++ b/assets/js/modules/agenda-modal.js @@ -121,80 +121,101 @@ async function loadEventIncidents(eventId) { /** * Ouvre la modal d'incidents en mode affichage + * Utilise la fonction générique openSubModal pour gérer la fermeture/réouverture de la modale principale * @param {number} eventId - ID de l'événement */ async function openIncidentsViewModal(eventId) { - const incidentModal = document.getElementById('declarationIncidentModal'); - const modalTitle = document.getElementById('declarationIncidentModalLabel'); - const viewSection = document.getElementById('incidentsViewSection'); - const formSection = document.getElementById('incidentsFormSection'); - const viewFooter = document.getElementById('incidentsViewFooter'); - const formFooter = document.getElementById('incidentsFormFooter'); - const listContainer = document.getElementById('incidentsListContainer'); - - if (!incidentModal || !viewSection || !formSection || !listContainer) { - notifyError('Modal d\'incidents introuvable'); - return; - } - - try { - // Charger les incidents - const incidents = await loadEventIncidents(eventId); - - if (incidents.length === 0) { - listContainer.innerHTML = '

Aucun incident signalé pour cet événement.

'; - } else { - // Afficher les incidents - let html = '
'; - incidents.forEach((incident, index) => { - const createdAt = incident.created_at ? new Date(incident.created_at).toLocaleDateString('fr-FR') : 'Date inconnue'; - html += ` -
-
-
Incident #${index + 1}
- ${createdAt} + // Utiliser openSubModal pour gérer automatiquement la fermeture/réouverture + openSubModal( + 'declarationIncidentModal', + // Callback avant ouverture : charger et afficher les incidents + async (subModal) => { + const modalTitle = document.getElementById('declarationIncidentModalLabel'); + const viewSection = document.getElementById('incidentsViewSection'); + const formSection = document.getElementById('incidentsFormSection'); + const viewFooter = document.getElementById('incidentsViewFooter'); + const formFooter = document.getElementById('incidentsFormFooter'); + const listContainer = document.getElementById('incidentsListContainer'); + + if (!viewSection || !formSection || !listContainer) { + notifyError('Sections de la modal d\'incidents introuvables'); + return; + } + + try { + // Afficher un spinner de chargement + listContainer.innerHTML = ` +
+
+ Chargement...
- ${incident.resume_incident ? `

Résumé : ${incident.resume_incident}

` : ''} - ${incident.commentaire_incident ? `

${incident.commentaire_incident}

` : ''}
`; - }); - html += '
'; - listContainer.innerHTML = html; - } - - // Changer le titre de la modal - if (modalTitle) { - modalTitle.innerHTML = 'Détail des incidents'; - } - - // Afficher la section de vue, masquer le formulaire - viewSection.style.display = 'block'; - formSection.style.display = 'none'; - viewFooter.style.display = 'block'; - formFooter.style.display = 'none'; - - // Ouvrir la modal - const bsModal = new bootstrap.Modal(incidentModal); - bsModal.show(); - - // Réinitialiser au mode formulaire quand la modal se ferme - incidentModal.addEventListener('hidden.bs.modal', function resetModalMode() { - viewSection.style.display = 'none'; - formSection.style.display = 'block'; - viewFooter.style.display = 'none'; - formFooter.style.display = 'block'; + + // Charger les incidents + const incidents = await loadEventIncidents(eventId); + + if (incidents.length === 0) { + listContainer.innerHTML = '

Aucun incident signalé pour cet événement.

'; + } else { + // Afficher les incidents + let html = '
'; + incidents.forEach((incident, index) => { + const createdAt = incident.created_at ? new Date(incident.created_at).toLocaleDateString('fr-FR') : 'Date inconnue'; + html += ` +
+
+
Incident #${index + 1}
+ ${createdAt} +
+ ${incident.resume_incident ? `

Résumé : ${incident.resume_incident}

` : ''} + ${incident.commentaire_incident ? `

${incident.commentaire_incident}

` : ''} +
+ `; + }); + html += '
'; + listContainer.innerHTML = html; + } + + // Changer le titre de la modal + if (modalTitle) { + modalTitle.innerHTML = 'Détail des incidents'; + } + + // Afficher la section de vue, masquer le formulaire + viewSection.style.display = 'block'; + formSection.style.display = 'none'; + viewFooter.style.display = 'block'; + formFooter.style.display = 'none'; + + } catch (error) { + console.error('Erreur lors du chargement des incidents:', error); + listContainer.innerHTML = '

Erreur lors du chargement des incidents

'; + notifyError('Erreur lors du chargement des incidents'); + } + }, + // Callback après fermeture : réinitialiser au mode formulaire + (subModal) => { + const modalTitle = document.getElementById('declarationIncidentModalLabel'); + const viewSection = document.getElementById('incidentsViewSection'); + const formSection = document.getElementById('incidentsFormSection'); + const viewFooter = document.getElementById('incidentsViewFooter'); + const formFooter = document.getElementById('incidentsFormFooter'); + const listContainer = document.getElementById('incidentsListContainer'); + + // Réinitialiser au mode formulaire + if (viewSection) viewSection.style.display = 'none'; + if (formSection) formSection.style.display = 'block'; + if (viewFooter) viewFooter.style.display = 'none'; + if (formFooter) formFooter.style.display = 'block'; if (modalTitle) { modalTitle.innerHTML = 'Signaler un incident'; } - // Retirer l'écouteur pour éviter les duplications - incidentModal.removeEventListener('hidden.bs.modal', resetModalMode); - }); - - } catch (error) { - console.error('Erreur lors de l\'ouverture de la modal d\'incidents:', error); - notifyError('Erreur lors du chargement des incidents'); - } + if (listContainer) { + listContainer.innerHTML = ''; + } + } + ); } /**