summaryrefslogtreecommitdiff
path: root/public/js/tinymce.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/tinymce.js')
-rw-r--r--public/js/tinymce.js151
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 @@
1let editors = {}; 1let editors = {};
2 2
3function openEditor(id, page = '') { 3function 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
66function deleteArticle(id, page = '') { 83function deleteArticle(id, page = '') {
@@ -100,33 +117,78 @@ function deleteArticle(id, page = '') {
100 } 117 }
101} 118}
102 119
103function closeEditor(id, page = '', display_old = true) 120function 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
129function submitArticle(id, page = '') { 178function 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.');