Poprawka botto bar i wersje językowe

This commit is contained in:
2026-09-25 17:39:44 +02:00
parent 3056eb6c3d
commit a381ad09d8
21 changed files with 770 additions and 428 deletions
+103 -102
View File
@@ -24,7 +24,7 @@ foreach (($menuConfig['languages'] ?? []) as $code => $meta) {
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<!-- build: css=<?= assetVersionAttr($vCss) ?> js=<?= assetVersionAttr($vJs) ?> -->
@@ -54,18 +54,18 @@ foreach (($menuConfig['languages'] ?? []) as $code => $meta) {
</div>
<div class="geo-icon">📍</div>
<h2 class="geo-title" data-i18n="geo.title">Witamy w Karcznie</h2>
<p class="geo-lead" id="geoLead" data-i18n="geo.lead">
<p class="geo-lead" id="geoLead">
Przeglądaj menu od razu — albo potwierdź, że jesteś u nas, aby wezwać kelnera, śledzić zamówienie i poprosić o rachunek.
</p>
<p class="geo-status" id="geoMsg"></p>
<div class="geo-actions" id="geoActions">
<button type="button" id="geoMenuOnlyBtn" class="geo-btn geo-btn-menu">
<span class="geo-btn-main" data-i18n="geo.btn.menu_main">Przejdź do menu</span>
<span class="geo-btn-sub" data-i18n="geo.btn.menu_sub">bez lokalizacji</span>
<span class="geo-btn-main">Przejdź do menu</span>
<span class="geo-btn-sub">bez lokalizacji</span>
</button>
<button type="button" id="geoActionBtn" class="geo-btn geo-btn-locate btn btn-primary">
<span class="geo-btn-main" data-i18n="geo.btn.locate">Zgoda, sprawdź lokalizację</span>
<span class="geo-btn-main">Zgoda, sprawdź lokalizację</span>
</button>
</div>
@@ -87,114 +87,115 @@ foreach (($menuConfig['languages'] ?? []) as $code => $meta) {
</div>
</div>
<div class="container">
<header id="mainHeader">
<div class="header-top">
<h1 class="logo-text">Karczma Biesiada</h1>
<div id="headerLangPickerMount"></div>
</div>
<div id="tableLabel" class="table-badge" data-i18n="table.choose">Wybierz stolik</div>
</header>
<div class="app-shell" id="appShell">
<div class="app-scroll" id="appScroll">
<div class="container">
<header id="mainHeader">
<div class="header-top">
<h1 class="logo-text">Karczma Biesiada</h1>
<div id="headerLangPickerMount"></div>
</div>
<div id="tableLabel" class="table-badge" data-i18n="table.choose">Wybierz stolik</div>
</header>
<main id="mainContent">
<div id="statusView" class="view-section active">
<main id="mainContent">
<div id="statusView" class="view-section active">
<section class="status-card">
<div class="status-header">
<div>
<span class="status-title" data-i18n="status.title">Aktualny status</span>
<div id="prepStatus" class="status-value" data-i18n="status.waiting">Oczekiwanie...</div>
<section class="status-card">
<div class="status-header">
<div>
<span class="status-title" data-i18n="status.title">Aktualny status</span>
<div id="prepStatus" class="status-value" data-i18n="status.waiting">Oczekiwanie...</div>
</div>
<div id="statusIcon" style="font-size: 28px;">⏳</div>
</div>
<div class="progress-container">
<div id="progressBar" class="progress-bar"></div>
</div>
<div id="statusMeta" style="font-size: 12px; color: var(--text-muted);" data-i18n="status.checking">
Sprawdzamy co pysznego się przygotowuje...
</div>
</section>
<section class="items-container" id="ordersContainer">
<h3 id="ordersTitle" data-i18n="orders.title">Twoje zamówione dania</h3>
<div id="emptyState" class="empty-state hidden">
<div class="empty-icon">📖</div>
<p style="color: var(--text-muted)" data-i18n="orders.empty">Jeśli właśnie złożyłeś zamówienie, daj nam chwilkę na jego
przetworzenie.</p>
<button class="btn btn-primary" style="margin-top: 15px; padding: 12px 20px; font-size: 15px;"
onclick="switchTab('menu')" data-i18n="orders.browse_menu">Przeglądaj menu</button>
</div>
<div id="itemsList"></div>
</section>
<section id="historySection" class="items-container history-section hidden">
<h3 data-i18n="history.title">Twoje poprzednie zamówienia</h3>
<p class="history-note" data-i18n="history.note">To są pozycje z innych wizyt, które były widoczne na tym telefonie po zeskanowaniu
kodów QR. Jeśli kiedyś byłeś w restauracji bez skanowania kodu, tych pozycji tu nie będzie 🙂</p>
<div id="historyList"></div>
<div style="text-align: center; margin-top: 15px;">
<a href="#" onclick="clearGlobalHistory(event)"
style="font-size: 12px; color: var(--text-muted); text-decoration: underline;" data-i18n="history.clear">Usuń historię</a>
</div>
</section>
<div id="metaFooter" class="meta-footer"></div>
</div>
<div id="menuView" class="view-section hidden">
<div id="menuOnlyBanner" class="menu-only-banner is-hidden">
<span data-i18n="menu.banner">Potwierdź lokalizację, aby wezwać kelnera lub poprosić o rachunek.</span>
<button type="button" class="menu-only-banner-btn" onclick="promptGeoForFullAccess()" data-i18n="menu.banner_btn">Sprawdź teraz</button>
</div>
<div class="menu-search-container">
<input type="text" id="menuSearchInput" data-i18n-placeholder="menu.search" placeholder="Szukaj dania..." oninput="filterMenu()" />
<div id="menuLangPickerMount"></div>
</div>
<div class="restaurant-menu-container">
<nav class="menu-categories-nav">
<ul>
<!-- Dynamic categories -->
</ul>
</nav>
<div class="restaurant-menu-scroll" id="menuContainer">
<!-- Dynamiczne menu załaduje się tutaj -->
</div>
</div>
<div id="statusIcon" style="font-size: 28px;">⏳</div>
</div>
<div class="progress-container">
<div id="progressBar" class="progress-bar"></div>
</div>
</main>
<div id="statusMeta" style="font-size: 12px; color: var(--text-muted);" data-i18n="status.checking">
Sprawdzamy co pysznego się przygotowuje...
</div>
</section>
<section class="items-container" id="ordersContainer">
<h3 id="ordersTitle" data-i18n="orders.title">Twoje zamówione dania</h3>
<div id="emptyState" class="empty-state hidden">
<div class="empty-icon">📖</div>
<p style="color: var(--text-muted)" data-i18n="orders.empty">Jeśli właśnie złożyłeś zamówienie, daj nam chwilkę na jego
przetworzenie.</p>
<button class="btn btn-primary" style="margin-top: 15px; padding: 12px 20px; font-size: 15px;"
onclick="switchTab('menu')" data-i18n="orders.browse_menu">Przeglądaj menu</button>
</div>
<div id="itemsList"></div>
</section>
<section id="historySection" class="items-container history-section hidden">
<h3 data-i18n="history.title">Twoje poprzednie zamówienia</h3>
<p class="history-note" data-i18n="history.note">To są pozycje z innych wizyt, które były widoczne na tym telefonie po zeskanowaniu
kodów QR. Jeśli kiedyś byłeś w restauracji bez skanowania kodu, tych pozycji tu nie będzie 🙂</p>
<div id="historyList"></div>
<div style="text-align: center; margin-top: 15px;">
<a href="#" onclick="clearGlobalHistory(event)"
style="font-size: 12px; color: var(--text-muted); text-decoration: underline;" data-i18n="history.clear">Usuń historię</a>
</div>
</section>
<div id="metaFooter" class="meta-footer"></div>
<footer class="app-footer">
<a href="https://magico.pl" target="_blank">&copy; Magico Software</a>
</footer>
</div>
</div>
<div id="menuView" class="view-section hidden">
<div id="menuOnlyBanner" class="menu-only-banner is-hidden">
<span data-i18n="menu.banner">Potwierdź lokalizację, aby wezwać kelnera lub poprosić o rachunek.</span>
<button type="button" class="menu-only-banner-btn" onclick="promptGeoForFullAccess()" data-i18n="menu.banner_btn">Sprawdź teraz</button>
</div>
<div class="menu-search-container">
<input type="text" id="menuSearchInput" data-i18n-placeholder="menu.search" placeholder="Szukaj dania..." oninput="filterMenu()" />
<div id="menuLangPickerMount"></div>
</div>
<div class="restaurant-menu-container">
<nav class="menu-categories-nav">
<ul>
<!-- Dynamic categories -->
</ul>
</nav>
<div class="restaurant-menu-scroll" id="menuContainer">
<!-- Dynamiczne menu załaduje się tutaj -->
</div>
</div>
<nav class="bottom-nav" id="bottomNav" hidden>
<div class="nav-item active" onclick="switchTab('status')" id="navStatus">
<span class="nav-icon">🍽️</span>
<span class="nav-label" data-i18n="nav.order">Zamówienie</span>
</div>
</main>
<footer style="text-align: center; padding: 10px 0 20px; margin-top: 5px;">
<a href="https://magico.pl" target="_blank"
style="font-size: 12px; color: var(--text-muted); text-decoration: none;">
&copy; Magico Software
</a>
</footer>
<div class="nav-item" onclick="switchTab('menu')" id="navMenu">
<span class="nav-icon">📖</span>
<span class="nav-label" data-i18n="nav.menu">Menu</span>
</div>
<div class="nav-item action-call" onclick="openWaiterDialog()" id="navWaiter">
<span class="nav-icon">🛎️</span>
<span class="nav-label" data-i18n="nav.waiter">Kelner</span>
</div>
<div class="nav-item action-bill" onclick="openBillDialog()" id="navBill">
<span class="nav-icon">💳</span>
<span class="nav-label" data-i18n="nav.bill">Rachunek</span>
</div>
</nav>
</div>
<nav class="bottom-nav" id="bottomNav" style="display: none;">
<div class="nav-item active" onclick="switchTab('status')" id="navStatus">
<span class="nav-icon">🍽️</span>
<span class="nav-label" data-i18n="nav.order">Zamówienie</span>
</div>
<div class="nav-item" onclick="switchTab('menu')" id="navMenu">
<span class="nav-icon">📖</span>
<span class="nav-label" data-i18n="nav.menu">Menu</span>
</div>
<div class="nav-item action-call" onclick="openWaiterDialog()" id="navWaiter">
<span class="nav-icon">🛎️</span>
<span class="nav-label" data-i18n="nav.waiter">Kelner</span>
</div>
<div class="nav-item action-bill" onclick="openBillDialog()" id="navBill">
<span class="nav-icon">💳</span>
<span class="nav-label" data-i18n="nav.bill">Rachunek</span>
</div>
</nav>
<div class="modal-overlay" id="waiterModal">
<div class="modal-content" style="text-align: center;">
<div style="font-size: 48px; margin-bottom: 15px;">🛎️</div>