Schulbuch komplett: 13 Kapitel, je 3 Versionen (Schüler / Leichte Sprache / Lehrperson)

- Gemeinsame Infrastruktur: assets/css/buch.css + pages/_partials/buch_helpers.php
  (Foto-Slots, Glossar-Tooltips, Nav mit 3-Modi-Umschalter ?leicht=1/?lehrer=1)
- Neu: Leichte-Sprache-Version in jedem Kapitel (inklusiver Unterricht):
  kurze Sätze, eine Aussage pro Zeile, Bindestrich-Komposita, einspaltig, größere Schrift
- 12 neue Kapitel: tourismusregion, kofferdetektiv (Themenfeld Reise/Transport/
  Flugverkehr/Nachhaltigkeit), busfahrt, logistik (Alpentransit), weltkueche, farmer,
  klima (2D+3D), fluss (Alpenrhein/Rhesi), energiemanager (Illwerke), heli, sonnensystem,
  eu-werkstatt — alle mit verifizierten Quellen, echten Sim-Mechanik-Kästen,
  D-A-CH-Lehrplan-Chips und 7 Foto-Slots mit konkreten Vorschlägen
- Pilot tourismustal: geschichte-1948 halb so groß (b-klein), Spielsprache-Fixes
- buch.php: 13 Kapitel, Status automatisch aus Dateiexistenz

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 17:12:19 +02:00
parent e9870843e8
commit f282c79a25
16 changed files with 8820 additions and 125 deletions
+65
View File
@@ -0,0 +1,65 @@
<?php
/**
* Schulbuch — gemeinsame Helfer für alle Kapitel (buch-<sim>.php)
* ---------------------------------------------------------------
* Verwendung im Kapitel:
* define('BUCH_SIM', 'tourismustal'); // Ordner für Foto-Slots
* require __DIR__ . '/_partials/buch_helpers.php';
*
* Stellt bereit:
* $MODE 'schueler' | 'leicht' | 'lehrer' (?leicht=1 / ?lehrer=1)
* $LEHRER, $LEICHT Bequemlichkeits-Booleans
* buchBild($slug, $vorschlag, $unterschrift, $klein) Foto-Slot
* g($slug, $label) Glossar-Tooltip
* buchNav($links) Kopfzeile mit Modus-Umschalter
*
* Fotos: echte Bilder unter assets/img/buch/<BUCH_SIM>/<slug>.jpg ablegen —
* Platzhalter tauschen sich automatisch aus. Bild-Exporte immer ohne
* EXIF/GPS (magick -strip).
*/
$MODE = 'schueler';
if (isset($_GET['lehrer']) && $_GET['lehrer'] === '1') $MODE = 'lehrer';
if (isset($_GET['leicht']) && $_GET['leicht'] === '1') $MODE = 'leicht';
$LEHRER = ($MODE === 'lehrer');
$LEICHT = ($MODE === 'leicht');
/** Foto-Slot: echtes Bild, sobald es existiert sonst Platzhalter mit Vorschlag. */
function buchBild(string $slug, string $vorschlag, string $unterschrift = '', bool $klein = false): string {
global $bp;
$cls = $klein ? 'b-foto b-klein' : 'b-foto';
foreach (['jpg', 'jpeg', 'webp', 'png'] as $ext) {
$rel = 'assets/img/buch/' . BUCH_SIM . "/{$slug}.{$ext}";
if (is_file(__DIR__ . '/../../' . $rel)) {
$cap = $unterschrift !== '' ? "<figcaption>{$unterschrift}</figcaption>" : '';
return "<figure class=\"{$cls}\"><img src=\"{$bp}/{$rel}\" alt=\"" . htmlspecialchars($unterschrift ?: $slug) . "\" loading=\"lazy\">{$cap}</figure>";
}
}
return "<div class=\"b-foto-platzhalter\"><span>📷</span><b>Foto gesucht</b><small>" . htmlspecialchars($vorschlag) . "</small><code>assets/img/buch/" . BUCH_SIM . "/{$slug}.jpg</code></div>";
}
/** Glossar-Begriff mit Tooltip */
function g(string $slug, string $label): string {
return "<span class=\"ggs-g\" data-glossar=\"{$slug}\">{$label}</span>";
}
/**
* Kopfzeile: Links + Modus-Umschalter.
* $links: Array [Label => href-relativ-zu-BASE_PATH], z. B.
* ['Modulseite' => 'modul-tourismustal', '🎮 Simulation starten' => 'tourismustal', ...]
*/
function buchNav(array $links): void {
global $bp, $MODE;
echo '<nav class="b-nav"><a href="' . $bp . '/buch">📖 Schulbuch</a>';
foreach ($links as $label => $href) {
echo ' · <a href="' . $bp . '/' . $href . '">' . $label . '</a>';
}
echo '<span class="spacer"></span>';
echo '<a class="b-mode ' . ($MODE === 'schueler' ? 'active' : '') . '" href="?">👩‍🎓 Schüler:innen</a>';
echo '<a class="b-mode ' . ($MODE === 'leicht' ? 'active' : '') . '" href="?leicht=1">🌱 Leichte Sprache</a>';
echo '<a class="b-mode ' . ($MODE === 'lehrer' ? 'active' : '') . '" href="?lehrer=1">👩‍🏫 Lehrperson</a>';
echo '</nav>';
if ($MODE === 'leicht') {
echo '<div class="b-leicht-hinweis">🌱 Dieses Heft ist in <b>Leichter Sprache</b>. Kurze Sätze. Einfache Wörter. Die Bilder und Zahlen sind die gleichen wie im großen Heft.</div>';
}
}