diff --git a/content/updateArticle.php b/content/updateArticle.php index 864b585..b693674 100644 --- a/content/updateArticle.php +++ b/content/updateArticle.php @@ -50,6 +50,9 @@ include_once 'php/controller/showArticle-controller.php'; echo '[]'; } ?> + + + diff --git a/js/editor.js b/js/editor.js index 4695cb8..e666f40 100644 --- a/js/editor.js +++ b/js/editor.js @@ -96,23 +96,54 @@ function initEditor() { // beim Abschicken verbleibende Blöcke auslesen UND gelöschte Bilder ermitteln form.addEventListener("submit", function(e) { - // Welche Bilder aus 'initialImages' fehlen in 'currentImages' ? + const blocks = []; + const currentImages = []; + + // alle aktuell im Formular verbliebenen Blöcke scannen + container.querySelectorAll(".editor-block").forEach(blockDiv => { + const type = blockDiv.getAttribute("data-type"); + let value = ""; + + if (type === "text") { + value = blockDiv.querySelector("textarea").value; + } else if (type === "image") { + + const imgTag = blockDiv.querySelector("img"); + if (imgTag) { + const srcValue = imgTag.getAttribute("src") || ""; + // Wenn es ein neues Bild ist, nutzen wir das data-value (Base64) + if (srcValue.startsWith('data:image/')) { + value = blockDiv.getAttribute("data-value") || ""; + } else { + value = srcValue; + } + } + + // Pfade sammeln, die der Nutzer NICHT gelöscht hat (für den Abgleich) + if (value && value.startsWith('uploads/')) { + currentImages.push(value); + } + } + + blocks.push({ type: type, value: value }); + }); + + // das reguläre unsichtbare Content-Feld befüllen + hiddenContentInput.value = JSON.stringify(blocks); + + // Differenz berechnen: Welche Bilder aus 'initialImages' fehlen in 'currentImages' ? const deletedImages = initialImages.filter(img => !currentImages.includes(img)); - const oldInput = document.getElementById("deleted-images"); - if (oldInput) { - oldInput.remove(); + // das 'deleted_images'-Feld dynamisch befüllen und an den Controller senden + let deletedInput = document.getElementById("deleted-images"); + if (!deletedInput) { + deletedInput = document.createElement("input"); + deletedInput.type = "hidden"; + deletedInput.id = "deleted-images"; + deletedInput.name = "deleted_images"; + form.appendChild(deletedInput); } - - const deletedInput = document.createElement("input"); - deletedInput.type = "hidden"; - deletedInput.id = "deleted-images"; - deletedInput.name = "deleted_images"; // Dieser Name kommt im $_POST an deletedInput.value = JSON.stringify(deletedImages); - - form.appendChild(deletedInput); - - console.log("An PHP gesendete Löschliste:", deletedInput.value); }); // Existierende Blöcke laden (stellt alte Daten aus der Session wieder her)