diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/controller/ViewController.php (renamed from src/controller/ViewDirector.php) | 25 | ||||
| -rw-r--r-- | src/service/Router.php | 5 | ||||
| -rw-r--r-- | src/view/ViewDirector.php | 28 | ||||
| -rw-r--r-- | src/view/templates/maintenance.php | 2 |
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 | ||
| 6 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 7 | 5 | ||
| 8 | use App\Entity\Node; | ||
| 9 | use Doctrine\ORM\EntityManager; | 6 | use Doctrine\ORM\EntityManager; |
| 10 | use Symfony\Component\HttpFoundation\Request; | 7 | use Symfony\Component\HttpFoundation\Request; |
| 11 | use Symfony\Component\HttpFoundation\Response; | 8 | use Symfony\Component\HttpFoundation\Response; |
| 12 | use Symfony\Component\HttpFoundation\RedirectResponse; | 9 | use Symfony\Component\HttpFoundation\RedirectResponse; |
| 13 | 10 | ||
| 14 | class ViewDirector extends AbstractBuilder // ViewDirector est aussi le premier Builder | 11 | class 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 | |||
| 6 | declare(strict_types=1); | ||
| 7 | |||
| 8 | use App\Entity\Node; | ||
| 9 | |||
| 10 | class 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"> |
