feat:Add blog management page and enhance admin layout

This commit is contained in:
Wini_Fy
2026-02-03 17:04:28 +07:00
parent bb539ef213
commit 538317eade
14 changed files with 3096 additions and 277 deletions

View File

@@ -727,91 +727,67 @@
About
</a>
<ul class="dropdown-menu">
<li>
<a
class="dropdown-item <%= currentPath === '/admin/about-us' ? 'active' : '' %>"
href="/admin/about-us"
>About us</a
>
</li>
<li>
<a
class="dropdown-item <%= currentPath === '/admin/safety' ? 'active' : '' %>"
href="/admin/safety"
>Safety</a
>
</li>
<li>
<a
class="dropdown-item <%= currentPath === '/admin/FAQ' ? 'active' : '' %>"
href="/admin/faq"
>FAQ</a
>
</li>
<li>
<a
class="dropdown-item <%= currentPath === '/admin/insurance' ? 'active' : '' %>"
href="/admin/insurance"
>Insurance</a
>
</li>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item <%= currentPath === '/admin/about-us' ? 'active' : '' %>"
href="/admin/about-us">About us</a>
</li>
<li>
<a class="dropdown-item <%= currentPath === '/admin/safety' ? 'active' : '' %>"
href="/admin/safety">Safety</a>
</li>
<li>
<a class="dropdown-item <%= currentPath === '/admin/FAQ' ? 'active' : '' %>" href="/admin/faq">FAQ</a>
</li>
<li>
<a class="dropdown-item <%= currentPath === '/admin/insurance' ? 'active' : '' %>"
href="/admin/insurance">Insurance</a>
</li>
<li>
<a class="dropdown-item <%= currentPath === '/admin/travel' ? 'active' : '' %>"
href="/admin/travel">Travel</a>
</li>
<li>
<a class="dropdown-item <%= currentPath === '/admin/terms-conditions' ? 'active' : '' %>"
href="/admin/terms-conditions">Terms & Conditions</a>
</li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link <%= currentPath === '/admin/contact' ? 'active' : '' %>" href="/admin/contact">Contact
Us</a>
</li>
<li class="nav-item">
<a class="nav-link <%= currentPath === '/admin/camp-location' ? 'active' : '' %>"
href="/admin/camp-location">Camp Location</a>
</li>
<li class="nav-item">
<a class="nav-link <%= currentPath === '/admin/activity' ? 'active' : '' %>" href="/admin/activity">Activity
& Booking</a>
</li>
<li class="nav-item">
<a class="nav-link <%= currentPath === '/admin/blog' || currentPath.startsWith('/admin/blog') ? 'active' : '' %>"
href="/admin/blog">Blog</a>
</li>
</ul>
<li>
<a
class="dropdown-item <%= currentPath === '/admin/travel' ? 'active' : '' %>"
href="/admin/travel"
>Travel</a
>
</li>
<li>
<a
class="dropdown-item <%= currentPath === '/admin/terms-conditions' ? 'active' : '' %>"
href="/admin/terms-conditions"
>Terms & Conditions</a
>
</li>
</ul>
</li>
<li class="nav-item">
<a
class="nav-link <%= currentPath === '/admin/contact' ? 'active' : '' %>"
href="/admin/contact"
>Contact Us</a
>
</li>
<li class="nav-item">
<a
class="nav-link <%= currentPath === '/admin/camp-location' ? 'active' : '' %>"
href="/admin/camp-location"
>Camp Location</a
>
</li>
<li class="nav-item">
<a
class="nav-link <%= currentPath === '/admin/activity' ? 'active' : '' %>"
href="/admin/activity"
>Activity & Booking</a
>
</li>
</ul>
</ul>
<div class="d-flex align-items-center">
<% if (locals.user) { %>
<a href="/admin/dashboard" class="btn btn-primary me-2">
<i class="fas fa-tachometer-alt me-1"></i>Dashboard
</a>
<a href="/auth/logout" class="btn btn-outline-danger">
<i class="fas fa-sign-out-alt me-1"></i>Logout
</a>
<% } else { %>
<a href="/auth/login" class="btn btn-outline-primary">
<i class="fas fa-sign-in-alt me-1"></i>Login
</a>
<% } %>
<a href="/admin/dashboard" class="btn btn-primary me-2">
<i class="fas fa-tachometer-alt me-1"></i>Dashboard
</a>
<a href="/auth/logout" class="btn btn-outline-danger">
<i class="fas fa-sign-out-alt me-1"></i>Logout
</a>
<% } else { %>
<a href="/auth/login" class="btn btn-outline-primary">
<i class="fas fa-sign-in-alt me-1"></i>Login
</a>
<% } %>
</div>
</div>
</div>
@@ -821,12 +797,12 @@
<main>
<!-- Flash Messages Data (Hidden) -->
<% if(typeof success_msg !=='undefined' || typeof error_msg !=='undefined' || typeof error !=='undefined' ) { %>
<div id="flash-messages-data" style="display: none">
<%- JSON.stringify({ success_msg: typeof success_msg !=='undefined' && success_msg ? success_msg : null,
<div id="flash-messages-data" style="display: none">
<%- JSON.stringify({ success_msg: typeof success_msg !=='undefined' && success_msg ? success_msg : null,
error_msg: typeof error_msg !=='undefined' && error_msg ? error_msg : null, error: typeof error !=='undefined'
&& error ? error : null }) %>
</div>
<% } %> <%- body %>
</div>
<% } %> <%- body %>
</main>
<!-- Footer -->
@@ -841,14 +817,14 @@
<h5 class="mb-3">Links</h5>
<ul class="list-unstyled">
<% if (locals.user) { %>
<li class="mb-2">
<a href="/admin/dashboard" class="text-decoration-none hover-opacity">Dashboard</a>
</li>
<% } else { %>
<li class="mb-2">
<a href="/auth/login" class="text-decoration-none hover-opacity">Login</a>
</li>
<% } %>
<li class="mb-2">
<a href="/admin/dashboard" class="text-decoration-none hover-opacity">Dashboard</a>
</li>
<% } else { %>
<li class="mb-2">
<a href="/auth/login" class="text-decoration-none hover-opacity">Login</a>
</li>
<% } %>
</ul>
</div>
<div class="col-md-4">
@@ -865,7 +841,7 @@
<div class="text-center">
<p class="mb-0">
&copy; <%= new Date().getFullYear() %> CMS-GGCamp. All rights
reserved.
reserved.
</p>
</div>
</div>
@@ -928,7 +904,7 @@
formattedType + '</span><i class="fas fa-chevron-right nav-submenu-indicator"></i>';
if (window.location.pathname.includes("/admin/level") && window.location.search.includes(
"type=" + type)) {
"type=" + type)) {
link.classList.add("active");
}