From b334513a55bfc96436d13ac27b2fbd52e060b906 Mon Sep 17 00:00:00 2001
From: Camille Simiand <camille.simiand@tetras-libre.fr>
Date: Wed, 29 Dec 2021 16:38:20 +0100
Subject: [PATCH] Add flash message when capsule is created

---
 legacy/cookies.txt                    |  4 +++
 src/Controller/CapsuleController.php  | 12 ++++++---
 src/Controller/FallbackController.php |  6 ++---
 src/Controller/ProjectController.php  | 37 +++++++++++++--------------
 src/LegacyHelper.php                  |  8 +++---
 templates/capsule/index.html.twig     |  6 +++++
 6 files changed, 42 insertions(+), 31 deletions(-)
 create mode 100644 legacy/cookies.txt

diff --git a/legacy/cookies.txt b/legacy/cookies.txt
new file mode 100644
index 0000000..c31d989
--- /dev/null
+++ b/legacy/cookies.txt
@@ -0,0 +1,4 @@
+# Netscape HTTP Cookie File
+# https://curl.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
diff --git a/src/Controller/CapsuleController.php b/src/Controller/CapsuleController.php
index 79875f8..ae9b1f1 100644
--- a/src/Controller/CapsuleController.php
+++ b/src/Controller/CapsuleController.php
@@ -30,7 +30,7 @@ class CapsuleController extends AbstractController
     }
 
     /**
-     * @Route("/create", name="create_capsule", methods={"POST"}, priority=-2)
+     * @Route("/create", name="create_capsule")
      */
     public function new(Request $request): Response
     {
@@ -41,7 +41,7 @@ class CapsuleController extends AbstractController
         if ($form->isSubmitted() && $form->isValid()) {
             $new_date_time = new \DateTime();
             $capsule_name = $form->get('name')->getData();
-            $video_url = $form->get('video_url')->getData();
+            $video_url =  htmlspecialchars($form->get('video_url')->getData());
             $preview_link = Uuid::v4();
             $edition_link = $preview_link . '/?p=edit';
 
@@ -56,7 +56,13 @@ class CapsuleController extends AbstractController
             $entityManager->persist($capsule);
             $entityManager->flush();
 
-            $this->redirectToRoute('create_project', [$capsule_name, $video_url]);
+//            $this->redirectToRoute('create_project', [$capsule_name, $video_url]);
+
+            return $this->forward('App\Controller\ProjectController::create', [
+                'request' => $request,
+                'capsule_name' => $capsule_name,
+                'video_url' => $video_url
+            ]);
         }
 
         return $this->render('capsule/create.html.twig', [
diff --git a/src/Controller/FallbackController.php b/src/Controller/FallbackController.php
index 73be258..8554bd2 100644
--- a/src/Controller/FallbackController.php
+++ b/src/Controller/FallbackController.php
@@ -174,12 +174,10 @@ class FallbackController extends AbstractController
             ));
         }
 
-        $legacy_helper = new LegacyHelper();
-        return $legacy_helper->transferToLegacy(
+        return LegacyHelper::transferToLegacy(
             $request,
             $this->getParameter('app.legacy_external_prefix'),
-            $this->getParameter('legacy_url'),
-            $this->getParameter('kernel.root_dir')
+            $this->getParameter('app.legacy_url')
         );
     }
 }
diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index 8ded56c..eef33c3 100644
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -11,30 +11,32 @@ use ZipArchive;
 class ProjectController extends AbstractController
 {
     /**
-     * @Route('/project/create' "name='create_project')
+     * @Route("/project/create", name="create_project", methods={"POST"})
      */
-    public function createProject(
+    public function create(
         Request $request,
-        string $name,
-        string $video_url
+        string  $capsule_name,
+        string  $video_url
     ) {
         $retours = array("success" => 0, "error" => "", "value" => "");
 
-        chdir('../../legacy/');
-        if(! file_exists($name)) {
+        chdir('../legacy/');
+
+        if(! file_exists($capsule_name)) {
             $zip = new ZipArchive;
             $zip_file_archive = $zip->open("create.zip");
 
             if ($zip_file_archive) {
-                $zip->extractTo($name);
+                $zip->extractTo($capsule_name);
                 $zip->close();
 
                 file_put_contents(
-                    $name."/file/project.xml",
-                    str_replace("__video__",
+                    $capsule_name."/file/project.xml",
+                        str_replace("__video__",
                         $video_url,
-                        file_get_contents($name."/file/project.xml"
+                        file_get_contents($capsule_name."/file/project.xml"
                         )));
+// TODO: Refacto
                 $retours["success"] = 1;
             } else {
                 $retours["success"] = -1;
@@ -46,16 +48,13 @@ class ProjectController extends AbstractController
             $retours["error"] = "Project already exists";
         }
 
-        $retours["value"] = $name;
-
-        echo json_encode($retours);
+        $retours["value"] = $capsule_name;
 
-        $legacy_helper = new LegacyHelper();
-        return $legacy_helper->transferToLegacy(
-            $request,
-            $this->getParameter('app.legacy_external_prefix'),
-            $this->getParameter('legacy_url'),
-            $this->getParameter('kernel.root_dir')
+        $this->addFlash(
+            'flashSuccess',
+            'La capsule ' . $capsule_name . ' a bien été créée.'
         );
+
+        return $this->redirectToRoute('capsule_list');
     }
 }
\ No newline at end of file
diff --git a/src/LegacyHelper.php b/src/LegacyHelper.php
index 160c1c2..15f4abe 100644
--- a/src/LegacyHelper.php
+++ b/src/LegacyHelper.php
@@ -15,14 +15,15 @@ class LegacyHelper
     public static function transferToLegacy(
         Request $request,
         string $legacy_external_prefix,
-        string $legacy_url,
-        string $project_directory
+        string $legacy_url
     ): Response
     {
         $originalController = preg_replace(
             "@^$legacy_external_prefix@",
             '',
             $request->getPathInfo());
+
+        $project_directory_name = $request->get('capsule_name');
         $originalQueryString = $request->getQueryString();
 
         //@TODO : delete on linux server
@@ -55,9 +56,6 @@ class LegacyHelper
         curl_setopt($ch, CURLOPT_HEADER, 0);
         curl_setopt($ch, CURLOPT_VERBOSE, 1);
 
-        // logs the connection (optional)
-        $stderr = fopen("{$project_directory}/log/curl.txt", "w");
-
         if ($request->getMethod() == 'POST') {
             $postParameters = $request->request->all()['create_capsule_form'];
 
diff --git a/templates/capsule/index.html.twig b/templates/capsule/index.html.twig
index d668298..d2560f6 100644
--- a/templates/capsule/index.html.twig
+++ b/templates/capsule/index.html.twig
@@ -7,6 +7,11 @@
 {% endblock %}
 
 {% block body %}
+<div class="mt-4">
+
+    {% for flashSuccess in app.flashes('capsule_created_success') %}
+        <div class="alert alert-success col-6 mx-auto my-5 h1" role="alert">{{ flashSuccess }}</div>
+    {% endfor %}
 
     <div class="d-flex justify-content-center align-items-center">
         <form>
@@ -15,4 +20,5 @@
             </button>
         </form>
     </div>
+</div>
 {% endblock %}
-- 
GitLab