feat: add UMass Amherst theme support, implement HTML snippet management system, and update page rendering logic
This commit is contained in:
@@ -11,12 +11,16 @@
|
||||
<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">
|
||||
<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">
|
||||
|
||||
<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}">
|
||||
<!-- Admin Head Hook -->
|
||||
@@ -32,11 +36,12 @@
|
||||
<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}">
|
||||
<div class="sidebar-brand-icon rotate-n-15">
|
||||
<i class="fas fa-laugh-wink"></i>
|
||||
<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>
|
||||
<!-- <div class="sidebar-brand-text mx-3">SIS Manage</div> -->
|
||||
</a>
|
||||
|
||||
<!-- Divider -->
|
||||
@@ -49,7 +54,8 @@
|
||||
<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 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>
|
||||
@@ -122,7 +128,8 @@
|
||||
<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 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>
|
||||
@@ -149,7 +156,8 @@
|
||||
<i class="fas fa-fw fa-plug"></i>
|
||||
<span>Plugins</span>
|
||||
</a>
|
||||
<div id="collapsePlugins" class="collapse" aria-labelledby="headingPlugins" data-parent="#accordionSidebar">
|
||||
<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>
|
||||
@@ -206,7 +214,8 @@
|
||||
<i class="fas fa-fw fa-cogs"></i>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
<div id="collapseSettings" class="collapse" aria-labelledby="headingSettings" data-parent="#accordionSidebar">
|
||||
<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>
|
||||
@@ -227,8 +236,7 @@
|
||||
<i class="fas fa-fw fa-wrench"></i>
|
||||
<span>Tools</span>
|
||||
</a>
|
||||
<div id="collapseTools" class="collapse" aria-labelledby="headingTools"
|
||||
data-parent="#accordionSidebar">
|
||||
<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>
|
||||
@@ -241,6 +249,35 @@
|
||||
<!-- 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>
|
||||
@@ -270,7 +307,8 @@
|
||||
<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>
|
||||
<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>
|
||||
@@ -283,9 +321,10 @@
|
||||
</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}" />
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
|
||||
</form>
|
||||
<a class="dropdown-item" href="#" onclick="document.getElementById('logoutForm').submit(); return false;">
|
||||
<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>
|
||||
@@ -365,4 +404,4 @@
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
Reference in New Issue
Block a user