03348cad79
Key areas: [OrderStatusService.php](/Users/tyemeclifford/Documents/GH/fatbottomgrille/app/Services/OrderStatusService.php), [AdminController.php](/Users/tyemeclifford/Documents/GH/fatbottomgrille/app/Controllers/AdminController.php), and [Database.php](/Users/tyemeclifford/Documents/GH/fatbottomgrille/app/Core/Database.php). SQLite migration applied successfully. PHP/JS syntax, integration workflows, rendered pages, database integrity, and tracker authorization all passed. Invalid tracker tokens correctly return 403.
31 lines
1.8 KiB
PHP
31 lines
1.8 KiB
PHP
<aside class="admin-sidebar">
|
|
<a class="admin-brand" href="<?= e(url('/admin')) ?>">
|
|
<span class="brand-mark">
|
|
<img src="<?= e(asset('assets/images/fat-bottom-grille-logo.jpg')) ?>" alt="">
|
|
</span>
|
|
<span>
|
|
<strong><?= e($config->get('business.name')) ?></strong>
|
|
<small>Operations</small>
|
|
</span>
|
|
</a>
|
|
<nav class="admin-nav" aria-label="Dashboard navigation">
|
|
<a class="<?= $adminPage === 'dashboard' ? 'is-active' : '' ?>" href="<?= e(url('/admin')) ?>">Overview</a>
|
|
<a class="<?= $adminPage === 'orders' ? 'is-active' : '' ?>" href="<?= e(url('/admin/orders')) ?>">Orders</a>
|
|
<a class="<?= $adminPage === 'customers' ? 'is-active' : '' ?>" href="<?= e(url('/admin/customers')) ?>">Customers</a>
|
|
<a class="<?= $adminPage === 'menu' ? 'is-active' : '' ?>" href="<?= e(url('/admin/menu')) ?>">Menu</a>
|
|
<a class="<?= $adminPage === 'specials' ? 'is-active' : '' ?>" href="<?= e(url('/admin/specials')) ?>">Specials</a>
|
|
<a class="<?= $adminPage === 'newsletters' ? 'is-active' : '' ?>" href="<?= e(url('/admin/newsletters')) ?>">Newsletters</a>
|
|
<?php if (($currentUser['role'] ?? '') === 'admin'): ?>
|
|
<a class="<?= $adminPage === 'users' ? 'is-active' : '' ?>" href="<?= e(url('/admin/users')) ?>">Users & Staff</a>
|
|
<a class="<?= $adminPage === 'settings' ? 'is-active' : '' ?>" href="<?= e(url('/admin/settings')) ?>">Settings</a>
|
|
<?php endif; ?>
|
|
</nav>
|
|
<div class="admin-user">
|
|
<span class="avatar"><?= e(strtoupper(substr((string) ($currentUser['full_name'] ?? 'S'), 0, 1))) ?></span>
|
|
<span>
|
|
<strong><?= e($currentUser['full_name'] ?? '') ?></strong>
|
|
<small><?= e(ucfirst((string) ($currentUser['role'] ?? 'staff'))) ?></small>
|
|
</span>
|
|
</div>
|
|
</aside>
|