diff --git a/Web/templates/library_table.html b/Web/templates/library_table.html index 3cc28ee..e05f7a7 100644 --- a/Web/templates/library_table.html +++ b/Web/templates/library_table.html @@ -1331,40 +1331,34 @@ detailContent.innerHTML = '

Lade Details...

'; detailModal.style.display = 'flex'; - // Sicherer Zugriff auf das Item mit Fallback - const item = libraryItems.find(i => i._id === itemId); - let mediaHtml = ''; - - if (item) { - // Prüfe gängige Array-Namen aus dem Backend - const imageArray = item.Images || item.Bilder || item.images; - - if (Array.isArray(imageArray) && imageArray.length > 0) { - const imagesHtml = imageArray.map(image => { - // Direkter, robuster Pfad zur Upload-Route - const imageSrc = image.startsWith('/uploads/') || image.startsWith('http') - ? image - : `/uploads/${image}`; - - return `${escapeHtml(item.Name || 'Medium')}`; - }).join(''); - - mediaHtml = ``; - } - } - - // Zusätzliche Details vom Backend laden fetch(`/api/item_detail/${itemId}`) .then(response => { - if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); - return response.text(); + if (!response.ok) { + throw new Error('Fehler beim Laden der Artikeldetails'); + } + return response.json(); }) - .then(html => { - detailContent.innerHTML = mediaHtml + DOMPurify.sanitize(html); + .then(data => { + let mediaHtml = ''; + const imageArray = data.images || []; + + if (Array.isArray(imageArray) && imageArray.length > 0) { + const imagesHtml = imageArray.map(image => { + const imageSrc = image.startsWith('/uploads/') || image.startsWith('http') + ? image + : `/uploads/${image}`; + + return `Buchcover / Bild`; + }).join(''); + + mediaHtml = ``; + } + + detailContent.innerHTML = mediaHtml + data.html; }) - .catch(err => { - console.error('Error loading detail:', err); - detailContent.innerHTML = '

Entschuldigung, die Details konnten nicht geladen werden.

'; + .catch(error => { + console.error('Error fetching item detail:', error); + detailContent.innerHTML = '

Fehler beim Laden der Artikeldetails.

'; }); }