Trampolin: echte Trainingszeiten, Trainerinnen und Kontakt vom Hallen-Aushang

Drei Karten nach Zielgruppe (Kinder+Erwachsene Mo, Kinder ab 5 Do,
Kinder ab 10 und Fortgeschrittene Do) mit Tag/Zeit und Trainerteam je
Session, Schnupper-Hinweis auf "nach Absprache" umgestellt, Fußnote zu
den Schulferien. group-schedule bekommt zwei optionale Props
(contactEmail/contactPhone) fuer Tinas persoenlichen Kontakt in der
Kontaktkachel (tel:-Muster wie person-card, keine neue CSS-Regel).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HXDvgRDHQ9iGjs4KCXykEj
This commit is contained in:
2026-08-03 19:49:25 +02:00
parent 133c3f926e
commit d410c0bedf
3 changed files with 44 additions and 18 deletions

View File

@@ -6,6 +6,11 @@ declare(strict_types=1);
* Turn-Disziplin im einheitlichen Bento-Look (wie die Mannschaftsseiten). Props:
* $location array{venue, street?, zip?, city?} (optional) — Trainingsort + „Route planen"
* $lead string (optional) — Ansprechperson der Disziplin (Akzent-Kachel)
* $contactEmail string (optional) — persönliche E-Mail der Ansprechperson für die
* Kontakt-Kachel. Überschreibt die Abteilungs-Mail (club.email_turnen), falls
* gesetzt — genutzt, wenn eine Disziplin einen eigenen direkten Draht angibt.
* $contactPhone string (optional) — Telefonnummer der Ansprechperson (Anzeige-Form). Ergibt
* einen zusätzlichen tel:-Link in der Kontakt-Kachel. tel:-Href wie in person-card.php.
* $notice string (optional) — hervorgehobener Hinweis (z. B. Wartelisten-Status)
* $noticeTitle string (optional) — Überschrift dazu
* $noticeTone 'info' (Default) | 'stop' — Tonlage, siehe components/notice.php
@@ -42,6 +47,8 @@ $groupsTitle = $groupsTitle ?? 'Unsere Gruppen';
$groupsTitleHidden = $groupsTitleHidden ?? false;
$layout = ($layout ?? 'tabs') === 'stacked' ? 'stacked' : 'tabs';
$lead = $lead ?? '';
$contactEmail = $contactEmail ?? '';
$contactPhone = $contactPhone ?? '';
$notice = $notice ?? '';
$noticeTitle = $noticeTitle ?? '';
$noticeTone = $noticeTone ?? 'info';
@@ -55,7 +62,8 @@ if ($groups === []) {
}
$club = json_load('club');
$email = $club['email_turnen'] ?? ($club['email'] ?? '');
$email = $contactEmail !== '' ? $contactEmail : ($club['email_turnen'] ?? ($club['email'] ?? ''));
$telHref = $contactPhone !== '' ? 'tel:' . preg_replace('/[^+\d]/', '', $contactPhone) : '';
$single = count($groups) === 1;
$rich = false;
@@ -185,7 +193,7 @@ $soleNote = $single ? ($groups[0]['note'] ?? '') : '';
</article>
<?php endif; ?>
<?php if ($lead !== '' || $email !== ''): ?>
<?php if ($lead !== '' || $email !== '' || $telHref !== ''): ?>
<article class="bento__tile bento__tile--accent turnen-dash__contact">
<span class="bento__stat-label">Kontakt</span>
<?php if ($lead !== ''): ?>
@@ -193,6 +201,9 @@ $soleNote = $single ? ($groups[0]['note'] ?? '') : '';
<?php endif; ?>
<?php if ($email !== ''): ?>
<a class="turnen-dash__mail" href="mailto:<?= e($email) ?>"><?= icon('envelope', 'turnen-dash__mail-icon') ?>E-Mail schreiben</a>
<?php endif; ?>
<?php if ($telHref !== ''): ?>
<a class="turnen-dash__mail" href="<?= e($telHref) ?>"><?= icon('telephone', 'turnen-dash__mail-icon') ?><?= e($contactPhone) ?></a>
<?php endif; ?>
</article>
<?php endif; ?>

View File

@@ -22,11 +22,14 @@ $meta = [
component('hero', ['hero' => $d['hero']]);
component('group-schedule', [
'location' => $d['location'] ?? [],
'lead' => $d['lead'] ?? '',
'notice' => $d['notice'] ?? '',
'noticeTitle' => $d['notice_title'] ?? '',
'noticeTone' => $d['notice_tone'] ?? 'info',
'noticeIcon' => $d['notice_icon'] ?? 'info-circle',
'groups' => $d['groups'] ?? [],
'location' => $d['location'] ?? [],
'lead' => $d['lead'] ?? '',
'contactEmail' => $d['contact_email'] ?? '',
'contactPhone' => $d['contact_phone'] ?? '',
'notice' => $d['notice'] ?? '',
'noticeTitle' => $d['notice_title'] ?? '',
'noticeTone' => $d['notice_tone'] ?? 'info',
'noticeIcon' => $d['notice_icon'] ?? 'info-circle',
'groups' => $d['groups'] ?? [],
'footnote' => $d['footnote'] ?? '',
]);

View File

@@ -188,18 +188,30 @@
},
"location": { "venue": "Dreifachturnhalle der Carl-von-Linde-Realschule", "city": "Kulmbach" },
"lead": "Tina Kornatz",
"notice_icon": "calendar-event",
"notice_title": "Schnuppern ab September",
"notice": "Mit dem Schulbeginn im September können neue Kinder bei uns gerne zum Schnuppern vorbeikommen. Schreib uns davor einfach kurz eine Nachricht, dann sagen wir dir, wann es am besten passt.",
"contact_email": "tina.kornatz@gmx.de",
"contact_phone": "0163 6032410",
"footnote": "In den Schulferien findet kein Training statt.",
"notice_icon": "calendar-event",
"notice_title": "Schnuppern nach Absprache",
"notice": "Schnuppertraining ist bei uns jederzeit nach vorheriger Absprache möglich. Melde dich davor einfach kurz bei Tina, dann finden wir einen passenden Termin.",
"groups": [
{
"name": "Trampolinturnen",
"name": "Kinder und Erwachsene",
"sessions": [
{ "day": "Montag", "time": "17:30 / 18:0020:30 Uhr" },
{ "day": "Donnerstag", "time": "17:30 / 18:0020:30 Uhr" }
],
"note": "Der Einstieg erfolgt gestaffelt um 17:30 bzw. 18:00 Uhr.",
"trainers": []
{ "day": "Montag", "time": "17:3019:30 / 20:30 Uhr", "trainers": ["Sabine Hofmann"] }
]
},
{
"name": "Kinder ab 5 Jahren",
"sessions": [
{ "day": "Donnerstag", "time": "17:3019:00 Uhr", "trainers": ["Michaela Bollingerfehr"] }
]
},
{
"name": "Kinder ab 10 Jahren und Fortgeschrittene",
"sessions": [
{ "day": "Donnerstag", "time": "18:0020:30 Uhr", "trainers": ["Tina Kornatz", "Laura Ramming", "Christa Ramming"] }
]
}
]
},