174 lines
12 KiB
HTML
Raw Normal View History

2024-05-17 08:07:48 +08:00
<header class="navbar" th:classappend="${!theme.config.basic_info.header_fixed}? 'animation'" xmlns:th="https://www.thymeleaf.org">
<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">
<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}"
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"
th:href="${#strings.defaultString(menuItem.status.href, 'javascript:')}"
2023-07-19 13:56:59 +08:00
th:target="${menuItem.spec.target?.value}"
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"
th:href="${#strings.defaultString(dropdown.status.href, 'javascript:')}"
2023-07-19 13:56:59 +08:00
th:target="${dropdown.spec.target?.value}"
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}"
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">
2023-09-12 10:44:43 +08:00
<button onclick="javascript:SearchWidget.open();" class="submit" aria-label="搜索按钮" style="border-radius: 17px;"><i class="ri-search-line"></i></button>
2023-08-28 17:01:34 +08:00
</div>
<i class="ri-search-line navbar-searchicon" onclick="javascript:SearchWidget.open();"></i>
2024-02-12 07:54:15 +08:00
<a th:if="${theme.config.basic_style.console.show_console}" class="navbar-console" href="/console" target="_blank"
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>
<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>
<span>累计收获 <strong th:text="${stats.visit}"></strong> 次访问</span>
</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>
</header>