@@ -50,6 +50,9 @@ include_once 'php/controller/showArticle-controller.php';
|
|||||||
echo '[]';
|
echo '[]';
|
||||||
}
|
}
|
||||||
?></textarea>
|
?></textarea>
|
||||||
|
|
||||||
|
<!-- unsichtbares Input, um die zu löschenden Bilder zu übergeben-->
|
||||||
|
<input type="hidden" id="deleted-images" name="deleted_images" value="[]">
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- Seitenleiste -->
|
<!-- Seitenleiste -->
|
||||||
|
|||||||
+42
-11
@@ -96,23 +96,54 @@ function initEditor() {
|
|||||||
|
|
||||||
// beim Abschicken verbleibende Blöcke auslesen UND gelöschte Bilder ermitteln
|
// beim Abschicken verbleibende Blöcke auslesen UND gelöschte Bilder ermitteln
|
||||||
form.addEventListener("submit", function(e) {
|
form.addEventListener("submit", function(e) {
|
||||||
// Welche Bilder aus 'initialImages' fehlen in 'currentImages' ?
|
const blocks = [];
|
||||||
const deletedImages = initialImages.filter(img => !currentImages.includes(img));
|
const currentImages = [];
|
||||||
|
|
||||||
const oldInput = document.getElementById("deleted-images");
|
// alle aktuell im Formular verbliebenen Blöcke scannen
|
||||||
if (oldInput) {
|
container.querySelectorAll(".editor-block").forEach(blockDiv => {
|
||||||
oldInput.remove();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const deletedInput = document.createElement("input");
|
// 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));
|
||||||
|
|
||||||
|
// 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.type = "hidden";
|
||||||
deletedInput.id = "deleted-images";
|
deletedInput.id = "deleted-images";
|
||||||
deletedInput.name = "deleted_images"; // Dieser Name kommt im $_POST an
|
deletedInput.name = "deleted_images";
|
||||||
deletedInput.value = JSON.stringify(deletedImages);
|
|
||||||
|
|
||||||
form.appendChild(deletedInput);
|
form.appendChild(deletedInput);
|
||||||
|
}
|
||||||
console.log("An PHP gesendete Löschliste:", deletedInput.value);
|
deletedInput.value = JSON.stringify(deletedImages);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Existierende Blöcke laden (stellt alte Daten aus der Session wieder her)
|
// Existierende Blöcke laden (stellt alte Daten aus der Session wieder her)
|
||||||
|
|||||||
Reference in New Issue
Block a user