149 lines
8.8 KiB
PHP
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>
|