diff options
Diffstat (limited to 'public/js/tinymce.js')
-rw-r--r-- | public/js/tinymce.js | 151 |
1 files changed, 128 insertions, 23 deletions
diff --git a/public/js/tinymce.js b/public/js/tinymce.js index d3c9739..cb1938a 100644 --- a/public/js/tinymce.js +++ b/public/js/tinymce.js | |||
@@ -1,15 +1,26 @@ | |||
1 | let editors = {}; | 1 | let editors = {}; |
2 | 2 | ||
3 | function openEditor(id, page = '') { | 3 | function openEditor(id, page = '') { |
4 | const real_id = 'i' + id.slice(1); | 4 | var creation_mode; |
5 | var real_id; | ||
6 | var article; | ||
5 | 7 | ||
6 | // Récupérer et sauvegarder le contenu d'origine de l'article | 8 | // création ou modification d'un article? |
7 | const articleContent = document.getElementById(id).innerHTML; | 9 | if(id[0] === 'n'){ |
8 | document.getElementById(id).setAttribute('data-original-content', articleContent); | 10 | creation_mode = true; |
11 | article = document.getElementById(id); | ||
12 | } | ||
13 | else{ | ||
14 | creation_mode = false; | ||
15 | // Récupérer et sauvegarder le contenu d'origine de l'article | ||
16 | real_id = 'i' + id.slice(1); | ||
17 | article = document.getElementById(id); | ||
18 | document.getElementById(id).setAttribute('data-original-content', article.innerHTML); | ||
19 | } | ||
9 | 20 | ||
10 | tinymce.init({ | 21 | tinymce.init({ |
11 | selector: `#${id}`, | 22 | selector: `#${id}`, |
12 | language: 'fr_FR', // télécharger des paquets de langue ici: https://www.tiny.cloud/get-tiny/language-packages/ | 23 | language: 'fr_FR', // téléchargement ici: https://www.tiny.cloud/get-tiny/language-packages/ |
13 | language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer | 24 | language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer |
14 | license_key: 'gpl', | 25 | license_key: 'gpl', |
15 | branding: false, | 26 | branding: false, |
@@ -23,14 +34,18 @@ function openEditor(id, page = '') { | |||
23 | editors[id] = editor; | 34 | editors[id] = editor; |
24 | 35 | ||
25 | // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre" | 36 | // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre" |
26 | document.querySelector(`#edit-${id}`).classList.add('hidden'); | ||
27 | document.querySelector(`#cancel-${id}`).classList.remove('hidden'); | 37 | document.querySelector(`#cancel-${id}`).classList.remove('hidden'); |
28 | document.querySelector(`#submit-${id}`).classList.remove('hidden'); | 38 | document.querySelector(`#submit-${id}`).classList.remove('hidden'); |
29 | document.querySelector(`#delete-${real_id}`).classList.add('hidden'); | 39 | if(creation_mode === false){ |
30 | // boutons absents page article | 40 | document.querySelector(`#edit-${id}`).classList.add('hidden'); |
31 | if(page != 'article'){ | 41 | document.querySelector(`#delete-${real_id}`).classList.add('hidden'); |
32 | document.querySelector(`#position_up-${id}`).classList.add('hidden'); | 42 | if(page != 'article'){ |
33 | document.querySelector(`#position_down-${id}`).classList.add('hidden'); | 43 | document.querySelector(`#position_up-${id}`).classList.add('hidden'); |
44 | document.querySelector(`#position_down-${id}`).classList.add('hidden'); | ||
45 | } | ||
46 | } | ||
47 | else{ | ||
48 | document.querySelector(`#new-${id}`).classList.add('hidden'); // id = new-new-id_node | ||
34 | } | 49 | } |
35 | }); | 50 | }); |
36 | }, | 51 | }, |
@@ -60,7 +75,9 @@ function openEditor(id, page = '') { | |||
60 | }); | 75 | }); |
61 | 76 | ||
62 | // Remplacer le contenu de l'article par l'éditeur | 77 | // Remplacer le contenu de l'article par l'éditeur |
63 | document.getElementById(id).innerHTML = articleContent; | 78 | if(creation_mode === false){ |
79 | document.getElementById(id).innerHTML = article.innerHTML; | ||
80 | } | ||
64 | } | 81 | } |
65 | 82 | ||
66 | function deleteArticle(id, page = '') { | 83 | function deleteArticle(id, page = '') { |
@@ -100,33 +117,78 @@ function deleteArticle(id, page = '') { | |||
100 | } | 117 | } |
101 | } | 118 | } |
102 | 119 | ||
103 | function closeEditor(id, page = '', display_old = true) | 120 | function closeEditor(id, page = '', restore_old = true) |
104 | { | 121 | { |
105 | const real_id = 'i' + id.slice(1); | 122 | var creation_mode; |
123 | var real_id; | ||
124 | var article; | ||
125 | var parent; | ||
126 | |||
127 | // création ou modification d'un article? | ||
128 | if(id[0] === 'n'){ | ||
129 | creation_mode = true; | ||
130 | } | ||
131 | else{ | ||
132 | creation_mode = false; | ||
133 | } | ||
106 | 134 | ||
107 | // Fermer l'éditeur | 135 | // Fermer l'éditeur |
108 | tinymce.remove(`#${id}`); | 136 | tinymce.remove(`#${id}`); |
109 | delete editors[id]; | 137 | delete editors[id]; |
110 | 138 | ||
139 | if(creation_mode){ | ||
140 | article = document.getElementById(id); | ||
141 | parent = findParent(article, 'section'); | ||
142 | } | ||
143 | else{ | ||
144 | real_id = 'i' + id.slice(1); | ||
145 | } | ||
146 | |||
111 | // Restaurer le contenu d'origine de l'article | 147 | // Restaurer le contenu d'origine de l'article |
112 | if(display_old){ | 148 | if(restore_old){ |
113 | const originalContent = document.getElementById(id).getAttribute('data-original-content'); | 149 | const originalContent = document.getElementById(id).getAttribute('data-original-content'); |
114 | document.getElementById(id).innerHTML = originalContent; | 150 | document.getElementById(id).innerHTML = originalContent; |
115 | } | 151 | } |
116 | 152 | ||
117 | // boutons "Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Soumettre" | 153 | // boutons: "Nouvel article", Modifier", "Supprimer", "déplacer vers le haut", "déplacer vers le bas", "Annuler" et "Valider" |
118 | document.querySelector(`#edit-${id}`).classList.remove('hidden'); | ||
119 | document.querySelector(`#cancel-${id}`).classList.add('hidden'); | 154 | document.querySelector(`#cancel-${id}`).classList.add('hidden'); |
120 | document.querySelector(`#submit-${id}`).classList.add('hidden'); | 155 | document.querySelector(`#submit-${id}`).classList.add('hidden'); |
121 | document.querySelector(`#delete-${real_id}`).classList.remove('hidden'); | 156 | if(creation_mode){ |
122 | // boutons absents page article | 157 | document.querySelector(`#new-${id}`).classList.remove('hidden'); // id = new-new-id_node |
158 | } | ||
159 | else{ | ||
160 | document.querySelector(`#edit-${id}`).classList.remove('hidden'); | ||
161 | if(page != 'article'){ | ||
162 | document.querySelector(`#position_up-${id}`).classList.remove('hidden'); | ||
163 | document.querySelector(`#position_down-${id}`).classList.remove('hidden'); | ||
164 | document.querySelector(`#delete-${id}`).classList.remove('hidden'); | ||
165 | } | ||
166 | } | ||
123 | if(page != 'article'){ | 167 | if(page != 'article'){ |
124 | document.querySelector(`#position_up-${id}`).classList.remove('hidden'); | 168 | /*document.querySelector(`#position_up-${id}`).classList.remove('hidden'); |
125 | document.querySelector(`#position_down-${id}`).classList.remove('hidden'); | 169 | document.querySelector(`#position_down-${id}`).classList.remove('hidden'); |
126 | } | 170 | document.querySelector(`#delete-${id}`).classList.remove('hidden');*/ |
171 | } | ||
172 | else{ | ||
173 | //document.querySelector(`#delete-${real_id}`).classList.remove('hidden'); | ||
174 | } | ||
175 | |||
127 | } | 176 | } |
128 | 177 | ||
129 | function submitArticle(id, page = '') { | 178 | function submitArticle(id, page = '', clone = null) { |
179 | //var creation_mode; | ||
180 | if(id[0] === 'n'){ | ||
181 | //creation_mode = true; | ||
182 | |||
183 | // sécurité | ||
184 | if(clone == null){ | ||
185 | return; | ||
186 | } | ||
187 | } | ||
188 | else{ | ||
189 | //creation_mode = false; | ||
190 | } | ||
191 | |||
130 | // Récupérer l'éditeur correspondant à l'article | 192 | // Récupérer l'éditeur correspondant à l'article |
131 | const editor = editors[id]; | 193 | const editor = editors[id]; |
132 | if(!editor) { | 194 | if(!editor) { |
@@ -150,7 +212,50 @@ function submitArticle(id, page = '') { | |||
150 | if (data.success) { | 212 | if (data.success) { |
151 | // Fermer l'éditeur et mettre à jour le contenu de l'article | 213 | // Fermer l'éditeur et mettre à jour le contenu de l'article |
152 | closeEditor(id, page, false); | 214 | closeEditor(id, page, false); |
153 | document.getElementById(id).innerHTML = html; | 215 | if(id[0] === 'n'){ |
216 | var share_btn = document.querySelector(`.share.hidden`); // combinaison de deux classes | ||
217 | var new_btn = document.querySelector(`#new-${id}`); | ||
218 | var edit_btn = document.querySelector(`#edit-${id}`); | ||
219 | var pos_up_btn = document.querySelector(`#position_up-${id}`); | ||
220 | var pos_down_btn = document.querySelector(`#position_down-${id}`); | ||
221 | var delete_btn = document.querySelector(`#delete-${id}`); | ||
222 | var cancel_btn = document.querySelector(`#cancel-${id}`); | ||
223 | var submit_btn = document.querySelector(`#submit-${id}`); | ||
224 | |||
225 | share_btn.classList.remove('hidden') | ||
226 | new_btn.classList.add('hidden'); | ||
227 | edit_btn.classList.remove('hidden'); | ||
228 | pos_up_btn.classList.remove('hidden'); | ||
229 | pos_down_btn.classList.remove('hidden'); | ||
230 | delete_btn.classList.remove('hidden'); | ||
231 | //cancel_btn.classList.add('hidden'); | ||
232 | //submit_btn.classList.add('hidden'); | ||
233 | |||
234 | var article = document.getElementById(id); | ||
235 | var parent = findParent(article, 'article'); | ||
236 | //share_btn.setAttribute('href', '#' + data.article_id); | ||
237 | share_btn.setAttribute('onclick', "copyInClipBoard('" + window.location.href + data.article_id + "')"); // # de l'ancre ajouté au clic sur le lien ouvrant l'éditeur | ||
238 | article.id = data.article_id; | ||
239 | edit_btn.id = 'edit-' + data.article_id; | ||
240 | edit_btn.querySelector('.action_icon').setAttribute('onclick', "openEditor('" + data.article_id + "')"); | ||
241 | pos_up_btn.id = 'position_up-' + data.article_id; | ||
242 | pos_up_btn.querySelector('.action_icon').setAttribute('onclick', "switchPositions('" + data.article_id + "', 'up')"); | ||
243 | pos_down_btn.id = 'position_down-' + data.article_id; | ||
244 | pos_down_btn.querySelector('.action_icon').setAttribute('onclick', "switchPositions('" + data.article_id + "', 'down')"); | ||
245 | delete_btn.id = 'delete-' + data.article_id; | ||
246 | delete_btn.querySelector('.action_icon').setAttribute('onclick', "deleteArticle('" + data.article_id + "')"); | ||
247 | cancel_btn.id = 'cancel-' + data.article_id; | ||
248 | cancel_btn.querySelector('button').setAttribute('onclick', "closeEditor('" + data.article_id + "')"); | ||
249 | submit_btn.id = 'submit-' + data.article_id; | ||
250 | submit_btn.querySelector('button').setAttribute('onclick', "submitArticle('" + data.article_id + "')"); | ||
251 | |||
252 | var next_div = parent.nextElementSibling.nextElementSibling; | ||
253 | parent.parentNode.replaceChild(clone, parent); | ||
254 | next_div.appendChild(parent); | ||
255 | } | ||
256 | else{ | ||
257 | //document.getElementById(id).innerHTML = html; | ||
258 | } | ||
154 | } | 259 | } |
155 | else { | 260 | else { |
156 | alert('Erreur lors de la sauvegarde de l\'article.'); | 261 | alert('Erreur lors de la sauvegarde de l\'article.'); |