Files
guyg1474andClaude Opus 5.5 819219fb2d Rollen (Admin/Mitglied), Seite Kooperationen, Textanpassungen
- Gemeinsame Zugänge mit Rollen: Admin darf alles, Mitglied nutzt Kalender,
  Fahrtplaner, Treffpunkte und bearbeitet Mitglieder (kein Hinzufügen,
  Löschen, Import, keine Patches, keine Statistik-Korrektur)
- Server prüft die Rechte (403), Konten ohne Rolle gelten als Admin
- npm run user: add <name> [admin|mitglied], role <name> <rolle>
- Neue öffentliche Seite Kooperationen mit Titelbild, Anführer,
  Social-Media-Links und Beschreibung, Pflege durch Admin
- Kopfzeile bleibt bei mittlerer Breite einzeilig
- Texte auf Wunsch gekürzt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:47:03 +02:00

82 lines
3.6 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Patches – HCRB</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<main>
<header class="page-head">
<div>
<span class="eyebrow">Klett &amp; Stoff</span>
<h1>Patches</h1>
<p>Gruppen-Patches, Event-Patches und alles, was bei der HCRB auf die Weste kommt.</p>
</div>
<div class="actions">
<button type="button" id="add-btn" class="primary" hidden>Patch hochladen</button>
</div>
</header>
<div class="card" id="patch-form-card" hidden>
<h2 id="patch-form-title">Patch hochladen</h2>
<form id="patch-form" class="split">
<label class="dropzone" id="dropzone" for="patch-file">
<img id="patch-preview" alt="Vorschau" hidden>
<span id="drop-text">
<strong>Bild auswählen</strong><br>
oder hierher ziehen · PNG, JPEG, WebP oder SVG
</span>
<input type="file" id="patch-file" accept="image/png,image/jpeg,image/webp,image/svg+xml,.svg" hidden>
</label>
<div>
<label>Name
<input type="text" id="patch-name" required maxlength="80" placeholder="z. B. HCRB Gruppenpatch 2026">
</label>
<fieldset class="segmented">
<legend>Status</legend>
<label><input type="radio" name="patch-status" id="patch-status-vorhanden" value="vorhanden" checked> Gibt es schon</label>
<label><input type="radio" name="patch-status" id="patch-status-geplant" value="geplant"> In Planung</label>
</fieldset>
<label>Beschreibung (optional)
<textarea id="patch-description" maxlength="500" placeholder="Wofür, seit wann, wer hat ihn entworfen …"></textarea>
</label>
<p class="muted">Tipp: Ein freigestelltes PNG oder eine SVG ohne Hintergrund sieht in der Galerie am besten aus.
Große Bilder werden vor dem Hochladen automatisch verkleinert.</p>
<p id="patch-error" class="warn" hidden></p>
<div class="row wrap">
<button type="submit" class="primary" id="patch-submit">Hochladen</button>
<button type="button" id="patch-cancel">Abbrechen</button>
</div>
</div>
</form>
</div>
<section class="patch-group" id="group-vorhanden" hidden>
<div class="section-title"><h2>Gibt es schon</h2><span class="muted" id="count-vorhanden"></span></div>
<div class="patch-grid" id="grid-vorhanden"></div>
</section>
<section class="patch-group" id="group-geplant" hidden>
<div class="section-title"><h2>In Planung</h2><span class="muted" id="count-geplant"></span></div>
<div class="patch-grid" id="grid-geplant"></div>
</section>
<div id="patch-empty" class="empty-state" hidden>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" aria-hidden="true"><path d="M12 2.5l8 3.5v6c0 5-3.5 8.2-8 9.5-4.5-1.3-8-4.5-8-9.5V6z"/></svg>
<strong>Noch keine Patches</strong>
<span id="patch-empty-hint">Sobald der Admin einen Patch hochlädt, erscheint er hier.</span>
</div>
<dialog class="lightbox" id="lightbox">
<form method="dialog"><button class="close small" aria-label="Schließen">✕</button></form>
<figure>
<img id="lightbox-img" alt="">
<figcaption><strong id="lightbox-name"></strong><span id="lightbox-text" class="muted"></span></figcaption>
</figure>
</dialog>
</main>
<script type="module" src="/js/patches.js"></script>
</body>
</html>