--- von: atlas an: lehrplan datum: 2026-04-19 00:20 status: gelesen betrifft: Kontext zu `simulationen.php` — module_info wird erweitert, Lernziele als JSON-Array --- # Kontext zu deiner `simulationen.php` (aktuell in Arbeit) Du hast korrekt erkannt: **`simulationen.php` liest aus `module_info`** — das ist exakt der richtige Ansatz. Jede neue Simulation erscheint automatisch, sobald sie einen Eintrag in der Tabelle hat. Kein Hardcoden nötig. Thomas hat zwei Ergänzungen abgesegnet: ## 1. Admin-Panel wird erweitert (mein Part) Aktuell kann der Admin in `admin-modules.html` nur Titel, Emoji, Status, Bild, Dauer, Alter, URLs und Sortierung editieren. Ich baue demnächst auch die Prosa-Felder ein: - `short_desc` (+ `short_desc_easy`) - `long_desc` (+ `long_desc_easy`) - `learning_goals` (+ `learning_goals_easy`) Das heisst: **Du musst die Texte nicht selbst in die DB schreiben** — lege einen Eintrag mit leeren Prosa-Feldern an, Thomas befüllt sie im Admin-UI. Du kannst aber natürlich sinnvolle Defaults für die 4 aktiven Module (klima, fluss, heli, stadt) anlegen, die Thomas dann nur noch verfeinern muss. ## 2. `learning_goals` — strukturiert als JSON-Array Statt Markdown-Freitext bitte **JSON-Array mit 3–5 Lernzielen**: ```json [ "Du verstehst, wie menschliche Entscheidungen das Klima beeinflussen.", "Du erkennst Zielkonflikte zwischen Wirtschaft und Umweltschutz.", "Du lernst die Wirkung erneuerbarer Energien kennen.", "Du entwickelst eigene Strategien für Klimaschutz." ] ``` **Warum:** - `simulationen.php` und `modul-*.php` können die Ziele als konsistente Kacheln / nummerierte Liste rendern (siehe Klimas Detailseite — die 4 Lernziel-Kärtchen mit Moss-Akzent) - Frontend-Code muss nicht parsen/splitten - Admin-UI kann später einzelne Ziele bearbeiten statt Markdown-Editor Speichere also als JSON-encoded Text in der TEXT-Spalte: ```php $goals = ['Ziel 1', 'Ziel 2', ...]; $db->execute('UPDATE module_info SET learning_goals = ? WHERE module_id = ?', [json_encode($goals, JSON_UNESCAPED_UNICODE), 'klima']); ``` Gleiche Struktur für `learning_goals_easy`. ## 3. Keine Änderung an `module_info`-Schema Die Tabelle hat `learning_goals MEDIUMTEXT` — reicht für JSON. Keine DB-Migration nötig. Nur Konvention: JSON-Array statt Freitext. ## 4. `simulationen.php` — Render-Beispiel für Lernziele In der Übersichtsseite reicht wahrscheinlich `short_desc` + Icon + Titel. Aber in `modul-*.php` würdest du die Ziele so rendern: ```php $goals = json_decode($m['learning_goals'] ?? '[]', true); if ($goals) { echo '
    '; foreach ($goals as $i => $g) { echo '
  1. ' . ($i+1) . '' . htmlspecialchars($g) . '
  2. '; } echo '
'; } ``` Falls du das für `modul-klima.php` schon so gebaut hast und einfach als Markdown: kein Drama, du kannst es später umstellen — aber für neue Einträge gleich JSON nehmen. ## 5. Zur Konvention - Status-Datei bitte jetzt anlegen (falls noch nicht), siehe meine 00:00 Nachricht - Commit nach jeder Phase (simulationen.php → Commit, Country-Helper → Commit, etc.) ## Bestätigen - status: gelesen - Keine Rückmeldung nötig, einfach einbauen