diff options
| author | polo <ordipolo@gmx.fr> | 2025-06-19 02:53:01 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-06-19 02:53:01 +0200 |
| commit | b61c918e05124ddb0bb3102a626ca913a0ab4f3a (patch) | |
| tree | 48c9b88466ab566838f0ff7bdb933eabc0b01600 /public | |
| parent | 83619ac611490e8cd652a0252349704100fc5148 (diff) | |
| download | cms-b61c918e05124ddb0bb3102a626ca913a0ab4f3a.tar.gz cms-b61c918e05124ddb0bb3102a626ca913a0ab4f3a.tar.bz2 cms-b61c918e05124ddb0bb3102a626ca913a0ab4f3a.zip | |
upload image éditeur: nom d'origine + uniqid + extension d'origine dans une liste autorisée
Diffstat (limited to 'public')
| -rw-r--r-- | public/js/tinymce.js | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/public/js/tinymce.js b/public/js/tinymce.js index 55a37cc..f8d78c8 100644 --- a/public/js/tinymce.js +++ b/public/js/tinymce.js | |||
| @@ -49,9 +49,9 @@ function openEditor(id, page = '') { | |||
| 49 | } | 49 | } |
| 50 | }); | 50 | }); |
| 51 | editor.on('PastePreProcess', function (e){ // déclenchement au collage AVANT insertion dans l'éditeur | 51 | editor.on('PastePreProcess', function (e){ // déclenchement au collage AVANT insertion dans l'éditeur |
| 52 | let parser = new DOMParser(); | 52 | const parser = new DOMParser(); |
| 53 | let doc = parser.parseFromString(e.content, 'text/html'); | 53 | const doc = parser.parseFromString(e.content, 'text/html'); |
| 54 | let images = doc.querySelectorAll('img'); | 54 | const images = doc.querySelectorAll('img'); |
| 55 | 55 | ||
| 56 | let downloads_in_progress = []; | 56 | let downloads_in_progress = []; |
| 57 | 57 | ||
| @@ -59,11 +59,11 @@ function openEditor(id, page = '') { | |||
| 59 | if(img.src.startsWith('file://')){ // détection d'images non insérables | 59 | if(img.src.startsWith('file://')){ // détection d'images non insérables |
| 60 | console.warn('Image locale non insérable dans tinymce :', img.src); | 60 | console.warn('Image locale non insérable dans tinymce :', img.src); |
| 61 | img.outerHTML = '<div style="border:1px solid red; padding:10px; margin:5px 0; background-color:#ffe6e6; color:#a94442; font-size:14px;">' + | 61 | img.outerHTML = '<div style="border:1px solid red; padding:10px; margin:5px 0; background-color:#ffe6e6; color:#a94442; font-size:14px;">' + |
| 62 | "Image locale non insérée. Pour insérer une image depuis LibreOffice, copiez l'image seule et recoller." + | 62 | "Image locale non insérée (vient-elle de LibreOffice ?). Effacez cet encadré et copiez-collez l'image seule. Ensuite cliquez sur le bouton Insérer une image puis dans la nouvelle fenêtre sur Enregistrer." + |
| 63 | '</div>'; | 63 | '</div>'; |
| 64 | } | 64 | } |
| 65 | else if(img.src.startsWith('http')){ // détection d'images web | 65 | else if(img.src.startsWith('http')){ // détection d'images web |
| 66 | let promise = fetch('index.php?action=upload_image_url', { // promesse d'un fichier téléchargeable sur le serveur | 66 | const promise = fetch('index.php?action=upload_image_url', { // promesse d'un fichier téléchargeable sur le serveur |
| 67 | method: 'POST', | 67 | method: 'POST', |
| 68 | headers: { 'Content-Type': 'application/json' }, | 68 | headers: { 'Content-Type': 'application/json' }, |
| 69 | body: JSON.stringify({ image_url: img.src }) | 69 | body: JSON.stringify({ image_url: img.src }) |
| @@ -75,7 +75,7 @@ function openEditor(id, page = '') { | |||
| 75 | } | 75 | } |
| 76 | }) | 76 | }) |
| 77 | .catch(error => { | 77 | .catch(error => { |
| 78 | console.error('Erreur lors de l’upload de l’image :', error); | 78 | console.error('Erreur lors de l’upload de l’image distante:', error); |
| 79 | }); | 79 | }); |
| 80 | 80 | ||
| 81 | downloads_in_progress.push(promise); | 81 | downloads_in_progress.push(promise); |
| @@ -96,7 +96,7 @@ function openEditor(id, page = '') { | |||
| 96 | } | 96 | } |
| 97 | }); // fin editor.on('PastePreProcess'... | 97 | }); // fin editor.on('PastePreProcess'... |
| 98 | }, | 98 | }, |
| 99 | // upload d'image | 99 | // upload d'image natif de tinymce avec le bouton "Insérer une image" |
| 100 | images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => { | 100 | images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => { |
| 101 | const formData = new FormData(); | 101 | const formData = new FormData(); |
| 102 | formData.append("file", blobInfo.blob()); | 102 | formData.append("file", blobInfo.blob()); |
| @@ -107,7 +107,7 @@ function openEditor(id, page = '') { | |||
| 107 | }) | 107 | }) |
| 108 | .then(response => response.json()) | 108 | .then(response => response.json()) |
| 109 | .then(data => { | 109 | .then(data => { |
| 110 | if (data.location) { | 110 | if(data.location) { |
| 111 | resolve(data.location); | 111 | resolve(data.location); |
| 112 | } | 112 | } |
| 113 | else { | 113 | else { |
