Compare commits

..

2 Commits

Author SHA1 Message Date
fs
f3f004d13e Neues Trampolin-Kachelbild nachgezogen
Die Datei lag geändert im Arbeitsverzeichnis (640×381 statt 640×425, 53 statt
128 KB) und war das einzige Stück, das noch fehlte: die zugehörige Änderung an
app/pages/turnen.php (widths auf [640], Kommentar zur WhatsApp-Quelle) und das
Entfernen der 1000er und 1600er Variante stecken bereits in 592acf0, wo sie
durch mein `git add app/pages/turnen*.php` mitgekommen sind. Ohne diesen Commit
zeigte das Repo das alte Bild bei neuer Deklaration.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:40:25 +02:00
fs
7bbf783562 Flamingos zum Wettkampfturnen, Inhalte gegen die alte Seite abgeglichen
Die Flamingos sind organisatorisch vom Kinderturnen zum Wettkampfturnen
gewechselt. Felix hat dazu die Fassung geschickt, die die Turnabteilung selbst
auf der alten Seite gepflegt hatte — dabei kamen sieben Abweichungen heraus,
alle korrigiert:

- Die zweite Gruppe heißt "Leistungsturnen", nicht "Wettkampfturnen" (so hieß
  bei uns die Gruppe wie die Disziplin).
- Reihenfolge: Flamingos zuerst, Leistungsturnen danach.
- Den Flamingos fehlte eine Trainingszeit: Montag gibt es ZWEI Blöcke
  (18:00–19:00 und 19:00–20:00), wir hatten nur den ersten.
- Ansprechpersonen sind pro Gruppe verschieden (Flamingos: Theresa Diener,
  Leistungsturnen: Franziska Trotzke). Dafür ist `contact` neu an einer Gruppe.
  Die Kontakt-Kachel oben kann nur EINE Person nennen und wäre für die andere
  Gruppe falsch — deshalb ist `lead` bei dieser Disziplin jetzt leer, die Kachel
  trägt nur noch die Abteilungs-Mail. So war es auf der alten Seite auch: dort
  gab es keine Ansprechperson für die Disziplin, nur je Gruppe.
- Theresa Diener steht im Trainerteam vorn und ohne Stern (bei uns hinten).
- Intro, Trainingsinhalte, Wettkämpfe und der Hinweis waren gekürzt; jetzt im
  Wortlaut der Abteilung. Den Gedankenstrich in "(Kür modifiziert –
  Leistungsklasse 3)" ersetzt ein Komma (Sprache & Ton).
- Die Fußnote sagte "* So im Trainingsplan der Abteilung gekennzeichnet" — eine
  Verlegenheitsformulierung, weil wir die Bedeutung nicht kannten. Die alte
  Seite schreibt "* = ÜBUNGSLEITER", also jetzt "* Übungsleiterinnen und
  Übungsleiter" (Paarform, Haus-Stil).

`level` bleibt "Turnen · fortgeschritten" ohne "Alter nach Absprache" — das
hatte Felix am 31.07.2026 ausdrücklich aus dem Chip genommen.

Zwei Folgen, die sonst still kaputtgegangen wären: die Seite hatte eine einzige
Gruppe ohne Beschreibung und lief damit im Einzelgruppen-Layout. Mit zwei
Gruppen, davon eine mit Beschreibung, rendert group-schedule eine Tab-Leiste —
die braucht group-tabs.js, das die Seite nicht lud (tote Tab-Knöpfe). Und drei
Flamingos-Trainerinnen tragen ein Sternchen, die erklärende Fußnote wurde auf
dieser Seite nicht übergeben (drei unerklärte Sterne).

Geprüft: Tabs "Flamingos" und "Leistungsturnen", Skript geladen, Fußnote da,
Flamingos auf /turnen/eltern-kind-turnen nicht mehr erwähnt, kein Überlauf bei
390px, alle sechs Turn-Seiten 200.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:40:25 +02:00
4 changed files with 47 additions and 24 deletions

View File

@@ -14,8 +14,14 @@ declare(strict_types=1);
* contact-form.php über dem Formular benutzt, damit derselbe Hinweis an * contact-form.php über dem Formular benutzt, damit derselbe Hinweis an
* beiden Orten gleich aussieht und nur EINMAL in data/turnen.json steht. * beiden Orten gleich aussieht und nur EINMAL in data/turnen.json steht.
* $groups array von Gruppen: * $groups array von Gruppen:
* { name, level?, intro?, details?:[{heading,text}], recommendation?, note?, * { name, level?, contact?, intro?, details?:[{heading,text}], recommendation?,
* trainers?:[…], sessions:[{ label?, day, time, note?, trainers?:[…] }] } * note?, trainers?:[…], sessions:[{ label?, day, time, note?, trainers?:[…] }] }
* contact = Ansprechperson NUR dieser Gruppe. Braucht es, sobald eine Disziplin
* mehrere Gruppen mit verschiedenen Ansprechpersonen hat (Wettkampfturnen:
* Flamingos → Theresa Diener, Leistungsturnen → Franziska Trotzke) — die
* Kontakt-Kachel oben kann nur EINE nennen und wäre für die andere falsch.
* Beschriftet als „Kontakt" wie die Kachel, nicht als „Ansprechpartner":
* das Label kennt das Geschlecht der Person nicht (Haus-Stil Paarformen).
* $footnote string (optional) — Erläuterung (z. B. zur Sternchen-Kennzeichnung) * $footnote string (optional) — Erläuterung (z. B. zur Sternchen-Kennzeichnung)
* $groupsTitle string (optional, Default 'Unsere Gruppen') * $groupsTitle string (optional, Default 'Unsere Gruppen')
* $anchor string (optional, Default 'training') * $anchor string (optional, Default 'training')
@@ -192,6 +198,9 @@ $soleNote = $single ? ($groups[0]['note'] ?? '') : '';
<ul class="schedule-list"> <ul class="schedule-list">
<?php foreach ($g['sessions'] as $s): $renderSession($s); endforeach; ?> <?php foreach ($g['sessions'] as $s): $renderSession($s); endforeach; ?>
</ul> </ul>
<?php if (!empty($g['contact'])): ?>
<p class="group-card__trainers"><span class="schedule-row__trainers-label">Kontakt:</span> <?= e($g['contact']) ?></p>
<?php endif; ?>
<?php if (!empty($g['trainers'])): ?> <?php if (!empty($g['trainers'])): ?>
<p class="group-card__trainers"><span class="schedule-row__trainers-label">Übungsleitung:</span> <?= e(implode(', ', $g['trainers'])) ?></p> <p class="group-card__trainers"><span class="schedule-row__trainers-label">Übungsleitung:</span> <?= e(implode(', ', $g['trainers'])) ?></p>
<?php endif; ?> <?php endif; ?>

View File

@@ -4,15 +4,25 @@ declare(strict_types=1);
/** /**
* Turnen → Wettkampfturnen. Inhalt: data/turnen.json (disciplines.wettkampfturnen). * Turnen → Wettkampfturnen. Inhalt: data/turnen.json (disciplines.wettkampfturnen).
* Struktur: Hero → Gruppen/Trainingszeiten → CTA. * Struktur: Hero → Gruppen/Trainingszeiten.
*
* Zwei Gruppen: das Wettkampftraining selbst und die Flamingos, die am 31.07.2026 vom
* Kinderturnen hierher gezogen sind. Dadurch läuft die Seite nicht mehr im
* Einzelgruppen-Layout (Trainingszeiten als Kachel im Dashboard), sondern zeigt die
* Gruppen darunter als Tabs — deshalb group-tabs.js und die Sternchen-Fußnote.
*/ */
$slug = 'turnen/wettkampfturnen'; $slug = 'turnen/wettkampfturnen';
$d = json_load('turnen')['disciplines']['wettkampfturnen']; $data = json_load('turnen');
$d = $data['disciplines']['wettkampfturnen'];
$meta = [ $meta = [
'title' => 'Wettkampfturnen in Kulmbach', 'title' => 'Wettkampfturnen in Kulmbach',
'description' => 'Leistungsorientiertes Gerätturnen mit Training und Wettkämpfen: Wettkampfturnen beim TSV 08 Kulmbach im Mäximum Gym. Trainingszeiten und Kontakt im Überblick.', 'description' => 'Leistungsorientiertes Gerätturnen mit Training und Wettkämpfen: Wettkampfturnen beim TSV 08 Kulmbach im Mäximum Gym. Trainingszeiten und Kontakt im Überblick.',
'og_image' => 'img/pages/vereinsgelaende-1600.jpg', 'og_image' => 'img/pages/vereinsgelaende-1600.jpg',
// Seit die Flamingos hier stehen, sind es zwei Gruppen, davon eine mit
// Beschreibung — group-schedule rendert dann eine Tab-Leiste, und die braucht
// dieses Skript. Ohne es wären die Tab-Knöpfe tote Schaltflächen.
'scripts' => ['group-tabs.js'],
'schema' => page_schema([ 'schema' => page_schema([
['name' => 'Startseite', 'slug' => ''], ['name' => 'Startseite', 'slug' => ''],
['name' => 'Turnen', 'slug' => 'turnen'], ['name' => 'Turnen', 'slug' => 'turnen'],
@@ -25,4 +35,7 @@ component('group-schedule', [
'location' => $d['location'] ?? [], 'location' => $d['location'] ?? [],
'lead' => $d['lead'] ?? '', 'lead' => $d['lead'] ?? '',
'groups' => $d['groups'] ?? [], 'groups' => $d['groups'] ?? [],
// Drei Flamingos-Trainerinnen tragen ein Sternchen. Ohne die Fußnote stünden
// hier drei unerklärte Sterne auf der Seite.
'footnote' => $data['footnote'] ?? '',
]); ]);

View File

@@ -67,7 +67,7 @@
"text": "Schreib direkt der Turnabteilung. Sag uns, welche Gruppe dich interessiert, dann prüfen wir die Platzverfügbarkeit und melden uns bei dir." "text": "Schreib direkt der Turnabteilung. Sag uns, welche Gruppe dich interessiert, dann prüfen wir die Platzverfügbarkeit und melden uns bei dir."
} }
}, },
"footnote": "* So im Trainingsplan der Abteilung gekennzeichnet.", "footnote": "* Übungsleiterinnen und Übungsleiter.",
"disciplines": { "disciplines": {
"erwachsenenturnen": { "erwachsenenturnen": {
"hero": { "hero": {
@@ -151,21 +151,6 @@
{ "label": "Tiger · 810 Jahre", "day": "Dienstag", "time": "18:3019:30 Uhr", "note": "in geraden Kalenderwochen" }, { "label": "Tiger · 810 Jahre", "day": "Dienstag", "time": "18:3019:30 Uhr", "note": "in geraden Kalenderwochen" },
{ "label": "Hühner · ab 11 Jahre", "day": "Dienstag", "time": "19:3020:30 Uhr", "note": "in geraden Kalenderwochen" } { "label": "Hühner · ab 11 Jahre", "day": "Dienstag", "time": "19:3020:30 Uhr", "note": "in geraden Kalenderwochen" }
] ]
},
{
"name": "Flamingos",
"level": "Turnen · fortgeschritten",
"intro": "In unserer Gruppe für fortgeschrittenes Turnen bauen wir auf bereits erlernten turnerischen Fähigkeiten auf. Das Training orientiert sich an den Anforderungen der LK3 (Kür modifiziert, Leistungsklasse 3).",
"details": [
{ "heading": "Trainingsinhalte", "text": "Je nach Voraussetzung erlernen wir Elemente wie Radwende, Flick-Flack und Salto (Boden), Kippen und Felge vorlings (Barren), Überschläge (Sprung) sowie Räder und Bogengänge (Balken)." },
{ "heading": "Wettkämpfe & Teamgeist", "text": "Wir nehmen vorzugsweise an Mannschaftswettkämpfen teil, um den Teamgeist zu fördern und die individuelle Leistung als Teil eines gemeinsamen Erfolgs zu erleben." }
],
"recommendation": "Eine Teilnahme erfolgt ausschließlich auf Empfehlung und Einladung durch unser Trainerteam. Wir gleichen das Leistungsniveau regelmäßig ab, um für jedes Kind die optimale Gruppe zu finden.",
"trainers": ["Christa Knarr*", "Maxi Roßberg*", "Annelie Frisque*", "Theresa Diener", "Lea Schramm", "Charlyn Simon", "Lia Buchwald"],
"sessions": [
{ "day": "Montag", "time": "18:0019:00 Uhr" },
{ "day": "Mittwoch", "time": "18:0020:00 Uhr" }
]
} }
] ]
}, },
@@ -229,18 +214,34 @@
"ctas": [] "ctas": []
}, },
"location": { "venue": "Mäximum Gym", "street": "Thurnauer Str. 51", "zip": "95326", "city": "Kulmbach" }, "location": { "venue": "Mäximum Gym", "street": "Thurnauer Str. 51", "zip": "95326", "city": "Kulmbach" },
"lead": "Franziska Trotzke",
"groups": [ "groups": [
{ {
"name": "Wettkampfturnen", "name": "Flamingos",
"level": "Turnen · fortgeschritten",
"contact": "Theresa Diener",
"intro": "In unserer Gruppe für fortgeschrittenes Turnen bauen wir auf bereits erlernten turnerischen Fähigkeiten auf und entwickeln diese gezielt weiter. Das Training orientiert sich an den Anforderungen der LK3 (Kür modifiziert, Leistungsklasse 3). Trotz des höheren Leistungsniveaus stehen der Spaß am Sport und persönliche Erfolgserlebnisse durch das Erlernen neuer Elemente stets im Vordergrund.",
"details": [
{ "heading": "Trainingsinhalte", "text": "Je nach individuellen Voraussetzungen erlernen und trainieren wir Elemente wie Radwende, Flick-Flack und Salto (Boden), Kippen und Felge vorlings (Barren), Überschläge (Sprung) sowie Räder, Bogengänge und verschiedene Sprünge am Balken." },
{ "heading": "Wettkämpfe & Teamgeist", "text": "Gelegentlich nehmen wir mit einem Teil unserer Turnerinnen an Wettkämpfen teil. Dabei bevorzugen wir Mannschaftswettkämpfe, um den Teamgeist zu stärken und die individuelle Leistung als Teil eines gemeinsamen Erfolgs zu erleben." }
],
"recommendation": "Eine Teilnahme erfolgt ausschließlich auf Empfehlung und Einladung durch unser Trainerteam. Um allen Turnerinnen ein passendes Trainingsumfeld zu bieten, gleichen wir das Leistungsniveau regelmäßig ab und sprechen bei Bedarf Empfehlungen für eine andere Trainingsgruppe aus.",
"trainers": ["Theresa Diener", "Maxi Roßberg*", "Christa Knarr*", "Annelie Frisque*", "Lea Schramm", "Charlyn Simon", "Lia Buchwald"],
"sessions": [
{ "day": "Montag", "time": "18:0019:00 Uhr" },
{ "day": "Montag", "time": "19:0020:00 Uhr" },
{ "day": "Mittwoch", "time": "18:0020:00 Uhr" }
]
},
{
"name": "Leistungsturnen",
"contact": "Franziska Trotzke",
"sessions": [ "sessions": [
{ "day": "Montag", "time": "15:0018:00 Uhr" }, { "day": "Montag", "time": "15:0018:00 Uhr" },
{ "day": "Mittwoch", "time": "15:0018:00 Uhr" }, { "day": "Mittwoch", "time": "15:0018:00 Uhr" },
{ "day": "Donnerstag", "time": "16:3018:30 Uhr" }, { "day": "Donnerstag", "time": "16:3018:30 Uhr" },
{ "day": "Freitag", "time": "14:0017:00 Uhr" }, { "day": "Freitag", "time": "14:0017:00 Uhr" },
{ "day": "Samstag", "time": "09:0013:00 Uhr" } { "day": "Samstag", "time": "09:0013:00 Uhr" }
], ]
"trainers": []
} }
] ]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 51 KiB