summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/css/main.css29
-rw-r--r--public/js/main.js85
-rw-r--r--public/js/tinymce.js75
-rw-r--r--src/controller/ajax.php45
-rw-r--r--src/model/entities/Article.php12
-rw-r--r--src/view/ArticleBuilder.php2
-rw-r--r--src/view/NewBuilder.php68
-rw-r--r--src/view/templates/article.php1
-rw-r--r--src/view/templates/new.php17
9 files changed, 262 insertions, 72 deletions
diff --git a/public/css/main.css b/public/css/main.css
index a75b8cd..50c2173 100644
--- a/public/css/main.css
+++ b/public/css/main.css
@@ -56,22 +56,39 @@ article .logo2
56 overflow: hidden; 56 overflow: hidden;
57} 57}
58 58
59article .action_icon 59.action_icon
60{ 60{
61 width: 24px; 61 width: 24px;
62 vertical-align: middle; 62 vertical-align: bottom;
63 border: white 2px solid; /* invisible */ 63 border: white 2px solid; /* invisible */
64} 64}
65article .action_icon:hover 65button .action_icon
66{
67 border: none;
68}
69.action_icon:hover
66{ 70{
67 background-color: #ffff00; 71 background-color: #ffff00;
68 border-radius: 4px; 72 border-radius: 4px;
69 border: lightgrey 2px outset; 73 border: lightgrey 2px outset;
70} 74}
71.article_title_zone 75button .action_icon:hover
76{
77 border: none;
78}
79
80.button_zone
72{ 81{
73 display: flex; 82 display: flex;
74 justify-content: space-between; 83}
84
85.share
86{
87 float: right;
88}
89.article_title_zone
90{
91 padding: 10px;
75} 92}
76.under_an_article 93.under_an_article
77{ 94{
@@ -82,8 +99,8 @@ article .action_icon:hover
82.under_an_article img 99.under_an_article img
83{ 100{
84 width: 24px; 101 width: 24px;
85 vertical-align: middle;
86 margin-right: 5px; 102 margin-right: 5px;
103 vertical-align: middle;
87} 104}
88.article_admin_zone 105.article_admin_zone
89{ 106{
diff --git a/public/js/main.js b/public/js/main.js
index d985b71..1351fea 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -63,12 +63,93 @@ function switchPositions(articleId, direction)
63 console.log('Inversion réussie'); 63 console.log('Inversion réussie');
64 } 64 }
65 else{ 65 else{
66 console.log('Échec de l\'inversion'); 66 console.error('Échec de l\'inversion');
67 } 67 }
68 } 68 }
69 else { 69 else {
70 70
71 console.log('Échec de l\'inversion'); 71 console.error('Échec de l\'inversion');
72 }
73 })
74 .catch(error => {
75 console.error('Erreur:', error);
76 });
77}
78
79function changeDate(id_date)
80{
81 const real_id = 'i' + id_date.slice(1);
82 const date_span = document.getElementById(id_date); // = <span>
83 var old_date = date_span.innerHTML;
84
85 // changer "le 28-12-2024 à 23h14" en "2024-12-28T23:14"
86 let values = old_date.split(" à "); // 2 parties: date et heure
87 values[1] = values[1].replace('h', ':');
88 values[0] = values[0].replace("le ", "");
89 let date = values[0].split("-"); // tableau jj-mm-aaaa
90 old_date = date[2] + '-' + date[1] + "-" + date[0] + "T" + values[1];
91
92 var label = document.createElement('label');
93 label.textContent = 'Choisir une date: ';
94 label.id = 'label-' + id_date;
95
96 var input = document.createElement('input');
97 input.type = 'datetime-local';
98 input.value = old_date;
99 input.id = 'input-' + id_date;
100
101 var parent = date_span.parentElement;
102 parent.appendChild(label)
103 parent.appendChild(input);
104
105 date_span.classList.add('hidden');
106 document.querySelector(`#edit-${id_date}`).classList.add('hidden');
107 document.querySelector(`#cancel-${id_date}`).classList.remove('hidden');
108 document.querySelector(`#submit-${id_date}`).classList.remove('hidden');
109}
110
111function closeInput(id)
112{
113 const date_span = document.getElementById(id);
114 const date_input = document.getElementById('input-' + id);
115 const date_label = document.getElementById('label-' + id);
116
117 date_span.classList.remove('hidden');
118 date_input.remove();
119 date_label.remove();
120 document.querySelector(`#edit-${id}`).classList.remove('hidden');
121 document.querySelector(`#cancel-${id}`).classList.add('hidden');
122 document.querySelector(`#submit-${id}`).classList.add('hidden');
123}
124
125function submitDate(id_date)
126{
127 const date_input = document.getElementById('input-' + id_date);
128
129 fetch('index.php?action=date_submit', {
130 method: 'POST',
131 headers: {
132 'Content-Type': 'application/json'
133 },
134 body: JSON.stringify({id: id_date, date: date_input.value})
135 })
136 .then(response => response.json())
137 .then(data => {
138 if (data.success) {
139 // modifier la date dans le <span> caché
140 const date_span = document.getElementById(id_date);
141 let date = new Date(date_input.value);
142 date_span.innerHTML =
143 'le ' + String(date.getDate()).padStart(2, '0') + '-' +
144 String(date.getMonth() + 1).padStart(2, '0') + '-' +
145 String(date.getFullYear()).padStart(4, '0') + ' à ' +
146 String(date.getHours()).padStart(2, '0') + 'h' +
147 String(date.getMinutes()).padStart(2, '0');
148
149 closeInput(id_date);
150 }
151 else {
152 console.error('Erreur lors de la sauvegarde de la date.');
72 } 153 }
73 }) 154 })
74 .catch(error => { 155 .catch(error => {
diff --git a/public/js/tinymce.js b/public/js/tinymce.js
index 8aeaac8..d3c9739 100644
--- a/public/js/tinymce.js
+++ b/public/js/tinymce.js
@@ -1,12 +1,14 @@
1let editors = {}; 1let editors = {};
2 2
3function openEditor(articleId, page = '') { 3function openEditor(id, page = '') {
4 const real_id = 'i' + id.slice(1);
5
4 // Récupérer et sauvegarder le contenu d'origine de l'article 6 // Récupérer et sauvegarder le contenu d'origine de l'article
5 const articleContent = document.getElementById(articleId).innerHTML; 7 const articleContent = document.getElementById(id).innerHTML;
6 document.getElementById(articleId).setAttribute('data-original-content', articleContent); 8 document.getElementById(id).setAttribute('data-original-content', articleContent);
7 9
8 tinymce.init({ 10 tinymce.init({
9 selector: `#${articleId}`, 11 selector: `#${id}`,
10 language: 'fr_FR', // télécharger des paquets de langue ici: https://www.tiny.cloud/get-tiny/language-packages/ 12 language: 'fr_FR', // télécharger des paquets de langue ici: https://www.tiny.cloud/get-tiny/language-packages/
11 language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer 13 language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer
12 license_key: 'gpl', 14 license_key: 'gpl',
@@ -18,19 +20,18 @@ function openEditor(articleId, page = '') {
18 statusbar: false, 20 statusbar: false,
19 setup: function (editor) { 21 setup: function (editor) {
20 editor.on('init', function () { 22 editor.on('init', function () {
21 editors[articleId] = editor; 23 editors[id] = editor;
22 24
23 // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre" 25 // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre"
24 document.querySelector(`#edit-${articleId}`).classList.add('hidden'); 26 document.querySelector(`#edit-${id}`).classList.add('hidden');
25 document.querySelector(`#delete-${articleId}`).classList.add('hidden'); 27 document.querySelector(`#cancel-${id}`).classList.remove('hidden');
28 document.querySelector(`#submit-${id}`).classList.remove('hidden');
29 document.querySelector(`#delete-${real_id}`).classList.add('hidden');
26 // boutons absents page article 30 // boutons absents page article
27 if(page != 'article'){ 31 if(page != 'article'){
28 document.querySelector(`#position_up-${articleId}`).classList.add('hidden'); 32 document.querySelector(`#position_up-${id}`).classList.add('hidden');
29 document.querySelector(`#position_down-${articleId}`).classList.add('hidden'); 33 document.querySelector(`#position_down-${id}`).classList.add('hidden');
30 } 34 }
31 document.querySelector(`#cancel-${articleId}`).classList.remove('hidden');
32 document.querySelector(`#submit-${articleId}`).classList.remove('hidden');
33
34 }); 35 });
35 }, 36 },
36 // upload d'image 37 // upload d'image
@@ -59,10 +60,10 @@ function openEditor(articleId, page = '') {
59 }); 60 });
60 61
61 // Remplacer le contenu de l'article par l'éditeur 62 // Remplacer le contenu de l'article par l'éditeur
62 document.getElementById(articleId).innerHTML = articleContent; 63 document.getElementById(id).innerHTML = articleContent;
63} 64}
64 65
65function deleteArticle(articleId, page = '') { 66function deleteArticle(id, page = '') {
66 if (confirm('Voulez-vous vraiment supprimer cet article ?')) 67 if (confirm('Voulez-vous vraiment supprimer cet article ?'))
67 { 68 {
68 // Envoyer une requête au serveur pour supprimer l'article 69 // Envoyer une requête au serveur pour supprimer l'article
@@ -71,7 +72,7 @@ function deleteArticle(articleId, page = '') {
71 headers: { 72 headers: {
72 'Content-Type': 'application/json' 73 'Content-Type': 'application/json'
73 }, 74 },
74 body: JSON.stringify({ id: articleId }) 75 body: JSON.stringify({ id: id })
75 }) 76 })
76 .then(response => response.json()) 77 .then(response => response.json())
77 .then(data => { 78 .then(data => {
@@ -85,7 +86,7 @@ function deleteArticle(articleId, page = '') {
85 } 86 }
86 else{ 87 else{
87 // Supprimer l'article du DOM 88 // Supprimer l'article du DOM
88 const articleElement = document.getElementById(articleId); 89 const articleElement = document.getElementById(id);
89 articleElement.parentElement.parentElement.remove(); // <article> est deux niveau au dessus 90 articleElement.parentElement.parentElement.remove(); // <article> est deux niveau au dessus
90 } 91 }
91 } 92 }
@@ -99,40 +100,42 @@ function deleteArticle(articleId, page = '') {
99 } 100 }
100} 101}
101 102
102function closeEditor(articleId, page = '', display_old = true) 103function closeEditor(id, page = '', display_old = true)
103{ 104{
105 const real_id = 'i' + id.slice(1);
106
104 // Fermer l'éditeur 107 // Fermer l'éditeur
105 tinymce.remove(`#${articleId}`); 108 tinymce.remove(`#${id}`);
106 delete editors[articleId]; 109 delete editors[id];
107 110
108 // Restaurer le contenu d'origine de l'article 111 // Restaurer le contenu d'origine de l'article
109 if(display_old){ 112 if(display_old){
110 const originalContent = document.getElementById(articleId).getAttribute('data-original-content'); 113 const originalContent = document.getElementById(id).getAttribute('data-original-content');
111 document.getElementById(articleId).innerHTML = originalContent; 114 document.getElementById(id).innerHTML = originalContent;
112 } 115 }
113 116
114 // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre" 117 // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre"
115 document.querySelector(`#edit-${articleId}`).classList.remove('hidden'); 118 document.querySelector(`#edit-${id}`).classList.remove('hidden');
116 document.querySelector(`#delete-${articleId}`).classList.remove('hidden'); 119 document.querySelector(`#cancel-${id}`).classList.add('hidden');
120 document.querySelector(`#submit-${id}`).classList.add('hidden');
121 document.querySelector(`#delete-${real_id}`).classList.remove('hidden');
117 // boutons absents page article 122 // boutons absents page article
118 if(page != 'article'){ 123 if(page != 'article'){
119 document.querySelector(`#position_up-${articleId}`).classList.remove('hidden'); 124 document.querySelector(`#position_up-${id}`).classList.remove('hidden');
120 document.querySelector(`#position_down-${articleId}`).classList.remove('hidden'); 125 document.querySelector(`#position_down-${id}`).classList.remove('hidden');
121 } 126 }
122 document.querySelector(`#cancel-${articleId}`).classList.add('hidden');
123 document.querySelector(`#submit-${articleId}`).classList.add('hidden');
124} 127}
125 128
126function submitArticle(articleId, page = '') { 129function submitArticle(id, page = '') {
127 // Récupérer l'éditeur correspondant à l'article 130 // Récupérer l'éditeur correspondant à l'article
128 const editor = editors[articleId]; 131 const editor = editors[id];
129 if (!editor) { 132 if(!editor) {
130 console.error('Éditeur non trouvé pour l\'article:', articleId); 133 console.error('Éditeur non trouvé pour l\'article:', id);
131 return; 134 return;
132 } 135 }
133 136
134 // Récupérer le contenu de l'éditeur 137 // Récupérer le contenu de l'éditeur
135 const newContent = editor.getContent(); 138 const html = editor.getContent();
136 139
137 // Envoi AJAX au serveur 140 // Envoi AJAX au serveur
138 fetch('index.php?action=editor_submit', { 141 fetch('index.php?action=editor_submit', {
@@ -140,14 +143,14 @@ function submitArticle(articleId, page = '') {
140 headers: { 143 headers: {
141 'Content-Type': 'application/json' 144 'Content-Type': 'application/json'
142 }, 145 },
143 body: JSON.stringify({id: articleId, content: newContent}) 146 body: JSON.stringify({id: id, content: html})
144 }) 147 })
145 .then(response => response.json()) 148 .then(response => response.json())
146 .then(data => { 149 .then(data => {
147 if (data.success) { 150 if (data.success) {
148 // Fermer l'éditeur et mettre à jour le contenu de l'article 151 // Fermer l'éditeur et mettre à jour le contenu de l'article
149 closeEditor(articleId, page, false); 152 closeEditor(id, page, false);
150 document.getElementById(articleId).innerHTML = newContent; 153 document.getElementById(id).innerHTML = html;
151 } 154 }
152 else { 155 else {
153 alert('Erreur lors de la sauvegarde de l\'article.'); 156 alert('Erreur lors de la sauvegarde de l\'article.');
diff --git a/src/controller/ajax.php b/src/controller/ajax.php
index bcba3f2..86acd39 100644
--- a/src/controller/ajax.php
+++ b/src/controller/ajax.php
@@ -14,16 +14,32 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action']))
14 { 14 {
15 if(json_last_error() === JSON_ERROR_NONE) 15 if(json_last_error() === JSON_ERROR_NONE)
16 { 16 {
17 $articleId = $json['id']; 17 $id = $json['id'];
18 $id[0] = 'i';
18 $content = Security::secureString($json['content']); 19 $content = Security::secureString($json['content']);
19 20
20 $director = new Director($entityManager); 21 $director = new Director($entityManager);
21 if($director->makeArticleNode($articleId)) // une entrée est trouvée 22 if($director->makeArticleNode($id)) // une entrée est trouvée
22 { 23 {
23 $node = $director->getRootNode(); 24 $node = $director->getRootNode();
24 $node->getArticle()->setContent($content); 25 switch($json['id'][0]){
26 case 'i':
27 $node->getArticle()->setContent($content);
28 break;
29 case 'p':
30 $node->getArticle()->setPreview($content); // html de l'éditeur
31 break;
32 case 't':
33 $node->getArticle()->setTitle($content); // html de l'éditeur
34 break;
35 case 'd':
36 echo json_encode(['success' => false, 'message' => 'l\'action editor_submit ne supporte pas les dates, utiliser date_submit.']);
37 die;
38 default:
39 echo json_encode(['success' => false, 'message' => 'identifiant non utilisable']);
40 die;
41 }
25 $entityManager->flush(); 42 $entityManager->flush();
26
27 echo json_encode(['success' => true]); 43 echo json_encode(['success' => true]);
28 } 44 }
29 else{ 45 else{
@@ -37,16 +53,16 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action']))
37 } 53 }
38 elseif($_GET['action'] === 'delete_article' && isset($json['id'])) 54 elseif($_GET['action'] === 'delete_article' && isset($json['id']))
39 { 55 {
40 $articleId = $json['id']; 56 $id = $json['id'];
41 57
42 $director = new Director($entityManager); 58 $director = new Director($entityManager);
43 $director->makeArticleNode($articleId); 59 $director->makeArticleNode($id);
44 $node = $director->getRootNode(); 60 $node = $director->getRootNode();
45 $entityManager->remove($node); 61 $entityManager->remove($node);
46 $entityManager->flush(); 62 $entityManager->flush();
47 63
48 // test avec une nouvelle requête qui ne devrait rien trouver 64 // test avec une nouvelle requête qui ne devrait rien trouver
49 if(!$director->makeArticleNode($articleId)) 65 if(!$director->makeArticleNode($id))
50 { 66 {
51 echo json_encode(['success' => true]); 67 echo json_encode(['success' => true]);
52 68
@@ -75,6 +91,21 @@ if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action']))
75 echo json_encode(['success' => true]); 91 echo json_encode(['success' => true]);
76 die; 92 die;
77 } 93 }
94 elseif($_GET['action'] === 'date_submit' && isset($json['id']) && isset($json['date']))
95 {
96 $id = $json['id'];
97 $id[0] = 'i';
98 $date = new DateTime($json['date']);
99
100 $director = new Director($entityManager);
101 $director->makeArticleNode($id);
102 $node = $director->getRootNode();
103 $node->getArticle()->setDateTime($date);
104 $entityManager->flush();
105
106 echo json_encode(['success' => true]);
107 die;
108 }
78} 109}
79 110
80// détection des requêtes d'upload d'image de tinymce 111// détection des requêtes d'upload d'image de tinymce
diff --git a/src/model/entities/Article.php b/src/model/entities/Article.php
index 3b846da..601e573 100644
--- a/src/model/entities/Article.php
+++ b/src/model/entities/Article.php
@@ -49,6 +49,10 @@ class Article
49 { 49 {
50 return $this->date_time; 50 return $this->date_time;
51 } 51 }
52 public function setDateTime(\DateTime $date_time): void
53 {
54 $this->date_time = $date_time;
55 }
52 public function getTimestamp(): int 56 public function getTimestamp(): int
53 { 57 {
54 return $this->date_time->getTimestamp(); 58 return $this->date_time->getTimestamp();
@@ -57,10 +61,18 @@ class Article
57 { 61 {
58 return $this->title; 62 return $this->title;
59 } 63 }
64 public function setTitle(string $title): void
65 {
66 $this->title = $title;
67 }
60 public function getPreview(): string 68 public function getPreview(): string
61 { 69 {
62 return $this->preview; 70 return $this->preview;
63 } 71 }
72 public function setPreview(string $preview): void
73 {
74 $this->preview = $preview;
75 }
64 public function getContent(): string 76 public function getContent(): string
65 { 77 {
66 return $this->content; 78 return $this->content;
diff --git a/src/view/ArticleBuilder.php b/src/view/ArticleBuilder.php
index 6c2f63c..f86f9bd 100644
--- a/src/view/ArticleBuilder.php
+++ b/src/view/ArticleBuilder.php
@@ -25,7 +25,7 @@ class ArticleBuilder extends AbstractBuilder
25 // partage 25 // partage
26 $share_link = new URL(['page' => CURRENT_PAGE], $id); 26 $share_link = new URL(['page' => CURRENT_PAGE], $id);
27 $share_js = 'onclick="copyInClipBoard(\'' . $share_link . '\')"'; 27 $share_js = 'onclick="copyInClipBoard(\'' . $share_link . '\')"';
28 $share_button = '<p><a href="' . $share_link . '" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></a></p>' . "\n"; 28 $share_button = '<a class="share" href="' . $share_link . '" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></a>' . "\n";
29 29
30 // modifier un article 30 // modifier un article
31 $admin_buttons = ''; 31 $admin_buttons = '';
diff --git a/src/view/NewBuilder.php b/src/view/NewBuilder.php
index 94823bd..acde8b4 100644
--- a/src/view/NewBuilder.php
+++ b/src/view/NewBuilder.php
@@ -20,14 +20,23 @@ class NewBuilder extends AbstractBuilder
20 // html, date 20 // html, date
21 $title = $node->getArticle()->getTitle(); 21 $title = $node->getArticle()->getTitle();
22 $preview = $node->getArticle()->getPreview(); 22 $preview = $node->getArticle()->getPreview();
23
24 // lettre au début de l'id: i = article, p = preview, t = title, d = date
23 $id = $node->getArticleTimestamp(); 25 $id = $node->getArticleTimestamp();
26 $id_title = $id;
27 $id_title[0] = 't';
28 $id_preview = $id;
29 $id_preview[0] = 'p';
30 $id_date = $id;
31 $id_date[0] = 'd';
32
24 $content = ''; 33 $content = '';
25 34
26 // page article unique 35 // page article unique
27 if(Director::$page_path->getLast()->getEndOfPath() === 'article') 36 if(Director::$page_path->getLast()->getEndOfPath() === 'article')
28 { 37 {
29 $content = $node->getArticle()->getContent(); 38 $content = $node->getArticle()->getContent();
30 $from_to_button = '<p><a class="link_to_article" href="' . new URL(['page' => 'accueil']) . '"><button>Retour page d\'accueil</button></a></p>'; 39 $from_to_button = '<p><a class="link_to_article" href="' . new URL(['page' => 'accueil']) . '"><button>Page<br>d\'accueil</button></a></p>';
31 } 40 }
32 // page d'accueil (avec des news) 41 // page d'accueil (avec des news)
33 else 42 else
@@ -38,32 +47,59 @@ class NewBuilder extends AbstractBuilder
38 47
39 $date_object = $node->getArticle()->getDateTime(); // class DateTime 48 $date_object = $node->getArticle()->getDateTime(); // class DateTime
40 $date = 'le ' . str_replace(':', 'h', $date_object->format('d-m-Y à H:i')); 49 $date = 'le ' . str_replace(':', 'h', $date_object->format('d-m-Y à H:i'));
50 //$date = str_replace(':', 'h', $date_object->format('d-m-Y à H:i'));
41 51
42 // partage 52 // partage
43 $share_link = new URL(['page' => CURRENT_PAGE], $id); 53 $share_link = new URL(['page' => CURRENT_PAGE], $id);
44 isset($_GET['id']) ? $share_link->addParams(['id' => $_GET['id']]) : ''; 54 isset($_GET['id']) ? $share_link->addParams(['id' => $_GET['id']]) : '';
45 $share_js = 'onclick="copyInClipBoard(\'' . $share_link . '\')"'; 55 $share_js = 'onclick="copyInClipBoard(\'' . $share_link . '\')"';
46 $share_button = '<p><a href="' . $share_link . '" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></a></p>' . "\n"; 56 $share_button = '<a class="share" href="' . $share_link . '" ' . $share_js . '><img class="action_icon" src="assets/share.svg"></a>' . "\n";
47 57
48 // modifier un article 58 // modifier un article
59 $title_buttons = '';
60 $preview_buttons = '';
61 $article_buttons = '';
62 $date_buttons = '';
49 $admin_buttons = ''; 63 $admin_buttons = '';
50 if($_SESSION['admin']) 64 if($_SESSION['admin'])
51 { 65 {
52 if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ 66 if(Director::$page_path->getLast()->getEndOfPath() === 'article'){
53 $modify_js = 'onclick="openEditor(\'' . $id . '\', \'article\')"'; 67 $title_js = 'onclick="openEditor(\'' . $id_title . '\', \'article\')"';
54 $modify_article = '<p id="edit-' . $id . '"><a href="#"><img class="action_icon" src="assets/edit.svg" ' . $modify_js . '></a></p>' . "\n"; 68 $modify_title = '<p id="edit-' . $id_title . '"><a href="#"><button ' . $title_js . '><img class="action_icon" src="assets/edit.svg">Titre</button></a></p>' . "\n";
69 $close_js_title = 'onclick="closeEditor(\'' . $id_title . '\', \'article\', \'preview\')"';
70 $close_editor_title = '<p id="cancel-' . $id_title . '" class="hidden"><a href="#"><button ' . $close_js_title . '>Annuler</button></a></p>';
71 $submit_js_title = 'onclick="submitArticle(\'' . $id_title . '\', \'article\')"';
72 $submit_title = '<p id="submit-' . $id_title . '" class="hidden"><a href="#"><button ' . $submit_js_title . '>Valider</button></a></p>';
73 $title_buttons = '<div class="button_zone">' . $modify_title . $close_editor_title . $submit_title . '</div>';
74
75 $preview_js = 'onclick="openEditor(\'' . $id_preview . '\', \'article\')"';
76 $modify_preview = '<p id="edit-' . $id_preview . '"><a href="#"><button ' . $preview_js . '><img class="action_icon" src="assets/edit.svg">Aperçu</button></a></p>' . "\n";
77 $close_js_preview = 'onclick="closeEditor(\'' . $id_preview . '\', \'article\', \'preview\')"';
78 $close_editor_preview = '<p id="cancel-' . $id_preview . '" class="hidden"><a href="#"><button ' . $close_js_preview . '>Annuler</button></a></p>';
79 $submit_js_preview = 'onclick="submitArticle(\'' . $id_preview . '\', \'article\')"';
80 $submit_preview = '<p id="submit-' . $id_preview . '" class="hidden"><a href="#"><button ' . $submit_js_preview . '>Valider</button></a></p>';
81 $preview_buttons = '<div class="button_zone">' . $modify_preview . $close_editor_preview . $submit_preview . '</div>';
82
83 $article_js = 'onclick="openEditor(\'' . $id . '\', \'article\')"';
84 $modify_article = '<p id="edit-' . $id . '"><a href="#"><button ' . $article_js . '><img class="action_icon" src="assets/edit.svg">Article</button></a></p>' . "\n";
85 $close_js_article = 'onclick="closeEditor(\'' . $id . '\', \'article\')"';
86 $close_editor_article = '<p id="cancel-' . $id . '" class="hidden"><a href="#"><button ' . $close_js_article . '>Annuler</button></a></p>';
87 $submit_js_article = 'onclick="submitArticle(\'' . $id . '\', \'article\')"';
88 $submit_article = '<p id="submit-' . $id . '" class="hidden"><a href="#"><button ' . $submit_js_article . '>Valider</button></a></p>';
89 $article_buttons = '<div class="button_zone">' . $modify_article . $close_editor_article . $submit_article . '</div>';
90
91 $date_js = 'onclick="changeDate(\'' . $id_date . '\', \'article\');';
92 $modify_date = '<p id="edit-' . $id_date . '"><a href="#"><button ' . $date_js . '"><img class="action_icon" src="assets/edit.svg">Date</button></a></p>' . "\n";
93 $close_js_date = 'onclick="closeInput(\'' . $id_date . '\')"';
94 $close_editor_date = '<p id="cancel-' . $id_date . '" class="hidden"><a href="#"><button ' . $close_js_date . '>Annuler</button></a></p>';
95 $submit_js_date = 'onclick="submitDate(\'' . $id_date . '\')"';
96 $submit_date = '<p id="submit-' . $id_date . '" class="hidden"><a href="#"><button ' . $submit_js_date . '>Valider</button></a></p>';
97 $date_buttons = '<div class="button_zone">' . $modify_date . $close_editor_date . $submit_date . '</div>';
55 98
56 $up_button = '';
57 $down_button = '';
58
59 $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . CURRENT_PAGE . '\')"'; 99 $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . CURRENT_PAGE . '\')"';
60 $delete_article = '<p id="delete-' . $id . '"><a href="#"><img class="action_icon" src="assets/delete-bin.svg" ' . $delete_js . '></a></p>' . "\n"; 100 $delete_article = '<p id="delete-' . $id . '"><a href="#"><button ' . $delete_js . '"><img class="action_icon" src="assets/delete-bin.svg" ' . $delete_js . '>Retirer<br>la publication</button></a></p>' . "\n";
61 101
62 $close_js = 'onclick="closeEditor(\'' . $id . '\', \'article\')"'; 102 $admin_buttons = $delete_article;
63 $close_editor = '<p id="cancel-' . $id . '" class="hidden"><a href="#"><button ' . $close_js . '>Annuler</button></a></p>';
64
65 $submit_js = 'onclick="submitArticle(\'' . $id . '\', \'article\')"';
66 $submit_article = '<p id="submit-' . $id . '" class="hidden"><a href="#"><button ' . $submit_js . '>Valider</button></a></p>';
67 } 103 }
68 else{ 104 else{
69 $modify_article = '<p id="edit-' . $id . '"></p>' . "\n"; 105 $modify_article = '<p id="edit-' . $id . '"></p>' . "\n";
@@ -81,8 +117,10 @@ class NewBuilder extends AbstractBuilder
81 $submit_article = '<p id="submit-' . $id . '" class="hidden"></p>'; 117 $submit_article = '<p id="submit-' . $id . '" class="hidden"></p>';
82 118
83 $submit_article = '<p id="submit-' . $id . '" class="hidden"></p>'; 119 $submit_article = '<p id="submit-' . $id . '" class="hidden"></p>';
120
121 $admin_buttons = $modify_article . $up_button . $down_button . $delete_article . $close_editor . $submit_article;
84 } 122 }
85 $admin_buttons = $modify_article . $up_button . $down_button . $delete_article . $close_editor . $submit_article; 123
86 } 124 }
87 125
88 ob_start(); 126 ob_start();
diff --git a/src/view/templates/article.php b/src/view/templates/article.php
index d34697e..f3ab32f 100644
--- a/src/view/templates/article.php
+++ b/src/view/templates/article.php
@@ -1,7 +1,6 @@
1<article> 1<article>
2 <div class="article_content"> 2 <div class="article_content">
3 <div class="article_title_zone"> 3 <div class="article_title_zone">
4 <h4><?= $title ?></h4>
5 <?= $share_button ?> 4 <?= $share_button ?>
6 </div> 5 </div>
7 <div id="<?= $id ?>" class="html_from_editor"> 6 <div id="<?= $id ?>" class="html_from_editor">
diff --git a/src/view/templates/new.php b/src/view/templates/new.php
index 9dd8969..9515c70 100644
--- a/src/view/templates/new.php
+++ b/src/view/templates/new.php
@@ -1,20 +1,29 @@
1<article> 1<article>
2 <div class="new_content"> 2 <div class="new_content">
3 <div class="article_title_zone"> 3 <div class="article_title_zone">
4 <h4><?= $title ?></h4>
5 <?= $share_button ?> 4 <?= $share_button ?>
5 <div id="<?= $id_title ?>">
6 <?= $title ?>
7 </div>
8 <?= $title_buttons ?>
6 </div> 9 </div>
7 <div class="new_content_text"> 10 <div id="<?= $id_preview ?>" class="new_content_text">
8 <?= $preview ?> 11 <?= $preview ?>
9 </div> 12 </div>
13 <?= $preview_buttons ?>
10 <div id="<?= $id ?>" class="article_content_text"> 14 <div id="<?= $id ?>" class="article_content_text">
11 <?= $content ?> 15 <?= $content ?>
12 </div> 16 </div>
17 <?= $article_buttons ?>
13 <div class="under_an_article"> 18 <div class="under_an_article">
14 <p><img src="assets/calendar.svg"><?= $date ?></p> 19 <p>
15 <?= $from_to_button ?> 20 <img src="assets/calendar.svg">
21 <span id="<?= $id_date ?>"><?= $date ?></span>
22 </p>
16 </div> 23 </div>
24 <?= $date_buttons ?>
17 <div class="article_admin_zone"> 25 <div class="article_admin_zone">
26 <?= $from_to_button ?>
18 <?= $admin_buttons ?> 27 <?= $admin_buttons ?>
19 </div> 28 </div>
20 </div> 29 </div>