From 1937a2f49ebe920b79604cb5df3649f9f1dff738 Mon Sep 17 00:00:00 2001 From: polo-pc-greta Date: Mon, 7 Apr 2025 21:38:12 +0200 Subject: =?UTF-8?q?bouton=20suppression=20apr=C3=A8s=20cr=C3=A9ation=20d'u?= =?UTF-8?q?ne=20"news"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.php | 2 +- public/js/tinymce.js | 63 +++++++++++++++++++++------------------------- src/Config.php | 2 +- src/controller/ajax.php | 9 ------- src/view/MainBuilder.php | 5 +--- src/view/NewBuilder.php | 17 +++++++------ 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 URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 URL::setPort(Config::$port); -URL::setHost($_SERVER['HTTP_HOST']); +URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path); //require('controller/Session.php'); 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 = '') { .then(data => { if(data.success) { - if(page == 'article'){ + if(page === 'article'){ // redirection vers la page d'accueil window.setTimeout(function(){ location.href = "index.php?page=accueil"; @@ -177,49 +177,27 @@ function closeEditor(id, page = '', restore_old = true) function submitArticle(id, page = '', clone = null) { - /*if(id[0] === 'n' && clone == null){ - return; // sécurité - }*/ var editor; + var content; const params = new URL(document.location).searchParams; // "search" = ? et paramètres, searchParams = objet avec des getters // clic sur "tout enregistrer" if(id[0] === 'n' && page === 'article'){ const prefixes = ['t', 'p', 'i', 'd']; - const allElemsWithId = document.querySelectorAll('[id]'); - var content = {}; + const allElemsWithId = document.querySelectorAll('[class="data"]'); + content = {}; + var id_from_builder; allElemsWithId.forEach(element => { const first_letter = element.id.charAt(0).toLowerCase(); if(prefixes.includes(first_letter)){ content[first_letter] = element.innerHTML; + if(first_letter === 'i'){ + id_from_builder = element.id; + } } }) content['d'] = dateToISO(content['d']); - - // Envoi AJAX au serveur - fetch('index.php?action=editor_submit', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({id: id, content: content}) - }) - .then(response => response.json()) - .then(data => { - if (data.success) { - console.log('données envoyées au serveur avec succès.'); - - // remplacer les boutons (Enregistrer => Supprimer) - } - else { - alert('Erreur lors de la sauvegarde de l\'article.'); - } - }) - .catch(error => { - console.error('Erreur:', error); - }); - return; } // champs à remplir des nouvelles "news" else if(page === 'article' && params != null && params.get("id")[0] === 'n'){ @@ -235,6 +213,7 @@ function submitArticle(id, page = '', clone = null) console.error('Éditeur non trouvé pour l\'article:', id); return; } + content = editor.getContent(); } // Envoi AJAX au serveur @@ -243,15 +222,29 @@ function submitArticle(id, page = '', clone = null) headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({id: id, content: editor.getContent()}) + body: JSON.stringify({id: id, content: content}) }) .then(response => response.json()) .then(data => { if (data.success) { - // Fermer l'éditeur et mettre à jour le contenu de l'article - closeEditor(id, page, false); - if(id[0] === 'n'){ - makeNewArticleButtons(id, data.article_id, clone); + console.log(data.article_id); + if(id[0] === 'n' && page === 'article'){ + console.log('données envoyées au serveur avec succès.'); + + // remplacer bouton Enregistrer par Supprimer + submit_btn = document.getElementById('save-' + id_from_builder); // id précédent par NewBuilder + submit_btn.classList.add('hidden'); + delete_btn = document.getElementById('delete-' + id_from_builder); + delete_btn.id = data.article_id; + delete_btn.querySelector('button').setAttribute('onclick', "deleteArticle('" + data.article_id + "', 'article')"); + delete_btn.classList.remove('hidden'); + } + else{ + // Fermer l'éditeur et mettre à jour le contenu de l'article + closeEditor(id, page, false); + if(id[0] === 'n'){ + makeNewArticleButtons(id, data.article_id, clone); + } } } 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 // classe URL static public string $protocol = 'http'; - //static public string $host = ''; + static public string $index_path = ''; static public string $port = '80'; // 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'])) } else{ $content = Security::secureString($json['content']); - if($content === ''){ - echo json_encode(['success' => false, 'message' => 'pas de données à sauvegarder']); - die; - } } // nouvel article @@ -43,12 +39,7 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action'])) $node = $director->getNode(); // =
if(is_array($content)){ - // - //$timestamp = time(); // int $date = new \DateTime($content['d']); - - //echo substr($content['i'], 1) . ' '; - //echo $article_id;die; $article = new Article($content['i'], $date, $content['t'], $content['p']); $article_node = new Node('new', 'i' . (string)$date->getTimestamp(), [], count($node->getChildren()) + 1, $node, $node->getPage(), $article); 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 } if($node->getAdoptedChild() == null){ - // on pourrait raccourcir ça - $timestamp = time(); // int $date = new \DateTime; - $date->setTimestamp($timestamp); // \DateTime $article = new Article('', $date); - $new = new Node('new', 'i' . (string)$timestamp, [], 0, null, null, $article); + $new = new Node('new', 'i' . (string)$date->getTimestamp(), [], 0, null, null, $article); } else{ $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 $delete_article = ''; $submit_article = ''; - // modification: bouton "supprimer" - if($_GET['id'][0] === 'i'){ - $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; - $delete_article = '

' . "\n"; - } + $delete_class = ''; // nouvel article: bouton pour valider la création d'un nouvel article - else{ + if($_GET['id'][0] != 'i'){ $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; - $submit_article = '

' . "\n"; + $submit_article = '

' . "\n"; + $delete_class = 'class="hidden"'; + } + // modification: bouton "supprimer" + else{ + $delete_class = 'class=""'; } + $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; + $delete_article = '

' . "\n"; $admin_buttons = $delete_article . $submit_article; } 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 @@
-
+
-
+
-
+

- +

-- cgit v1.2.3