From eb3e1eb8c8365d3b3d1d39f24314ba420255afc2 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 21 Apr 2025 20:36:10 +0200 Subject: page menu et chemin, partie1 --- src/controller/ajax.php | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/controller/ajax.php') diff --git a/src/controller/ajax.php b/src/controller/ajax.php index a4b61e4..c774bf3 100644 --- a/src/controller/ajax.php +++ b/src/controller/ajax.php @@ -6,7 +6,7 @@ declare(strict_types=1); use App\Entity\Article; use App\Entity\Node; -// détection des requêtes de tinymce +// détection des requêtes de tinymce ou touchant aux articles if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action'])) { // récupération des données @@ -204,6 +204,48 @@ if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_ die; } +if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['menu_edit'])) +{ + // récupération des données + $data = file_get_contents('php://input'); + $json = json_decode($data, true); + + if($_GET['menu_edit'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])) + { + //$menu = new Menu($entityManager); + Director::$menu_data = new Menu($entityManager); + + $id1 = $json['id1']; + $id2 = $json['id2']; + + // vérifier qu'ils ont le même parent + $page1 = Director::$menu_data->findPageById((int)$id1); + $page2 = Director::$menu_data->findPageById((int)$id2); + + // double le contrôle fait en JS + if($page1->getParent() === $page2->getParent()) // comparaison stricte d'objet (même instance du parent?) + { + // inversion + $tmp = $page1->getPosition(); + $page1->setPosition($page2->getPosition()); + $page2->setPosition($tmp); + Director::$menu_data->sortChildren(true); // modifie tableau children + $entityManager->flush(); + + // menu utilisant les nouvelles données + //Director::$page_path = new Path(); + $nav_builder = new NavBuilder(); // builder appelé sans envoi du noeud correspondant + + echo json_encode(['success' => true, 'path1' => '', 'path2' => '', 'nav' => $nav_builder->render()]); + } + else{ + echo json_encode(['success' => false]); + } + + die; + } +} + // détection des requêtes de type XHR, pas d'utilité pour l'instant /*elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){ echo "requête XHR reçue par le serveur"; -- cgit v1.2.3