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

102 lines
3.7 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>Kalender – HCRB</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<main>
<header class="page-head">
<div>
<span class="eyebrow">Spieltage &amp; Termine</span>
<h1>Kalender</h1>
</div>
<div class="actions">
<a class="button" href="/api/calendar.ics" download title="Alle kommenden Termine als .ics-Datei für Google, Apple oder Outlook">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M12 3v12M7 10l5 5 5-5M4 21h16"/></svg>
Alle Termine (.ics)
</a>
</div>
</header>
<div class="split wide-left">
<div class="col">
<div class="card">
<div class="cal-nav">
<button id="prev-month" aria-label="Vorheriger Monat">‹</button>
<h2 id="month-title"></h2>
<button id="next-month" aria-label="Nächster Monat">›</button>
<button id="today-btn" class="small">Heute</button>
</div>
<div id="calendar" class="cal-grid"></div>
<div class="cal-legend">
<span><i class="l-game"></i>Spiel-Event</span>
<span><i class="l-nogame"></i>Termin ohne Spiel</span>
<span><i class="l-mine"></i>Du hast zugesagt</span>
</div>
</div>
</div>
<div class="col">
<div class="card">
<label>Ich bin
<select id="me-select"></select>
</label>
<p id="me-hint" class="muted" hidden>Wähle deinen Namen aus, damit du Termine eintragen und zusagen kannst.
Du fehlst in der Liste? Dann lass dich vom Admin unter <a href="/gruppe">Gruppe</a> eintragen.</p>
</div>
<div class="card">
<h2 id="day-title"></h2>
<div id="day-events"></div>
<form id="event-form">
<h3 id="event-form-title">Termin an diesem Tag eintragen</h3>
<label>Titel / Spielfeld
<input type="text" id="event-title" required maxlength="80" placeholder="z. B. Sonntagsspiel Darkzone">
</label>
<label class="toggle-field">
<input type="checkbox" id="event-game" checked>
<div>
<strong>Spiel-Event</strong>
<span>Wer zusagt, bekommt ein Spiel in der Statistik. Für Treffen oder Grillen das Häkchen entfernen.</span>
</div>
</label>
<div class="grid2">
<label>Datum
<input type="date" id="event-date" required>
</label>
<div class="grid2 keep">
<label>Beginn
<input type="time" id="event-time">
</label>
<label>Ende
<input type="time" id="event-end">
</label>
</div>
</div>
<label>Notiz (optional)
<textarea id="event-note" maxlength="500" placeholder="Link zum Event, Treffpunkt, Ausrüstung …"></textarea>
</label>
<div class="row wrap">
<button type="submit" class="primary" id="event-submit">Eintragen</button>
<button type="button" id="event-cancel" hidden>Abbrechen</button>
</div>
</form>
</div>
</div>
<section class="span-all">
<div class="section-title">
<h2>Kommende Termine</h2>
</div>
<div id="upcoming" class="events-grid"></div>
</section>
</div>
</main>
<script type="module" src="/js/kalender.js"></script>
</body>
</html>