--- 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 '