diff options
| author | polo <ordipolo@gmx.fr> | 2025-04-27 23:58:46 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-04-27 23:58:46 +0200 |
| commit | 962d315ec0c99974df3dc2261bf94c54ca8cdbdd (patch) | |
| tree | 7463f74a722e759067daf8c3ef43202a60352759 /src/controller | |
| parent | a3ba7dde60dc1c94b7170ec28266a966e5004d33 (diff) | |
| download | cms-962d315ec0c99974df3dc2261bf94c54ca8cdbdd.tar.gz cms-962d315ec0c99974df3dc2261bf94c54ca8cdbdd.tar.bz2 cms-962d315ec0c99974df3dc2261bf94c54ca8cdbdd.zip | |
page menu et chemins, partie3
Diffstat (limited to 'src/controller')
| -rw-r--r-- | src/controller/ajax.php | 87 | ||||
| -rw-r--r-- | src/controller/installation.php | 14 | ||||
| -rw-r--r-- | src/controller/post.php | 82 |
3 files changed, 172 insertions, 11 deletions
diff --git a/src/controller/ajax.php b/src/controller/ajax.php index 9d1cc42..a20bd87 100644 --- a/src/controller/ajax.php +++ b/src/controller/ajax.php | |||
| @@ -170,7 +170,8 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action'])) | |||
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | // détection des requêtes d'upload d'image de tinymce | 172 | // détection des requêtes d'upload d'image de tinymce |
| 173 | if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_GET['action']) && $_GET['action'] === 'upload_image'){ | 173 | if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_GET['action']) && $_GET['action'] === 'upload_image') |
| 174 | { | ||
| 174 | if (isset($_FILES['file'])) { | 175 | if (isset($_FILES['file'])) { |
| 175 | $file = $_FILES['file']; | 176 | $file = $_FILES['file']; |
| 176 | $dest = 'images/'; | 177 | $dest = 'images/'; |
| @@ -211,6 +212,90 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['menu_edit'])) | |||
| 211 | $json = json_decode($data, true); | 212 | $json = json_decode($data, true); |
| 212 | Director::$menu_data = new Menu($entityManager); | 213 | Director::$menu_data = new Menu($entityManager); |
| 213 | 214 | ||
| 215 | // flèche gauche <=: position = position du parent + 1, parent = grand-parent, recalculer les positions | ||
| 216 | if($_GET['menu_edit'] === 'move_one_level_up' && isset($json['id'])){ | ||
| 217 | $id = $json['id']; | ||
| 218 | $page = Director::$menu_data->findPageById((int)$id); | ||
| 219 | |||
| 220 | $parent = $page->getParent(); // peut être null | ||
| 221 | if($parent === null){ | ||
| 222 | // 1er niveau: ne rien faire | ||
| 223 | echo json_encode(['success' => false]); | ||
| 224 | die; | ||
| 225 | } | ||
| 226 | // BDD | ||
| 227 | else{ | ||
| 228 | $page->setPosition($parent->getPosition() + 1); // nouvelle position | ||
| 229 | |||
| 230 | // 2ème niveau: le parent devient $menu_data, puis null après tri | ||
| 231 | if($parent->getParent() === null){ | ||
| 232 | // connexion dans les deux sens | ||
| 233 | $page->setParent(Director::$menu_data); // => pour la persistance | ||
| 234 | |||
| 235 | //Director::$menu_data->addChild($page); // => pour sortChildren | ||
| 236 | $page->getParent()->addChild($page); // => pour sortChildren | ||
| 237 | //Director::$menu_data->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 238 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 239 | $page->setParent(null); | ||
| 240 | |||
| 241 | // affichage | ||
| 242 | $page->setPagePath($page->getEndOfPath()); | ||
| 243 | $page->fillChildrenPagePath(); | ||
| 244 | } | ||
| 245 | // 3ème niveau et plus | ||
| 246 | else{ | ||
| 247 | $page->setParent($parent->getParent()); // nouveau parent | ||
| 248 | $page->getParent()->addChild($page); // => pour sortChildren | ||
| 249 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 250 | $page->fillChildrenPagePath($page->getParent()->getPagePath()); | ||
| 251 | } | ||
| 252 | //$parent->sortChildren(true); // positions des enfants restants, inutile si la fonction est récursive? | ||
| 253 | $entityManager->flush(); | ||
| 254 | |||
| 255 | // affichage | ||
| 256 | $parent->removeChild($page); | ||
| 257 | $nav_builder = new NavBuilder(); | ||
| 258 | $menu_builder = new MenuBuilder(null, false); | ||
| 259 | echo json_encode(['success' => true, 'nav' => $nav_builder->render(), 'menu_buttons' => $menu_builder->render()]); | ||
| 260 | die; | ||
| 261 | } | ||
| 262 | } | ||
| 263 | |||
| 264 | // flèche droite =>: position = nombre d'éléments de la fraterie + 1, l'élément précédent devient le parent | ||
| 265 | if($_GET['menu_edit'] === 'move_one_level_down' && isset($json['id'])){ | ||
| 266 | $id = $json['id']; | ||
| 267 | $page = Director::$menu_data->findPageById((int)$id); | ||
| 268 | |||
| 269 | $parent = $page->getParent(); // peut être null | ||
| 270 | if($parent == null){ | ||
| 271 | $parent = Director::$menu_data; | ||
| 272 | } | ||
| 273 | |||
| 274 | // BDD | ||
| 275 | $parent->sortChildren(true); // trie et réindexe par sécurité: 1, 2, 3... | ||
| 276 | if($page->getPosition() > 1){ | ||
| 277 | foreach($parent->getChildren() as $child){ | ||
| 278 | //echo $child->getPageName(); | ||
| 279 | if($child->getPosition() === $page->getPosition() - 1){ | ||
| 280 | $page->setParent($child); | ||
| 281 | break; | ||
| 282 | } | ||
| 283 | } | ||
| 284 | $page->setPosition(count($page->getParent()->getChildren()) + 1); | ||
| 285 | } | ||
| 286 | $entityManager->flush(); | ||
| 287 | |||
| 288 | // affichage | ||
| 289 | $parent->removeChild($page); | ||
| 290 | $page->getParent()->addChild($page); | ||
| 291 | $page->fillChildrenPagePath($page->getParent()->getPagePath()); // variable non mappée $page_path | ||
| 292 | $nav_builder = new NavBuilder(); | ||
| 293 | $menu_builder = new MenuBuilder(null, false); | ||
| 294 | |||
| 295 | echo json_encode(['success' => true, 'nav' => $nav_builder->render(), 'menu_buttons' => $menu_builder->render()]); | ||
| 296 | die; | ||
| 297 | } | ||
| 298 | |||
| 214 | if($_GET['menu_edit'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])) | 299 | if($_GET['menu_edit'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])) |
| 215 | { | 300 | { |
| 216 | $id1 = $json['id1']; | 301 | $id1 = $json['id1']; |
diff --git a/src/controller/installation.php b/src/controller/installation.php index ff168eb..4aaa4e0 100644 --- a/src/controller/installation.php +++ b/src/controller/installation.php | |||
| @@ -77,12 +77,12 @@ HTACCESS; | |||
| 77 | function makeStartPage(EntityManager $entityManager){ | 77 | function makeStartPage(EntityManager $entityManager){ |
| 78 | /* -- table page -- */ | 78 | /* -- table page -- */ |
| 79 | // paramètres: name_page, end_of_path, reachable, in_menu, position, parent | 79 | // paramètres: name_page, end_of_path, reachable, in_menu, position, parent |
| 80 | $accueil = new Page('Accueil', 'accueil', true, true, 1, NULL); | 80 | $accueil = new Page('Accueil', 'accueil', true, true, false, 1, NULL); |
| 81 | $connection = new Page('Connexion', 'connexion', true, false, NULL, NULL); | 81 | $connection = new Page('Connexion', 'connexion', true, false, false, NULL, NULL); |
| 82 | $article = new Page('Article', 'article', true, false, NULL, NULL); | 82 | $article = new Page('Article', 'article', true, false, false, NULL, NULL); |
| 83 | $menu_paths = new Page("Menu et chemins", 'menu_chemins', true, false, NULL, NULL); | 83 | $menu_paths = new Page("Menu et chemins", 'menu_chemins', true, false, false, NULL, NULL); |
| 84 | $edit_page = new Page("Modification d'une page", 'modif_page', true, false, NULL, NULL); | 84 | $edit_page = new Page("Modification d'une page", 'modif_page', true, false, false, NULL, NULL); |
| 85 | $new_page = new Page('Nouvelle page', 'nouvelle_page', true, false, NULL, NULL); | 85 | $new_page = new Page('Nouvelle page', 'nouvelle_page', true, false, false, NULL, NULL); |
| 86 | 86 | ||
| 87 | /* -- table node -- */ | 87 | /* -- table node -- */ |
| 88 | // paramètres: name_node, article_timestamp, attributes, position, parent, page, article | 88 | // paramètres: name_node, article_timestamp, attributes, position, parent, page, article |
| @@ -95,7 +95,7 @@ function makeStartPage(EntityManager $entityManager){ | |||
| 95 | $head_login = new Node('head', NULL, ["stop" => true, 'css_array' => ['body', 'head', 'nav', 'main'], 'js_array' => ['main']], 1, NULL, $connection, NULL); | 95 | $head_login = new Node('head', NULL, ["stop" => true, 'css_array' => ['body', 'head', 'nav', 'main'], 'js_array' => ['main']], 1, NULL, $connection, NULL); |
| 96 | $login = new Node('login', NULL, [], 1, $main, $connection, NULL); | 96 | $login = new Node('login', NULL, [], 1, $main, $connection, NULL); |
| 97 | $head_article = new Node('head', NULL, ['css_array' => ['body', 'head', 'nav', 'main', 'foot'], 'js_array' => ['main']], 1, NULL, $article, NULL); | 97 | $head_article = new Node('head', NULL, ['css_array' => ['body', 'head', 'nav', 'main', 'foot'], 'js_array' => ['main']], 1, NULL, $article, NULL); |
| 98 | $head_edit_menu = new Node('head', NULL, ['css_array' => ['body', 'head', 'nav', 'main', 'menu'], 'js_array' => ['main']], 1, NULL, $menu_paths, NULL); | 98 | $head_edit_menu = new Node('head', NULL, ['css_array' => ['body', 'head', 'nav', 'main', 'menu'], 'js_array' => ['main', 'menu']], 1, NULL, $menu_paths, NULL); |
| 99 | $edit_menu = new Node('menu', NULL, [], 1, $main, $menu_paths, NULL); | 99 | $edit_menu = new Node('menu', NULL, [], 1, $main, $menu_paths, NULL); |
| 100 | 100 | ||
| 101 | /* -- table image -- */ | 101 | /* -- table image -- */ |
diff --git a/src/controller/post.php b/src/controller/post.php index 926a5ae..8924686 100644 --- a/src/controller/post.php +++ b/src/controller/post.php | |||
| @@ -5,13 +5,89 @@ declare(strict_types=1); | |||
| 5 | 5 | ||
| 6 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | 6 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) |
| 7 | { | 7 | { |
| 8 | // requêtes AJAX | 8 | /* -- requêtes non AJAX -- */ |
| 9 | // page Menu et chemin | ||
| 10 | /*if(isset($_POST['menu_edit_post']) && isset($_POST['id'])) | ||
| 11 | { | ||
| 12 | // <= flèche gauche: le parent devient le grand-parent position = position du parent + 1, recalculer les positions des enfants restants | ||
| 13 | if($_POST['menu_edit_post'] == 'move_one_level_up'){ | ||
| 14 | Director::$menu_data = new Menu($entityManager); | ||
| 15 | $page = Director::$menu_data->findPageById((int)$_POST['id']); | ||
| 16 | |||
| 17 | $parent = $page->getParent(); // peut être null | ||
| 18 | if($parent === null){ | ||
| 19 | // 1er niveau: ne rien faire | ||
| 20 | header('Location: ' . new URL(['page' => 'menu_chemins'])); | ||
| 21 | die; | ||
| 22 | } | ||
| 23 | else{ | ||
| 24 | $page->setPosition($parent->getPosition() + 1); // nouvelle position | ||
| 25 | |||
| 26 | // 2ème niveau: le parent devient $menu_data, puis null après tri | ||
| 27 | if($parent->getParent() === null){ | ||
| 28 | // connexion dans les deux sens | ||
| 29 | $page->setParent(Director::$menu_data); // => pour la persistance | ||
| 30 | Director::$menu_data->addChild($page); // => pour sortChildren | ||
| 31 | |||
| 32 | //Director::$menu_data->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 33 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 34 | |||
| 35 | $page->setParent(null); | ||
| 36 | } | ||
| 37 | // 3ème niveau et plus | ||
| 38 | else{ | ||
| 39 | $page->setParent($parent->getParent()); // nouveau parent | ||
| 40 | $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères | ||
| 41 | } | ||
| 42 | //$parent->sortChildren(true); // positions des enfants restants, inutile si la fonction est récursive? | ||
| 43 | echo $page->getPosition(); | ||
| 44 | //die; | ||
| 45 | } | ||
| 46 | $entityManager->flush(); | ||
| 47 | |||
| 48 | header('Location: ' . new URL(['page' => 'menu_chemins'])); | ||
| 49 | die; | ||
| 50 | } | ||
| 51 | // => flèche droite: l'élément précédent devient le parent, position = nombre d'éléments de la fraterie + 1 | ||
| 52 | elseif($_POST['menu_edit_post'] == 'move_one_level_down') | ||
| 53 | { | ||
| 54 | Director::$menu_data = new Menu($entityManager); | ||
| 55 | $page = Director::$menu_data->findPageById((int)$_POST['id']); | ||
| 56 | |||
| 57 | $parent = $page->getParent(); // peut être null | ||
| 58 | if($parent == null){ | ||
| 59 | $parent = Director::$menu_data; | ||
| 60 | } | ||
| 61 | |||
| 62 | $parent->sortChildren(true); // trie et réindexe par sécurité: 1, 2, 3... | ||
| 63 | if($page->getPosition() > 1){ | ||
| 64 | foreach($parent->getChildren() as $child){ | ||
| 65 | echo $child->getPageName(); | ||
| 66 | if($child->getPosition() === $page->getPosition() - 1){ | ||
| 67 | $page->setParent($child); | ||
| 68 | break; | ||
| 69 | } | ||
| 70 | } | ||
| 71 | $page->setPosition(count($page->getParent()->getChildren()) + 1); | ||
| 72 | } | ||
| 73 | $entityManager->flush(); | ||
| 74 | |||
| 75 | header('Location: ' . new URL(['page' => 'menu_chemins'])); | ||
| 76 | die; | ||
| 77 | } | ||
| 78 | else{ | ||
| 79 | // you talking to me? | ||
| 80 | die; | ||
| 81 | } | ||
| 82 | }*/ | ||
| 83 | |||
| 84 | /* -- requêtes AJAX -- */ | ||
| 9 | require '../src/controller/ajax.php'; | 85 | require '../src/controller/ajax.php'; |
| 10 | 86 | ||
| 11 | // formulaires HTML | 87 | // formulaires HTML |
| 12 | if(isset($_POST['from']) // page d'où vient la requête | 88 | /*if(isset($_POST['from']) // page d'où vient la requête |
| 13 | && isset($_POST)) // données | 89 | && isset($_POST)) // données |
| 14 | { | 90 | { |
| 15 | echo "requête envoyée en validant un formulaire"; | 91 | echo "requête envoyée en validant un formulaire"; |
| 16 | } | 92 | }*/ |
| 17 | } | 93 | } |
