From 88c095978ccdb2e639d58e21b9898897b9bec89e Mon Sep 17 00:00:00 2001 From: Gemini Agent Date: Fri, 5 Dec 2025 18:33:19 +0000 Subject: [PATCH] Refactor: Moved standard assets to assets/images/ and updated all references. README updated with rebuild instructions. --- README.md | 19 +++++++++++++++++++ src/add_article.php | 2 +- src/articles.php | 6 +++--- src/{ => assets/images}/keinbild.png | Bin src/{ => assets/images}/rucksack_icon.png | Bin src/edit_article.php | 4 ++-- src/edit_backpack.php | 2 +- src/manage_packing_list_items.php | 4 ++-- src/packing_list_detail.php | 4 ++-- src/packing_lists.php | 2 +- 10 files changed, 31 insertions(+), 12 deletions(-) rename src/{ => assets/images}/keinbild.png (100%) rename src/{ => assets/images}/rucksack_icon.png (100%) diff --git a/README.md b/README.md index 7407221..584e43a 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,25 @@ Die Anwendung ist vollständig containerisiert ("Dockerized"). Du kannst sie dir --name packliste-container \ packliste-app ``` + *Hinweis:* Bilder werden im Volume `packliste_uploads` gespeichert. Das Git-Repository enthält keine Nutzer-Bilder. + +3. **Update & Rebuild (Aktualisierung):** + Wenn du Änderungen aus dem Git ziehen ("den Rotz ziehen") und die App aktualisieren willst: + + ```bash + # 1. Neuesten Code holen + git pull origin master + + # 2. Container stoppen und löschen (Datenbank & Uploads bleiben im Volume erhalten!) + docker stop packliste-container + docker rm packliste-container + + # 3. Image neu bauen + docker build -t packliste-app . + + # 4. Neuen Container starten (gleicher Befehl wie oben) + docker run -d ... (siehe oben) + ``` Die App ist anschließend unter `http://localhost:8080` erreichbar. --- diff --git a/src/add_article.php b/src/add_article.php index 0c3ca28..b78228c 100644 --- a/src/add_article.php +++ b/src/add_article.php @@ -271,7 +271,7 @@ $conn->close();
Hier klicken & einfügen
-
+
diff --git a/src/articles.php b/src/articles.php index fbe6528..4f0639d 100644 --- a/src/articles.php +++ b/src/articles.php @@ -289,7 +289,7 @@ document.addEventListener('DOMContentLoaded', function () { function generateRowHTML(article, level = 0) { let html = ''; - const imagePath = article.image_url ? article.image_url : 'keinbild.png'; + const imagePath = article.image_url ? article.image_url : 'assets/images/keinbild.png'; const productLink = article.product_url ? `` : ''; const creatorBadge = article.user_id != currentUserId ? `${article.creator_name}` : `Ich`; const householdBadge = article.household_id ? `` : ``; @@ -349,7 +349,7 @@ document.addEventListener('DOMContentLoaded', function () { document.querySelectorAll('.article-image-trigger').forEach(trigger => { trigger.addEventListener('mouseover', function (e) { const previewUrl = this.getAttribute('data-preview-url'); - if(previewUrl && !previewUrl.endsWith('keinbild.png')) { + if(previewUrl && !previewUrl.endsWith('assets/images/keinbild.png')) { tooltip.style.backgroundImage = `url('${previewUrl}')`; tooltip.style.display = 'block'; } @@ -365,7 +365,7 @@ document.addEventListener('DOMContentLoaded', function () { trigger.addEventListener('click', function(e) { const fullImageUrl = this.getAttribute('data-preview-url'); const articleName = this.getAttribute('alt'); - if(fullImageUrl && !fullImageUrl.endsWith('keinbild.png')) { + if(fullImageUrl && !fullImageUrl.endsWith('assets/images/keinbild.png')) { fullImageElement.src = fullImageUrl; imageModalLabel.textContent = articleName; imageModal.show(); diff --git a/src/keinbild.png b/src/assets/images/keinbild.png similarity index 100% rename from src/keinbild.png rename to src/assets/images/keinbild.png diff --git a/src/rucksack_icon.png b/src/assets/images/rucksack_icon.png similarity index 100% rename from src/rucksack_icon.png rename to src/assets/images/rucksack_icon.png diff --git a/src/edit_article.php b/src/edit_article.php index 3804698..972123b 100644 --- a/src/edit_article.php +++ b/src/edit_article.php @@ -28,7 +28,7 @@ $product_url = ''; $manufacturer_id = null; $product_designation = ''; $storage_location_id = null; $parent_article_id = null; -$display_current_image_path = 'keinbild.png'; +$display_current_image_path = 'assets/images/keinbild.png'; $display_image_url_in_input = ''; $is_local_uploaded_image = false; $upload_dir = 'uploads/images/'; @@ -409,7 +409,7 @@ document.addEventListener('DOMContentLoaded', function() { if(deleteCheckbox) { deleteCheckbox.addEventListener('change', function() { if(this.checked) { - imagePreview.src = 'keinbild.png'; + imagePreview.src = 'assets/images/keinbild.png'; clearOtherImageInputs('delete'); } else { imagePreview.src = originalImageSrc; diff --git a/src/edit_backpack.php b/src/edit_backpack.php index 662ac62..3098ae5 100644 --- a/src/edit_backpack.php +++ b/src/edit_backpack.php @@ -314,7 +314,7 @@ require_once 'header.php';
- +
diff --git a/src/manage_packing_list_items.php b/src/manage_packing_list_items.php index 7385b1c..ae9c1f1 100644 --- a/src/manage_packing_list_items.php +++ b/src/manage_packing_list_items.php @@ -224,7 +224,7 @@ $conn->close(); document.body.addEventListener('mouseover', e => { if (e.target.classList.contains('article-image-trigger')) { const url = e.target.getAttribute('data-preview-url'); - if (url && !url.endsWith('keinbild.png')) { + if (url && !url.endsWith('assets/images/keinbild.png')) { tooltip.style.backgroundImage = `url('${url}')`; tooltip.style.display = 'block'; } @@ -273,7 +273,7 @@ $conn->close(); const matchesManufacturer = !filterManufacturer || article.manufacturer_name === filterManufacturer; if (matchesText && matchesCategory && matchesManufacturer) { const details = [article.manufacturer_name, article.product_designation].filter(Boolean).join(' - '); - const imgUrl = article.image_url ? article.image_url : 'keinbild.png'; + const imgUrl = article.image_url ? article.image_url : 'assets/images/keinbild.png'; html += `
diff --git a/src/packing_list_detail.php b/src/packing_list_detail.php index d9f104e..36cf6f7 100644 --- a/src/packing_list_detail.php +++ b/src/packing_list_detail.php @@ -153,7 +153,7 @@ function render_item_row($item, $level, $items_by_parent) { $icon = ''; } else { // Standard Item - $img_src = !empty($item['image_url']) ? htmlspecialchars($item['image_url']) : 'keinbild.png'; + $img_src = !empty($item['image_url']) ? htmlspecialchars($item['image_url']) : 'assets/images/keinbild.png'; $icon = ''; } @@ -345,7 +345,7 @@ document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.article-image-trigger').forEach(trigger => { trigger.addEventListener('mouseover', e => { const url = e.target.getAttribute('data-preview-url'); - if (url && !url.endsWith('keinbild.png')) { + if (url && !url.endsWith('assets/images/keinbild.png')) { tooltip.style.backgroundImage = `url('${url}')`; tooltip.style.display = 'block'; } diff --git a/src/packing_lists.php b/src/packing_lists.php index c0a03c2..c8b0939 100644 --- a/src/packing_lists.php +++ b/src/packing_lists.php @@ -93,7 +93,7 @@ $conn->close();
- Packliste + Packliste