From c0382827eaaea3ad3e012f1f8a5fe5b6781bf528 Mon Sep 17 00:00:00 2001 From: Marc Wieland Date: Wed, 23 Apr 2025 16:10:33 +0200 Subject: [PATCH] Testversion Fileupload --- src/admin/NewsManager.tsx | 133 ++++++++++++++++++++++++--------- src/components/NewsSection.tsx | 91 ++++++++++++---------- tg-volleyball-frontend-todo.md | 1 + 3 files changed, 148 insertions(+), 77 deletions(-) diff --git a/src/admin/NewsManager.tsx b/src/admin/NewsManager.tsx index 5a2b508b5..72479f4dc 100644 --- a/src/admin/NewsManager.tsx +++ b/src/admin/NewsManager.tsx @@ -24,6 +24,7 @@ const NewsManager = () => { const [newDescription, setNewDescription] = useState(""); const [newImageUrl, setNewImageUrl] = useState(""); const [newTeam, setNewTeam] = useState(""); + const [uploading, setUploading] = useState(false); const [showDeleteModal, setShowDeleteModal] = useState(false); const [deleteId, setDeleteId] = useState(null); @@ -86,15 +87,15 @@ const NewsManager = () => { setDeleteId(id); setShowDeleteModal(true); }; - + const handleDelete = async () => { if (!deleteId) return; - + try { const res = await fetch(`${apiBase}/api/news/${deleteId}`, { method: "DELETE", }); - + if (res.ok) { await loadNews(); } else { @@ -107,7 +108,6 @@ const NewsManager = () => { setDeleteId(null); } }; - const resetForm = () => { setNewTitle(""); @@ -117,6 +117,28 @@ const NewsManager = () => { setCurrentId(null); }; + const handleImageUpload = async (file: File) => { + const formData = new FormData(); + formData.append("image", file); + setUploading(true); + + try { + const res = await fetch(`${apiBase}/api/upload-news-image`, { + method: "POST", + body: formData, + }); + + if (!res.ok) throw new Error("Fehler beim Bild-Upload"); + + const data = await res.json(); + setNewImageUrl(data.imageUrl); + } catch (err) { + console.error("Bild-Upload fehlgeschlagen:", err); + } finally { + setUploading(false); + } + }; + return (
@@ -139,39 +161,72 @@ const NewsManager = () => { {editMode ? "News bearbeiten" : "Neue News anlegen"}
- setNewTitle(e.target.value)} /> -