diff --git a/assets/js/modules/agenda-modal-buttons.js b/assets/js/modules/agenda-modal-buttons.js index 0d24d31..aef5f23 100644 --- a/assets/js/modules/agenda-modal-buttons.js +++ b/assets/js/modules/agenda-modal-buttons.js @@ -165,6 +165,29 @@ export function initializeMarkPresentButton(getCurrentEventData, openCheckPresen }; } +/** + * Initialise le bouton pour afficher le modal de gestion des présences (groupes uniquement) + * @param {Function} getCurrentEventData - Fonction pour obtenir les données de l'événement + * @param {Function} openCheckPresenceModal - Fonction pour ouvrir la modal de validation de présence de groupe + */ +export function initializeShowPresenceModalButton(getCurrentEventData, openCheckPresenceModal) { + const showPresenceModalBtn = document.getElementById('showPresenceModalBtn'); + if (!showPresenceModalBtn) return; + + showPresenceModalBtn.onclick = function() { + if (!checkPermission('can_edit')) return; + + const currentEventData = getCurrentEventData(); + if (!currentEventData) { + notifyError('Données d\'événement manquantes'); + return; + } + + // Ouvrir le modal de gestion des présences + openCheckPresenceModal(currentEventData); + }; +} + /** * Initialise le bouton pour marquer comme absent * @param {Function} getCurrentEventData - Fonction pour obtenir les données de l'événement @@ -742,6 +765,7 @@ export function initializeModalButtons(options = {}) { initializeSaveButton(getCurrentEventData, getCurrentMode, disableDateSynchronization); initializeDeleteButton(getCurrentEventData, onDeleted); initializeMarkPresentButton(getCurrentEventData, openCheckPresenceModal, onStatusChanged); + initializeShowPresenceModalButton(getCurrentEventData, openCheckPresenceModal); initializeMarkAbsentButton(getCurrentEventData, onStatusChanged); initializeCancelAppointmentButton(getCurrentEventData, onStatusChanged); initializeDebugSmsButton(getCurrentEventData); diff --git a/assets/js/modules/agenda-modal-display.js b/assets/js/modules/agenda-modal-display.js index fb73fbd..dbcb96a 100644 --- a/assets/js/modules/agenda-modal-display.js +++ b/assets/js/modules/agenda-modal-display.js @@ -302,6 +302,14 @@ export function updateModalDisplay(mode, canEdit, canDelete, eventData = null) { if (btn.id === 'markAbsentBtn') { btn.style.display = isGroupe ? 'none' : 'inline-block'; } + // Boutons spécifiques aux groupes (classe groupe-only-button) + else if (btn.classList.contains('groupe-only-button')) { + btn.style.display = isGroupe ? 'inline-block' : 'none'; + } + // Boutons spécifiques aux individuels (classe individuel-only-button) + else if (btn.classList.contains('individuel-only-button')) { + btn.style.display = isGroupe ? 'none' : 'inline-block'; + } // Le bouton "Détail incident(s)" garde son état (géré par checkAndDisplayIncidentsButton) else if (btn.id === 'viewIncidentsBtn') { // Ne rien faire, l'état est géré ailleurs diff --git a/templates/modules/modals/event-modal.php b/templates/modules/modals/event-modal.php index 4ffa6e1..41dcd74 100644 --- a/templates/modules/modals/event-modal.php +++ b/templates/modules/modals/event-modal.php @@ -481,8 +481,11 @@ $crvi_is_front_context = ($crvi_agenda_context !== 'admin');
- +