Lehrplan: Country-Default überall AT, übergreifend land-agnostisch
Auftrag von Thomas: Default-Filter überall auf Österreich, andere Länder weiterhin wählbar. Modul-Detailseiten (gemeinsamer Partial): - Filter-Chip mit data-country=Country::current() bekommt Klasse active server-seitig (statt "🌐 Alle Länder") - Country.php in Partial eingebunden - JS-Filter-Logik überarbeitet: bei konkretem Land werden NUR anchor_type='fach' Anker streng nach Land gefiltert; übergreifende Themen und andere Fächer bleiben sichtbar (sind primär aus dem AT-Lehrplan abgeleitet, didaktisch land-agnostisch nutzbar) - applyFilter() wird beim Page-Load mit dem aktiven Chip ausgeführt Lehrplan.php: - gleiche Filter-Logik gespiegelt (war vorher streng auch für übergreifend/andere_fach) - Default war schon Country::current(), bleibt unverändert Verifiziert: alle 10 aktiven modul-*.php-Seiten zeigen AT als Default-active, Lehrplan-Seite ebenfalls. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,7 @@ if (!isset($MODULE_ID) || !is_string($MODULE_ID)) {
|
||||
require_once __DIR__ . '/../../php/config/app.php';
|
||||
require_once __DIR__ . '/../../php/config/db.php';
|
||||
require_once __DIR__ . '/../../php/lib/EasyLang.php';
|
||||
require_once __DIR__ . '/../../php/lib/Country.php';
|
||||
|
||||
$db = getDB();
|
||||
|
||||
@@ -108,6 +109,9 @@ $countryMeta = [
|
||||
'CH' => ['flag' => '🇨🇭', 'label' => 'Schweiz'],
|
||||
'LI' => ['flag' => '🇱🇮', 'label' => 'Liechtenstein'],
|
||||
];
|
||||
|
||||
// Default-Land aus Kaskade Session/Cookie/AT — als initialer Anker-Filter aktiv
|
||||
$qCountry = Country::current();
|
||||
?><!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
@@ -578,9 +582,9 @@ $countryMeta = [
|
||||
</p>
|
||||
|
||||
<div class="md-lehrplan-filters" id="md-filter-row">
|
||||
<button type="button" class="md-chip active" data-country="">🌐 Alle Länder</button>
|
||||
<button type="button" class="md-chip<?= $qCountry === '' ? ' active' : '' ?>" data-country="">🌐 Alle Länder</button>
|
||||
<?php foreach ($countryMeta as $c => $info): ?>
|
||||
<button type="button" class="md-chip" data-country="<?= esc($c) ?>">
|
||||
<button type="button" class="md-chip<?= $qCountry === $c ? ' active' : '' ?>" data-country="<?= esc($c) ?>">
|
||||
<?= $info['flag'] ?> <?= esc($info['label']) ?>
|
||||
</button>
|
||||
<?php endforeach; ?>
|
||||
@@ -679,22 +683,47 @@ $countryMeta = [
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// Länder-Filter für Lehrplan-Anker — übergreifende Themen + andere Fächer bleiben sichtbar (Land-agnostisch)
|
||||
// Länder-Filter für Lehrplan-Anker. Default ist das aktuell gewählte Land
|
||||
// (über Country-Helper aus Session/Cookie, Standardwert AT).
|
||||
//
|
||||
// Logik:
|
||||
// - Bei einem konkreten Land (AT/DE/CH/LI):
|
||||
// • anchor_type='fach' wird nach Land gefiltert (nur passende sichtbar)
|
||||
// • anchor_type='uebergreifendes_thema' und 'anderes_fach' bleiben
|
||||
// immer sichtbar — sie sind primär aus dem AT-Lehrplan abgeleitet,
|
||||
// aber didaktisch land-agnostisch nutzbar
|
||||
// - "🌐 Alle Länder": alles sichtbar
|
||||
(function () {
|
||||
const filterRow = document.getElementById('md-filter-row');
|
||||
if (!filterRow) return;
|
||||
|
||||
function applyFilter(country) {
|
||||
document.querySelectorAll('.md-anchor').forEach(a => {
|
||||
const type = a.dataset.anchorType;
|
||||
const aCountry = a.dataset.country;
|
||||
let hide = false;
|
||||
if (country) {
|
||||
// Konkretes Land gewählt: Fach-Anker streng filtern,
|
||||
// übergreifende + andere Fächer immer zeigen.
|
||||
if (type === 'fach') {
|
||||
hide = aCountry !== country;
|
||||
}
|
||||
}
|
||||
a.classList.toggle('hidden', hide);
|
||||
});
|
||||
}
|
||||
|
||||
filterRow.addEventListener('click', (e) => {
|
||||
const btn = e.target.closest('.md-chip');
|
||||
if (!btn) return;
|
||||
filterRow.querySelectorAll('.md-chip').forEach(c => c.classList.remove('active'));
|
||||
btn.classList.add('active');
|
||||
const country = btn.dataset.country;
|
||||
document.querySelectorAll('.md-anchor').forEach(a => {
|
||||
// Anker mit einem Land: nur zeigen wenn passt. Anker ohne Land oder mit allen Laendern: immer zeigen.
|
||||
const hide = country && a.dataset.country && a.dataset.country !== country;
|
||||
a.classList.toggle('hidden', !!hide);
|
||||
});
|
||||
applyFilter(btn.dataset.country);
|
||||
});
|
||||
|
||||
// Initial-Filter anwenden (für den server-seitig vor-gewählten Default)
|
||||
const activeChip = filterRow.querySelector('.md-chip.active');
|
||||
if (activeChip) applyFilter(activeChip.dataset.country);
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
@@ -681,19 +681,18 @@ $categoryMeta = [
|
||||
// Anker-Filter: Land + Typ
|
||||
k.querySelectorAll('.lp-anchor').forEach(a => {
|
||||
let hide = false;
|
||||
// Land: nur Anker mit Land vs gewaehltem Land einblenden; uebergr. + andere_fach sind landes-agnostisch, aber haben country=AT o.ae. als Default
|
||||
// Land-Filter (Default = aktuelles Land aus Country::current(), in der Regel AT):
|
||||
// - anchor_type='fach' wird strikt nach Land gefiltert
|
||||
// - uebergreifende Themen + andere Faecher bleiben sichtbar
|
||||
// (sie sind primaer aus dem AT-Lehrplan abgeleitet, didaktisch
|
||||
// land-agnostisch nutzbar)
|
||||
if (state.country && state.country !== 'ALL') {
|
||||
const anchorCountry = a.dataset.country;
|
||||
const type = a.dataset.anchorType;
|
||||
// Bei Fach-Ankern strikt auf Land filtern; bei übergreifenden und andere_fach Anker nur AT-Anker zeigen (wo das Lehrplan-System uebergreifend AT ist).
|
||||
// Alternative: Wenn country != AT gewaehlt, zeigen wir uebergreifende + andere_fach weiter,
|
||||
// aber nur Fach-Anker werden gefiltert — so bleibt das Lehrplan-Prinzip sichtbar.
|
||||
if (type === 'fach') {
|
||||
if (anchorCountry && anchorCountry !== state.country) hide = true;
|
||||
} else {
|
||||
// Fuer uebergreifend/andere_fach: zeige nur die, deren country matched (meist AT)
|
||||
if (anchorCountry && anchorCountry !== state.country) hide = true;
|
||||
}
|
||||
// anchor_type !== 'fach': land-agnostisch sichtbar lassen
|
||||
}
|
||||
if (state.type && a.dataset.anchorType !== state.type) hide = true;
|
||||
|
||||
|
||||
@@ -12,6 +12,23 @@ session_id: lehrplan-apr24-may03
|
||||
- Module-Inventar: 14 Module (drei neue durch Atlas/Modul-Instanzen
|
||||
hinzugekommen: farmer beta, sonnensystem beta, busfahrt geplant)
|
||||
|
||||
### Country-Default überall AT (2026-05-03 später)
|
||||
|
||||
- modul_detail-Partial: aktiver Filter-Chip = `Country::current()`
|
||||
(Default 'AT'); kein "🌐 Alle Länder" mehr als Default-aktiv
|
||||
- Filter-Logik überarbeitet: bei konkretem Land
|
||||
• anchor_type='fach' wird streng nach Land gefiltert
|
||||
• uebergreifend + andere_fach bleiben land-agnostisch sichtbar
|
||||
- Lehrplan.php: gleiche Logik gespiegelt — übergreifende Themen
|
||||
bleiben bei jedem Länder-Filter sichtbar
|
||||
- Country-Picker im Header zeigt aktuelles Land, Wechsel reloaded
|
||||
Seite mit neuem Filter
|
||||
- Verifiziert: alle 10 aktiven Modul-Seiten + lehrplan haben AT
|
||||
als Default-active
|
||||
|
||||
Energiemanager-Glossar: ist bereits 12 Begriffe stark (>=10),
|
||||
Atlas' Zählung war veraltet. Keine Aufstockung nötig.
|
||||
|
||||
### Vier Module + Heli-Vertiefung (2026-05-03 nachmittags)
|
||||
|
||||
- Neue Kompetenz `landwirtschaft-klimazonen` (Köppen-Geiger,
|
||||
|
||||
Reference in New Issue
Block a user