Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
dec68aa2
Commit
dec68aa2
authored
Jan 29, 2018
by
Liang Ding
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.6.0-dev' of
https://github.com/b3log/solo
into 2.6.0-dev
parents
02cb2cfc
ae8b462a
Changes
30
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
2338 additions
and
1 deletion
+2338
-1
.gitignore
.gitignore
+1
-1
src/main/webapp/skins/Medium/archive-articles.ftl
src/main/webapp/skins/Medium/archive-articles.ftl
+34
-0
src/main/webapp/skins/Medium/archives.ftl
src/main/webapp/skins/Medium/archives.ftl
+42
-0
src/main/webapp/skins/Medium/article-list.ftl
src/main/webapp/skins/Medium/article-list.ftl
+78
-0
src/main/webapp/skins/Medium/article.ftl
src/main/webapp/skins/Medium/article.ftl
+126
-0
src/main/webapp/skins/Medium/bottom.ftl
src/main/webapp/skins/Medium/bottom.ftl
+17
-0
src/main/webapp/skins/Medium/category-articles.ftl
src/main/webapp/skins/Medium/category-articles.ftl
+29
-0
src/main/webapp/skins/Medium/common-comment.ftl
src/main/webapp/skins/Medium/common-comment.ftl
+29
-0
src/main/webapp/skins/Medium/css/base.css
src/main/webapp/skins/Medium/css/base.css
+726
-0
src/main/webapp/skins/Medium/css/base.min.css
src/main/webapp/skins/Medium/css/base.min.css
+16
-0
src/main/webapp/skins/Medium/css/selection.json
src/main/webapp/skins/Medium/css/selection.json
+524
-0
src/main/webapp/skins/Medium/footer.ftl
src/main/webapp/skins/Medium/footer.ftl
+58
-0
src/main/webapp/skins/Medium/header.ftl
src/main/webapp/skins/Medium/header.ftl
+72
-0
src/main/webapp/skins/Medium/images/code-bg.png
src/main/webapp/skins/Medium/images/code-bg.png
+0
-0
src/main/webapp/skins/Medium/images/logo.png
src/main/webapp/skins/Medium/images/logo.png
+0
-0
src/main/webapp/skins/Medium/index.ftl
src/main/webapp/skins/Medium/index.ftl
+30
-0
src/main/webapp/skins/Medium/js/common.js
src/main/webapp/skins/Medium/js/common.js
+110
-0
src/main/webapp/skins/Medium/js/common.min.js
src/main/webapp/skins/Medium/js/common.min.js
+16
-0
src/main/webapp/skins/Medium/lang/lang_en_US.properties
src/main/webapp/skins/Medium/lang/lang_en_US.properties
+31
-0
src/main/webapp/skins/Medium/lang/lang_zh_CN.properties
src/main/webapp/skins/Medium/lang/lang_zh_CN.properties
+23
-0
src/main/webapp/skins/Medium/links.ftl
src/main/webapp/skins/Medium/links.ftl
+36
-0
src/main/webapp/skins/Medium/macro-comments.ftl
src/main/webapp/skins/Medium/macro-comments.ftl
+100
-0
src/main/webapp/skins/Medium/macro-head.ftl
src/main/webapp/skins/Medium/macro-head.ftl
+16
-0
src/main/webapp/skins/Medium/nav.ftl
src/main/webapp/skins/Medium/nav.ftl
+59
-0
src/main/webapp/skins/Medium/page.ftl
src/main/webapp/skins/Medium/page.ftl
+29
-0
src/main/webapp/skins/Medium/preview.png
src/main/webapp/skins/Medium/preview.png
+0
-0
src/main/webapp/skins/Medium/side.ftl
src/main/webapp/skins/Medium/side.ftl
+40
-0
src/main/webapp/skins/Medium/skin.properties
src/main/webapp/skins/Medium/skin.properties
+24
-0
src/main/webapp/skins/Medium/tag-articles.ftl
src/main/webapp/skins/Medium/tag-articles.ftl
+27
-0
src/main/webapp/skins/Medium/tags.ftl
src/main/webapp/skins/Medium/tags.ftl
+45
-0
No files found.
.gitignore
View file @
dec68aa2
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
src/main/webapp/skins/*
src/main/webapp/skins/*
!src/main/webapp/skins/mobile
!src/main/webapp/skins/mobile
!src/main/webapp/skins/
9IPHP
!src/main/webapp/skins/
Medium
src/main/webapp/markdowns/*
src/main/webapp/markdowns/*
!src/main/webapp/markdowns/README.md
!src/main/webapp/markdowns/README.md
...
...
src/main/webapp/skins/Medium/archive-articles.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount}) - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${archiveDate.archiveDateYear}${archiveDate.archiveDateMonth}"
/>
<meta
name=
"description"
content=
"<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main>
<div
class=
"title"
>
<h2
class=
"tip"
>
<i
class=
"icon-inbox"
></i>
<
#if
"
en
"
==
localeString
?
substring
(
0
,
2
)
>
${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear}
<
#else
>
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}
</
#
if>
- ${archiveDate.archiveDatePublishedArticleCount} ${articleLabel}
</h2>
</div>
<
#include
"
article-list
.
ftl
"
>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/Medium/archives.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${archiveLabel}"
/>
<meta
name=
"description"
content=
"${metaDescription},${archiveLabel}"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main
class=
"other"
>
<span
class=
"title"
>
<h2><i
class=
"icon-inbox"
></i>
${statistic.statisticPublishedBlogArticleCount} ${articleLabel}
</h2>
</span>
<
#if
0
!=
archiveDates
?
size
>
<ul
class=
"list"
>
<
#list
archiveDates
as
archiveDate
>
<li>
<
#if
"
en
"
==
localeString
?
substring
(
0
,
2
)
>
<a
class=
"post-title"
href=
"${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
>
${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})
</a>
<
#else
>
<a
class=
"post-title"
href=
"${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
>
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})
</a>
</
#
if>
</li>
</
#
list>
</ul>
</
#
if>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/Medium/article-list.ftl
0 → 100644
View file @
dec68aa2
<div>
<#list articles as article>
<article class="post">
<header>
<h1>
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
${article.articleTitle}
</a>
<#if article.articlePutTop>
<sup>
${topArticleLabel}
</sup>
</#if>
<#if article.hasUpdated>
<sup>
${updatedLabel}
</sup>
</#if>
</h1>
<div class="meta">
<span class="tooltipped tooltipped-n" aria-label="${createDateLabel}">
<i class="icon-date"></i>
<time>
${article.articleCreateDate?string("yyyy-MM-dd")}
</time>
</span>
|
<span class="tooltipped tooltipped-n" aria-label="${commentCountLabel}">
<i class="icon-comments"></i>
<a href="${servePath}${article.articlePermalink}#comments">
${article.articleCommentCount} ${commentLabel}</a>
</span>
|
<span class="tooltipped tooltipped-n" aria-label="${viewCountLabel}">
<i class="icon-views"></i>
${article.articleViewCount} ${viewLabel}
</span>
</div>
</header>
<div class="content-reset">
${article.articleAbstract}
</div>
<footer class="fn-clear tags">
<#list article.articleTags?split(",") as articleTag>
<a class="tag" rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
${articleTag}</a>
</#list>
<a href="${servePath}${article.articlePermalink}#more" rel="contents" class="fn-right">
${readLabel} »
</a>
</footer>
</article>
</#list>
<#if 0 != paginationPageCount>
<div class="fn-clear">
<nav class="pagination fn-right">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}/${paginationPreviousPageNum}" class="page-number">«</a>
<a class="page-number" href="${servePath}${path}/1">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}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> <span class="page-number">...</span>
<a href="${servePath}${path}/${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}/${paginationNextPageNum}" class="page-number">»</a>
</#if>
</nav>
</div>
</#if>
</div>
\ No newline at end of file
src/main/webapp/skins/Medium/article.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<
#include
"
macro-comments
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${article.articleTitle} - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${article.articleTags}"
/>
<meta
name=
"description"
content=
"${article.articleAbstract?html}"
/>
</
@
head>
<
#if
previousArticlePermalink
??
>
<link
rel=
"prev"
title=
"${previousArticleTitle}"
href=
"${servePath}${previousArticlePermalink}"
>
</
#
if>
<
#if
nextArticlePermalink
??
>
<link
rel=
"next"
title=
"${nextArticleTitle}"
href=
"${servePath}${nextArticlePermalink}"
>
</
#
if>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main>
<article
class=
"post"
>
<header>
<h1>
<a
rel=
"bookmark"
href=
"${servePath}${article.articlePermalink}"
>
${article.articleTitle}
</a>
<
#if
article
.
articlePutTop
>
<sup>
${topArticleLabel}
</sup>
</
#
if>
<
#if
article
.
hasUpdated
>
<sup>
${updatedLabel}
</sup>
</
#
if>
</h1>
<div
class=
"meta"
>
<span
class=
"tooltipped tooltipped-n"
aria-label=
"${createDateLabel}"
>
<i
class=
"icon-date"
></i>
<time>
${article.articleCreateDate?string("yyyy-MM-dd")}
</time>
</span>
|
<span
class=
"tooltipped tooltipped-n"
aria-label=
"${commentCountLabel}"
>
<i
class=
"icon-comments"
></i>
<a
href=
"${servePath}${article.articlePermalink}#comments"
>
${article.articleCommentCount} ${commentLabel}
</a>
</span>
|
<span
class=
"tooltipped tooltipped-n"
aria-label=
"${viewCountLabel}"
>
<i
class=
"icon-views"
></i>
${article.articleViewCount} ${viewLabel}
</span>
</div>
</header>
<div
class=
"content-reset"
>
${article.articleContent}
<
#if
""
!=
article
.
articleSign
.
signHTML
?
trim
>
<div>
${article.articleSign.signHTML}
</div>
</
#
if>
</div>
<footer
class=
"tags"
>
<
#list
article
.
articleTags
?
split
(",")
as
articleTag
>
<a
class=
"tag"
rel=
"tag"
href=
"${servePath}/tags/${articleTag?url('UTF-8')}"
>
${articleTag}
</a>
</
#
list>
<
#--
div
class=
"copyright"
>
${articleCP1Label}
<a
rel=
"bookmark"
href=
"${servePath}${article.articlePermalink}"
>
${article.articleTitle}
</a>
-
<a
href=
"${servePath}"
>
${blogTitle}
</a>
</div
--
>
<div
class=
"rel fn-clear"
>
<
#if
previousArticlePermalink
??
>
<a
href=
"${servePath}${previousArticlePermalink}"
rel=
"prev"
class=
"fn-left tooltipped tooltipped-n"
aria-label=
"${previousArticleTitle}"
>
${previousArticleLabel}
</a>
</
#
if>
<
#if
nextArticlePermalink
??
>
<a
href=
"${servePath}${nextArticlePermalink}"
rel=
"next"
class=
"fn-right tooltipped tooltipped-n"
aria-label=
"${nextArticleTitle}"
>
${nextArticleLabel}
</a>
</
#
if>
</div>
</footer>
<
@
comments
commentList=
articleComments
article=
article
></
@
comments>
<div
id=
"externalRelevantArticles"
class=
"list"
></div>
<div
id=
"relevantArticles"
class=
"list"
></div>
<div
id=
"randomArticles"
class=
"list"
></div>
</article>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
<
@
comment_script
oId=
article.oId
>
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
<
#if
0
!=
randomArticlesDisplayCount
>
page.loadRandomArticles();
</
#
if>
<
#if
0
!=
externalRelevantArticlesDisplayCount
>
page.loadExternalRelevantArticles("
<
#list
article
.
articleTags
?
split
(",")
as
articleTag
>
${articleTag}
<
#if
articleTag_has_next
>
,
</
#
if></
#
list>
"
, "
<header
class=
'title'
><h2>
${externalRelevantArticlesLabel}
</h2></header>
");
</
#
if>
<
#if
0
!=
relevantArticlesDisplayCount
>
page.loadRelevantArticles('${article.oId}', '
<h4>
${relevantArticlesLabel}
</h4>
');
</
#
if>
</
@
comment
_script
>
</body>
</html>
src/main/webapp/skins/Medium/bottom.ftl
0 → 100644
View file @
dec68aa2
<div class="footer__tag wrapper">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<a class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${category.categoryTagCnt} ${cntLabel}${tagsLabel}"
href="${servePath}/tags/${category.categoryURI}">${category.categoryTitle}</a>
</#list>
</#if>
<#if 0 != mostUsedTags?size>
<#list mostUsedTags as tag>
<a rel="tag"
class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${tag.tagPublishedRefCount} ${countLabel}${articleLabel}"
href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">${tag.tagTitle}</a>
</#list>
</#if>
</div>
\ No newline at end of file
src/main/webapp/skins/Medium/category-articles.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${category.categoryTitle} - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${category.categoryTitle}"
/>
<meta
name=
"description"
content=
"<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main>
<div
class=
"title"
>
<h2
class=
"tip"
><i
class=
"icon-category"
></i>
${category.categoryTitle}
<small>
${category.categoryDescription}
</small>
</h2>
</div>
<
#include
"
article-list
.
ftl
"
>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/Medium/common-comment.ftl
0 → 100644
View file @
dec68aa2
<li id="${comment.oId}">
<div>
<div class="avatar tooltipped tooltipped-n" aria-label="${comment.commentName}"
style="background-image: url(${comment.commentThumbnailURL})"></div>
<main>
<div class="fn-clear">
<#if "http://" == comment.commentURL>
${comment.commentName}
<#else>
<a class="user-name" href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
</#if>
<#if comment.isReply>
@<a class="user-name" href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}"
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
>${comment.commentOriginalCommentName}</a>
</#if>
<time class="ft-gray">${comment.commentDate2?string("yyyy-MM-dd HH:mm")}</time>
<#if article.commentable>
<a class="reply-btn" href="javascript:replyTo('${comment.oId}')">${replyLabel}</a>
</#if>
</div>
<div class="content-reset">
${comment.commentContent}
</div>
</main>
</div>
</li>
\ No newline at end of file
src/main/webapp/skins/Medium/css/base.css
0 → 100644
View file @
dec68aa2
This diff is collapsed.
Click to expand it.
src/main/webapp/skins/Medium/css/base.min.css
0 → 100644
View file @
dec68aa2
This diff is collapsed.
Click to expand it.
src/main/webapp/skins/Medium/css/selection.json
0 → 100755
View file @
dec68aa2
This diff is collapsed.
Click to expand it.
src/main/webapp/skins/Medium/footer.ftl
0 → 100644
View file @
dec68aa2
<div class="wrapper">
<footer class="footer">
<div class="fn-clear">
${blogSubtitle}
<div class="fn-right">
${blogTitle} © ${year} ${footerContent}
</div>
</div>
<div class="fn-clear">
${statistic.statisticPublishedBlogArticleCount} ${articleLabel}
${statistic.statisticPublishedBlogCommentCount} ${commentLabel}
${statistic.statisticBlogViewCount} ${viewLabel}
${onlineVisitorCnt} ${onlineVisitorLabel}
<div class="fn-right">
Powered by <a href="http://b3log.org" target="_blank">B3log 开源</a> •
<a href="https://hacpai.com/tag/Solo" target="_blank">Solo</a> •
Theme <a rel="friend" href="https://github.com/b3log/solo-skins" target="_blank">Medium</a>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="${staticServePath}/js/lib/jquery/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript" src="${staticServePath}/js/common${miniPostfix}.js?${staticResourceVersion}"
charset="utf-8"></script>
<script type="text/javascript"
src="${staticServePath}/skins/${skinDirName}/js/common${miniPostfix}.js?${staticResourceVersion}"
charset="utf-8"></script>
<script type="text/javascript">
var latkeConfig = {
"servePath": "${servePath}",
"staticServePath": "${staticServePath}",
"isLoggedIn": "${isLoggedIn?string}",
"userName": "${userName}"
};
var Label = {
"skinDirName": "${skinDirName}",
"em00Label": "${em00Label}",
"em01Label": "${em01Label}",
"em02Label": "${em02Label}",
"em03Label": "${em03Label}",
"em04Label": "${em04Label}",
"em05Label": "${em05Label}",
"em06Label": "${em06Label}",
"em07Label": "${em07Label}",
"em08Label": "${em08Label}",
"em09Label": "${em09Label}",
"em10Label": "${em10Label}",
"em11Label": "${em11Label}",
"em12Label": "${em12Label}",
"em13Label": "${em13Label}",
"em14Label": "${em14Label}"
};
Util.parseMarkdown('content-reset');
</script>
${plugins}
src/main/webapp/skins/Medium/header.ftl
0 → 100644
View file @
dec68aa2
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol id="icon-tag" viewBox="0 0 32 32">
<path
d="M29.021 0h-8.936c-1.638 0-3.927 0.948-5.085 2.106l-13.842 13.842c-1.158 1.158-1.158 3.054 0 4.213l10.681 10.681c1.158 1.158 3.054 1.158 4.212 0l13.842-13.842c1.158-1.158 2.106-3.447 2.106-5.085v-8.936c0-1.638-1.34-2.979-2.979-2.979zM25.063 9.91c-1.642 0-2.973-1.331-2.973-2.973s1.331-2.973 2.973-2.973 2.973 1.331 2.973 2.973-1.331 2.973-2.973 2.973z"></path>
</symbol>
<symbol id="icon-feed" viewBox="0 0 28 28">
<path
d="M8.542 22.72c0 1.805-1.465 3.27-3.27 3.27s-3.27-1.465-3.27-3.27 1.465-3.27 3.27-3.27 3.27 1.465 3.27 3.27zM17.262 24.815c0.017 0.307-0.085 0.596-0.29 0.817-0.204 0.238-0.494 0.358-0.8 0.358h-2.299c-0.562 0-1.022-0.426-1.073-0.988-0.494-5.195-4.615-9.316-9.81-9.81-0.562-0.051-0.988-0.511-0.988-1.073v-2.299c0-0.307 0.119-0.596 0.358-0.8 0.187-0.187 0.46-0.29 0.732-0.29h0.085c3.628 0.29 7.051 1.873 9.623 4.462 2.589 2.572 4.173 5.995 4.462 9.623zM25.982 24.849c0.017 0.29-0.085 0.579-0.307 0.8-0.204 0.221-0.477 0.341-0.783 0.341h-2.435c-0.579 0-1.056-0.443-1.090-1.022-0.562-9.895-8.448-17.781-18.343-18.36-0.579-0.034-1.022-0.511-1.022-1.073v-2.435c0-0.307 0.119-0.579 0.341-0.783 0.204-0.204 0.477-0.307 0.749-0.307h0.051c5.961 0.307 11.564 2.81 15.788 7.051 4.241 4.224 6.744 9.827 7.051 15.788z"></path>
</symbol>
<symbol id="icon-folders" viewBox="0 0 28 28">
<path
d="M28.68 15.875c0 0.375-0.234 0.75-0.484 1.031l-5.25 6.188c-0.906 1.062-2.75 1.906-4.125 1.906h-17c-0.562 0-1.359-0.172-1.359-0.875 0-0.375 0.234-0.75 0.484-1.031l5.25-6.188c0.906-1.062 2.75-1.906 4.125-1.906h17c0.562 0 1.359 0.172 1.359 0.875zM23.32 10.5v2.5h-13c-1.953 0-4.375 1.109-5.641 2.609l-5.344 6.281c0-0.125-0.016-0.266-0.016-0.391v-15c0-1.922 1.578-3.5 3.5-3.5h5c1.922 0 3.5 1.578 3.5 3.5v0.5h8.5c1.922 0 3.5 1.578 3.5 3.5z"></path>
</symbol>
<symbol id="icon-bookmark" viewBox="0 0 28 28">
<path
d="M17.231 12.923c0-0.589-0.488-1.077-1.077-1.077h-4.308c-0.589 0-1.077 0.488-1.077 1.077s0.488 1.077 1.077 1.077h4.308c0.589 0 1.077-0.488 1.077-1.077zM26.923 9.692v16.154c0 0.589-0.488 1.077-1.077 1.077h-23.692c-0.589 0-1.077-0.488-1.077-1.077v-16.154c0-0.589 0.488-1.077 1.077-1.077h23.692c0.589 0 1.077 0.488 1.077 1.077zM28 2.154v4.308c0 0.589-0.488 1.077-1.077 1.077h-25.846c-0.589 0-1.077-0.488-1.077-1.077v-4.308c0-0.589 0.488-1.077 1.077-1.077h25.846c0.589 0 1.077 0.488 1.077 1.077z"></path>
</symbol>
<symbol id="icon-group" viewBox="0 0 28 28">
<path
d="M8.665 14c-1.512 0.044-2.879 0.698-3.853 1.861h-1.948c-1.454 0-2.82-0.698-2.82-2.312 0-1.178-0.044-5.132 1.803-5.132 0.305 0 1.817 1.236 3.78 1.236 0.669 0 1.308-0.116 1.934-0.334-0.044 0.32-0.073 0.64-0.073 0.959 0 1.323 0.422 2.631 1.178 3.722zM24.235 23.261c0 2.355-1.556 3.765-3.882 3.765h-12.706c-2.326 0-3.882-1.41-3.882-3.765 0-3.286 0.771-8.33 5.030-8.33 0.494 0 2.297 2.021 5.205 2.021s4.71-2.021 5.205-2.021c4.26 0 5.030 5.045 5.030 8.33zM9.348 4.696c0 2.050-1.672 3.722-3.722 3.722s-3.722-1.672-3.722-3.722 1.672-3.722 3.722-3.722 3.722 1.672 3.722 3.722zM19.583 10.278c0 3.082-2.501 5.583-5.583 5.583s-5.583-2.501-5.583-5.583 2.501-5.583 5.583-5.583 5.583 2.501 5.583 5.583zM27.956 13.549c0 1.614-1.367 2.312-2.82 2.312h-1.948c-0.974-1.163-2.341-1.817-3.853-1.861 0.756-1.090 1.178-2.399 1.178-3.722 0-0.32-0.029-0.64-0.073-0.959 0.625 0.218 1.265 0.334 1.934 0.334 1.963 0 3.475-1.236 3.78-1.236 1.846 0 1.803 3.954 1.803 5.132zM26.096 4.696c0 2.050-1.672 3.722-3.722 3.722s-3.722-1.672-3.722-3.722 1.672-3.722 3.722-3.722 3.722 1.672 3.722 3.722z"></path>
</symbol>
<symbol id="icon-search" viewBox="0 0 32 32">
<path
d="M31.008 27.231l-7.58-6.447c-0.784-0.705-1.622-1.029-2.299-0.998 1.789-2.096 2.87-4.815 2.87-7.787 0-6.627-5.373-12-12-12s-12 5.373-12 12 5.373 12 12 12c2.972 0 5.691-1.081 7.787-2.87-0.031 0.677 0.293 1.515 0.998 2.299l6.447 7.58c1.104 1.226 2.907 1.33 4.007 0.23s0.997-2.903-0.23-4.007zM12 20c-4.418 0-8-3.582-8-8s3.582-8 8-8 8 3.582 8 8-3.582 8-8 8z"></path>
</symbol>
<symbol id="icon-home" viewBox="0 0 32 32">
<path
d="M32 18.967l-16-12.42-16 12.42v-5.064l16-12.42 16 12.42zM28 18.516v12h-8v-8h-8v8h-8v-12l12-9z"></path>
</symbol>
<symbol id="icon-setting" viewBox="0 0 32 32">
<path
d="M29.181 19.070c-1.679-2.908-0.669-6.634 2.255-8.328l-3.145-5.447c-0.898 0.527-1.943 0.829-3.058 0.829-3.36 0-6.085-2.742-6.085-6.125h-6.289c0.008 1.044-0.252 2.103-0.811 3.070-1.679 2.908-5.411 3.897-8.339 2.211l-3.144 5.447c0.905 0.515 1.689 1.268 2.246 2.234 1.676 2.903 0.672 6.623-2.241 8.319l3.145 5.447c0.895-0.522 1.935-0.82 3.044-0.82 3.35 0 6.067 2.725 6.084 6.092h6.289c-0.003-1.034 0.259-2.080 0.811-3.038 1.676-2.903 5.399-3.894 8.325-2.219l3.145-5.447c-0.899-0.515-1.678-1.266-2.232-2.226zM16 22.479c-3.578 0-6.479-2.901-6.479-6.479s2.901-6.479 6.479-6.479c3.578 0 6.479 2.901 6.479 6.479s-2.901 6.479-6.479 6.479z"></path>
</symbol>
<symbol id="icon-enter" viewBox="0 0 32 32">
<path d="M12 16h-10v-4h10v-4l6 6-6 6zM32 0v26l-12 6v-6h-12v-8h2v6h10v-18l8-4h-18v8h-2v-10z"></path>
</symbol>
<symbol id="icon-link" viewBox="0 0 32 32">
<path d="M13.757 19.868c-0.416 0-0.832-0.159-1.149-0.476-2.973-2.973-2.973-7.81 0-10.783l6-6c1.44-1.44 3.355-2.233 5.392-2.233s3.951 0.793 5.392 2.233c2.973 2.973 2.973 7.81 0 10.783l-2.743 2.743c-0.635 0.635-1.663 0.635-2.298 0s-0.635-1.663 0-2.298l2.743-2.743c1.706-1.706 1.706-4.481 0-6.187-0.826-0.826-1.925-1.281-3.094-1.281s-2.267 0.455-3.094 1.281l-6 6c-1.706 1.706-1.706 4.481 0 6.187 0.635 0.635 0.635 1.663 0 2.298-0.317 0.317-0.733 0.476-1.149 0.476z"></path>
<path d="M8 31.625c-2.037 0-3.952-0.793-5.392-2.233-2.973-2.973-2.973-7.81 0-10.783l2.743-2.743c0.635-0.635 1.664-0.635 2.298 0s0.635 1.663 0 2.298l-2.743 2.743c-1.706 1.706-1.706 4.481 0 6.187 0.826 0.826 1.925 1.281 3.094 1.281s2.267-0.455 3.094-1.281l6-6c1.706-1.706 1.706-4.481 0-6.187-0.635-0.635-0.635-1.663 0-2.298s1.663-0.635 2.298 0c2.973 2.973 2.973 7.81 0 10.783l-6 6c-1.44 1.44-3.355 2.233-5.392 2.233z"></path>
</symbol>
</defs>
</svg>
<header class="header">
<div class="wrapper fn-clear">
<a href="https://github.com/b3log/solo" target="_blank" class="fn-left pipe-tooltipped pipe-tooltipped--w"
aria-label="GitHub">
<img class="header__logo" src="${staticServePath}/skins/${skinDirName}/images/logo.png">
</a>
<h1><a href="${servePath}" rel="start" class="header__title">${blogTitle}</a></h1>
<div class="fn-right">
<a href="${servePath}/search" aria-label="${searchLabel}"
class="pipe-tooltipped pipe-tooltipped--w header__icon">
<svg>
<use xlink:href="#icon-search"></use>
</svg>
</a>
<#if isLoggedIn>
<a class="avatar pipe-tooltipped pipe-tooltipped--w header__icon" aria-label="${adminLabel}"
href="${servePath}/admin-index.do#main"
style="background-image: url(${adminUser.userAvatar});"></a>
<#else>
<a href="${loginURL}" class="header__a">
${loginLabel}
</a>
</#if>
</div>
</div>
</header>
\ No newline at end of file
src/main/webapp/skins/Medium/images/code-bg.png
0 → 100644
View file @
dec68aa2
343 Bytes
src/main/webapp/skins/Medium/images/logo.png
0 → 100644
View file @
dec68aa2
11.1 KB
src/main/webapp/skins/Medium/index.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${blogTitle}"
>
<
#if
metaKeywords
??
>
<meta
name=
"keywords"
content=
"${metaKeywords}"
/>
</
#
if>
<
#if
metaDescription
??
>
<meta
name=
"description"
content=
"${metaDescription}"
/>
</
#
if>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<
#include
"
nav
.
ftl
"
>
<div
class=
"main"
>
<
#if
noticeBoard
??
>
<div
class=
"board"
>
${noticeBoard}
</div>
</
#
if>
<div
class=
"wrapper content"
>
<
#include
"
article-list
.
ftl
"
>
</div>
<
#include
"
bottom
.
ftl
"
>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
\ No newline at end of file
src/main/webapp/skins/Medium/js/common.js
0 → 100644
View file @
dec68aa2
/*
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview util and every page should be used.
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 0.1.0.0, Jan 29, 2018
*/
/**
* @description 皮肤脚本
* @static
*/
var
Skin
=
{
init
:
function
()
{
$
(
'
body
'
).
on
(
'
click
'
,
'
.content-reset img
'
,
function
()
{
window
.
open
(
this
.
src
);
});
$
(
window
).
scroll
(
function
()
{
if
(
$
(
'
#headerNav
'
).
length
===
0
)
{
return
}
if
(
$
(
window
).
scrollTop
()
>
64
)
{
$
(
'
#headerNav
'
).
addClass
(
'
header__nav--fixed
'
);
$
(
'
.main
'
).
css
(
'
margin-top
'
,
'
100px
'
);
}
else
{
$
(
'
#headerNav
'
).
removeClass
(
'
header__nav--fixed
'
);
$
(
'
.main
'
).
css
(
'
margin-top
'
,
'
50px
'
);
}
});
$
(
window
).
scroll
();
},
_initArticleCommon
:
function
(
tocLabel
,
siteViewLabel
)
{
// TOC
if
(
$
(
'
.b3-solo-list li
'
).
length
>
0
&&
$
(
window
).
width
()
>
1000
)
{
// add color to sidebar menu
$
(
'
aside
'
).
addClass
(
'
has-toc
'
);
// append toc to sidebar menu
var
articleTocHTML
=
'
<ul class="fn-clear"><li class="current" data-tab="toc">
'
+
tocLabel
+
'
</li><li data-tab="site">
'
+
siteViewLabel
+
'
</li></ul><section></section>
'
;
$
(
'
aside
'
).
prepend
(
articleTocHTML
);
var
$sectionF
=
$
(
'
aside section:first
'
).
html
(
$
(
'
.b3-solo-list
'
)),
$sectionL
=
$
(
'
aside section:last
'
);
$sectionF
.
height
(
$
(
window
).
height
()
-
154
).
css
({
'
overflow
'
:
'
auto
'
,
'
width
'
:
$
(
'
aside
'
).
width
()
+
'
px
'
});
$sectionL
.
hide
();
// 切换 tab
$
(
'
aside > ul > li
'
).
click
(
function
()
{
if
(
$
(
this
).
data
(
'
tab
'
)
===
'
toc
'
)
{
$sectionL
.
animate
({
"
opacity
"
:
'
0
'
,
"
top
"
:
'
-50px
'
},
300
,
function
()
{
$sectionF
.
show
().
css
(
'
top
'
,
'
-50px
'
);
$sectionF
.
animate
({
"
opacity
"
:
'
1
'
,
"
top
"
:
'
0
'
},
300
).
show
();
});
}
else
{
$sectionF
.
animate
({
"
opacity
"
:
'
0
'
,
"
top
"
:
'
-50px
'
},
300
,
function
()
{
$sectionF
.
hide
().
css
(
'
top
'
,
'
-50px
'
);
$sectionL
.
animate
({
"
opacity
"
:
'
1
'
,
"
top
"
:
'
0
'
},
300
).
show
();
}).
hide
();
}
$
(
'
aside > ul > li
'
).
removeClass
(
'
current
'
);
$
(
this
).
addClass
(
'
current
'
);
});
$
(
window
).
scroll
(
function
()
{
if
(
$
(
window
).
scrollTop
()
>
125
)
{
$
(
'
aside section:eq(0)
'
).
css
({
position
:
"
fixed
"
,
top
:
"
51px
"
,
backgroundColor
:
"
#fff
"
})
}
else
{
$
(
'
aside section:eq(0)
'
).
css
({
position
:
"
inherit
"
,
borderLeft
:
0
})
}
});
}
},
initArticle
:
function
(
tocLabel
,
siteViewLabel
)
{
this
.
_initArticleCommon
(
tocLabel
,
siteViewLabel
);
}
};
Skin
.
init
();
\ No newline at end of file
src/main/webapp/skins/Medium/js/common.min.js
0 → 100644
View file @
dec68aa2
/*
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var
Skin
=
{
_initCommon
:
function
(
i
){
$
(
"
body
"
).
on
(
"
click
"
,
"
.content-reset img
"
,
function
(){
window
.
open
(
this
.
src
)});
var
t
=
$
(
"
header .banner
"
),
n
=
$
(
"
header .navbar
"
);
$
(
window
).
scroll
(
function
(){
if
(
$
(
window
).
scrollTop
()
>
125
?
i
.
show
():
i
.
hide
(),
$
(
window
).
width
()
<
701
)
return
!
1
;
$
(
window
).
scrollTop
()
>
t
.
height
()?(
n
.
addClass
(
"
pin
"
),
$
(
"
.main-wrap
"
).
parent
().
css
(
"
margin-top
"
,
"
86px
"
)):(
n
.
removeClass
(
"
pin
"
),
$
(
"
.main-wrap
"
).
parent
().
css
(
"
margin-top
"
,
"
0
"
))})},
init
:
function
(){
this
.
_initCommon
(
$
(
"
.icon-up
"
)),
$
(
"
.navbar nav a
"
).
each
(
function
(){
this
.
href
===
location
.
href
&&
(
this
.
className
=
"
current
"
)}),
$
(
"
.responsive .list a
"
).
each
(
function
(){
this
.
href
===
location
.
href
&&
$
(
this
).
parent
().
addClass
(
"
current
"
)}),
$
(
"
.responsive .icon-list
"
).
click
(
function
(){
$
(
"
.responsive .list
"
).
slideToggle
()})},
_initArticleCommon
:
function
(
i
,
t
){
if
(
$
(
"
.b3-solo-list li
"
).
length
>
0
&&
$
(
window
).
width
()
>
1
e3
){
$
(
"
aside
"
).
addClass
(
"
has-toc
"
);
var
n
=
'
<ul class="fn-clear"><li class="current" data-tab="toc">
'
+
i
+
'
</li><li data-tab="site">
'
+
t
+
"
</li></ul><section></section>
"
;
$
(
"
aside
"
).
prepend
(
n
);
var
o
=
$
(
"
aside section:first
"
).
html
(
$
(
"
.b3-solo-list
"
)),
s
=
$
(
"
aside section:last
"
);
o
.
height
(
$
(
window
).
height
()
-
154
).
css
({
overflow
:
"
auto
"
,
width
:
$
(
"
aside
"
).
width
()
+
"
px
"
}),
s
.
hide
(),
$
(
"
aside > ul > li
"
).
click
(
function
(){
"
toc
"
===
$
(
this
).
data
(
"
tab
"
)?
s
.
animate
({
opacity
:
"
0
"
,
top
:
"
-50px
"
},
300
,
function
(){
o
.
show
().
css
(
"
top
"
,
"
-50px
"
),
o
.
animate
({
opacity
:
"
1
"
,
top
:
"
0
"
},
300
).
show
()}):
o
.
animate
({
opacity
:
"
0
"
,
top
:
"
-50px
"
},
300
,
function
(){
o
.
hide
().
css
(
"
top
"
,
"
-50px
"
),
s
.
animate
({
opacity
:
"
1
"
,
top
:
"
0
"
},
300
).
show
()}).
hide
(),
$
(
"
aside > ul > li
"
).
removeClass
(
"
current
"
),
$
(
this
).
addClass
(
"
current
"
)}),
$
(
window
).
scroll
(
function
(){
$
(
window
).
scrollTop
()
>
125
?
$
(
"
aside section:eq(0)
"
).
css
({
position
:
"
fixed
"
,
top
:
"
51px
"
,
backgroundColor
:
"
#fff
"
}):
$
(
"
aside section:eq(0)
"
).
css
({
position
:
"
inherit
"
,
borderLeft
:
0
})})}},
initArticle
:
function
(
i
,
t
){
this
.
_initArticleCommon
(
i
,
t
)}};
Skin
.
init
();
\ No newline at end of file
src/main/webapp/skins/Medium/lang/lang_en_US.properties
0 → 100644
View file @
dec68aa2
#
# Copyright (c) 2010-2018, b3log.org & hacpai.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Description: Solo language configurations(en_US).
# Version: 0.1.0.0, Jan 29, 2018
# Author: Liyuan Li
#
siteViewLabel
=
Site
onlineVisitorLabel
=
Visitor
tocLabel
=
Article ToC
readLabel
=
Read More
nextArticleLabel
=
Next
previousArticleLabel
=
Previous
articleCP1Label
=
Please indicate the source:
viewCountLabel
=
View Count
cntLabel
=
\ No newline at end of file
src/main/webapp/skins/Medium/lang/lang_zh_CN.properties
0 → 100644
View file @
dec68aa2
#
# Copyright (c) 2010-2018, b3log.org & hacpai.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Description: Solo default language configurations(zh_CN).
# Version: 0.1.0.0, Jan 29, 2018
# Author: Liyuan Li
#
cntLabel
=
\u
4E2A
\ No newline at end of file
src/main/webapp/skins/Medium/links.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${archiveLabel}"
/>
<meta
name=
"description"
content=
"${metaDescription},${archiveLabel}"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main
class=
"other"
>
<div
class=
"title"
>
<h2><i
class=
"icon-link"
></i>
${linkLabel}
</h2>
</div>
<
#if
0
!=
links
?
size
>
<ul
class=
"list"
>
<
#list
links
as
link
>
<li>
<a
rel=
"friend"
href=
"${link.linkAddress}"
title=
"${link.linkDescription}"
target=
"_blank"
>
${link.linkTitle}
</a>
</li>
</
#
list>
</ul>
</
#
if>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/Medium/macro-comments.ftl
0 → 100644
View file @
dec68aa2
<#macro comments commentList article>
<header class='title'><h2>${commentLabel}</h2></header>
<ul class="comments" id="comments">
<#list commentList as comment>
<#include 'common-comment.ftl'/>
</#list>
</ul>
<#if article.commentable>
<header class='title'><h2>${postCommentsLabel}</h2></header>
<table id="commentForm" class="form">
<tbody>
<#if !isLoggedIn>
<tr>
<td>
<input placeholder="${commentNameLabel}" type="text" class="normalInput" id="commentName"/>
</td>
</tr>
<tr>
<td>
<input placeholder="${commentEmailLabel}" type="email" class="normalInput" id="commentEmail"/>
</td>
</tr>
<tr>
<td>
<input placeholder="${commentURLLabel}" type="url" id="commentURL"/>
</td>
</tr>
</#if>
<tr>
<td id="emotions" class="emotions">
<span class="em00" title="${em00Label}"></span>
<span class="em01" title="${em01Label}"></span>
<span class="em02" title="${em02Label}"></span>
<span class="em03" title="${em03Label}"></span>
<span class="em04" title="${em04Label}"></span>
<span class="em05" title="${em05Label}"></span>
<span class="em06" title="${em06Label}"></span>
<span class="em07" title="${em07Label}"></span>
<span class="em08" title="${em08Label}"></span>
<span class="em09" title="${em09Label}"></span>
<span class="em10" title="${em10Label}"></span>
<span class="em11" title="${em11Label}"></span>
<span class="em12" title="${em12Label}"></span>
<span class="em13" title="${em13Label}"></span>
<span class="em14" title="${em14Label}"></span>
</td>
</tr>
<tr>
<td>
<textarea rows="5" cols="96" id="comment"></textarea>
</td>
</tr>
<#if !isLoggedIn>
<tr>
<td>
<input style="width:50%" placeholder="${captchaLabel}" type="text" class="normalInput" id="commentValidate"/>
<img class="captcha" id="captcha" alt="validate" src="${servePath}/captcha.do" />
</td>
</tr>
</#if>
<tr>
<td colspan="2" align="right">
<span class="error-msg" id="commentErrorTip"></span>
<button id="submitCommentButton" onclick="page.submitComment();">${submmitCommentLabel}</button>
</td>
</tr>
</tbody>
</table>
</#if>
</#macro>
<#macro comment_script oId>
<script type="text/javascript" src="${staticServePath}/js/page${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
<script type="text/javascript">
var page = new Page({
"nameTooLongLabel": "${nameTooLongLabel}",
"mailCannotEmptyLabel": "${mailCannotEmptyLabel}",
"mailInvalidLabel": "${mailInvalidLabel}",
"commentContentCannotEmptyLabel": "${commentContentCannotEmptyLabel}",
"captchaCannotEmptyLabel": "${captchaCannotEmptyLabel}",
"loadingLabel": "${loadingLabel}",
"oId": "${oId}",
"skinDirName": "${skinDirName}",
"blogHost": "${blogHost}",
"randomArticles1Label": "${randomArticles1Label}",
"externalRelevantArticles1Label": "${externalRelevantArticles1Label}"
});
var replyTo = function (id) {
var commentFormHTML = "<table class='form comment-reply' id='replyForm'>";
page.addReplyForm(id, commentFormHTML);
};
(function () {
page.load();
Skin.initArticle("${tocLabel}", "${siteViewLabel}");
// emotions
page.replaceCommentsEm("#comments .content-reset");
<#nested>
})();
</script>
</#macro>
\ No newline at end of file
src/main/webapp/skins/Medium/macro-head.ftl
0 → 100644
View file @
dec68aa2
<#macro head title>
<meta charset="utf-8" />
<title>${title}</title>
<#nested>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="author" content="${blogTitle?html}" />
<meta name="generator" content="Solo" />
<meta name="owner" content="B3log Team" />
<meta name="revised" content="${blogTitle?html}, ${year}" />
<meta name="copyright" content="B3log" />
<meta http-equiv="Window-target" content="_top" />
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/css/base${miniPostfix}.css?${staticResourceVersion}" charset="utf-8" />
<link href="${servePath}/blog-articles-rss.do" title="RSS" type="application/rss+xml" rel="alternate" />
<link rel="icon" type="image/png" href="${servePath}/favicon.png" />
${htmlHead}
</#macro>
\ No newline at end of file
src/main/webapp/skins/Medium/nav.ftl
0 → 100644
View file @
dec68aa2
<nav id="headerNav" class="header__nav">
<div class="wrapper">
<a href="${servePath}">
<svg>
<use xlink:href="#icon-home"></use>
</svg>
${indexLabel}
</a>
<a href="http://localhost:5897/blogs/Vanessa/categories">
<svg>
<use xlink:href="#icon-folders"></use>
</svg>
${categoryLabel}
</a>
<a href="${servePath}/tags.html" rel="section">
<svg>
<use xlink:href="#icon-tag"></use>
</svg> ${allTagsLabel}
</a>
<a href="${servePath}/archives.html">
<svg>
<use xlink:href="#icon-bookmark"></use>
</svg> ${archiveLabel}
</a>
<#list pageNavigations as page>
<a href="${page.pagePermalink}" target="${page.pageOpenTarget}" rel="section">
<#if page.pageIcon != ''><img src="${page.pageIcon}"></#if> ${page.pageTitle}
</a>
</#list>
<a rel="archive" href="${servePath}/links.html">
<svg>
<use xlink:href="#icon-link"></use>
</svg> ${linkLabel}
</a>
<a rel="alternate" href="${servePath}/blog-articles-rss.do" rel="section">
<svg>
<use xlink:href="#icon-feed"></use>
</svg>
RSS
</a>
<#if isLoggedIn>
<a href="${servePath}/admin-index.do#main">
<svg>
<use xlink:href="#icon-setting"></use>
</svg> ${adminLabel}
</a>
<#else>
<a href="${loginURL}">
<svg>
<use xlink:href="#icon-enter"></use>
</svg> ${loginLabel}
</a>
</#if>
</div>
</nav>
\ No newline at end of file
src/main/webapp/skins/Medium/page.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<
#include
"
macro-comments
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${page.pageTitle} - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${page.pageTitle}"
/>
<meta
name=
"description"
content=
"${metaDescription}"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main>
<article
class=
"post"
>
<div
class=
"content-reset"
>
${page.pageContent}
</div>
<
@
comments
commentList=
pageComments
article=
page
></
@
comments>
</article>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
<
@
comment_script
oId=
page.oId
></
@
comment
_script
>
</body>
</html>
src/main/webapp/skins/Medium/preview.png
0 → 100644
View file @
dec68aa2
18.3 KB
src/main/webapp/skins/Medium/side.ftl
0 → 100644
View file @
dec68aa2
<#if 0 != mostCommentArticles?size>
<div class="module">
<header><h2>${mostCommentArticlesLabel}</h2></header>
<main class="list">
<ul>
<#list mostCommentArticles as article>
<li>
<a rel="nofollow" aria-label="${article.articleCommentCount} ${commentLabel}"
class="tooltipped tooltipped-e"
href="${servePath}${article.articlePermalink}">
${article.articleTitle}
</a>
</li>
</#list>
</ul>
</main>
</div>
</#if>
<#if 0 != mostViewCountArticles?size>
<div class="module">
<header><h2>${mostViewCountArticlesLabel}</h2></header>
<main class="list">
<ul>
<#list mostViewCountArticles as article>
<li>
<a rel="nofollow" aria-label="${article.articleCommentCount} ${commentLabel}"
class="tooltipped tooltipped-e"
href="${servePath}${article.articlePermalink}">
${article.articleTitle}
</a>
</li>
</#list>
</ul>
</main>
</div>
</#if>
\ No newline at end of file
src/main/webapp/skins/Medium/skin.properties
0 → 100644
View file @
dec68aa2
#
# Copyright (c) 2010-2018, b3log.org & hacpai.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Description: Medium skin.
# Version: 0.1.0.0, Jan 29, 2018
# Author: Liyuan Li
#
name
=
Medium
memo
=
https://medium.com
src/main/webapp/skins/Medium/tag-articles.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${tag.tagTitle} - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${tag.tagTitle}"
/>
<meta
name=
"description"
content=
"<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main>
<div
class=
"title"
>
<h2
class=
"tip"
><i
class=
"icon-tags"
></i>
${tag.tagTitle}
<small>
${tagLabel}
</small>
</div>
<
#include
"
article-list
.
ftl
"
>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/Medium/tags.ftl
0 → 100644
View file @
dec68aa2
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${allTagsLabel} - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${allTagsLabel}"
/>
<meta
name=
"description"
content=
"<#list tags as tag>${tag.tagTitle}<#if tag_has_next>,</#if></#list>"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<div
class=
"wrapper"
>
<div
class=
"main-wrap"
>
<main
class=
"other"
>
<div
class=
"title"
>
<h2><i
class=
"icon-tags"
></i>
${sumLabel} ${tags?size} ${tagLabel}
</div>
<div
class=
"tags"
>
<
#list
tags
as
tag
>
<a
rel=
"tag"
data-count=
"${tag.tagPublishedRefCount}"
class=
"tag"
href=
"${servePath}/tags/${tag.tagTitle?url('UTF-8')}"
>
<span>
${tag.tagTitle}
</span>
(
<b>
${tag.tagPublishedRefCount}
</b>
)
</a>
</
#
list>
</div>
</main>
<
#include
"
side
.
ftl
"
>
</div>
</div>
<
#include
"
footer
.
ftl
"
>
<script
type=
"text/javascript"
src=
"${staticServePath}/skins/${skinDirName}/js/isotope.pkgd.min.js"
charset=
"utf-8"
></script>
<script>
$
(
'
.tags
'
).
isotope
({
transitionDuration
:
'
1.5s
'
,
filter
:
'
a
'
,
layoutMode
:
'
fitRows
'
});
$
(
'
.tags
'
).
isotope
({
sortBy
:
'
random
'
});
</script>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment