Initial commit

This commit is contained in:
Porawit Dongwang
2026-09-16 23:20:08 +07:00
commit 0041668dbb
32577 changed files with 3687927 additions and 0 deletions
@@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ระบบขออนุมัติเดินทางประชุม-อบรม</title>
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<!-- Google Fonts (Sarabun & Inter) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Sarabun:wght@300;400;500;600&display=swap" rel="stylesheet">
<!-- Premium Theme Styles -->
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/premium.css?v=<?= time() ?>">
<style>
body {
font-family: 'Sarabun', sans-serif;
background-color: #f4f6f9;
}
.navbar-brand {
font-weight: 600;
}
.main-content {
padding: 2rem 0;
min-height: calc(100vh - 140px);
}
.footer {
background-color: #fff;
border-top: 1px solid #e9ecef;
padding: 1rem 0;
text-align: center;
}
</style>
</head>
<body>
<!-- Anti-FOUC Script for Premium Theme -->
<script>
if (localStorage.getItem('app_premium_theme') === 'true') {
document.body.setAttribute('data-premium-theme', 'true');
}
</script>
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow-sm">
<div class="container">
<a class="navbar-brand" href="<?= BASE_URL ?>/">
<i class="fa-solid fa-plane-departure me-2"></i>ระบบขอเดินทาง-อบรม
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" href="<?= BASE_URL ?>/"><i class="fa-solid fa-house me-1"></i>หน้าแรก</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= BASE_URL ?>/trip/create"><i class="fa-solid fa-plus me-1"></i>ขออนุมัติเดินทาง</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= BASE_URL ?>/trip/approvals"><i class="fa-solid fa-check-to-slot me-1"></i>พิจารณาอนุมัติ</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= BASE_URL ?>/report"><i class="fa-solid fa-chart-pie me-1"></i>รายงานสรุป</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= BASE_URL ?>/reports"><i class="fa-solid fa-file-excel me-1"></i>รายงาน</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= BASE_URL ?>/audit"><i class="fa-solid fa-list-check me-1"></i>ประวัติการใช้งาน</a>
</li>
<li class="nav-item">
<a class="nav-link text-info" href="<?= BASE_URL ?>/manual"><i class="fa-solid fa-book-open me-1"></i>คู่มือ</a>
</li>
</ul>
<ul class="navbar-nav ms-auto">
<?php
$roleIcon = 'fa-user-circle';
$roles = $_SESSION['roles'] ?? [];
if (in_array('Admin', $roles)) {
$roleIcon = 'fa-user-shield text-danger';
} elseif (in_array('Approver_L2', $roles) || in_array('Approver_L1', $roles)) {
$roleIcon = 'fa-user-tie text-primary';
}
$display_name = $_SESSION['fullname'] ?? 'ผู้ใช้งาน';
?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown">
<i class="fa-solid <?= $roleIcon ?> me-1"></i> <?= htmlspecialchars($display_name) ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="<?= BASE_URL ?>/settings"><i class="fa-solid fa-gear me-2"></i>ตั้งค่าระบบ</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item text-danger" href="<?= BASE_URL ?>/logout"><i class="fa-solid fa-sign-out-alt me-2"></i>ออกจากระบบ</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="container main-content">
<!-- Error/Success Messages Placeholder -->
<?php if(isset($_SESSION['flash_success'])): ?>
<div class="alert alert-success alert-dismissible fade show">
<?= \App\Core\Security::escape($_SESSION['flash_success']); unset($_SESSION['flash_success']); ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<?php if(isset($_SESSION['flash_error'])): ?>
<div class="alert alert-danger alert-dismissible fade show">
<?= \App\Core\Security::escape($_SESSION['flash_error']); unset($_SESSION['flash_error']); ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<?= $content ?>
</div>
<!-- Footer -->
<footer class="footer">
<div class="container">
<span class="text-muted">© <?= date('Y') ?> ระบบขออนุมัติเดินทางไปราชการ/ประชุม/อบรม</span>
</div>
</footer>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- Bootstrap 5 JS Bundle -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- DataTables (Optional default) -->
<link href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css" rel="stylesheet">
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
<!-- Optional custom scripts pushed from views -->
<?php if(isset($extraScripts)) echo $extraScripts; ?>
<!-- Premium Theme Logic -->
<script src="<?= BASE_URL ?>/assets/js/premium.js?v=<?= time() ?>"></script>
</body>
</html>