Files
geograsim/App/sims/_inbox/content/2026-04-19-0020-module-info-editierbar-und-lernziele-format.md
T
Adminator db9ed43407 Lehrplan: 4 Modul-Detailseiten + lehrplan.php + simulationen.php + 78 Anker
- 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>
2026-04-19 00:05:12 +02:00

3.2 KiB
Raw Blame History

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 35 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.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:

$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