Fix Thumbnail-Generierung (magick statt convert) und DB-Migration fuer role-Spalte

- entrypoint.sh: ImageMagick 7 nutzt 'magick' statt 'convert', Auto-Detection
- database.js: Migration fuer role-Spalte bei bestehender DB (ALTER TABLE)
- main.js: Fallback auf Vollbild wenn Thumbnail fehlt (error handler)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kroonk
2026-04-16 19:40:18 +02:00
parent d393630357
commit ea15be0368
4 changed files with 33 additions and 3 deletions

View File

@@ -214,6 +214,14 @@
if ((x = $image_img.data("position"))) $image.css("background-position", x); if ((x = $image_img.data("position"))) $image.css("background-position", x);
$image_img.hide(); $image_img.hide();
// Fallback: Wenn Thumbnail fehlt, Vollbild als Vorschau nutzen
$image_img[0].addEventListener("error", function() {
var fullUrl = $image.attr("href");
if (fullUrl) {
$image.css("background-image", "url('" + fullUrl + "')");
}
});
$image_img[0].addEventListener("load", function() { $image_img[0].addEventListener("load", function() {
EXIF.getData($image_img[0], function () { EXIF.getData($image_img[0], function () {
exifDatas[$image_img.data('name')] = getExifDataMarkup(this); exifDatas[$image_img.data('name')] = getExifDataMarkup(this);

File diff suppressed because one or more lines are too long

View File

@@ -17,7 +17,15 @@ db.serialize(() => {
created_at DATETIME DEFAULT CURRENT_TIMESTAMP created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)`); )`);
// Migration: created_at hinzufuegen falls Tabelle schon existiert // Migration: Spalten hinzufuegen falls Tabelle schon existiert (alte DB ohne role/created_at)
db.run(`ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'client'`, (err) => {
// Ignoriere Fehler wenn Spalte schon existiert
if (!err) {
// Alte Admins (die einzigen User vor dem Update) als admin markieren
db.run(`UPDATE users SET role = 'admin' WHERE id = 1`);
console.log('Migration: role-Spalte hinzugefuegt, User ID 1 als admin gesetzt');
}
});
db.run(`ALTER TABLE users ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP`, (err) => { db.run(`ALTER TABLE users ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP`, (err) => {
// Ignoriere Fehler wenn Spalte schon existiert // Ignoriere Fehler wenn Spalte schon existiert
}); });

View File

@@ -3,10 +3,21 @@
FULLS_DIR="/app/public/images/fulls" FULLS_DIR="/app/public/images/fulls"
THUMBS_DIR="/app/public/images/thumbs" THUMBS_DIR="/app/public/images/thumbs"
# ImageMagick 7 (Alpine) nutzt "magick" statt "convert"
if command -v magick >/dev/null 2>&1; then
IM_CMD="magick"
elif command -v convert >/dev/null 2>&1; then
IM_CMD="convert"
else
echo "FEHLER: Weder magick noch convert gefunden! Thumbnails koennen nicht erzeugt werden."
IM_CMD=""
fi
# Thumbnails fuer einen Quell- und Zielordner generieren # Thumbnails fuer einen Quell- und Zielordner generieren
generate_thumbs_for_dir() { generate_thumbs_for_dir() {
src_dir="$1" src_dir="$1"
dst_dir="$2" dst_dir="$2"
[ -z "$IM_CMD" ] && return
mkdir -p "$dst_dir" mkdir -p "$dst_dir"
for img in "$src_dir"/*; do for img in "$src_dir"/*; do
[ -f "$img" ] || continue [ -f "$img" ] || continue
@@ -21,7 +32,10 @@ generate_thumbs_for_dir() {
if [ ! -f "$dst_dir/$filename" ] || [ "$img" -nt "$dst_dir/$filename" ]; then if [ ! -f "$dst_dir/$filename" ] || [ "$img" -nt "$dst_dir/$filename" ]; then
echo "Thumbnail erstellen: $dst_dir/$filename" echo "Thumbnail erstellen: $dst_dir/$filename"
convert "$img" -resize 512x512 -quality 80 "$dst_dir/$filename" 2>/dev/null $IM_CMD "$img" -resize 512x512 -quality 80 "$dst_dir/$filename"
if [ $? -ne 0 ]; then
echo "WARNUNG: Thumbnail fehlgeschlagen fuer $filename"
fi
fi fi
done done
} }