diff options
author | polo-pc-greta <ordipolo@gmx.fr> | 2025-04-07 21:38:12 +0200 |
---|---|---|
committer | polo-pc-greta <ordipolo@gmx.fr> | 2025-04-07 21:38:12 +0200 |
commit | 1937a2f49ebe920b79604cb5df3649f9f1dff738 (patch) | |
tree | fac9a39aae9690b0e5a860bdb2cc88565e83daac | |
parent | 09bea09c8157ff45279f0d06aa9d313448c0bec5 (diff) | |
download | cms-1937a2f49ebe920b79604cb5df3649f9f1dff738.zip |
bouton suppression après création d'une "news"
-rw-r--r-- | public/index.php | 2 | ||||
-rw-r--r-- | public/js/tinymce.js | 63 | ||||
-rw-r--r-- | src/Config.php | 2 | ||||
-rw-r--r-- | src/controller/ajax.php | 9 | ||||
-rw-r--r-- | src/view/MainBuilder.php | 5 | ||||
-rw-r--r-- | src/view/NewBuilder.php | 17 | ||||
-rw-r--r-- | src/view/templates/new.php | 8 |
7 files changed, 45 insertions, 61 deletions
diff --git a/public/index.php b/public/index.php index 2512d6d..8cb2b9a 100644 --- a/public/index.php +++ b/public/index.php | |||
@@ -26,7 +26,7 @@ require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN | |||
26 | 26 | ||
27 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | 27 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 |
28 | URL::setPort(Config::$port); | 28 | URL::setPort(Config::$port); |
29 | URL::setHost($_SERVER['HTTP_HOST']); | 29 | URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path); |
30 | 30 | ||
31 | //require('controller/Session.php'); | 31 | //require('controller/Session.php'); |
32 | ini_set('session.cookie_samesite', 'Strict'); | 32 | ini_set('session.cookie_samesite', 'Strict'); |
diff --git a/public/js/tinymce.js b/public/js/tinymce.js index 00868ee..092698e 100644 --- a/public/js/tinymce.js +++ b/public/js/tinymce.js | |||
@@ -95,7 +95,7 @@ function deleteArticle(id, page = '') { | |||
95 | .then(data => { | 95 | .then(data => { |
96 | if(data.success) | 96 | if(data.success) |
97 | { | 97 | { |
98 | if(page == 'article'){ | 98 | if(page === 'article'){ |
99 | // redirection vers la page d'accueil | 99 | // redirection vers la page d'accueil |
100 | window.setTimeout(function(){ | 100 | window.setTimeout(function(){ |
101 | location.href = "index.php?page=accueil"; | 101 | location.href = "index.php?page=accueil"; |
@@ -177,49 +177,27 @@ function closeEditor(id, page = '', restore_old = true) | |||
177 | 177 | ||
178 | function submitArticle(id, page = '', clone = null) | 178 | function submitArticle(id, page = '', clone = null) |
179 | { | 179 | { |
180 | /*if(id[0] === 'n' && clone == null){ | ||
181 | return; // sécurité | ||
182 | }*/ | ||
183 | var editor; | 180 | var editor; |
181 | var content; | ||
184 | const params = new URL(document.location).searchParams; // "search" = ? et paramètres, searchParams = objet avec des getters | 182 | const params = new URL(document.location).searchParams; // "search" = ? et paramètres, searchParams = objet avec des getters |
185 | 183 | ||
186 | // clic sur "tout enregistrer" | 184 | // clic sur "tout enregistrer" |
187 | if(id[0] === 'n' && page === 'article'){ | 185 | if(id[0] === 'n' && page === 'article'){ |
188 | const prefixes = ['t', 'p', 'i', 'd']; | 186 | const prefixes = ['t', 'p', 'i', 'd']; |
189 | const allElemsWithId = document.querySelectorAll('[id]'); | 187 | const allElemsWithId = document.querySelectorAll('[class="data"]'); |
190 | var content = {}; | 188 | content = {}; |
189 | var id_from_builder; | ||
191 | 190 | ||
192 | allElemsWithId.forEach(element => { | 191 | allElemsWithId.forEach(element => { |
193 | const first_letter = element.id.charAt(0).toLowerCase(); | 192 | const first_letter = element.id.charAt(0).toLowerCase(); |
194 | if(prefixes.includes(first_letter)){ | 193 | if(prefixes.includes(first_letter)){ |
195 | content[first_letter] = element.innerHTML; | 194 | content[first_letter] = element.innerHTML; |
195 | if(first_letter === 'i'){ | ||
196 | id_from_builder = element.id; | ||
197 | } | ||
196 | } | 198 | } |
197 | }) | 199 | }) |
198 | content['d'] = dateToISO(content['d']); | 200 | content['d'] = dateToISO(content['d']); |
199 | |||
200 | // Envoi AJAX au serveur | ||
201 | fetch('index.php?action=editor_submit', { | ||
202 | method: 'POST', | ||
203 | headers: { | ||
204 | 'Content-Type': 'application/json' | ||
205 | }, | ||
206 | body: JSON.stringify({id: id, content: content}) | ||
207 | }) | ||
208 | .then(response => response.json()) | ||
209 | .then(data => { | ||
210 | if (data.success) { | ||
211 | console.log('données envoyées au serveur avec succès.'); | ||
212 | |||
213 | // remplacer les boutons (Enregistrer => Supprimer) | ||
214 | } | ||
215 | else { | ||
216 | alert('Erreur lors de la sauvegarde de l\'article.'); | ||
217 | } | ||
218 | }) | ||
219 | .catch(error => { | ||
220 | console.error('Erreur:', error); | ||
221 | }); | ||
222 | return; | ||
223 | } | 201 | } |
224 | // champs à remplir des nouvelles "news" | 202 | // champs à remplir des nouvelles "news" |
225 | else if(page === 'article' && params != null && params.get("id")[0] === 'n'){ | 203 | else if(page === 'article' && params != null && params.get("id")[0] === 'n'){ |
@@ -235,6 +213,7 @@ function submitArticle(id, page = '', clone = null) | |||
235 | console.error('Éditeur non trouvé pour l\'article:', id); | 213 | console.error('Éditeur non trouvé pour l\'article:', id); |
236 | return; | 214 | return; |
237 | } | 215 | } |
216 | content = editor.getContent(); | ||
238 | } | 217 | } |
239 | 218 | ||
240 | // Envoi AJAX au serveur | 219 | // Envoi AJAX au serveur |
@@ -243,15 +222,29 @@ function submitArticle(id, page = '', clone = null) | |||
243 | headers: { | 222 | headers: { |
244 | 'Content-Type': 'application/json' | 223 | 'Content-Type': 'application/json' |
245 | }, | 224 | }, |
246 | body: JSON.stringify({id: id, content: editor.getContent()}) | 225 | body: JSON.stringify({id: id, content: content}) |
247 | }) | 226 | }) |
248 | .then(response => response.json()) | 227 | .then(response => response.json()) |
249 | .then(data => { | 228 | .then(data => { |
250 | if (data.success) { | 229 | if (data.success) { |
251 | // Fermer l'éditeur et mettre à jour le contenu de l'article | 230 | console.log(data.article_id); |
252 | closeEditor(id, page, false); | 231 | if(id[0] === 'n' && page === 'article'){ |
253 | if(id[0] === 'n'){ | 232 | console.log('données envoyées au serveur avec succès.'); |
254 | makeNewArticleButtons(id, data.article_id, clone); | 233 | |
234 | // remplacer bouton Enregistrer par Supprimer | ||
235 | submit_btn = document.getElementById('save-' + id_from_builder); // id précédent par NewBuilder | ||
236 | submit_btn.classList.add('hidden'); | ||
237 | delete_btn = document.getElementById('delete-' + id_from_builder); | ||
238 | delete_btn.id = data.article_id; | ||
239 | delete_btn.querySelector('button').setAttribute('onclick', "deleteArticle('" + data.article_id + "', 'article')"); | ||
240 | delete_btn.classList.remove('hidden'); | ||
241 | } | ||
242 | else{ | ||
243 | // Fermer l'éditeur et mettre à jour le contenu de l'article | ||
244 | closeEditor(id, page, false); | ||
245 | if(id[0] === 'n'){ | ||
246 | makeNewArticleButtons(id, data.article_id, clone); | ||
247 | } | ||
255 | } | 248 | } |
256 | } | 249 | } |
257 | else { | 250 | else { |
diff --git a/src/Config.php b/src/Config.php index 882ec98..500d6ea 100644 --- a/src/Config.php +++ b/src/Config.php | |||
@@ -15,7 +15,7 @@ class Config | |||
15 | 15 | ||
16 | // classe URL | 16 | // classe URL |
17 | static public string $protocol = 'http'; | 17 | static public string $protocol = 'http'; |
18 | //static public string $host = ''; | 18 | static public string $index_path = ''; |
19 | static public string $port = '80'; | 19 | static public string $port = '80'; |
20 | 20 | ||
21 | // copier dans ce tableau les variables contenant des chemins | 21 | // copier dans ce tableau les variables contenant des chemins |
diff --git a/src/controller/ajax.php b/src/controller/ajax.php index 4863681..a4b61e4 100644 --- a/src/controller/ajax.php +++ b/src/controller/ajax.php | |||
@@ -29,10 +29,6 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action'])) | |||
29 | } | 29 | } |
30 | else{ | 30 | else{ |
31 | $content = Security::secureString($json['content']); | 31 | $content = Security::secureString($json['content']); |
32 | if($content === ''){ | ||
33 | echo json_encode(['success' => false, 'message' => 'pas de données à sauvegarder']); | ||
34 | die; | ||
35 | } | ||
36 | } | 32 | } |
37 | 33 | ||
38 | // nouvel article | 34 | // nouvel article |
@@ -43,12 +39,7 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action'])) | |||
43 | $node = $director->getNode(); // = <section> | 39 | $node = $director->getNode(); // = <section> |
44 | 40 | ||
45 | if(is_array($content)){ | 41 | if(is_array($content)){ |
46 | // | ||
47 | //$timestamp = time(); // int | ||
48 | $date = new \DateTime($content['d']); | 42 | $date = new \DateTime($content['d']); |
49 | |||
50 | //echo substr($content['i'], 1) . ' '; | ||
51 | //echo $article_id;die; | ||
52 | $article = new Article($content['i'], $date, $content['t'], $content['p']); | 43 | $article = new Article($content['i'], $date, $content['t'], $content['p']); |
53 | $article_node = new Node('new', 'i' . (string)$date->getTimestamp(), [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); | 44 | $article_node = new Node('new', 'i' . (string)$date->getTimestamp(), [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); |
54 | 45 | ||
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index ea7b8c3..e73b298 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php | |||
@@ -18,12 +18,9 @@ class MainBuilder extends AbstractBuilder | |||
18 | } | 18 | } |
19 | 19 | ||
20 | if($node->getAdoptedChild() == null){ | 20 | if($node->getAdoptedChild() == null){ |
21 | // on pourrait raccourcir ça | ||
22 | $timestamp = time(); // int | ||
23 | $date = new \DateTime; | 21 | $date = new \DateTime; |
24 | $date->setTimestamp($timestamp); // \DateTime | ||
25 | $article = new Article('', $date); | 22 | $article = new Article('', $date); |
26 | $new = new Node('new', 'i' . (string)$timestamp, [], 0, null, null, $article); | 23 | $new = new Node('new', 'i' . (string)$date->getTimestamp(), [], 0, null, null, $article); |
27 | } | 24 | } |
28 | else{ | 25 | else{ |
29 | $new = $node->getAdoptedChild(); | 26 | $new = $node->getAdoptedChild(); |
diff --git a/src/view/NewBuilder.php b/src/view/NewBuilder.php index a862a08..d93155e 100644 --- a/src/view/NewBuilder.php +++ b/src/view/NewBuilder.php | |||
@@ -103,16 +103,19 @@ class NewBuilder extends AbstractBuilder | |||
103 | 103 | ||
104 | $delete_article = ''; | 104 | $delete_article = ''; |
105 | $submit_article = ''; | 105 | $submit_article = ''; |
106 | // modification: bouton "supprimer" | 106 | $delete_class = ''; |
107 | if($_GET['id'][0] === 'i'){ | ||
108 | $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | ||
109 | $delete_article = '<p id="delete-' . $id . '"><button ' . $delete_js . '><img class="action_icon" src="assets/delete-bin.svg" ' . $delete_js . '>Retirer<br>la publication</button></p>' . "\n"; | ||
110 | } | ||
111 | // nouvel article: bouton pour valider la création d'un nouvel article | 107 | // nouvel article: bouton pour valider la création d'un nouvel article |
112 | else{ | 108 | if($_GET['id'][0] != 'i'){ |
113 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | 109 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; |
114 | $submit_article = '<p id="submit-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg">Tout<br>enregistrer</button></p>' . "\n"; | 110 | $submit_article = '<p id="save-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg">Tout<br>enregistrer</button></p>' . "\n"; |
111 | $delete_class = 'class="hidden"'; | ||
112 | } | ||
113 | // modification: bouton "supprimer" | ||
114 | else{ | ||
115 | $delete_class = 'class=""'; | ||
115 | } | 116 | } |
117 | $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | ||
118 | $delete_article = '<p ' . $delete_class . ' id="delete-' . $id . '"><button ' . $delete_js . '><img class="action_icon" src="assets/delete-bin.svg">Retirer<br>la publication</button></p>' . "\n"; | ||
116 | 119 | ||
117 | $admin_buttons = $delete_article . $submit_article; | 120 | $admin_buttons = $delete_article . $submit_article; |
118 | } | 121 | } |
diff --git a/src/view/templates/new.php b/src/view/templates/new.php index 9515c70..2a965cb 100644 --- a/src/view/templates/new.php +++ b/src/view/templates/new.php | |||
@@ -2,23 +2,23 @@ | |||
2 | <div class="new_content"> | 2 | <div class="new_content"> |
3 | <div class="article_title_zone"> | 3 | <div class="article_title_zone"> |
4 | <?= $share_button ?> | 4 | <?= $share_button ?> |
5 | <div id="<?= $id_title ?>"> | 5 | <div class="data" id="<?= $id_title ?>"> |
6 | <?= $title ?> | 6 | <?= $title ?> |
7 | </div> | 7 | </div> |
8 | <?= $title_buttons ?> | 8 | <?= $title_buttons ?> |
9 | </div> | 9 | </div> |
10 | <div id="<?= $id_preview ?>" class="new_content_text"> | 10 | <div class="data" id="<?= $id_preview ?>" class="new_content_text"> |
11 | <?= $preview ?> | 11 | <?= $preview ?> |
12 | </div> | 12 | </div> |
13 | <?= $preview_buttons ?> | 13 | <?= $preview_buttons ?> |
14 | <div id="<?= $id ?>" class="article_content_text"> | 14 | <div class="data" id="<?= $id ?>" class="article_content_text"> |
15 | <?= $content ?> | 15 | <?= $content ?> |
16 | </div> | 16 | </div> |
17 | <?= $article_buttons ?> | 17 | <?= $article_buttons ?> |
18 | <div class="under_an_article"> | 18 | <div class="under_an_article"> |
19 | <p> | 19 | <p> |
20 | <img src="assets/calendar.svg"> | 20 | <img src="assets/calendar.svg"> |
21 | <span id="<?= $id_date ?>"><?= $date ?></span> | 21 | <span class="data" id="<?= $id_date ?>"><?= $date ?></span> |
22 | </p> | 22 | </p> |
23 | </div> | 23 | </div> |
24 | <?= $date_buttons ?> | 24 | <?= $date_buttons ?> |