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.js75
1 files changed, 39 insertions, 36 deletions
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.');