Commit 8c365bd6 authored by Van's avatar Van

Merge remote-tracking branch 'origin/dev' into dev

parents d2217640 1272f605
<?xml version="1.0" encoding="UTF-8"?>
<!--
Description: Solo POM.
Version: 3.18.3.77, Jan 3, 2020
Version: 3.18.3.78, Jan 7, 2020
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
......@@ -73,7 +73,7 @@
</scm>
<properties>
<org.b3log.latke.version>3.0.21</org.b3log.latke.version>
<org.b3log.latke.version>3.0.22</org.b3log.latke.version>
<slf4j.version>1.7.28</slf4j.version>
<jsoup.version>1.12.1</jsoup.version>
......
......@@ -53,7 +53,7 @@ import java.util.Map;
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="https://hacpai.com/member/DASHU">DASHU</a>
* @author <a href="https://vanessa.b3log.org">Vanessa</a>
* @version 1.2.4.17, Jul 17, 2019
* @version 1.2.4.18, Jan 7, 2020
* @since 0.3.1
*/
@RequestProcessor
......@@ -100,7 +100,7 @@ public class IndexProcessor {
* @param context the specified context
* @throws Exception exception
*/
@RequestProcessing(value = {"", "/"}, method = HttpMethod.GET)
@RequestProcessing(value = {"", "/", "/index.html"}, method = HttpMethod.GET)
public void showIndex(final RequestContext context) {
final Request request = context.getRequest();
final Response response = context.getResponse();
......
......@@ -52,7 +52,7 @@ import static org.b3log.solo.model.Article.*;
* Article management service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.3.4.0, Nov 7, 2019
* @version 1.3.4.1, Jan 8, 2020
* @since 0.3.5
*/
@Service
......@@ -649,36 +649,35 @@ public class ArticleMgmtService {
* @throws ServiceException service exception
*/
public void incViewCount(final String articleId) throws ServiceException {
JSONObject article;
try {
article = articleRepository.get(articleId);
if (null == article) {
return;
}
} catch (final RepositoryException e) {
LOGGER.log(Level.ERROR, "Gets article [id=" + articleId + "] failed", e);
return;
}
final Transaction transaction = articleRepository.beginTransaction();
try {
article.put(Article.ARTICLE_VIEW_COUNT, article.getInt(Article.ARTICLE_VIEW_COUNT) + 1);
articleRepository.update(articleId, article, ARTICLE_VIEW_COUNT);
transaction.commit();
} catch (final Exception e) {
if (transaction.isActive()) {
transaction.rollback();
}
LOGGER.log(Level.WARN, "Updates article view count failed");
throw new ServiceException(e);
}
// JSONObject article;
//
// try {
// article = articleRepository.get(articleId);
//
// if (null == article) {
// return;
// }
// } catch (final RepositoryException e) {
// LOGGER.log(Level.ERROR, "Gets article [id=" + articleId + "] failed", e);
//
// return;
// }
//
// final Transaction transaction = articleRepository.beginTransaction();
// try {
// article.put(Article.ARTICLE_VIEW_COUNT, article.getInt(Article.ARTICLE_VIEW_COUNT) + 1);
// articleRepository.update(articleId, article, ARTICLE_VIEW_COUNT);
//
// transaction.commit();
// } catch (final Exception e) {
// if (transaction.isActive()) {
// transaction.rollback();
// }
//
// LOGGER.log(Level.WARN, "Updates article view count failed");
//
// throw new ServiceException(e);
// }
}
/**
......
......@@ -617,6 +617,13 @@ public class DataModelService {
dataModel.put(Option.ID_C_HLJS_THEME, hljsTheme);
dataModel.put(Common.COMMENTABLE, preference.optBoolean(Option.ID_C_COMMENTABLE));
dataModel.put("staticSite", Solos.GEN_STATIC_SITE);
if (!Solos.GEN_STATIC_SITE) {
dataModel.put("pagingSep", "?p=");
} else {
dataModel.put("pagingSep", "/p/");
}
}
/**
......
......@@ -48,7 +48,7 @@ import java.util.concurrent.ConcurrentHashMap;
* Statistic management service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 2.0.1.4, Nov 19, 2019
* @version 2.0.1.5, Jan 8, 2020
* @since 0.5.0
*/
@Service
......@@ -211,40 +211,40 @@ public class StatisticMgmtService {
* @throws ServiceException service exception
*/
public void incBlogViewCount(final RequestContext context, final Response response) throws ServiceException {
if (Solos.isBot(context.getRequest())) {
return;
}
if (hasBeenServed(context, response)) {
return;
}
final Transaction transaction = optionRepository.beginTransaction();
JSONObject statistic;
try {
statistic = optionRepository.get(Option.ID_C_STATISTIC_BLOG_VIEW_COUNT);
if (null == statistic) {
return;
}
LOGGER.log(Level.TRACE, "Before inc blog view count is [{0}]", statistic);
statistic.put(Option.OPTION_VALUE, statistic.optInt(Option.OPTION_VALUE) + 1);
updateStatistic(Option.ID_C_STATISTIC_BLOG_VIEW_COUNT, statistic);
transaction.commit();
} catch (final RepositoryException e) {
if (transaction.isActive()) {
transaction.rollback();
}
LOGGER.log(Level.ERROR, "Updates blog view count failed", e);
return;
}
LOGGER.log(Level.TRACE, "Inced blog view count[statistic={0}]", statistic);
// if (Solos.isBot(context.getRequest())) {
// return;
// }
//
// if (hasBeenServed(context, response)) {
// return;
// }
//
// final Transaction transaction = optionRepository.beginTransaction();
// JSONObject statistic;
// try {
// statistic = optionRepository.get(Option.ID_C_STATISTIC_BLOG_VIEW_COUNT);
// if (null == statistic) {
// return;
// }
//
// LOGGER.log(Level.TRACE, "Before inc blog view count is [{0}]", statistic);
//
// statistic.put(Option.OPTION_VALUE, statistic.optInt(Option.OPTION_VALUE) + 1);
//
// updateStatistic(Option.ID_C_STATISTIC_BLOG_VIEW_COUNT, statistic);
//
// transaction.commit();
// } catch (final RepositoryException e) {
// if (transaction.isActive()) {
// transaction.rollback();
// }
//
// LOGGER.log(Level.ERROR, "Updates blog view count failed", e);
//
// return;
// }
//
// LOGGER.log(Level.TRACE, "Inced blog view count[statistic={0}]", statistic);
}
/**
......
/*
* Solo - A small and beautiful blogging system written in Java.
* Copyright (c) 2010-present, b3log.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.b3log.solo.util;
import io.netty.handler.codec.http.*;
import org.apache.commons.lang.StringUtils;
import org.b3log.latke.http.Dispatcher;
import org.b3log.latke.http.Request;
import org.b3log.latke.http.Response;
import org.b3log.latke.util.URLs;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Mock utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Jan 7, 2020
* @since 3.9.0
*/
public final class Mocks {
private Mocks() {
}
public static String mockRequest(final String uri) {
final Mocks.MockRequest request = Mocks.mockRequest();
request.setRequestURI(uri);
if (StringUtils.contains(uri, "?")) {
final Map<String, String> params = new LinkedHashMap<>();
final String query = StringUtils.substringAfter(uri, "?");
String[] pairs = query.split("&");
for (String pair : pairs) {
int idx = pair.indexOf("=");
params.put(URLs.decode(pair.substring(0, idx)), URLs.decode(pair.substring(idx + 1)));
}
request.setParams(params);
}
final Mocks.MockResponse response = Mocks.mockResponse();
Mocks.mockDispatcher(request, response);
return response.getString();
}
private static void mockDispatcher(final Request request, final Response response) {
new MockDispatcher().handle(request, response);
}
private static MockRequest mockRequest() {
final FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/a");
return new MockRequest(req);
}
private static MockResponse mockResponse() {
final HttpResponse res = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
final MockResponse response = new MockResponse(res);
return response;
}
private static class MockDispatcher {
public void handle(final Request req, final Response resp) {
Dispatcher.handle(req, resp);
}
}
private static class MockRequest extends Request {
public MockRequest(final FullHttpRequest req) {
super(null, req);
}
@Override
public String getRemoteAddr() {
return "localhost mock";
}
}
private static class MockResponse extends Response {
public MockResponse(final HttpResponse res) {
super(null, res);
}
}
}
......@@ -48,7 +48,7 @@ import java.util.Set;
* Solo utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.9.0.5, Jan 2, 2020
* @version 1.9.0.6, Jan 8, 2020
* @since 2.8.0
*/
public final class Solos {
......@@ -83,6 +83,11 @@ public final class Solos {
*/
public static final String COOKIE_SECRET;
/**
* Indicates generating a static site.
*/
public static boolean GEN_STATIC_SITE = false;
static {
ResourceBundle solo;
try {
......
......@@ -48,8 +48,6 @@
<input id="blogTitle" type="text"/>
<label for="blogSubtitle">${blogSubtitle1Label}</label>
<input id="blogSubtitle" type="text"/>
<label for="blogHost">${blogHost1Label}</label>
<input id="blogHost" type="text" value="${serverHost}" readonly="true"/>
<label for="metaKeywords">${metaKeywords1Label}</label>
<input id="metaKeywords" type="text"/>
<label for="metaDescription">${metaDescription1Label}</label>
......
......@@ -19,7 +19,7 @@
-->
<div class="module-panel">
<div class="module-header">
<a href="https://github.com/b3log/solo/issues/12449" target="_blank">新皮肤推荐</a> •
<a href="https://github.com/88250/solo/issues/2" target="_blank">新皮肤推荐</a> •
<a href="https://hacpai.com/article/1493814851007" target="_blank">皮肤开发指南</a>
</div>
<div class="module-body padding12"><div id="skinMain"></div></div>
......
......@@ -262,7 +262,6 @@ pageSizeLabel=Pagination Page Size
pageSize1Label=Pagination Page Size:
blogTitle1Label=Blog Title:
blogSubtitle1Label=Blog Subtitle:
blogHost1Label=<a href="https://github.com/b3log/solo/issues/12716" target="_blank">Blog Domain</a>:
submmitCommentLabel=Commit Comment
saveLabel=Save
tagLabel=Tag
......
......@@ -262,7 +262,6 @@ pageSizeLabel=\u5206\u9875\u6BCF\u9875\u663E\u793A\u6587\u7AE0\u6570
pageSize1Label=\u5206\u9875\u6BCF\u9875\u663E\u793A\u6587\u7AE0\u6570\uFF1A
blogTitle1Label=\u535A\u5BA2\u6807\u9898\uFF1A
blogSubtitle1Label=\u535A\u5BA2\u5B50\u6807\u9898\uFF1A
blogHost1Label=<a href="https://github.com/b3log/solo/issues/12716" target="_blank">\u535A\u5BA2\u57DF\u540D</a>\uFF1A
submmitCommentLabel=\u63D0\u4EA4\u8BC4\u8BBA
saveLabel=\u4FDD\u5B58
tagLabel=\u6807\u7B7E
......
......@@ -82,19 +82,19 @@
<div class="fn-clear">
<nav class="pagination fn-right">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="page-number">&laquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="page-number">&laquo;</a>
<a class="page-number" href="${servePath}${path}">1</a> <span class="page-number">...</span>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="page-number current">${paginationPageNum}</span>
<#else>
<a class="page-number" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="page-number" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> <span class="page-number">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="page-number">&raquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="page-number">&raquo;</a>
</#if>
</nav>
</div>
......
......@@ -71,18 +71,18 @@
<div class="pagination right">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}" title="${firstPageLabel}"><<</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a title="${lastPageLabel}" href="${servePath}${path}?p=${paginationPageCount}">>></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a title="${lastPageLabel}" href="${servePath}${path}${pagingSep}${paginationPageCount}">>></a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -52,14 +52,14 @@
<div class="col-sm-4">
<#if 1 < paginationCurrentPageNum>
<#assign prePage = paginationCurrentPageNum - 1>
<a class="btn btn-success" href="${servePath}${path}?p=${prePage}">Newer</a>
<a class="btn btn-success" href="${servePath}${path}${pagingSep}${prePage}">Newer</a>
</#if>
</div>
<div class="col-sm-4 text-right">
<#if paginationCurrentPageNum < paginationPageCount>
<#assign nextPage = paginationCurrentPageNum + 1>
<a class="btn btn-success" href="${servePath}${path}?p=${nextPage}">Older</a>
<a class="btn btn-success" href="${servePath}${path}${pagingSep}${nextPage}">Older</a>
</#if>
</div>
......
......@@ -71,7 +71,7 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
aria-label="${previousPageLabel}"
class="pagination__item vditor-tooltipped__n vditor-tooltipped">&laquo;</a>
<a class="pagination__item" href="${servePath}${path}">1</a>
......@@ -81,13 +81,13 @@
<#if paginationPageNum == paginationCurrentPageNum>
<span class="pagination__item pagination__item--active">${paginationPageNum}</span>
<#else>
<a class="pagination__item" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="pagination__item" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__item--omit">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" aria-label="${nextPagePabel}"
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" aria-label="${nextPagePabel}"
class="pagination__item vditor-tooltipped__n vditor-tooltipped">&raquo;</a>
</#if>
</nav>
......
......@@ -82,7 +82,7 @@
</li>
</#list>
<li>
<a href="${servePath}/category.html">${categoryLabel}</a>
<a href="${servePath}/categories.html">${categoryLabel}</a>
</li>
<li>
<a href="${servePath}/tags.html">${allTagsLabel}</a>
......
......@@ -86,7 +86,7 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a pjax-title="${blogTitle}" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a pjax-title="${blogTitle}" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
aria-label="${previousPageLabel}"
class="pagination__item vditor-tooltipped__n vditor-tooltipped">&laquo;</a>
<a pjax-title="${blogTitle}" class="pagination__item" href="${servePath}${path}">1</a>
......@@ -96,13 +96,13 @@
<#if paginationPageNum == paginationCurrentPageNum>
<span class="pagination__item pagination__item--active">${paginationPageNum}</span>
<#else>
<a pjax-title="${blogTitle}" class="pagination__item" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a pjax-title="${blogTitle}" class="pagination__item" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__item--omit">...</span>
<a pjax-title="${blogTitle}" href="${servePath}${path}?p=${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a pjax-title="${blogTitle}" href="${servePath}${path}?p=${paginationNextPageNum}" aria-label="${nextPagePabel}"
<a pjax-title="${blogTitle}" href="${servePath}${path}${pagingSep}${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a pjax-title="${blogTitle}" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" aria-label="${nextPagePabel}"
class="pagination__item vditor-tooltipped__n vditor-tooltipped">&raquo;</a>
</#if>
</nav>
......
......@@ -108,18 +108,18 @@
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -20,11 +20,11 @@
<#if !isIndex && paginationCurrentPageNum != 1>
<nav class="pagination fn-clear fn-wrap" role="navigation">
<#if paginationCurrentPageNum != 1>
<a class="fn-left" href="${servePath}${path}?p=${paginationPreviousPageNum}">← ${previousPageLabel}</a>
<a class="fn-left" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">← ${previousPageLabel}</a>
</#if>
<span>${pageLabel} ${paginationCurrentPageNum} of ${paginationPageCount}</span>
<#if paginationPageCount != paginationCurrentPageNum>
<a class="fn-right" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel} →</a>
<a class="fn-right" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel} →</a>
</#if>
</nav>
</#if>
......@@ -71,11 +71,11 @@
<#if 0 != paginationPageCount>
<nav class="pagination fn-clear fn-wrap" role="navigation">
<#if paginationCurrentPageNum != 1>
<a class="fn-left" href="${servePath}${path}?p=${paginationPreviousPageNum}">← ${previousPageLabel}</a>
<a class="fn-left" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">← ${previousPageLabel}</a>
</#if>
<span>${pageLabel} ${paginationCurrentPageNum} of ${paginationPageCount}</span>
<#if paginationPageCount != paginationCurrentPageNum>
<a class="fn-right" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel} →</a>
<a class="fn-right" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel} →</a>
</#if>
</nav>
</#if>
\ No newline at end of file
......@@ -43,7 +43,7 @@
</li>
</#if>
<li>
<a href="${servePath}/category.html">${categoryLabel}</a>
<a href="${servePath}/categories.html">${categoryLabel}</a>
</li>
<li>
<a href="${servePath}/tags.html">${allTagsLabel}</a>
......
......@@ -66,7 +66,7 @@
<#if 0 != paginationPageCount>
<nav class="fn__flex pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="pagination__item fn__flex-center">&laquo; Prev</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="pagination__item fn__flex-center">&laquo; Prev</a>
</#if>
<div class="fn__flex-1 ft__center">
......@@ -79,18 +79,18 @@
<span class="pagination__item pagination__item--current">${paginationPageNum}</span>
<#else>
<a class="pagination__item"
href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}"
<a href="${servePath}${path}${pagingSep}${paginationPageCount}"
class="pagination__item">${paginationPageCount}</a>
</#if>
</div>
<#if paginationPageNums?last != paginationPageCount>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="pagination__item fn__flex-center">Next &raquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="pagination__item fn__flex-center">Next &raquo;</a>
</#if>
</nav>
</#if>
\ No newline at end of file
......@@ -72,7 +72,7 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="pagination__item">&laquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="pagination__item">&laquo;</a>
<a class="pagination__item" href="${servePath}${path}">1</a>
<span class="pagination__item pagination__omit">...</span>
</#if>
......@@ -80,13 +80,13 @@
<#if paginationPageNum == paginationCurrentPageNum>
<span class="pagination__item pagination__item--active">${paginationPageNum}</span>
<#else>
<a class="pagination__item" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="pagination__item" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__omit">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="pagination__item">&raquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="pagination__item">&raquo;</a>
</#if>
</nav>
</#if>
\ No newline at end of file
......@@ -83,18 +83,18 @@
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}" title="${firstPageLabel}"><<</a>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" title="${previousPageLabel}"><</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="current">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="current">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a href="${servePath}${path}?p=${paginationPageCount}" title="${lastPageLabel}">>></a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" title="${lastPageLabel}">>></a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -68,7 +68,7 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="pagination__item">←</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="pagination__item">←</a>
<a class="pagination__item" href="${servePath}${path}">1</a>
<span class="pagination__item pagination__item--text">...</span>
</#if>
......@@ -77,14 +77,14 @@
<span class="pagination__item pagination__item--current">${paginationPageNum}</span>
<#else>
<a class="pagination__item"
href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__item--text">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}"
<a href="${servePath}${path}${pagingSep}${paginationPageCount}"
class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="pagination__item">→</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="pagination__item">→</a>
</#if>
</nav>
</#if>
......@@ -89,18 +89,18 @@
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -83,18 +83,18 @@
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -43,18 +43,18 @@
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</div>
</#if>
......
......@@ -73,18 +73,18 @@
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</#if>
</div>
......
......@@ -40,18 +40,18 @@
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</div>
</#if>
......
......@@ -39,7 +39,7 @@
</li>
</#if>
<li>
<a href="${servePath}/category.html">${categoryLabel}</a>
<a href="${servePath}/categories.html">${categoryLabel}</a>
</li>
<li>
<a href="${servePath}/tags.html">${allTagsLabel}</a>
......
......@@ -36,18 +36,18 @@
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</div>
</#if>
......
......@@ -42,18 +42,18 @@
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}"
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}" title="${nextPagePabel}">></a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</div>
</#if>
......
......@@ -75,19 +75,19 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="extend next"><<</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="extend next"><<</a>
<a class="page-number" href="${servePath}${path}">1</a> ...
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="page-number current">${paginationPageNum}</span>
<#else>
<a class="page-number" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="page-number" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> ...
<a href="${servePath}${path}?p=${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="extend next">>></a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="extend next">>></a>
</#if>
</nav>
</#if>
......@@ -78,7 +78,7 @@
<div class="fn__clear">
<nav class="pagination fn__right">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="pagination__item">&laquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="pagination__item">&laquo;</a>
<a class="pagination__item" href="${servePath}${path}">1</a>
<span class="pagination__item pagination__item--text">...</span>
</#if>
......@@ -86,13 +86,13 @@
<#if paginationPageNum == paginationCurrentPageNum>
<span class="pagination__item pagination__item--current">${paginationPageNum}</span>
<#else>
<a class="pagination__item" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="pagination__item" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__item--text">...</span>
<a href="${servePath}${path}?p=${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="pagination__item">&raquo;</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="pagination__item">&raquo;</a>
</#if>
</nav>
</div>
......
......@@ -70,18 +70,18 @@
<div>
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -69,18 +69,18 @@
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
<a id="previousPage" href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
<a id="nextPage" href="${servePath}${path}${pagingSep}${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
......
......@@ -85,19 +85,19 @@
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="extend">${previousPageLabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPreviousPageNum}" class="extend">${previousPageLabel}</a>
<a class="page-num" href="${servePath}${path}">1</a> ...
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="current page-num">${paginationPageNum}</span>
<#else>
<a class="page-num" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
<a class="page-num" href="${servePath}${path}${pagingSep}${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> ...
<a href="${servePath}${path}?p=${paginationPageCount}" class="page-num">${paginationPageCount}</a>
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="extend">${nextPagePabel}</a>
<a href="${servePath}${path}${pagingSep}${paginationPageCount}" class="page-num">${paginationPageCount}</a>
<a href="${servePath}${path}${pagingSep}${paginationNextPageNum}" class="extend">${nextPagePabel}</a>
</#if>
</nav>
</#if>
我的静态博客站点。
愉快地使用 [Solo](https://solo.b3log.org) 博客系统生成 ❤
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment