Files
2026-09-16 23:20:08 +07:00

149 lines
8.8 KiB
PHP

<?php
// includes/sidebar.php
$current_page = basename($_SERVER['PHP_SELF']);
?>
<!-- Sidebar -->
<nav class="sidebar" id="sidebar">
<div class="sidebar-header d-flex align-items-center">
<div class="sidebar-logo">
<img src="assets/logo.png" alt="Logo">
</div>
<?php $header_text = get_setting($pdo_sys, 'header_text') ?: 'MOPH System'; ?>
<h5 class="mb-0 fw-bold text-truncate" style="color: var(--text-main); max-width: 170px;" title="<?= htmlspecialchars($header_text) ?>"><?= htmlspecialchars($header_text) ?></h5>
</div>
<div class="sidebar-menu">
<ul>
<li class="px-3 mb-2 text-uppercase text-muted" style="font-size: 0.75rem; letter-spacing: 1px;">ระบบหลัก</li>
<li class="<?= ($current_page == 'dashboard.php') ? 'active' : '' ?>">
<a href="dashboard.php">
<i class="bi bi-grid-1x2-fill"></i>
<span>Dashboard</span>
</a>
</li>
<li class="<?= ($current_page == 'requests.php') ? 'active' : '' ?>">
<a href="requests.php">
<i class="bi bi-list-ul"></i>
<span>ตารางห้องประชุม</span>
<span class="badge bg-danger ms-auto rounded-pill" style="font-size: 0.7rem;">New</span>
</a>
</li>
<li class="<?= ($current_page == 'calendar.php') ? 'active' : '' ?>">
<a href="calendar.php">
<i class="bi bi-calendar-event"></i>
<span>ปฏิทิน</span>
</a>
</li>
<?php if (isset($_SESSION['role']) && in_array($_SESSION['role'], ['superadmin', 'admin'])): ?>
<li class="px-3 mt-4 mb-2 text-uppercase text-muted" style="font-size: 0.75rem; letter-spacing: 1px;">ผู้ดูแลระบบ</li>
<?php if ($_SESSION['role'] === 'superadmin'): ?>
<li class="<?= ($current_page == 'users.php') ? 'active' : '' ?>">
<a href="users.php">
<i class="bi bi-people-fill"></i>
<span>จัดการผู้ดูแลระบบ</span>
</a>
</li>
<?php endif; ?>
<li class="<?= ($current_page == 'logs.php') ? 'active' : '' ?>">
<a href="logs.php">
<i class="bi bi-activity"></i>
<span>Activity Log</span>
</a>
</li>
<li class="<?= ($current_page == 'settings.php') ? 'active' : '' ?>">
<a href="settings.php">
<i class="bi bi-gear-fill"></i>
<span>Settings</span>
</a>
</li>
<?php endif; ?>
<li class="mt-4 d-lg-none">
<a href="auth/logout.php" class="text-danger">
<i class="bi bi-box-arrow-left"></i>
<span>ออกจากระบบ</span>
</a>
</li>
</ul>
</div>
<!-- Sidebar User Info & Logout (Bottom) -->
<div class="sidebar-footer p-3 border-top" style="border-color: var(--border-color) !important; margin-top: auto;">
<div class="d-flex align-items-center">
<img src="avatar.php?cid=<?= urlencode($_SESSION['cid'] ?? '') ?>&name=<?= urlencode($_SESSION['fullname'] ?? 'User') ?>" alt="User" class="rounded-circle avatar-premium" width="40" height="40" style="object-fit: cover;">
<div class="ms-3 sidebar-user-info overflow-hidden">
<h6 class="mb-0 text-truncate fw-bold" style="font-size: 0.85rem; color: var(--text-main);"><?= htmlspecialchars($_SESSION['fullname'] ?? 'User') ?></h6>
<small class="text-muted text-uppercase" style="font-size: 0.7rem;"><?= htmlspecialchars($_SESSION['role'] ?? 'admin') ?></small>
</div>
<a href="auth/logout.php" class="sidebar-logout-btn btn btn-sm btn-light text-danger ms-auto rounded-circle d-flex align-items-center justify-content-center shadow-sm" title="Logout" style="width: 32px; height: 32px; flex-shrink: 0; border: 1px solid var(--border-color);">
<i class="bi bi-power"></i>
</a>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="main-content">
<!-- Topbar -->
<header class="topbar">
<div class="topbar-left">
<!-- Mobile Toggle -->
<button class="btn-icon-only d-lg-none" id="mobileSidebarToggle">
<i class="bi bi-list fs-4"></i>
</button>
<!-- Desktop Toggle -->
<button class="btn-icon-only d-none d-lg-flex" id="sidebarToggle">
<i class="bi bi-list fs-4"></i>
</button>
<!-- Real-time Clock (Premium Design) -->
<div class="ms-3 d-none d-md-flex align-items-center px-3 py-1 rounded-pill" style="background: var(--bg-surface); border: 1px solid var(--border-color); box-shadow: var(--shadow-sm);">
<div class="d-flex align-items-center justify-content-center rounded-circle me-2" style="width: 32px; height: 32px; background: var(--primary-light); color: var(--primary);">
<i class="bi bi-clock-fill"></i>
</div>
<div class="d-flex flex-column justify-content-center">
<span id="realtimeClock" class="fw-bold" style="font-size: 0.95rem; color: var(--text-main); line-height: 1.1; letter-spacing: 0.5px;">--:--:--</span>
<span id="realtimeDate" class="text-muted" style="font-size: 0.7rem; line-height: 1;"></span>
</div>
</div>
</div>
<div class="topbar-right">
<?php
$is_api_connected = !empty(get_setting($pdo_sys, 'google_refresh_token'));
$api_status_color = $is_api_connected ? 'success' : 'danger';
$api_status_text = $is_api_connected ? 'API Online' : 'API Offline';
$api_status_icon = $is_api_connected ? 'bi-cloud-check-fill' : 'bi-cloud-slash-fill';
?>
<!-- API Status -->
<div class="d-none d-md-flex align-items-center me-2 px-3 py-1 rounded-pill shadow-sm" style="background-color: var(--bg-surface); border: 1px solid var(--border-color); font-size: 0.8rem;">
<i class="bi <?= $api_status_icon ?> text-<?= $api_status_color ?> me-2 fs-6"></i>
<span class="text-muted fw-bold"><?= $api_status_text ?></span>
</div>
<!-- Theme Switcher -->
<button class="btn-icon-only" id="themeToggle" aria-label="Toggle Theme">
<i class="bi bi-moon-fill"></i>
</button>
<!-- Notification -->
<div class="dropdown">
<button class="btn-icon-only" type="button" data-bs-toggle="dropdown" aria-expanded="false" id="notifButton">
<i class="bi bi-bell"></i>
<span id="notifBadge" class="position-absolute top-0 start-100 translate-middle p-1 bg-danger border border-light rounded-circle d-none" style="width: 10px; height: 10px;"></span>
</button>
<ul class="dropdown-menu dropdown-menu-end shadow-sm" style="width: 320px; border-radius: 12px; border-color: var(--border-color);" id="notifDropdown">
<li><h6 class="dropdown-header fw-bold text-primary">การประชุมวันนี้</h6></li>
<li><hr class="dropdown-divider"></li>
<div id="notifContent" style="max-height: 300px; overflow-y: auto;">
<li><a class="dropdown-item text-center text-muted py-3" href="#"><div class="spinner-border spinner-border-sm text-primary" role="status"></div> กำลังโหลดข้อมูล...</a></li>
</div>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item text-center text-primary" href="calendar.php">ดูปฏิทินทั้งหมด</a></li>
</ul>
</div>
</div>
</header>