diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controller/ArticleController.php | 26 | ||||
-rw-r--r-- | src/controller/PageManagementController.php | 7 | ||||
-rw-r--r-- | src/view/MainBuilder.php | 6 | ||||
-rw-r--r-- | src/view/NewBuilder.php | 20 | ||||
-rw-r--r-- | src/view/NewsBlockBuilder.php | 2 | ||||
-rw-r--r-- | src/view/PostBlockBuilder.php | 13 | ||||
-rw-r--r-- | src/view/PostBuilder.php | 1 | ||||
-rw-r--r-- | src/view/templates/head.php | 1 |
8 files changed, 48 insertions, 28 deletions
diff --git a/src/controller/ArticleController.php b/src/controller/ArticleController.php index b8af290..5cebad6 100644 --- a/src/controller/ArticleController.php +++ b/src/controller/ArticleController.php | |||
@@ -16,15 +16,15 @@ class ArticleController | |||
16 | { | 16 | { |
17 | $id = $json['id']; | 17 | $id = $json['id']; |
18 | $director = new Director($entityManager); | 18 | $director = new Director($entityManager); |
19 | $content = $json['content']; | ||
19 | 20 | ||
20 | // cas d'une nouvelle "news" | 21 | // nettoyage |
21 | if(is_array($json['content'])){ | 22 | if(is_array($content)){ // cas d'une nouvelle "news" |
22 | foreach($json['content'] as $one_input){ | 23 | foreach($content as $one_input){ |
23 | $one_input = Security::secureHTML($one_input); | 24 | $one_input = Security::secureHTML($one_input); |
24 | } | 25 | } |
25 | $content = $json['content']; | ||
26 | } | 26 | } |
27 | else{ | 27 | else{ // autres cas |
28 | $content = Security::secureHTML($json['content']); | 28 | $content = Security::secureHTML($json['content']); |
29 | } | 29 | } |
30 | 30 | ||
@@ -39,21 +39,25 @@ class ArticleController | |||
39 | $director->makeSectionNode(); | 39 | $director->makeSectionNode(); |
40 | $node = $director->getNode(); // = <section> | 40 | $node = $director->getNode(); // = <section> |
41 | 41 | ||
42 | if(is_array($content)){ | 42 | if(is_array($content)){ // cas d'une nouvelle "news" |
43 | $date = new \DateTime($content['d']); | 43 | $date = new \DateTime($content['d']); |
44 | $article = new Article($content['i'], $date, $content['t'], $content['p']); | 44 | $article = new Article($content['i'], $date, $content['t'], $content['p']); |
45 | $article_node = new Node('new', 'i' . (string)$date->getTimestamp(), [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); | 45 | $article_node = new Node('new', 'i' . (string)$date->getTimestamp(), [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); |
46 | |||
47 | // id_node tout juste généré | ||
48 | //$article_node->getId(); | ||
49 | } | 46 | } |
50 | else{ | 47 | else{ // autres cas |
51 | $timestamp = time(); | 48 | $timestamp = time(); |
52 | $date = new \DateTime; | 49 | $date = new \DateTime; |
53 | $date->setTimestamp($timestamp); | 50 | $date->setTimestamp($timestamp); |
54 | 51 | ||
55 | $article = new Article($content, $date); // le "current" timestamp est obtenu par la BDD | 52 | $article = new Article($content, $date); // le "current" timestamp est obtenu par la BDD |
56 | $article_node = new Node('post', 'i' . (string)$timestamp, [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); | 53 | |
54 | $placement = $json['placement'] === 'first' ? 0 : count($node->getChildren()) + 1; // | ||
55 | $article_node = new Node('post', 'i' . (string)$timestamp, [], $placement, $node, $node->getPage(), $article); | ||
56 | |||
57 | if($json['placement'] === 'first'){ | ||
58 | $node->addChild($article_node); | ||
59 | $node->reindexPositions(); // régénère les positions (0 devient 1, 1 devient 2...) | ||
60 | } | ||
57 | } | 61 | } |
58 | 62 | ||
59 | $entityManager->persist($article_node); | 63 | $entityManager->persist($article_node); |
diff --git a/src/controller/PageManagementController.php b/src/controller/PageManagementController.php index 4528810..75967eb 100644 --- a/src/controller/PageManagementController.php +++ b/src/controller/PageManagementController.php | |||
@@ -286,7 +286,12 @@ class PageManagementController | |||
286 | $director->getNode()->getNodeData()->setPresentation($presentation); | 286 | $director->getNode()->getNodeData()->setPresentation($presentation); |
287 | 287 | ||
288 | $entityManager->flush(); | 288 | $entityManager->flush(); |
289 | echo json_encode(['success' => true, 'presentation' => $json['presentation'], 'cols_min_width' => $director->getNode()->getNodeData()->getColsMinWidth()]); | 289 | |
290 | $response_data = ['success' => true, 'presentation' => $json['presentation']]; | ||
291 | if($json['presentation'] === 'grid'){ | ||
292 | $response_data['cols_min_width'] = $director->getNode()->getNodeData()->getColsMinWidth(); | ||
293 | } | ||
294 | echo json_encode($response_data); | ||
290 | } | 295 | } |
291 | else{ | 296 | else{ |
292 | echo json_encode(['success' => false]); | 297 | echo json_encode(['success' => false]); |
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index fc80cd1..b07fa81 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php | |||
@@ -85,10 +85,10 @@ class MainBuilder extends AbstractBuilder | |||
85 | <button onclick="renamePageBloc(' . $child_node->getId() . ')">Renommer</button> | 85 | <button onclick="renamePageBloc(' . $child_node->getId() . ')">Renommer</button> |
86 | </p>'. "\n"; | 86 | </p>'. "\n"; |
87 | // déplacement d'un bloc | 87 | // déplacement d'un bloc |
88 | $bloc_edit .= '<div style="display: flex; flex-wrap: wrap;"> | 88 | $bloc_edit .= '<div> |
89 | <p> | 89 | <p> |
90 | <img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'up\', \'' . CURRENT_PAGE . '\')" src="assets/arrow-up.svg"> | 90 | <img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'up\')" src="assets/arrow-up.svg"> |
91 | <img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'down\', \'' . CURRENT_PAGE . '\')" src="assets/arrow-down.svg"> | 91 | <img class="action_icon" onclick="switchBlocsPositions(' . $child_node->getId() . ', \'down\')" src="assets/arrow-down.svg"> |
92 | </p>' . "\n"; | 92 | </p>' . "\n"; |
93 | // suppression d'un bloc | 93 | // suppression d'un bloc |
94 | $bloc_edit .= '<form method="post" action="' . new URL(['page' => CURRENT_PAGE]) . '"> | 94 | $bloc_edit .= '<form method="post" action="' . new URL(['page' => CURRENT_PAGE]) . '"> |
diff --git a/src/view/NewBuilder.php b/src/view/NewBuilder.php index 2d66238..332d92b 100644 --- a/src/view/NewBuilder.php +++ b/src/view/NewBuilder.php | |||
@@ -69,27 +69,27 @@ class NewBuilder extends AbstractBuilder | |||
69 | if($_SESSION['admin']) | 69 | if($_SESSION['admin']) |
70 | { | 70 | { |
71 | if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ | 71 | if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ |
72 | $title_js = 'onclick="openEditor(\'' . $id_title . '\', \'article\')"'; | 72 | $title_js = 'onclick="openEditor(\'' . $id_title . '\')"'; |
73 | $modify_title = '<p id="edit-' . $id_title . '"><button ' . $title_js . '><img class="action_icon" src="assets/edit.svg">Titre</button></p>' . "\n"; | 73 | $modify_title = '<p id="edit-' . $id_title . '"><button ' . $title_js . '><img class="action_icon" src="assets/edit.svg">Titre</button></p>' . "\n"; |
74 | $close_js_title = 'onclick="closeEditor(\'' . $id_title . '\', \'article\', \'preview\')"'; | 74 | $close_js_title = 'onclick="closeEditor(\'' . $id_title . '\')"'; |
75 | $close_editor_title = '<p id="cancel-' . $id_title . '" class="hidden"><button ' . $close_js_title . '>Annuler</button></p>'; | 75 | $close_editor_title = '<p id="cancel-' . $id_title . '" class="hidden"><button ' . $close_js_title . '>Annuler</button></p>'; |
76 | $submit_js_title = 'onclick="submitArticle(\'' . $id_title . '\', \'article\')"'; | 76 | $submit_js_title = 'onclick="submitArticle(\'' . $id_title . '\')"'; |
77 | $submit_title = '<p id="submit-' . $id_title . '" class="hidden"><button ' . $submit_js_title . '>Valider</button></p>'; | 77 | $submit_title = '<p id="submit-' . $id_title . '" class="hidden"><button ' . $submit_js_title . '>Valider</button></p>'; |
78 | $title_buttons = '<div class="button_zone">' . $modify_title . $close_editor_title . $submit_title . '</div>'; | 78 | $title_buttons = '<div class="button_zone">' . $modify_title . $close_editor_title . $submit_title . '</div>'; |
79 | 79 | ||
80 | $preview_js = 'onclick="openEditor(\'' . $id_preview . '\', \'article\')"'; | 80 | $preview_js = 'onclick="openEditor(\'' . $id_preview . '\')"'; |
81 | $modify_preview = '<p id="edit-' . $id_preview . '"><button ' . $preview_js . '><img class="action_icon" src="assets/edit.svg">Aperçu</button></a></p>' . "\n"; | 81 | $modify_preview = '<p id="edit-' . $id_preview . '"><button ' . $preview_js . '><img class="action_icon" src="assets/edit.svg">Aperçu</button></a></p>' . "\n"; |
82 | $close_js_preview = 'onclick="closeEditor(\'' . $id_preview . '\', \'article\', \'preview\')"'; | 82 | $close_js_preview = 'onclick="closeEditor(\'' . $id_preview . '\')"'; |
83 | $close_editor_preview = '<p id="cancel-' . $id_preview . '" class="hidden"><button ' . $close_js_preview . '>Annuler</button></p>'; | 83 | $close_editor_preview = '<p id="cancel-' . $id_preview . '" class="hidden"><button ' . $close_js_preview . '>Annuler</button></p>'; |
84 | $submit_js_preview = 'onclick="submitArticle(\'' . $id_preview . '\', \'article\')"'; | 84 | $submit_js_preview = 'onclick="submitArticle(\'' . $id_preview . '\')"'; |
85 | $submit_preview = '<p id="submit-' . $id_preview . '" class="hidden"><button ' . $submit_js_preview . '>Valider</button></p>'; | 85 | $submit_preview = '<p id="submit-' . $id_preview . '" class="hidden"><button ' . $submit_js_preview . '>Valider</button></p>'; |
86 | $preview_buttons = '<div class="button_zone">' . $modify_preview . $close_editor_preview . $submit_preview . '</div>'; | 86 | $preview_buttons = '<div class="button_zone">' . $modify_preview . $close_editor_preview . $submit_preview . '</div>'; |
87 | 87 | ||
88 | $article_js = 'onclick="openEditor(\'' . $id . '\', \'article\')"'; | 88 | $article_js = 'onclick="openEditor(\'' . $id . '\')"'; |
89 | $modify_article = '<p id="edit-' . $id . '"><button ' . $article_js . '><img class="action_icon" src="assets/edit.svg">Article</button></p>' . "\n"; | 89 | $modify_article = '<p id="edit-' . $id . '"><button ' . $article_js . '><img class="action_icon" src="assets/edit.svg">Article</button></p>' . "\n"; |
90 | $close_js_article = 'onclick="closeEditor(\'' . $id . '\', \'article\')"'; | 90 | $close_js_article = 'onclick="closeEditor(\'' . $id . '\')"'; |
91 | $close_editor_article = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js_article . '>Annuler</button></p>'; | 91 | $close_editor_article = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js_article . '>Annuler</button></p>'; |
92 | $submit_js_article = 'onclick="submitArticle(\'' . $id . '\', \'article\')"'; | 92 | $submit_js_article = 'onclick="submitArticle(\'' . $id . '\')"'; |
93 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js_article . '>Valider</button></p>'; | 93 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js_article . '>Valider</button></p>'; |
94 | $article_buttons = '<div class="button_zone">' . $modify_article . $close_editor_article . $submit_article . '</div>'; | 94 | $article_buttons = '<div class="button_zone">' . $modify_article . $close_editor_article . $submit_article . '</div>'; |
95 | 95 | ||
@@ -105,7 +105,7 @@ class NewBuilder extends AbstractBuilder | |||
105 | if(self::$new_article_mode){ | 105 | if(self::$new_article_mode){ |
106 | $delete_article = ''; | 106 | $delete_article = ''; |
107 | // valider la création d'un nouvel article | 107 | // valider la création d'un nouvel article |
108 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | 108 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\')"'; |
109 | $submit_article = '<p id="save-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg"><span class="delete_button">Tout<br>enregistrer</span></button></p>' . "\n"; | 109 | $submit_article = '<p id="save-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg"><span class="delete_button">Tout<br>enregistrer</span></button></p>' . "\n"; |
110 | } | 110 | } |
111 | // mode article existant | 111 | // mode article existant |
diff --git a/src/view/NewsBlockBuilder.php b/src/view/NewsBlockBuilder.php index 861949a..4716c63 100644 --- a/src/view/NewsBlockBuilder.php +++ b/src/view/NewsBlockBuilder.php | |||
@@ -53,7 +53,7 @@ class NewsBlockBuilder extends AbstractBuilder | |||
53 | $close_js = 'onclick="closeEditor(\'' . $id . '\')"'; | 53 | $close_js = 'onclick="closeEditor(\'' . $id . '\')"'; |
54 | $close_editor = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js . '>Annuler</button></p>'; | 54 | $close_editor = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js . '>Annuler</button></p>'; |
55 | 55 | ||
56 | $submit_js = 'onclick="submitArticle(\'' . $id . '\', \'\', clone' . $this->id_node . ')"'; | 56 | $submit_js = 'onclick="submitArticle(\'' . $id . '\', clone' . $this->id_node . ')"'; |
57 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js . '>Valider</button></p>'; | 57 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js . '>Valider</button></p>'; |
58 | 58 | ||
59 | $html = ''; | 59 | $html = ''; |
diff --git a/src/view/PostBlockBuilder.php b/src/view/PostBlockBuilder.php index 8ad0498..017e78e 100644 --- a/src/view/PostBlockBuilder.php +++ b/src/view/PostBlockBuilder.php | |||
@@ -29,6 +29,7 @@ class PostBlockBuilder extends AbstractBuilder | |||
29 | } | 29 | } |
30 | 30 | ||
31 | // ajouter un article | 31 | // ajouter un article |
32 | // => fait un peu double emploi avec PostBuilder | ||
32 | $new_article = ''; | 33 | $new_article = ''; |
33 | if($_SESSION['admin']) | 34 | if($_SESSION['admin']) |
34 | { | 35 | { |
@@ -52,12 +53,20 @@ class PostBlockBuilder extends AbstractBuilder | |||
52 | 53 | ||
53 | $close_js = 'onclick="closeEditor(\'' . $id . '\')"'; | 54 | $close_js = 'onclick="closeEditor(\'' . $id . '\')"'; |
54 | $close_editor = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js . '>Annuler</button></p>'; | 55 | $close_editor = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js . '>Annuler</button></p>'; |
56 | |||
57 | $position = '<div id="radio-' . $id . '" class="hidden" style="margin: 5px; font-size: 90%;"> | ||
58 | Placement:<br> | ||
59 | <input type="radio" id="radio_first-' . $id . '" name="article_placement-' . $id . '" value="first" onchange="setArticlePlacement(\'' . $id . '\')"> | ||
60 | <label for="radio_start">en premier</label><br> | ||
61 | <input type="radio" id="radio_last-' . $id . '" name="article_placement-' . $id . '" value="last" onchange="setArticlePlacement(\'' . $id . '\')"> | ||
62 | <label for="radio_end">en dernier</label> | ||
63 | </div>'; | ||
55 | 64 | ||
56 | $submit_js = 'onclick="submitArticle(\'' . $id . '\', \'\', clone' . $this->id_node . ')"'; | 65 | $submit_js = 'onclick="submitArticle(\'' . $id . '\', clone' . $this->id_node . ')"'; |
57 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js . '>Valider</button></p>'; | 66 | $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js . '>Valider</button></p>'; |
58 | 67 | ||
59 | $html = ''; | 68 | $html = ''; |
60 | $admin_buttons = $new_button . $modify_article . $up_button . $down_button . $delete_article . $close_editor . $submit_article; | 69 | $admin_buttons = $new_button . $modify_article . $up_button . $down_button . $delete_article . $close_editor . $submit_article . $position; |
61 | 70 | ||
62 | // squelette d'un nouvel article | 71 | // squelette d'un nouvel article |
63 | ob_start(); | 72 | ob_start(); |
diff --git a/src/view/PostBuilder.php b/src/view/PostBuilder.php index 03a6990..ae5cc9b 100644 --- a/src/view/PostBuilder.php +++ b/src/view/PostBuilder.php | |||
@@ -30,6 +30,7 @@ class PostBuilder extends AbstractBuilder | |||
30 | $share_button = '<p class="share" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></p>' . "\n"; | 30 | $share_button = '<p class="share" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></p>' . "\n"; |
31 | 31 | ||
32 | // modifier un article | 32 | // modifier un article |
33 | // => fait un peu double emploi avec PostBlockBuilder | ||
33 | $admin_buttons = ''; | 34 | $admin_buttons = ''; |
34 | if($_SESSION['admin']) | 35 | if($_SESSION['admin']) |
35 | { | 36 | { |
diff --git a/src/view/templates/head.php b/src/view/templates/head.php index b74335e..83a0e7c 100644 --- a/src/view/templates/head.php +++ b/src/view/templates/head.php | |||
@@ -7,6 +7,7 @@ | |||
7 | <link rel="icon" type="image/png" href="<?= $favicon ?>" alt="<?= $alt ?>"> | 7 | <link rel="icon" type="image/png" href="<?= $favicon ?>" alt="<?= $alt ?>"> |
8 | <meta name="description" content="<?= $description ?>"> | 8 | <meta name="description" content="<?= $description ?>"> |
9 | <meta name="viewport" content="width=device-width"> | 9 | <meta name="viewport" content="width=device-width"> |
10 | <script>window.Config = {page: "<?= CURRENT_PAGE ?>"};</script> | ||
10 | <?= $css ?> | 11 | <?= $css ?> |
11 | <?= $js ?> | 12 | <?= $js ?> |
12 | </head> \ No newline at end of file | 13 | </head> \ No newline at end of file |