From b2dadcfffda2351b6d774e4a9639ad82c21a2769 Mon Sep 17 00:00:00 2001 From: vgreb Date: Mon, 24 Aug 2026 23:50:20 +0200 Subject: [PATCH] =?UTF-8?q?Refonte=20visuelle=20page=20Super=20Ap=C3=A9ro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phpstan-baseline.php | 6 - sources/AppBundle/Twig/OfficesExtension.php | 3 +- templates/site/superapero.html.twig | 123 +++++++++--------- .../features/PublicSite/SuperApero.feature | 2 +- 4 files changed, 63 insertions(+), 71 deletions(-) diff --git a/phpstan-baseline.php b/phpstan-baseline.php index fc5f5be0e..8d46fc323 100644 --- a/phpstan-baseline.php +++ b/phpstan-baseline.php @@ -9805,12 +9805,6 @@ 'count' => 1, 'path' => __DIR__ . '/sources/AppBundle/Twig/AssetsExtension.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Cannot access property \\$urlName on AppBundle\\\\Antennes\\\\Meetup\\|null\\.$#', - 'identifier' => 'property.nonObject', - 'count' => 1, - 'path' => __DIR__ . '/sources/AppBundle/Twig/OfficesExtension.php', -]; $ignoreErrors[] = [ 'message' => '#^Parameter \\#1 \\$code of method AppBundle\\\\Antennes\\\\AntenneRepository\\:\\:findByCode\\(\\) expects string, mixed given\\.$#', 'identifier' => 'argument.type', diff --git a/sources/AppBundle/Twig/OfficesExtension.php b/sources/AppBundle/Twig/OfficesExtension.php index 72aa16f36..e9d13b898 100644 --- a/sources/AppBundle/Twig/OfficesExtension.php +++ b/sources/AppBundle/Twig/OfficesExtension.php @@ -18,7 +18,8 @@ public function getFunctions(): array return [ new TwigFunction('office_name', fn($code): string => $this->antennesRepository->findByCode($code)->label), new TwigFunction('office_logo', fn($code): string => $this->antennesRepository->findByCode($code)->logoUrl), - new TwigFunction('office_meetup_urlname', fn($code) => $this->antennesRepository->findByCode($code)->meetup->urlName), + // Toutes les antennes n'ont pas de groupe Meetup (ex : Clermont), d'où le `?->` + new TwigFunction('office_meetup_urlname', fn($code) => $this->antennesRepository->findByCode($code)->meetup?->urlName), ]; } } diff --git a/templates/site/superapero.html.twig b/templates/site/superapero.html.twig index d79bb8d66..118c693ee 100644 --- a/templates/site/superapero.html.twig +++ b/templates/site/superapero.html.twig @@ -1,81 +1,78 @@ -{% extends 'site/base.html.twig' %} -{% block stylesheets %} - {{ parent() }} - - - +{% block metas %} + {{ parent() }} - - + + {% endblock %} {% block content %} -
-
-

- - Super-apéro PHP - -

-

Des apéros PHP le même jour dans toutes les antennes !

+ {# En-tête pleine largeur sur le voile bleu nuit des autres pages refondues. + Le logo « apéro avec une cape » remplace les deux images qui encadraient le H1. #} +
+
+ -
-

Bloquez votre soirée du {{ superApero.date|format_date(pattern='EEEE d MMMM', locale='fr') }} et rendez-vous dans votre antenne locale pour une soirée de conférences et d'échanges, où toute la communauté PHP sera invitée à lever son verre pour célébrer le langage !

-
+
+

Super-apéro PHP

+

Des apéros PHP le même jour dans toutes les antennes !

+
- {% for meetup in superApero.meetups %} - {% if loop.index is odd %} -
- {% endif %} +

+ Bloquez votre soirée du + + et rendez-vous dans votre antenne locale pour une soirée de conférences et d'échanges, où toute la + communauté PHP sera invitée à lever son verre pour célébrer le langage ! +

-
-
-
- -
-
-

{{ office_name(meetup.antenne) }}

-
-
-
-
- {{ meetup.description|raw }} -
- {% if meetup.meetupId %} -
- S'inscrire +
+
+
+ +
+
+ Les antennes participantes + + {# La grille remplace le découpage manuel en rangées de deux (`loop.index is odd` + + `col-md-6`) : plus de balises ouvertes/fermées à cheval sur la boucle. #} +
+ {% for meetup in superApero.meetups %} + +
+
+ +
+

{{ office_name(meetup.antenne) }}

- {% endif %} -
-
- {% if loop.index is even %} -
- {% endif %} - {% endfor %} + {% if meetup.description %} +
{{ meetup.description|raw }}
+ {% endif %} - {% if superApero.meetups|length is odd %} -
- {% endif %} + {# Sans groupe Meetup l'URL d'inscription serait tronquée : on n'affiche + alors pas de bouton plutôt qu'un lien cassé. #} + {% set meetup_urlname = office_meetup_urlname(meetup.antenne) %} + {% if meetup.meetupId and meetup_urlname %} + {# `mt-auto` : le bouton reste collé en bas, aligné d'une carte à + l'autre quelle que soit la longueur de la description. #} +
+ S'inscrire +
+ {% endif %} + + {% endfor %} +
+
-{% endblock %} +{% endblock %} diff --git a/tests/behat/features/PublicSite/SuperApero.feature b/tests/behat/features/PublicSite/SuperApero.feature index 93414aeba..5f6f3a1c5 100644 --- a/tests/behat/features/PublicSite/SuperApero.feature +++ b/tests/behat/features/PublicSite/SuperApero.feature @@ -39,6 +39,6 @@ Feature: Site Public - Super Apéro PHP # Affichage de la page du Super Apéro Given I am on "/super-apero" Then the current URL should match "#/association/super-apero$#" - And the "#main h1" element should contain "Super-apéro PHP" + And the "h1" element should contain "Super-apéro PHP" And the response should contain "Super Apéro PHP à Paris" And the response should contain "Super Apéro PHP à Bordeaux"