Refactor: Moved standard assets to assets/images/ and updated all references. README updated with rebuild instructions.

This commit is contained in:
Gemini Agent
2025-12-05 18:33:19 +00:00
parent 8c1a06a8bb
commit 88c095978c
10 changed files with 31 additions and 12 deletions

View File

@@ -271,7 +271,7 @@ $conn->close();
<div class="mb-3"><label for="image_file" class="form-label">1. Bild hochladen</label><input class="form-control" type="file" id="image_file" name="image_file" accept="image/*"></div>
<div class="mb-3"><label for="image_url" class="form-label">2. ODER Bild-URL angeben</label><input type="url" class="form-control" id="image_url" name="image_url" placeholder="https://..."></div>
<div class="mb-3"><label class="form-label">3. ODER Bild einfügen (Strg+V)</label><div id="pasteArea" class="paste-area"><i class="fas fa-paste"></i> Hier klicken & einfügen</div></div>
<div class="text-center mt-auto"><label class="form-label d-block">Vorschau</label><img id="imagePreview" src="keinbild.png" class="mb-2"></div>
<div class="text-center mt-auto"><label class="form-label d-block">Vorschau</label><img id="imagePreview" src="assets/images/keinbild.png" class="mb-2"></div>
</div>
</div>
</div>

View File

@@ -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 ? `<a href="${article.product_url}" target="_blank" class="btn btn-sm btn-outline-secondary" data-bs-toggle="tooltip" title="Produktseite öffnen"><i class="fas fa-external-link-alt"></i></a>` : '';
const creatorBadge = article.user_id != currentUserId ? `<span class="badge bg-info">${article.creator_name}</span>` : `<span class="badge bg-primary">Ich</span>`;
const householdBadge = article.household_id ? `<span class="badge bg-success" data-bs-toggle="tooltip" title="Für den Haushalt freigegeben"><i class="fas fa-users"></i></span>` : `<span class="badge bg-secondary" data-bs-toggle="tooltip" title="Privater Artikel"><i class="fas fa-user"></i></span>`;
@@ -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();

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -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;

View File

@@ -314,7 +314,7 @@ require_once 'header.php';
<label class="form-label">Bild</label>
<div class="card bg-light mb-2">
<div class="card-body text-center p-2">
<img id="imagePreview" src="<?php echo !empty($image_url) ? htmlspecialchars($image_url) : 'keinbild.png'; ?>" class="img-fluid" style="max-height:150px; object-fit:contain;">
<img id="imagePreview" src="<?php echo !empty($image_url) ? htmlspecialchars($image_url) : 'assets/images/keinbild.png'; ?>" class="img-fluid" style="max-height:150px; object-fit:contain;">
</div>
</div>
<input type="file" name="image_file" id="image_file" class="form-control form-control-sm mb-2" accept="image/*">

View File

@@ -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 += `
<div class="available-item-card d-flex align-items-center" data-article-id="${article.id}">
<img src="${imgUrl}" class="article-image-trigger me-2 rounded" style="width: 30px; height: 30px; object-fit: cover; cursor: pointer;" data-preview-url="${imgUrl}">

View File

@@ -153,7 +153,7 @@ function render_item_row($item, $level, $items_by_parent) {
$icon = '<i class="fas fa-folder-open me-2 text-warning"></i>';
} 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 = '<img src="' . $img_src . '" class="item-image me-2 article-image-trigger" data-preview-url="' . $img_src . '">';
}
@@ -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';
}

View File

@@ -93,7 +93,7 @@ $conn->close();
<div class="col-md-6 col-lg-4">
<div class="card h-100 shadow-sm packing-list-card">
<div class="card-body d-flex flex-column">
<img src="rucksack_icon.png" alt="Packliste" class="card-icon">
<img src="assets/images/rucksack_icon.png" alt="Packliste" class="card-icon">
<h5 class="card-title"><?php echo htmlspecialchars($list['name']); ?></h5>
<p class="card-text text-muted flex-grow-1 small"><?php echo htmlspecialchars($list['description'] ?: 'Keine Beschreibung vorhanden.'); ?></p>
<div class="mt-auto d-flex justify-content-between">