2024-05-17 09:16:10 +08:00
|
|
|
<header class="navbar" th:classappend="${!theme.config.basic_info.header_fixed}? 'animation' : 'fixed'" xmlns:th="https://www.thymeleaf.org">
|
2024-05-17 08:07:48 +08:00
|
|
|
<div class="navbar-above" th:classappend="${!theme.config.basic_info.header_fixed}? 'animation'">
|
2023-03-22 14:43:26 +08:00
|
|
|
<div th:class="${theme.config.basic_style.sidebar_column != 'all' ? 'container two-column' : 'container' }">
|
2023-09-12 10:44:43 +08:00
|
|
|
<i class="ri-list-unordered navbar-slideicon"></i>
|
2023-03-22 17:52:21 +08:00
|
|
|
<a class="navbar-item logo-title" th:href="${site.url}">
|
2023-03-22 14:19:49 +08:00
|
|
|
<th:block th:if="${#strings.isEmpty(site.logo)}" th:text="${site.title}"/>
|
|
|
|
<th:block th:unless="${#strings.isEmpty(site.logo)}">
|
2023-03-22 11:57:40 +08:00
|
|
|
<img class="logo-img" th:src="${site.logo}" th:alt="${site.title}" height="28">
|
2023-03-28 20:52:18 +08:00
|
|
|
<img class="logo-img-dark" th:src="${#strings.defaultString(theme.config.basic_info.night_logo, site.logo)}" th:alt="${site.title}" height="28">
|
2023-03-22 11:57:40 +08:00
|
|
|
</th:block>
|
|
|
|
</a>
|
2023-03-22 14:19:49 +08:00
|
|
|
<nav class="navbar-nav active-animate">
|
|
|
|
<th:block th:each="menuItem : ${menuFinder.getPrimary().menuItems}">
|
|
|
|
<a th:if="${#lists.isEmpty(menuItem.children)}"
|
|
|
|
class="item"
|
|
|
|
th:href="${menuItem.status.href}"
|
2023-07-19 13:56:59 +08:00
|
|
|
th:target="${menuItem.spec.target?.value}"
|
2024-02-05 08:41:35 +08:00
|
|
|
th:with="desc = ${#annotations.getOrDefault(menuItem, 'desc', menuItem.status.displayName)}"
|
|
|
|
th:title="${#strings.isEmpty(desc) ? menuItem.status.displayName : desc}">
|
2023-03-22 14:19:49 +08:00
|
|
|
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(menuItem, 'icon', ''))}"
|
|
|
|
th:class="${'m-icon ' + #annotations.getOrDefault(menuItem, 'icon', '')}"></i>
|
|
|
|
[[${menuItem.status.displayName}]]
|
|
|
|
</a>
|
|
|
|
<div th:unless="${#lists.isEmpty(menuItem.children)}" class="item-dropdown" trigger="hover" placement="60px">
|
|
|
|
<div class="item-dropdown-link">
|
|
|
|
<a class="item"
|
2023-04-24 14:01:19 +08:00
|
|
|
th:href="${#strings.defaultString(menuItem.status.href, 'javascript:')}"
|
2023-07-19 13:56:59 +08:00
|
|
|
th:target="${menuItem.spec.target?.value}"
|
2024-02-05 08:41:35 +08:00
|
|
|
th:with="desc = ${#annotations.getOrDefault(menuItem, 'desc', menuItem.status.displayName)}"
|
|
|
|
th:title="${#strings.isEmpty(desc) ? menuItem.status.displayName : desc}">
|
2023-03-22 14:19:49 +08:00
|
|
|
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(menuItem, 'icon', ''))}"
|
|
|
|
th:class="${'m-icon ' + #annotations.getOrDefault(menuItem, 'icon', '')}"></i>
|
|
|
|
[[${menuItem.status.displayName}]]
|
|
|
|
</a>
|
2023-09-12 10:44:43 +08:00
|
|
|
<i class="ri-arrow-down-s-line item-dropdown-link-icon" style="color:var(--main)"></i>
|
2023-03-22 14:19:49 +08:00
|
|
|
</div>
|
|
|
|
<nav class="item-dropdown-menu">
|
|
|
|
<li th:each="dropdown : ${menuItem.children}" class="item-sub-li">
|
|
|
|
<a class="item"
|
2023-04-24 14:01:19 +08:00
|
|
|
th:href="${#strings.defaultString(dropdown.status.href, 'javascript:')}"
|
2023-07-19 13:56:59 +08:00
|
|
|
th:target="${dropdown.spec.target?.value}"
|
2024-02-05 08:41:35 +08:00
|
|
|
th:with="desc = ${#annotations.getOrDefault(dropdown, 'desc', dropdown.status.displayName)}"
|
|
|
|
th:title="${#strings.isEmpty(desc) ? dropdown.status.displayName : desc}">
|
2023-03-22 14:19:49 +08:00
|
|
|
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(dropdown, 'icon', ''))}"
|
|
|
|
th:class="${'m-icon ' + #annotations.getOrDefault(dropdown, 'icon', '')}"></i>
|
|
|
|
[[${dropdown.status.displayName}]]
|
|
|
|
</a>
|
|
|
|
<ol class="item-sub" th:if="${!#lists.isEmpty(dropdown.children)}">
|
|
|
|
<li th:each="dropdownChild : ${dropdown.children}">
|
|
|
|
<a class="item"
|
|
|
|
th:href="${dropdownChild.status.href}"
|
2023-07-19 13:56:59 +08:00
|
|
|
th:target="${dropdownChild.spec.target?.value}"
|
2024-02-05 08:41:35 +08:00
|
|
|
th:with="desc = ${#annotations.getOrDefault(dropdownChild, 'desc', dropdownChild.status.displayName)}"
|
|
|
|
th:title="${#strings.isEmpty(desc) ? dropdownChild.status.displayName : desc}">
|
2023-03-22 14:19:49 +08:00
|
|
|
<i th:if="${!#strings.isEmpty(#annotations.getOrDefault(dropdownChild, 'icon', ''))}"
|
|
|
|
th:class="${'m-icon ' + #annotations.getOrDefault(dropdownChild, 'icon', '')}"></i>
|
|
|
|
[[${dropdownChild.status.displayName}]]
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
</li>
|
|
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
</th:block>
|
|
|
|
</nav>
|
2023-08-28 17:01:34 +08:00
|
|
|
<div th:if="${pluginFinder.available('PluginSearchWidget')}" class="navbar-search">
|
2024-07-10 21:26:10 +08:00
|
|
|
<button th:unless="${theme.config.page_config.search.search_enable}" onclick="javascript:SearchWidget.open();" class="submit" aria-label="搜索按钮" style="border-radius: 17px;"><i class="ri-search-line"></i></button>
|
|
|
|
<a th:if="${theme.config.page_config.search.search_enable}" target="_self" href="/search" class="submit" aria-label="搜索按钮" style="border-radius: 17px;display: flex;align-items: center;justify-content: center;"><i class="ri-search-line"></i></a>
|
2023-08-28 17:01:34 +08:00
|
|
|
</div>
|
2024-07-10 21:26:10 +08:00
|
|
|
<i th:unless="${theme.config.page_config.search.search_enable}" class="ri-search-line navbar-searchicon" onclick="javascript:SearchWidget.open();"></i>
|
|
|
|
<a th:if="${theme.config.page_config.search.search_enable}" class="navbar-searchicon" target="_self" href="/search"><i class="ri-search-line navbar-searchicon"></i></a>
|
2024-10-15 19:06:02 +08:00
|
|
|
<a th:if="${theme.config.basic_style.console.show_console}" class="navbar-console" th:href="@{${theme.config.basic_style.console.console_url}}" th:target="${theme.config.basic_style.console.console_target}"
|
2024-02-12 07:54:15 +08:00
|
|
|
th:title="${theme.config.basic_style.console.console_title}">
|
|
|
|
<i th:class="${#strings.defaultString(theme.config.basic_style.console.console_icon, 'ri-equalizer-line')}"></i>
|
|
|
|
</a>
|
2023-03-22 11:57:40 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2023-03-25 16:28:00 +08:00
|
|
|
<div class="navbar-slideout">
|
|
|
|
<div class="navbar-slideout-wrap">
|
|
|
|
<div class="navbar-slideout-author">
|
|
|
|
<img width="50" height="50" th:src="${contributor.avatar}" th:alt="${contributor.displayName}" class="avatar"/>
|
|
|
|
<div class="info">
|
2023-07-19 13:56:59 +08:00
|
|
|
<p class="link" th:text="${contributor.displayName}"></p>
|
2023-03-25 16:28:00 +08:00
|
|
|
<p class="motto" th:text="${contributor.bio}"></p>
|
|
|
|
</div>
|
|
|
|
</div>
|
2024-01-03 14:31:42 +08:00
|
|
|
<ul class="navbar-slideout-menu" th:if="${!#lists.isEmpty(theme.config.sidebar.custom_stats)}">
|
|
|
|
<li class="item" th:each="itemData,sindex :${theme.config.sidebar.custom_stats}" th:switch="${itemData.type}">
|
|
|
|
<div th:case="visit">
|
|
|
|
<i class="ri-pie-chart-line"></i>
|
2024-03-13 17:24:59 +08:00
|
|
|
<span>累计收获 <strong th:text="${stats.visit}"></strong> 次访问</span>
|
2024-01-03 14:31:42 +08:00
|
|
|
</div>
|
|
|
|
<div th:case="upvote">
|
|
|
|
<i class="ri-thumb-up-line"></i>
|
|
|
|
<span>累计收获 <strong th:text="${stats.upvote}"></strong> 个点赞</span>
|
|
|
|
</div>
|
|
|
|
<div th:case="comment">
|
|
|
|
<i class="ri-message-2-line"></i>
|
|
|
|
<span>累计收到 <strong th:text="${stats.comment}"></strong> 条评论</span>
|
|
|
|
</div>
|
|
|
|
<div th:case="category">
|
|
|
|
<i class="ri-apps-line"></i>
|
|
|
|
<span>累计创建 <strong th:text="${stats.category}"></strong> 个分类</span>
|
|
|
|
</div>
|
|
|
|
<div th:case="tag" th:with="tagsList = ${tagFinder.listAll()}, tags = ${#lists.size(tagsList)}">
|
|
|
|
<i class="ri-price-tag-2-line"></i>
|
|
|
|
<span>累计创建 <strong th:text="${tags}"></strong> 个标签</span>
|
|
|
|
</div>
|
|
|
|
<div th:case="*">
|
|
|
|
<i class="ri-edit-circle-line"></i>
|
|
|
|
<span>累计撰写 <strong th:text="${stats.post}"></strong> 篇文章</span>
|
|
|
|
</div>
|
2023-03-25 16:28:00 +08:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<ul class="navbar-slideout-menu not-toc">
|
|
|
|
<li>
|
|
|
|
<a class="link panel" href="#" rel="nofollow">
|
|
|
|
<span>导航</span>
|
2023-09-12 10:44:43 +08:00
|
|
|
<i class="ri-arrow-right-s-line"></i>
|
2023-03-25 16:28:00 +08:00
|
|
|
</a>
|
|
|
|
<ul class="slides panel-body panel-side-menu">
|
|
|
|
<li th:each="menuItem : ${menuFinder.getPrimary().menuItems}">
|
|
|
|
<a class="link"
|
|
|
|
th:if="${#lists.isEmpty(menuItem.children)}"
|
|
|
|
th:href="${menuItem.status.href}"
|
|
|
|
th:title="${menuItem.status.displayName}"
|
|
|
|
th:text="${menuItem.status.displayName}"></a>
|
|
|
|
<th:block th:unless="${#lists.isEmpty(menuItem.children)}">
|
|
|
|
<div class="link panel">
|
|
|
|
<a th:href="${menuItem.status.href}"
|
|
|
|
th:title="${menuItem.status.displayName}"
|
|
|
|
th:text="${menuItem.status.displayName}"></a>
|
2023-09-12 10:44:43 +08:00
|
|
|
<i class="ri-arrow-right-s-line"></i>
|
2023-03-25 16:28:00 +08:00
|
|
|
</div>
|
|
|
|
<ul class="slides panel-body">
|
|
|
|
<li th:each="dropdown : ${menuItem.children}">
|
|
|
|
<a class="link"
|
|
|
|
th:if="${#lists.isEmpty(dropdown.children)}"
|
|
|
|
th:href="${dropdown.status.href}"
|
|
|
|
th:title="${dropdown.status.displayName}"
|
|
|
|
th:text="${dropdown.status.displayName}"></a>
|
|
|
|
<th:block th:unless="${#lists.isEmpty(dropdown.children)}">
|
|
|
|
<div class="link panel">
|
|
|
|
<a th:href="${dropdown.status.href}"
|
|
|
|
th:title="${dropdown.status.displayName}"
|
|
|
|
th:text="${dropdown.status.displayName}"></a>
|
2023-09-12 10:44:43 +08:00
|
|
|
<i class="ri-arrow-right-s-line"></i>
|
2023-03-25 16:28:00 +08:00
|
|
|
</div>
|
|
|
|
<ul class="slides panel-body">
|
|
|
|
<li th:each="dropdownChild : ${dropdown.children}">
|
|
|
|
<a class="link"
|
|
|
|
th:href="${dropdownChild.status.href}"
|
|
|
|
th:title="${dropdownChild.status.displayName}"
|
|
|
|
th:text="${dropdownChild.status.displayName}"></a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</th:block>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</th:block>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<ul th:if="${theme.config.basic_style.drawer_toc}" class="navbar-slideout-menu is-toc">
|
|
|
|
<a class="link in" href="#" rel="nofollow"><span>目录</span></a>
|
|
|
|
<div class="toc-content">
|
|
|
|
</div>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-03-22 11:57:40 +08:00
|
|
|
|
|
|
|
<div class="navbar-mask"></div>
|
2024-01-03 14:31:42 +08:00
|
|
|
</header>
|