aboutsummaryrefslogtreecommitdiff
path: root/src/controller/PageManagementController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/controller/PageManagementController.php')
-rw-r--r--src/controller/PageManagementController.php126
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;
8use App\Entity\NodeData; 8use App\Entity\NodeData;
9//use App\Entity\Image; 9//use App\Entity\Image;
10use Doctrine\ORM\EntityManager; 10use Doctrine\ORM\EntityManager;
11use Symfony\Component\HttpFoundation\InputBag;
12use Symfony\Component\HttpFoundation\JsonResponse;
13use Symfony\Component\HttpFoundation\RedirectResponse;
14use Symfony\Component\HttpFoundation\Request;
11 15
12class PageManagementController 16class 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