diff options
author | polo <ordipolo@gmx.fr> | 2025-05-07 01:11:27 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2025-05-07 01:11:27 +0200 |
commit | 2d8ec75f4aaf3b93fd9f6758f8dcb4f1f9f03d0c (patch) | |
tree | dfa6f5e31ed96f9ddcf9238304364e7887c26a7d /src/controller/post.php | |
parent | 5fc1a655e0271b583f3caa009524ea9d99a8bd3e (diff) | |
download | cms-2d8ec75f4aaf3b93fd9f6758f8dcb4f1f9f03d0c.zip |
page menu et chemins, partie5
Diffstat (limited to 'src/controller/post.php')
-rw-r--r-- | src/controller/post.php | 56 |
1 files changed, 50 insertions, 6 deletions
diff --git a/src/controller/post.php b/src/controller/post.php index 66de5a0..d2e4477 100644 --- a/src/controller/post.php +++ b/src/controller/post.php | |||
@@ -3,15 +3,59 @@ | |||
3 | 3 | ||
4 | declare(strict_types=1); | 4 | declare(strict_types=1); |
5 | 5 | ||
6 | use App\Entity\Page; | ||
7 | |||
6 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | 8 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) |
7 | { | 9 | { |
8 | /* -- formulaires HTML -- */ | 10 | /* -- formulaires HTML classiques -- */ |
9 | /*if(isset($_POST['from']) // page d'où vient la requête | 11 | if($_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') |
10 | && isset($_POST)) // données | ||
11 | { | 12 | { |
12 | echo "requête envoyée en validant un formulaire"; | 13 | // création d'une entrée de menu avec une URL |
13 | }*/ | 14 | if(isset($_POST["label_input"]) && isset($_POST["url_input"]) && isset($_POST["location"])){ |
15 | echo $_POST["label_input"] . '<br>'; | ||
16 | echo $_POST["url_input"] . '<br>'; | ||
17 | echo $_POST["location"] . '<br>'; // id entrée précédente | ||
18 | |||
19 | Director::$menu_data = new Menu($entityManager); | ||
20 | $previous_page = Director::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); | ||
21 | $parent = $previous_page->getParent(); | ||
22 | |||
23 | $page = new Page($_POST["label_input"], $_POST["url_input"], true, true, false, $previous_page->getPosition(), $parent); | ||
24 | // on indique pour la nouvelle entrée la même position que la précédente, puis addChild l'ajoute à la fin du tableau "children" avant de déclencher un tri | ||
25 | // 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 | ||
26 | if($parent == null){ | ||
27 | $parent = Director::$menu_data; | ||
28 | } | ||
29 | $parent->addChild($page); // true pour réindexer les positions en BDD | ||
30 | $parent->reindex(); | ||
31 | |||
32 | $entityManager->persist($page); | ||
33 | $entityManager->flush(); | ||
34 | |||
35 | header("Location: " . new URL(['page' => $_GET['from']])); | ||
36 | } | ||
37 | // suppression d'une entrée de menu avec une URL | ||
38 | elseif(isset($_POST['delete']) && isset($_POST['x']) && isset($_POST['y'])){ // 2 params x et y sont là parce qu'on a cliqué sur une image | ||
39 | Director::$menu_data = new Menu($entityManager); | ||
40 | $page = Director::$menu_data->findPageById((int)$_POST["delete"]); | ||
41 | $parent = $page->getParent(); | ||
42 | if($parent == null){ | ||
43 | $parent = Director::$menu_data; | ||
44 | } | ||
45 | |||
46 | $parent->removeChild($page); // suppression de $children avant de trier | ||
47 | $parent->reindex(); | ||
14 | 48 | ||
49 | $entityManager->remove($page); // suppression en BDD | ||
50 | $entityManager->flush(); | ||
51 | header("Location: " . new URL(['page' => $_GET['from']])); | ||
52 | } | ||
53 | else{ | ||
54 | header("Location: " . new URL(['error' => 'paramètres inconnus'])); | ||
55 | } | ||
56 | } | ||
15 | /* -- requêtes AJAX -- */ | 57 | /* -- requêtes AJAX -- */ |
16 | require '../src/controller/ajax.php'; | 58 | else{ |
59 | require '../src/controller/ajax.php'; | ||
60 | } | ||
17 | } | 61 | } |