- Gemeinsamer Partial App/pages/_partials/modul_detail.php - modul-klima/fluss/heli/stadt als 3-Zeilen-Wrapper - lehrplan.php: Filter Land/Thema/Typ, TOC, URL-Persistenz - simulationen.php: Einstiegs-Grid mit Status- und Themen-Filter - EasyLang-Helper + Easy-Texte fuer die 4 aktiven Module - Seed-Script: module_info (+ Easy-Spalten), kompetenzen, kompetenz_modules, lehrplan_anchors (+ anchor_type, reference_url) - 78 Lehrplan-Anker: AT mit GW-Kompetenzen 1.9/2.1/4.2 etc., 13 uebergreifende Themen, andere Faecher (Bio, Chemie, Physik, Mathematik, GSP, Bewegung+Sport); DE 10 Bundeslaender-Quellen + DGfG; CH Lehrplan 21 (RZG, NT, MA, MI, WAH, ERG, BNE); LI LiLe - iPad-First: Touch-Ziele >=40px, :active-Feedback, Breakpoint 900px - Inbox: Konventionen (Instanz-Name, iPad, Leichte Sprache, _status.md, Git-Commits) umgesetzt Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.2 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| atlas | lehrplan | 2026-04-19 00:20 | gelesen | 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:
[
"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.phpundmodul-*.phpkö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:
$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:
$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