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/app.php';
|
||||||
require_once __DIR__ . '/../../php/config/db.php';
|
require_once __DIR__ . '/../../php/config/db.php';
|
||||||
require_once __DIR__ . '/../../php/lib/EasyLang.php';
|
require_once __DIR__ . '/../../php/lib/EasyLang.php';
|
||||||
|
require_once __DIR__ . '/../../php/lib/Country.php';
|
||||||
|
|
||||||
$db = getDB();
|
$db = getDB();
|
||||||
|
|
||||||
@@ -108,6 +109,9 @@ $countryMeta = [
|
|||||||
'CH' => ['flag' => '🇨🇭', 'label' => 'Schweiz'],
|
'CH' => ['flag' => '🇨🇭', 'label' => 'Schweiz'],
|
||||||
'LI' => ['flag' => '🇱🇮', 'label' => 'Liechtenstein'],
|
'LI' => ['flag' => '🇱🇮', 'label' => 'Liechtenstein'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Default-Land aus Kaskade Session/Cookie/AT — als initialer Anker-Filter aktiv
|
||||||
|
$qCountry = Country::current();
|
||||||
?><!DOCTYPE html>
|
?><!DOCTYPE html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
@@ -578,9 +582,9 @@ $countryMeta = [
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="md-lehrplan-filters" id="md-filter-row">
|
<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): ?>
|
<?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']) ?>
|
<?= $info['flag'] ?> <?= esc($info['label']) ?>
|
||||||
</button>
|
</button>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
@@ -679,22 +683,47 @@ $countryMeta = [
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script>
|
<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 () {
|
(function () {
|
||||||
const filterRow = document.getElementById('md-filter-row');
|
const filterRow = document.getElementById('md-filter-row');
|
||||||
if (!filterRow) return;
|
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) => {
|
filterRow.addEventListener('click', (e) => {
|
||||||
const btn = e.target.closest('.md-chip');
|
const btn = e.target.closest('.md-chip');
|
||||||
if (!btn) return;
|
if (!btn) return;
|
||||||
filterRow.querySelectorAll('.md-chip').forEach(c => c.classList.remove('active'));
|
filterRow.querySelectorAll('.md-chip').forEach(c => c.classList.remove('active'));
|
||||||
btn.classList.add('active');
|
btn.classList.add('active');
|
||||||
const country = btn.dataset.country;
|
applyFilter(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);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 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>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -681,19 +681,18 @@ $categoryMeta = [
|
|||||||
// Anker-Filter: Land + Typ
|
// Anker-Filter: Land + Typ
|
||||||
k.querySelectorAll('.lp-anchor').forEach(a => {
|
k.querySelectorAll('.lp-anchor').forEach(a => {
|
||||||
let hide = false;
|
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') {
|
if (state.country && state.country !== 'ALL') {
|
||||||
const anchorCountry = a.dataset.country;
|
const anchorCountry = a.dataset.country;
|
||||||
const type = a.dataset.anchorType;
|
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 (type === 'fach') {
|
||||||
if (anchorCountry && anchorCountry !== state.country) hide = true;
|
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;
|
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
|
- Module-Inventar: 14 Module (drei neue durch Atlas/Modul-Instanzen
|
||||||
hinzugekommen: farmer beta, sonnensystem beta, busfahrt geplant)
|
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)
|
### Vier Module + Heli-Vertiefung (2026-05-03 nachmittags)
|
||||||
|
|
||||||
- Neue Kompetenz `landwirtschaft-klimazonen` (Köppen-Geiger,
|
- Neue Kompetenz `landwirtschaft-klimazonen` (Köppen-Geiger,
|
||||||
|
|||||||
Reference in New Issue
Block a user