---
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 '<ol class="md-goals">';
    foreach ($goals as $i => $g) {
        echo '<li><span class="md-goal-num">' . ($i+1) . '</span>'
           . htmlspecialchars($g) . '</li>';
    }
    echo '</ol>';
}
```

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
