UI-Patterns, die in allen Sims gleich aussehen + funktionieren sollen. Pflegt Atlas, hier dokumentiert.
Bei Fachbegriffen in Sim-Texten: kleines Popup mit Kurzerklärung + Link zum vollen Glossar-Eintrag. Erprobt seit Heli + Klima 2D/3D.
<span class="ggs-g" data-glossar="welthandel">Welthandel</span>
Regel: data-glossar-Attribut hält den key_slug des Glossar-Eintrags. Die CSS-Klasse ggs-g sorgt für die gestrichelte Unterlinie + Hover-Effekt + ist der Trigger für den JS-Handler.
// in App/pages/<sim>.php nach dem Live-Heartbeat-Script:
$glossarScript = '<script src="' . BASE_PATH . '/assets/js/glossar-tooltip.js" defer></script>'
. '<script>window.addEventListener("DOMContentLoaded",function(){'
. 'if(window.GlossarTooltip)GlossarTooltip.init({apiBase:' . json_encode(BASE_PATH . '/api') . ',moduleId:"<sim-slug>"});'
. '});</script>';
$html = str_replace('</body>', $glossarScript . "\n</body>", $html);
| Funktion | Zweck |
|---|---|
GlossarTooltip.init({apiBase, moduleId, fallback}) | Aktiviert das Pattern auf der Seite. Lädt die Glossar-Snippets pro Modul via API-Call /api/glossar.php?module=<moduleId>. |
GlossarTooltip.addFallback(key, {title, text}) | Für Begriffe ohne DB-Eintrag (oder bei Offline-Demo): lokales Snippet hinzufügen. |
GlossarTooltip.markup(label, slug) | Hilfsfunktion für dynamisch generierte HTML-Strings: liefert das fertige <span>-Markup. |
| Sim | Status | Pattern-Variante |
|---|---|---|
| Heli | ✓ aktiv | eigene heli-glossar-term-Klasse + lokale JS-Implementierung (Vorbild für das Pattern) |
| Klima 2D/3D | ✓ aktiv | eigene Klima-Variante |
| Weltküche | ✓ seit 2026-06-08 | Plattform-Standard via /assets/js/glossar-tooltip.js |
| Andere Sims | ⏳ ausstehend | Migration auf Plattform-Lib empfohlen (siehe „Migrations-Plan" unten) |
App/assets/js/glossar-tooltip.js (Stand 2026-06-08).
Pure Vanilla-JS, kein Framework, mobile-/iPad-tauglich. CSS wird automatisch injiziert.
App/pages/<sim>.php) das Script einbinden (Snippet oben)..heli-glossar-term, .klima-glossar-term usw.) durch ggs-g ersetzen.GlossarTooltip.addFallback() nachreichen.Atlas spielt das MP3 App/sims/heli/sounds/dev/atlas-fertig.mp3 ab — IMMER wenn der Ball bei Thomas liegt (Aufgabe fertig ODER warten auf Genehmigung). Details: memory/feedback_atlas_fertig_audio.md.
Jede Sim hat einen App/pages/<slug>.php-Wrapper:
WK_SESSION_ID, WK_STUDENT_NAME, WK_CLASS_ID)BASE_PATH als window.<SIM>_BASE + window.<SIM>_API_BASElive-client.js + glossar-tooltip.js vor </body>Cache-Control: no-store (game.html-Updates wirken sofort)preg_replace auf href="assets/..." und src="assets/..."Jede Sim definiert window.GGS_LIVE_STATE = function(){…} → liefert State-Snapshot für Lehrer-Live-Cockpit. Mindestens:
{
phase: 'browsing' | 'recipe' | 'researching' | …,
score: 0,
completed: 0, // erledigte Aufgaben/Gerichte
completedTotal: 30, // max
badgesEarned: 0,
badgesTotal: 10,
levelWon: false
}
Der Live-Heartbeat schickt das alle 4 s an /api/live.php.