{# templates/event/show.html.twig #} {% extends 'base.html.twig' %} {% set navbar_is_transparent = false %} {% block title %}{{ event.title }}{% endblock %} {% block stylesheets %} {{ parent() }} {# Cargamos Leaflet solo si hay coordenadas (OJO: event.lat / event.lng) #} {% if event.lat and event.lng %} {% endif %} {% endblock %} {% block body %}
{# --- flashes del controlador (registro / baja) --- #} {% for label, msgs in app.flashes %} {% for msg in msgs %} {% endfor %} {% endfor %} ← Retour à la liste

{{ event.title }}

{% if event.type %} {{ event.type }} {% endif %} {% set status = (event.status ?? '')|upper %} {% if status == 'PUBLISHED' %} Publié {% elseif status in ['REVIEW','PENDING','PENDING_APPROVAL','EN_ATTENTE','AWAITING'] %} En attente {% elseif status == 'DRAFT' %} Brouillon {% elseif status %} {{ status }} {% endif %} {% if event.isMembersOnly %} Membres {% endif %}
  • Début : {{ event.startAt ? event.startAt|date('d/m/Y H:i') : '—' }} {% if event.endAt %} {{ event.endAt|date('d/m/Y H:i') }} {% endif %}
  • {% if event.locationName %}
  • {{ event.locationName }}
  • {% endif %} {% if event.createdBy %}
  • Organisé par : {{ event.createdBy }}
  • {% endif %}
{% if event.description %}
{{ event.description|raw }}
{% endif %}
{# ---- Aforo ---- #} {% if event.maxParticipants is not null %} {% set spots_left = event.spotsLeft() %} {% set pct = event.maxParticipants > 0 ? (((event.maxParticipants - spots_left) / event.maxParticipants) * 100)|round(0, 'ceil') : 0 %}
Places{{ spots_left }}/{{ event.maxParticipants }}
{% endif %} {# ---- Lógica de CTA ---- #} {% set is_pending = status in ['REVIEW','PENDING','PENDING_APPROVAL','EN_ATTENTE','AWAITING'] %} {% set is_published = status == 'PUBLISHED' %} {% set is_past = event.endAt ? (event.endAt < date()) : (event.startAt and event.startAt < date('-2 hours')) %} {% set requires_login = event.isMembersOnly and not app.user %} {% set is_full = (event.maxParticipants ?? 0) > 0 and (event.spotsLeft() ?? 0) <= 0 %} {% if is_pending %}
L’événement est en attente de validation.
{% endif %} {% if is_past %}
Cet événement est passé.
{% endif %} {% if is_full %}
Complet — plus d’inscriptions possibles.
{% endif %} {# Si tu ya tienes un método isRegisteredBy(User) úsalo; si no, el controlador puede pasar la variable #} {% set is_registered = (is_registered is defined) ? is_registered : (app.user and event.isRegisteredBy is defined ? event.isRegisteredBy(app.user) : false) %} {% if requires_login %} Se connecter pour s’inscrire {% elseif is_past %} {% elseif is_full and not is_registered %} {% elseif not is_published and not is_registered %} {% else %} {% if is_registered %}
{% else %}
{% endif %} {% endif %}
{# ---- Mapa ---- #} {% if event.lat and event.lng %}

Localisation

{% endif %}
{% endblock %} {% block javascripts %} {{ parent() }} {% if event.lat and event.lng %} {% endif %} {% endblock %}