diff options
| author | polo <ordipolo@gmx.fr> | 2026-06-10 20:56:25 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-06-10 20:56:25 +0200 |
| commit | ae217a6e4b0c29346381e2a410fd7810cb33ce3f (patch) | |
| tree | 206f604c9297deabf78bb33f31a1e6b9303d2258 /src/controller/PageManagementController.php | |
| parent | 99d2616a08c98e7067cdb12f0bcbd4ac0cffaeb0 (diff) | |
| download | cms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.tar.gz cms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.tar.bz2 cms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.zip | |
Tous les contrôleurs retournent une Response!
Diffstat (limited to 'src/controller/PageManagementController.php')
| -rw-r--r-- | src/controller/PageManagementController.php | 126 |
1 files changed, 58 insertions, 68 deletions
diff --git a/src/controller/PageManagementController.php b/src/controller/PageManagementController.php index 8c4092f..a43f36c 100644 --- a/src/controller/PageManagementController.php +++ b/src/controller/PageManagementController.php | |||
| @@ -8,25 +8,28 @@ use App\Entity\Node; | |||
| 8 | use App\Entity\NodeData; | 8 | use App\Entity\NodeData; |
| 9 | //use App\Entity\Image; | 9 | //use App\Entity\Image; |
| 10 | use Doctrine\ORM\EntityManager; | 10 | use Doctrine\ORM\EntityManager; |
| 11 | use Symfony\Component\HttpFoundation\InputBag; | ||
| 12 | use Symfony\Component\HttpFoundation\JsonResponse; | ||
| 13 | use Symfony\Component\HttpFoundation\RedirectResponse; | ||
| 14 | use Symfony\Component\HttpFoundation\Request; | ||
| 11 | 15 | ||
| 12 | class PageManagementController | 16 | class PageManagementController |
| 13 | { | 17 | { |
| 14 | /* -- partie page -- */ | 18 | /* -- partie page -- */ |
| 15 | static public function setPageTitle(EntityManager $entityManager, array $json): void | 19 | static public function setPageTitle(EntityManager $entityManager, array $json): JsonResponse |
| 16 | { | 20 | { |
| 17 | $page = $entityManager->find('App\Entity\Page', $json['page_id']); | 21 | $page = $entityManager->find('App\Entity\Page', $json['page_id']); |
| 18 | $page->setPageName(htmlspecialchars($json['title'])); | 22 | $page->setPageName(htmlspecialchars($json['title'])); |
| 19 | $entityManager->flush(); | 23 | $entityManager->flush(); |
| 20 | echo json_encode(['success' => true, 'title' => $page->getPageName()]); | 24 | return new JsonResponse(['success' => true, 'title' => $page->getPageName()]); |
| 21 | die; | ||
| 22 | } | 25 | } |
| 23 | 26 | ||
| 24 | static public function updatePageMenuPath(EntityManager $entityManager): void | 27 | static public function updatePageMenuPath(EntityManager $entityManager, string $page_menu_path): RedirectResponse |
| 25 | { | 28 | { |
| 26 | Model::$menu = new Menu($entityManager); | 29 | Model::$menu = new Menu($entityManager); |
| 27 | Model::$page_path = new Path(); | 30 | Model::$page_path = new Path(); |
| 28 | $page = Model::$page_path->getLast(); | 31 | $page = Model::$page_path->getLast(); |
| 29 | $path = htmlspecialchars($_POST['page_menu_path']); | 32 | $path = htmlspecialchars($page_menu_path); |
| 30 | 33 | ||
| 31 | // mise en snake_case: filtre caractères non-alphanumériques, minuscule, doublons d'underscore, trim des underscores | 34 | // mise en snake_case: filtre caractères non-alphanumériques, minuscule, doublons d'underscore, trim des underscores |
| 32 | $path = trim(preg_replace('/_+/', '_', strtolower(preg_replace('/[^a-zA-Z0-9]/', '_', $path))), '_'); | 35 | $path = trim(preg_replace('/_+/', '_', strtolower(preg_replace('/[^a-zA-Z0-9]/', '_', $path))), '_'); |
| @@ -37,30 +40,28 @@ class PageManagementController | |||
| 37 | } | 40 | } |
| 38 | } | 41 | } |
| 39 | $entityManager->flush(); | 42 | $entityManager->flush(); |
| 40 | header("Location: " . new URL(['page' => $page->getPagePath(), 'mode' => 'page_modif'])); | 43 | return new RedirectResponse((string)new URL(['page' => $page->getPagePath(), 'mode' => 'page_modif'])); |
| 41 | die; | ||
| 42 | } | 44 | } |
| 43 | 45 | ||
| 44 | static public function setPageDescription(EntityManager $entityManager, array $json): void | 46 | static public function setPageDescription(EntityManager $entityManager, array $json): JsonResponse |
| 45 | { | 47 | { |
| 46 | $page = $entityManager->find('App\Entity\Page', $json['page_id']); | 48 | $page = $entityManager->find('App\Entity\Page', $json['page_id']); |
| 47 | $page->setDescription(htmlspecialchars($json['description'])); | 49 | $page->setDescription(htmlspecialchars($json['description'])); |
| 48 | $entityManager->flush(); | 50 | $entityManager->flush(); |
| 49 | echo json_encode(['success' => true, 'description' => $page->getDescription()]); | 51 | return new JsonResponse(['success' => true, 'description' => $page->getDescription()]); |
| 50 | die; | ||
| 51 | } | 52 | } |
| 52 | 53 | ||
| 53 | static public function newPage(EntityManager $entityManager, array $post): void | 54 | static public function newPage(EntityManager $entityManager, InputBag $post): RedirectResponse |
| 54 | { | 55 | { |
| 55 | // titre et chemin | 56 | // titre et chemin |
| 56 | Model::$menu = new Menu($entityManager); | 57 | Model::$menu = new Menu($entityManager); |
| 57 | $previous_page = Model::$menu->findPageById((int)$post["page_location"]); // (int) à cause de declare(strict_types=1); | 58 | $previous_page = Model::$menu->findPageById((int)$post->get("page_location")); // (int) à cause de declare(strict_types=1); |
| 58 | $parent = $previous_page->getParent(); | 59 | $parent = $previous_page->getParent(); |
| 59 | 60 | ||
| 60 | $page = new Page( | 61 | $page = new Page( |
| 61 | trim(htmlspecialchars($post["page_name"])), | 62 | trim(htmlspecialchars($post->get("page_name"))), |
| 62 | trim(htmlspecialchars($post["page_name_path"])), | 63 | trim(htmlspecialchars($post->get("page_name_path"))), |
| 63 | trim(htmlspecialchars($post["page_description"])), | 64 | trim(htmlspecialchars($post->get("page_description"))), |
| 64 | true, true, false, | 65 | true, true, false, |
| 65 | $previous_page->getPosition(), | 66 | $previous_page->getPosition(), |
| 66 | $parent); // peut et DOIT être null si on est au 1er niveau | 67 | $parent); // peut et DOIT être null si on est au 1er niveau |
| @@ -80,14 +81,13 @@ class PageManagementController | |||
| 80 | $entityManager->flush(); | 81 | $entityManager->flush(); |
| 81 | 82 | ||
| 82 | // page créée, direction la page en mode modification pour ajouter des blocs | 83 | // page créée, direction la page en mode modification pour ajouter des blocs |
| 83 | header("Location: " . new URL(['page' => $page->getPagePath(), 'mode' => 'page_modif'])); | 84 | return new RedirectResponse((string)new URL(['page' => $page->getPagePath(), 'mode' => 'page_modif'])); |
| 84 | die; | ||
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | static public function deletePage(EntityManager $entityManager): void | 87 | static public function deletePage(EntityManager $entityManager, string $page_id): RedirectResponse |
| 88 | { | 88 | { |
| 89 | $menu = new Menu($entityManager); | 89 | $menu = new Menu($entityManager); |
| 90 | $page = $menu->findPageById((int)$_POST['page_id']); | 90 | $page = $menu->findPageById((int)$page_id); |
| 91 | $url = new URL; | 91 | $url = new URL; |
| 92 | 92 | ||
| 93 | // test dernière page | 93 | // test dernière page |
| @@ -115,13 +115,12 @@ class PageManagementController | |||
| 115 | $next_page = $menu->getChildren()->isEmpty() ? $next_page = $page->getChildren()[0] : $menu->getChildren()[0]; | 115 | $next_page = $menu->getChildren()->isEmpty() ? $next_page = $page->getChildren()[0] : $menu->getChildren()[0]; |
| 116 | $url->addParams(['page' => $next_page->getEndOfPath()]); | 116 | $url->addParams(['page' => $next_page->getEndOfPath()]); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | header("Location: " . $url); | 119 | return new RedirectResponse((string)$url); |
| 120 | die; | ||
| 121 | } | 120 | } |
| 122 | 121 | ||
| 123 | /* partie "blocs" */ | 122 | /* partie "blocs" */ |
| 124 | static public function addBloc(EntityManager $entityManager): void | 123 | static public function addBloc(EntityManager $entityManager, Request $request): RedirectResponse |
| 125 | { | 124 | { |
| 126 | $model = new Model($entityManager); | 125 | $model = new Model($entityManager); |
| 127 | $model->makeMenuAndPaths(); // on a besoin de page_path qui dépend de menu | 126 | $model->makeMenuAndPaths(); // on a besoin de page_path qui dépend de menu |
| @@ -131,31 +130,30 @@ class PageManagementController | |||
| 131 | $main = $model->getNode(); | 130 | $main = $model->getNode(); |
| 132 | $position = count($main->getChildren()) + 1; // position dans la fraterie | 131 | $position = count($main->getChildren()) + 1; // position dans la fraterie |
| 133 | 132 | ||
| 134 | if(!in_array($_POST["bloc_select"], array_keys(Blocks::$blocks), true)) // 3è param: contrôle du type | 133 | if(!in_array($request->request->get("bloc_select"), array_keys(Blocks::$blocks), true)){ // 3è param: contrôle du type |
| 135 | { | 134 | // utiliser une flash error |
| 136 | header("Location: " . new URL(['page' => $_GET['page'], 'error' => 'bad_bloc_type'])); | 135 | return new RedirectResponse((string)new URL(['page' => $request->query->get('page'), 'error' => 'bad_bloc_type'])); |
| 137 | die; | ||
| 138 | } | 136 | } |
| 139 | 137 | ||
| 140 | if(in_array($_POST["bloc_select"], ['calendar', 'form'])){ | 138 | if(in_array($request->request->get("bloc_select"), ['calendar', 'form'])){ |
| 141 | $page->addCSS($_POST["bloc_select"]); | 139 | $page->addCSS($request->request->get("bloc_select")); |
| 142 | if($_POST["bloc_select"] === 'form'){ | 140 | if($request->request->get("bloc_select") === 'form'){ |
| 143 | $page->addJS($_POST["bloc_select"]); | 141 | $page->addJS($request->request->get("bloc_select")); |
| 144 | } | 142 | } |
| 145 | $entityManager->persist($page); | 143 | $entityManager->persist($page); |
| 146 | } | 144 | } |
| 147 | 145 | ||
| 148 | $block = new Node($_POST["bloc_select"], $position, $main, $page); | 146 | $block = new Node($request->request->get("bloc_select"), $position, $main, $page); |
| 149 | $data = new NodeData(['title' => trim(htmlspecialchars($_POST["bloc_title"]))], $block); | 147 | $data = new NodeData(['title' => trim(htmlspecialchars($request->request->get("bloc_title")))], $block); |
| 150 | 148 | ||
| 151 | // valeurs par défaut | 149 | // valeurs par défaut |
| 152 | if($_POST["bloc_select"] === 'post_block'){ | 150 | if($request->request->get("bloc_select") === 'post_block'){ |
| 153 | $data->setPresentation('fullwidth'); | 151 | $data->setPresentation('fullwidth'); |
| 154 | } | 152 | } |
| 155 | elseif($_POST["bloc_select"] === 'news_block'){ | 153 | elseif($request->request->get("bloc_select") === 'news_block'){ |
| 156 | $data->setPresentation('grid'); | 154 | $data->setPresentation('grid'); |
| 157 | } | 155 | } |
| 158 | elseif($_POST["bloc_select"] === 'galery'){ | 156 | elseif($request->request->get("bloc_select") === 'galery'){ |
| 159 | $data->setPresentation('mosaic'); // un jour on mettra carousel | 157 | $data->setPresentation('mosaic'); // un jour on mettra carousel |
| 160 | } | 158 | } |
| 161 | // else = null par défaut | 159 | // else = null par défaut |
| @@ -163,11 +161,10 @@ class PageManagementController | |||
| 163 | $entityManager->persist($block); | 161 | $entityManager->persist($block); |
| 164 | $entityManager->persist($data); | 162 | $entityManager->persist($data); |
| 165 | $entityManager->flush(); | 163 | $entityManager->flush(); |
| 166 | header("Location: " . new URL(['page' => $_GET['page'], 'mode' => 'page_modif'])); | 164 | return new RedirectResponse((string)new URL(['page' => $request->query->get('page'), 'mode' => 'page_modif'])); |
| 167 | die; | ||
| 168 | } | 165 | } |
| 169 | 166 | ||
| 170 | static public function deleteBloc(EntityManager $entityManager): void | 167 | static public function deleteBloc(EntityManager $entityManager, Request $request): RedirectResponse |
| 171 | { | 168 | { |
| 172 | $model = new Model($entityManager); | 169 | $model = new Model($entityManager); |
| 173 | $model->makeMenuAndPaths(); | 170 | $model->makeMenuAndPaths(); |
| @@ -179,7 +176,7 @@ class PageManagementController | |||
| 179 | $type = ''; | 176 | $type = ''; |
| 180 | $nb_same_type = 0; | 177 | $nb_same_type = 0; |
| 181 | foreach($main->getChildren() as $child){ | 178 | foreach($main->getChildren() as $child){ |
| 182 | if($child->getId() === (int)$_POST['delete_bloc_id']){ | 179 | if($child->getId() === (int)$request->request->get('delete_bloc_id')){ |
| 183 | $block = $child; | 180 | $block = $child; |
| 184 | $type = $block->getName(); | 181 | $type = $block->getName(); |
| 185 | } | 182 | } |
| @@ -207,11 +204,10 @@ class PageManagementController | |||
| 207 | $entityManager->flush(); | 204 | $entityManager->flush(); |
| 208 | } | 205 | } |
| 209 | 206 | ||
| 210 | header("Location: " . new URL(['page' => $_GET['page'], 'mode' => 'page_modif'])); | 207 | return new RedirectResponse((string)new URL(['page' => $request->query->get('page'), 'mode' => 'page_modif'])); |
| 211 | die; | ||
| 212 | } | 208 | } |
| 213 | 209 | ||
| 214 | static public function renameBloc(EntityManager $entityManager, array $json): void | 210 | static public function renameBloc(EntityManager $entityManager, array $json): JsonResponse |
| 215 | { | 211 | { |
| 216 | if(isset($json['bloc_title']) && $json['bloc_title'] !== null && isset($json['bloc_id']) && is_int($json['bloc_id'])){ | 212 | if(isset($json['bloc_title']) && $json['bloc_title'] !== null && isset($json['bloc_id']) && is_int($json['bloc_id'])){ |
| 217 | $model = new Model($entityManager); | 213 | $model = new Model($entityManager); |
| @@ -223,17 +219,16 @@ class PageManagementController | |||
| 223 | $model->getNode()->getNodeData()->updateData('title', htmlspecialchars($json['bloc_title'])); | 219 | $model->getNode()->getNodeData()->updateData('title', htmlspecialchars($json['bloc_title'])); |
| 224 | 220 | ||
| 225 | $entityManager->flush(); | 221 | $entityManager->flush(); |
| 226 | echo json_encode(['success' => true, 'title' => $data['title']]); | 222 | return new JsonResponse(['success' => true, 'title' => $data['title']]); |
| 227 | } | 223 | } |
| 228 | else{ | 224 | else{ |
| 229 | echo json_encode(['success' => false]); | 225 | return new JsonResponse(['success' => false]); |
| 230 | } | 226 | } |
| 231 | die; | ||
| 232 | } | 227 | } |
| 233 | 228 | ||
| 234 | static public function SwitchBlocsPositions(EntityManager $entityManager, array $json): void | 229 | static public function SwitchBlocsPositions(EntityManager $entityManager, array $json, string $page): JsonResponse |
| 235 | { | 230 | { |
| 236 | if(isset($json['id1']) && is_int($json['id1']) && isset($json['id2']) && is_int($json['id2']) && isset($_GET['page'])){ | 231 | if(isset($json['id1']) && is_int($json['id1']) && isset($json['id2']) && is_int($json['id2']) && isset($page)){ |
| 237 | $model = new Model($entityManager); | 232 | $model = new Model($entityManager); |
| 238 | $model->makeMenuAndPaths(); // true pour $model->findItsChildren(); | 233 | $model->makeMenuAndPaths(); // true pour $model->findItsChildren(); |
| 239 | $model->findUniqueNodeByName('main'); | 234 | $model->findUniqueNodeByName('main'); |
| @@ -262,15 +257,14 @@ class PageManagementController | |||
| 262 | $bloc2->setPosition($tmp); | 257 | $bloc2->setPosition($tmp); |
| 263 | 258 | ||
| 264 | $entityManager->flush(); | 259 | $entityManager->flush(); |
| 265 | echo json_encode(['success' => true]); | 260 | return new JsonResponse(['success' => true]); |
| 266 | } | 261 | } |
| 267 | else{ | 262 | else{ |
| 268 | echo json_encode(['success' => false]); | 263 | return new JsonResponse(['success' => false]); |
| 269 | } | 264 | } |
| 270 | die; | ||
| 271 | } | 265 | } |
| 272 | 266 | ||
| 273 | static public function changeArticlesOrder(EntityManager $entityManager, array $json): void | 267 | static public function changeArticlesOrder(EntityManager $entityManager, array $json): JsonResponse |
| 274 | { | 268 | { |
| 275 | if(isset($json['id']) && isset($json['chrono_order'])){ | 269 | if(isset($json['id']) && isset($json['chrono_order'])){ |
| 276 | $model = new Model($entityManager); | 270 | $model = new Model($entityManager); |
| @@ -289,15 +283,14 @@ class PageManagementController | |||
| 289 | $model->getNode()->getNodeData()->setChronoOrder($chrono_order); | 283 | $model->getNode()->getNodeData()->setChronoOrder($chrono_order); |
| 290 | $entityManager->flush(); | 284 | $entityManager->flush(); |
| 291 | 285 | ||
| 292 | echo json_encode(['success' => true, 'chrono_order' => $json['chrono_order']]); | 286 | return new JsonResponse(['success' => true, 'chrono_order' => $json['chrono_order']]); |
| 293 | } | 287 | } |
| 294 | else{ | 288 | else{ |
| 295 | echo json_encode(['success' => false]); | 289 | return new JsonResponse(['success' => false]); |
| 296 | } | 290 | } |
| 297 | die; | ||
| 298 | } | 291 | } |
| 299 | 292 | ||
| 300 | static public function changePresentation(EntityManager $entityManager, array $json): void | 293 | static public function changePresentation(EntityManager $entityManager, array $json): JsonResponse |
| 301 | { | 294 | { |
| 302 | if(isset($json['id']) && isset($json['presentation'])){ | 295 | if(isset($json['id']) && isset($json['presentation'])){ |
| 303 | $model = new Model($entityManager); | 296 | $model = new Model($entityManager); |
| @@ -311,18 +304,17 @@ class PageManagementController | |||
| 311 | if($json['presentation'] === 'grid'){ | 304 | if($json['presentation'] === 'grid'){ |
| 312 | $response_data['cols_min_width'] = $model->getNode()->getNodeData()->getColsMinWidth(); | 305 | $response_data['cols_min_width'] = $model->getNode()->getNodeData()->getColsMinWidth(); |
| 313 | } | 306 | } |
| 314 | echo json_encode($response_data); | 307 | return new JsonResponse($response_data); |
| 315 | } | 308 | } |
| 316 | else{ | 309 | else{ |
| 317 | echo json_encode(['success' => false]); | 310 | return new JsonResponse(['success' => false]); |
| 318 | } | 311 | } |
| 319 | } | 312 | } |
| 320 | else{ | 313 | else{ |
| 321 | echo json_encode(['success' => false]); | 314 | return new JsonResponse(['success' => false]); |
| 322 | } | 315 | } |
| 323 | die; | ||
| 324 | } | 316 | } |
| 325 | static public function changeColsMinWidth(EntityManager $entityManager, array $json): void | 317 | static public function changeColsMinWidth(EntityManager $entityManager, array $json): JsonResponse |
| 326 | { | 318 | { |
| 327 | if(isset($json['id']) && isset($json['cols_min_width'])){ | 319 | if(isset($json['id']) && isset($json['cols_min_width'])){ |
| 328 | $model = new Model($entityManager); | 320 | $model = new Model($entityManager); |
| @@ -330,14 +322,13 @@ class PageManagementController | |||
| 330 | $model->getNode()->getNodeData()->setColsMinWidth((int)$json['cols_min_width']); // attention conversion? | 322 | $model->getNode()->getNodeData()->setColsMinWidth((int)$json['cols_min_width']); // attention conversion? |
| 331 | 323 | ||
| 332 | $entityManager->flush(); | 324 | $entityManager->flush(); |
| 333 | echo json_encode(['success' => true, 'cols_min_width' => $json['cols_min_width']]); | 325 | return new JsonResponse(['success' => true, 'cols_min_width' => $json['cols_min_width']]); |
| 334 | } | 326 | } |
| 335 | else{ | 327 | else{ |
| 336 | echo json_encode(['success' => false]); | 328 | return new JsonResponse(['success' => false]); |
| 337 | } | 329 | } |
| 338 | die; | ||
| 339 | } | 330 | } |
| 340 | static public function changePaginationLimit(EntityManager $entityManager, array $json): void | 331 | static public function changePaginationLimit(EntityManager $entityManager, array $json): JsonResponse |
| 341 | { | 332 | { |
| 342 | if(isset($json['id']) && isset($json['pagination_limit'])){ | 333 | if(isset($json['id']) && isset($json['pagination_limit'])){ |
| 343 | $model = new Model($entityManager); | 334 | $model = new Model($entityManager); |
| @@ -347,11 +338,10 @@ class PageManagementController | |||
| 347 | 338 | ||
| 348 | $entityManager->flush(); | 339 | $entityManager->flush(); |
| 349 | 340 | ||
| 350 | echo json_encode(['success' => true, 'old_limit' => $old_limit, 'new_limit' => $json['pagination_limit']]); | 341 | return new JsonResponse(['success' => true, 'old_limit' => $old_limit, 'new_limit' => $json['pagination_limit']]); |
| 351 | } | 342 | } |
| 352 | else{ | 343 | else{ |
| 353 | echo json_encode(['success' => false]); | 344 | return new JsonResponse(['success' => false]); |
| 354 | } | 345 | } |
| 355 | die; | ||
| 356 | } | 346 | } |
| 357 | } \ No newline at end of file | 347 | } \ No newline at end of file |
