aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/controller/ViewController.php (renamed from src/controller/ViewDirector.php)25
-rw-r--r--src/service/Router.php5
-rw-r--r--src/view/ViewDirector.php28
-rw-r--r--src/view/templates/maintenance.php2
4 files changed, 36 insertions, 24 deletions
diff --git a/src/controller/ViewDirector.php b/src/controller/ViewController.php
index 7c368b6..1acb19a 100644
--- a/src/controller/ViewDirector.php
+++ b/src/controller/ViewController.php
@@ -1,23 +1,16 @@
1<?php 1<?php
2// src/controller/ViewDirector.php 2// src/controller/ViewController.php
3//
4// génère le HTML avec des Builder
5 3
6declare(strict_types=1); 4declare(strict_types=1);
7 5
8use App\Entity\Node;
9use Doctrine\ORM\EntityManager; 6use Doctrine\ORM\EntityManager;
10use Symfony\Component\HttpFoundation\Request; 7use Symfony\Component\HttpFoundation\Request;
11use Symfony\Component\HttpFoundation\Response; 8use Symfony\Component\HttpFoundation\Response;
12use Symfony\Component\HttpFoundation\RedirectResponse; 9use Symfony\Component\HttpFoundation\RedirectResponse;
13 10
14class ViewDirector extends AbstractBuilder // ViewDirector est aussi le premier Builder 11class ViewController
15{ 12{
16 public Node $root_node; 13 static function getWebPage(EntityManager $entityManager, Request $request): RedirectResponse
17
18 public function __construct(){} // surcharge celui de AbstractBuilder
19
20 public function buildView(EntityManager $entityManager, Request $request): Response
21 { 14 {
22 /* 1/ 1er contrôle des paramètres */ 15 /* 1/ 1er contrôle des paramètres */
23 16
@@ -53,25 +46,17 @@ class ViewDirector extends AbstractBuilder // ViewDirector est aussi le premier
53 $model = new Model($entityManager); 46 $model = new Model($entityManager);
54 $model->makeMenuAndPaths(); 47 $model->makeMenuAndPaths();
55 $model->getWholePageData($request); 48 $model->getWholePageData($request);
56 $this->root_node = $model->getNode();
57 49
58 50
59 /* 3/ 2ème contrôle des paramètres avec les données récupérées */ 51 /* 3/ 2ème contrôle des paramètres avec les données récupérées */
60 52
61 // article non trouvé en BDD 53 // article non trouvé en BDD
62 if(CURRENT_PAGE === 'article' && !IS_ADMIN && $this->root_node->getNodeByName('main')->getAdoptedChild() === null){ 54 if(CURRENT_PAGE === 'article' && !IS_ADMIN && $model->getNode()->getNodeByName('main')->getAdoptedChild() === null){
63 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); 55 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
64 } 56 }
65 57
66 58
67 /* 4/ construction de la page avec builders et vues */ 59 /* 4/ construction de la page avec builders et vues */
68 $this->useChildrenBuilder($this->root_node); 60 return new Response((new ViewDirector)->buildHTML($model->getNode()));
69
70 if(isset($_SESSION['flash_message'])){
71 $this->html .= '<script>window.flash_message = "' . $_SESSION['flash_message'] . '";</script>';
72 unset($_SESSION['flash_message']);
73 }
74
75 return new Response($this->html);
76 } 61 }
77} \ No newline at end of file 62} \ No newline at end of file
diff --git a/src/service/Router.php b/src/service/Router.php
index 110512e..907baf4 100644
--- a/src/service/Router.php
+++ b/src/service/Router.php
@@ -83,9 +83,8 @@ class Router{
83 } 83 }
84 } 84 }
85 85
86 // construction d'une page 86 // affichage d'une page
87 return (new ViewDirector)->buildView($this->entityManager, $this->request); // utilise Model 87 return ViewController::getWebPage($this->entityManager, $this->request);
88 // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4
89 } 88 }
90 89
91 90
diff --git a/src/view/ViewDirector.php b/src/view/ViewDirector.php
new file mode 100644
index 0000000..c1a38b8
--- /dev/null
+++ b/src/view/ViewDirector.php
@@ -0,0 +1,28 @@
1<?php
2// src/view/ViewDirector.php
3//
4// génère le HTML avec des Builder
5
6declare(strict_types=1);
7
8use App\Entity\Node;
9
10class ViewDirector extends AbstractBuilder // ViewDirector est le premier Builder
11{
12 public Node $root_node;
13
14 public function __construct(){} // surcharge celui de AbstractBuilder
15
16 public function buildHTML(Node $root_node): string
17 {
18 $this->root_node = $root_node;
19 $this->useChildrenBuilder($this->root_node);
20
21 if(isset($_SESSION['flash_message'])){
22 $this->html .= '<script>window.flash_message = "' . $_SESSION['flash_message'] . '";</script>';
23 unset($_SESSION['flash_message']);
24 }
25
26 return $this->html;
27 }
28} \ No newline at end of file
diff --git a/src/view/templates/maintenance.php b/src/view/templates/maintenance.php
index 5b8fd18..61d5146 100644
--- a/src/view/templates/maintenance.php
+++ b/src/view/templates/maintenance.php
@@ -21,7 +21,7 @@
21 <a href="<?= new URL(['action' => 'get_mysqldump']) ?>"> 21 <a href="<?= new URL(['action' => 'get_mysqldump']) ?>">
22 <button id="get_mysqldump" onclick="preventClickSpam(this)">Télécharger une sauvegarde de la base de données</button> 22 <button id="get_mysqldump" onclick="preventClickSpam(this)">Télécharger une sauvegarde de la base de données</button>
23 </a><br> 23 </a><br>
24 <i>Obtenir un fichier SQL à conserver sur votre ordinateur. Une sauvegarde (désignée par "auto") est réalisée à chaque visite de cette page.</i> 24 <i>Obtenir un fichier SQL à conserver. Une sauvegarde (désignée par "auto") est réalisée à chaque connexion au mode admin.</i>
25 </p> 25 </p>
26 </div> 26 </div>
27 <div class="basic_div"> 27 <div class="basic_div">