Skip to content

Améliorations des événements : autorisation, participation et calendrier#49

Open
dehy wants to merge 138 commits intomainfrom
event-enhancement
Open

Améliorations des événements : autorisation, participation et calendrier#49
dehy wants to merge 138 commits intomainfrom
event-enhancement

Conversation

@dehy
Copy link
Owner

@dehy dehy commented Nov 2, 2025

Fonctionnalités ajoutées

🔐 Autorisation par groupe

  • Vérification de l'appartenance aux groupes assignés à l'événement
  • Bouton d'inscription désactivé avec tooltip explicatif pour les utilisateurs non autorisés
  • Affichage des groupes autorisés dans les détails de l'événement (badges bleus)
  • Validation côté serveur avec message flash d'erreur

🎯 États de participation dynamiques

  • Concours : 3 choix (N'y va pas / Intéressé / Inscrit)
  • Entraînements : 2 choix (Absent / Présent)
  • Valeur par défaut "Présent" pour les entraînements (seulement si membre du groupe autorisé)
  • Pas de défaut pour les concours (choix explicite obligatoire)

📋 Liste de participants améliorée

  • Affichage automatique de tous les membres des groupes assignés (entraînements)
  • États par défaut pour les licenciés n'ayant pas encore confirmé leur participation

📆 Grille calendrier améliorée

  • Position sticky : le calendrier reste visible lors du scroll (en dessous de la navbar)
  • Largeurs de colonnes égales : repeat(7, 1fr) pour une grille uniforme
  • Affichage compact : padding réduit (0.25rem) avec ellipsis pour les noms longs
  • Survol bidirectionnel :
    • Survol d'un événement calendrier → surligne dans la liste
    • Survol d'un événement liste → surligne toutes les occurrences calendrier (multi-jours)
    • Animations fluides avec transformations et ombres
    • Contrôleur Stimulus pour les interactions

✨ Interface unifiée

  • Modal de participation réutilisable pour tous les types d'événements
  • Tooltips contextuels pour les boutons désactivés :
    • "Les inscriptions sont fermées" (concours passé)
    • "Cet entraînement est terminé" (entraînement passé)
    • "Réservé à d'autres groupes" (restriction de groupe)
  • Champ "Activité" obligatoire avec valeur par défaut (première activité de la licence)
  • Champ "Type de cible" nullable (concours uniquement)
  • Icônes alignées horizontalement avec le texte (homepage)

🔒 Sécurité et qualité du code

  • Échappement proper des attributs HTML avec e('html_attr')
  • Protection XSS : dictionnaires d'attributs avec échappement approprié
  • Bonnes pratiques Symfony : suppression de l'option 'data' dans les formulaires
  • Pattern wrapper tooltip : boutons désactivés enveloppés dans <span> pour compatibilité Bootstrap

📚 Documentation et outillage

  • AGENTS.md : 500+ lignes de documentation complète pour les assistants IA
    • Vue d'ensemble du projet et architecture
    • Modèle d'entités et logique métier
    • Workflow de développement et patterns
    • Guidelines de test et notes de déploiement
  • TODO.md : 80+ améliorations priorisées (matrice d'Eisenhower)
  • SEO : sitemap.xml et robots.txt pour éviter les 404

Modifications techniques

Backend (PHP)

  • EventHelper : méthodes canLicenseeParticipateInEvent() et getAllParticipantsForEvent()
  • EventParticipationType : choix conditionnels selon le type d'événement, suppression de l'option 'data'
  • EventController : validation d'autorisation avant persistance

Frontend (Templates)

  • templates/event/index.html.twig : grille calendrier avec survol et contrôleur Stimulus
  • templates/event/show_*.html.twig : tooltips contextuels, affichage des groupes, attributs sécurisés
  • templates/event/_participation_modal.html.twig : composant réutilisable

Frontend (Assets)

  • assets/controllers/event_highlight_controller.ts : interactions de survol bidirectionnelles
  • assets/styles/_calendar.scss : positionnement sticky, effets de survol
  • assets/styles/_events.scss : styles de surlignage pour la liste

Base de données

  • Migration : colonne target_type nullable pour les entraînements

Documentation

  • AGENTS.md : documentation pour assistants IA
  • TODO.md : roadmap d'améliorations
  • public/sitemap.xml : sitemap vide mais valide
  • public/robots.txt : directives pour robots d'indexation
  • Makefile : ajout de la cible start-fg

� Corrections de bugs

  • Corruption de template dans show_default.html.twig
  • Erreur de lint CSS (règle vide)
  • Tooltip ne fonctionnant pas sur bouton désactivé (wrapper span ajouté)
  • Problèmes de binding de formulaire (option 'data' supprimée)

@dehy dehy requested a review from Copilot November 2, 2025 23:17
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements group-based access control for events and refactors the participation modal into a reusable component. It enables events to be restricted to specific groups and prevents unauthorized participation.

  • Adds group membership validation for event participation
  • Extracts duplicated participation modal code into a reusable partial template
  • Conditionally displays form fields based on event type (training vs. contest)

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/Helper/EventHelper.php Adds canLicenseeParticipateInEvent() and getAllParticipantsForEvent() methods for group-based access control
src/Controller/EventController.php Validates participation permissions and passes authorization status to templates
src/Form/EventParticipationType.php Makes form fields conditional based on event type and sets appropriate defaults
src/Entity/EventParticipation.php Makes targetType field nullable for non-contest events
templates/event/_participation_modal.html.twig New reusable modal component supporting both contest and training events
templates/event/show_training.html.twig Uses new modal partial and adds group-based button disabling
templates/event/show_default.html.twig Uses new modal partial and adds group-based button disabling
templates/event/show_contest.html.twig Uses new modal partial and adds group-based button disabling
migrations/Version20251102230310.php Database migration to make target_type nullable
Makefile Adds start-fg command for foreground Docker Compose execution

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dehy dehy requested a review from Copilot November 4, 2025 22:08
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 16 out of 17 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dehy dehy requested a review from Copilot November 4, 2025 22:44
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dehy dehy changed the title Amélioration du système de participation aux événements Améliorations des événements : autorisation, participation et calendrier Nov 4, 2025
@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 7, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
75.3% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

dehy added 25 commits February 8, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant