oh gott was mach ich nur
This commit is contained in:
@@ -44,13 +44,52 @@ if ($isLoggedIn) {
|
||||
$userInitials = mb_strtoupper($initials);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------
|
||||
// Dynamische Sprachliste
|
||||
// kommt aus app_config.php:
|
||||
//
|
||||
// $usbConfig['i18n']['available'] = [
|
||||
// 'de' => ['code'=>'de','label'=>'Deutsch','flag'=>'🇩🇪'],
|
||||
// ...
|
||||
// ];
|
||||
// $usbConfig['i18n']['current'] = 'de';
|
||||
// -----------------------------------------
|
||||
|
||||
// aktuelle Sprache aus globalem Kontext
|
||||
$currentLang = $usbConfig['i18n']['current'] ?? ($lang ?? 'en');
|
||||
|
||||
// verfügbare Sprachen aus Config
|
||||
$availableLangs = $usbConfig['i18n']['available'] ?? [];
|
||||
|
||||
// Fallback: Wenn Config noch nichts liefert, nimm nur die aktuelle Sprache
|
||||
if (!$availableLangs || !is_array($availableLangs)) {
|
||||
$availableLangs = [
|
||||
$currentLang => [
|
||||
'code' => $currentLang,
|
||||
'label' => strtoupper($currentLang),
|
||||
'flag' => '🏳️'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
// Sicherstellen, dass currentLang in der Liste ist
|
||||
if (!isset($availableLangs[$currentLang])) {
|
||||
$currentLang = array_key_first($availableLangs);
|
||||
}
|
||||
|
||||
// aktuelle Sprache-Info
|
||||
$currentLangInfo = $availableLangs[$currentLang] ?? ['code' => $currentLang];
|
||||
$currentLangFlag = $currentLangInfo['flag'] ?? '🏳️';
|
||||
$currentLangCode = strtoupper($currentLangInfo['code'] ?? $currentLang);
|
||||
$currentLangLabel = $currentLangInfo['label'] ?? $currentLangCode;
|
||||
?>
|
||||
<header class="sticky top-0 z-40 border-b border-brand-border/70 backdrop-blur bg-brand-bg/85">
|
||||
<div class="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8 flex items-center justify-between h-16">
|
||||
|
||||
<!-- Logo -->
|
||||
<div class="flex items-center gap-3">
|
||||
<a href="/?lang=<?= htmlspecialchars($lang ?? 'de') ?>" class="flex items-center gap-3">
|
||||
<a href="/?lang=<?= htmlspecialchars($currentLang) ?>" class="flex items-center gap-3">
|
||||
<img src="<?= $baseUrl ?>/assets/img/logo_slogan.png"
|
||||
alt="<?= htmlspecialchars(app_primary_domain()) ?> Logo"
|
||||
class="h-9 w-auto">
|
||||
@@ -84,38 +123,28 @@ if ($isLoggedIn) {
|
||||
<button id="langCurrent"
|
||||
type="button"
|
||||
class="flex items-center gap-1 text-xs uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary transition">
|
||||
<span id="langCurrentLabel"><?= strtoupper($lang ?? 'de') ?></span>
|
||||
<span class="text-base mr-1" id="langCurrentFlag"><?= htmlspecialchars($currentLangFlag) ?></span>
|
||||
<span id="langCurrentLabel"><?= htmlspecialchars($currentLangCode) ?></span>
|
||||
<svg class="w-3 h-3 opacity-70" viewBox="0 0 20 20" aria-hidden="true">
|
||||
<path d="M5 7l5 6 5-6" fill="currentColor" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div id="langMenu"
|
||||
class="hidden absolute right-0 mt-2 w-24 rounded-xl bg-brand-surface border border-brand-border shadow-lg py-1 text-xs z-40">
|
||||
<button type="button"
|
||||
class="lang-pill flex items-center gap-2 w-full text-left px-3 py-1.5 uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60"
|
||||
data-lang="de">
|
||||
<span class="text-base">🇩🇪</span>
|
||||
<span>DE</span>
|
||||
</button>
|
||||
<button type="button"
|
||||
class="lang-pill flex items-center gap-2 w-full text-left px-3 py-1.5 uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60"
|
||||
data-lang="en">
|
||||
<span class="text-base">🇬🇧</span>
|
||||
<span>EN</span>
|
||||
</button>
|
||||
<button type="button"
|
||||
class="lang-pill flex items-center gap-2 w-full text-left px-3 py-1.5 uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60"
|
||||
data-lang="it">
|
||||
<span class="text-base">🇮🇹</span>
|
||||
<span>IT</span>
|
||||
</button>
|
||||
<button type="button"
|
||||
class="lang-pill flex items-center gap-2 w-full text-left px-3 py-1.5 uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60"
|
||||
data-lang="fr">
|
||||
<span class="text-base">🇫🇷</span>
|
||||
<span>FR</span>
|
||||
</button>
|
||||
class="hidden absolute right-0 mt-2 w-32 rounded-xl bg-brand-surface border border-brand-border shadow-lg py-1 text-xs z-40">
|
||||
<?php foreach ($availableLangs as $code => $info): ?>
|
||||
<?php
|
||||
$isActive = ($code === $currentLang);
|
||||
$flag = $info['flag'] ?? '🏳️';
|
||||
$label = strtoupper($info['code'] ?? $code);
|
||||
?>
|
||||
<button type="button"
|
||||
class="lang-pill flex items-center gap-2 w-full text-left px-3 py-1.5 uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60 <?= $isActive ? 'bg-brand-bg/60' : '' ?>"
|
||||
data-lang="<?= htmlspecialchars($code) ?>">
|
||||
<span class="text-base"><?= htmlspecialchars($flag) ?></span>
|
||||
<span><?= htmlspecialchars($label) ?></span>
|
||||
</button>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -127,7 +156,7 @@ if ($isLoggedIn) {
|
||||
type="button"
|
||||
class="relative inline-flex items-center justify-center rounded-full bg-brand-primary px-4 py-1.5 text-xs font-semibold uppercase tracking-[0.18em] text-brand-bg shadow-soft hover:bg-cyan-400 transition-colors"
|
||||
data-i18n="header_btn_login"
|
||||
data-login-url="/login/?lang=<?= htmlspecialchars($lang ?? 'de') ?>">
|
||||
data-login-url="/login/?lang=<?= htmlspecialchars($currentLang) ?>">
|
||||
Login
|
||||
</button>
|
||||
<?php else: ?>
|
||||
@@ -143,7 +172,7 @@ if ($isLoggedIn) {
|
||||
|
||||
<div id="userMenu"
|
||||
class="hidden absolute right-0 mt-2 w-44 rounded-xl bg-brand-surface border border-brand-border shadow-lg py-1 text-xs z-40">
|
||||
<a href="/dashboard/?lang=<?= htmlspecialchars($lang ?? 'de') ?>"
|
||||
<a href="/dashboard/?lang=<?= htmlspecialchars($currentLang) ?>"
|
||||
class="flex items-center gap-2 px-3 py-2 text-brand-muted hover:text-brand-primary hover:bg-brand-bg/60 transition-colors"
|
||||
data-i18n="header_menu_dashboard">
|
||||
Dashboard
|
||||
@@ -151,7 +180,7 @@ if ($isLoggedIn) {
|
||||
<button type="button"
|
||||
class="flex items-center gap-2 w-full text-left px-3 py-2 text-brand-muted hover:text-red-400 hover:bg-red-500/10 transition-colors"
|
||||
data-logout-link="true"
|
||||
data-logout-href="/auth/logout?lang=<?= htmlspecialchars($lang ?? 'de') ?>"
|
||||
data-logout-href="/auth/logout?lang=<?= htmlspecialchars($currentLang) ?>"
|
||||
data-i18n="header_menu_logout">
|
||||
Logout
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user