Bearbeiten: POST /entry/{pid}/edit (Inhalt ändern)
- handleEditEntry: Eigentümerprüfung, nicht-leer, content-only Update - Bild und last_activity bleiben unverändert; gelöschte Posts nicht editierbar - Frontend: Bearbeiten-Button + Inline-Formular auf der Focus-Seite Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+29
-5
@@ -35,19 +35,43 @@ async function load() {
|
||||
focus.innerHTML = "";
|
||||
focus.appendChild(renderEntry(data.entry));
|
||||
|
||||
// Eingeloggt? Reply-Box zeigen; eigener, nicht gelöschter Beitrag -> Löschen-Button.
|
||||
// Eingeloggt? Reply-Box zeigen; eigener, nicht gelöschter Beitrag -> Bearbeiten/Löschen.
|
||||
const me = await api.get("/user/info");
|
||||
document.getElementById("reply-box").hidden = !me.uid;
|
||||
if (me.uid === data.entry.uid && !data.entry.deleted) {
|
||||
const btn = document.createElement("button");
|
||||
btn.textContent = "Löschen";
|
||||
btn.addEventListener("click", async () => {
|
||||
const editBtn = document.createElement("button");
|
||||
editBtn.textContent = "Bearbeiten";
|
||||
editBtn.addEventListener("click", () => {
|
||||
editBtn.disabled = true;
|
||||
const form = document.createElement("form");
|
||||
form.innerHTML = `
|
||||
<textarea name="content" rows="4" maxlength="1000"></textarea>
|
||||
<button type="submit">Speichern</button>
|
||||
<button type="button" class="cancel">Abbrechen</button>
|
||||
<p class="msg"></p>`;
|
||||
form.querySelector("textarea").value = data.entry.content;
|
||||
form.addEventListener("submit", async (ev) => {
|
||||
ev.preventDefault();
|
||||
const res = await api.post(`/entry/${pid}/edit`, new FormData(form));
|
||||
if (res.ok) load();
|
||||
else form.querySelector(".msg").textContent =
|
||||
res.data.error || "Bearbeiten fehlgeschlagen.";
|
||||
});
|
||||
form.querySelector(".cancel").addEventListener("click", load);
|
||||
focus.appendChild(form);
|
||||
});
|
||||
|
||||
const delBtn = document.createElement("button");
|
||||
delBtn.textContent = "Löschen";
|
||||
delBtn.addEventListener("click", async () => {
|
||||
if (!confirm("Beitrag wirklich löschen?")) return;
|
||||
const res = await api.post(`/entry/${pid}/delete`, new FormData());
|
||||
if (res.ok) load();
|
||||
else alert(res.data.error || "Löschen fehlgeschlagen.");
|
||||
});
|
||||
focus.appendChild(btn);
|
||||
|
||||
focus.appendChild(editBtn);
|
||||
focus.appendChild(delBtn);
|
||||
}
|
||||
|
||||
// Direkte Antworten.
|
||||
|
||||
Reference in New Issue
Block a user