From 0440198802965decfc4e3d405ab249ea67374a0b Mon Sep 17 00:00:00 2001
From: Camille Simiand <camille.simiand@tetras-libre.fr>
Date: Wed, 9 Mar 2022 17:02:12 +0100
Subject: [PATCH] WIP - add switch buttons en/fr

---
 composer.json                        |  5 +-
 composer.lock                        | 75 ++++++++++++++++++++++++++--
 src/Controller/CapsuleController.php |  2 +-
 src/Entity/User.php                  |  2 +-
 symfony.lock                         |  3 ++
 templates/layout.html.twig           | 10 ++++
 6 files changed, 90 insertions(+), 7 deletions(-)

diff --git a/composer.json b/composer.json
index a2d655a..9e04f2e 100644
--- a/composer.json
+++ b/composer.json
@@ -7,6 +7,7 @@
         "php": ">=8.1",
         "ext-ctype": "*",
         "ext-curl": "*",
+        "ext-gd": "*",
         "ext-iconv": "*",
         "ext-json": "*",
         "ext-simplexml": "*",
@@ -54,8 +55,8 @@
         "symfonycasts/reset-password-bundle": "^1.11",
         "symfonycasts/verify-email-bundle": "^1.6",
         "twig/extra-bundle": "^2.12|^3.0",
-        "twig/twig": "^2.12|^3.0",
-        "ext-gd": "*"
+        "twig/intl-extra": "^3.3",
+        "twig/twig": "^2.12|^3.0"
     },
     "require-dev": {
         "ext-dom": "*",
diff --git a/composer.lock b/composer.lock
index fbf4837..9f30203 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": "fd7c9a34c6ba09c3a42ece90733af736",
+    "content-hash": "077d009e42a0c08b3582c05e161c5bf8",
     "packages": [
         {
             "name": "composer/package-versions-deprecated",
@@ -8148,6 +8148,75 @@
             ],
             "time": "2022-01-04T13:58:53+00:00"
         },
+        {
+            "name": "twig/intl-extra",
+            "version": "v3.3.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/twigphp/intl-extra.git",
+                "reference": "8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84",
+                "reference": "8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/intl": "^4.4|^5.0|^6.0",
+                "twig/twig": "^2.7|^3.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Twig\\Extra\\Intl\\": ""
+                },
+                "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 Intl",
+            "homepage": "https://twig.symfony.com",
+            "keywords": [
+                "intl",
+                "twig"
+            ],
+            "support": {
+                "source": "https://github.com/twigphp/intl-extra/tree/v3.3.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T10:02:25+00:00"
+        },
         {
             "name": "twig/twig",
             "version": "v3.3.8",
@@ -11156,11 +11225,11 @@
         "php": ">=8.1",
         "ext-ctype": "*",
         "ext-curl": "*",
+        "ext-gd": "*",
         "ext-iconv": "*",
         "ext-json": "*",
         "ext-simplexml": "*",
-        "ext-zip": "^1.15",
-        "ext-gd": "*"
+        "ext-zip": "^1.15"
     },
     "platform-dev": {
         "ext-dom": "*"
diff --git a/src/Controller/CapsuleController.php b/src/Controller/CapsuleController.php
index 4f37f03..f230ff1 100755
--- a/src/Controller/CapsuleController.php
+++ b/src/Controller/CapsuleController.php
@@ -120,7 +120,7 @@ class CapsuleController extends AbstractController
         );
     }
 
-    #[Route('capsule/edit/{path}', name:'edit_capsule')]
+    #[Route('/capsule/edit/{path}', name:'edit_capsule')]
     public function edit(string $path): Response
     {
         $current_user = $this->getUser();
diff --git a/src/Entity/User.php b/src/Entity/User.php
index 4e8ccf0..90f214c 100755
--- a/src/Entity/User.php
+++ b/src/Entity/User.php
@@ -74,7 +74,7 @@ class User implements UserInterface, LegacyPasswordAuthenticatedUserInterface
     /**
      * @var Collection<Group>
      */
-    #[ORM\OneToMany(targetEntity:'App\Entity\Group', mappedBy:'author')]
+    #[ORM\OneToMany(mappedBy: 'author', targetEntity: 'App\Entity\Group')]
     private Collection $groups;
 
     /**
diff --git a/symfony.lock b/symfony.lock
index 7c35d40..5c90576 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -695,6 +695,9 @@
     "twig/extra-bundle": {
         "version": "v3.3.3"
     },
+    "twig/intl-extra": {
+        "version": "v3.3.5"
+    },
     "twig/twig": {
         "version": "v3.3.3"
     },
diff --git a/templates/layout.html.twig b/templates/layout.html.twig
index 55b4ca6..6c8a89b 100644
--- a/templates/layout.html.twig
+++ b/templates/layout.html.twig
@@ -26,6 +26,16 @@
 
         {% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
           <div class="d-flex flex-column position-absolute end-0 align-content-end text-end fw-light gray-600">
+              <div class="nav-item dropdown">
+                  <a class="nav-link p-0 dropdown-toggle text-capitalize" href="#" id="dropdown-language" role="button"
+                     data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                      {{ app.request.locale|locale_name(app.request.locale) }}
+                  </a>
+                  <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown-language">
+                      <li><a class="dropdown-item" href="{{ path('home', {_locale: 'en'}) }}">English</a></li>
+                      <li><a class="dropdown-item" href="{{ path('home', {_locale: 'fr'}) }}">Français</a></li>
+                  </ul>
+              </div>
             <div class="fw-bold text-capitalize">{{ app.user.firstName }} {{ app.user.lastName }}</div>
             <a href="{{ path('show_profile') }}" class="text-decoration-none fs-5">My profile</a>
             <a href="{{ path('edit_user_groups') }}" class="text-decoration-none fs-5">
-- 
GitLab