From 00f36effdbac4d7b5c91932001e6bffac9f245b7 Mon Sep 17 00:00:00 2001 From: Van Date: Tue, 26 Mar 2019 10:59:56 +0800 Subject: [PATCH] :tada: https://github.com/b3log/solo/issues/12737 --- Casper/archive-articles.ftl | 61 +++ Casper/archives.ftl | 75 ++++ Casper/article-list.ftl | 88 ++++ Casper/article.ftl | 235 ++++++++++ Casper/bottom.ftl | 50 +++ Casper/bottom2.ftl | 36 ++ Casper/category-articles.ftl | 56 +++ Casper/common-comment.ftl | 54 +++ Casper/css/base.css | 1 + Casper/css/base.scss | 842 +++++++++++++++++++++++++++++++++++ Casper/css/selection.json | 524 ++++++++++++++++++++++ Casper/footer.ftl | 52 +++ Casper/header.ftl | 104 +++++ Casper/images/header-bg.jpg | Bin 0 -> 72827 bytes Casper/index.ftl | 48 ++ Casper/js/common.js | 223 ++++++++++ Casper/js/common.min.js | 1 + Casper/links.ftl | 66 +++ Casper/macro-comments.ftl | 33 ++ Casper/nav.ftl | 78 ++++ Casper/page.ftl | 62 +++ Casper/preview.png | Bin 0 -> 15289 bytes Casper/skin.properties | 26 ++ Casper/tag-articles.ftl | 57 +++ Casper/tags.ftl | 67 +++ 25 files changed, 2839 insertions(+) create mode 100644 Casper/archive-articles.ftl create mode 100644 Casper/archives.ftl create mode 100644 Casper/article-list.ftl create mode 100644 Casper/article.ftl create mode 100644 Casper/bottom.ftl create mode 100644 Casper/bottom2.ftl create mode 100644 Casper/category-articles.ftl create mode 100644 Casper/common-comment.ftl create mode 100644 Casper/css/base.css create mode 100644 Casper/css/base.scss create mode 100755 Casper/css/selection.json create mode 100644 Casper/footer.ftl create mode 100644 Casper/header.ftl create mode 100644 Casper/images/header-bg.jpg create mode 100644 Casper/index.ftl create mode 100644 Casper/js/common.js create mode 100644 Casper/js/common.min.js create mode 100644 Casper/links.ftl create mode 100644 Casper/macro-comments.ftl create mode 100644 Casper/nav.ftl create mode 100644 Casper/page.ftl create mode 100644 Casper/preview.png create mode 100644 Casper/skin.properties create mode 100644 Casper/tag-articles.ftl create mode 100644 Casper/tags.ftl diff --git a/Casper/archive-articles.ftl b/Casper/archive-articles.ftl new file mode 100644 index 0000000..52390f3 --- /dev/null +++ b/Casper/archive-articles.ftl @@ -0,0 +1,61 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + + <@head title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} ${archiveLabel} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + <#if "en" == localeString?substring(0, 2)> + ${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} + <#else> + ${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} + + + ${archiveDate.archiveDatePublishedArticleCount} + ${cntArticleLabel} + + +
+ <#include "article-list.ftl"> +
+<#include "bottom2.ftl"> +
+<#if pjax> +
+<#include "footer.ftl"> + + diff --git a/Casper/archives.ftl b/Casper/archives.ftl new file mode 100644 index 0000000..2fac99f --- /dev/null +++ b/Casper/archives.ftl @@ -0,0 +1,75 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${archiveLabel} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + ${archiveDates?size} + ${cntMonthLabel} + ${statistic.statisticPublishedBlogArticleCount} + ${cntArticleLabel} + +
+ <#if 0 != archiveDates?size> + <#list archiveDates as archiveDate> + + + +
+<#include "bottom.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> + + diff --git a/Casper/article-list.ftl b/Casper/article-list.ftl new file mode 100644 index 0000000..c1fe855 --- /dev/null +++ b/Casper/article-list.ftl @@ -0,0 +1,88 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +
+<#list articles as article> + + +
+ +<#if 0 != paginationPageCount> + + \ No newline at end of file diff --git a/Casper/article.ftl b/Casper/article.ftl new file mode 100644 index 0000000..8b26526 --- /dev/null +++ b/Casper/article.ftl @@ -0,0 +1,235 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> +<#include "macro-comments.ftl"> +<#include "../../common-template/macro-comment_script.ftl"> + + + +<@head title="${article.articleTitle} - ${blogTitle}" description="${article.articleAbstract?html}"> + + <#if previousArticlePermalink??> + + + <#if nextArticlePermalink??> + + + + + +<#include "header.ftl"> +
+ <#if pjax> +
+ <#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+
+

+ ${article.articleTitle} + <#if article.articlePutTop> + + ${topArticleLabel} + + + <#if article.hasUpdated> + + ${updatedLabel} + + +

+
+
+ ${article.articleContent} + <#if "" != article.articleSign.signHTML?trim> +
+ ${article.articleSign.signHTML} +
+ +
+
${articleTag}<#if articleTag_has_next>,"> + <#list article.articleTags?split(",") as articleTag> + + +
+ +
+
+
+
+ + <@comments commentList=articleComments article=article> +
+
+ +
+
+ + ${article.articleViewCount} ${viewLabel} + +
+ + +     +     +     + + + + + <#if nextArticlePermalink??> + + +
+
+
+ +
+ +
+     +     +     + + +
+
+
+ <#include "bottom.ftl"> +
+ <#if article?? && article.articleToC?? && article.articleToC?size > 0> + <#include "../../common-template/toc.ftl"/> + +
+ <#if pjax> +
+<#include "footer.ftl"> + +<#if pjax> +<@comment_script oId=article.oId commentable=article.commentable> + Skin.initArticle() + Skin.initComment = function (articleOId, articleTags) { + page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}"; + <#if 0 != randomArticlesDisplayCount> + page.loadRandomArticles("
${randomArticlesLabel}
"); + + <#if 0 != externalRelevantArticlesDisplayCount> + page.loadExternalRelevantArticles(articleTags, "
${externalRelevantArticlesLabel}
"); + + <#if 0 != relevantArticlesDisplayCount> + page.loadRelevantArticles(articleOId, '
${relevantArticlesLabel}
'); + + } + Skin.initComment('${article.oId}', "<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,") + +<#if pjax> +${plugins} + + diff --git a/Casper/bottom.ftl b/Casper/bottom.ftl new file mode 100644 index 0000000..8ee3369 --- /dev/null +++ b/Casper/bottom.ftl @@ -0,0 +1,50 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> + diff --git a/Casper/bottom2.ftl b/Casper/bottom2.ftl new file mode 100644 index 0000000..9ee02b2 --- /dev/null +++ b/Casper/bottom2.ftl @@ -0,0 +1,36 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> + \ No newline at end of file diff --git a/Casper/category-articles.ftl b/Casper/category-articles.ftl new file mode 100644 index 0000000..18d7773 --- /dev/null +++ b/Casper/category-articles.ftl @@ -0,0 +1,56 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${category.categoryTitle} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + ${category.categoryTitle} + + ${category.categoryDescription} + + +
+ <#include "article-list.ftl"> +
+<#include "bottom2.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> + + diff --git a/Casper/common-comment.ftl b/Casper/common-comment.ftl new file mode 100644 index 0000000..798a750 --- /dev/null +++ b/Casper/common-comment.ftl @@ -0,0 +1,54 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +
+ +
+
+ + <#if "http://" == comment.commentURL> + ${comment.commentName} + <#else> + ${comment.commentName} + + + + <#if comment.isReply> + + + ${reply1Label} ${comment.commentOriginalCommentName} + + + + + + + <#if article.commentable> + + ${reply1Label} + + +
+
+ ${comment.commentContent} +
+
+
\ No newline at end of file diff --git a/Casper/css/base.css b/Casper/css/base.css new file mode 100644 index 0000000..5e1d871 --- /dev/null +++ b/Casper/css/base.css @@ -0,0 +1 @@ +html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;height:100%}body{margin:0;font-family:"Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size:14px;background-color:#fff;-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch}::-moz-selection{text-shadow:none;background:rgba(65,131,196,0.4)}::selection{text-shadow:none;background:rgba(66,133,244,0.4)}ul,ol{margin:0;padding:0}h1,h2,h3,h4,h5,h6,dl,dd,p{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none}a{outline:0;text-decoration:none}a:hover{text-decoration:underline}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;height:auto;-ms-interpolation-mode:bicubic;overflow:hidden;font-size:12px}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;font-family:"Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;outline:none}button,input{line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:14px;height:14px}blockquote{margin:0}.user__site:hover{text-decoration:none}.article__toc{overflow:auto}.article__toc::-webkit-scrollbar{display:none}.article__toc li{list-style-type:none}.article__toc li a{padding-left:10px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.article__toc li a:hover{text-decoration:none}.article__toc li.toc__h3 a{padding-left:20px}.article__toc li.toc__h4 a{padding-left:30px}.article__toc li.toc__h5 a{padding-left:40px}#nprogress{pointer-events:none}#nprogress .bar{background:#d23f31;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #d23f31, 0 0 5px #d23f31;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px, -4px);-ms-transform:rotate(3deg) translate(0px, -4px);transform:rotate(3deg) translate(0px, -4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#d23f31;border-left-color:#d23f31;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.vditor-tooltipped{position:relative;cursor:pointer}.vditor-tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font-size:11px;font-weight:normal;-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,0.8);border-radius:3px;line-height:16px;opacity:0}.vditor-tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,0.8);pointer-events:none;content:"";border:5px solid transparent;opacity:0}.vditor-tooltipped--hover::before,.vditor-tooltipped--hover::after,.vditor-tooltipped:hover::before,.vditor-tooltipped:hover::after,.vditor-tooltipped:active::before,.vditor-tooltipped:active::after,.vditor-tooltipped:focus::before,.vditor-tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:0.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;animation-delay:0.4s}.vditor-tooltipped__s::after,.vditor-tooltipped__se::after,.vditor-tooltipped__sw::after{top:100%;right:50%;margin-top:5px}.vditor-tooltipped__s::before,.vditor-tooltipped__se::before,.vditor-tooltipped__sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,0.8)}.vditor-tooltipped__se::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__sw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__ne::after,.vditor-tooltipped__nw::after{right:50%;bottom:100%;margin-bottom:5px}.vditor-tooltipped__n::before,.vditor-tooltipped__ne::before,.vditor-tooltipped__nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,0.8)}.vditor-tooltipped__ne::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__nw::after{margin-right:-15px}.vditor-tooltipped__s::after,.vditor-tooltipped__n::after{transform:translateX(50%)}.vditor-tooltipped__w::after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.vditor-tooltipped__w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,0.8)}.vditor-tooltipped__e::after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.vditor-tooltipped__e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,0.8)}.vditor-panel{background-color:#fff;position:absolute;box-shadow:0 1px 2px rgba(0,0,0,0.2);border-radius:3px;padding:5px;z-index:1;font-size:14px;display:none;user-select:none;max-width:200px;min-width:80px}.vditor-panel h1,.vditor-panel h2,.vditor-panel h3,.vditor-panel h4,.vditor-panel h5,.vditor-panel h6{margin:0;cursor:pointer;padding:3px 10px;border-radius:3px;line-height:normal}.vditor-panel h1:hover,.vditor-panel h2:hover,.vditor-panel h3:hover,.vditor-panel h4:hover,.vditor-panel h5:hover,.vditor-panel h6:hover{background-color:#4285f4;color:#fff}.vditor-toolbar{background-color:#f6f8fa;border-bottom:1px solid #d1d5da;padding:0 5px;border-radius:3px 3px 0 0}.vditor-toolbar>div{padding:10px 5px;float:left;line-height:14px;height:36px;box-sizing:border-box}.vditor-toolbar svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:14px;height:14px}.vditor-toolbar .vditor-tooltipped{color:#586069}.vditor-toolbar .vditor-tooltipped:hover{color:#4285f4}.vditor-toolbar label{overflow:hidden;position:relative;height:14px;width:15px;display:block;cursor:pointer}.vditor-toolbar input{position:absolute;width:1px;opacity:.001;height:14px;overflow:hidden}.vditor-menu--current svg{color:#4285f4}.vditor-menu__divider{width:10px}.vditor-menu__br{width:100%;padding:0 !important;height:0 !important}.vditor-emojis{display:inline-block}.vditor-emojis__tail{font-size:12px;text-align:right;color:#586069}.vditor-emojis__tail a{text-decoration:none;color:#586069}.vditor-emojis__tail a:hover{color:#4285f4}.vditor-emojis span{cursor:pointer;border-radius:3px;float:left;height:26px;width:26px;text-align:center;line-height:20px;padding:3px;box-sizing:border-box;font-size:16px}.vditor-emojis span:hover{background-color:#4285f4}.vditor-emojis img{height:20px;width:20px;float:left}.vditor{display:flex;flex-direction:column;border:1px solid #d1d5da;border-radius:3px;box-sizing:border-box}.vditor--fullscreen{position:fixed;top:0;width:100% !important;left:0;height:100vh !important;z-index:90;background-color:#fff}.vditor-content{display:flex;min-height:60px;flex:1;position:relative}.vditor-textarea{flex:1;border:0;resize:none;padding:10px;box-sizing:border-box;background-color:#fafbfc;outline:0 none;font-size:16px;line-height:22px;color:#24292e;border-radius:0 0 3px 3px}.vditor-textarea[disabled]{opacity:0.3;cursor:not-allowed}.vditor-textarea:focus{background-color:#fff}.vditor-preview{flex:1;background-color:#fff;overflow:auto;padding:10px;box-shadow:inset 1px 0 #d1d5da;box-sizing:border-box;border-radius:0 0 3px 0}.vditor-preview::-webkit-scrollbar{display:none}.vditor-counter{padding:0 3px;position:absolute;bottom:10px;right:20px;color:#24292e;background-color:rgba(255,255,255,0.6);border-radius:3px;font-size:12px;user-select:none}.vditor-counter--error{color:#d23f31;background-color:rgba(210,63,49,0.1)}.vditor-resize{padding:1px 0;border-radius:5px;cursor:row-resize;transition:all .15s ease-in-out;user-select:none;background-color:#f6f8fa}.vditor-resize:hover{background-color:#4285f4}.vditor-resize:hover svg{color:#fff}.vditor-resize svg{fill:currentColor;stroke-width:0;stroke:currentColor;width:13px;height:3px;display:block;margin:0 auto;color:#586069}.vditor-upload{opacity:0;position:absolute;width:100%;height:5px;left:0;top:-3px;border-radius:3px;overflow:hidden;transition:all .15s ease-in-out;color:#fff;font-size:12px;line-height:14px}.vditor-upload ul{margin:0}.vditor-upload--tip{height:auto;opacity:1 !important}.vditor-upload--tip .vditor-upload__close{display:block}.vditor-upload__close{display:none;position:absolute;right:5px;cursor:pointer;padding:5px;top:0}.vditor-upload__progress{height:100%;background-color:rgba(66,133,244,0.8);transition:all .15s ease-in-out;padding:5px;box-sizing:border-box}.vditor-hint{background-color:#fff;position:absolute;box-shadow:0 1px 2px rgba(0,0,0,0.2);border-radius:3px;padding:5px 0;z-index:1;line-height:20px;list-style:none;color:#24292e;font-size:12px;margin:0;max-width:200px;min-width:80px;display:none}.vditor-hint li{cursor:pointer;padding:3px 10px;border-bottom:1px solid #d1d5da;line-height:20px}.vditor-hint li:last-child{border-bottom:0}.vditor-hint--current,.vditor-hint li:hover{background-color:#4285f4;color:#fff}.vditor-hint__emoji{font-size:16px;float:left;margin-right:3px}.vditor-hint img{height:20px;width:20px;float:left;margin-right:3px}.vditor-reset{font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans",Tahoma,"Hiragino Sans GB","Microsoft Yahei",sans-serif;word-wrap:break-word;overflow:auto;line-height:1.65;font-size:16px;word-break:break-word}.vditor-reset ul,.vditor-reset ol{padding-left:2em;margin-top:0;margin-bottom:16px}.vditor-reset li{margin-top:0.25em}.vditor-reset audio{max-width:100%}.vditor-reset video{max-height:90vh}.vditor-reset img.emoji{cursor:auto;max-width:20px;vertical-align:top}.vditor-reset h1,.vditor-reset h2,.vditor-reset h3,.vditor-reset h4,.vditor-reset h5,.vditor-reset h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.vditor-reset h1{padding-bottom:0.3em;font-size:1.7em;border-bottom:1px solid #eee}.vditor-reset h2{padding-bottom:0.3em;font-size:1.5em;border-bottom:1px solid #eee}.vditor-reset h3{font-size:1.25em}.vditor-reset h4{font-size:1em}.vditor-reset h5{font-size:0.875em}.vditor-reset h6{font-size:0.85em}.vditor-reset hr{height:0.15em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.vditor-reset p{margin-top:0;margin-bottom:16px}.vditor-reset blockquote{padding:0 1em;color:#777;border-left:0.25em solid #ddd;margin:0 0 16px 0}.vditor-reset blockquote p{margin:0}.vditor-reset ins>iframe{border:0}.vditor-reset iframe{border:1px solid #d1d5da}.vditor-reset table{width:100%;border:1px solid #dedede;margin:15px auto;border-collapse:collapse;empty-cells:show}.vditor-reset thead{text-align:center}.vditor-reset td,.vditor-reset th{height:35px;border:1px solid #dedede;padding:0 10px}.vditor-reset th{font-weight:bold;text-align:center !important;background:rgba(158,188,226,0.2)}.vditor-reset tbody tr:nth-child(2n){background:rgba(158,188,226,0.12)}.vditor-reset tr:hover{background:#efefef}.vditor-reset code{padding:0.2em 0.4em;margin:0;font-size:85%;background-color:rgba(27,31,35,0.05);border-radius:3px;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace;word-break:break-word}.vditor-reset pre>code{padding:0.5em;background-color:rgba(0,0,0,0.04);background-image:url("https://cdn.jsdelivr.net/npm/vditor@1.1.2/src/assets/images/code-bg.png");background-size:20px 20px;border-radius:5px;display:block;overflow:auto}.vditor-reset pre:hover div.vditor-copy{display:block}.vditor-reset kbd{display:inline-block;padding:3px 5px;font:11px Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #d1d5da;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.vditor-reset summary{cursor:pointer}.vditor-reset summary:focus{outline:none}.vditor-reset svg{height:auto;width:auto}.vditor-reset .katex{position:relative}.vditor-task{list-style:none;margin-left:-1.4em;display:flex;align-items:center}.vditor-task input{margin-right:5px}.vditor-copy{position:relative;display:none}.vditor-copy textarea{position:absolute;top:-100000px}.vditor-copy span{cursor:pointer;position:absolute;right:0.5em;top:0.5em;height:20px;width:20px}.vditor-copy svg{height:20px;width:20px}.fn-flex{display:flex}.fn-flex-1{flex:1;min-width:1px}.fn-clear:before,.fn-clear:after{display:table;content:""}.fn-clear:after{clear:both}.fn-left{float:left}.fn-right{float:right}.ft-12{font-size:12px;font-weight:normal}.ft-gray{color:rgba(0,0,0,0.54)}.ft-fade{color:rgba(0,0,0,0.38)}.ft-green{color:#03a87c !important;transition:all 0.1s}.ft-green:hover{color:#018f69 !important}.tag{background-color:rgba(0,0,0,0.05);color:rgba(0,0,0,0.68);padding:5px 10px;line-height:22px;font-weight:400;border-radius:3px;white-space:nowrap;display:inline-block;transition:all 0.1s;margin:0 8px 8px 0;font-size:15px}.tag:hover{text-decoration:none;background:rgba(0,0,0,0.1);color:rgba(0,0,0,0.68)}.tag__level0{line-height:inherit;font-size:12px;color:rgba(0,0,0,0.38)}.tag__level1{line-height:inherit;font-size:16px;color:rgba(0,0,0,0.54)}.tag__level2{line-height:inherit;font-size:21px;color:#6f6f6f}.tag__level3{line-height:inherit;font-size:24px;color:#3b3e43}.tag__level4{line-height:inherit;font-size:30px;color:#000}.module__title{border-bottom:1px solid rgba(0,0,0,0.15);margin-bottom:25px;line-height:26px;font-size:22px;position:relative;height:46px}.module__title>span{border-bottom:1px solid rgba(0,0,0,0.54);position:absolute;padding-bottom:20px;height:26px}.wrapper{max-width:1000px;margin:0 auto;box-sizing:border-box}.header{padding:0 20px;box-sizing:border-box;height:64px;text-align:center;transition:all 0.1s;z-index:11}.header h1{display:inline-block;line-height:61px;width:50%;overflow:auto;white-space:nowrap}.header h1::-webkit-scrollbar{display:none}.header--fixed{position:fixed;width:100%;top:-64px;background-color:#fff;box-shadow:0 2px 2px -2px rgba(0,0,0,0.15)}.header__logo{float:left;height:32px;width:32px;margin:16px 0;background-size:cover;background-repeat:no-repeat;background-position:center center}.header__title{overflow:hidden;font-size:26px;color:rgba(0,0,0,0.84)}.header__title:hover{text-decoration:none}.header__icon{transition:all 0.1s;color:rgba(0,0,0,0.54);text-decoration:none;width:25px;margin-left:10px;float:left;margin-top:25px}.header__icon:hover{text-decoration:none;color:rgba(0,0,0,0.68)}.header__icon svg{height:16px;width:16px}.header__icon.avatar{background-size:cover;background-repeat:no-repeat;background-position:center center;display:inline-block;height:32px;width:32px;border-radius:16px;margin-top:16px;margin-left:14px}.header__a{color:#03a87c;font-size:16px;float:left;margin:16px 0 0 16px;transition:all 0.1s;line-height:32px}.header__a:hover{text-decoration:none;color:#018f69;border-color:#018f69}.header__nav{height:50px;padding:0 20px;box-sizing:border-box}.header__nav .wrapper{overflow:auto;word-wrap:normal;white-space:nowrap}.header__nav .wrapper::-webkit-scrollbar{display:none}.header__nav a{color:rgba(0,0,0,0.76);font-size:15px;padding:0 10px;line-height:50px;text-decoration:none}.header__nav a img{height:16px;width:16px;vertical-align:text-top}.header__nav a:first-child{padding-left:0}.header__nav--fixed{z-index:11;position:fixed;width:100%;top:0;background-color:#fff;box-shadow:0 2px 2px -2px rgba(0,0,0,0.15)}.footer{margin-top:50px;padding:10px 20px 25px;font-size:14px;border-top:1px solid rgba(0,0,0,0.05);color:rgba(0,0,0,0.38)}.footer a{color:rgba(0,0,0,0.54)}.footer__tag{margin-top:50px}.footer__tag>div{margin-right:20px}.footer__tag>div:last-child{margin-right:0}.footer__tag li{list-style:none}.footer__tag li a{color:rgba(0,0,0,0.54);display:block;line-height:30px;word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 25px}.footer__tag li a:hover{color:rgba(0,0,0,0.68)}.main{margin:50px 20px 0}.main .content{margin-top:50px}.board{padding:12px 0;text-align:center}.article__toc{left:100%;position:fixed;top:90px;bottom:60px}.article__toc a{color:rgba(0,0,0,0.54)}.article__toc a:hover{color:rgba(0,0,0,0.68)}.article__main{display:flex;flex-direction:column}.article__thumbnail{margin:10px 0;background-position:center center;background-size:cover;flex:1}.article__wrap{margin-right:-20px}.article__item{border:1px solid rgba(0,0,0,0.1);border-radius:2px;margin-bottom:20px;float:left}.article__item--big{width:318px;margin-right:20px}.article__item--big .article__main{height:236px;overflow:hidden}.article__item--small{width:318px;margin-right:20px}.article__item--small .article__thumbnail{background-image:none !important}.article__item--small .article__main{height:91px;overflow:hidden}.article__item--mid{width:488px;margin-right:20px}.article__item--mid .article__main{height:195px;overflow:hidden}.article__panel{padding:16px}.article__title{overflow:hidden;line-height:24px;font-size:21px;font-weight:600;word-break:break-all}.article__title a{color:rgba(0,0,0,0.84)}.article__title a:hover{text-decoration:none}.article__title sup{top:-6px;font-size:12px;color:#03a87c}.article__content{margin-top:4px;font-size:16px;color:rgba(0,0,0,0.54);overflow:hidden;line-height:23px;word-break:break-all}.article__meta{font-size:15px;line-height:23px;flex-shrink:0}.post{max-width:740px;margin:50px auto 20px;position:relative}.post__main{margin:20px 0 0 0}.post__title{font-weight:700;font-size:42px;margin:0 -20px 10px;word-break:break-all}.post__title sup{font-size:16px;top:-20px;color:#03a87c}.post__tags{padding:4px 0 22px;border-bottom:1px solid rgba(0,0,0,0.05)}.post__share{padding:20px 0;margin-bottom:20px;font-size:16px}.post__share svg{height:20px;width:20px;vertical-align:bottom}.post__share #articleShare{position:relative}.post__share #articleShare .article__code{position:absolute;height:130px;width:130px;left:-2px;top:22px}.post__share-icon{color:rgba(0,0,0,0.54);cursor:pointer}.post__share-icon:hover{color:rgba(0,0,0,0.68)}.post__view{color:#03a87c;transition:all 0.1s}.post__view:hover{color:#018f69;text-decoration:none}.post__side{position:fixed;top:50%;left:10%;width:55px;text-align:center;font-size:16px;margin-top:-125px;transition:opacity .1s;opacity:0}.post__side svg{height:25px;width:25px}.post__side .ft-green svg{height:55px;width:55px;vertical-align:bottom;margin-bottom:10px}.post__side .article__code{position:absolute;height:130px;width:130px;left:45px;top:90px}#articleSideShare{width:26px;margin:0 auto}.article__bottom{background-color:#fafafa;padding:40px 20px;position:relative;z-index:1}.article__bottom .footer__tag{margin-bottom:50px}.article__comment{width:640px;margin:45px auto 0;position:relative}.article__comment .comment__title{font-size:16px;margin-bottom:15px;color:rgba(0,0,0,0.68)}.article__comment .comment__item{background-color:#fff;box-shadow:rgba(0,0,0,0.04) 0px 1px 4px;border:1px solid rgba(0,0,0,0.09);border-radius:3px;padding:10px 20px 10px 77px;margin:0 0 20px}.article__comment .comment__avatar{position:absolute;left:10px;height:57px;width:57px;display:inline-block;z-index:10;border:2px solid #fff;border-radius:50%}.article__comment .comment__body svg.ft-gray{height:12px;width:12px;vertical-align:text-top;margin-left:5px}.article__comment .comment__body .vditor-reset{min-height:40px}.article__comment .comment__user,.article__comment .comment__user a{color:#03a87c}.article__comment .comment__user a:hover{color:#018f69;text-decoration:none}.comment-body-ref{position:absolute;width:559px;box-sizing:border-box;left:101px}.comment-body-ref .ft-green{display:none}.comment__textarea{background-color:#fff;box-shadow:rgba(0,0,0,0.04) 0px 1px 4px;border:1px solid rgba(0,0,0,0.09);border-radius:3px;padding:10px;margin:0 0 5px;width:100%;box-sizing:border-box;cursor:pointer;resize:none}.article__toolbar{box-shadow:0 0 1px rgba(0,0,0,0.54);position:fixed;bottom:-44px;width:100%;background-color:#fff;height:44px;font-size:16px;line-height:44px;transition:all 0.1s;opacity:0}.article__toolbar .wrapper{max-width:740px}.article__toolbar svg{height:20px;width:20px;vertical-align:middle}.article__toolbar .fn-right{position:absolute;top:0;right:20px}.article__toolbar .article__code{position:absolute;height:130px;width:130px;left:50px;bottom:30px}.article__next{border-left:1px solid rgba(0,0,0,0.38);line-height:15px;margin-top:7px;color:rgba(0,0,0,0.84);font-size:14px;display:inline-block;padding-left:20px;margin-left:20px;transition:all .2s;float:right}.article__next:hover{text-decoration:none;color:rgba(0,0,0,0.54)}.pagination{margin-top:30px;font-size:16px;border-top:1px solid rgba(0,0,0,0.15)}.pagination__item{text-align:center;border-top:1px solid transparent;transition:all 0.1s;display:inline-block;position:relative;top:-1px;margin:0 10px;padding:0 10px;line-height:30px;color:rgba(0,0,0,0.54)}.pagination__item:hover{border-top-color:rgba(0,0,0,0.54);color:rgba(0,0,0,0.84);text-decoration:none}.pagination__item--active{background:rgba(0,0,0,0.05);border-top-color:rgba(0,0,0,0.54)}.pagination__item--active:hover{color:rgba(0,0,0,0.54);border-top-color:rgba(0,0,0,0.54)}.pagination__item:first-child{margin-left:0}.pagination__item:last-child{margin-right:0}.pagination__omit{top:-5px;margin:0;border:0;padding:0;color:#ccc}.page__item{display:block;border-bottom:1px solid rgba(0,0,0,0.05);padding:40px 0 35px}@media (max-width: 768px){.header{text-align:left}.header__logo,.post__side,.article__next,#articleBottomShare,#articleShare,.article__comment .comment__avatar{display:none}.post{margin:50px 20px 20px}.article__toolbar{padding-left:20px;box-sizing:border-box}.article__item{width:100%;margin-bottom:20px}.article__wrap{margin:0}.article__comment{width:100%}.article__main{height:auto !important}.footer .fn-right{float:none}.footer__tag{display:block}.footer__tag>div{margin:0 0 50px}.footer__tag>div:last-child{margin:0}.pagination__item{margin:0}.article__comment .comment__item{padding-left:10px}}#nprogress .bar{background:#d23f31}#nprogress .peg{box-shadow:0 0 10px #d23f31, 0 0 5px #d23f31}#nprogress .spinner-icon{border-top-color:#d23f31;border-left-color:#d23f31} diff --git a/Casper/css/base.scss b/Casper/css/base.scss new file mode 100644 index 0000000..76a83bb --- /dev/null +++ b/Casper/css/base.scss @@ -0,0 +1,842 @@ +/** + * Solo - A small and beautiful blogging system written in Java. + * Copyright (c) 2010-2019, b3log.org & hacpai.com + * + * 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 . + */ +/* + * skin style + * + * @author Liyuan Li + * @version 2.1.0.0, Mar 22, 2019 + */ +@import "../../../scss/reset"; +@import "../../../scss/usite"; +@import "../../../scss/toc"; +@import "../../../scss/nprogress"; +@import "vditor/src/assets/scss/classic"; + +.fn-flex { + display: flex +} + +.fn-flex-1 { + flex: 1; + min-width: 1px +} + +.fn-clear:before, .fn-clear:after { + display: table; + content: "" +} + +.fn-clear:after { + clear: both +} + +.fn-left { + float: left +} + +.fn-right { + float: right +} + +.ft-12 { + font-size: 12px; + font-weight: normal; +} + +.ft-gray { + color: rgba(0, 0, 0, 0.54); +} + +.ft-fade { + color: rgba(0, 0, 0, 0.38); +} + +.ft-green { + color: #03a87c !important; + transition: all 0.1s +} + +.ft-green:hover { + color: #018f69 !important +} + +.tag { + background-color: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.68); + padding: 5px 10px; + line-height: 22px; + font-weight: 400; + border-radius: 3px; + white-space: nowrap; + display: inline-block; + transition: all 0.1s; + margin: 0 8px 8px 0; + font-size: 15px +} + +.tag:hover { + text-decoration: none; + background: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.68) +} + +.tag__level0 { + line-height: inherit; + font-size: 12px; + color: rgba(0, 0, 0, 0.38) +} + +.tag__level1 { + line-height: inherit; + font-size: 16px; + color: rgba(0, 0, 0, 0.54) +} + +.tag__level2 { + line-height: inherit; + font-size: 21px; + color: #6f6f6f +} + +.tag__level3 { + line-height: inherit; + font-size: 24px; + color: #3b3e43 +} + +.tag__level4 { + line-height: inherit; + font-size: 30px; + color: #000 +} + +.module__title { + border-bottom: 1px solid rgba(0, 0, 0, 0.15); + margin-bottom: 25px; + line-height: 26px; + font-size: 22px; + position: relative; + height: 46px +} + +.module__title > span { + border-bottom: 1px solid rgba(0, 0, 0, 0.54); + position: absolute; + padding-bottom: 20px; + height: 26px +} + +/* star framework */ +.wrapper { + max-width: 1000px; + margin: 0 auto; + box-sizing: border-box +} + +.header { + padding: 0 20px; + box-sizing: border-box; + height: 64px; + text-align: center; + transition: all 0.1s; + z-index: 11; +} + +.header h1 { + display: inline-block; + line-height: 61px; + width: 50%; + overflow: auto; + white-space: nowrap; +} + +.header h1::-webkit-scrollbar { + display: none; +} + +.header--fixed { + position: fixed; + width: 100%; + top: -64px; + background-color: #fff; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.15) +} + +.header__logo { + float: left; + height: 32px; + width: 32px; + margin: 16px 0; + background-size: cover; + background-repeat: no-repeat; + background-position: center center +} + +.header__title { + overflow: hidden; + font-size: 26px; + color: rgba(0, 0, 0, 0.84) +} + +.header__title:hover { + text-decoration: none +} + +.header__icon { + transition: all 0.1s; + color: rgba(0, 0, 0, 0.54); + text-decoration: none; + width: 25px; + margin-left: 10px; + float: left; + margin-top: 25px +} + +.header__icon:hover { + text-decoration: none; + color: rgba(0, 0, 0, 0.68) +} + +.header__icon svg { + height: 16px; + width: 16px +} + +.header__icon.avatar { + background-size: cover; + background-repeat: no-repeat; + background-position: center center; + display: inline-block; + height: 32px; + width: 32px; + border-radius: 16px; + margin-top: 16px; + margin-left: 14px +} + +.header__a { + color: #03a87c; + font-size: 16px; + float: left; + margin: 16px 0 0 16px; + transition: all 0.1s; + line-height: 32px; +} + +.header__a:hover { + text-decoration: none; + color: #018f69; + border-color: #018f69 +} + +.header__nav { + height: 50px; + padding: 0 20px; + box-sizing: border-box +} + +.header__nav .wrapper { + overflow: auto; + word-wrap: normal; + white-space: nowrap +} + +.header__nav .wrapper::-webkit-scrollbar { + display: none +} + +.header__nav a { + color: rgba(0, 0, 0, 0.76); + font-size: 15px; + padding: 0 10px; + line-height: 50px; + text-decoration: none +} + +.header__nav a img { + height: 16px; + width: 16px; + vertical-align: text-top +} + +.header__nav a:first-child { + padding-left: 0 +} + +.header__nav--fixed { + z-index: 11; + position: fixed; + width: 100%; + top: 0; + background-color: #fff; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.15) +} + +.footer { + margin-top: 50px; + padding: 10px 20px 25px; + font-size: 14px; + border-top: 1px solid rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.38) +} + +.footer a { + color: rgba(0, 0, 0, 0.54) +} + +.footer__tag { + margin-top: 50px; +} + +.footer__tag > div { + margin-right: 20px +} + +.footer__tag > div:last-child { + margin-right: 0 +} + +.footer__tag li { + list-style: none; +} + +.footer__tag li a { + color: rgba(0, 0, 0, 0.54); + display: block; + line-height: 30px; + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0 25px; +} + +.footer__tag li a:hover { + color: rgba(0, 0, 0, 0.68); +} + +.main { + margin: 50px 20px 0 +} + +.main .content { + margin-top: 50px +} + +.board { + padding: 12px 0; + text-align: center +} + +/* star article */ +.article { + &__toc { + left: 100%; + position: fixed; + top: 90px; + bottom: 60px; + a { + color: rgba(0, 0, 0, 0.54); + &:hover { + color: rgba(0, 0, 0, 0.68); + } + } + } + &__main { + display: flex; + flex-direction: column; + } + &__thumbnail { + margin: 10px 0; + background-position: center center; + background-size: cover; + flex: 1; + } + &__wrap { + margin-right: -20px + } + + &__item { + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 2px; + margin-bottom: 20px; + float: left + } + + &__item--big { + width: 318px; + margin-right: 20px + } + + &__item--big .article__main { + height: 236px; + overflow: hidden; + } + + &__item--small { + width: 318px; + margin-right: 20px; + .article__thumbnail { + background-image: none !important; + } + } + + &__item--small .article__main { + height: 91px; + overflow: hidden; + } + + &__item--mid { + width: 488px; + margin-right: 20px + } + + &__item--mid .article__main { + height: 195px; + overflow: hidden; + } + + &__panel { + padding: 16px + } + + &__title { + overflow: hidden; + line-height: 24px; + font-size: 21px; + font-weight: 600; + word-break: break-all + } + + &__title a { + color: rgba(0, 0, 0, 0.84) + } + + &__title a:hover { + text-decoration: none + } + + &__title sup { + top: -6px; + font-size: 12px; + color: #03a87c; + } + + &__content { + margin-top: 4px; + font-size: 16px; + color: rgba(0, 0, 0, 0.54); + overflow: hidden; + line-height: 23px; + word-break: break-all; + } + + &__meta { + font-size: 15px; + line-height: 23px; + flex-shrink: 0; + } +} + +/* end article list */ + +/* start article */ +.post { + max-width: 740px; + margin: 50px auto 20px; + position: relative +} + +.post__main { + margin: 20px 0 0 0 +} + +.post__title { + font-weight: 700; + font-size: 42px; + margin: 0 -20px 10px; + word-break: break-all +} + +.post__title sup { + font-size: 16px; + top: -20px; + color: #03a87c; +} + +.post__tags { + padding: 4px 0 22px; + border-bottom: 1px solid rgba(0, 0, 0, 0.05) +} + +.post__share { + padding: 20px 0; + margin-bottom: 20px; + font-size: 16px; +} + +.post__share svg { + height: 20px; + width: 20px; + vertical-align: bottom +} + +.post__share #articleShare { + position: relative +} + +.post__share #articleShare .article__code { + position: absolute; + height: 130px; + width: 130px; + left: -2px; + top: 22px +} + +.post__share-icon { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; +} + +.post__share-icon:hover { + color: rgba(0, 0, 0, 0.68); +} + +.post__view { + color: #03a87c; + transition: all 0.1s +} + +.post__view:hover { + color: #018f69; + text-decoration: none +} + +.post__side { + position: fixed; + top: 50%; + left: 10%; + width: 55px; + text-align: center; + font-size: 16px; + margin-top: -125px; + transition: opacity .1s; + opacity: 0 +} + +.post__side svg { + height: 25px; + width: 25px +} + +.post__side .ft-green svg { + height: 55px; + width: 55px; + vertical-align: bottom; + margin-bottom: 10px +} + +.post__side .article__code { + position: absolute; + height: 130px; + width: 130px; + left: 45px; + top: 90px +} + +#articleSideShare { + width: 26px; + margin: 0 auto; +} + +.article__bottom { + background-color: #fafafa; + padding: 40px 20px; + position: relative; + z-index: 1; +} + +.article__bottom .footer__tag { + margin-bottom: 50px; +} + +.article__comment { + width: 640px; + margin: 45px auto 0; + position: relative; +} + +.article__comment .comment__title { + font-size: 16px; + margin-bottom: 15px; + color: rgba(0, 0, 0, 0.68) +} + +.article__comment .comment__item { + background-color: rgb(255, 255, 255); + box-shadow: rgba(0, 0, 0, 0.04) 0px 1px 4px; + border: 1px solid rgba(0, 0, 0, 0.09); + border-radius: 3px; + padding: 10px 20px 10px 77px; + margin: 0 0 20px; +} + +.article__comment .comment__avatar { + position: absolute; + left: 10px; + height: 57px; + width: 57px; + display: inline-block; + z-index: 10; + border: 2px solid rgb(255, 255, 255); + border-radius: 50%; +} + +.article__comment .comment__body svg.ft-gray { + height: 12px; + width: 12px; + vertical-align: text-top; + margin-left: 5px; +} + +.article__comment .comment__body .vditor-reset { + min-height: 40px; +} + +.article__comment .comment__user, +.article__comment .comment__user a { + color: rgb(3, 168, 124); +} + +.article__comment .comment__user a:hover { + color: rgb(1, 143, 105); + text-decoration: none; +} + +.comment-body-ref { + position: absolute; + width: 559px; + box-sizing: border-box; + left: 101px; +} + +.comment-body-ref .ft-green { + display: none; +} + +.comment__textarea { + background-color: rgb(255, 255, 255); + box-shadow: rgba(0, 0, 0, 0.04) 0px 1px 4px; + border: 1px solid rgba(0, 0, 0, 0.09); + border-radius: 3px; + padding: 10px; + margin: 0 0 5px; + width: 100%; + box-sizing: border-box; + cursor: pointer; + resize: none; +} + +.article__toolbar { + box-shadow: 0 0 1px rgba(0, 0, 0, 0.54); + position: fixed; + bottom: -44px; + width: 100%; + background-color: #fff; + height: 44px; + font-size: 16px; + line-height: 44px; + transition: all 0.1s; + opacity: 0 +} + +.article__toolbar .wrapper { + max-width: 740px +} + +.article__toolbar svg { + height: 20px; + width: 20px; + vertical-align: middle +} + +.article__toolbar .fn-right { + position: absolute; + top: 0; + right: 20px +} + +.article__toolbar .article__code { + position: absolute; + height: 130px; + width: 130px; + left: 50px; + bottom: 30px +} + +.article__next { + border-left: 1px solid rgba(0, 0, 0, 0.38); + line-height: 15px; + margin-top: 7px; + color: rgba(0, 0, 0, 0.84); + font-size: 14px; + display: inline-block; + padding-left: 20px; + margin-left: 20px; + transition: all .2s; + float: right; +} + +.article__next:hover { + text-decoration: none; + color: rgba(0, 0, 0, 0.54); +} + +.pagination { + margin-top: 30px; + font-size: 16px; + border-top: 1px solid rgba(0, 0, 0, 0.15) +} + +.pagination__item { + text-align: center; + border-top: 1px solid transparent; + transition: all 0.1s; + display: inline-block; + position: relative; + top: -1px; + margin: 0 10px; + padding: 0 10px; + line-height: 30px; + color: rgba(0, 0, 0, 0.54) +} + +.pagination__item:hover { + border-top-color: rgba(0, 0, 0, 0.54); + color: rgba(0, 0, 0, 0.84); + text-decoration: none +} + +.pagination__item--active { + background: rgba(0, 0, 0, 0.05); + border-top-color: rgba(0, 0, 0, 0.54) +} + +.pagination__item--active:hover { + color: rgba(0, 0, 0, 0.54); + border-top-color: rgba(0, 0, 0, 0.54) +} + +.pagination__item:first-child { + margin-left: 0 +} + +.pagination__item:last-child { + margin-right: 0 +} + +.pagination__omit { + top: -5px; + margin: 0; + border: 0; + padding: 0; + color: #ccc +} + +.page__item { + display: block; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + padding: 40px 0 35px +} + +@media (max-width: 768px) { + .header { + text-align: left + } + + .header__logo, + .post__side, .article__next, #articleBottomShare, #articleShare, + .article__comment .comment__avatar { + display: none + } + + .post { + margin: 50px 20px 20px + } + + .article__toolbar { + padding-left: 20px; + box-sizing: border-box + } + + .article__item { + width: 100%; + margin-bottom: 20px + } + + .article__wrap { + margin: 0 + } + + .article__comment { + width: 100% + } + + .article__main { + height: auto !important + } + + .footer .fn-right { + float: none + } + + .footer__tag { + display: block + } + + .footer__tag > div { + margin: 0 0 50px + } + + .footer__tag > div:last-child { + margin: 0 + } + + .pagination__item { + margin: 0 + } + + .article__comment .comment__item { + padding-left: 10px; + } +} + +/* Make clicks pass-through */ +#nprogress .bar { + background: #d23f31; +} + +/* Fancy blur effect */ +#nprogress .peg { + box-shadow: 0 0 10px #d23f31, 0 0 5px #d23f31; +} + +#nprogress .spinner-icon { + border-top-color: #d23f31; + border-left-color: #d23f31; +} \ No newline at end of file diff --git a/Casper/css/selection.json b/Casper/css/selection.json new file mode 100755 index 0000000..8f73557 --- /dev/null +++ b/Casper/css/selection.json @@ -0,0 +1,524 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M219.429 804.571c0 60.571-49.143 109.714-109.714 109.714s-109.714-49.143-109.714-109.714 49.143-109.714 109.714-109.714 109.714 49.143 109.714 109.714zM219.429 512c0 60.571-49.143 109.714-109.714 109.714s-109.714-49.143-109.714-109.714 49.143-109.714 109.714-109.714 109.714 49.143 109.714 109.714zM1024 749.714v109.714c0 9.714-8.571 18.286-18.286 18.286h-694.857c-9.714 0-18.286-8.571-18.286-18.286v-109.714c0-9.714 8.571-18.286 18.286-18.286h694.857c9.714 0 18.286 8.571 18.286 18.286zM219.429 219.429c0 60.571-49.143 109.714-109.714 109.714s-109.714-49.143-109.714-109.714 49.143-109.714 109.714-109.714 109.714 49.143 109.714 109.714zM1024 457.143v109.714c0 9.714-8.571 18.286-18.286 18.286h-694.857c-9.714 0-18.286-8.571-18.286-18.286v-109.714c0-9.714 8.571-18.286 18.286-18.286h694.857c9.714 0 18.286 8.571 18.286 18.286zM1024 164.571v109.714c0 9.714-8.571 18.286-18.286 18.286h-694.857c-9.714 0-18.286-8.571-18.286-18.286v-109.714c0-9.714 8.571-18.286 18.286-18.286h694.857c9.714 0 18.286 8.571 18.286 18.286z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list-ul" + ], + "defaultCode": 61642, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "list", + "id": 6, + "order": 3, + "prevSize": 28, + "code": 61642 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M804.571 566.857v274.286c0 20-16.571 36.571-36.571 36.571h-219.429v-219.429h-146.286v219.429h-219.429c-20 0-36.571-16.571-36.571-36.571v-274.286c0-1.143 0.571-2.286 0.571-3.429l328.571-270.857 328.571 270.857c0.571 1.143 0.571 2.286 0.571 3.429zM932 527.429l-35.429 42.286c-2.857 3.429-7.429 5.714-12 6.286h-1.714c-4.571 0-8.571-1.143-12-4l-395.429-329.714-395.429 329.714c-4 2.857-8.571 4.571-13.714 4-4.571-0.571-9.143-2.857-12-6.286l-35.429-42.286c-6.286-7.429-5.143-19.429 2.286-25.714l410.857-342.286c24-20 62.857-20 86.857 0l139.429 116.571v-111.429c0-10.286 8-18.286 18.286-18.286h109.714c10.286 0 18.286 8 18.286 18.286v233.143l125.143 104c7.429 6.286 8.571 18.286 2.286 25.714z" + ], + "width": 950.8571428571428, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home" + ], + "defaultCode": 61461, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "home", + "id": 7, + "order": 4, + "prevSize": 28, + "code": 61461 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M402.286 219.429c-178.286 0-329.143 100.571-329.143 219.429 0 62.857 42.286 123.429 115.429 165.714l55.429 32-20 48c12-6.857 24-14.286 35.429-22.286l25.143-17.714 30.286 5.714c28.571 5.143 57.714 8 87.429 8 178.286 0 329.143-100.571 329.143-219.429s-150.857-219.429-329.143-219.429zM402.286 146.286c222.286 0 402.286 130.857 402.286 292.571s-180 292.571-402.286 292.571c-34.857 0-68.571-3.429-100.571-9.143-47.429 33.714-101.143 58.286-158.857 73.143-15.429 4-32 6.857-49.143 9.143h-1.714c-8.571 0-16.571-6.857-18.286-16.571v0c-2.286-10.857 5.143-17.714 11.429-25.143 22.286-25.143 47.429-47.429 66.857-94.857-92.571-53.714-152-136.571-152-229.143 0-161.714 180-292.571 402.286-292.571zM872 814.286c19.429 47.429 44.571 69.714 66.857 94.857 6.286 7.429 13.714 14.286 11.429 25.143v0c-2.286 10.286-10.857 17.714-20 16.571-17.143-2.286-33.714-5.143-49.143-9.143-57.714-14.857-111.429-39.429-158.857-73.143-32 5.714-65.714 9.143-100.571 9.143-103.429 0-198.286-28.571-269.714-75.429 16.571 1.143 33.714 2.286 50.286 2.286 122.857 0 238.857-35.429 327.429-99.429 95.429-69.714 148-164 148-266.286 0-29.714-4.571-58.857-13.143-86.857 96.571 53.143 159.429 137.714 159.429 233.143 0 93.143-59.429 175.429-152 229.143z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "comments-o" + ], + "defaultCode": 61670, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "comments", + "id": 8, + "order": 5, + "prevSize": 28, + "code": 61670 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M73.143 950.857h164.571v-164.571h-164.571v164.571zM274.286 950.857h182.857v-164.571h-182.857v164.571zM73.143 749.714h164.571v-182.857h-164.571v182.857zM274.286 749.714h182.857v-182.857h-182.857v182.857zM73.143 530.286h164.571v-164.571h-164.571v164.571zM493.714 950.857h182.857v-164.571h-182.857v164.571zM274.286 530.286h182.857v-164.571h-182.857v164.571zM713.143 950.857h164.571v-164.571h-164.571v164.571zM493.714 749.714h182.857v-182.857h-182.857v182.857zM292.571 256v-164.571c0-9.714-8.571-18.286-18.286-18.286h-36.571c-9.714 0-18.286 8.571-18.286 18.286v164.571c0 9.714 8.571 18.286 18.286 18.286h36.571c9.714 0 18.286-8.571 18.286-18.286zM713.143 749.714h164.571v-182.857h-164.571v182.857zM493.714 530.286h182.857v-164.571h-182.857v164.571zM713.143 530.286h164.571v-164.571h-164.571v164.571zM731.429 256v-164.571c0-9.714-8.571-18.286-18.286-18.286h-36.571c-9.714 0-18.286 8.571-18.286 18.286v164.571c0 9.714 8.571 18.286 18.286 18.286h36.571c9.714 0 18.286-8.571 18.286-18.286zM950.857 219.429v731.429c0 40-33.143 73.143-73.143 73.143h-804.571c-40 0-73.143-33.143-73.143-73.143v-731.429c0-40 33.143-73.143 73.143-73.143h73.143v-54.857c0-50.286 41.143-91.429 91.429-91.429h36.571c50.286 0 91.429 41.143 91.429 91.429v54.857h219.429v-54.857c0-50.286 41.143-91.429 91.429-91.429h36.571c50.286 0 91.429 41.143 91.429 91.429v54.857h73.143c40 0 73.143 33.143 73.143 73.143z" + ], + "width": 950.8571428571428, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calendar" + ], + "defaultCode": 61555, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "date", + "id": 9, + "order": 6, + "prevSize": 28, + "code": 61555 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M658.286 475.429c0-141.143-114.857-256-256-256s-256 114.857-256 256 114.857 256 256 256 256-114.857 256-256zM950.857 950.857c0 40-33.143 73.143-73.143 73.143-19.429 0-38.286-8-51.429-21.714l-196-195.429c-66.857 46.286-146.857 70.857-228 70.857-222.286 0-402.286-180-402.286-402.286s180-402.286 402.286-402.286 402.286 180 402.286 402.286c0 81.143-24.571 161.143-70.857 228l196 196c13.143 13.143 21.143 32 21.143 51.429z" + ], + "width": 950.8571428571428, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "search" + ], + "defaultCode": 61442, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "search", + "id": 10, + "order": 7, + "prevSize": 28, + "code": 61442 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M961.714 760.571l-94.857 94.286c-14.286 14.286-37.143 14.286-51.429 0l-303.429-303.429-303.429 303.429c-14.286 14.286-37.143 14.286-51.429 0l-94.857-94.286c-14.286-14.286-14.286-37.714 0-52l424-423.429c14.286-14.286 37.143-14.286 51.429 0l424 423.429c14.286 14.286 14.286 37.714 0 52z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chevron-up" + ], + "defaultCode": 61559, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "up", + "id": 11, + "order": 8, + "prevSize": 28, + "code": 61559 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M584.571 548.571h180.571c-1.143-2.857-1.714-6.286-2.857-9.143l-121.143-283.429h-404.571l-121.143 283.429c-1.143 2.857-1.714 6.286-2.857 9.143h180.571l54.286 109.714h182.857zM877.714 565.714v275.429c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-275.429c0-20.571 6.286-50.857 14.286-70.286l136-315.429c8-18.857 30.857-33.714 50.857-33.714h475.429c20 0 42.857 14.857 50.857 33.714l136 315.429c8 19.429 14.286 49.714 14.286 70.286z" + ], + "width": 877.7142857142857, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "inbox" + ], + "defaultCode": 61468, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "inbox", + "id": 12, + "order": 9, + "prevSize": 28, + "code": 61468 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M256 256c0-40.571-32.571-73.143-73.143-73.143s-73.143 32.571-73.143 73.143 32.571 73.143 73.143 73.143 73.143-32.571 73.143-73.143zM865.714 585.143c0 19.429-8 38.286-21.143 51.429l-280.571 281.143c-13.714 13.143-32.571 21.143-52 21.143s-38.286-8-51.429-21.143l-408.571-409.143c-29.143-28.571-52-84-52-124.571v-237.714c0-40 33.143-73.143 73.143-73.143h237.714c40.571 0 96 22.857 125.143 52l408.571 408c13.143 13.714 21.143 32.571 21.143 52zM1085.143 585.143c0 19.429-8 38.286-21.143 51.429l-280.571 281.143c-13.714 13.143-32.571 21.143-52 21.143-29.714 0-44.571-13.714-64-33.714l268.571-268.571c13.143-13.143 21.143-32 21.143-51.429s-8-38.286-21.143-52l-408.571-408c-29.143-29.143-84.571-52-125.143-52h128c40.571 0 96 22.857 125.143 52l408.571 408c13.143 13.714 21.143 32.571 21.143 52z" + ], + "width": 1085.1474285714285, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tags" + ], + "defaultCode": 61484, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "tags", + "id": 13, + "order": 10, + "prevSize": 28, + "code": 61484 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M832 694.857c0-14.857-5.714-28.571-16-38.857l-118.857-118.857c-10.286-10.286-24.571-16-38.857-16-16.571 0-29.714 6.286-41.143 18.286 18.857 18.857 41.143 34.857 41.143 64 0 30.286-24.571 54.857-54.857 54.857-29.143 0-45.143-22.286-64-41.143-12 11.429-18.857 24.571-18.857 41.714 0 14.286 5.714 28.571 16 38.857l117.714 118.286c10.286 10.286 24.571 15.429 38.857 15.429s28.571-5.143 38.857-14.857l84-83.429c10.286-10.286 16-24 16-38.286zM430.286 292c0-14.286-5.714-28.571-16-38.857l-117.714-118.286c-10.286-10.286-24.571-16-38.857-16s-28.571 5.714-38.857 15.429l-84 83.429c-10.286 10.286-16 24-16 38.286 0 14.857 5.714 28.571 16 38.857l118.857 118.857c10.286 10.286 24.571 15.429 38.857 15.429 16.571 0 29.714-5.714 41.143-17.714-18.857-18.857-41.143-34.857-41.143-64 0-30.286 24.571-54.857 54.857-54.857 29.143 0 45.143 22.286 64 41.143 12-11.429 18.857-24.571 18.857-41.714zM941.714 694.857c0 43.429-17.714 85.714-48.571 116l-84 83.429c-30.857 30.857-72.571 47.429-116 47.429-44 0-85.714-17.143-116.571-48.571l-117.714-118.286c-30.857-30.857-47.429-72.571-47.429-116 0-45.143 18.286-88 50.286-119.429l-50.286-50.286c-31.429 32-73.714 50.286-118.857 50.286-43.429 0-85.714-17.143-116.571-48l-118.857-118.857c-31.429-31.429-48-72.571-48-116.571 0-43.429 17.714-85.714 48.571-116l84-83.429c30.857-30.857 72.571-47.429 116-47.429 44 0 85.714 17.143 116.571 48.571l117.714 118.286c30.857 30.857 47.429 72.571 47.429 116 0 45.143-18.286 88-50.286 119.429l50.286 50.286c31.429-32 73.714-50.286 118.857-50.286 43.429 0 85.714 17.143 116.571 48l118.857 118.857c31.429 31.429 48 72.571 48 116.571z" + ], + "width": 950.8571428571428, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chain", + "link" + ], + "defaultCode": 61633, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "link", + "id": 14, + "order": 11, + "prevSize": 28, + "code": 61633 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M863.429 603.429c0 1.143 0 2.857-0.571 4-48.571 202.286-215.429 343.429-426.286 343.429-111.429 0-219.429-44-300.571-121.143l-73.714 73.714c-6.857 6.857-16 10.857-25.714 10.857-20 0-36.571-16.571-36.571-36.571v-256c0-20 16.571-36.571 36.571-36.571h256c20 0 36.571 16.571 36.571 36.571 0 9.714-4 18.857-10.857 25.714l-78.286 78.286c53.714 50.286 125.143 78.857 198.857 78.857 101.714 0 196-52.571 249.143-139.429 13.714-22.286 20.571-44 30.286-66.857 2.857-8 8.571-13.143 17.143-13.143h109.714c10.286 0 18.286 8.571 18.286 18.286zM877.714 146.286v256c0 20-16.571 36.571-36.571 36.571h-256c-20 0-36.571-16.571-36.571-36.571 0-9.714 4-18.857 10.857-25.714l78.857-78.857c-54.286-50.286-125.714-78.286-199.429-78.286-101.714 0-196 52.571-249.143 139.429-13.714 22.286-20.571 44-30.286 66.857-2.857 8-8.571 13.143-17.143 13.143h-113.714c-10.286 0-18.286-8.571-18.286-18.286v-4c49.143-202.857 217.714-343.429 428.571-343.429 112 0 221.143 44.571 302.286 121.143l74.286-73.714c6.857-6.857 16-10.857 25.714-10.857 20 0 36.571 16.571 36.571 36.571z" + ], + "width": 877.7142857142857, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "refresh" + ], + "defaultCode": 61473, + "grid": 14 + }, + "attrs": [], + "properties": { + "name": "refresh", + "id": 15, + "order": 12, + "prevSize": 28, + "code": 61473 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M976 768h-16v-208c0-61.756-50.242-112-112-112h-272v-128h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v128h-272c-61.756 0-112 50.244-112 112v208h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48zM192 960h-128v-128h128v128zM576 960h-128v-128h128v128zM448 256v-128h128v128h-128zM960 960h-128v-128h128v128z" + ], + "tags": [ + "tree", + "branches", + "inheritance" + ], + "defaultCode": 59836, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "tree, branches", + "name": "category", + "order": 13, + "id": 16, + "prevSize": 32, + "code": 59836 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M768 640v-128h-320v-128h320v-128l192 192zM704 576v256h-320v192l-384-192v-832h704v320h-64v-256h-512l256 128v576h256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "exit", + "signout", + "logout", + "quit", + "close" + ], + "defaultCode": 59924, + "grid": 16 + }, + "attrs": [], + "properties": { + "ligatures": "exit, signout", + "name": "logout", + "id": 0, + "order": 14, + "prevSize": 32, + "code": 59924 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M512 192c-282.784 0-512 320-512 320s229.216 320 512 320 512-320 512-320-229.216-320-512-320zM512 704c-106.016 0-192-85.984-192-192s85.984-192 192-192 192 85.984 192 192-85.984 192-192 192zM512 384c-70.688 0-128 57.312-128 128s57.312 128 128 128 128-57.312 128-128-57.312-128-128-128z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye", + "views" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 15, + "id": 1, + "name": "views", + "prevSize": 32, + "code": 59648 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M384 736c0-151.234 95.874-280.486 230.032-330.2 16.28-36.538 25.968-77.164 25.968-117.8 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h397.306c-8.664-30.53-13.306-62.732-13.306-96z", + "M736 448c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.056 0 288-128.942 288-288s-128.942-288-288-288zM896 768h-128v128h-64v-128h-128v-64h128v-128h64v128h128v64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-plus", + "user", + "user-add", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59763, + "grid": 16 + }, + "attrs": [], + "properties": { + "ligatures": "user-plus, user2", + "name": "register", + "id": 2, + "order": 16, + "prevSize": 32, + "code": 59763 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cog", + "gear", + "preferences", + "settings", + "generate", + "control", + "options" + ], + "defaultCode": 59796, + "grid": 16 + }, + "attrs": [], + "properties": { + "ligatures": "cog, gear", + "name": "setting", + "id": 3, + "order": 17, + "prevSize": 32, + "code": 59796 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enter", + "signin", + "login" + ], + "defaultCode": 59923, + "grid": 16 + }, + "attrs": [], + "properties": { + "ligatures": "enter, signin", + "name": "login", + "id": 4, + "order": 18, + "prevSize": 32, + "code": 59923 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M136.294 750.93c-75.196 0-136.292 61.334-136.292 136.076 0 75.154 61.1 135.802 136.292 135.802 75.466 0 136.494-60.648 136.494-135.802-0.002-74.742-61.024-136.076-136.494-136.076zM0.156 347.93v196.258c127.784 0 247.958 49.972 338.458 140.512 90.384 90.318 140.282 211.036 140.282 339.3h197.122c-0.002-372.82-303.282-676.070-675.862-676.070zM0.388 0v196.356c455.782 0 826.756 371.334 826.756 827.644h196.856c0-564.47-459.254-1024-1023.612-1024z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "rss", + "social" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 19, + "id": 5, + "prevSize": 32, + "code": 59649, + "name": "rss" + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 16 + } + ], + "height": 1024, + "metadata": { + "name": "icomoon" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "icomoon" + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "embed": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215 + }, + "historySize": 100, + "showCodes": false, + "gridSize": 16 + } +} \ No newline at end of file diff --git a/Casper/footer.ftl b/Casper/footer.ftl new file mode 100644 index 0000000..cfe41db --- /dev/null +++ b/Casper/footer.ftl @@ -0,0 +1,52 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +
+
+
+ ${blogSubtitle} + <#include "../../common-template/macro-user_site.ftl"/> + <@userSite dir="n"/> +
+ ${blogTitle} © ${year} ${footerContent} +
+
+
+ ${statistic.statisticPublishedBlogArticleCount} ${articleLabel}   + ${statistic.statisticPublishedBlogCommentCount} ${commentLabel}   + ${statistic.statisticBlogViewCount} ${viewLabel}   + ${onlineVisitorCnt} ${onlineVisitorLabel} +
+ Powered by B3log 开源 • + Solo • + Theme ${skinDirName} + by Vanessa +
+
+
+
+ + + + +<#include "../../common-template/label.ftl"> +${plugins} diff --git a/Casper/header.ftl b/Casper/header.ftl new file mode 100644 index 0000000..f8a2612 --- /dev/null +++ b/Casper/header.ftl @@ -0,0 +1,104 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

${blogTitle}

+ +
+ + + + + + <#if isLoggedIn> + + <#else> + + ${startToUseLabel} + + +
+
+
\ No newline at end of file diff --git a/Casper/images/header-bg.jpg b/Casper/images/header-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6999007a844b2d00186549d5e5c2c693cf50e351 GIT binary patch literal 72827 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 +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${blogTitle}"> + + + + +<#include "header.ftl"> +
+<#if pjax> +<#include "nav.ftl"> +
+ <#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+ <#include "article-list.ftl"> +
+ <#include "bottom2.ftl"> +
+<#if pjax> +
+<#include "footer.ftl"> + + \ No newline at end of file diff --git a/Casper/js/common.js b/Casper/js/common.js new file mode 100644 index 0000000..f2f5d83 --- /dev/null +++ b/Casper/js/common.js @@ -0,0 +1,223 @@ +/* + * Solo - A small and beautiful blogging system written in Java. + * Copyright (c) 2010-2019, b3log.org & hacpai.com + * + * 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 . + */ +/** + * @fileoverview util and every page should be used. + * + * @author
Liyuan Li + * @version 0.1.0.1, Mar 22, 2019 + */ + +/** + * @description 皮肤脚本 + * @static + */ +var Skin = { + init: function () { + var $article__toc = $('.article__toc') + $(window).scroll(function () { + if ($article__toc.length === 1) { + if ($('.article__bottom').offset().top < $(window).scrollTop()) { + $article__toc.hide() + } else { + $article__toc.show() + } + } + + 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(); + + Util.initPjax(function () { + Util.parseMarkdown(); + if (Util.isArticlePage(location.href)) { + if (!$('#articleSideShare .article__code').qrcode) { + $.ajax({ + method: "GET", + url: Label.staticServePath + '/js/lib/jquery.qrcode.min.js', + dataType: "script", + cache: true + }); + } + } + Skin.initToc() + }) + Skin.initToc() + }, + initTags: function () { + var $tags = $('#tags'); + var tagsArray = $tags.find('.tag') + // 根据引用次数添加样式,产生云效果 + var max = parseInt(tagsArray.first().data('count')); + var distance = Math.ceil(max / 5); + for (var i = 0; i < tagsArray.length; i++) { + var count = parseInt($(tagsArray[i]).data('count')); + // 算出当前 tag 数目所在的区间,加上 class + for (var j = 0; j < 5; j++) { + if (count > j * distance && count <= (j + 1) * distance) { + tagsArray[i].className = 'tag tag__level' + j; + break; + } + } + } + + // 按字母或者中文拼音进行排序 + $tags.html(tagsArray.get().sort(function (a, b) { + var valA = $(a).text().toLowerCase(); + var valB = $(b).text().toLowerCase(); + // 对中英文排序的处理 + return valA.localeCompare(valB); + })); + }, + initArticle: function () { + if ($('#articleShare').length === 0) { + return + } + Skin._share('#articleShare') + Skin._share('#articleSideShare') + Skin._share('#articleBottomShare') + + var $postSide = $('.post__side') + if ($(window).height() >= $('.post').height()) { + $postSide.css('opacity', 1) + } + $postSide.css('left', (($('.post').offset().left - 20) / 2 - 27) + 'px') + + var sideAbsoluteTop = ($(window).height() - 249) / 2 + 125 + var beforScrollTop = $(window).scrollTop() + $(window).scroll(function () { + if ($('#articleShare').length === 0) { + return + } + var scrollTop = $(window).scrollTop() + var bottomTop = $('.article__bottom').offset().top + if (scrollTop > 65) { + $postSide.css('opacity', 1) + + if (beforScrollTop - scrollTop > 0) { + // up + $('.header').addClass('header--fixed').css({'top': '0'}) + $('.main').css('padding-top', '64px') + if ($(window).height() <= $('.post').height() && scrollTop < bottomTop - $(window).height()) { + $('.article__toolbar').css({ + 'bottom': 0, + 'opacity': 1 + }) + } + } else if (beforScrollTop - scrollTop < 0) { + // down + $('.header').css({'top': '-64px'}).removeClass('header--fixed') + $('.main').css('padding-top', '0') + $('.article__toolbar').css({ + 'bottom': '-44px', + 'opacity': 0 + }) + } + + } else { + if ($(window).height() <= $('.post').height()) { + $postSide.css('opacity', 0) + } + + $('.header').removeClass('header--fixed').css('top', '-64px') + $('.main').css('padding-top', '0') + } + + if (scrollTop > bottomTop - $(window).height()) { + if (bottomTop < $(window).height()) { + $postSide.css({ + 'position': 'absolute', + 'top': (bottomTop - 125) + 'px' + }) + } else { + $postSide.css({ + 'position': 'absolute', + 'top': (bottomTop - sideAbsoluteTop) + 'px' + }) + } + } else { + $postSide.css({ + 'position': 'fixed', + 'top': '50%' + }) + } + + beforScrollTop = scrollTop + }) + + $(window).scroll() + }, + _share: function (id) { + var $this = $(id) + var $qrCode = $this.find('.article__code') + var shareURL = $qrCode.data('url') + var avatarURL = $qrCode.data('avatar') + var title = encodeURIComponent($qrCode.data('title') + ' - ' + $qrCode.data('blogtitle')), + url = encodeURIComponent(shareURL) + + var urls = {} + urls.tencent = 'http://share.v.t.qq.com/index.php?c=share&a=index&title=' + title + + '&url=' + url + '&pic=' + avatarURL + urls.weibo = 'http://v.t.sina.com.cn/share/share.php?title=' + + title + '&url=' + url + '&pic=' + avatarURL + urls.qqz = 'https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + + url + '&sharesource=qzone&title=' + title + '&pics=' + avatarURL + urls.twitter = 'https://twitter.com/intent/tweet?status=' + title + ' ' + url + + $this.find('span').click(function () { + var key = $(this).data('type') + + if (!key) { + return + } + + if (key === 'wechat') { + if ($qrCode.find('canvas').length === 0) { + $qrCode.qrcode({ + width: 128, + height: 128, + text: shareURL + }); + } else { + $qrCode.slideToggle(); + } + return false; + } + + window.open(urls[key], '_blank', 'top=100,left=200,width=648,height=618') + }) + }, + initToc: function () { + if ($('.article__toc').length !== 0 && $(window).width() > 1000) { + $('.article__toc').animate({ + 'left': ($('.post').outerWidth() + $('.post').offset().left) + 'px' + }, 600) + } else { + $('.article__toc').hide() + } + } +}; +Skin.init(); \ No newline at end of file diff --git a/Casper/js/common.min.js b/Casper/js/common.min.js new file mode 100644 index 0000000..1790da0 --- /dev/null +++ b/Casper/js/common.min.js @@ -0,0 +1 @@ +var Skin={init:function(){var t=$(".article__toc");$(window).scroll(function(){1===t.length&&($(".article__bottom").offset().top<$(window).scrollTop()?t.hide():t.show()),0!==$("#headerNav").length&&(64<$(window).scrollTop()?($("#headerNav").addClass("header__nav--fixed"),$(".main").css("margin-top","100px")):($("#headerNav").removeClass("header__nav--fixed"),$(".main").css("margin-top","50px")))}),$(window).scroll(),Util.initPjax(function(){Util.parseMarkdown(),Util.isArticlePage(location.href)&&($("#articleSideShare .article__code").qrcode||$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0})),Skin.initToc()}),Skin.initToc()},initTags:function(){for(var t=$("#tags"),e=t.find(".tag"),i=parseInt(e.first().data("count")),o=Math.ceil(i/5),a=0;a=$(".post").height()&&i.css("opacity",1),i.css("left",($(".post").offset().left-20)/2-27+"px");var o=($(window).height()-249)/2+125,a=$(window).scrollTop();$(window).scroll(function(){if(0!==$("#articleShare").length){var t=$(window).scrollTop(),e=$(".article__bottom").offset().top;65e-$(window).height()?e<$(window).height()?i.css({position:"absolute",top:e-125+"px"}):i.css({position:"absolute",top:e-o+"px"}):i.css({position:"fixed",top:"50%"}),a=t}}),$(window).scroll()}},_share:function(t){var e=$(t),i=e.find(".article__code"),o=i.data("url"),a=i.data("avatar"),n=encodeURIComponent(i.data("title")+" - "+i.data("blogtitle")),s=encodeURIComponent(o),r={};r.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+n+"&url="+s+"&pic="+a,r.weibo="http://v.t.sina.com.cn/share/share.php?title="+n+"&url="+s+"&pic="+a,r.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+s+"&sharesource=qzone&title="+n+"&pics="+a,r.twitter="https://twitter.com/intent/tweet?status="+n+" "+s,e.find("span").click(function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===i.find("canvas").length?i.qrcode({width:128,height:128,text:o}):i.slideToggle(),!1):void window.open(r[t],"_blank","top=100,left=200,width=648,height=618")})},initToc:function(){0!==$(".article__toc").length&&1e3<$(window).width()?$(".article__toc").animate({left:$(".post").outerWidth()+$(".post").offset().left+"px"},600):$(".article__toc").hide()}};Skin.init(); \ No newline at end of file diff --git a/Casper/links.ftl b/Casper/links.ftl new file mode 100644 index 0000000..ee0a7a1 --- /dev/null +++ b/Casper/links.ftl @@ -0,0 +1,66 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${linkLabel} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + ${links?size} + ${linkLabel} + +
+ <#if 0 != links?size> + <#list links as link> + + + +
+<#include "bottom.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> + + diff --git a/Casper/macro-comments.ftl b/Casper/macro-comments.ftl new file mode 100644 index 0000000..c3671a7 --- /dev/null +++ b/Casper/macro-comments.ftl @@ -0,0 +1,33 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#macro comments commentList article> +
+
${commentLabel}
+
+ <#list commentList as comment> + <#include 'common-comment.ftl'/> + +
+ <#if article.commentable> + + +
+ \ No newline at end of file diff --git a/Casper/nav.ftl b/Casper/nav.ftl new file mode 100644 index 0000000..bf2196d --- /dev/null +++ b/Casper/nav.ftl @@ -0,0 +1,78 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> + \ No newline at end of file diff --git a/Casper/page.ftl b/Casper/page.ftl new file mode 100644 index 0000000..1421592 --- /dev/null +++ b/Casper/page.ftl @@ -0,0 +1,62 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> +<#include "macro-comments.ftl"> +<#include "../../common-template/macro-comment_script.ftl"> + + + +<@head title="${page.pageTitle} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+
+ ${page.pageContent} +
+
+
+
+
+<@comments commentList=pageComments article=page> +
+
+ <#include "bottom.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> +<#if pjax> +<@comment_script oId=page.oId commentable=page.commentable> + <#if pjax> + + diff --git a/Casper/preview.png b/Casper/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..a681f7ff07683a4f2c28ac4c77805f81256c60ce GIT binary patch literal 15289 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 literal 0 HcmV?d00001 diff --git a/Casper/skin.properties b/Casper/skin.properties new file mode 100644 index 0000000..12530c4 --- /dev/null +++ b/Casper/skin.properties @@ -0,0 +1,26 @@ +# +# Solo - A small and beautiful blogging system written in Java. +# Copyright (c) 2010-2019, b3log.org & hacpai.com +# +# 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 . +# + +# +# Description: skin properties. +# Version: 0.1.0.0, Mar 26, 2018 +# Author: Liyuan Li +# + +name=Casper +memo=https://demo.ghost.io/ diff --git a/Casper/tag-articles.ftl b/Casper/tag-articles.ftl new file mode 100644 index 0000000..52396c6 --- /dev/null +++ b/Casper/tag-articles.ftl @@ -0,0 +1,57 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${tag.tagTitle} ${tagLabel} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + ${tag.tagTitle} + + ${tag.tagPublishedRefCount} + ${tagLabel} + + +
+ <#include "article-list.ftl"> +
+<#include "bottom2.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> + + diff --git a/Casper/tags.ftl b/Casper/tags.ftl new file mode 100644 index 0000000..81a8c2a --- /dev/null +++ b/Casper/tags.ftl @@ -0,0 +1,67 @@ +<#-- + + Solo - A small and beautiful blogging system written in Java. + Copyright (c) 2010-2019, b3log.org & hacpai.com + + 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 . + +--> +<#include "../../common-template/macro-common_head.ftl"> + + + +<@head title="${allTagsLabel} - ${blogTitle}"> + + + + +<#include "header.ftl"> +
+ <#if pjax> +<#include "nav.ftl"> +
+<#if noticeBoard??> +
+ ${noticeBoard} +
+ +
+
+ + ${tags?size} + ${tagLabel} + +
+ +
+<#include "bottom.ftl"> +
+ <#if pjax> +
+<#include "footer.ftl"> + <#if pjax> + + <#if pjax> + +