From 1cdcdf6f08a5bc69eb512203df1cd04936811144 Mon Sep 17 00:00:00 2001 From: Nathan Boiron Date: Mon, 10 Aug 2026 18:30:57 +0200 Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20brique=20de=20la=20refonte=20vi?= =?UTF-8?q?suelle=20de=202026?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On démarre avec une seule page, l'affichage d'un article d'actualité. Mise en place de : - une nouvelle feuille css indépendante de l'existant - Tailwindcss - les Twig components - les icones symfony/ux - un template de base --- .gitignore | 1 + Makefile | 1 + app/config/bundles.php | 4 + .../packages/symfonycasts_tailwind.yaml | 3 + app/config/packages/twig_component.yaml | 5 + app/config/packages/ux_icons.yaml | 2 + app/config/reference.php | 64 +- assets/fonts/glegoo-latin-400-normal.woff2 | Bin 0 -> 17504 bytes assets/fonts/glegoo-latin-700-normal.woff2 | Bin 0 -> 17884 bytes .../fonts/inter-latin-standard-normal.woff2 | Bin 0 -> 72920 bytes assets/icons/mdi/hamburger.svg | 1 + assets/icons/mdi/instagram.svg | 1 + assets/icons/mdi/linkedin.svg | 1 + assets/icons/mdi/mastodon.svg | 1 + assets/icons/mdi/rss.svg | 1 + assets/icons/mingcute/arrow-right-fill.svg | 1 + assets/icons/mingcute/close-fill.svg | 1 + assets/icons/simple-icons/bluesky.svg | 1 + assets/styles/app.css | 41 +- assets/styles/fonts.css | 23 + clevercloud/scripts/cc_post_build_hook.sh | 1 + compose.yml | 31 +- composer.json | 5 + composer.lock | 559 +++++++++++++++--- .../Controller/Website/News/DisplayAction.php | 21 - .../Website/NewsletterController.php | 3 +- .../AppBundle/Mailchimp/SubscriberType.php | 4 +- .../AppBundle/Twig/Components/MainFooter.php | 35 ++ .../AppBundle/Twig/Components/MainMenu.php | 95 +++ templates/base.html.twig | 3 +- templates/components/Alert.html.twig | 16 + templates/components/Button.html.twig | 22 + templates/components/Card.html.twig | 8 + templates/components/Card/Title.html.twig | 7 + templates/components/MainFooter.html.twig | 66 +++ templates/components/MainMenu.html.twig | 11 + templates/components/MainMenu/Item.html.twig | 13 + .../form_theme_tailwind_footer.html.twig | 26 + templates/site/base.html.twig | 4 - templates/site/base_tailwind.html.twig | 115 ++++ templates/site/news/display.html.twig | 148 +++-- templates/site/newsletter/subscribe.html.twig | 4 + tests/behat/features/PublicSite/News.feature | 3 +- 43 files changed, 1195 insertions(+), 157 deletions(-) create mode 100644 app/config/packages/symfonycasts_tailwind.yaml create mode 100644 app/config/packages/twig_component.yaml create mode 100644 app/config/packages/ux_icons.yaml create mode 100644 assets/fonts/glegoo-latin-400-normal.woff2 create mode 100644 assets/fonts/glegoo-latin-700-normal.woff2 create mode 100644 assets/fonts/inter-latin-standard-normal.woff2 create mode 100644 assets/icons/mdi/hamburger.svg create mode 100644 assets/icons/mdi/instagram.svg create mode 100644 assets/icons/mdi/linkedin.svg create mode 100644 assets/icons/mdi/mastodon.svg create mode 100644 assets/icons/mdi/rss.svg create mode 100644 assets/icons/mingcute/arrow-right-fill.svg create mode 100644 assets/icons/mingcute/close-fill.svg create mode 100644 assets/icons/simple-icons/bluesky.svg create mode 100644 assets/styles/fonts.css create mode 100644 sources/AppBundle/Twig/Components/MainFooter.php create mode 100644 sources/AppBundle/Twig/Components/MainMenu.php create mode 100644 templates/components/Alert.html.twig create mode 100644 templates/components/Button.html.twig create mode 100644 templates/components/Card.html.twig create mode 100644 templates/components/Card/Title.html.twig create mode 100644 templates/components/MainFooter.html.twig create mode 100644 templates/components/MainMenu.html.twig create mode 100644 templates/components/MainMenu/Item.html.twig create mode 100644 templates/form_theme_tailwind_footer.html.twig create mode 100644 templates/site/base_tailwind.html.twig diff --git a/.gitignore b/.gitignore index 95850d695..06208f574 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ js_dist drivers chromedriver.log /htdocs/dist +/app/var diff --git a/Makefile b/Makefile index e73fd750b..c9f748c1d 100644 --- a/Makefile +++ b/Makefile @@ -156,6 +156,7 @@ phpstan-update-baseline: assets: ./node_modules/.bin/webpack -p php bin/console importmap:install + php bin/console tailwind:build --minify ### Lancer le watcher pour les assets watch: diff --git a/app/config/bundles.php b/app/config/bundles.php index 43f35fdd4..9b999c1cf 100644 --- a/app/config/bundles.php +++ b/app/config/bundles.php @@ -19,4 +19,8 @@ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], CuyZ\ValinorBundle\ValinorBundle::class => ['all' => true], Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true], + Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], + TalesFromADev\Twig\Extra\Tailwind\Bridge\Symfony\Bundle\TalesFromADevTwigExtraTailwindBundle::class => ['all' => true], + Symfony\UX\Icons\UXIconsBundle::class => ['all' => true], ]; diff --git a/app/config/packages/symfonycasts_tailwind.yaml b/app/config/packages/symfonycasts_tailwind.yaml new file mode 100644 index 000000000..76abd0055 --- /dev/null +++ b/app/config/packages/symfonycasts_tailwind.yaml @@ -0,0 +1,3 @@ +symfonycasts_tailwind: + binary_version: v4.3.3 + input_css: '%kernel.project_dir%/../assets/styles/app.css' diff --git a/app/config/packages/twig_component.yaml b/app/config/packages/twig_component.yaml new file mode 100644 index 000000000..0443af807 --- /dev/null +++ b/app/config/packages/twig_component.yaml @@ -0,0 +1,5 @@ +twig_component: + anonymous_template_directory: 'components/' + defaults: + # Namespace & directory for components + AppBundle\Twig\Components\: 'components/' diff --git a/app/config/packages/ux_icons.yaml b/app/config/packages/ux_icons.yaml new file mode 100644 index 000000000..4fd331e31 --- /dev/null +++ b/app/config/packages/ux_icons.yaml @@ -0,0 +1,2 @@ +ux_icons: + icon_dir: "%kernel.project_dir%/../assets/icons" diff --git a/app/config/reference.php b/app/config/reference.php index d06f58d5e..d823aa9b6 100644 --- a/app/config/reference.php +++ b/app/config/reference.php @@ -1042,7 +1042,7 @@ * enabled?: bool|Param, // Default: false * }, * html?: bool|array{ - * enabled?: bool|Param, // Default: false + * enabled?: bool|Param, // Default: true * }, * markdown?: bool|array{ * enabled?: bool|Param, // Default: true @@ -1846,6 +1846,52 @@ * resolve_target_entities?: array, * }, * } + * @psalm-type SymfonycastsTailwindConfig = array{ + * input_css?: list, + * config_file?: scalar|Param|null, // Path to the tailwind.config.js file // Default: "%kernel.project_dir%/tailwind.config.js" + * binary?: scalar|Param|null, // The tailwind binary to use instead of downloading a new one // Default: null + * binary_version?: scalar|Param|null, // Tailwind CLI version to download - required unless "binary" is set (run "tailwind:init" to configure) // Default: null + * binary_platform?: "auto"|"linux-arm64"|"linux-arm64-musl"|"linux-x64"|"linux-x64-musl"|"macos-arm64"|"macos-x64"|"windows-x64"|Param, // Tailwind CLI platform to download - "auto" will try to detect the platform automatically // Default: "auto" + * postcss_config_file?: scalar|Param|null, // Path to PostCSS config file which is passed to the Tailwind CLI // Default: null + * strict_mode?: bool|Param|null, // When enabled, an exception will be thrown if there are no built assets (default: false in `test` env, true otherwise) // Default: null + * process_timeout?: int|Param, // Timeout in seconds for the Tailwind build process - use "0" to disable // Default: 60 + * } + * @psalm-type TwigComponentConfig = array{ + * defaults?: array, + * anonymous_template_directory?: scalar|Param|null, // Defaults to `components` + * profiler?: bool|array{ // Enables the profiler for Twig Component + * enabled?: bool|Param, // Default: "%kernel.debug%" + * collect_components?: bool|Param, // Collect components instances // Default: true + * }, + * } + * @psalm-type TalesFromADevTwigExtraTailwindConfig = array{ + * tailwind_merge?: array{ + * additional_configuration?: mixed, // Default: [] + * }, + * } + * @psalm-type UxIconsConfig = array{ + * icon_dir?: scalar|Param|null, // The local directory where icons are stored. // Default: "%kernel.project_dir%/assets/icons" + * default_icon_attributes?: array, + * icon_sets?: array, + * suffixes?: array, + * }>, + * }>, + * aliases?: array, + * iconify?: bool|array{ // Configuration for the remote icon service. + * enabled?: bool|Param, // Default: true + * on_demand?: bool|Param, // Whether to download icons "on demand". // Default: true + * auto_lock?: bool|Param, // Persist "on demand" icons to the local icon directory (see "icon_dir"). Recommended in dev only. Requires "on_demand" to be enabled. // Default: false + * endpoint?: scalar|Param|null, // The endpoint for the Iconify icons API. // Default: "https://api.iconify.design" + * }, + * ignore_not_found?: bool|Param, // Ignore error when an icon is not found. Set to 'true' to fail silently. // Default: false + * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -1863,6 +1909,10 @@ * tiime_new_relic?: TiimeNewRelicConfig, * valinor?: ValinorConfig, * doctrine?: DoctrineConfig, + * symfonycasts_tailwind?: SymfonycastsTailwindConfig, + * twig_component?: TwigComponentConfig, + * tales_from_a_dev_twig_extra_tailwind?: TalesFromADevTwigExtraTailwindConfig, + * ux_icons?: UxIconsConfig, * "when@dev"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -1882,6 +1932,10 @@ * web_profiler?: WebProfilerConfig, * valinor?: ValinorConfig, * doctrine?: DoctrineConfig, + * symfonycasts_tailwind?: SymfonycastsTailwindConfig, + * twig_component?: TwigComponentConfig, + * tales_from_a_dev_twig_extra_tailwind?: TalesFromADevTwigExtraTailwindConfig, + * ux_icons?: UxIconsConfig, * }, * "when@prod"?: array{ * imports?: ImportsConfig, @@ -1900,6 +1954,10 @@ * tiime_new_relic?: TiimeNewRelicConfig, * valinor?: ValinorConfig, * doctrine?: DoctrineConfig, + * symfonycasts_tailwind?: SymfonycastsTailwindConfig, + * twig_component?: TwigComponentConfig, + * tales_from_a_dev_twig_extra_tailwind?: TalesFromADevTwigExtraTailwindConfig, + * ux_icons?: UxIconsConfig, * }, * "when@test"?: array{ * imports?: ImportsConfig, @@ -1920,6 +1978,10 @@ * web_profiler?: WebProfilerConfig, * valinor?: ValinorConfig, * doctrine?: DoctrineConfig, + * symfonycasts_tailwind?: SymfonycastsTailwindConfig, + * twig_component?: TwigComponentConfig, + * tales_from_a_dev_twig_extra_tailwind?: TalesFromADevTwigExtraTailwindConfig, + * ux_icons?: UxIconsConfig, * }, * ...43I~L13~w9w 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 vqWn1Aaa4VTE&mL9?N49tVV33~w8B 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 LIbR$B0ssI2mSB3k literal 0 HcmV?d00001 diff --git a/assets/fonts/inter-latin-standard-normal.woff2 b/assets/fonts/inter-latin-standard-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b0d0e2e5c6bc11bf3696f830d73b4f7077cc33a4 GIT binary patch literal 72920 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

pc1s;McND3OpYOB1w(~IhfaAR@krpZ&3xU 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 TLuMqV=vyDN|CE#X0RR91K>c5) literal 0 HcmV?d00001 diff --git a/assets/icons/mdi/hamburger.svg b/assets/icons/mdi/hamburger.svg new file mode 100644 index 000000000..99484fc65 --- /dev/null +++ b/assets/icons/mdi/hamburger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mdi/instagram.svg b/assets/icons/mdi/instagram.svg new file mode 100644 index 000000000..07d0e7269 --- /dev/null +++ b/assets/icons/mdi/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mdi/linkedin.svg b/assets/icons/mdi/linkedin.svg new file mode 100644 index 000000000..10456e2c0 --- /dev/null +++ b/assets/icons/mdi/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mdi/mastodon.svg b/assets/icons/mdi/mastodon.svg new file mode 100644 index 000000000..04036ebae --- /dev/null +++ b/assets/icons/mdi/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mdi/rss.svg b/assets/icons/mdi/rss.svg new file mode 100644 index 000000000..27e6ffb59 --- /dev/null +++ b/assets/icons/mdi/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mingcute/arrow-right-fill.svg b/assets/icons/mingcute/arrow-right-fill.svg new file mode 100644 index 000000000..7b07a1534 --- /dev/null +++ b/assets/icons/mingcute/arrow-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mingcute/close-fill.svg b/assets/icons/mingcute/close-fill.svg new file mode 100644 index 000000000..cf777efbb --- /dev/null +++ b/assets/icons/mingcute/close-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/simple-icons/bluesky.svg b/assets/icons/simple-icons/bluesky.svg new file mode 100644 index 000000000..981faa0af --- /dev/null +++ b/assets/icons/simple-icons/bluesky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/styles/app.css b/assets/styles/app.css index 5b09288ee..8faee250c 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -1,7 +1,36 @@ -body { - background-color: #ddd; - color: #3e3d40; - font-family: helvetica,arial,sans-serif; - font-size: 1.3em; - line-height: 1.54; +@import "./fonts.css"; +@import "tailwindcss" source(none); +@source "../../templates"; + +@plugin "@tailwindcss/typography"; + +@theme { + --color-afup-100: #E6F3F9; + --color-afup-300: #36A7DF; + --color-afup-500: #007BBA; + --color-afup-700: #2B3E74; + --color-afup-800: #1D2241; + --color-afup-900: #181C33; + + --color-neutre-200: #F4F5F8; + --color-neutre-300: #E5E7EB; + --color-neutre-400: #929292; + --color-neutre-700: #3E3D40; + + --color-ruby-400: #ed0678; + --color-ruby-500: #D50068; + --color-ruby-700: #B30057; + + /* Surcharge de la police par défaut des pages */ + --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif; + + /* Police utilisée pour les titres */ + --font-titre: "Glegoo", ui-serif, Georgia, serif; +} + +@layer base { + body { + /* Désactive les effets (italic, gras, etc) automatiques des polices pour prioriser les version contenues dans les polices */ + font-synthesis: none; + } } diff --git a/assets/styles/fonts.css b/assets/styles/fonts.css new file mode 100644 index 000000000..75537a2fb --- /dev/null +++ b/assets/styles/fonts.css @@ -0,0 +1,23 @@ +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("../fonts/inter-latin-standard-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Glegoo"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../fonts/glegoo-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Glegoo"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("../fonts/glegoo-latin-700-normal.woff2") format("woff2"); +} diff --git a/clevercloud/scripts/cc_post_build_hook.sh b/clevercloud/scripts/cc_post_build_hook.sh index 74a52fdf2..25fd55475 100755 --- a/clevercloud/scripts/cc_post_build_hook.sh +++ b/clevercloud/scripts/cc_post_build_hook.sh @@ -2,4 +2,5 @@ ./node_modules/.bin/webpack -p php bin/phinx migrate +php bin/console tailwind:build --minify php bin/console asset-map:compile diff --git a/compose.yml b/compose.yml index 193f65095..e1609de4e 100644 --- a/compose.yml +++ b/compose.yml @@ -1,4 +1,12 @@ # version 1.1 +x-apachephp-build: &apachephp-build + context: ./docker/dockerfiles/apachephp + target: ${APACHEPHP_TARGET:-full} + args: + uid: ${CURRENT_UID:-1001} + gid: "1001" + ENABLE_XDEBUG: ${ENABLE_XDEBUG:-false} + services: db: build: ./docker/dockerfiles/mysql @@ -25,13 +33,7 @@ services: retries: 10 apachephp: - build: - context: ./docker/dockerfiles/apachephp - target: ${APACHEPHP_TARGET:-full} - args: - uid: ${CURRENT_UID:-1001} - gid: "1001" - ENABLE_XDEBUG: ${ENABLE_XDEBUG:-false} + build: *apachephp-build environment: APP_ENV: "dev" HOST_PWD: ${PWD} @@ -46,6 +48,21 @@ services: - db - mailcatcher + # Watcher Tailwind : recompile le CSS à chaque modification des templates + tailwind: + build: *apachephp-build + user: localUser + working_dir: /var/www/html + init: true + restart: unless-stopped + command: php bin/console tailwind:build --watch + environment: + APP_ENV: "dev" + env_file: + .env + volumes: + - ./:/var/www/html + apachephptest: build: context: ./docker/dockerfiles/apachephp diff --git a/composer.json b/composer.json index e224447a7..c87bf3b3f 100644 --- a/composer.json +++ b/composer.json @@ -65,11 +65,16 @@ "symfony/string": "7.4.*", "symfony/translation": "7.4.*", "symfony/twig-pack": "^1.0", + "symfony/ux-icons": "^3.4", + "symfony/ux-twig-component": "^3.4", "symfony/validator": "7.4.*", "symfony/var-exporter": "7.4.*", "symfony/yaml": "7.4.*", + "symfonycasts/tailwind-bundle": "^1.0", + "tales-from-a-dev/twig-tailwind-extra": "^1.2", "tiime/newrelic-bundle": "^1.0", "twig/extra-bundle": "^3.24", + "twig/html-extra": "^3.28", "twig/intl-extra": "^3.26", "twig/markdown-extra": "^3.26", "twig/string-extra": "^3.24", diff --git a/composer.lock b/composer.lock index bf396db41..4760c9591 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7dffec4c78a5011d25a1c95d579d11e7", + "content-hash": "9099bba755d2399acd86f9ab29bc50a2", "packages": [ { "name": "algolia/algoliasearch-client-php", @@ -9083,6 +9083,71 @@ ], "time": "2026-05-26T12:51:13+00:00" }, + { + "name": "symfony/process", + "version": "v8.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/c4a9e58f235a6bf7f97ffbfedae2687353ac79e5", + "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5", + "shasum": "" + }, + "require": { + "php": ">=8.4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v8.1.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-29T05:06:50+00:00" + }, { "name": "symfony/property-access", "version": "v7.4.8", @@ -10587,6 +10652,188 @@ ], "time": "2026-05-29T05:06:50+00:00" }, + { + "name": "symfony/ux-icons", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-icons.git", + "reference": "117b5d9bc9652f364495d586235b9e1f1f7c9d52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-icons/zipball/117b5d9bc9652f364495d586235b9e1f1f7c9d52", + "reference": "117b5d9bc9652f364495d586235b9e1f1f7c9d52", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/twig-bundle": "^7.4|^8.0" + }, + "conflict": { + "symfony/flex": "<1.13", + "symfony/ux-twig-component": "<2.21" + }, + "require-dev": { + "phpunit/phpunit": "^11.1|^12.0", + "psr/log": "^2|^3", + "symfony/asset-mapper": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/ux-twig-component": "^2.14|^3.0", + "zenstruck/console-test": "^1.5" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\Icons\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" + }, + { + "name": "Simon André", + "email": "smn.andre@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Renders local and remote SVG icons in your Twig templates.", + "homepage": "https://symfony.com", + "keywords": [ + "icons", + "svg", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-icons/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-07-29T16:44:14+00:00" + }, + { + "name": "symfony/ux-twig-component", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-twig-component.git", + "reference": "520e1da46bbb5974a2cf5839369aec3c8fc1a6f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/520e1da46bbb5974a2cf5839369aec3c8fc1a6f0", + "reference": "520e1da46bbb5974a2cf5839369aec3c8fc1a6f0", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "twig/twig": "^3.10.3" + }, + "conflict": { + "symfony/config": "<6.4" + }, + "require-dev": { + "phpunit/phpunit": "^11.1|^12.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/stimulus-bundle": "^2.9.1|^3.0", + "symfony/twig-bundle": "^7.4|^8.0", + "twig/extra-bundle": "^3.10.3", + "twig/html-extra": "^3.10.3" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\TwigComponent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Twig components for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "components", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-twig-component/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-07-28T06:36:17+00:00" + }, { "name": "symfony/validator", "version": "v7.4.10", @@ -10935,6 +11182,183 @@ ], "time": "2026-05-25T06:06:12+00:00" }, + { + "name": "symfonycasts/tailwind-bundle", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/SymfonyCasts/tailwind-bundle.git", + "reference": "9b0afba9144e5f8fbffe01282c054e835bedd0a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SymfonyCasts/tailwind-bundle/zipball/9b0afba9144e5f8fbffe01282c054e835bedd0a0", + "reference": "9b0afba9144e5f8fbffe01282c054e835bedd0a0", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^8.1", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfonycasts\\TailwindBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Weaver", + "homepage": "https://symfonycasts.com" + } + ], + "description": "Delightful Tailwind Support for Symfony + AssetMapper", + "keywords": [ + "asset-mapper", + "tailwind" + ], + "support": { + "issues": "https://github.com/SymfonyCasts/tailwind-bundle/issues", + "source": "https://github.com/SymfonyCasts/tailwind-bundle/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://symfonycasts.com", + "type": "custom" + } + ], + "time": "2026-07-23T02:04:59+00:00" + }, + { + "name": "tales-from-a-dev/tailwind-merge-php", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/tales-from-a-dev/tailwind-merge-php.git", + "reference": "48ecbb5c87ebcc521a344a6d3bfeec9720af00da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tales-from-a-dev/tailwind-merge-php/zipball/48ecbb5c87ebcc521a344a6d3bfeec9720af00da", + "reference": "48ecbb5c87ebcc521a344a6d3bfeec9720af00da", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/simple-cache": "^3.0", + "symfony/string": "^6.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.89", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "TalesFromADev\\TailwindMerge\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" + }, + { + "name": "Romain Monteil", + "email": "monteil.romain@gmail.com" + } + ], + "description": "TailwindMerge for PHP merges multiple Tailwind CSS classes by automatically resolving conflicts between them", + "homepage": "https://github.com/tales-from-a-dev/tailwind-merge-php", + "keywords": [ + "classes", + "merge", + "php", + "tailwindcss" + ], + "support": { + "issues": "https://github.com/tales-from-a-dev/tailwind-merge-php/issues", + "source": "https://github.com/tales-from-a-dev/tailwind-merge-php/tree/v0.3.0" + }, + "time": "2026-05-11T09:52:11+00:00" + }, + { + "name": "tales-from-a-dev/twig-tailwind-extra", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/tales-from-a-dev/twig-tailwind-extra.git", + "reference": "bdc48d7da01383dc95e5d232344bc758aae1f80d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tales-from-a-dev/twig-tailwind-extra/zipball/bdc48d7da01383dc95e5d232344bc758aae1f80d", + "reference": "bdc48d7da01383dc95e5d232344bc758aae1f80d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/cache": "^6.4 || ^7.0 || ^8.0", + "symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0", + "tales-from-a-dev/tailwind-merge-php": "^0.3", + "twig/html-extra": "^3.24", + "twig/twig": "^3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.38", + "symfony/phpunit-bridge": "^6.4 || ^7.0 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0" + }, + "type": "twig", + "autoload": { + "psr-4": { + "TalesFromADev\\Twig\\Extra\\Tailwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Monteil", + "email": "monteil.romain@gmail.com" + } + ], + "description": "A Twig extension for Tailwind", + "homepage": "https://github.com/tales-from-a-dev/twig-tailwind-extra", + "keywords": [ + "extension", + "symfony", + "tailwind", + "twig" + ], + "support": { + "issues": "https://github.com/tales-from-a-dev/twig-tailwind-extra/issues", + "source": "https://github.com/tales-from-a-dev/twig-tailwind-extra/tree/v1.3.0" + }, + "time": "2026-08-09T15:21:26+00:00" + }, { "name": "tiime/newrelic-bundle", "version": "v1.0.3", @@ -11074,6 +11498,74 @@ ], "time": "2026-02-07T08:07:38+00:00" }, + { + "name": "twig/html-extra", + "version": "v3.28.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/html-extra.git", + "reference": "760893ed7bdd0a381e4e00004c6f6e26ad3881d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/760893ed7bdd0a381e4e00004c6f6e26ad3881d7", + "reference": "760893ed7bdd0a381e4e00004c6f6e26ad3881d7", + "shasum": "" + }, + "require": { + "php": ">=8.1.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/mime": "^5.4|^6.4|^7.0|^8.0", + "twig/twig": "^3.13|^4.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Twig\\Extra\\Html\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension for HTML", + "homepage": "https://twig.symfony.com", + "keywords": [ + "html", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/html-extra/tree/v3.28.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2026-06-25T06:50:01+00:00" + }, { "name": "twig/intl-extra", "version": "v3.26.0", @@ -15987,71 +16479,6 @@ ], "time": "2026-01-08T05:29:21+00:00" }, - { - "name": "symfony/process", - "version": "v8.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c4a9e58f235a6bf7f97ffbfedae2687353ac79e5", - "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5", - "shasum": "" - }, - "require": { - "php": ">=8.4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v8.1.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-29T05:06:50+00:00" - }, { "name": "symfony/web-profiler-bundle", "version": "v7.4.13", diff --git a/sources/AppBundle/Controller/Website/News/DisplayAction.php b/sources/AppBundle/Controller/Website/News/DisplayAction.php index ae082e753..4f45dc076 100644 --- a/sources/AppBundle/Controller/Website/News/DisplayAction.php +++ b/sources/AppBundle/Controller/Website/News/DisplayAction.php @@ -11,7 +11,6 @@ use AppBundle\Site\Enum\ArticleEtat; use AppBundle\Twig\ViewRenderer; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; @@ -22,8 +21,6 @@ public function __construct( private readonly AuthorizationCheckerInterface $authorizationChecker, private readonly EventRepository $eventRepository, private readonly ArticleRepository $articleRepository, - #[Autowire('%kernel.project_dir%')] - private readonly string $projectDir, ) {} public function __invoke(string $code): Response @@ -39,7 +36,6 @@ public function __invoke(string $code): Response return $this->view->render('site/news/display.html.twig', [ 'article' => $article, - 'header_image' => $this->getHeaderImageUrl($article), 'previous' => $this->articleRepository->findPrevious($article), 'next' => $this->articleRepository->findNext($article), 'related_event' => $this->getRelatedEvent($article), @@ -54,21 +50,4 @@ private function getRelatedEvent(Article $article): ?Event return $this->eventRepository->get($article->idEvent); } - - private function getHeaderImageUrl(Article $article): ?string - { - if (null === $article->theme) { - return null; - } - - $image = '/images/news/' . $article->theme->value . '.png'; - - $url = $this->projectDir . '/htdocs' . $image ; - - if (false === is_file($url)) { - return null; - } - - return $image; - } } diff --git a/sources/AppBundle/Controller/Website/NewsletterController.php b/sources/AppBundle/Controller/Website/NewsletterController.php index 4818bf573..5e3dd66ed 100644 --- a/sources/AppBundle/Controller/Website/NewsletterController.php +++ b/sources/AppBundle/Controller/Website/NewsletterController.php @@ -23,10 +23,11 @@ public function __construct( private readonly string $mailchimpSubscribersList, ) {} - public function subscribeForm(): Response + public function subscribeForm(?string $formTheme = null): Response { return $this->render('site/newsletter/subscribe.html.twig', [ 'form' => $this->getSubscriberType()->createView(), + 'formTheme' => $formTheme, ]); } diff --git a/sources/AppBundle/Mailchimp/SubscriberType.php b/sources/AppBundle/Mailchimp/SubscriberType.php index 17195884f..ddf48ca9e 100644 --- a/sources/AppBundle/Mailchimp/SubscriberType.php +++ b/sources/AppBundle/Mailchimp/SubscriberType.php @@ -14,8 +14,8 @@ class SubscriberType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options): void { $builder - ->add('email', EmailType::class, ['attr' => ['placeholder' => 'Entrer son email pour s\'abonner'], 'label' => false]) - ->add('save', SubmitType::class, ['label' => 'OK']) + ->add('email', EmailType::class, ['attr' => ['placeholder' => 'Votre adresse email'], 'label' => false]) + ->add('save', SubmitType::class, ['label' => "S'abonner"]) ; } } diff --git a/sources/AppBundle/Twig/Components/MainFooter.php b/sources/AppBundle/Twig/Components/MainFooter.php new file mode 100644 index 000000000..af552ee07 --- /dev/null +++ b/sources/AppBundle/Twig/Components/MainFooter.php @@ -0,0 +1,35 @@ +}> + */ + public function getColumns(): array + { + $footerColumns = []; + foreach ($this->feuilleRepository->getFeuillesEnfant(Feuille::ID_FEUILLE_FOOTER) as $feuilleColonne) { + if ($feuilleColonne->nom === null || $feuilleColonne->id === null) { + continue; + } + + $footerColumns[] = [ + 'nom' => $feuilleColonne->nom, + 'items' => $this->feuilleRepository->getFeuillesEnfant($feuilleColonne->id), + ]; + } + + return $footerColumns; + } +} diff --git a/sources/AppBundle/Twig/Components/MainMenu.php b/sources/AppBundle/Twig/Components/MainMenu.php new file mode 100644 index 000000000..69e431118 --- /dev/null +++ b/sources/AppBundle/Twig/Components/MainMenu.php @@ -0,0 +1,95 @@ + + */ + public function getFeuilles(): array + { + $feuillesEnfants = $this->feuilleRepository->getFeuillesEnfant(Feuille::ID_FEUILLE_HEADER); + + if ($this->authentication->getAfupUserOrNull() instanceof UserInterface) { + $feuilleLogin = new FeuilleEntity(); + $feuilleLogin->idParent = Feuille::ID_FEUILLE_HEADER; + $feuilleLogin->lien = '/member'; + $feuilleLogin->alt = ''; + $feuilleLogin->position = 999; + $feuilleLogin->etat = 1; + $feuilleLogin->id = PHP_INT_MAX; + $feuilleLogin->nom = 'Espace membre'; + $feuilleLogin->patterns = "#/admin/company#"; + + $feuillesEnfants[] = $feuilleLogin; + } + + $currentUri = $this->requestStack->getCurrentRequest()?->getRequestUri() ?? ''; + $feuilles = []; + + foreach ($feuillesEnfants as $feuille) { + if ($feuille->lien === null || $feuille->nom === null || $feuille->id === null) { + continue; + } + + $isCurrent = false; + if ($feuille->patterns) { + foreach (explode(PHP_EOL, (string) $feuille->patterns) as $pattern) { + $pattern = trim($pattern); + if ($pattern === '') { + continue; + } + + if (preg_match($pattern, $currentUri)) { + $isCurrent = true; + } + } + } + + if (str_contains($currentUri, (string) $feuille->lien)) { + $isCurrent = true; + } + + if (false === $isCurrent) { + $enfants = $this->feuilleRepository->getFeuillesEnfant($feuille->id); + foreach ($enfants as $feuilleEnfant) { + if ($feuilleEnfant->id === null) { + continue; + } + + foreach ($this->feuilleRepository->getFeuillesEnfant($feuilleEnfant->id) as $feuilleEnfant2) { + if (str_contains($currentUri, (string) $feuilleEnfant2->lien)) { + $isCurrent = true; + } + } + } + } + + $feuilles[] = [ + 'isCurrent' => $isCurrent, + 'lien' => $feuille->lien, + 'nom' => $feuille->nom, + ]; + } + + return $feuilles; + } +} diff --git a/templates/base.html.twig b/templates/base.html.twig index 63add5240..82195e8b5 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -26,6 +26,8 @@ {% include 'google_analytics.html.twig' %} {% endif %} {% endblock %} + + {% block importmap '' %} Aller au contenu @@ -58,6 +60,5 @@ {% block footer '' %} {% block javascripts '' %} - {% block importmap '' %} diff --git a/templates/components/Alert.html.twig b/templates/components/Alert.html.twig new file mode 100644 index 000000000..b0a1d420f --- /dev/null +++ b/templates/components/Alert.html.twig @@ -0,0 +1,16 @@ +{# @prop type 'error'|'warning'|'sucess' Le type d'alerte #} +{# @block content Contenu de l'alerte #} +{%- props type = 'success' -%} +{%- set style = html_cva( + base: "border-l-4 p-4", + variants: { + type: { + error: 'bg-red-100 border-red-500 text-red-700', + warning: 'bg-yellow-100 border-yellow-500 text-yellow-700', + success: 'bg-green-100 border-green-500 text-green-700', + }, + }, +) -%} +

+ {%- block content %}{% endblock -%} +
diff --git a/templates/components/Button.html.twig b/templates/components/Button.html.twig new file mode 100644 index 000000000..a20a256b2 --- /dev/null +++ b/templates/components/Button.html.twig @@ -0,0 +1,22 @@ +{# @prop variant 'primary'|'secondary'|'tertiary' Quel genre de bouton #} +{# @block content Contenu du bouton #} +{# @prop as 'button'|'a' Tag HTML #} +{%- props variant = 'primary', as = 'button' -%} +{%- set style = html_cva( + base: "items-center justify-center rounded-lg border border-transparent bg-clip-border text-sm font-medium whitespace-nowrap px-3 py-2", + variants: { + variant: { + primary: 'bg-ruby-500 text-white hover:bg-ruby-700', + secondary: 'bg-white text-neutre-700 border-neutre-300 hover:bg-afup-700 hover:text-white hover:border-afup-700', + tertiary: 'bg-afup-100 text-afup-500 hover:bg-afup-500 hover:text-white', + }, + }, +) -%} +<{{ as }} + class="{{ style.apply({variant}, attributes.render('class'))|tailwind_merge }}" + {{ attributes.defaults({ + type: 'button', + }) }} +> + {%- block content %}{% endblock -%} + diff --git a/templates/components/Card.html.twig b/templates/components/Card.html.twig new file mode 100644 index 000000000..cf39970d0 --- /dev/null +++ b/templates/components/Card.html.twig @@ -0,0 +1,8 @@ +{# @block content Contenu de la carte #} +{%- set style = html_cva( + base: "border-2 border-neutre-300 p-5 rounded-2xl", +) -%} +
+{%- block content %}{% endblock -%} +
diff --git a/templates/components/Card/Title.html.twig b/templates/components/Card/Title.html.twig new file mode 100644 index 000000000..3cbd4a806 --- /dev/null +++ b/templates/components/Card/Title.html.twig @@ -0,0 +1,7 @@ +{# @block content Contenu du titre #} +{%- set style = html_cva( + base: "text-afup-800 font-titre font-light text-lg mb-5", +) -%} +

+ {%- block content %}{% endblock -%} +

diff --git a/templates/components/MainFooter.html.twig b/templates/components/MainFooter.html.twig new file mode 100644 index 000000000..03841b257 --- /dev/null +++ b/templates/components/MainFooter.html.twig @@ -0,0 +1,66 @@ +
+
+
+ + + +
+
+ +
+
+ {% for column in this.columns %} +
+

{{ column.nom }}

+ +
+ {% for item in column.items %} + {{ item.nom }} + {% endfor %} +
+
+ {% endfor %} +
+
+ +
+
+

+ Hébergé sur Clever Cloud, + code source sur GitHub +

+

+ © AFUP 2000-{{ "now"|date('Y') }} +

+
+
+
diff --git a/templates/components/MainMenu.html.twig b/templates/components/MainMenu.html.twig new file mode 100644 index 000000000..a1c7c3cd6 --- /dev/null +++ b/templates/components/MainMenu.html.twig @@ -0,0 +1,11 @@ + diff --git a/templates/components/MainMenu/Item.html.twig b/templates/components/MainMenu/Item.html.twig new file mode 100644 index 000000000..86fa45181 --- /dev/null +++ b/templates/components/MainMenu/Item.html.twig @@ -0,0 +1,13 @@ +{# @prop variant 'default'|'active' Le type d'entrée #} +{# @block content Label du menu #} +{%- props variant = 'default' -%} +{%- set style = html_cva( + base: "px-4 py-4 font-inter whitespace-nowrap", + variants: { + variant: { + default: 'hover:text-black hover:bg-white', + active: 'text-black bg-white', + }, + }, +) -%} +{%- block content %}{% endblock -%} diff --git a/templates/form_theme_tailwind_footer.html.twig b/templates/form_theme_tailwind_footer.html.twig new file mode 100644 index 000000000..0e0c02302 --- /dev/null +++ b/templates/form_theme_tailwind_footer.html.twig @@ -0,0 +1,26 @@ +{% use 'form_div_layout.html.twig' %} + +{% block form_start %} + {% set attr = attr|merge({class: (attr.class|default('') ~ ' flex flex-row')|trim}) %} + {{ parent() }} +{% endblock form_start %} + +{% block form_widget_compound -%} + {%- if form is rootform %}{{ form_errors(form) }}{% endif -%} + {{- block('form_rows') -}} + {{- form_rest(form) -}} +{%- endblock form_widget_compound %} + +{% block form_row %}{{ form_widget(form) }}{% endblock form_row %} + +{% block button_row %}{{ form_widget(form) }}{% endblock button_row %} + +{% block email_widget %} + {% set attr = attr|merge({class: (attr.class|default('') ~ ' bg-white text-neutre-400 py-2 px-4 rounded-l-lg')|trim}) %} + {{ parent() }} +{% endblock email_widget %} + +{% block submit_widget %} + {% set attr = attr|merge({class: (attr.class|default('') ~ ' bg-ruby-400 text-white py-2 px-4 rounded-r-lg hover:bg-ruby-700 cursor-pointer')|trim}) %} + {{ parent() }} +{% endblock submit_widget %} diff --git a/templates/site/base.html.twig b/templates/site/base.html.twig index a2e13c9e5..ff61c51e3 100644 --- a/templates/site/base.html.twig +++ b/templates/site/base.html.twig @@ -128,7 +128,3 @@ {% endautoescape %} {% endblock %} - -{% block importmap %} - {{ importmap('app') }} -{% endblock %} diff --git a/templates/site/base_tailwind.html.twig b/templates/site/base_tailwind.html.twig new file mode 100644 index 000000000..39ac90fce --- /dev/null +++ b/templates/site/base_tailwind.html.twig @@ -0,0 +1,115 @@ + + + + + + + {% block metas %}{% endblock %} + + {% block title %}AFUP{% endblock %} + + + + + + + + {# Préchargement des polices pour éviter l'effet d'apparition #} + + + + {% block canonical %} + {% if app.request.attributes.get('_route') %} + + {% endif %} + {% endblock %} + + {% block head %} + {% endblock %} + + {% block stylesheets %} + + {% endblock %} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + {% block google_analytics %} + {% if google_analytics_enabled %} + {% include 'google_analytics.html.twig' %} + {% endif %} + {% endblock %} + + + +
+ + +
+ L'AFUP est en difficulté, + découvrez comment aider l'association. +
+ + {% set account_buttons %} + {% if app.user %} + {% if is_granted('ROLE_ADMIN') %} + Administration + {% endif %} + Se déconnecter + {% else %} + Se connecter + Adhérer + {% endif %} + {% endset %} + +
+
+
+ + + + + + +
+
+ + + {{ account_buttons }} + +
+ +
+ {% block content %}{% endblock %} +
+
+ + + + + diff --git a/templates/site/news/display.html.twig b/templates/site/news/display.html.twig index 952498fde..60e9c2625 100644 --- a/templates/site/news/display.html.twig +++ b/templates/site/news/display.html.twig @@ -1,9 +1,6 @@ -{% extends 'site/base.html.twig' %} - -{% block title %}{{ article.titre }} - AFUP{% endblock %} +{% extends 'site/base_tailwind.html.twig' %} {% block metas %} - {{ parent() }} @@ -15,71 +12,128 @@ {% endblock %} -{% block body_css %}migrated-page{% endblock %} +{% block title %}{{ article.titre }} - AFUP{% endblock %} {% block content %} - {% if header_image %} -
- -
- {% endif %} - -
-
-
-
-
-
+
+
+
+ {% if article.etat == enum('AppBundle\\Site\\Enum\\ArticleEtat').HorsLigne %} + + Hors ligne : article supprimé + + {% elseif article.etat == enum('AppBundle\\Site\\Enum\\ArticleEtat').EnAttente %} + + En attente : article non publié + + {% endif %} +
- {% if article.etat == enum('AppBundle\\Site\\Enum\\ArticleEtat').HorsLigne %} -
Hors ligne : article supprimé
- {% elseif article.etat == enum('AppBundle\\Site\\Enum\\ArticleEtat').EnAttente %} -
En attente : article non publié
- {% endif %} +
+
+

{{ article.titre }}

+
+ + {{ article.datePublication|format_date('long') }} + + +
+
-
+
+
{{ article.chapeau|markdown_to_html }} -
+
- {{ article.contenu|markdown_to_html }} +
+ {{ article.contenu|markdown_to_html }} +
+ -
+
+
-

+

{% if article.theme %} - Thème : {{ article.theme.label }} / + + {{ article.theme.label }} + {% endif %} + {% if related_event %} - Cycle de conférences : {{ related_event.title }} / + + {{ related_event.title }} + {% endif %} + {% set year = article.datePublication|date('Y') %} - Année : {{ year }} -

+ + {% if not article.theme and not related_event %} + Publié en + {% endif %} + {{ year }} + +
+
+ +
- {% if previous or next %} - +
-
+ {% endif %}
+ {% endblock %} diff --git a/templates/site/newsletter/subscribe.html.twig b/templates/site/newsletter/subscribe.html.twig index e2b7d2895..c94f31637 100644 --- a/templates/site/newsletter/subscribe.html.twig +++ b/templates/site/newsletter/subscribe.html.twig @@ -1,3 +1,7 @@ +{% if formTheme is defined and formTheme is not null %} + {% form_theme form formTheme %} +{% endif %} + {{ form_start(form) }} {{ form_row(form.email) }} {{ form_widget(form) }} diff --git a/tests/behat/features/PublicSite/News.feature b/tests/behat/features/PublicSite/News.feature index 69efd5586..0ce6c05fe 100644 --- a/tests/behat/features/PublicSite/News.feature +++ b/tests/behat/features/PublicSite/News.feature @@ -8,7 +8,8 @@ Feature: Site Public - News And I should see "Les vidéos des talks du Forum PHP 2018 sont disponibles" And I follow "Lire l'article: Les vidéos des talks du Forum PHP 2018 sont disponibles" Then I should see "Les vidéos des talks du Forum PHP 2018 sont disponibles" - Then I should see "Cycle de conférences : forum / Année : 2018" + Then I should see "forum" + Then I should see "2018" @reloadDbWithTestData Scenario: Filtre sur les actualités