Logo-Downloadseite /logo mit Erzeuger-Skript
Damit die Abteilungen das Wappen selbst holen können, statt jedes Mal zu fragen: drei Varianten (farbig, einfarbig schwarz, einfarbig weiß) in SVG, PDF, PNG und JPG, dazu ein ZIP über alles und die Vereinsfarben. Verlinkt nur in der Fußzeile. Bisher lag das Logo genau einmal im Projekt, als eine einzige SVG. Es gab kein PNG, kein JPG, kein PDF und keine einfarbige Fassung. bin/logo-build.php erzeugt alle Dateien aus einer Master-SVG unter storage/logo-quellen/. Gerastert wird mit headless Chrome, weil GD kein SVG lesen kann und weder Inkscape noch rsvg-convert noch ImageMagick verfügbar sind; das PDF ist dabei echter Vektor. Das Skript läuft einmalig lokal, nichts davon im Request-Pfad. bin/preflight.php meldet als Fehler, wenn eine Download-Datei fehlt: die Komponente ließe den Knopf sonst still weg. Die beiden einfarbigen Fassungen sind exakte Negative voneinander, nur Linien, alle Flächen frei. EPS gibt es bewusst nicht, dafür fehlt jedes Werkzeug; SVG und PDF decken die Druckereien ab. Frühere Vereinslogos sind vorbereitet, aber im Projekt liegt bisher kein einziges historisches Wappen vor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J9mubC8gtpjtJntbhSJBRS
This commit is contained in:
@@ -404,6 +404,48 @@ if ($inlineStyles !== []) {
|
||||
. '. Bilder als <img> ausgeben, Farben als Token in tokens.css plus Klasse in components.css.';
|
||||
}
|
||||
|
||||
// --- Logo-Downloads (/logo) ---
|
||||
// Ein fehlender Download sieht man der Seite nicht an: die Komponente lässt den Knopf
|
||||
// still weg, die Seite bleibt heil und niemand merkt, dass eine Variante fehlt. Deshalb
|
||||
// ein Fehler und keine Warnung. Erzeugt werden die Dateien mit bin/logo-build.php.
|
||||
$logo = json_load('logo');
|
||||
$logoDir = PUBLIC_PATH . '/assets/downloads/logo';
|
||||
$logoFehlt = [];
|
||||
foreach (array_merge($logo['varianten'] ?? [], $logo['retro'] ?? []) as $variante) {
|
||||
if (empty($variante['key'])) {
|
||||
continue;
|
||||
}
|
||||
$basis = 'tsv08-kulmbach-logo-' . $variante['key'];
|
||||
// Mindestens diese drei muss es geben; die übrigen Breiten hängen an der Quelle
|
||||
// (ein gescanntes Altlogo liefert weder SVG noch PDF, siehe bin/logo-build.php).
|
||||
foreach ([$basis . '-1000.png', $basis . '-1000.jpg'] as $datei) {
|
||||
if (!is_file($logoDir . '/' . $datei)) {
|
||||
$logoFehlt[] = $datei;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($logo !== [] && !is_file($logoDir . '/tsv08-kulmbach-logo-paket.zip')) {
|
||||
$logoFehlt[] = 'tsv08-kulmbach-logo-paket.zip';
|
||||
}
|
||||
if ($logoFehlt !== []) {
|
||||
$errors[] = 'Logo-Downloads fehlen (/logo zeigt den Knopf dann einfach nicht an): '
|
||||
. implode(', ', $logoFehlt) . '. Erzeugen mit: php bin/logo-build.php';
|
||||
}
|
||||
|
||||
// Master neuer als das Erzeugte? Dann steht auf der Seite ein altes Logo.
|
||||
$logoMaster = glob(STORAGE_PATH . '/logo-quellen/*.svg') ?: [];
|
||||
$logoNeuestesZiel = 0;
|
||||
foreach (glob($logoDir . '/*') ?: [] as $datei) {
|
||||
$logoNeuestesZiel = max($logoNeuestesZiel, (int) filemtime($datei));
|
||||
}
|
||||
foreach ($logoMaster as $datei) {
|
||||
if ((int) filemtime($datei) > $logoNeuestesZiel) {
|
||||
$warnings[] = 'Logo-Master ist neuer als die Download-Dateien ('
|
||||
. basename($datei) . ') — php bin/logo-build.php neu laufen lassen.';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// --- Ausgabe ---
|
||||
foreach ($warnings as $w) {
|
||||
echo "WARNUNG {$w}\n";
|
||||
|
||||
Reference in New Issue
Block a user