diff options
| author | polo <ordipolo@gmx.fr> | 2025-10-10 17:29:30 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-10-10 17:30:47 +0200 |
| commit | 596ce6f78e37c901d9b4ed464918b0294ba8dd2a (patch) | |
| tree | a11c55145cd0479a416891f5ee0587b536d24261 | |
| parent | a0b94008b26ef20f1164e0c5302d5d11c313b1ad (diff) | |
| download | cms-596ce6f78e37c901d9b4ed464918b0294ba8dd2a.tar.gz cms-596ce6f78e37c901d9b4ed464918b0294ba8dd2a.tar.bz2 cms-596ce6f78e37c901d9b4ed464918b0294ba8dd2a.zip | |
src/controller/Director.php devient /src/model/Model.php, message d'erreur type de bloc dans modify_block.php
| -rw-r--r-- | public/index.php | 2 | ||||
| -rw-r--r-- | src/controller/ArticleController.php | 42 | ||||
| -rw-r--r-- | src/controller/MenuAndPathsController.php | 30 | ||||
| -rw-r--r-- | src/controller/PageManagementController.php | 90 | ||||
| -rw-r--r-- | src/controller/ViewController.php | 8 | ||||
| -rw-r--r-- | src/model/Model.php (renamed from src/controller/Director.php) | 8 | ||||
| -rw-r--r-- | src/model/Path.php | 2 | ||||
| -rw-r--r-- | src/router.php | 4 | ||||
| -rw-r--r-- | src/view/BreadcrumbBuilder.php | 2 | ||||
| -rw-r--r-- | src/view/FooterBuilder.php | 2 | ||||
| -rw-r--r-- | src/view/HeadBuilder.php | 4 | ||||
| -rw-r--r-- | src/view/MainBuilder.php | 2 | ||||
| -rw-r--r-- | src/view/MenuBuilder.php | 4 | ||||
| -rw-r--r-- | src/view/NavBuilder.php | 6 | ||||
| -rw-r--r-- | src/view/NewPageBuilder.php | 2 | ||||
| -rw-r--r-- | src/view/templates/modify_block.php | 2 | ||||
| -rw-r--r-- | src/view/templates/modify_page.php | 14 |
17 files changed, 111 insertions, 113 deletions
diff --git a/public/index.php b/public/index.php index 9caee0a..61fa01f 100644 --- a/public/index.php +++ b/public/index.php | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | /* plan d'action pour "symfonyfier" le site | 4 | /* plan d'action pour "symfonyfier" le site |
| 5 | A - | 5 | A - |
| 6 | 1/ de vrais contrôleurs: classes et méthodes prenant une requête en entrée et retournant une réponse | 6 | 1/ de vrais contrôleurs: classes et méthodes prenant une requête en entrée et retournant une réponse |
| 7 | (début de séparation contrôleurs et classes métier, exemple: ViewController/Director) | 7 | (début de séparation contrôleurs et classes métier, exemple: ViewController/Model) |
| 8 | 2/ routeur structuré: méthodes GET et POST, content-type, admin | 8 | 2/ routeur structuré: méthodes GET et POST, content-type, admin |
| 9 | 3/ routeur amélioré: pré-routage avec méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc | 9 | 3/ routeur amélioré: pré-routage avec méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc |
| 10 | 4/ réécriture avec les classes Request et Response sans toucher les liens | 10 | 4/ réécriture avec les classes Request et Response sans toucher les liens |
diff --git a/src/controller/ArticleController.php b/src/controller/ArticleController.php index fabd997..06562e7 100644 --- a/src/controller/ArticleController.php +++ b/src/controller/ArticleController.php | |||
| @@ -16,12 +16,12 @@ class ArticleController | |||
| 16 | if($request->query->has('id') && !empty($request->query->get('id')) && $request->query->has('last_article')){ | 16 | if($request->query->has('id') && !empty($request->query->get('id')) && $request->query->has('last_article')){ |
| 17 | //var_dump($request->query->get('last_article')); | 17 | //var_dump($request->query->get('last_article')); |
| 18 | $id = (int)$request->get('id'); // type et nettoie | 18 | $id = (int)$request->get('id'); // type et nettoie |
| 19 | $director = new Director($entityManager); | 19 | $model = new Model($entityManager); |
| 20 | $director->findNodeById($id); | 20 | $model->findNodeById($id); |
| 21 | $parent_block = $director->getNode(); | 21 | $parent_block = $model->getNode(); |
| 22 | 22 | ||
| 23 | if(Blocks::hasPresentation($parent_block->getName())){ | 23 | if(Blocks::hasPresentation($parent_block->getName())){ |
| 24 | $get_articles_return = $director->getNextArticles($parent_block, $request); | 24 | $get_articles_return = $model->getNextArticles($parent_block, $request); |
| 25 | $bulk_data = $get_articles_return[0]; | 25 | $bulk_data = $get_articles_return[0]; |
| 26 | 26 | ||
| 27 | if($parent_block->getName() === 'post_block'){ | 27 | if($parent_block->getName() === 'post_block'){ |
| @@ -60,7 +60,7 @@ class ArticleController | |||
| 60 | $id = substr($id, 1); | 60 | $id = substr($id, 1); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | $director = new Director($entityManager); | 63 | $model = new Model($entityManager); |
| 64 | $content = $json['content']; | 64 | $content = $json['content']; |
| 65 | 65 | ||
| 66 | // nettoyage | 66 | // nettoyage |
| @@ -77,12 +77,12 @@ class ArticleController | |||
| 77 | if($json['id'][0] === 'n') // ici $id est un bloc | 77 | if($json['id'][0] === 'n') // ici $id est un bloc |
| 78 | { | 78 | { |
| 79 | $section_id = (int)substr($id, 1); // id du bloc <section> | 79 | $section_id = (int)substr($id, 1); // id du bloc <section> |
| 80 | if(!$director->findNodeById($section_id)){ // erreur mauvais id | 80 | if(!$model->findNodeById($section_id)){ // erreur mauvais id |
| 81 | echo json_encode(['success' => false, 'error' => 'article_not_saved, bad id']); | 81 | echo json_encode(['success' => false, 'error' => 'article_not_saved, bad id']); |
| 82 | die; | 82 | die; |
| 83 | } | 83 | } |
| 84 | $director->makeSectionNode(); | 84 | $model->makeSectionNode(); |
| 85 | $node = $director->getNode(); // = <section> | 85 | $node = $model->getNode(); // = <section> |
| 86 | 86 | ||
| 87 | if(is_array($content)){ // cas d'une nouvelle "news" | 87 | if(is_array($content)){ // cas d'une nouvelle "news" |
| 88 | if($node->getPage()->getEndOfPath() !== $json['from']){ // erreur mauvais from | 88 | if($node->getPage()->getEndOfPath() !== $json['from']){ // erreur mauvais from |
| @@ -118,9 +118,9 @@ class ArticleController | |||
| 118 | // modification article | 118 | // modification article |
| 119 | //else{} | 119 | //else{} |
| 120 | 120 | ||
| 121 | if($director->makeArticleNode($id)) // une entrée est trouvée | 121 | if($model->makeArticleNode($id)) // une entrée est trouvée |
| 122 | { | 122 | { |
| 123 | $node = $director->getArticleNode(); // article | 123 | $node = $model->getArticleNode(); // article |
| 124 | switch($json['id'][0]){ | 124 | switch($json['id'][0]){ |
| 125 | case 'i': | 125 | case 'i': |
| 126 | $node->getArticle()->setContent($content); | 126 | $node->getArticle()->setContent($content); |
| @@ -153,14 +153,14 @@ class ArticleController | |||
| 153 | 153 | ||
| 154 | static public function deleteArticle(EntityManager $entityManager, array $data): Response // $data peut être un $_GET ou du JSON | 154 | static public function deleteArticle(EntityManager $entityManager, array $data): Response // $data peut être un $_GET ou du JSON |
| 155 | { | 155 | { |
| 156 | $director = new Director($entityManager); | 156 | $model = new Model($entityManager); |
| 157 | if(!$director->makeArticleNode($data['id'], true)){ | 157 | if(!$model->makeArticleNode($data['id'], true)){ |
| 158 | return new Response( | 158 | return new Response( |
| 159 | '{"success": false, "message": "Erreur: pas d\'article à supprimer"}', | 159 | '{"success": false, "message": "Erreur: pas d\'article à supprimer"}', |
| 160 | Response::HTTP_INTERNAL_SERVER_ERROR); // 500 | 160 | Response::HTTP_INTERNAL_SERVER_ERROR); // 500 |
| 161 | } | 161 | } |
| 162 | $article = $director->getArticleNode(); | 162 | $article = $model->getArticleNode(); |
| 163 | $section = $director->getNode(); | 163 | $section = $model->getNode(); |
| 164 | 164 | ||
| 165 | $entityManager->remove($article); | 165 | $entityManager->remove($article); |
| 166 | $section->removeChild($article); | 166 | $section->removeChild($article); |
| @@ -181,10 +181,10 @@ class ArticleController | |||
| 181 | 181 | ||
| 182 | static public function switchPositions(EntityManager $entityManager, array $json): void | 182 | static public function switchPositions(EntityManager $entityManager, array $json): void |
| 183 | { | 183 | { |
| 184 | $director = new Director($entityManager); | 184 | $model = new Model($entityManager); |
| 185 | $director->makeArticleNode($json['id1'], true); | 185 | $model->makeArticleNode($json['id1'], true); |
| 186 | $article1 = $director->getArticleNode(); | 186 | $article1 = $model->getArticleNode(); |
| 187 | $section = $director->getNode(); | 187 | $section = $model->getNode(); |
| 188 | 188 | ||
| 189 | $section->sortChildren(true); // régénère les positions avant inversion | 189 | $section->sortChildren(true); // régénère les positions avant inversion |
| 190 | $article2 = null; | 190 | $article2 = null; |
| @@ -211,9 +211,9 @@ class ArticleController | |||
| 211 | $id = substr($json['id'], 1); | 211 | $id = substr($json['id'], 1); |
| 212 | $date = new DateTime($json['date']); | 212 | $date = new DateTime($json['date']); |
| 213 | 213 | ||
| 214 | $director = new Director($entityManager); | 214 | $model = new Model($entityManager); |
| 215 | $director->makeArticleNode($id); | 215 | $model->makeArticleNode($id); |
| 216 | $node = $director->getArticleNode(); | 216 | $node = $model->getArticleNode(); |
| 217 | $node->getArticle()->setDateTime($date); | 217 | $node->getArticle()->setDateTime($date); |
| 218 | $entityManager->flush(); | 218 | $entityManager->flush(); |
| 219 | 219 | ||
diff --git a/src/controller/MenuAndPathsController.php b/src/controller/MenuAndPathsController.php index 3ff7d54..f0553ad 100644 --- a/src/controller/MenuAndPathsController.php +++ b/src/controller/MenuAndPathsController.php | |||
| @@ -10,8 +10,8 @@ class MenuAndPathsController | |||
| 10 | { | 10 | { |
| 11 | static public function newUrlMenuEntry(EntityManager $entityManager): void | 11 | static public function newUrlMenuEntry(EntityManager $entityManager): void |
| 12 | { | 12 | { |
| 13 | Director::$menu_data = new Menu($entityManager); | 13 | Model::$menu_data = new Menu($entityManager); |
| 14 | $previous_page = Director::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); | 14 | $previous_page = Model::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); |
| 15 | $parent = $previous_page->getParent(); | 15 | $parent = $previous_page->getParent(); |
| 16 | 16 | ||
| 17 | $url_input = trim($_POST["url_input"]); // faire htmlspecialchars à l'affichage | 17 | $url_input = trim($_POST["url_input"]); // faire htmlspecialchars à l'affichage |
| @@ -31,7 +31,7 @@ class MenuAndPathsController | |||
| 31 | // addChild l'ajoute à la fin du tableau "children" puis on trie | 31 | // addChild l'ajoute à la fin du tableau "children" puis on trie |
| 32 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position | 32 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position |
| 33 | if(!$parent){ | 33 | if(!$parent){ |
| 34 | $parent = Director::$menu_data; | 34 | $parent = Model::$menu_data; |
| 35 | } | 35 | } |
| 36 | $parent->addChild($page); // true pour réindexer les positions en BDD | 36 | $parent->addChild($page); // true pour réindexer les positions en BDD |
| 37 | $parent->reindexPositions(); | 37 | $parent->reindexPositions(); |
| @@ -63,11 +63,11 @@ class MenuAndPathsController | |||
| 63 | 63 | ||
| 64 | static public function deleteUrlMenuEntry(EntityManager $entityManager): void | 64 | static public function deleteUrlMenuEntry(EntityManager $entityManager): void |
| 65 | { | 65 | { |
| 66 | Director::$menu_data = new Menu($entityManager); | 66 | Model::$menu_data = new Menu($entityManager); |
| 67 | $page = Director::$menu_data->findPageById((int)$_POST["delete"]); | 67 | $page = Model::$menu_data->findPageById((int)$_POST["delete"]); |
| 68 | $parent = $page->getParent(); | 68 | $parent = $page->getParent(); |
| 69 | if($parent == null){ | 69 | if($parent == null){ |
| 70 | $parent = Director::$menu_data; | 70 | $parent = Model::$menu_data; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | $parent->removeChild($page); // suppression de $children avant de trier | 73 | $parent->removeChild($page); // suppression de $children avant de trier |
| @@ -82,7 +82,7 @@ class MenuAndPathsController | |||
| 82 | static public function MoveOneLevelUp(EntityManager $entityManager, array $json): void | 82 | static public function MoveOneLevelUp(EntityManager $entityManager, array $json): void |
| 83 | { | 83 | { |
| 84 | $id = $json['id']; | 84 | $id = $json['id']; |
| 85 | $page = Director::$menu_data->findPageById((int)$id); | 85 | $page = Model::$menu_data->findPageById((int)$id); |
| 86 | 86 | ||
| 87 | $parent = $page->getParent(); // peut être null | 87 | $parent = $page->getParent(); // peut être null |
| 88 | if($parent === null){ | 88 | if($parent === null){ |
| @@ -97,9 +97,9 @@ class MenuAndPathsController | |||
| 97 | // 2ème niveau: le parent devient $menu_data, puis null après tri | 97 | // 2ème niveau: le parent devient $menu_data, puis null après tri |
| 98 | if($parent->getParent() === null){ | 98 | if($parent->getParent() === null){ |
| 99 | // connexion dans les deux sens | 99 | // connexion dans les deux sens |
| 100 | $page->setParent(Director::$menu_data); // => pour la persistance | 100 | $page->setParent(Model::$menu_data); // => pour la persistance |
| 101 | 101 | ||
| 102 | //Director::$menu_data->addChild($page); // => pour sortChildren | 102 | //Model::$menu_data->addChild($page); // => pour sortChildren |
| 103 | $page->getParent()->addChild($page); // => pour sortChildren | 103 | $page->getParent()->addChild($page); // => pour sortChildren |
| 104 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères | 104 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères |
| 105 | $page->setParent(null); | 105 | $page->setParent(null); |
| @@ -129,11 +129,11 @@ class MenuAndPathsController | |||
| 129 | static public function MoveOneLevelDown(EntityManager $entityManager, array $json): void | 129 | static public function MoveOneLevelDown(EntityManager $entityManager, array $json): void |
| 130 | { | 130 | { |
| 131 | $id = $json['id']; | 131 | $id = $json['id']; |
| 132 | $page = Director::$menu_data->findPageById((int)$id); | 132 | $page = Model::$menu_data->findPageById((int)$id); |
| 133 | 133 | ||
| 134 | $parent = $page->getParent(); // peut être null | 134 | $parent = $page->getParent(); // peut être null |
| 135 | if($parent == null){ | 135 | if($parent == null){ |
| 136 | $parent = Director::$menu_data; | 136 | $parent = Model::$menu_data; |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | // BDD | 139 | // BDD |
| @@ -166,8 +166,8 @@ class MenuAndPathsController | |||
| 166 | $id2 = $json['id2']; | 166 | $id2 = $json['id2']; |
| 167 | 167 | ||
| 168 | // vérifier qu'ils ont le même parent | 168 | // vérifier qu'ils ont le même parent |
| 169 | $page1 = Director::$menu_data->findPageById((int)$id1); | 169 | $page1 = Model::$menu_data->findPageById((int)$id1); |
| 170 | $page2 = Director::$menu_data->findPageById((int)$id2); | 170 | $page2 = Model::$menu_data->findPageById((int)$id2); |
| 171 | 171 | ||
| 172 | // double le contrôle fait en JS | 172 | // double le contrôle fait en JS |
| 173 | if($page1->getParent() === $page2->getParent()) // comparaison stricte d'objet (même instance du parent?) | 173 | if($page1->getParent() === $page2->getParent()) // comparaison stricte d'objet (même instance du parent?) |
| @@ -176,7 +176,7 @@ class MenuAndPathsController | |||
| 176 | $tmp = $page1->getPosition(); | 176 | $tmp = $page1->getPosition(); |
| 177 | $page1->setPosition($page2->getPosition()); | 177 | $page1->setPosition($page2->getPosition()); |
| 178 | $page2->setPosition($tmp); | 178 | $page2->setPosition($tmp); |
| 179 | Director::$menu_data->sortChildren(true); // modifie tableau children | 179 | Model::$menu_data->sortChildren(true); // modifie tableau children |
| 180 | $entityManager->flush(); | 180 | $entityManager->flush(); |
| 181 | 181 | ||
| 182 | // nouveau menu | 182 | // nouveau menu |
| @@ -194,7 +194,7 @@ class MenuAndPathsController | |||
| 194 | $id = $json['id']; | 194 | $id = $json['id']; |
| 195 | $checked = $json['checked']; | 195 | $checked = $json['checked']; |
| 196 | 196 | ||
| 197 | $page = Director::$menu_data->findPageById((int)$id); | 197 | $page = Model::$menu_data->findPageById((int)$id); |
| 198 | if($page->isHidden() === $checked){ | 198 | if($page->isHidden() === $checked){ |
| 199 | $page->setHidden(!$checked); | 199 | $page->setHidden(!$checked); |
| 200 | $entityManager->flush(); | 200 | $entityManager->flush(); |
diff --git a/src/controller/PageManagementController.php b/src/controller/PageManagementController.php index e6886b1..9dce952 100644 --- a/src/controller/PageManagementController.php +++ b/src/controller/PageManagementController.php | |||
| @@ -25,16 +25,16 @@ class PageManagementController | |||
| 25 | 25 | ||
| 26 | static public function updatePageMenuPath(EntityManager $entityManager): void | 26 | static public function updatePageMenuPath(EntityManager $entityManager): void |
| 27 | { | 27 | { |
| 28 | Director::$menu_data = new Menu($entityManager); | 28 | Model::$menu_data = new Menu($entityManager); |
| 29 | Director::$page_path = new Path(); | 29 | Model::$page_path = new Path(); |
| 30 | $page = Director::$page_path->getLast(); | 30 | $page = Model::$page_path->getLast(); |
| 31 | $path = htmlspecialchars($_POST['page_menu_path']); | 31 | $path = htmlspecialchars($_POST['page_menu_path']); |
| 32 | 32 | ||
| 33 | // mise en snake_case: filtre caractères non-alphanumériques, minuscule, doublons d'underscore, trim des underscores | 33 | // mise en snake_case: filtre caractères non-alphanumériques, minuscule, doublons d'underscore, trim des underscores |
| 34 | $path = trim(preg_replace('/_+/', '_', strtolower(preg_replace('/[^a-zA-Z0-9]/', '_', $path))), '_'); | 34 | $path = trim(preg_replace('/_+/', '_', strtolower(preg_replace('/[^a-zA-Z0-9]/', '_', $path))), '_'); |
| 35 | $page->setEndOfPath($path); | 35 | $page->setEndOfPath($path); |
| 36 | foreach(Director::$menu_data->getChildren() as $child){ | 36 | foreach(Model::$menu_data->getChildren() as $child){ |
| 37 | if($child->getEndOfPath() === Director::$page_path->getArray()[0]->getEndOfPath()){ | 37 | if($child->getEndOfPath() === Model::$page_path->getArray()[0]->getEndOfPath()){ |
| 38 | $child->fillChildrenPagePath(); // MAJ de $page_path | 38 | $child->fillChildrenPagePath(); // MAJ de $page_path |
| 39 | } | 39 | } |
| 40 | } | 40 | } |
| @@ -55,10 +55,10 @@ class PageManagementController | |||
| 55 | static public function newPage(EntityManager $entityManager, array $post): void | 55 | static public function newPage(EntityManager $entityManager, array $post): void |
| 56 | { | 56 | { |
| 57 | // titre et chemin | 57 | // titre et chemin |
| 58 | $director = new Director($entityManager); | 58 | $model = new Model($entityManager); |
| 59 | $director->makeMenuAndPaths(); | 59 | $model->makeMenuAndPaths(); |
| 60 | //Director::$menu_data = new Menu($entityManager); | 60 | //Model::$menu_data = new Menu($entityManager); |
| 61 | $previous_page = Director::$menu_data->findPageById((int)$post["page_location"]); // (int) à cause de declare(strict_types=1); | 61 | $previous_page = Model::$menu_data->findPageById((int)$post["page_location"]); // (int) à cause de declare(strict_types=1); |
| 62 | $parent = $previous_page->getParent(); | 62 | $parent = $previous_page->getParent(); |
| 63 | 63 | ||
| 64 | $page = new Page( | 64 | $page = new Page( |
| @@ -73,7 +73,7 @@ class PageManagementController | |||
| 73 | // addChild l'ajoute à la fin du tableau "children" puis on trie | 73 | // addChild l'ajoute à la fin du tableau "children" puis on trie |
| 74 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position | 74 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position |
| 75 | if($parent == null){ | 75 | if($parent == null){ |
| 76 | $parent = Director::$menu_data; | 76 | $parent = Model::$menu_data; |
| 77 | } | 77 | } |
| 78 | $parent->addChild($page); | 78 | $parent->addChild($page); |
| 79 | $parent->reindexPositions(); | 79 | $parent->reindexPositions(); |
| @@ -127,12 +127,12 @@ class PageManagementController | |||
| 127 | /* partie "blocs" */ | 127 | /* partie "blocs" */ |
| 128 | static public function addBloc(EntityManager $entityManager): void | 128 | static public function addBloc(EntityManager $entityManager): void |
| 129 | { | 129 | { |
| 130 | $director = new Director($entityManager); | 130 | $model = new Model($entityManager); |
| 131 | $director->makeMenuAndPaths(); // on a besoin de page_path qui dépend de menu_data | 131 | $model->makeMenuAndPaths(); // on a besoin de page_path qui dépend de menu_data |
| 132 | $page = Director::$page_path->getLast(); | 132 | $page = Model::$page_path->getLast(); |
| 133 | $director->findUniqueNodeByName('main'); | 133 | $model->findUniqueNodeByName('main'); |
| 134 | $director->findItsChildren(); | 134 | $model->findItsChildren(); |
| 135 | $main = $director->getNode(); | 135 | $main = $model->getNode(); |
| 136 | $position = count($main->getChildren()) + 1; // position dans la fraterie | 136 | $position = count($main->getChildren()) + 1; // position dans la fraterie |
| 137 | 137 | ||
| 138 | if(!in_array($_POST["bloc_select"], array_keys(Blocks::$blocks), true)) // 3è param: contrôle du type | 138 | if(!in_array($_POST["bloc_select"], array_keys(Blocks::$blocks), true)) // 3è param: contrôle du type |
| @@ -185,12 +185,12 @@ class PageManagementController | |||
| 185 | 185 | ||
| 186 | static public function deleteBloc(EntityManager $entityManager): void | 186 | static public function deleteBloc(EntityManager $entityManager): void |
| 187 | { | 187 | { |
| 188 | $director = new Director($entityManager); | 188 | $model = new Model($entityManager); |
| 189 | $director->makeMenuAndPaths(); | 189 | $model->makeMenuAndPaths(); |
| 190 | $director->findUniqueNodeByName('main'); | 190 | $model->findUniqueNodeByName('main'); |
| 191 | $director->findItsChildren(); | 191 | $model->findItsChildren(); |
| 192 | //$director->findNodeById((int)$_POST['delete_bloc_id']); | 192 | //$model->findNodeById((int)$_POST['delete_bloc_id']); |
| 193 | $main = $director->getNode(); | 193 | $main = $model->getNode(); |
| 194 | $bloc = null; | 194 | $bloc = null; |
| 195 | foreach($main->getChildren() as $child){ | 195 | foreach($main->getChildren() as $child){ |
| 196 | if($child->getId() === (int)$_POST['delete_bloc_id']){ | 196 | if($child->getId() === (int)$_POST['delete_bloc_id']){ |
| @@ -212,13 +212,13 @@ class PageManagementController | |||
| 212 | static public function renameBloc(EntityManager $entityManager, array $json): void | 212 | static public function renameBloc(EntityManager $entityManager, array $json): void |
| 213 | { | 213 | { |
| 214 | if(isset($json['bloc_title']) && $json['bloc_title'] !== null && isset($json['bloc_id']) && is_int($json['bloc_id'])){ | 214 | if(isset($json['bloc_title']) && $json['bloc_title'] !== null && isset($json['bloc_id']) && is_int($json['bloc_id'])){ |
| 215 | $director = new Director($entityManager); | 215 | $model = new Model($entityManager); |
| 216 | $director->findNodeById($json['bloc_id']); | 216 | $model->findNodeById($json['bloc_id']); |
| 217 | 217 | ||
| 218 | // le titre (du JSON en BDD) est récupéré sous forme de tableau, modifié et renvoyé | 218 | // le titre (du JSON en BDD) est récupéré sous forme de tableau, modifié et renvoyé |
| 219 | $data = $director->getNode()->getNodeData()->getData(); | 219 | $data = $model->getNode()->getNodeData()->getData(); |
| 220 | $data['title'] = htmlspecialchars($json['bloc_title']); | 220 | $data['title'] = htmlspecialchars($json['bloc_title']); |
| 221 | $director->getNode()->getNodeData()->updateData('title', htmlspecialchars($json['bloc_title'])); | 221 | $model->getNode()->getNodeData()->updateData('title', htmlspecialchars($json['bloc_title'])); |
| 222 | 222 | ||
| 223 | $entityManager->flush(); | 223 | $entityManager->flush(); |
| 224 | echo json_encode(['success' => true, 'title' => $data['title']]); | 224 | echo json_encode(['success' => true, 'title' => $data['title']]); |
| @@ -232,11 +232,11 @@ class PageManagementController | |||
| 232 | static public function SwitchBlocsPositions(EntityManager $entityManager, array $json): void | 232 | static public function SwitchBlocsPositions(EntityManager $entityManager, array $json): void |
| 233 | { | 233 | { |
| 234 | if(isset($json['id1']) && is_int($json['id1']) && isset($json['id2']) && is_int($json['id2']) && isset($_GET['page'])){ | 234 | if(isset($json['id1']) && is_int($json['id1']) && isset($json['id2']) && is_int($json['id2']) && isset($_GET['page'])){ |
| 235 | $director = new Director($entityManager); | 235 | $model = new Model($entityManager); |
| 236 | $director->makeMenuAndPaths(); // true pour $director->findItsChildren(); | 236 | $model->makeMenuAndPaths(); // true pour $model->findItsChildren(); |
| 237 | $director->findUniqueNodeByName('main'); | 237 | $model->findUniqueNodeByName('main'); |
| 238 | $director->findItsChildren(); | 238 | $model->findItsChildren(); |
| 239 | $main = $director->getNode(); | 239 | $main = $model->getNode(); |
| 240 | $main->sortChildren(true); // régénère les positions avant inversion | 240 | $main->sortChildren(true); // régénère les positions avant inversion |
| 241 | 241 | ||
| 242 | $bloc1 = null; | 242 | $bloc1 = null; |
| @@ -271,8 +271,8 @@ class PageManagementController | |||
| 271 | static public function changeArticlesOrder(EntityManager $entityManager, array $json): void | 271 | static public function changeArticlesOrder(EntityManager $entityManager, array $json): void |
| 272 | { | 272 | { |
| 273 | if(isset($json['id']) && isset($json['chrono_order'])){ | 273 | if(isset($json['id']) && isset($json['chrono_order'])){ |
| 274 | $director = new Director($entityManager); | 274 | $model = new Model($entityManager); |
| 275 | $director->findNodeById($json['id']); | 275 | $model->findNodeById($json['id']); |
| 276 | 276 | ||
| 277 | if($json['chrono_order'] === 'chrono'){ | 277 | if($json['chrono_order'] === 'chrono'){ |
| 278 | $chrono_order = true; | 278 | $chrono_order = true; |
| @@ -284,7 +284,7 @@ class PageManagementController | |||
| 284 | echo json_encode(['success' => false]); | 284 | echo json_encode(['success' => false]); |
| 285 | die; | 285 | die; |
| 286 | } | 286 | } |
| 287 | $director->getNode()->getNodeData()->setChronoOrder($chrono_order); | 287 | $model->getNode()->getNodeData()->setChronoOrder($chrono_order); |
| 288 | $entityManager->flush(); | 288 | $entityManager->flush(); |
| 289 | 289 | ||
| 290 | echo json_encode(['success' => true, 'chrono_order' => $json['chrono_order']]); | 290 | echo json_encode(['success' => true, 'chrono_order' => $json['chrono_order']]); |
| @@ -298,16 +298,16 @@ class PageManagementController | |||
| 298 | static public function changePresentation(EntityManager $entityManager, array $json): void | 298 | static public function changePresentation(EntityManager $entityManager, array $json): void |
| 299 | { | 299 | { |
| 300 | if(isset($json['id']) && isset($json['presentation'])){ | 300 | if(isset($json['id']) && isset($json['presentation'])){ |
| 301 | $director = new Director($entityManager); | 301 | $model = new Model($entityManager); |
| 302 | $director->findNodeById($json['id']); | 302 | $model->findNodeById($json['id']); |
| 303 | 303 | ||
| 304 | if(in_array($json['presentation'], array_keys(Blocks::$presentations))){ | 304 | if(in_array($json['presentation'], array_keys(Blocks::$presentations))){ |
| 305 | $director->getNode()->getNodeData()->setPresentation($json['presentation']); | 305 | $model->getNode()->getNodeData()->setPresentation($json['presentation']); |
| 306 | $entityManager->flush(); | 306 | $entityManager->flush(); |
| 307 | 307 | ||
| 308 | $response_data = ['success' => true, 'presentation' => $json['presentation']]; | 308 | $response_data = ['success' => true, 'presentation' => $json['presentation']]; |
| 309 | if($json['presentation'] === 'grid'){ | 309 | if($json['presentation'] === 'grid'){ |
| 310 | $response_data['cols_min_width'] = $director->getNode()->getNodeData()->getColsMinWidth(); | 310 | $response_data['cols_min_width'] = $model->getNode()->getNodeData()->getColsMinWidth(); |
| 311 | } | 311 | } |
| 312 | echo json_encode($response_data); | 312 | echo json_encode($response_data); |
| 313 | } | 313 | } |
| @@ -323,9 +323,9 @@ class PageManagementController | |||
| 323 | static public function changeColsMinWidth(EntityManager $entityManager, array $json): void | 323 | static public function changeColsMinWidth(EntityManager $entityManager, array $json): void |
| 324 | { | 324 | { |
| 325 | if(isset($json['id']) && isset($json['cols_min_width'])){ | 325 | if(isset($json['id']) && isset($json['cols_min_width'])){ |
| 326 | $director = new Director($entityManager); | 326 | $model = new Model($entityManager); |
| 327 | $director->findNodeById($json['id']); | 327 | $model->findNodeById($json['id']); |
| 328 | $director->getNode()->getNodeData()->setColsMinWidth((int)$json['cols_min_width']); // attention conversion? | 328 | $model->getNode()->getNodeData()->setColsMinWidth((int)$json['cols_min_width']); // attention conversion? |
| 329 | 329 | ||
| 330 | $entityManager->flush(); | 330 | $entityManager->flush(); |
| 331 | echo json_encode(['success' => true, 'cols_min_width' => $json['cols_min_width']]); | 331 | echo json_encode(['success' => true, 'cols_min_width' => $json['cols_min_width']]); |
| @@ -338,10 +338,10 @@ class PageManagementController | |||
| 338 | static public function changePaginationLimit(EntityManager $entityManager, array $json): void | 338 | static public function changePaginationLimit(EntityManager $entityManager, array $json): void |
| 339 | { | 339 | { |
| 340 | if(isset($json['id']) && isset($json['pagination_limit'])){ | 340 | if(isset($json['id']) && isset($json['pagination_limit'])){ |
| 341 | $director = new Director($entityManager); | 341 | $model = new Model($entityManager); |
| 342 | $director->findNodeById($json['id']); | 342 | $model->findNodeById($json['id']); |
| 343 | $old_limit = $director->getNode()->getNodeData()->getPaginationLimit() ?? 12; | 343 | $old_limit = $model->getNode()->getNodeData()->getPaginationLimit() ?? 12; |
| 344 | $director->getNode()->getNodeData()->setPaginationLimit((int)$json['pagination_limit']); // attention conversion? | 344 | $model->getNode()->getNodeData()->setPaginationLimit((int)$json['pagination_limit']); // attention conversion? |
| 345 | 345 | ||
| 346 | $entityManager->flush(); | 346 | $entityManager->flush(); |
| 347 | 347 | ||
diff --git a/src/controller/ViewController.php b/src/controller/ViewController.php index feee0a0..0f21118 100644 --- a/src/controller/ViewController.php +++ b/src/controller/ViewController.php | |||
| @@ -49,10 +49,10 @@ class ViewController extends AbstractBuilder // ViewController est aussi le prem | |||
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | /* 2/ accès au modèle */ | 51 | /* 2/ accès au modèle */ |
| 52 | $director = new Director($entityManager); | 52 | $model = new Model($entityManager); |
| 53 | $director->makeMenuAndPaths(); | 53 | $model->makeMenuAndPaths(); |
| 54 | $director->getWholePageData($request); | 54 | $model->getWholePageData($request); |
| 55 | self::$root_node = $director->getNode(); | 55 | self::$root_node = $model->getNode(); |
| 56 | 56 | ||
| 57 | 57 | ||
| 58 | /* 3/ 2ème contrôle utilisant les données récupérées */ | 58 | /* 3/ 2ème contrôle utilisant les données récupérées */ |
diff --git a/src/controller/Director.php b/src/model/Model.php index 9c1c6e3..ea8ef71 100644 --- a/src/controller/Director.php +++ b/src/model/Model.php | |||
| @@ -1,7 +1,5 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/controller/Director.php | 2 | // src/model/Model.php |
| 3 | |||
| 4 | // => src/model/Model.php serait mieux | ||
| 5 | 3 | ||
| 6 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 7 | 5 | ||
| @@ -11,7 +9,7 @@ use App\Entity\Node; | |||
| 11 | use Doctrine\ORM\QueryBuilder; | 9 | use Doctrine\ORM\QueryBuilder; |
| 12 | use Symfony\Component\HttpFoundation\Request; | 10 | use Symfony\Component\HttpFoundation\Request; |
| 13 | 11 | ||
| 14 | class Director | 12 | class Model |
| 15 | { | 13 | { |
| 16 | private EntityManager $entityManager; | 14 | private EntityManager $entityManager; |
| 17 | static public Menu $menu_data; // pour NavBuilder | 15 | static public Menu $menu_data; // pour NavBuilder |
| @@ -27,7 +25,7 @@ class Director | |||
| 27 | } | 25 | } |
| 28 | 26 | ||
| 29 | // à déplacer dans Path ou un truc comme ça? | 27 | // à déplacer dans Path ou un truc comme ça? |
| 30 | // couper Director en deux classes NodeModel et PageModel? | 28 | // couper Model en deux classes NodeModel et PageModel? |
| 31 | public function makeMenuAndPaths(): void // lit la table "page" | 29 | public function makeMenuAndPaths(): void // lit la table "page" |
| 32 | { | 30 | { |
| 33 | self::$menu_data = new Menu($this->entityManager); | 31 | self::$menu_data = new Menu($this->entityManager); |
diff --git a/src/model/Path.php b/src/model/Path.php index ad44fd9..bf9653e 100644 --- a/src/model/Path.php +++ b/src/model/Path.php | |||
| @@ -17,7 +17,7 @@ class Path extends Page | |||
| 17 | $path_array = explode('/', CURRENT_PAGE); | 17 | $path_array = explode('/', CURRENT_PAGE); |
| 18 | try{ | 18 | try{ |
| 19 | // parcourir le menu de haut en bas pour obtenir un ou plusieurs objets Page | 19 | // parcourir le menu de haut en bas pour obtenir un ou plusieurs objets Page |
| 20 | $this->findPage(Director::$menu_data, $path_array); // remplit $this->current_page | 20 | $this->findPage(Model::$menu_data, $path_array); // remplit $this->current_page |
| 21 | } | 21 | } |
| 22 | catch(Exception $e){} | 22 | catch(Exception $e){} |
| 23 | } | 23 | } |
diff --git a/src/router.php b/src/router.php index c11a4e0..7459a0d 100644 --- a/src/router.php +++ b/src/router.php | |||
| @@ -43,7 +43,7 @@ if($request->getMethod() === 'GET'){ | |||
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | // construction d'une page | 45 | // construction d'une page |
| 46 | $response = (new ViewController)->buildView($entityManager, $request); // utilise Director | 46 | $response = (new ViewController)->buildView($entityManager, $request); // utilise Model |
| 47 | // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4 | 47 | // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4 |
| 48 | } | 48 | } |
| 49 | 49 | ||
| @@ -146,7 +146,7 @@ elseif($request->getMethod() === 'POST'){ | |||
| 146 | elseif(isset($_GET['menu_edit'])) | 146 | elseif(isset($_GET['menu_edit'])) |
| 147 | { | 147 | { |
| 148 | // ne suit pas la règle, faire ça dans un contrôleur | 148 | // ne suit pas la règle, faire ça dans un contrôleur |
| 149 | Director::$menu_data = new Menu($entityManager); // récupération des données | 149 | Model::$menu_data = new Menu($entityManager); // récupération des données |
| 150 | 150 | ||
| 151 | // flèche gauche <=: position = position du parent + 1, parent = grand-parent, recalculer les positions | 151 | // flèche gauche <=: position = position du parent + 1, parent = grand-parent, recalculer les positions |
| 152 | if($_GET['menu_edit'] === 'move_one_level_up' && isset($json['id'])){ | 152 | if($_GET['menu_edit'] === 'move_one_level_up' && isset($json['id'])){ |
diff --git a/src/view/BreadcrumbBuilder.php b/src/view/BreadcrumbBuilder.php index c042fa9..2655551 100644 --- a/src/view/BreadcrumbBuilder.php +++ b/src/view/BreadcrumbBuilder.php | |||
| @@ -15,7 +15,7 @@ class BreadcrumbBuilder extends AbstractBuilder | |||
| 15 | private function breadcrumbHTML(): string | 15 | private function breadcrumbHTML(): string |
| 16 | { | 16 | { |
| 17 | $asset = 'assets/home.svg'; // => BDD? | 17 | $asset = 'assets/home.svg'; // => BDD? |
| 18 | $breadcrumb_array = Director::$page_path->getArray(); // tableau de Page | 18 | $breadcrumb_array = Model::$page_path->getArray(); // tableau de Page |
| 19 | $html = ''; | 19 | $html = ''; |
| 20 | $nb_of_entries = count($breadcrumb_array); | 20 | $nb_of_entries = count($breadcrumb_array); |
| 21 | 21 | ||
diff --git a/src/view/FooterBuilder.php b/src/view/FooterBuilder.php index f20dd2e..0a3f55c 100644 --- a/src/view/FooterBuilder.php +++ b/src/view/FooterBuilder.php | |||
| @@ -57,7 +57,7 @@ class FooterBuilder extends AbstractBuilder | |||
| 57 | { | 57 | { |
| 58 | $div_admin = 'logged_out'; | 58 | $div_admin = 'logged_out'; |
| 59 | $url = new URL(['page' => 'connection', 'from' => CURRENT_PAGE]); | 59 | $url = new URL(['page' => 'connection', 'from' => CURRENT_PAGE]); |
| 60 | if(Director::$page_path->getLast()->getEndOfPath() === 'article' && isset($_GET['id'])){ | 60 | if(Model::$page_path->getLast()->getEndOfPath() === 'article' && isset($_GET['id'])){ |
| 61 | $url->addParams(['id' => $_GET['id']]); | 61 | $url->addParams(['id' => $_GET['id']]); |
| 62 | } | 62 | } |
| 63 | $zone_admin = '<button><a href="' . $url . '">Mode admin</a></button>'; | 63 | $zone_admin = '<button><a href="' . $url . '">Mode admin</a></button>'; |
diff --git a/src/view/HeadBuilder.php b/src/view/HeadBuilder.php index b2f3386..ad6e4ba 100644 --- a/src/view/HeadBuilder.php +++ b/src/view/HeadBuilder.php | |||
| @@ -47,8 +47,8 @@ class HeadBuilder extends AbstractBuilder | |||
| 47 | $js .= '<script src="' . self::versionedFileURL('js', 'tinymce') . '"></script>' . "\n"; | 47 | $js .= '<script src="' . self::versionedFileURL('js', 'tinymce') . '"></script>' . "\n"; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | $title = Director::$page_path->getLast()->getPageName(); | 50 | $title = Model::$page_path->getLast()->getPageName(); |
| 51 | $description = Director::$page_path->getLast()->getDescription(); | 51 | $description = Model::$page_path->getLast()->getDescription(); |
| 52 | 52 | ||
| 53 | // favicon | 53 | // favicon |
| 54 | foreach($node->getNodeData()->getImages() as $image) | 54 | foreach($node->getNodeData()->getImages() as $image) |
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index d677971..a920eb4 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php | |||
| @@ -16,7 +16,7 @@ class MainBuilder extends AbstractBuilder | |||
| 16 | $this->html .= "<main>\n"; | 16 | $this->html .= "<main>\n"; |
| 17 | 17 | ||
| 18 | // page article: cas particulier où l'article est greffé sur main | 18 | // page article: cas particulier où l'article est greffé sur main |
| 19 | if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ | 19 | if(Model::$page_path->getLast()->getEndOfPath() === 'article'){ |
| 20 | // pas censé arriver | 20 | // pas censé arriver |
| 21 | if(!isset($_GET['id'])){ | 21 | if(!isset($_GET['id'])){ |
| 22 | header('Location: ' . new URL); | 22 | header('Location: ' . new URL); |
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php index 8ea4b8e..12298cf 100644 --- a/src/view/MenuBuilder.php +++ b/src/view/MenuBuilder.php | |||
| @@ -21,10 +21,10 @@ class MenuBuilder extends AbstractBuilder | |||
| 21 | if(file_exists($viewFile)) | 21 | if(file_exists($viewFile)) |
| 22 | { | 22 | { |
| 23 | if($_SESSION['admin']){ | 23 | if($_SESSION['admin']){ |
| 24 | $this->unfoldMenu(Director::$menu_data); | 24 | $this->unfoldMenu(Model::$menu_data); |
| 25 | 25 | ||
| 26 | if($template){ | 26 | if($template){ |
| 27 | $this->unfoldOptions(Director::$menu_data); | 27 | $this->unfoldOptions(Model::$menu_data); |
| 28 | } | 28 | } |
| 29 | } | 29 | } |
| 30 | else{ | 30 | else{ |
diff --git a/src/view/NavBuilder.php b/src/view/NavBuilder.php index 2cbdef9..07c70d1 100644 --- a/src/view/NavBuilder.php +++ b/src/view/NavBuilder.php | |||
| @@ -14,9 +14,9 @@ class NavBuilder extends AbstractBuilder | |||
| 14 | { | 14 | { |
| 15 | $this->html .= '<nav class="nav_main"><ul>'; | 15 | $this->html .= '<nav class="nav_main"><ul>'; |
| 16 | $this->html .= $this->navMainHTML( | 16 | $this->html .= $this->navMainHTML( |
| 17 | Director::$menu_data, | 17 | Model::$menu_data, |
| 18 | // param nullable, ça retire une dépendance stricte entre NavBuilder et Director | 18 | // param nullable, ça retire une dépendance stricte entre NavBuilder et Model |
| 19 | Director::$page_path != null ? Director::$page_path->getArray() : []); | 19 | Model::$page_path != null ? Model::$page_path->getArray() : []); |
| 20 | $this->html .= '</ul></nav>'; | 20 | $this->html .= '</ul></nav>'; |
| 21 | } | 21 | } |
| 22 | 22 | ||
diff --git a/src/view/NewPageBuilder.php b/src/view/NewPageBuilder.php index 2fae6fa..7bf8628 100644 --- a/src/view/NewPageBuilder.php +++ b/src/view/NewPageBuilder.php | |||
| @@ -25,7 +25,7 @@ class NewPageBuilder extends AbstractBuilder | |||
| 25 | extract($node->getNodeData()->getData()); | 25 | extract($node->getNodeData()->getData()); |
| 26 | }*/ | 26 | }*/ |
| 27 | 27 | ||
| 28 | $this->unfoldOptions(Director::$menu_data); | 28 | $this->unfoldOptions(Model::$menu_data); |
| 29 | 29 | ||
| 30 | ob_start(); | 30 | ob_start(); |
| 31 | require $viewFile; // insertion de $this->html généré par unfoldMenu | 31 | require $viewFile; // insertion de $this->html généré par unfoldMenu |
diff --git a/src/view/templates/modify_block.php b/src/view/templates/modify_block.php index 3620100..75cb218 100644 --- a/src/view/templates/modify_block.php +++ b/src/view/templates/modify_block.php | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | <div class="modify_one_block" id="bloc_edit_<?= $child_node->getId() ?>"> | 1 | <div class="modify_one_block" id="bloc_edit_<?= $child_node->getId() ?>"> |
| 2 | <div class="block_options"> | 2 | <div class="block_options"> |
| 3 | <label for="bloc_rename_<?= $child_node->getId() ?>">Type <b><?= Blocks::$blocks[$child_node->getName()] ?></b> | 3 | <label for="bloc_rename_<?= $child_node->getId() ?>">Type <b><?= Blocks::$blocks[$child_node->getName()] ?? '<i>erreur base de données</i>' ?></b> |
| 4 | </label> | 4 | </label> |
| 5 | <p> | 5 | <p> |
| 6 | <input type="text" id="bloc_rename_<?= $child_node->getId() ?>" name="bloc_rename_title" value="<?= $child_node->getNodeData()->getdata()['title'] ?>" required> | 6 | <input type="text" id="bloc_rename_<?= $child_node->getId() ?>" name="bloc_rename_title" value="<?= $child_node->getNodeData()->getdata()['title'] ?>" required> |
diff --git a/src/view/templates/modify_page.php b/src/view/templates/modify_page.php index c9da4a4..ecacb02 100644 --- a/src/view/templates/modify_page.php +++ b/src/view/templates/modify_page.php | |||
| @@ -5,28 +5,28 @@ | |||
| 5 | <div class="edit_page_title_zone"> | 5 | <div class="edit_page_title_zone"> |
| 6 | <p id="edit_page_title"> | 6 | <p id="edit_page_title"> |
| 7 | <label for="page_name">Titre de la page</label> | 7 | <label for="page_name">Titre de la page</label> |
| 8 | <input type="text" id="page_name" name="edit_page_title" value="<?= Director::$page_path->getLast()->getPageName() ?>" onchange="makePageNamePath()" required> | 8 | <input type="text" id="page_name" name="edit_page_title" value="<?= Model::$page_path->getLast()->getPageName() ?>" onchange="makePageNamePath()" required> |
| 9 | <button onclick="changePageTitle('<?= Director::$page_path->getLast()->getId() ?>')">Renommer</button> | 9 | <button onclick="changePageTitle('<?= Model::$page_path->getLast()->getId() ?>')">Renommer</button> |
| 10 | </p> | 10 | </p> |
| 11 | <form id="edit_page_menu_path" method="post" action="<?= new URL(['page' => CURRENT_PAGE]) ?>"> | 11 | <form id="edit_page_menu_path" method="post" action="<?= new URL(['page' => CURRENT_PAGE]) ?>"> |
| 12 | <label for="page_name_path">Chemin en "snake_case"</label> | 12 | <label for="page_name_path">Chemin en "snake_case"</label> |
| 13 | <input type="text" id="page_name_path" name="page_menu_path" value="<?= Director::$page_path->getLast()->getEndOfPath() ?>" placeholder="ex: nouvelle_page" required> | 13 | <input type="text" id="page_name_path" name="page_menu_path" value="<?= Model::$page_path->getLast()->getEndOfPath() ?>" placeholder="ex: nouvelle_page" required> |
| 14 | <input type="hidden" name="page_id" value="<?= Director::$page_path->getLast()->getId() ?>"><input type="hidden" name="page_name_path_hidden"> | 14 | <input type="hidden" name="page_id" value="<?= Model::$page_path->getLast()->getId() ?>"><input type="hidden" name="page_name_path_hidden"> |
| 15 | <input type="submit" value="Modifier"> | 15 | <input type="submit" value="Modifier"> |
| 16 | </form> | 16 | </form> |
| 17 | </div> | 17 | </div> |
| 18 | <div id="edit_description"> | 18 | <div id="edit_description"> |
| 19 | <label for="description_textarea">Description sous le titre dans les moteurs de recherche</label> | 19 | <label for="description_textarea">Description sous le titre dans les moteurs de recherche</label> |
| 20 | <div> | 20 | <div> |
| 21 | <textarea id="description_textarea" name="edit_description" cols="40" rows="3" placeholder="ex: nous faisons ceci et cela, etc" required><?= Director::$page_path->getLast()->getDescription(); ?></textarea> | 21 | <textarea id="description_textarea" name="edit_description" cols="40" rows="3" placeholder="ex: nous faisons ceci et cela, etc" required><?= Model::$page_path->getLast()->getDescription(); ?></textarea> |
| 22 | <button onclick="changeDescription('<?= Director::$page_path->getLast()->getId() ?>')">Modifier</button> | 22 | <button onclick="changeDescription('<?= Model::$page_path->getLast()->getId() ?>')">Modifier</button> |
| 23 | </div> | 23 | </div> |
| 24 | </div> | 24 | </div> |
| 25 | </div> | 25 | </div> |
| 26 | <div class="delete_page_zone"> | 26 | <div class="delete_page_zone"> |
| 27 | <form method="post" action="<?= new URL ?>"> | 27 | <form method="post" action="<?= new URL ?>"> |
| 28 | <label>Supprimer cette page</label> | 28 | <label>Supprimer cette page</label> |
| 29 | <input type="hidden" name="page_id" value="<?= Director::$page_path->getLast()->getId() ?>"> | 29 | <input type="hidden" name="page_id" value="<?= Model::$page_path->getLast()->getId() ?>"> |
| 30 | <input type="hidden" name="submit_hidden"> | 30 | <input type="hidden" name="submit_hidden"> |
| 31 | <input type="submit" value="Supprimer" onclick="return confirm('Voulez-vous vraiment supprimer cette page?');"> | 31 | <input type="submit" value="Supprimer" onclick="return confirm('Voulez-vous vraiment supprimer cette page?');"> |
| 32 | </form> | 32 | </form> |
