442 lines
22 KiB
HTML
442 lines
22 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<meta name="description" content="">
|
||
<meta name="author" content="">
|
||
|
||
<title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">SIS Vietnam - Manage</title>
|
||
|
||
<!-- Custom fonts for this template-->
|
||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" rel="stylesheet"
|
||
type="text/css">
|
||
<link
|
||
href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
|
||
rel="stylesheet">
|
||
|
||
<!-- Custom styles for this template-->
|
||
<link href="https://cdnjs.cloudflare.com/ajax/libs/startbootstrap-sb-admin-2/4.1.4/css/sb-admin-2.min.css"
|
||
rel="stylesheet">
|
||
|
||
<!-- Project-wide CSS Variables & Custom Styles -->
|
||
<link rel="stylesheet" th:href="@{/css/custom.css}">
|
||
<!-- Select2 -->
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2-bootstrap-theme/0.1.0-beta.10/select2-bootstrap.min.css">
|
||
<!-- Admin Head Hook -->
|
||
<th:block th:utext="${hookManager.doActionAndReturn('admin_head')}"></th:block>
|
||
</head>
|
||
|
||
<body id="page-top">
|
||
|
||
<!-- Page Wrapper -->
|
||
<div id="wrapper">
|
||
|
||
<!-- Sidebar -->
|
||
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
|
||
|
||
<!-- Sidebar - Brand -->
|
||
<a class="sidebar-brand d-flex align-items-center justify-content-center" th:href="@{/manage}"
|
||
style="height: 130px;">
|
||
<div class="sidebar-brand-icon">
|
||
<img th:src="@{/images/LogoSIS_White.png}" alt="Logo" style="width: 100%;">
|
||
</div>
|
||
<!-- <div class="sidebar-brand-text mx-3">SIS Manage</div> -->
|
||
</a>
|
||
|
||
<!-- Divider -->
|
||
<hr class="sidebar-divider my-0">
|
||
|
||
<!-- Nav Item - Dashboard Collapse Menu -->
|
||
<li class="nav-item active">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseDashboard"
|
||
aria-expanded="true" aria-controls="collapseDashboard">
|
||
<i class="fas fa-fw fa-tachometer-alt"></i>
|
||
<span>Dashboard</span>
|
||
</a>
|
||
<div id="collapseDashboard" class="collapse" aria-labelledby="headingDashboard"
|
||
data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<a class="collapse-item" th:href="@{/manage}">Home</a>
|
||
<a class="collapse-item" th:href="@{/manage/updates}">Updates</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Divider -->
|
||
<hr class="sidebar-divider">
|
||
|
||
<!-- Heading -->
|
||
<div class="sidebar-heading">
|
||
Content
|
||
</div>
|
||
|
||
<!-- Nav Item - Posts Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePosts"
|
||
aria-expanded="true" aria-controls="collapsePosts">
|
||
<i class="fas fa-fw fa-newspaper"></i>
|
||
<span>Posts</span>
|
||
</a>
|
||
<div id="collapsePosts" class="collapse" aria-labelledby="headingPosts" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Post Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/posts}">All Posts</a>
|
||
<a class="collapse-item" th:href="@{/manage/posts/new}">Add New</a>
|
||
<a class="collapse-item" th:href="@{/manage/posts/categories}">Categories</a>
|
||
<a class="collapse-item" th:href="@{/manage/posts/tags}">Tags</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Media Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseMedia"
|
||
aria-expanded="true" aria-controls="collapseMedia">
|
||
<i class="fas fa-fw fa-photo-video"></i>
|
||
<span>Media</span>
|
||
</a>
|
||
<div id="collapseMedia" class="collapse" aria-labelledby="headingMedia" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Media Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/media}">Library</a>
|
||
<a class="collapse-item" th:href="@{/manage/media/new}">Add New</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Pages Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePages"
|
||
aria-expanded="true" aria-controls="collapsePages">
|
||
<i class="fas fa-fw fa-file-alt"></i>
|
||
<span>Pages</span>
|
||
</a>
|
||
<div id="collapsePages" class="collapse" aria-labelledby="headingPages" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Page Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/pages}">All Pages</a>
|
||
<a class="collapse-item" th:href="@{/manage/pages/new}">Add New</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Medical Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseMedical"
|
||
aria-expanded="true" aria-controls="collapseMedical">
|
||
<i class="fas fa-fw fa-user-md"></i>
|
||
<span>Medical</span>
|
||
</a>
|
||
<div id="collapseMedical" class="collapse" aria-labelledby="headingMedical" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Medical Team:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/doctors}">Doctors</a>
|
||
<a class="collapse-item" th:href="@{/manage/specialties}">Specialties</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Appearance Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseAppearance"
|
||
aria-expanded="true" aria-controls="collapseAppearance">
|
||
<i class="fas fa-fw fa-paint-brush"></i>
|
||
<span>Appearance</span>
|
||
</a>
|
||
<div id="collapseAppearance" class="collapse" aria-labelledby="headingAppearance"
|
||
data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Design Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/themes}">Themes</a>
|
||
<a class="collapse-item" th:href="@{/manage/theme-editor}">Theme File Editor</a>
|
||
<a class="collapse-item" th:href="@{/manage/customize}">Customize</a>
|
||
<a class="collapse-item" th:href="@{/manage/menus}">Menus</a>
|
||
<a class="collapse-item" th:href="@{/manage/widgets}">Widgets</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Divider -->
|
||
<hr class="sidebar-divider">
|
||
|
||
<!-- Heading -->
|
||
<div class="sidebar-heading">
|
||
System
|
||
</div>
|
||
|
||
<!-- Nav Item - Plugins Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePlugins"
|
||
aria-expanded="true" aria-controls="collapsePlugins">
|
||
<i class="fas fa-fw fa-plug"></i>
|
||
<span>Plugins</span>
|
||
</a>
|
||
<div id="collapsePlugins" class="collapse" aria-labelledby="headingPlugins"
|
||
data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Plugin Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/plugins}">Installed Plugins</a>
|
||
<a class="collapse-item" th:href="@{/manage/plugins/new}">Add New</a>
|
||
<a class="collapse-item" th:href="@{/manage/plugins/editor}">Plugin File Editor</a>
|
||
<th:block th:utext="${hookManager.applyFilters('admin_menu_plugins', '')}"></th:block>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Users Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseUsers"
|
||
aria-expanded="true" aria-controls="collapseUsers">
|
||
<i class="fas fa-fw fa-users"></i>
|
||
<span>Users</span>
|
||
</a>
|
||
<div id="collapseUsers" class="collapse" aria-labelledby="headingUsers" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">User Management:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/users}">All Users</a>
|
||
<a class="collapse-item" th:href="@{/manage/users/new}">Add New</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Divider -->
|
||
<hr class="sidebar-divider">
|
||
|
||
<!-- Heading -->
|
||
<div class="sidebar-heading">
|
||
Interface
|
||
</div>
|
||
|
||
<!-- Nav Item - Components Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo"
|
||
aria-expanded="true" aria-controls="collapseTwo">
|
||
<i class="fas fa-fw fa-cog"></i>
|
||
<span>Components</span>
|
||
</a>
|
||
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Custom Components:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/components}">Component Templates</a>
|
||
<a class="collapse-item" th:href="@{/manage/snippets}">HTML Snippets</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Settings Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseSettings"
|
||
aria-expanded="true" aria-controls="collapseSettings">
|
||
<i class="fas fa-fw fa-cogs"></i>
|
||
<span>Settings</span>
|
||
</a>
|
||
<div id="collapseSettings" class="collapse" aria-labelledby="headingSettings"
|
||
data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">Configuration:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/settings/general}">General</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/writing}">Writing</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/reading}">Reading</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/discussion}">Discussion</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/media}">Media</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/permalinks}">Permalinks</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/privacy}">Privacy</a>
|
||
<a class="collapse-item" th:href="@{/manage/settings/branches}">Branches</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Nav Item - Tools Collapse Menu -->
|
||
<li class="nav-item">
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTools"
|
||
aria-expanded="true" aria-controls="collapseTools">
|
||
<i class="fas fa-fw fa-wrench"></i>
|
||
<span>Tools</span>
|
||
</a>
|
||
<div id="collapseTools" class="collapse" aria-labelledby="headingTools" data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<h6 class="collapse-header">System Tools:</h6>
|
||
<a class="collapse-item" th:href="@{/manage/tools/import-export}">Import / Export</a>
|
||
<a class="collapse-item" th:href="@{/manage/tools/site-health}">Site Health</a>
|
||
<a class="collapse-item" th:href="@{/manage/tools/personal-data}">Personal Data (GDPR)</a>
|
||
<a class="collapse-item" th:href="@{/manage/doctor-scheduler}">Doctor Scheduler</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Divider -->
|
||
<hr class="sidebar-divider d-none d-md-block">
|
||
|
||
<!-- Dynamic Extensions Heading (only if dynamic menus exist) -->
|
||
<th:block th:if="${!dynamicAdminMenus.isEmpty()}">
|
||
<div class="sidebar-heading">
|
||
Extensions
|
||
</div>
|
||
|
||
<!-- Dynamic Menus Loop -->
|
||
<li class="nav-item" th:each="menu : ${dynamicAdminMenus}">
|
||
<!-- Dropdown Trigger -->
|
||
<a class="nav-link collapsed" href="#" data-toggle="collapse"
|
||
th:data-target="'#collapse_' + ${#strings.replace(menu.menuSlug, '-', '_')}"
|
||
aria-expanded="true">
|
||
<i th:class="${menu.iconUrl}"></i>
|
||
<span th:text="${menu.menuTitle}">Menu Title</span>
|
||
</a>
|
||
|
||
<!-- Dropdown Content -->
|
||
<div th:id="'collapse_' + ${#strings.replace(menu.menuSlug, '-', '_')}" class="collapse"
|
||
data-parent="#accordionSidebar">
|
||
<div class="bg-white py-2 collapse-inner rounded">
|
||
<a class="collapse-item" th:each="sub : ${menu.submenus}" th:href="@{${sub.url}}"
|
||
th:text="${sub.menuTitle}">Submenu</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<hr class="sidebar-divider d-none d-md-block">
|
||
</th:block>
|
||
|
||
<!-- Sidebar Toggler (Sidebar) -->
|
||
<div class="text-center d-none d-md-inline">
|
||
<button class="rounded-circle border-0" id="sidebarToggle"></button>
|
||
</div>
|
||
|
||
</ul>
|
||
<!-- End of Sidebar -->
|
||
|
||
<!-- Content Wrapper -->
|
||
<div id="content-wrapper" class="d-flex flex-column">
|
||
|
||
<!-- Main Content -->
|
||
<div id="content">
|
||
|
||
<!-- Topbar -->
|
||
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
|
||
|
||
<!-- Sidebar Toggle (Topbar) -->
|
||
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
|
||
<i class="fa fa-bars"></i>
|
||
</button>
|
||
|
||
<!-- Topbar Navbar -->
|
||
<ul class="navbar-nav ml-auto">
|
||
|
||
<!-- Nav Item - User Information -->
|
||
<li class="nav-item dropdown no-arrow">
|
||
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button"
|
||
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="mr-2 d-none d-lg-inline text-gray-600 small"
|
||
sec:authentication="name">Admin User</span>
|
||
<img class="img-profile rounded-circle"
|
||
src="https://startbootstrap.github.io/startbootstrap-sb-admin-2/img/undraw_profile.svg">
|
||
</a>
|
||
<!-- Dropdown - User Information -->
|
||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||
aria-labelledby="userDropdown">
|
||
<a class="dropdown-item" th:href="@{/manage/profile}">
|
||
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
|
||
Profile
|
||
</a>
|
||
<div class="dropdown-divider"></div>
|
||
<form method="post" th:action="@{/manage/logout}" id="logoutForm" class="d-none">
|
||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
|
||
</form>
|
||
<a class="dropdown-item" href="#"
|
||
onclick="document.getElementById('logoutForm').submit(); return false;">
|
||
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||
Logout
|
||
</a>
|
||
</div>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
<!-- End of Topbar -->
|
||
|
||
<!-- Begin Page Content -->
|
||
<div class="container-fluid" layout:fragment="content">
|
||
<!-- Page Content goes here -->
|
||
</div>
|
||
<!-- /.container-fluid -->
|
||
|
||
</div>
|
||
<!-- End of Main Content -->
|
||
|
||
<!-- Footer -->
|
||
<footer class="sticky-footer bg-white">
|
||
<div class="container my-auto">
|
||
<div class="copyright text-center my-auto">
|
||
<span>Copyright © SIS Vietnam 2026</span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
<!-- End of Footer -->
|
||
|
||
</div>
|
||
<!-- End of Content Wrapper -->
|
||
|
||
</div>
|
||
<!-- End of Page Wrapper -->
|
||
|
||
<!-- Scroll to Top Button-->
|
||
<a class="scroll-to-top rounded" href="#page-top">
|
||
<i class="fas fa-angle-up"></i>
|
||
</a>
|
||
|
||
<!-- Logout Modal-->
|
||
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||
aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>
|
||
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">Select "Logout" below if you are ready to end your current session.</div>
|
||
<div class="modal-footer">
|
||
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
|
||
<a class="btn btn-primary" href="#">Logout</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Bootstrap core JavaScript-->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||
<script th:inline="javascript">
|
||
$(document).ajaxError(function(event, jqXHR, settings, thrownError) {
|
||
if (jqXHR.status === 401 || jqXHR.status === 403) {
|
||
window.location.href = /*[[@{/manage/login?expired}]]*/ '/manage/login?expired';
|
||
}
|
||
});
|
||
</script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.bundle.min.js"></script>
|
||
|
||
<!-- Core plugin JavaScript-->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
|
||
|
||
<!-- Custom scripts for all pages-->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/startbootstrap-sb-admin-2/4.1.4/js/sb-admin-2.min.js"></script>
|
||
|
||
<!-- Select2 JS -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>
|
||
|
||
<!-- Page-specific scripts injected by child templates -->
|
||
<section layout:fragment="scripts"></section>
|
||
|
||
<!-- Admin Footer Hook -->
|
||
<th:block th:utext="${hookManager.doActionAndReturn('admin_footer')}"></th:block>
|
||
|
||
<!-- Admin Footer Scripts Hook -->
|
||
<th:block th:utext="${hookManager.applyFilters('admin_footer_scripts', '')}"></th:block>
|
||
|
||
</body>
|
||
|
||
</html> |