diff options
-rw-r--r-- | public/js/main.js | 51 | ||||
-rw-r--r-- | src/controller/ajax.php | 36 | ||||
-rw-r--r-- | src/view/MainBuilder.php | 10 |
3 files changed, 92 insertions, 5 deletions
diff --git a/public/js/main.js b/public/js/main.js index 802bbbe..7dacb7a 100644 --- a/public/js/main.js +++ b/public/js/main.js | |||
@@ -231,4 +231,55 @@ function renamePageBloc(bloc_id){ | |||
231 | .catch(error => { | 231 | .catch(error => { |
232 | console.error('Erreur:', error); | 232 | console.error('Erreur:', error); |
233 | }); | 233 | }); |
234 | } | ||
235 | |||
236 | function switchBlocsPositions(bloc_id, direction, current_page) { | ||
237 | const current_bloc = document.getElementById(bloc_id); | ||
238 | const current_bloc_edit_zone = document.getElementById("bloc_edit_" + bloc_id); | ||
239 | var other_bloc; | ||
240 | |||
241 | if(direction == 'down'){ | ||
242 | other_bloc = current_bloc.nextElementSibling; | ||
243 | } | ||
244 | else if(direction == 'up'){ | ||
245 | other_bloc = current_bloc.previousElementSibling; | ||
246 | } | ||
247 | |||
248 | if(other_bloc == null || other_bloc.tagName !== 'SECTION') | ||
249 | { | ||
250 | console.log('Inversion impossible'); | ||
251 | return; | ||
252 | } | ||
253 | const other_bloc_edit_zone = document.getElementById("bloc_edit_" + other_bloc.id); | ||
254 | |||
255 | fetch('index.php?page=' + current_page + '&bloc_edit=switch_blocs_positions', { | ||
256 | method: 'POST', | ||
257 | headers: { | ||
258 | 'Content-Type': 'application/json' | ||
259 | }, | ||
260 | body: JSON.stringify({ id1: bloc_id, id2: parseInt(other_bloc.id) }) | ||
261 | }) | ||
262 | .then(response => response.json()) | ||
263 | .then(data => { | ||
264 | if(data.success) | ||
265 | { | ||
266 | if(direction == 'down'){ | ||
267 | current_bloc.parentElement.insertBefore(other_bloc, current_bloc); | ||
268 | current_bloc_edit_zone.parentElement.insertBefore(other_bloc_edit_zone, current_bloc_edit_zone); | ||
269 | console.log('Inversion réussie'); | ||
270 | } | ||
271 | else if(direction == 'up'){ | ||
272 | other_bloc.parentElement.insertBefore(current_bloc, other_bloc); | ||
273 | other_bloc_edit_zone.parentElement.insertBefore(current_bloc_edit_zone, other_bloc_edit_zone); | ||
274 | console.log('Inversion réussie'); | ||
275 | } | ||
276 | } | ||
277 | else { | ||
278 | |||
279 | console.error('Échec de l\'inversion'); | ||
280 | } | ||
281 | }) | ||
282 | .catch(error => { | ||
283 | console.error('Erreur:', error); | ||
284 | }); | ||
234 | } \ No newline at end of file | 285 | } \ No newline at end of file |
diff --git a/src/controller/ajax.php b/src/controller/ajax.php index a6786d9..a64c39b 100644 --- a/src/controller/ajax.php +++ b/src/controller/ajax.php | |||
@@ -378,7 +378,43 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['bloc_edit'])) | |||
378 | } | 378 | } |
379 | die; | 379 | die; |
380 | } | 380 | } |
381 | // inversion des positions de deux blocs | ||
382 | elseif($_GET['bloc_edit'] === 'switch_blocs_positions') | ||
383 | { | ||
384 | if(isset($json['id1']) && is_int($json['id1']) && isset($json['id2']) && is_int($json['id2']) && isset($_GET['page'])){ | ||
385 | $director = new Director($entityManager, true); | ||
386 | $director->findUniqueNodeByName('main'); | ||
387 | $director->findItsChildren(); | ||
388 | $main = $director->getNode(); | ||
389 | $main->sortChildren(true); // régénère les positions avant inversion | ||
390 | |||
391 | $bloc1; $bloc2; | ||
392 | foreach($main->getChildren() as $child){ | ||
393 | if($child->getId() === $json['id1']){ | ||
394 | $bloc1 = $child; | ||
395 | break; | ||
396 | } | ||
397 | } | ||
398 | foreach($main->getChildren() as $child){ | ||
399 | if($child->getId() === $json['id2']){ | ||
400 | $bloc2 = $child; | ||
401 | break; | ||
402 | } | ||
403 | } | ||
381 | 404 | ||
405 | // inversion | ||
406 | $tmp = $bloc1->getPosition(); | ||
407 | $bloc1->setPosition($bloc2->getPosition()); | ||
408 | $bloc2->setPosition($tmp); | ||
409 | |||
410 | $entityManager->flush(); | ||
411 | echo json_encode(['success' => true]); | ||
412 | } | ||
413 | else{ | ||
414 | echo json_encode(['success' => false]); | ||
415 | } | ||
416 | die; | ||
417 | } | ||
382 | } | 418 | } |
383 | 419 | ||
384 | 420 | ||
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index 4664c17..5096134 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php | |||
@@ -68,7 +68,7 @@ class MainBuilder extends AbstractBuilder | |||
68 | </div> | 68 | </div> |
69 | </aside>' . "\n";*/ | 69 | </aside>' . "\n";*/ |
70 | 70 | ||
71 | // ajout d'un nouveau bloc | 71 | // création d'un bloc |
72 | $this->html .= '<div class="edit_bloc_zone"> | 72 | $this->html .= '<div class="edit_bloc_zone"> |
73 | <div class="new_bloc"> | 73 | <div class="new_bloc"> |
74 | <p>Ajouter un bloc de page</p> | 74 | <p>Ajouter un bloc de page</p> |
@@ -87,13 +87,13 @@ class MainBuilder extends AbstractBuilder | |||
87 | <p>Modifier un bloc</p>'; | 87 | <p>Modifier un bloc</p>'; |
88 | foreach($node->getChildren() as $child_node){ | 88 | foreach($node->getChildren() as $child_node){ |
89 | // renommage d'un bloc | 89 | // renommage d'un bloc |
90 | $this->html .= '<div> | 90 | $this->html .= '<div id="bloc_edit_' . $child_node->getId() . '"> |
91 | <p><label for="bloc_rename_title">Titre</label> | 91 | <p><label for="bloc_rename_' . $child_node->getId() . '">Titre</label> |
92 | <input type="text" id="bloc_rename_' . $child_node->getId() . '" name="bloc_rename_title" value="' . $child_node->getNodeData()->getdata()['title'] . '" required> | 92 | <input type="text" id="bloc_rename_' . $child_node->getId() . '" name="bloc_rename_title" value="' . $child_node->getNodeData()->getdata()['title'] . '" required> |
93 | <button onclick="renamePageBloc(' . $child_node->getId() . ')">Renommer</button>'. "\n"; | 93 | <button onclick="renamePageBloc(' . $child_node->getId() . ')">Renommer</button>'. "\n"; |
94 | // déplacement d'un bloc | 94 | // déplacement d'un bloc |
95 | $this->html .= '<img class="action_icon" onclick="switchBlocPositions(' . $child_node->getId() . ', \'up\')" src="assets/arrow-up.svg"> | 95 | $this->html .= '<img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'up\', \'' . CURRENT_PAGE . '\')" src="assets/arrow-up.svg"> |
96 | <img class="action_icon" onclick="switchBlocPositions(' . $child_node->getId() . ', \'down\')" src="assets/arrow-down.svg">' . "\n"; | 96 | <img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'down\', \'' . CURRENT_PAGE . '\')" src="assets/arrow-down.svg">' . "\n"; |
97 | // suppression d'un bloc | 97 | // suppression d'un bloc |
98 | $this->html .= '<form method="post" action="' . new URL(['page' => CURRENT_PAGE]) . '"> | 98 | $this->html .= '<form method="post" action="' . new URL(['page' => CURRENT_PAGE]) . '"> |
99 | <input type="hidden" name="delete_bloc_id" value="' . $child_node->getId() . '"> | 99 | <input type="hidden" name="delete_bloc_id" value="' . $child_node->getId() . '"> |