is_array($files['name']) ? $files['name'][$i] : $files['name'], 'type' => is_array($files['type']) ? $files['type'][$i] : $files['type'], 'tmp_name' => is_array($files['tmp_name']) ? $files['tmp_name'][$i] : $files['tmp_name'], 'error' => is_array($files['error']) ? $files['error'][$i] : $files['error'], 'size' => is_array($files['size']) ? $files['size'][$i] : $files['size'], ]; if ($file['error'] === UPLOAD_ERR_OK && handle_upload($file)) { $uploaded++; } } if ($uploaded > 0) { flash('success', $uploaded . ' Datei(en) hochgeladen.'); } else { flash('error', 'Upload fehlgeschlagen.'); } redirect('/admin/media.php'); } } // Alle Bilder sammeln function scan_uploads(string $dir, string $prefix = ''): array { $files = []; if (!is_dir($dir)) return $files; $items = scandir($dir); foreach ($items as $item) { if ($item === '.' || $item === '..' || $item === '.htaccess' || $item === '.gitkeep') continue; $path = $dir . '/' . $item; if (is_dir($path)) { $files = array_merge($files, scan_uploads($path, $prefix . $item . '/')); } elseif (preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $item)) { $files[] = [ 'path' => $prefix . $item, 'url' => UPLOAD_URL . $prefix . $item, 'size' => filesize($path), 'time' => filemtime($path), ]; } } return $files; } $images = scan_uploads(rtrim(UPLOAD_DIR, '/')); usort($images, fn($a, $b) => $b['time'] - $a['time']); $pageTitle = 'Medien'; $currentPage = 'media'; ob_start(); ?>

Bilder hochladen

Bilder hierher ziehen oder klicken

Medienbibliothek ()

Noch keine Bilder vorhanden.

function copyUrl(url) { var fullUrl = window.location.origin + url; navigator.clipboard.writeText(fullUrl).then(function() { alert("URL kopiert: " + fullUrl); }); } document.addEventListener("DOMContentLoaded", function() { var zone = document.getElementById("uploadZone"); var input = document.getElementById("fileInput"); zone.addEventListener("click", function() { input.click(); }); zone.addEventListener("dragover", function(e) { e.preventDefault(); zone.classList.add("dragover"); }); zone.addEventListener("dragleave", function() { zone.classList.remove("dragover"); }); zone.addEventListener("drop", function(e) { e.preventDefault(); zone.classList.remove("dragover"); input.files = e.dataTransfer.files; }); }); '; include __DIR__ . '/templates/layout.php';