Schulbuch: einheitliches App-Menü + rollenabhängiger Modus

- Kapitel-Kopf: alte Links (Modulseite/Simulation/Glossar/Lehrplan) raus, stattdessen
  einheitliches App-Menü je Rolle (Schüler: Module/Erfolge/Schulbuch/Profil; Lehrer:
  Cockpit/Schulbuch; öffentlich: Simulationen/Schulbuch), Schulbuch aktiv
- Modus je Rolle: Schüler:in → Schüler:innen/Leichte Sprache (Default Schüler:innen,
  Lehreransicht gesperrt, auch bei ?lehrer=1); Lehrperson → +Lehreransicht (Default Lehrperson)
- teacher.html: Menüpunkt "📖 Schulbuch" ergänzt
- buch.php-Übersicht: gleiches rollen-Menü statt "← Zu den Simulationen"

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 02:53:23 +02:00
parent 685b4700f8
commit c5307017e4
4 changed files with 58 additions and 14 deletions
+37 -13
View File
@@ -18,9 +18,19 @@
* EXIF/GPS (magick -strip).
*/
$MODE = 'schueler';
if (isset($_GET['lehrer']) && $_GET['lehrer'] === '1') $MODE = 'lehrer';
if (isset($_GET['leicht']) && $_GET['leicht'] === '1') $MODE = 'leicht';
require_once __DIR__ . '/../../php/lib/Session.php';
Session::start();
$IS_TEACHER = (Session::teacherId() !== null);
$IS_STUDENT = (Session::studentId() !== null);
// Modus je Rolle. Lehrer-Ansicht nur für Lehrpersonen erreichbar.
// Buttons: ?schueler=1 / ?leicht=1 / ?lehrer=1. Ohne Parameter: Default je Rolle
// (Lehrperson → Lehreransicht, sonst → Schüler:innen).
if (isset($_GET['leicht'])) $MODE = 'leicht';
elseif (isset($_GET['lehrer'])) $MODE = 'lehrer';
elseif (isset($_GET['schueler'])) $MODE = 'schueler';
else $MODE = $IS_TEACHER ? 'lehrer' : 'schueler';
if (!$IS_TEACHER && $MODE === 'lehrer') $MODE = 'schueler'; // Sperre für Nicht-Lehrpersonen
$LEHRER = ($MODE === 'lehrer');
$LEICHT = ($MODE === 'leicht');
@@ -54,20 +64,34 @@ function g(string $slug, string $label): string {
}
/**
* Kopfzeile: Links + Modus-Umschalter.
* $links: Array [Label => href-relativ-zu-BASE_PATH], z. B.
* ['Modulseite' => 'modul-tourismustal', '🎮 Simulation starten' => 'tourismustal', ...]
* Kopfzeile: einheitliches App-Menü (rollenabhängig) + Modus-Umschalter.
* Der $links-Parameter wird nicht mehr verwendet (die alten Kapitel-Links —
* Modulseite/Simulation/Glossar/Lehrplan — gehören nicht ins Schulbuch); die
* Signatur bleibt, damit die Kapitel unverändert `buchNav([...])` aufrufen können.
*/
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>';
function buchNav(array $links = []): void {
global $bp, $MODE, $IS_TEACHER, $IS_STUDENT;
echo '<nav class="b-nav">';
// App-Menü passend zur Rolle (bleibt oben stehen, wie auf der Schüler-/Lehrerseite)
if ($IS_TEACHER) {
echo '<a href="' . $bp . '/teacher.html">📊 Lehrer-Cockpit</a>';
echo ' · <span class="b-here">📖 Schulbuch</span>';
} elseif ($IS_STUDENT) {
echo '<a href="' . $bp . '/schueler.html">Module</a>';
echo ' · <a href="' . $bp . '/schueler.html#achievements">Erfolge</a>';
echo ' · <span class="b-here">Schulbuch</span>';
echo ' · <a href="' . $bp . '/profil.html">Profil</a>';
} else {
echo '<a href="' . $bp . '/simulationen">🎮 Simulationen</a>';
echo ' · <span class="b-here">📖 Schulbuch</span>';
}
echo '<span class="spacer"></span>';
echo '<a class="b-mode ' . ($MODE === 'schueler' ? 'active' : '') . '" href="?">👩‍🎓 Schüler:innen</a>';
// Modus-Umschalter — Lehreransicht nur für Lehrpersonen
echo '<a class="b-mode ' . ($MODE === 'schueler' ? 'active' : '') . '" href="?schueler=1">👩‍🎓 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>';
if ($IS_TEACHER) {
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>';