summaryrefslogtreecommitdiff
path: root/src/controller
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-04-27 23:58:46 +0200
committerpolo <ordipolo@gmx.fr>2025-04-27 23:58:46 +0200
commit962d315ec0c99974df3dc2261bf94c54ca8cdbdd (patch)
tree7463f74a722e759067daf8c3ef43202a60352759 /src/controller
parenta3ba7dde60dc1c94b7170ec28266a966e5004d33 (diff)
downloadcms-962d315ec0c99974df3dc2261bf94c54ca8cdbdd.zip
page menu et chemins, partie3
Diffstat (limited to 'src/controller')
-rw-r--r--src/controller/ajax.php87
-rw-r--r--src/controller/installation.php14
-rw-r--r--src/controller/post.php82
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
173if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_GET['action']) && $_GET['action'] === 'upload_image'){ 173if(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;
77function makeStartPage(EntityManager $entityManager){ 77function 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
6if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) 6if($_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}