|
@ -0,0 +1,135 @@
|
|||
B3log Solo 第三方皮肤 - [子兮子兮](https://zixizixi.cn/)
|
||||
----
|
||||
|
||||
本皮肤是基于官方版 `yilia` 皮肤进行美化修改的第三方皮肤,主色调修改为黑、白、灰(高冷三原色 😜 )、蓝(超链接)。
|
||||
名称为 `iMobile` 的原因是,本人使用的此皮肤是直接把原 `mobile` 皮肤删除,将此皮肤的目录名和 `skin.properties` 中的配置改为 `mobile`,这样使用手机访问时也会使用此皮肤(原 mobile 皮肤实在无法欣赏 n(*≧▽≦*)n )。
|
||||
此皮肤采用响应式布局,不用担心用手机访问会出现样式错乱。也建议使用者直接将此皮肤文件覆盖原 `mobile` 皮肤。
|
||||
|
||||
## 注意事项
|
||||
此皮肤有些个性化的地方需要使用者自己去修改 `ftl` 模板文件,具体如下:
|
||||
|
||||
### 1. 自定义 ABOUT ME 介绍信息(side.ftl)
|
||||
点击博客标题会弹出 ABOUT ME 的窗口,当然若不想使用此弹窗你也可以在 `side.ftl` 中搜索 `clickme` 并删除相关代码。
|
||||
#### 效果图
|
||||
![关于我效果图](https://img.hacpai.com/file/2018/02/d1f0cb2eff244740a21eace90affe9f3_2018021072535.jpg)
|
||||
|
||||
#### 相关代码
|
||||
![ABOUT 代码](https://img.hacpai.com/file/2018/02/6d3788ea90ad4e1e85133b9f9936948d_2018021073057.jpg)
|
||||
|
||||
|
||||
### 2. 自定义左侧个人导航链接(side.ftl)
|
||||
左侧新增的个人导航链接分别为 Github、微博、微信(可以是公众号)二维码、QQ 会话(需要在 [QQ 推广](http://shang.qq.com/) 中开通)。
|
||||
#### 效果图
|
||||
![个人导航效果图](https://img.hacpai.com/file/2018/02/e768ab16c8fa4a5e976a72107ef8b068_2018021072432.jpg)
|
||||
|
||||
#### 相关代码
|
||||
从 side.ftl 第 47 行开始的注释,若使用请打开注释并将链接修改为自己的链接,包括下面的反馈邮箱链接。
|
||||
|
||||
![个人链接代码](https://img.hacpai.com/file/2018/02/0f2b02a43e324dc69d266c5808e49ce2_2018021071729.jpg)
|
||||
![邮箱链接代码](https://img.hacpai.com/file/2018/02/feb8b75209784dfc93bfa6f1d21add82_2018021072235.jpg)
|
||||
|
||||
|
||||
### 3. 添加移动端顶部背景图
|
||||
在屏幕宽度小于 750px(在 yilia7.min.css 中修改)时当做是移动端,由左右布局变为上下布局,顶部显示背景图,图片位置为 `solo 根目录/images/bg.jpg`,需要使用者将自己的图片放置于此。
|
||||
|
||||
#### 相关代码
|
||||
``` css
|
||||
@media only screen and (max-width:750px) {
|
||||
.side {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
background: #666 url('/images/bg.jpg') center -40px;
|
||||
}
|
||||
}
|
||||
```
|
||||
#### 效果图
|
||||
![2018021061950jpg](https://img.hacpai.com/file/2018/02/c2914ca8548b416daf0d0e0b1e277b1a_2018021061950.jpg)
|
||||
|
||||
|
||||
### 4. 搜索页面
|
||||
目前 Solo 的搜索页面还比较简陋,本人根据 `yilia` 的样式修改了一个搜索页面,放在 `搜索页面(覆盖至根目录)` 目录中,顾名思义,直接将目录中的文件剪切到 Solo 根目录即可。特别要注意的是里面的 `opensearch.xml` 文件,需要根据自己的实际情况进行修改,格式是在 hacpai 扒下来的,是用来在谷歌浏览器中实现输入域名加空格直接在地址栏实现站内搜索的。
|
||||
> 特别注意需要在 `WEB-INF/static-resources.xml` 文件中添加一行 `<include path="/opensearch.xml"/>`,不然无法获取此静态资源。
|
||||
|
||||
#### 相关代码
|
||||
``` xml
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" mlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||
<ShortName>子兮子兮</ShortName>
|
||||
<Description>子兮子兮风兮寒,三江七泽情洄沿。</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16" type="image/x-icon">https://res.zixizixi.cn/izcn.png</Image>
|
||||
<Url type="text/html" method="get" template="https://zixizixi.cn/search?keyword={searchTerms}"/>
|
||||
</OpenSearchDescription>
|
||||
```
|
||||
|
||||
#### 效果图
|
||||
![搜索页面](https://img.hacpai.com/file/2018/02/992d4bef69f0438fbda58c27567ed28f_2018021075045.jpg)
|
||||
|
||||
![地址栏搜索](https://img.hacpai.com/file/2018/02/afcdc98999754245a452cc12957cbb23_2018021075206.jpg)
|
||||
|
||||
### 5. 其他
|
||||
为了搭配此皮肤,建议对 `WEB-INF/classes` 目录下的 `lang_zh_CN.properties` 参数文件做适当的修改,以及替换此目录下的验证码文件 `captcha_static.zip`。
|
||||
#### 需要修改的 `lang_zh_CN.properties` 参数
|
||||
``` properties
|
||||
viewCount1Label=\u6D4F\u89C8\u6B21\u6570\uFF1A
|
||||
# (浏览次数:)修改为(浏览:)
|
||||
viewCount1Label=\u6D4F\u89C8\uFF1A
|
||||
|
||||
articleCount1Label=\u6587\u7AE0\u603B\u6570\uFF1A
|
||||
# (文章总数:)修改为(文章:)
|
||||
articleCount1Label=\u6587\u7AE0\uFF1A
|
||||
|
||||
commentCount1Label=\u8BC4\u8BBA\u603B\u6570\uFF1A
|
||||
# (评论总数:)修改为(评论:)
|
||||
commentCount1Label=\u8BC4\u8BBA\uFF1A
|
||||
|
||||
onlineVisitor1Label=\u5F53\u524D\u8BBF\u5BA2\uFF1A
|
||||
# (当前访客:)修改为(在线:)
|
||||
onlineVisitor1Label=\u5728\u7ebf\uFF1A
|
||||
|
||||
linkLabel=\u53CB\u60C5\u94FE\u63A5
|
||||
# (友情链接)修改为(链接)
|
||||
linkLabel=\u94FE\u63A5
|
||||
```
|
||||
|
||||
> 需要使用者注意并自己修改代码的地方大概就这些。 另外建议与皮肤无关的 H2 数据 JDBC 连接配置: `jdbc.URL=jdbc:h2:~/solo_h2/db;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE`。
|
||||
|
||||
----
|
||||
|
||||
## 整体效果
|
||||
### 1. 首页
|
||||
![首页](https://img.hacpai.com/file/2018/02/2c290b6b56ec46aba5400fdc3004fea2_2018021091348.jpg)
|
||||
|
||||
### 2. 存档
|
||||
![存档](https://img.hacpai.com/file/2018/02/02f347f851514ba28ce5f6db17a12d3a_2018021091449.jpg)
|
||||
|
||||
### 3. 标签墙
|
||||
![标签墙](https://img.hacpai.com/file/2018/02/9201790df35347cd811169036d53095f_2018021091729.jpg)
|
||||
|
||||
### 4. 动态
|
||||
![动态](https://img.hacpai.com/file/2018/02/8c1d4d418849450a99d6ad0741ddf789_2018021091559.jpg)
|
||||
|
||||
### 5. 链接
|
||||
![链接](https://img.hacpai.com/file/2018/02/164358ed23484f53a4f16052a77fcc19_2018021091838.jpg)
|
||||
|
||||
### 6. 文章详情
|
||||
![文章详情](https://img.hacpai.com/file/2018/02/a70e2648ea05409da390fbf47e08e5ef_2018021092013.jpg)
|
||||
|
||||
### 7. 评论回复
|
||||
![评论回复](https://img.hacpai.com/file/2018/02/f1a788a03f1b4366a8ccef3e9d1fb074_2018021092306.jpg)
|
||||
|
||||
## 特别鸣谢
|
||||
此皮肤的发布离不开 D大(@88250)和 V姐(@Vanessa219)对 Solo 的辛勤耕耘,以及 V姐 对此皮肤的的热情,本来此皮肤的代码被我改的乱七八糟,代码本来看不下去,开始 V姐 提出 PR 一份的时候我是拒绝的,因为弄起来真的很麻烦,事实也的确如此 😂 ,即使现在也这代码也不一定有多整洁。写完了此 README 感觉用这个皮肤真的好麻烦呀,应该不会有人用吧 O(∩_∩)O~
|
||||
|
||||
### 三方包
|
||||
此改版皮肤的诞生要特别感谢以下第三方项目:
|
||||
1. [layer](http://layer.layui.com/):一款美观易用的 jQuery 弹出层;
|
||||
2. [OwO](https://github.com/DIYgod/OwO):萌萌哒评论框表情内容输入工具(Revised [OwO](http://git.itanken.cn/OwO/));
|
||||
3. [iconfont](http://iconfont.cn/):阿里巴巴功能强大且图标内容很丰富的矢量图标库。
|
||||
|
||||
... 好吧只记得这 3 个了,可能也只有这三个 😂 。
|
||||
|
||||
----
|
||||
|
||||
**平等,自由,奔放**
|
||||
|
||||
**Equality, Freedom, Passion**
|
|
@ -0,0 +1,25 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<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 "side.ftl">
|
||||
<main>
|
||||
<h2 class="classify-name">
|
||||
${archive1Label}
|
||||
<#if "en" == localeString?substring(0, 2)>
|
||||
${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount})
|
||||
<#else>
|
||||
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} (${archiveDate.archiveDatePublishedArticleCount})
|
||||
</#if>
|
||||
</h2>
|
||||
<#include "article-list.ftl">
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,42 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<@head title="${archiveLabel} - ${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${archiveLabel}">
|
||||
<meta name="description" content="${metaDescription},${archiveLabel}">
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "side.ftl">
|
||||
<main class="classify">
|
||||
<article>
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="archive" href="${servePath}/archives.html"><li class="icontitle iconfont icon-rili"></li>
|
||||
${archiveLabel}
|
||||
</a>
|
||||
</h2>
|
||||
</header>
|
||||
<#if 0 != archiveDates?size>
|
||||
<ul class="tags fn-clear">
|
||||
<#list archiveDates as archiveDate>
|
||||
<li>
|
||||
<#if "en" == localeString?substring(0, 2)>
|
||||
<a class="tag" href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
|
||||
title="${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})">
|
||||
${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})</a>
|
||||
<#else>
|
||||
<a class="tag" href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
|
||||
title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})">
|
||||
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})</a>
|
||||
</#if>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</#if>
|
||||
</article>
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,72 @@
|
|||
<#list articles as article>
|
||||
<article>
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="bookmark" href="${article.articlePermalink}">${article.articleTitle}</a>
|
||||
<#if article.hasUpdated>
|
||||
<sup><span class="iconfont icon-xin itip" id="artUdp${article_index}" lang="${updatedLabel}"></span></sup>
|
||||
</#if>
|
||||
<#if article.articlePutTop>
|
||||
<sup><span class="iconfont icon-zhiding2 itip" id="artTop${article_index}" lang="${topArticleLabel}"></span></sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<time class="itip" id="time_${article_index}" lang="发表于 ${article.articleCreateDate?string("yyyy年MM月dd日 HH:mm")}"><span class="icon-date"></span>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}</time>
|
||||
</header>
|
||||
<section class="abstract">${article.articleAbstract}</section>
|
||||
<footer class="tags">
|
||||
<span class="icon-tag"></span>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a class="tag" rel="tag" href="/tags/${articleTag?url('UTF-8')}">${articleTag}</a>
|
||||
</#list>
|
||||
<#-- <a rel="nofollow" href="/authors/${article.authorId}"></a> -->
|
||||
<img class="avatar itip" id="ava_${article_index}" alt="Seves" lang="发表人 ${article.authorName}" src="${article.authorThumbnailURL}"/>
|
||||
</footer>
|
||||
</article>
|
||||
</#list>
|
||||
<#if (articles?size<1)>
|
||||
<article>
|
||||
<header>
|
||||
<h2><i class="iconfont icon-kulian" style="font-size:inherit;"></i> 当前页面无内容</h2>
|
||||
</header>
|
||||
<section class="abstract">
|
||||
<h4>温馨提示:</h4>
|
||||
<p>当前页面暂无相关内容,您可能访问了超过文章列表实际页数的页面。</p>
|
||||
<p>最大页数为<b> ${paginationPageCount!"0"} </b>页,请在底部选择合适的页面进行访问,感谢您的配合。</p>
|
||||
<div class="iconfont icon-4043" style="font-size:200px;width:270px;margin:0 auto;"><sup><i class="iconfont icon-4041" style="font-size:60px;"></i></sup></div>
|
||||
</section>
|
||||
<footer class="tags">
|
||||
<span class="icon-tag"></span>
|
||||
<a class="tag color2" rel="tag">404</a> <a class="tag color3" rel="tag">NOTHING</a>
|
||||
<a rel="nofollow" href="/">
|
||||
<img class="avatar itip" id="ava_nul" alt="${blogTitle?html}" lang="${blogTitle?html}" src="/favicon.png"/>
|
||||
</a>
|
||||
</footer>
|
||||
</article>
|
||||
</#if>
|
||||
<#if 0 != paginationPageCount>
|
||||
<nav class="pagination">
|
||||
<#-- 上一页 -->
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}/${paginationPreviousPageNum}" class="extend iconfont icon-xiangzuo1 itip" id="prev_page" lang="${previousPageLabel}"></a>
|
||||
<a class="page-num" href="${servePath}${path}">1</a> ...
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#-- 当前页 -->
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<span class="current page-num">${paginationPageNum}</span>
|
||||
<#-- 第一页 -->
|
||||
<#elseif paginationPageNum == 1>
|
||||
<a class="page-num" href="${path}/">${paginationPageNum}</a>
|
||||
<#-- 其他页 -->
|
||||
<#else>
|
||||
<a class="page-num" href="${path}/${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#-- 下一页 -->
|
||||
<#if paginationPageNums?last != paginationPageCount> ...
|
||||
<a href="${servePath}${path}/${paginationPageCount}" class="page-num">${paginationPageCount}</a>
|
||||
<a href="${servePath}${path}/${paginationNextPageNum}" class="extend iconfont icon-xiangyou2 itip" id="next_page" lang="${nextPagePabel}"></a>
|
||||
</#if>
|
||||
</nav>
|
||||
</#if>
|
|
@ -0,0 +1,96 @@
|
|||
<#include "macro-head.ftl">
|
||||
<#include "macro-comments.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<@head title="${article.articleTitle} - ${blogTitle}">
|
||||
<meta name="keywords" content="${article.articleTags}">
|
||||
<meta name="description" content="${article.articleAbstract?html}">
|
||||
</@head>
|
||||
<link rel="stylesheet" href="/skins/${skinDirName}/js/lib/OwO/OwO.min.css">
|
||||
<#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 "side.ftl">
|
||||
<main>
|
||||
<article class="post article-body">
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="bookmark" href="${article.articlePermalink}">${article.articleTitle}</a>
|
||||
<#if article.hasUpdated>
|
||||
<sup><span class="iconfont icon-xin itip" id="artUdp" lang="${updatedLabel}"></span></sup>
|
||||
</#if>
|
||||
<#if article.articlePutTop>
|
||||
<sup><span class="iconfont icon-zhiding2 itip" id="artTop" lang="${topArticleLabel}"></span></sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<time><span class="icon-date"></span> ${article.articleCreateDate?string("yyyy-MM-dd")}</time>
|
||||
<section class="tags">
|
||||
<span class="icon-tag"></span>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a class="tag" rel="tag" href="/tags/${articleTag?url('UTF-8')}">${articleTag}</a>
|
||||
</#list>
|
||||
<#-- <a rel="nofollow"></a> -->
|
||||
<img class="avatar itip" id="ava_author" title="${article.authorName}" alt="Seves" lang="发表人 ${article.authorName}" src="${article.authorThumbnailURL}" data- href="/authors/${article.authorId}" />
|
||||
</section>
|
||||
</header>
|
||||
<section class="abstract">
|
||||
${article.articleContent}<#--
|
||||
<blockquote><p>本文链接:<a href="${servePath}${article.articlePermalink}">${servePath}${article.articlePermalink}</a></p></blockquote> -->
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
<#if nextArticlePermalink?? || previousArticlePermalink??>
|
||||
<aside class="fn-clear">
|
||||
<#if previousArticlePermalink??>
|
||||
<a class="fn-left" rel="prev" href="${previousArticlePermalink}">
|
||||
<span class="iconfont icon-xiangzuo1"></span> ${previousArticleTitle}
|
||||
</a>
|
||||
</#if>
|
||||
<#if nextArticlePermalink??>
|
||||
<a class="fn-right" rel="next" href="${nextArticlePermalink}">
|
||||
${nextArticleTitle} <span class="iconfont icon-xiangyou2"></span>
|
||||
</a>
|
||||
</#if>
|
||||
</aside>
|
||||
</#if>
|
||||
</section>
|
||||
<footer class="fn-clear share">
|
||||
<div class="fn-left"><i class="iconfont icon-liulan itip" id="articleVCount" lang="${viewCount1Label}${article.articleViewCount}"> ${article.articleViewCount}</i></div>
|
||||
<div class="fn-right">
|
||||
<span class="iconfont icon-qq4" data-type="qq" style="font-size:26.3px"></span>
|
||||
<span class="icon icon-weibo" data-type="weibo"></span>
|
||||
<span class="icon icon-t-weibo" data-type="tencent"></span>
|
||||
<span class="icon icon-twitter" data-type="twitter"></span>
|
||||
<span class="icon icon-gplus" data-type="google"></span>
|
||||
</div>
|
||||
</footer>
|
||||
<div id="externalRelevantArticles" class="abstract"></div>
|
||||
</article>
|
||||
<@comments commentList=articleComments article=article></@comments>
|
||||
<script>
|
||||
window.innerWidth>750 && $.each($("pre"), function (i, n) {
|
||||
var txt = $(`<textarea style='width:0;height:0;position:absolute;top: -190000px;'>` + $(n).text() + ` </textarea>`),
|
||||
copyTip = $(`<i style="float:right; position:relative; margin-top:-40px; padding:13px 10px 30px 0; cursor:pointer;" class="code__copy tooltipped tooltipped-w itip iconfont icon-fuzhiwenjian" lang="复制"
|
||||
id="copy-tip-` + i + `" data-point="4"
|
||||
onclick="$(this).prev()[0].select();document.execCommand('copy');layer.msg('已复制到剪贴板', {time: 999});"></i>`);
|
||||
$(n).append(txt).append(copyTip);
|
||||
});
|
||||
</script>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=article.oId>
|
||||
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,26 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<#if authorName??>
|
||||
<head>
|
||||
<@head title="${authorName} - ${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${authorName}">
|
||||
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>">
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "side.ftl">
|
||||
<main>
|
||||
<h2 class="classify-name">
|
||||
${author1Label}${authorName}
|
||||
</h2>
|
||||
<#include "article-list.ftl">
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
<#else>
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;url=/">
|
||||
</head>
|
||||
</#if>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<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 "side.ftl">
|
||||
<main>
|
||||
<h2 class="classify-name">
|
||||
${categoryLabel}
|
||||
${category.categoryTitle}
|
||||
(${category.categoryTagCnt}):<small> ${category.categoryDescription}</small>
|
||||
</h2>
|
||||
<#include "article-list.ftl">
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,28 @@
|
|||
<li id="${comment.oId}">
|
||||
<div class="comwrap">
|
||||
<div class="comtop"><!--TODO comment->comment_approved == '0') : comtop preview;-->
|
||||
<img alt='${comment.commentName}' src='${comment.commentThumbnailURL}' class='avatar avatar-64 photo' height='64' width='64' />
|
||||
<div class="com-author">
|
||||
<#if "http://" == comment.commentURL>
|
||||
<a>${comment.commentName}</a>
|
||||
<#else>
|
||||
<a href='${comment.commentURL}' rel='external nofollow' target="_blank" class='url'>${comment.commentName}</a>
|
||||
</#if>
|
||||
<#if comment.isReply>
|
||||
@
|
||||
<a href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}">${comment.commentOriginalCommentName}</a>
|
||||
</#if>
|
||||
</div>
|
||||
<#if article.commentable>
|
||||
<div class="comdater">
|
||||
<!--<span>TODO wptouch_moderate_comment_link(get_comment_ID())</span>-->
|
||||
${comment.commentDate2?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<a rel="nofollow" href="javascript:replyTo('${comment.oId}');">${replyLabel}</a>
|
||||
</div>
|
||||
</#if>
|
||||
</div><!--end comtop-->
|
||||
<div class="combody">
|
||||
<p>${comment.commentContent}</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
|
@ -0,0 +1,2 @@
|
|||
[ZoneTransfer]
|
||||
ZoneId=3
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="register" horiz-adv-x="1027" d="M358.344 457.514q-76.634 0-130.858 54.222t-54.223 130.858 54.222 130.858 130.858 54.223 130.858-54.223 54.223-130.858-54.222-130.858-130.858-54.222zM821.043 395.82h169.657q6.266 0 10.845-4.579t4.579-10.845v-92.54q0-6.266-4.579-10.845t-10.845-4.579h-169.657v-169.657q0-6.266-4.579-10.845t-10.845-4.579h-92.54q-6.266 0-10.845 4.579t-4.579 10.845v169.657h-169.657q-6.266 0-10.845 4.579t-4.579 10.845v92.54q0 6.266 4.579 10.845t10.845 4.579h169.657v169.657q0 6.266 4.579 10.844t10.845 4.579h92.54q6.266 0 10.845-4.579t4.579-10.844v-169.657zM466.308 287.856q0-25.062 18.315-43.377t43.377-18.315h123.387v-114.711q-32.773-24.099-82.419-24.099h-421.251q-58.319 0-93.504 33.257t-35.184 91.575q0 25.545 1.687 49.884t6.749 52.537 12.773 52.294 20.725 46.993 29.883 39.041 41.208 25.785 53.74 9.641q9.158 0 18.797-8.193 38.076-29.401 74.466-44.101t79.286-14.701 79.286 14.701 74.466 44.101q9.641 8.193 18.797 8.193 63.622 0 104.59-46.27h-107.482q-25.062 0-43.377-18.315t-18.315-43.377v-92.54z" />
|
||||
<glyph unicode="" glyph-name="logout" d="M798.222 282.667v122.667h-306.667v122.667h306.667v122.667l184-184zM736.888 344.001v-245.333h-306.667v-184l-368 184v797.333h674.667v-306.667h-61.333v245.333h-490.667l245.333-122.667v-552h245.333v184z" />
|
||||
<glyph unicode="" glyph-name="setting" d="M916.215 332.511c-51.487 89.177-20.524 203.458 69.146 255.384l-96.433 167.030c-27.552-16.152-59.585-25.413-93.769-25.413-103.055 0-186.595 84.090-186.595 187.824h-192.872c0.255-32.018-7.738-64.479-24.876-94.158-51.486-89.179-165.941-119.506-255.743-67.81l-96.431-167.030c27.763-15.786 51.798-38.897 68.891-68.5 51.403-89.037 20.616-203.090-68.72-255.131l96.433-167.030c27.456 16 59.336 25.16 93.342 25.16 102.729 0 186.055-83.559 186.588-186.835h192.868c-0.082 31.696 7.927 63.796 24.884 93.167 51.401 89.035 165.577 119.403 255.313 68.053l96.433 167.028c-27.581 15.78-51.455 38.811-68.458 68.26zM512 227.974c-109.737 0-198.697 88.956-198.697 198.695 0 109.737 88.958 198.695 198.697 198.695 109.737 0 198.693-88.958 198.693-198.695-0.002-109.739-88.956-198.695-198.693-198.695z" />
|
||||
<glyph unicode="" glyph-name="gplus" d="M22.106 83.906c-0.234 2.427-0.433 4.859-0.56 7.312 0.125-2.453 0.326-4.886 0.56-7.312zM247.412 375.734c88.176-2.624 147.328 88.836 132.118 204.315-15.232 115.46-99.088 208.119-187.266 210.759-88.192 2.616-147.334-85.754-132.108-201.25 15.22-115.448 99.046-211.192 187.256-213.823zM1002.667 672v81.755c0 89.968-73.583 163.578-163.547 163.578h-654.212c-88.431 0-161.012-71.139-163.457-159.012 55.93 49.245 133.519 90.386 213.588 90.386 85.583 0 342.359 0 342.359 0l-76.617-64.801h-108.549c72-27.604 110.358-111.286 110.358-197.15 0-72.113-40.068-134.123-96.684-178.219-55.242-43.031-65.715-61.053-65.715-97.633 0-31.221 59.173-84.333 90.114-106.172 90.449-63.766 119.711-122.966 119.711-221.812 0-15.743-1.957-31.462-5.813-46.92h294.919c89.963 0 163.545 73.552 163.545 163.578v511.087h-184v-183.998h-61.333v184h-183.998v61.333h183.998v184h61.333v-184h184zM199.474 183.312c20.713 0 39.696 0.565 59.355 0.565-26.015 25.237-46.6 56.158-46.6 94.281 0 22.624 7.249 44.405 17.378 63.748-10.333-0.738-20.882-0.953-31.746-0.953-71.258 0-131.777 23.073-176.529 61.193v-64.44l0.006-193.325c51.213 24.317 112.018 38.929 178.135 38.929zM24.611 67.045c-1.066 5.231-1.884 10.547-2.436 15.941 0.55-5.393 1.37-10.71 2.436-15.941zM457.806 4.19c-14.431 56.356-65.602 84.299-136.934 133.753-25.944 8.368-54.523 13.296-85.19 13.616-85.884 0.924-165.895-33.486-211.040-84.69 15.257-74.468 81.491-130.868 160.266-130.868h274.509c1.74 10.664 2.584 21.689 2.584 32.997 0 12.012-1.47 23.759-4.194 35.192z" />
|
||||
<glyph unicode="" glyph-name="weibo" d="M431.713 469.974c-138.186-6.379-249.878-80.393-249.878-172.715 0-92.194 111.717-161.506 249.878-155.051 138.289 6.302 250.215 92.839 250.215 185.033 0 92.115-111.924 149.111-250.215 142.732zM525.869 237.76c-42.328-54.619-126.050-81.269-207.345-37.239-38.711 20.995-37.264 62.211-37.264 62.211s-16.062 130.182 122.925 146.451c139.142 16.115 163.986-116.779 121.685-171.423zM432.64 324.944c-8.911-6.455-10.716-18.801-5.888-26.469 4.648-7.878 15.469-8.78 24.223-2.221 8.6 6.791 11.931 18.619 7.257 26.469-4.598 7.644-15.287 9.865-25.591 2.221zM366.763 307.023c-25.978-2.685-44.547-25.308-44.547-46.949 0-21.693 20.917-36.67 46.845-33.624 25.85 2.944 46.87 22.931 46.87 44.547 0.052 21.693-19.343 38.891-49.17 36.026zM853.245 917.334h-682.544c-82.509 0-149.395-66.886-149.395-149.395v-682.544c0-82.509 66.886-149.395 149.395-149.395h682.544c82.509 0 149.395 66.886 149.395 149.395v682.544c0 82.509-66.861 149.395-149.395 149.395zM805.444 266.037c-56.969-121.013-244.818-179.894-384.037-168.996-132.298 10.408-302.379 54.361-319.966 214.473 0 0-9.296 72.515 60.998 166.336 0 0 101.102 141.184 218.862 181.47 117.863 40.106 131.627-27.761 131.627-67.867-6.275-34.011-17.999-54.025 26.239-40.286 0 0 115.849 53.74 163.547 6.068 38.454-38.479 6.354-91.444 6.354-91.444s-15.96-17.637 16.89-23.991c32.926-6.586 136.43-54.543 79.488-175.762zM691.197 600.388c-12.602 0-22.726 10.201-22.726 22.701 0 12.732 10.122 22.958 22.726 22.958 0 0 142.036 26.262 125.043-126.358 0-0.903-0.103-1.627-0.309-2.428-1.602-10.82-11.103-19.109-22.287-19.109-12.654 0-22.958 10.122-22.958 22.751 0-0.025 22.519 101.982-79.488 79.488zM931.288 478.315h-0.207c-3.745-25.825-16.554-27.891-31.815-27.891-18.258 0-33.003 11.466-33.003 29.75 0 15.832 6.561 31.92 6.561 31.92 1.936 6.662 17.38 48.085-10.201 110.013-50.512 84.834-152.237 86.074-164.243 81.244-12.111-4.751-29.982-7.126-29.982-7.126-18.389 0-33.109 14.952-33.109 33.132 0 15.262 10.201 28.175 24.146 32.127 0 0 0.309 0.516 0.774 0.594 1.008 0.207 2.041 1.215 3.124 1.317 14.178 2.712 64.664 12.629 113.756 1.137 87.829-20.504 208.457-105.442 154.2-286.214z" />
|
||||
<glyph unicode="" glyph-name="goup" d="M1014.323 422.849l-253.013-0.064 0.067-463.723h-499.15v463.79l-252.549-0.064 502.389 501.267z" />
|
||||
<glyph unicode="" glyph-name="twitter" d="M839.119 917.334h-654.212c-89.963 0-163.574-73.61-163.574-163.578v-654.179c0-90.024 73.612-163.576 163.574-163.576h654.212c89.965 0 163.547 73.552 163.547 163.578v654.178c0 89.968-73.583 163.578-163.547 163.578zM824.466 589.743c0.314-7.036 0.47-14.114 0.47-21.225 0-216.788-162.165-466.773-458.714-466.773-91.046 0-175.791 27.167-247.141 73.713 12.612-1.522 25.446-2.294 38.458-2.294 75.538 0 145.051 26.23 200.228 70.229-70.549 1.322-130.088 48.756-150.606 113.929 9.846-1.917 19.945-2.946 30.333-2.946 14.705 0 28.947 2.009 42.473 5.758-73.753 15.077-129.327 81.378-129.327 160.862 0 0.692 0 1.378 0.015 2.062 21.735-12.286 46.598-19.665 73.025-20.518-43.261 29.419-71.724 79.63-71.724 136.551 0 30.063 7.948 58.246 21.829 82.472 79.517-99.255 198.314-164.565 332.306-171.409-2.75 12.010-4.176 24.529-4.176 37.388 0 90.599 72.187 164.048 161.22 164.048 46.374 0 88.28-19.92 117.685-51.806 36.723 7.356 71.227 21.007 102.381 39.811-12.039-38.31-37.599-70.459-70.884-90.764 32.608 3.966 63.683 12.784 92.594 25.831-21.607-32.894-48.942-61.789-80.446-84.918z" />
|
||||
<glyph unicode="" glyph-name="t-weibo" d="M1002.64 767.939c0 82.509-66.886 149.395-149.395 149.395h-682.544c-82.509 0-149.395-66.886-149.395-149.395v-682.544c0-82.509 66.886-149.395 149.395-149.395h682.544c82.509 0 149.395 66.886 149.395 149.395v682.544zM149.294 55.595c0.981-11.803-7.876-42.121-19.705-42.121h-2.17c-10.95 0-20.297 27.063-21.356 38.297-16.347 182.217 41.191 329.832 92.633 406.038 18.515 27.711 37.498 50.512 54.696 68.642-4.288 9.813-6.689 20.66-6.689 32.127 0 44.29 36.077 80.109 80.366 80.109 44.547 0 80.213-35.819 80.213-80.109 0-44.572-35.688-80.366-80.213-80.366-17.095 0-32.848 5.397-45.942 14.463-15.211-16.244-31.686-45.889-47.673-70.010-68.151-102.007-96.688-231.903-84.161-367.070zM323.505 311.671c-18.285 0-36.8 2.014-54.464 5.94-11.673 2.764-18.62 14.385-16.219 25.773 2.816 11.749 14.178 19.006 25.772 16.269 14.592-3.358 29.724-4.985 44.908-4.985 110.091 0 199.519 89.432 199.519 199.262 0 109.858-89.432 199.287-199.519 199.287-109.831 0-199.418-89.43-199.418-199.287 0-31.868 7.283-62.548 21.873-90.904 5.604-10.484 1.42-23.5-9.451-28.846-10.615-5.656-23.397-1.472-28.898 9.167-17.534 33.908-26.599 72.362-26.599 110.555 0 133.72 108.746 242.493 242.493 242.493 133.824 0 242.646-108.773 242.646-242.493-0.027-133.488-108.849-242.234-242.648-242.234zM774.455 593.572c-21.486-0.466-43.334 4.029-62.961 13.351-68.486 32.591-97.746 114.737-65.155 183.302 32.487 68.511 114.737 97.746 183.302 65.155 68.511-32.463 97.773-114.843 65.025-183.149-4.751-9.426-9.994-18.412-16.426-26.521-4.054-5.242-11.931-6.197-17.2-2.014s-6.095 11.931-1.911 17.2c5.267 6.561 9.786 14.099 13.376 21.848 26.856 56.271 2.971 123.957-53.483 150.428-56.348 26.856-123.803 2.996-150.428-53.611-27.115-56.22-3.124-123.675 53.379-150.531 16.347-7.67 33.984-11.492 51.804-10.768 6.791 0.128 12.524-5.114 12.654-11.931 0.309-6.818-5.087-12.395-11.983-12.757zM980.897 509.513c-0.155-0.621-0.414-0.826-0.414-1.188-2.816-5.654-9.271-8.366-15.393-6.197-97.307 35.922-149.473 96.817-175.994 141.699-9.53 16.244-16.449 31.661-21.486 44.754-6.302 0.155-12.318 1.807-17.999 4.313-23.061 10.977-32.643 37.963-21.745 60.766 10.743 22.701 37.833 32.384 60.636 21.486 22.701-10.846 32.256-37.988 21.641-60.636-4.184-8.625-10.873-15.519-18.67-19.834 4.803-11.956 11.002-25.206 19.471-39.278 35.612-59.81 90.386-103.661 162.514-130.261 6.43-2.505 9.557-9.298 7.437-15.623z" />
|
||||
<glyph unicode="" glyph-name="login" d="M360 405.334h-300v120h300v120l180-180-180-180zM960 885.334v-780l-360-180v180h-360v240h60v-180h300v540l240 120h-540v-240h-60v300z" />
|
||||
<glyph unicode="" glyph-name="github" d="M512 960c-282.75 0-512-229.25-512-512 0-226.25 146.688-418.125 350.156-485.812 25.594-4.688 34.938 11.125 34.938 24.625 0 12.188-0.469 52.562-0.719 95.312-142.375-30.937-172.469 60.375-172.469 60.375-23.312 59.125-56.844 74.875-56.844 74.875-46.531 31.75 3.53 31.125 3.53 31.125 51.406-3.562 78.47-52.75 78.47-52.75 45.688-78.25 119.875-55.625 149-42.5 4.654 33 17.904 55.625 32.5 68.375-113.656 12.937-233.218 56.875-233.218 253.063 0 55.938 19.969 101.562 52.656 137.406-5.219 13-22.844 65.094 5.062 135.562 0 0 42.938 13.75 140.812-52.5 40.812 11.406 84.594 17.031 128.125 17.219 43.5-0.188 87.312-5.875 128.188-17.281 97.688 66.312 140.688 52.5 140.688 52.5 28-70.531 10.375-122.562 5.125-135.5 32.812-35.844 52.625-81.469 52.625-137.406 0-196.688-119.75-240-233.812-252.688 18.438-15.875 34.75-47 34.75-94.75 0-68.438-0.688-123.625-0.688-140.5 0-13.625 9.312-29.562 35.25-24.562 203.313 67.812 349.875 259.687 349.875 485.812 0 282.75-229.25 512-512 512z" />
|
||||
<glyph unicode="" glyph-name="rss" horiz-adv-x="768" d="M128 320c-70.656 0-128-57.375-128-128s57.344-128 128-128 128 57.375 128 128-57.344 128-128 128zM128 576c0 0-64-2-64-64s64-64 64-64c141.375 0 256-114.625 256-256 0 0 0-64 64-64s64 64 64 64c0 212-171.969 384-384 384zM128 832c0 0-64 0-64-64s64-64 64-64c282.75 0 512-229.25 512-512 0 0 0-64 64-64s64 64 64 64c0 353.406-286.5 640-640 640z" />
|
||||
<glyph unicode="" glyph-name="date" d="M896 0h-768c-35.328 0-64 28.672-64 64v672c0 35.328 28.672 64 64 64h64v-32c0-53.024 42.976-96 96-96s96 42.976 96 96v32h256v-32c0-53.024 43.008-96 96-96s96 42.976 96 96v32h64c35.328 0 64-28.672 64-64v-672c0-35.328-28.672-64-64-64zM896 576h-768v-512h768v512zM418.208 325.472c6.304 10.048 9.472 20.672 9.472 31.776 0 24.736-13.312 37.12-39.936 37.12-23.136 0-45.248-9.184-66.368-27.552v52.128c23.36 15.136 49.76 22.688 79.136 22.688 27.488 0 48.96-6.912 64.416-20.704s23.168-32.48 23.168-55.968c0-31.36-18.816-63.808-56.448-97.312l-55.328-49.12v-1.12h109.12v-49.12h-176.992v46.112l77.056 73.696c15.488 14.848 26.4 27.296 32.704 37.376zM634.784 218.688c8.448 6.496 12.672 15.552 12.672 27.2 0 12-5.216 21.248-15.648 27.744s-24.768 9.76-43.040 9.76h-24.192v45.376h22.304c35.008 0 52.512 11.616 52.512 34.88 0 21.888-13.44 32.8-40.32 32.8-17.984 0-35.488-5.824-52.512-17.44v48.384c18.88 9.504 40.864 14.24 65.984 14.24 27.488 0 48.896-6.176 64.224-18.56s22.976-28.448 22.976-48.192c0-35.136-17.824-57.12-53.44-65.984v-0.928c19.008-2.368 33.984-9.28 44.992-20.704s16.512-25.472 16.512-42.080c0-25.12-9.184-44.992-27.552-59.616s-43.744-21.952-76.128-21.952c-27.744 0-50.304 4.512-67.68 13.504v51.552c17.984-13.12 39.008-19.68 63.008-19.68 15.104-0.064 26.88 3.2 35.328 9.696zM735.008 704c-34.816 0-63.008 28.192-63.008 63.008v65.984c0 34.816 28.192 63.008 63.008 63.008s63.008-28.192 63.008-63.008v-65.984c0-34.816-28.192-63.008-63.008-63.008zM287.008 704c-34.816 0-63.008 28.192-63.008 63.008v65.984c0 34.816 28.192 63.008 63.008 63.008s63.008-28.192 63.008-63.008v-65.984c0-34.816-28.224-63.008-63.008-63.008z" />
|
||||
<glyph unicode="" glyph-name="tag" d="M725.354 714.688c0-29.44 23.894-53.334 53.334-53.334s53.334 23.894 53.334 53.334-23.894 53.334-53.334 53.334-53.334-23.894-53.334-53.334zM352.448-39.232c32.854-33.088 86.186-33.088 119.254 0l521.386 517.974c20.886 20.886 31.36 48.426 30.934 75.946v299.52c0 58.454-47.382 105.814-105.814 105.814h-299.52c-27.52 0.448-55.040-10.026-75.968-30.934l-517.952-521.408c-33.088-33.046-33.088-86.378 0-119.254l327.68-327.658zM640.022 714.688c0 76.586 62.080 138.666 138.666 138.666s138.666-62.080 138.666-138.666-62.080-138.666-138.666-138.666-138.666 62.080-138.666 138.666z" />
|
||||
</font></defs></svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,317 @@
|
|||
{
|
||||
"IcoMoonType": "selection",
|
||||
"icons": [
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M725.354 245.312c0 29.44 23.894 53.334 53.334 53.334s53.334-23.894 53.334-53.334-23.894-53.334-53.334-53.334-53.334 23.894-53.334 53.334zM352.448 999.232c32.854 33.088 86.186 33.088 119.254 0l521.386-517.974c20.886-20.886 31.36-48.426 30.934-75.946v-299.52c0-58.454-47.382-105.814-105.814-105.814h-299.52c-27.52-0.448-55.040 10.026-75.968 30.934l-517.952 521.408c-33.088 33.046-33.088 86.378 0 119.254l327.68 327.658zM640.022 245.312c0-76.586 62.080-138.666 138.666-138.666s138.666 62.080 138.666 138.666-62.080 138.666-138.666 138.666-138.666-62.080-138.666-138.666z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"tags": [
|
||||
"tag",
|
||||
"price"
|
||||
],
|
||||
"grid": 48
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 34,
|
||||
"id": 14,
|
||||
"prevSize": 48,
|
||||
"code": 59651,
|
||||
"name": "tag"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 0
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M896 960h-768c-35.328 0-64-28.672-64-64v-672c0-35.328 28.672-64 64-64h64v32c0 53.024 42.976 96 96 96s96-42.976 96-96v-32h256v32c0 53.024 43.008 96 96 96s96-42.976 96-96v-32h64c35.328 0 64 28.672 64 64v672c0 35.328-28.672 64-64 64zM896 384h-768v512h768v-512zM418.208 634.528c6.304-10.048 9.472-20.672 9.472-31.776 0-24.736-13.312-37.12-39.936-37.12-23.136 0-45.248 9.184-66.368 27.552v-52.128c23.36-15.136 49.76-22.688 79.136-22.688 27.488 0 48.96 6.912 64.416 20.704s23.168 32.48 23.168 55.968c0 31.36-18.816 63.808-56.448 97.312l-55.328 49.12v1.12h109.12v49.12h-176.992v-46.112l77.056-73.696c15.488-14.848 26.4-27.296 32.704-37.376zM634.784 741.312c8.448-6.496 12.672-15.552 12.672-27.2 0-12-5.216-21.248-15.648-27.744s-24.768-9.76-43.040-9.76h-24.192v-45.376h22.304c35.008 0 52.512-11.616 52.512-34.88 0-21.888-13.44-32.8-40.32-32.8-17.984 0-35.488 5.824-52.512 17.44v-48.384c18.88-9.504 40.864-14.24 65.984-14.24 27.488 0 48.896 6.176 64.224 18.56s22.976 28.448 22.976 48.192c0 35.136-17.824 57.12-53.44 65.984v0.928c19.008 2.368 33.984 9.28 44.992 20.704s16.512 25.472 16.512 42.080c0 25.12-9.184 44.992-27.552 59.616s-43.744 21.952-76.128 21.952c-27.744 0-50.304-4.512-67.68-13.504v-51.552c17.984 13.12 39.008 19.68 63.008 19.68 15.104 0.064 26.88-3.2 35.328-9.696zM735.008 256c-34.816 0-63.008-28.192-63.008-63.008v-65.984c0-34.816 28.192-63.008 63.008-63.008s63.008 28.192 63.008 63.008v65.984c0 34.816-28.192 63.008-63.008 63.008zM287.008 256c-34.816 0-63.008-28.192-63.008-63.008v-65.984c0-34.816 28.192-63.008 63.008-63.008s63.008 28.192 63.008 63.008v65.984c0 34.816-28.224 63.008-63.008 63.008z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"tags": [
|
||||
"calendar",
|
||||
"date",
|
||||
"schedule"
|
||||
],
|
||||
"grid": 32
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 35,
|
||||
"id": 13,
|
||||
"prevSize": 32,
|
||||
"code": 59650,
|
||||
"name": "date"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 1
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M512 0c-282.75 0-512 229.25-512 512 0 226.25 146.688 418.125 350.156 485.812 25.594 4.688 34.938-11.125 34.938-24.625 0-12.188-0.469-52.562-0.719-95.312-142.375 30.937-172.469-60.375-172.469-60.375-23.312-59.125-56.844-74.875-56.844-74.875-46.531-31.75 3.53-31.125 3.53-31.125 51.406 3.562 78.47 52.75 78.47 52.75 45.688 78.25 119.875 55.625 149 42.5 4.654-33 17.904-55.625 32.5-68.375-113.656-12.937-233.218-56.875-233.218-253.063 0-55.938 19.969-101.562 52.656-137.406-5.219-13-22.844-65.094 5.062-135.562 0 0 42.938-13.75 140.812 52.5 40.812-11.406 84.594-17.031 128.125-17.219 43.5 0.188 87.312 5.875 128.188 17.281 97.688-66.312 140.688-52.5 140.688-52.5 28 70.531 10.375 122.562 5.125 135.5 32.812 35.844 52.625 81.469 52.625 137.406 0 196.688-119.75 240-233.812 252.688 18.438 15.875 34.75 47 34.75 94.75 0 68.438-0.688 123.625-0.688 140.5 0 13.625 9.312 29.562 35.25 24.562 203.313-67.812 349.875-259.687 349.875-485.812 0-282.75-229.25-512-512-512z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"tags": [
|
||||
"mark-github"
|
||||
],
|
||||
"grid": 16
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 36,
|
||||
"id": 12,
|
||||
"prevSize": 32,
|
||||
"code": 59648,
|
||||
"name": "github"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 2
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M128 640c-70.656 0-128 57.375-128 128s57.344 128 128 128 128-57.375 128-128-57.344-128-128-128zM128 384c0 0-64 2-64 64s64 64 64 64c141.375 0 256 114.625 256 256 0 0 0 64 64 64s64-64 64-64c0-212-171.969-384-384-384zM128 128c0 0-64 0-64 64s64 64 64 64c282.75 0 512 229.25 512 512 0 0 0 64 64 64s64-64 64-64c0-353.406-286.5-640-640-640z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"width": 768,
|
||||
"tags": [
|
||||
"rss"
|
||||
],
|
||||
"grid": 16
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 37,
|
||||
"id": 11,
|
||||
"prevSize": 32,
|
||||
"code": 59649,
|
||||
"name": "rss"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 3
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M358.344 502.486q-76.634 0-130.858-54.222t-54.223-130.858 54.222-130.858 130.858-54.223 130.858 54.223 54.223 130.858-54.222 130.858-130.858 54.222zM821.043 564.18h169.657q6.266 0 10.845 4.579t4.579 10.845v92.54q0 6.266-4.579 10.845t-10.845 4.579h-169.657v169.657q0 6.266-4.579 10.845t-10.845 4.579h-92.54q-6.266 0-10.845-4.579t-4.579-10.845v-169.657h-169.657q-6.266 0-10.845-4.579t-4.579-10.845v-92.54q0-6.266 4.579-10.845t10.845-4.579h169.657v-169.657q0-6.266 4.579-10.844t10.845-4.579h92.54q6.266 0 10.845 4.579t4.579 10.844v169.657zM466.308 672.144q0 25.062 18.315 43.377t43.377 18.315h123.387v114.711q-32.773 24.099-82.419 24.099h-421.251q-58.319 0-93.504-33.257t-35.184-91.575q0-25.545 1.687-49.884t6.749-52.537 12.773-52.294 20.725-46.993 29.883-39.041 41.208-25.785 53.74-9.641q9.158 0 18.797 8.193 38.076 29.401 74.466 44.101t79.286 14.701 79.286-14.701 74.466-44.101q9.641-8.193 18.797-8.193 63.622 0 104.59 46.27h-107.482q-25.062 0-43.377 18.315t-18.315 43.377v92.54z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"width": 1027,
|
||||
"defaultCode": 58880,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 0,
|
||||
"order": 38,
|
||||
"prevSize": 32,
|
||||
"code": 58880,
|
||||
"name": "register"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 4
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M798.222 677.333v-122.667h-306.667v-122.667h306.667v-122.667l184 184zM736.888 615.999v245.333h-306.667v184l-368-184v-797.333h674.667v306.667h-61.333v-245.333h-490.667l245.333 122.667v552h245.333v-184z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58881,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 1,
|
||||
"order": 39,
|
||||
"prevSize": 32,
|
||||
"code": 58881,
|
||||
"name": "logout"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 5
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M916.215 627.489c-51.487-89.177-20.524-203.458 69.146-255.384l-96.433-167.030c-27.552 16.152-59.585 25.413-93.769 25.413-103.055 0-186.595-84.090-186.595-187.824h-192.872c0.255 32.018-7.738 64.479-24.876 94.158-51.486 89.179-165.941 119.506-255.743 67.81l-96.431 167.030c27.763 15.786 51.798 38.897 68.891 68.5 51.403 89.037 20.616 203.090-68.72 255.131l96.433 167.030c27.456-16 59.336-25.16 93.342-25.16 102.729 0 186.055 83.559 186.588 186.835h192.868c-0.082-31.696 7.927-63.796 24.884-93.167 51.401-89.035 165.577-119.403 255.313-68.053l96.433-167.028c-27.581-15.78-51.455-38.811-68.458-68.26zM512 732.026c-109.737 0-198.697-88.956-198.697-198.695 0-109.737 88.958-198.695 198.697-198.695 109.737 0 198.693 88.958 198.693 198.695-0.002 109.739-88.956 198.695-198.693 198.695z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58882,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 2,
|
||||
"order": 40,
|
||||
"prevSize": 32,
|
||||
"code": 58882,
|
||||
"name": "setting"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 6
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M22.106 876.094c-0.234-2.427-0.433-4.859-0.56-7.312 0.125 2.453 0.326 4.886 0.56 7.312zM247.412 584.266c88.176 2.624 147.328-88.836 132.118-204.315-15.232-115.46-99.088-208.119-187.266-210.759-88.192-2.616-147.334 85.754-132.108 201.25 15.22 115.448 99.046 211.192 187.256 213.823zM1002.667 288v-81.755c0-89.968-73.583-163.578-163.547-163.578h-654.212c-88.431 0-161.012 71.139-163.457 159.012 55.93-49.245 133.519-90.386 213.588-90.386 85.583 0 342.359 0 342.359 0l-76.617 64.801h-108.549c72 27.604 110.358 111.286 110.358 197.15 0 72.113-40.068 134.123-96.684 178.219-55.242 43.031-65.715 61.053-65.715 97.633 0 31.221 59.173 84.333 90.114 106.172 90.449 63.766 119.711 122.966 119.711 221.812 0 15.743-1.957 31.462-5.813 46.92h294.919c89.963 0 163.545-73.552 163.545-163.578v-511.087h-184v183.998h-61.333v-184h-183.998v-61.333h183.998v-184h61.333v184h184zM199.474 776.688c20.713 0 39.696-0.565 59.355-0.565-26.015-25.237-46.6-56.158-46.6-94.281 0-22.624 7.249-44.405 17.378-63.748-10.333 0.738-20.882 0.953-31.746 0.953-71.258 0-131.777-23.073-176.529-61.193v64.44l0.006 193.325c51.213-24.317 112.018-38.929 178.135-38.929zM24.611 892.955c-1.066-5.231-1.884-10.547-2.436-15.941 0.55 5.393 1.37 10.71 2.436 15.941zM457.806 955.81c-14.431-56.356-65.602-84.299-136.934-133.753-25.944-8.368-54.523-13.296-85.19-13.616-85.884-0.924-165.895 33.486-211.040 84.69 15.257 74.468 81.491 130.868 160.266 130.868h274.509c1.74-10.664 2.584-21.689 2.584-32.997 0-12.012-1.47-23.759-4.194-35.192z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58883,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 3,
|
||||
"order": 41,
|
||||
"prevSize": 32,
|
||||
"code": 58883,
|
||||
"name": "gplus"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 7
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M431.713 490.026c-138.186 6.379-249.878 80.393-249.878 172.715 0 92.194 111.717 161.506 249.878 155.051 138.289-6.302 250.215-92.839 250.215-185.033 0-92.115-111.924-149.111-250.215-142.732zM525.869 722.24c-42.328 54.619-126.050 81.269-207.345 37.239-38.711-20.995-37.264-62.211-37.264-62.211s-16.062-130.182 122.925-146.451c139.142-16.115 163.986 116.779 121.685 171.423zM432.64 635.056c-8.911 6.455-10.716 18.801-5.888 26.469 4.648 7.878 15.469 8.78 24.223 2.221 8.6-6.791 11.931-18.619 7.257-26.469-4.598-7.644-15.287-9.865-25.591-2.221zM366.763 652.977c-25.978 2.685-44.547 25.308-44.547 46.949 0 21.693 20.917 36.67 46.845 33.624 25.85-2.944 46.87-22.931 46.87-44.547 0.052-21.693-19.343-38.891-49.17-36.026zM853.245 42.666h-682.544c-82.509 0-149.395 66.886-149.395 149.395v682.544c0 82.509 66.886 149.395 149.395 149.395h682.544c82.509 0 149.395-66.886 149.395-149.395v-682.544c0-82.509-66.861-149.395-149.395-149.395zM805.444 693.963c-56.969 121.013-244.818 179.894-384.037 168.996-132.298-10.408-302.379-54.361-319.966-214.473 0 0-9.296-72.515 60.998-166.336 0 0 101.102-141.184 218.862-181.47 117.863-40.106 131.627 27.761 131.627 67.867-6.275 34.011-17.999 54.025 26.239 40.286 0 0 115.849-53.74 163.547-6.068 38.454 38.479 6.354 91.444 6.354 91.444s-15.96 17.637 16.89 23.991c32.926 6.586 136.43 54.543 79.488 175.762zM691.197 359.612c-12.602 0-22.726-10.201-22.726-22.701 0-12.732 10.122-22.958 22.726-22.958 0 0 142.036-26.262 125.043 126.358 0 0.903-0.103 1.627-0.309 2.428-1.602 10.82-11.103 19.109-22.287 19.109-12.654 0-22.958-10.122-22.958-22.751 0 0.025 22.519-101.982-79.488-79.488zM931.288 481.685h-0.207c-3.745 25.825-16.554 27.891-31.815 27.891-18.258 0-33.003-11.466-33.003-29.75 0-15.832 6.561-31.92 6.561-31.92 1.936-6.662 17.38-48.085-10.201-110.013-50.512-84.834-152.237-86.074-164.243-81.244-12.111 4.751-29.982 7.126-29.982 7.126-18.389 0-33.109-14.952-33.109-33.132 0-15.262 10.201-28.175 24.146-32.127 0 0 0.309-0.516 0.774-0.594 1.008-0.207 2.041-1.215 3.124-1.317 14.178-2.712 64.664-12.629 113.756-1.137 87.829 20.504 208.457 105.442 154.2 286.214z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58885,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 4,
|
||||
"order": 42,
|
||||
"prevSize": 32,
|
||||
"code": 58885,
|
||||
"name": "weibo"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 8
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M1014.323 537.151l-253.013 0.064 0.067 463.723h-499.15v-463.79l-252.549 0.064 502.389-501.267z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58890,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 5,
|
||||
"order": 43,
|
||||
"prevSize": 32,
|
||||
"code": 58890,
|
||||
"name": "goup"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 9
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M839.119 42.666h-654.212c-89.963 0-163.574 73.61-163.574 163.578v654.179c0 90.024 73.612 163.576 163.574 163.576h654.212c89.965 0 163.547-73.552 163.547-163.578v-654.178c0-89.968-73.583-163.578-163.547-163.578zM824.466 370.257c0.314 7.036 0.47 14.114 0.47 21.225 0 216.788-162.165 466.773-458.714 466.773-91.046 0-175.791-27.167-247.141-73.713 12.612 1.522 25.446 2.294 38.458 2.294 75.538 0 145.051-26.23 200.228-70.229-70.549-1.322-130.088-48.756-150.606-113.929 9.846 1.917 19.945 2.946 30.333 2.946 14.705 0 28.947-2.009 42.473-5.758-73.753-15.077-129.327-81.378-129.327-160.862 0-0.692 0-1.378 0.015-2.062 21.735 12.286 46.598 19.665 73.025 20.518-43.261-29.419-71.724-79.63-71.724-136.551 0-30.063 7.948-58.246 21.829-82.472 79.517 99.255 198.314 164.565 332.306 171.409-2.75-12.010-4.176-24.529-4.176-37.388 0-90.599 72.187-164.048 161.22-164.048 46.374 0 88.28 19.92 117.685 51.806 36.723-7.356 71.227-21.007 102.381-39.811-12.039 38.31-37.599 70.459-70.884 90.764 32.608-3.966 63.683-12.784 92.594-25.831-21.607 32.894-48.942 61.789-80.446 84.918z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58891,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 6,
|
||||
"order": 44,
|
||||
"prevSize": 32,
|
||||
"code": 58891,
|
||||
"name": "twitter"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 10
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M1002.64 192.061c0-82.509-66.886-149.395-149.395-149.395h-682.544c-82.509 0-149.395 66.886-149.395 149.395v682.544c0 82.509 66.886 149.395 149.395 149.395h682.544c82.509 0 149.395-66.886 149.395-149.395v-682.544zM149.294 904.405c0.981 11.803-7.876 42.121-19.705 42.121h-2.17c-10.95 0-20.297-27.063-21.356-38.297-16.347-182.217 41.191-329.832 92.633-406.038 18.515-27.711 37.498-50.512 54.696-68.642-4.288-9.813-6.689-20.66-6.689-32.127 0-44.29 36.077-80.109 80.366-80.109 44.547 0 80.213 35.819 80.213 80.109 0 44.572-35.688 80.366-80.213 80.366-17.095 0-32.848-5.397-45.942-14.463-15.211 16.244-31.686 45.889-47.673 70.010-68.151 102.007-96.688 231.903-84.161 367.070zM323.505 648.329c-18.285 0-36.8-2.014-54.464-5.94-11.673-2.764-18.62-14.385-16.219-25.773 2.816-11.749 14.178-19.006 25.772-16.269 14.592 3.358 29.724 4.985 44.908 4.985 110.091 0 199.519-89.432 199.519-199.262 0-109.858-89.432-199.287-199.519-199.287-109.831 0-199.418 89.43-199.418 199.287 0 31.868 7.283 62.548 21.873 90.904 5.604 10.484 1.42 23.5-9.451 28.846-10.615 5.656-23.397 1.472-28.898-9.167-17.534-33.908-26.599-72.362-26.599-110.555 0-133.72 108.746-242.493 242.493-242.493 133.824 0 242.646 108.773 242.646 242.493-0.027 133.488-108.849 242.234-242.648 242.234zM774.455 366.428c-21.486 0.466-43.334-4.029-62.961-13.351-68.486-32.591-97.746-114.737-65.155-183.302 32.487-68.511 114.737-97.746 183.302-65.155 68.511 32.463 97.773 114.843 65.025 183.149-4.751 9.426-9.994 18.412-16.426 26.521-4.054 5.242-11.931 6.197-17.2 2.014s-6.095-11.931-1.911-17.2c5.267-6.561 9.786-14.099 13.376-21.848 26.856-56.271 2.971-123.957-53.483-150.428-56.348-26.856-123.803-2.996-150.428 53.611-27.115 56.22-3.124 123.675 53.379 150.531 16.347 7.67 33.984 11.492 51.804 10.768 6.791-0.128 12.524 5.114 12.654 11.931 0.309 6.818-5.087 12.395-11.983 12.757zM980.897 450.487c-0.155 0.621-0.414 0.826-0.414 1.188-2.816 5.654-9.271 8.366-15.393 6.197-97.307-35.922-149.473-96.817-175.994-141.699-9.53-16.244-16.449-31.661-21.486-44.754-6.302-0.155-12.318-1.807-17.999-4.313-23.061-10.977-32.643-37.963-21.745-60.766 10.743-22.701 37.833-32.384 60.636-21.486 22.701 10.846 32.256 37.988 21.641 60.636-4.184 8.625-10.873 15.519-18.67 19.834 4.803 11.956 11.002 25.206 19.471 39.278 35.612 59.81 90.386 103.661 162.514 130.261 6.43 2.505 9.557 9.298 7.437 15.623z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58893,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 7,
|
||||
"order": 45,
|
||||
"prevSize": 32,
|
||||
"code": 58893,
|
||||
"name": "t-weibo"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 11
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M360 554.666h-300v-120h300v-120l180 180-180 180zM960 74.666v780l-360 180v-180h-360v-240h60v180h300v-540l240-120h-540v240h-60v-300z"
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"defaultCode": 58897,
|
||||
"grid": 0
|
||||
},
|
||||
"properties": {
|
||||
"id": 8,
|
||||
"order": 46,
|
||||
"prevSize": 32,
|
||||
"code": 58897,
|
||||
"name": "login"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 0,
|
||||
"iconIdx": 12
|
||||
}
|
||||
],
|
||||
"height": 1024,
|
||||
"metadata": {
|
||||
"name": "icomoon"
|
||||
},
|
||||
"preferences": {
|
||||
"showGlyphs": true,
|
||||
"showCodes": 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
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<@head title="${dynamicLabel} - ${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${dynamicLabel}">
|
||||
<meta name="description" content="${metaDescription},${dynamicLabel}">
|
||||
</@head>
|
||||
<style>.dynamic pre{overflow-x:auto;}</style>
|
||||
</head>
|
||||
<body>
|
||||
<#include "side.ftl">
|
||||
<main class="dynamic">
|
||||
<article>
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="archive" href="/dynamic.html"><li class="icontitle iconfont icon-jiaoyin"></li>${dynamicLabel}</a>
|
||||
</h2>
|
||||
</header>
|
||||
<#if 0 != recentComments?size>
|
||||
<ul class="comments" id="comments">
|
||||
<#list recentComments as comment>
|
||||
<#if comment_index < 11>
|
||||
<li>
|
||||
<img class="avatar" title="${comment.commentName}" alt="${comment.commentName}" src="${comment.commentThumbnailURL}">
|
||||
<div class="content">
|
||||
<div class="fn-clear post-meta">
|
||||
<span class="fn-left">
|
||||
<#if "http://" == comment.commentURL>
|
||||
<span>${comment.commentName}</span>
|
||||
<#else>
|
||||
<a href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
|
||||
</#if>
|
||||
<time><span class="icon-date"></span> ${comment.commentDate?string("yy-MM-dd HH:mm")}</time>
|
||||
</span>
|
||||
<a class="fn-right itip" id="goto_${comment_index}" href="${comment.commentSharpURL}" lang="${viewLabel}"><span class="iconfont icon-kaishi"></span></a>
|
||||
</div>
|
||||
<div class="comment-content">${comment.commentContent}</div>
|
||||
</div>
|
||||
</li>
|
||||
</#if>
|
||||
</#list>
|
||||
</ul>
|
||||
</#if>
|
||||
</article>
|
||||
<#if 0 != mostCommentArticles?size || 0 != mostViewCountArticles?size>
|
||||
<#if 0 != mostCommentArticles?size>
|
||||
<article>
|
||||
<header>
|
||||
<h2 class="dynamic-title"><li class="icontitle iconfont icon-huo"></li>
|
||||
${mostCommentArticlesLabel}
|
||||
</h2>
|
||||
</header>
|
||||
<ul>
|
||||
<#list mostCommentArticles as article>
|
||||
<li>
|
||||
<a href="${article.articlePermalink}" title="${article.articleTitle}" rel="nofollow">${article.articleTitle}</a>
|
||||
<span data-ico="">${article.articleCommentCount}</span>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</article>
|
||||
</#if>
|
||||
<#if 0 != mostViewCountArticles?size>
|
||||
<article>
|
||||
<header>
|
||||
<h2 class="dynamic-title"><li class="icontitle iconfont icon-youxiu"></li>
|
||||
${mostViewCountArticlesLabel}
|
||||
</h2>
|
||||
</header>
|
||||
<ul>
|
||||
<#list mostViewCountArticles as article>
|
||||
<li>
|
||||
<a href="${article.articlePermalink}" title="${article.articleTitle}" rel="nofollow">${article.articleTitle}</a>
|
||||
<span data-ico="">${article.articleViewCount}</span>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</article>
|
||||
</#if>
|
||||
</#if>
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
<script>
|
||||
var $commentContents = $(".comments .comment-content");
|
||||
for (var i = 0; i < $commentContents.length; i++) {
|
||||
var str = $commentContents[i].innerHTML;
|
||||
$commentContents[i].innerHTML = Util.replaceEmString(str);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,94 @@
|
|||
<footer class="footer">
|
||||
<div class="fn-clear">
|
||||
<span class="itip" id="stat_copy" lang="${blogTitle}感谢您的访问">
|
||||
${viewCount1Label}${statistic.statisticBlogViewCount}</span>
|
||||
${articleCount1Label}${statistic.statisticPublishedBlogArticleCount}
|
||||
${commentCount1Label}${statistic.statisticPublishedBlogCommentCount}
|
||||
${onlineVisitor1Label}${onlineVisitorCnt}
|
||||
<span class="fn-right"> ${footerContent}</span>
|
||||
</div>
|
||||
<div class="fn-clear">
|
||||
©${year} ${blogTitle?html} All Rights Reserved
|
||||
<span class="fn-right">
|
||||
<#-- 根据自己实际情况修改
|
||||
<a href="https://www.aliyun.com" lang="托管于阿里云." class="itip" id="aly" rel="nofollow"><span class="iconfont icon-aliyun01"></span></a>
|
||||
<a href="https://www.qiniu.com/" lang="存储于七牛云." class="itip" id="qny" rel="nofollow"><span class="iconfont icon-qiniu1"></span></a>
|
||||
-->
|
||||
Powered by <a href="http://b3log.org" rel="friend">B3log开源·Solo</a>
|
||||
Theme <a rel="friend" href="https://zixizixi.cn/">子兮子兮</a>
|
||||
</span>
|
||||
</div>
|
||||
<span onclick="Util.goTop()" class="icon-goup iconfont icon-rocketop itip ifixed" id="backTop" lang="飞回顶部"></span>
|
||||
<span onclick="Util.goBottom()" class="icon-fly-down iconfont icon-rocketop itip ifixed" id="backBtm" lang="飞到底部"></span>
|
||||
</footer>
|
||||
<#-- 我喜欢把有些可能频繁修改的 js 和 css 代码直接写在 ftl 文件里,因为写在 ftl 里修改后不需要重启服务即可直接保存查看效果,单独写在文件里必须关闭服务后才能保存修改。 -->
|
||||
<script src="//pv.sohu.com/cityjson?ie=utf-8"></script>
|
||||
<script>window.jQuery || document.write('<script src="/skins/${skinDirName}/js/lib/jquery/jquery.2.2.4.min.js"><\/script>');</script>
|
||||
<script>$['browser']={};</script>
|
||||
<script src="/skins/${skinDirName}/js/common${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
<script src="/skins/${skinDirName}/js/yilia7${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
<script src="/skins/${skinDirName}/js/lib/layer/layer.js?${staticResourceVersion}"></script>
|
||||
<script src="/skins/${skinDirName}/js/welcome.js?${staticResourceVersion}"></script>
|
||||
<style>.layui-layer-page .layui-layer-content:not(#layui-layer-photos){ overflow: hidden; }.layui-layer-resize{width:0;height:0;border-width:5px;border-style:ridge;border-color:transparent #666 #666 transparent;}</style>
|
||||
<script>
|
||||
if (typeof(returnCitySN) != 'undefined') {
|
||||
console.debug("\u8bbf\u5ba2\u5730\u5740:"+returnCitySN.cip+"\n\u8bbf\u5ba2\u533a\u57df:"+returnCitySN.cname);
|
||||
$("#stat_copy").attr("lang","\u60a8\u662f\u6765\u81ea "+returnCitySN.cname+" \u7684\u8bbf\u5ba2");
|
||||
}
|
||||
var today = new Date().getDate();
|
||||
var latkeConfig={"servePath": "${servePath}", "staticServePath": "${staticServePath}", "isLoggedIn": "${isLoggedIn?string}", "userName": "${userName}"};
|
||||
var Label={
|
||||
"skinDirName":"${skinDirName}","em00Label":"${em00Label}","em01Label":"${em01Label}","em03Label":"${em03Label}","em04Label":"${em04Label}",
|
||||
"em05Label":"${em05Label}","em06Label":"${em06Label}","em07Label":"${em07Label}","em08Label":"${em08Label}","em09Label":"${em09Label}",
|
||||
"em10Label":"${em10Label}","em11Label":"${em11Label}","em12Label":"${em12Label}","em13Label":"${em13Label}","em14Label":"${em14Label}"
|
||||
};
|
||||
<#-- 参数说明:消息、选择器、方向(顶右底左对应1234)、是否固定 -->
|
||||
var itip = function (msg, selector, ipoint, ifixed) {
|
||||
ipoint = ipoint == undefined ? 1 : ipoint;
|
||||
layer.tips(msg, selector, {tips:[ipoint,'#333'], fixed:ifixed, time:6000});
|
||||
};
|
||||
$(function($) {
|
||||
// link target
|
||||
$("main a, footer a").not("header a,a.quote-link,.pagination a,a.tag,a[rel='prev'],a[rel='next']").attr("target", "_blank");
|
||||
if($("body").width() > 750) {
|
||||
if(Cookie.readCookie("showTips") != "0") {
|
||||
<#-- 鼠标悬浮提示 -->
|
||||
$(".itip").each(function(i, n) {
|
||||
$(n).hover(function() {
|
||||
itip($(n).attr("lang"),"#"+$(n).attr("id"),$(n).data("point"),$(n).hasClass("ifixed"));
|
||||
}, function() {
|
||||
layer.closeAll('tips');
|
||||
});
|
||||
});
|
||||
}
|
||||
<#-- 鼠标点击冒泡特效 -->
|
||||
var clicksum=0;
|
||||
$("html").click(function(e) {
|
||||
var n=18, $i;
|
||||
clicksum++;
|
||||
if(clicksum==10) { $i=$("<b></b>").text("(๑><๑)"); }
|
||||
else if(clicksum==20) { $i=$("<b></b>").text("(。ò ∀ ó。)"); }
|
||||
else if(clicksum==30) { $i=$("<b></b>").text("(๑•́ ω •̀๑)"); }
|
||||
else if(clicksum==40) { $i=$("<b></b>").text("(๑•̀_•́๑)"); }
|
||||
else if(clicksum==50) { $i=$("<b></b>").text("o((>ω< ))o"); }
|
||||
else if(clicksum==60) { $i=$("<b></b>").text("٩(๑^o^๑)۶"); }
|
||||
else if(clicksum==70) { $i=$("<b></b>").text("✧٩(ˊωˋ*)و✧"); }
|
||||
else if(clicksum==80) { $i=$("<b></b>").text("ε٩(๑> ₃ <)۶ з"); }
|
||||
else if(clicksum==90) { $i=$("<b></b>").text("૧(●´৺`●)૭૧(●´৺`●)૭"); }
|
||||
else if(clicksum>=100 && clicksum<=105) { $i=$("<b></b>").text("(ꐦ°᷄д°᷅)Are you crazy?"); }
|
||||
else { $i=$("<i class='iconfont icon-keaide'></i>"); n=Math.round(Math.random()*14+16); }
|
||||
var x=e.pageX, y=e.pageY;
|
||||
$i.css({"z-index":9999,"top":y-20,"left":x,"position":"absolute","color":"#E94F06","font-size":n,"-moz-user-select":"none", "-webkit-user-select": "none","-ms-user-select":"none"});
|
||||
$("body").append($i);
|
||||
$i.animate({"top":y-180,"opacity":0},1500,function(){$i.remove();});
|
||||
e.stopPropagation();
|
||||
});
|
||||
<#-- 点击图片次数 -->
|
||||
var clickimg=0;
|
||||
$("article p img, #comments img").not(".avatar").click(function(){clickimg++;var parele=$(this).parents("section")[0]||$(this).parents("div")[0];
|
||||
if($(parele).attr("id")==undefined){$(parele).attr("id",("img-"+clickimg));} layer.photos({photos:('#'+$(parele).attr("id")),anim:5,shade:0.3});
|
||||
}).css("cursor", "zoom-in");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<#-- ${plugins} -->
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 999 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 706 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1023 B |
After Width: | Height: | Size: 808 B |
After Width: | Height: | Size: 1004 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,21 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<@head title="${blogTitle}">
|
||||
<#if metaKeywords??>
|
||||
<meta name="keywords" content="${metaKeywords}">
|
||||
</#if>
|
||||
<#if metaDescription??>
|
||||
<meta name="description" content="${metaDescription}">
|
||||
</#if>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "side.ftl">
|
||||
<main>
|
||||
<#include "article-list.ftl">
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,379 @@
|
|||
/*
|
||||
* 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>
|
||||
* @author <a href="http://88250.b3log.org">Liang Ding</a>
|
||||
* @version 1.3.1.1, Jan 29, 2018
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description Util
|
||||
* @static
|
||||
*/
|
||||
var Util = {
|
||||
/**
|
||||
* 按需加载 MathJax 及 flow
|
||||
* @returns {undefined}
|
||||
*/
|
||||
parseMarkdown: function (className) {
|
||||
var hasMathJax = false;
|
||||
var hasFlow = false;
|
||||
var className = className || 'article-body';
|
||||
$('.' + className).each(function () {
|
||||
$(this).find('p').each(function () {
|
||||
if ($(this).text().indexOf('$\\') > -1 || $(this).text().indexOf('$$') > -1) {
|
||||
hasMathJax = true;
|
||||
}
|
||||
});
|
||||
if ($(this).find('code.lang-flow, code.language-flow').length > 0) {
|
||||
hasFlow = true
|
||||
}
|
||||
});
|
||||
|
||||
if (hasMathJax) {
|
||||
var initMathJax = function () {
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$', '$'], ["\\(", "\\)"]],
|
||||
displayMath: [['$$', '$$']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['pre', 'code', 'script']
|
||||
}
|
||||
});
|
||||
MathJax.Hub.Typeset();
|
||||
};
|
||||
|
||||
if (typeof MathJax !== 'undefined') {
|
||||
initMathJax();
|
||||
} else {
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "https://cdn.staticfile.org/MathJax/MathJax-2.6-latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&_=1473258780393",
|
||||
dataType: "script",
|
||||
cache: true
|
||||
}).done(function () {
|
||||
initMathJax();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (hasFlow) {
|
||||
var initFlow = function () {
|
||||
$('.' + className + ' code.lang-flow, .' + className + ' code.language-flow').each(function (index) {
|
||||
var $it = $(this);
|
||||
var id = 'symFlow' + (new Date()).getTime() + index;
|
||||
$it.hide();
|
||||
var diagram = flowchart.parse($.trim($it.text()));
|
||||
$it.parent().after('<div style="text-align: center" id="' + id + '"></div>')
|
||||
diagram.drawSVG(id);
|
||||
$it.parent().remove();
|
||||
$('#' + id).find('svg').height('auto').width('auto');
|
||||
});
|
||||
};
|
||||
|
||||
if (typeof (flowchart) !== 'undefined') {
|
||||
initFlow();
|
||||
} else {
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: latkeConfig.staticServePath + '/js/lib/flowchart/flowchart.min.js',
|
||||
dataType: "script",
|
||||
cache: true
|
||||
}).done(function () {
|
||||
initFlow()
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 是否登录
|
||||
* @returns {Boolean} 是否登录
|
||||
*/
|
||||
isLoggedIn: function () {
|
||||
if (($("#admin").length === 1 && $("#admin").data("login")) || latkeConfig.isLoggedIn === "true") {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 获取用户名称
|
||||
* @returns {String} 用户名称
|
||||
*/
|
||||
getUserName: function () {
|
||||
if ($("#adminName").length === 1) {
|
||||
return $("#adminName").text();
|
||||
} else {
|
||||
return latkeConfig.userName;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 检测页面错误
|
||||
*/
|
||||
error: function () {
|
||||
$("#tipMsg").text("Error: " + arguments[0] +
|
||||
" File: " + arguments[1] + "\nLine: " + arguments[2] +
|
||||
" please report this issue on https://github.com/b3log/solo/issues/new");
|
||||
$("#loadMsg").text("");
|
||||
},
|
||||
/**
|
||||
* @description IE6/7,跳转到 kill-browser 页面
|
||||
*/
|
||||
killIE: function () {
|
||||
var addKillPanel = function () {
|
||||
if (Cookie.readCookie("showKill") === "") {
|
||||
var left = ($(window).width() - 701) / 2,
|
||||
top1 = ($(window).height() - 420) / 2;
|
||||
$("body").append("<div style='display: block; height: 100%; width: 100%; position: fixed; background-color: rgb(0, 0, 0); opacity: 0.6; top: 0px;z-index:11'></div>"
|
||||
+ "<iframe style='left:" + left + "px;z-index:20;top: " + top1 + "px; position: fixed; border: 0px none; width: 701px; height: 420px;' src='" + latkeConfig.servePath + "/kill-browser'></iframe>");
|
||||
}
|
||||
};
|
||||
|
||||
if ($.browser.msie) {
|
||||
// kill IE6 and IE7
|
||||
if ($.browser.version === "6.0" || $.browser.version === "7.0") {
|
||||
addKillPanel();
|
||||
return;
|
||||
}
|
||||
|
||||
// 后台页面 kill 360
|
||||
if (window.external && window.external.twGetRunPath) {
|
||||
var path = external.twGetRunPath();
|
||||
if (path && path.toLowerCase().indexOf("360se") > -1 &&
|
||||
window.location.href.indexOf("admin-index") > -1) {
|
||||
addKillPanel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 替换[emXX] 为图片
|
||||
* @param {String} str 替换字符串
|
||||
* @returns {String} 替换后的字符
|
||||
*/
|
||||
replaceEmString: function (str) {
|
||||
var commentSplited = str.split("[em");
|
||||
if (commentSplited.length === 1) {
|
||||
return str;
|
||||
}
|
||||
|
||||
str = commentSplited[0];
|
||||
for (var j = 1; j < commentSplited.length; j++) {
|
||||
var key = commentSplited[j].substr(0, 2);
|
||||
str += "<img width='20' src='" + latkeConfig.staticServePath + "/images/emotions/em" + key + ".png' alt='" +
|
||||
Label["em" + key + "Label"] + "' title='" +
|
||||
Label["em" + key + "Label"] + "'/> " + commentSplited[j].substr(3);
|
||||
}
|
||||
return str;
|
||||
},
|
||||
/**
|
||||
* @description URL 没有协议头,则自动加上 http://
|
||||
* @param {String} url URL 地址
|
||||
* @returns {String} 添加后的URL
|
||||
*/
|
||||
proessURL: function (url) {
|
||||
if (!/^\w+:\/\//.test(url)) {
|
||||
url = "http://" + url;
|
||||
}
|
||||
return url;
|
||||
},
|
||||
/**
|
||||
* @description 切换到手机版
|
||||
* @param {String} skin 切换前的皮肤名称
|
||||
*/
|
||||
switchMobile: function (skin) {
|
||||
Cookie.createCookie("btouch_switch_toggle", skin, 365);
|
||||
setTimeout(function () {
|
||||
location.reload();
|
||||
}, 1250);
|
||||
},
|
||||
/**
|
||||
* @description topbar 相关事件
|
||||
*/
|
||||
setTopBar: function () {
|
||||
var $top = $("#top");
|
||||
if ($top.length === 1) {
|
||||
var $showTop = $("#showTop");
|
||||
$showTop.click(function () {
|
||||
$top.slideDown();
|
||||
$showTop.hide();
|
||||
});
|
||||
$("#hideTop").click(function () {
|
||||
$top.slideUp();
|
||||
$showTop.show();
|
||||
});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 回到顶部
|
||||
*/
|
||||
goTop: function () {
|
||||
$('html, body').animate({scrollTop: 0}, 500);
|
||||
},
|
||||
/**
|
||||
* @description 回到底部
|
||||
*/
|
||||
goBottom: function (bottom) {
|
||||
if (!bottom) {
|
||||
bottom = 0;
|
||||
}
|
||||
var wHeight = $("body").height() > $(document).height() ? $("body").height() : $(document).height();
|
||||
// window.scrollTo(0, wHeight - $(window).height() - bottom);
|
||||
$('html, body').animate({scrollTop: (wHeight - $(window).height() - bottom)}, 500);
|
||||
},
|
||||
/**
|
||||
* @description 页面初始化执行的函数
|
||||
*/
|
||||
init: function () {
|
||||
//window.onerror = Util.error;
|
||||
Util.killIE();
|
||||
Util.setTopBar();
|
||||
Util.parseMarkdown();
|
||||
},
|
||||
/**
|
||||
* @description 替换侧边栏表情为图片
|
||||
* @param {Dom} comments 评论内容元素
|
||||
*/
|
||||
replaceSideEm: function (comments) {
|
||||
for (var i = 0; i < comments.length; i++) {
|
||||
var $comment = $(comments[i]);
|
||||
$comment.html(Util.replaceEmString($comment.html()));
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 根据 tags,穿件云效果
|
||||
* @param {String} [id] tags 根元素 id,默认为 tags
|
||||
*/
|
||||
buildTags: function (id) {
|
||||
id = id || "tags";
|
||||
// 根据引用次数添加样式,产生云效果
|
||||
var classes = ["tags1", "tags2", "tags3", "tags4", "tags5"],
|
||||
bList = $("#" + id + " b").get();
|
||||
var max = parseInt($("#" + id + " b").last().text());
|
||||
var distance = Math.ceil(max / classes.length);
|
||||
for (var i = 0; i < bList.length; i++) {
|
||||
var num = parseInt(bList[i].innerHTML);
|
||||
// 算出当前 tag 数目所在的区间,加上 class
|
||||
for (var j = 0; j < classes.length; j++) {
|
||||
if (num > j * distance && num <= (j + 1) * distance) {
|
||||
bList[i].parentNode.className = classes[j];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 按字母或者中文拼音进行排序
|
||||
$("#" + id).html($("#" + id + " li").get().sort(function (a, b) {
|
||||
var valA = $(a).find("span").text().toLowerCase();
|
||||
var valB = $(b).find("span").text().toLowerCase();
|
||||
// 对中英文排序的处理
|
||||
return valA.localeCompare(valB);
|
||||
}));
|
||||
},
|
||||
/**
|
||||
* @description 时间戳转化为时间格式
|
||||
* @param {String} time 时间
|
||||
* @param {String} format 格式化后日期格式
|
||||
* @returns {String} 格式化后的时间
|
||||
*/
|
||||
toDate: function (time, format) {
|
||||
var dateTime = new Date(time);
|
||||
var o = {
|
||||
"M+": dateTime.getMonth() + 1, //month
|
||||
"d+": dateTime.getDate(), //day
|
||||
"H+": dateTime.getHours(), //hour
|
||||
"m+": dateTime.getMinutes(), //minute
|
||||
"s+": dateTime.getSeconds(), //second
|
||||
"q+": Math.floor((dateTime.getMonth() + 3) / 3), //quarter
|
||||
"S": dateTime.getMilliseconds() //millisecond
|
||||
}
|
||||
|
||||
if (/(y+)/.test(format)) {
|
||||
format = format.replace(RegExp.$1, (dateTime.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
}
|
||||
|
||||
for (var k in o) {
|
||||
if (new RegExp("(" + k + ")").test(format)) {
|
||||
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
|
||||
}
|
||||
}
|
||||
return format;
|
||||
},
|
||||
/**
|
||||
* @description 获取窗口高度
|
||||
* @returns {Inter} 窗口高度
|
||||
*/
|
||||
getWinHeight: function () {
|
||||
if (window.innerHeight) {
|
||||
return window.innerHeight;
|
||||
}
|
||||
if (document.compatMode === "CSS1Compat") {
|
||||
return window.document.documentElement.clientHeight;
|
||||
}
|
||||
return window.document.body.clientHeight;
|
||||
}
|
||||
};
|
||||
if (!Cookie) {
|
||||
/**
|
||||
* @description Cookie 相关操作
|
||||
* @static
|
||||
*/
|
||||
var Cookie = {
|
||||
/**
|
||||
* @description 读取 cookie
|
||||
* @param {String} name cookie key
|
||||
* @returns {String} 对应 key 的值,如 key 不存在则返回 ""
|
||||
*/
|
||||
readCookie: function (name) {
|
||||
var nameEQ = name + "=";
|
||||
var ca = document.cookie.split(';');
|
||||
for (var i = 0; i < ca.length; i++) {
|
||||
var c = ca[i];
|
||||
while (c.charAt(0) == ' ')
|
||||
c = c.substring(1, c.length);
|
||||
if (c.indexOf(nameEQ) == 0)
|
||||
return decodeURIComponent(c.substring(nameEQ.length, c.length));
|
||||
}
|
||||
return "";
|
||||
},
|
||||
/**
|
||||
* @description 清除 Cookie
|
||||
* @param {String} name 清除 key 为 name 的该条 Cookie
|
||||
*/
|
||||
eraseCookie: function (name) {
|
||||
this.createCookie(name, "", -1);
|
||||
},
|
||||
/**
|
||||
* @description 创建 Cookie
|
||||
* @param {String} name 每条 Cookie 唯一的 key
|
||||
* @param {String} value 每条 Cookie 对应的值,将被 UTF-8 编码
|
||||
* @param {Int} days Cookie 保存时间
|
||||
*/
|
||||
createCookie: function (name, value, days) {
|
||||
var expires = "";
|
||||
if (days) {
|
||||
var date = new Date();
|
||||
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
||||
expires = "; expires=" + date.toGMTString();
|
||||
}
|
||||
document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2017, 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.
|
||||
*/
|
||||
function convertEntities(b){var d,a;d=function(c){if(/&[^;]+;/.test(c)){var f=document.createElement("div");f.innerHTML=c;return !f.firstChild?c:f.firstChild.nodeValue}return c};if(typeof b==="string"){return d(b)}else{if(typeof b==="object"){for(a in b){if(typeof b[a]==="string"){b[a]=d(b[a])}}}}return b};
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2017, 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.
|
||||
*/
|
||||
function convertEntities(t){var e,n;if(e=function(t){if(/&[^;]+;/.test(t)){var e=document.createElement("div");return e.innerHTML=t,e.firstChild?e.firstChild.nodeValue:t}return t},"string"==typeof t)return e(t);if("object"==typeof t)for(n in t)"string"==typeof t[n]&&(t[n]=e(t[n]));return t}
|
|
@ -0,0 +1,134 @@
|
|||
(()=>{
|
||||
class OwO {
|
||||
constructor(option) {
|
||||
const defaultOption = {
|
||||
logo: 'OωO表情',
|
||||
container: document.getElementsByClassName('OwO')[0],
|
||||
target: document.getElementsByTagName('textarea')[0],
|
||||
position: 'down',
|
||||
width: '100%',
|
||||
maxHeight: '250px',
|
||||
api: 'https://itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/OwO.json',
|
||||
useMarkdown: false,
|
||||
appendContent: '',
|
||||
addClass: '',
|
||||
usedSize: 'h_200'
|
||||
};
|
||||
for (let defaultKey in defaultOption) {
|
||||
if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {
|
||||
option[defaultKey] = defaultOption[defaultKey];
|
||||
}
|
||||
}
|
||||
this.container = option.container;
|
||||
this.target = option.target;
|
||||
if (option.position === 'up') {
|
||||
this.container.classList.add('OwO-up');
|
||||
}
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = () => {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
|
||||
this.odata = JSON.parse(xhr.responseText);
|
||||
this.init(option);
|
||||
} else {
|
||||
console.log('OwO data request was unsuccessful: ' + xhr.status);
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.open('get', option.api, true);
|
||||
xhr.send(null);
|
||||
}
|
||||
init(option) {
|
||||
this.area = option.target;
|
||||
this.packages = Object.keys(this.odata);
|
||||
// fill in HTML
|
||||
let html = `
|
||||
<div class="OwO-logo"><span>${option.logo}</span></div>
|
||||
<div class="OwO-body" style="width: ${option.width}">`;
|
||||
for (let i = 0; i < this.packages.length; i++) {
|
||||
html += `
|
||||
<ul class="OwO-items OwO-items-${this.odata[this.packages[i]].type}" style="max-height: ${parseInt(option.maxHeight) - 30 + 'px'};">`;
|
||||
let opackage = this.odata[this.packages[i]].container;
|
||||
for (let i = 0; i < opackage.length; i++) {
|
||||
html += (`
|
||||
<li class="OwO-item ` + option.addClass + `" alt="${opackage[i].text}" title="${opackage[i].text}">${opackage[i].icon}</li>`);
|
||||
}
|
||||
html += `
|
||||
</ul>`;
|
||||
}
|
||||
html += `
|
||||
<div class="OwO-bar">
|
||||
<ul class="OwO-packages">`;
|
||||
for (let i = 0; i < this.packages.length; i++) {
|
||||
html += `
|
||||
<li><span>${this.packages[i]}</span></li>`
|
||||
}
|
||||
html += `
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
if(option.appendContent != '') {
|
||||
html += option.appendContent;
|
||||
}
|
||||
this.container.innerHTML = html;
|
||||
// bind event
|
||||
this.logo = this.container.getElementsByClassName('OwO-logo')[0];
|
||||
this.logo.addEventListener('click', () => {
|
||||
this.toggle();
|
||||
});
|
||||
this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', (e)=> {
|
||||
let target = null;
|
||||
if (e.target.classList.contains('OwO-item')) {
|
||||
target = e.target;
|
||||
} else if (e.target.parentNode.classList.contains('OwO-item')) {
|
||||
target = e.target.parentNode;
|
||||
}
|
||||
if (target) {
|
||||
var insertContent = target.innerHTML;
|
||||
if(target.firstChild.tagName == "IMG" && option.useMarkdown) {
|
||||
insertContent = "![" + target.title + "](" + (target.firstChild.src.substr(0,target.firstChild.src.indexOf(",")+1)) + option.usedSize + ")";
|
||||
}
|
||||
const cursorPos = this.area.selectionEnd;
|
||||
let areaValue = this.area.value;
|
||||
this.area.value = areaValue.slice(0, cursorPos) + insertContent + areaValue.slice(cursorPos);
|
||||
this.area.focus();
|
||||
//this.toggle();
|
||||
}
|
||||
});
|
||||
this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0];
|
||||
for (let i = 0; i < this.packagesEle.children.length; i++) {
|
||||
((index) =>{
|
||||
this.packagesEle.children[i].addEventListener('click', () => {
|
||||
this.tab(index);
|
||||
});
|
||||
})(i);
|
||||
}
|
||||
this.tab(0);
|
||||
}
|
||||
toggle() {
|
||||
if (this.container.classList.contains('OwO-open')) {
|
||||
this.container.classList.remove('OwO-open');
|
||||
} else {
|
||||
this.container.classList.add('OwO-open');
|
||||
}
|
||||
}
|
||||
tab(index) {
|
||||
const itemsShow = this.container.getElementsByClassName('OwO-items-show')[0];
|
||||
if (itemsShow) {
|
||||
itemsShow.classList.remove('OwO-items-show');
|
||||
}
|
||||
this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show');
|
||||
const packageActive = this.container.getElementsByClassName('OwO-package-active')[0];
|
||||
if (packageActive) {
|
||||
packageActive.classList.remove('OwO-package-active');
|
||||
}
|
||||
this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active');
|
||||
}
|
||||
}
|
||||
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
|
||||
module.exports = OwO;
|
||||
} else {
|
||||
window.OwO = OwO;
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,290 @@
|
|||
{
|
||||
"颜文字": {
|
||||
"type": "emoticon",
|
||||
"container": [{
|
||||
"icon": "OωO",
|
||||
"text": "萌"
|
||||
},
|
||||
{
|
||||
"icon": "|´・ω・)ノ",
|
||||
"text": "Hi"
|
||||
},
|
||||
{
|
||||
"icon": "ヾ(≧∇≦*)ゝ",
|
||||
"text": "开心"
|
||||
},
|
||||
{
|
||||
"icon": "(●゚ω゚●)",
|
||||
"text": "脸红"
|
||||
},
|
||||
{
|
||||
"icon": " ̄﹃ ̄",
|
||||
"text": "流口水"
|
||||
},
|
||||
{
|
||||
"icon": "(/ω\)",
|
||||
"text": "捂脸"
|
||||
},
|
||||
{
|
||||
"icon": "→_→",
|
||||
"text": "斜眼"
|
||||
},
|
||||
{
|
||||
"icon": "(╯‵□′)╯︵┴─┴",
|
||||
"text": "掀桌"
|
||||
},
|
||||
{
|
||||
"icon": "∠( ᐛ 」∠)_",
|
||||
"text": "给跪"
|
||||
},
|
||||
{
|
||||
"icon": "(@。ε。@))",
|
||||
"text": "么么哒"
|
||||
},
|
||||
{
|
||||
"icon": "୧(๑•̀⌄•́๑)૭",
|
||||
"text": "加油"
|
||||
},
|
||||
{
|
||||
"icon": "⌇●﹏●⌇",
|
||||
"text": "吓死宝宝惹"
|
||||
},
|
||||
{
|
||||
"icon": "٩(ˊᗜˋ*)و",
|
||||
"text": "有木有WiFi"
|
||||
},
|
||||
{
|
||||
"icon": "(ノ°ο°)ノ",
|
||||
"text": "前方高能预警"
|
||||
},
|
||||
{
|
||||
"icon": "(´இ皿இ`)",
|
||||
"text": "我从未见过如此厚颜无耻之人"
|
||||
},
|
||||
{
|
||||
"icon": "(ฅ´ω`ฅ)",
|
||||
"text": "已阅留爪"
|
||||
},
|
||||
{
|
||||
"icon": "(╯°A°)╯︵○○○",
|
||||
"text": "去吧大师球"
|
||||
},
|
||||
{
|
||||
"icon": "φ( ̄∇ ̄o)",
|
||||
"text": "太萌惹"
|
||||
},
|
||||
{
|
||||
"icon": "ヾ(´・ ・`。)ノ\"",
|
||||
"text": "咦咦咦"
|
||||
},
|
||||
{
|
||||
"icon": "( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃",
|
||||
"text": "气呼呼"
|
||||
},
|
||||
{
|
||||
"icon": "(๑•̀ㅂ•́)و✧",
|
||||
"text": "加油"
|
||||
},
|
||||
{
|
||||
"icon": "Σ(っ °Д °;)っ",
|
||||
"text": "什么鬼"
|
||||
},
|
||||
{
|
||||
"icon": "─=≡Σ(((つ•̀ω•́)つ",
|
||||
"text": "飞扑"
|
||||
},
|
||||
{
|
||||
"icon": "╮(╯▽╰)╭ ",
|
||||
"text": "无奈"
|
||||
},
|
||||
{
|
||||
"icon": "( ,,´・ω・)ノ\"(´っω・`。)",
|
||||
"text": "摸摸头"
|
||||
},
|
||||
{
|
||||
"icon": "♥(✿ฺ´∀`✿ฺ)ノ",
|
||||
"text": "花痴"
|
||||
},
|
||||
{
|
||||
"icon": "٩(๑>◡<๑)۶",
|
||||
"text": "真棒"
|
||||
},
|
||||
{
|
||||
"icon": "(ó﹏ò。)",
|
||||
"text": "我受到了惊吓"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Emoji": {
|
||||
"type": "emoji",
|
||||
"container": [{
|
||||
"icon": "😂",
|
||||
"text": "笑哭"
|
||||
},
|
||||
{
|
||||
"icon": "😀",
|
||||
"text": "哈哈"
|
||||
},
|
||||
{
|
||||
"icon": "😅",
|
||||
"text": "流汗"
|
||||
},
|
||||
{
|
||||
"icon": "😊",
|
||||
"text": "可爱"
|
||||
},
|
||||
{
|
||||
"icon": "🙂",
|
||||
"text": "微笑"
|
||||
},
|
||||
{
|
||||
"icon": "🙃",
|
||||
"text": "我倒"
|
||||
},
|
||||
{
|
||||
"icon": "😌",
|
||||
"text": "嘻嘻"
|
||||
},
|
||||
{
|
||||
"icon": "😍",
|
||||
"text": "爱你"
|
||||
},
|
||||
{
|
||||
"icon": "😘 ",
|
||||
"text": "飞吻"
|
||||
},
|
||||
{
|
||||
"icon": "😜",
|
||||
"text": "鬼脸"
|
||||
},
|
||||
{
|
||||
"icon": "😝",
|
||||
"text": "啦啦啦"
|
||||
},
|
||||
{
|
||||
"icon": "😏",
|
||||
"text": "坏笑"
|
||||
},
|
||||
{
|
||||
"icon": "😒",
|
||||
"text": "撇嘴"
|
||||
},
|
||||
{
|
||||
"icon": "🙄",
|
||||
"text": "白眼"
|
||||
},
|
||||
{
|
||||
"icon": "😳 ",
|
||||
"text": "脸红"
|
||||
},
|
||||
{
|
||||
"icon": "😡",
|
||||
"text": "愤怒"
|
||||
},
|
||||
{
|
||||
"icon": "😔",
|
||||
"text": "哎"
|
||||
},
|
||||
{
|
||||
"icon": "😫",
|
||||
"text": "好累"
|
||||
},
|
||||
{
|
||||
"icon": "😱",
|
||||
"text": "惊恐"
|
||||
},
|
||||
{
|
||||
"icon": "😭",
|
||||
"text": "大哭"
|
||||
},
|
||||
{
|
||||
"icon": "😶",
|
||||
"text": "无语"
|
||||
},
|
||||
{
|
||||
"icon": "😣",
|
||||
"text": "难过"
|
||||
},
|
||||
|
||||
{
|
||||
"icon": "😤",
|
||||
"text": "气死"
|
||||
},
|
||||
{
|
||||
"icon": "😪",
|
||||
"text": "困了"
|
||||
},
|
||||
{
|
||||
"icon": "😮",
|
||||
"text": "惊呆"
|
||||
},
|
||||
{
|
||||
"icon": "😲",
|
||||
"text": "天哪"
|
||||
},
|
||||
{
|
||||
"icon": "🤥",
|
||||
"text": "说谎"
|
||||
},
|
||||
{
|
||||
"icon": "🤢",
|
||||
"text": "恶心"
|
||||
},
|
||||
{
|
||||
"icon": "👻",
|
||||
"text": "吓死你"
|
||||
},
|
||||
{
|
||||
"icon": "👍",
|
||||
"text": "棒棒哒"
|
||||
},
|
||||
{
|
||||
"icon": "👎",
|
||||
"text": "鄙视"
|
||||
},
|
||||
{
|
||||
"icon": "👏",
|
||||
"text": "鼓掌"
|
||||
},
|
||||
{
|
||||
"icon": "👋",
|
||||
"text": "拜拜"
|
||||
},
|
||||
{
|
||||
"icon": "👭",
|
||||
"text": "朋友"
|
||||
},
|
||||
{
|
||||
"icon": "🌝",
|
||||
"text": "满月"
|
||||
},
|
||||
{
|
||||
"icon": "🌞",
|
||||
"text": "太阳"
|
||||
},
|
||||
{
|
||||
"icon": "🙈",
|
||||
"text": "看不见"
|
||||
},
|
||||
{
|
||||
"icon": "💊",
|
||||
"text": "该吃药了"
|
||||
},
|
||||
{
|
||||
"icon": "🙏",
|
||||
"text": "拜托"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Markdown": {
|
||||
"type": "emoticon",
|
||||
"container": [
|
||||
{ "icon": "[TEXT](https://zixizixi.cn 'TITLE')", "text": "链接" },
|
||||
{ "icon": "![ALT](https://zixizixi.cn/icon.png 'TITLE')", "text": "图片" },
|
||||
{ "icon": "#", "text": "标题" },
|
||||
{ "icon": "> ", "text": "引用" },
|
||||
{ "icon": "*", "text": "粗/斜/项" },
|
||||
{ "icon": "```", "text": "代码" }
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,444 @@
|
|||
{
|
||||
"颜文字": {
|
||||
"type": "emoticon",
|
||||
"container": [
|
||||
{"icon": "OωO","text": "萌"},
|
||||
{"icon": "|´・ω・)ノ","text": "Hi"},
|
||||
{"icon": "ヾ(≧∇≦*)ゝ","text": "开心"},
|
||||
{"icon": "(●゚ω゚●)","text": "脸红"},
|
||||
{"icon": " ̄﹃ ̄","text": "流口水"},
|
||||
{"icon": "(/ω\)","text": "捂脸"},
|
||||
{"icon": "→_→","text": "斜眼"},
|
||||
{"icon": "(╯‵□′)╯︵┴─┴","text": "掀桌"},
|
||||
{"icon": "∠( ᐛ 」∠)_","text": "给跪"},
|
||||
{"icon": "(@。ε。@))","text": "么么哒"},
|
||||
{"icon": "୧(๑•̀⌄•́๑)૭","text": "加油"},
|
||||
{"icon": "⌇●﹏●⌇","text": "吓死宝宝惹"},
|
||||
{"icon": "٩(ˊᗜˋ*)و","text": "有木有WiFi"},
|
||||
{"icon": "(ノ°ο°)ノ","text": "前方高能预警"},
|
||||
{"icon": "(´இ皿இ`)","text": "我从未见过如此厚颜无耻之人"},
|
||||
{"icon": "(ฅ´ω`ฅ)","text": "已阅留爪"},
|
||||
{"icon": "(╯°A°)╯︵○○○","text": "去吧大师球"},
|
||||
{"icon": "φ( ̄∇ ̄o)","text": "太萌惹"},
|
||||
{"icon": "ヾ(´・ ・`。)ノ\"","text": "咦咦咦"},
|
||||
{"icon": "( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃","text": "气呼呼"},
|
||||
{"icon": "(๑•̀ㅂ•́)و✧","text": "加油"},
|
||||
{"icon": "Σ(っ °Д °;)っ","text": "什么鬼"},
|
||||
{"icon": "─=≡Σ(((つ•̀ω•́)つ","text": "飞扑"},
|
||||
{"icon": "╮(╯▽╰)╭ ","text": "无奈"},
|
||||
{"icon": "( ,,´・ω・)ノ\"(´っω・`。)","text": "摸摸头"},
|
||||
{"icon": " ♥(✿ฺ´∀`✿ฺ)ノ","text": "花痴"},
|
||||
{"icon": "٩(๑>◡<๑)۶","text": "真棒"},
|
||||
{"icon": "(ó﹏ò。)","text": "我受到了惊吓"}
|
||||
]
|
||||
},
|
||||
"图片表情": {
|
||||
"type": "image",
|
||||
"container": [
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/weixiao.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "微笑"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/feiwen.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "飞吻"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/hahaha.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "哈哈哈"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/haixiu.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "人家害羞啦"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/huachi.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "犯花痴"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/huaixiao.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "坏笑"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/jingya.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "好惊讶啊"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/kongbu.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "好恐怖啊"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/meimeida.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "美美哒"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/mengmengda.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "萌萌哒"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/pibei.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "疲惫不堪"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/shangxin.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "好伤心"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/shuangfeile.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "爽︿( ̄︶ ̄)︽( ̄︶ ̄)︿飞.飞.飞."
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/woyun.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "我晕@"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/wuyu.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "无语了"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/ganga.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "这就尴尬了..."
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/bishi.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "凸^-^凸"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/fennu.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "愤怒!"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/xianggu.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "蓝瘦香菇"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/xiaoku.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "笑哭了"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/xingfen.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "好兴奋呀~"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/xixi.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "(*^__^*) 嘻嘻"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/yindang.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "淫荡的笑了"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/simple/zhayan.jpeg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "向你眨了眨眼"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/bbxlk.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "宝宝心里苦"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/douwo.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "你在逗我?"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/huanhu.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "来呀~"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/jizhi.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "机智如我"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/maijiu.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "买酒去"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/guizhidao.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "鬼知道"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/laji.gif?x-oss-process=image/resize,h_100\">",
|
||||
"text": "辣鸡"
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/zhuangb.jpg?x-oss-process=image/resize,h_100\">",
|
||||
"text": "走一趟"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Ac娘": {
|
||||
"type": "image",
|
||||
"container": [
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/01.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/02.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/03.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/04.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/05.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/06.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/07.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/08.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/09.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/10.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/11.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/12.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/13.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/14.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/15.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/16.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/17.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/18.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/19.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/20.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/21.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/22.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/23.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/24.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/25.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/26.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/27.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/28.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/29.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/30.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/31.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/32.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/33.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/34.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/35.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/36.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/37.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/38.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/39.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/40.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/41.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/42.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/43.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/44.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/45.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/46.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/47.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/48.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/49.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/50.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/51.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/52.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/53.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"icon": "<img src=\"//itanken.oss-cn-hangzhou.aliyuncs.com/images/emimg/acfun/54.png?x-oss-process=image/resize,h_100\">",
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"Emoji": {
|
||||
"type": "emoji",
|
||||
"container": [
|
||||
{"icon": "😂","text": "笑哭"},
|
||||
{"icon": "😀","text": "哈哈"},
|
||||
{"icon": "😅","text": "流汗"},
|
||||
{"icon": "😊","text": "可爱"},
|
||||
{"icon": "🙂","text": "微笑"},
|
||||
{"icon": "🙃","text": "我倒"},
|
||||
{"icon": "😌","text": "嘻嘻"},
|
||||
{"icon": "😍","text": "爱你"},
|
||||
{"icon": "😘","text": "飞吻"},
|
||||
{"icon": "😜","text": "鬼脸"},
|
||||
{"icon": "😝","text": "啦啦啦"},
|
||||
{"icon": "😏","text": "坏笑"},
|
||||
{"icon": "😒","text": "撇嘴"},
|
||||
{"icon": "🙄","text": "白眼"},
|
||||
{"icon": "😳","text": "脸红"},
|
||||
{"icon": "😡","text": "愤怒"},
|
||||
{"icon": "😔","text": "哎"},
|
||||
{"icon": "😫","text": "好累"},
|
||||
{"icon": "😱","text": "惊恐"},
|
||||
{"icon": "😭","text": "大哭"},
|
||||
{"icon": "😶","text": "无语"},
|
||||
{"icon": "😣","text": "难过"},
|
||||
{"icon": "😤","text": "气死"},
|
||||
{"icon": "😪","text": "困了"},
|
||||
{"icon": "😮","text": "惊呆"},
|
||||
{"icon": "😲","text": "天哪"},
|
||||
{"icon": "🤥","text": "说谎"},
|
||||
{"icon": "🤢","text": "恶心"},
|
||||
{"icon": "👻","text": "吓死你"},
|
||||
{"icon": "👍","text": "棒棒哒"},
|
||||
{"icon": "👎","text": "鄙视"},
|
||||
{"icon": "👏","text": "鼓掌"},
|
||||
{"icon": "👋","text": "拜拜"},
|
||||
{"icon": "👭","text": "朋友"},
|
||||
{"icon": "🌝","text": "满月"},
|
||||
{"icon": "🌞","text": "太阳"},
|
||||
{"icon": "🙈","text": "看不见"},
|
||||
{"icon": "💊","text": "该吃药了"},
|
||||
{"icon": "🙏","text": "拜托"}
|
||||
]
|
||||
},
|
||||
"MD": {
|
||||
"type": "emoticon",
|
||||
"container": [
|
||||
{"icon":"[TEXT](https://zixizixi.cn 'TITLE')","text":"链接"},
|
||||
{"icon":"![ALT](https://zixizixi.cn/icon.png 'TITLE')","text":"图片"},
|
||||
{"icon":"#","text":"标题"},
|
||||
{"icon":"> ","text":"引用"},
|
||||
{"icon":"*","text":"粗/斜/项"},
|
||||
{"icon":"```","text":"代码"}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
'use strict';
|
||||
var _createClass = function() {
|
||||
function defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, descriptor.key, descriptor);
|
||||
}
|
||||
}
|
||||
return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; };
|
||||
}();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
(function() {
|
||||
var OwO = function() {
|
||||
function OwO(option) {
|
||||
var _this = this;
|
||||
_classCallCheck(this, OwO);
|
||||
var defaultOption = {
|
||||
logo: 'OωO表情',
|
||||
container: document.getElementsByClassName('OwO')[0],
|
||||
target: document.getElementsByTagName('textarea')[0],
|
||||
position: 'down',
|
||||
width: '100%',
|
||||
maxHeight: '250px',
|
||||
api: '/skins/mobile/js/lib/OwO/OwO.json',
|
||||
useMarkdown: false,
|
||||
appendContent: '',
|
||||
addClass: '',
|
||||
usedSize: 'h_200'
|
||||
};
|
||||
for (var defaultKey in defaultOption) {
|
||||
if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {
|
||||
option[defaultKey] = defaultOption[defaultKey];
|
||||
}
|
||||
}
|
||||
this.container = option.container;
|
||||
this.target = option.target;
|
||||
if (option.position === 'up') {
|
||||
this.container.classList.add('OwO-up');
|
||||
}
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
|
||||
_this.odata = JSON.parse(xhr.responseText);
|
||||
_this.init(option);
|
||||
} else {
|
||||
console.log('OwO data request was unsuccessful: ' + xhr.status);
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.open('get', option.api, true);
|
||||
xhr.send(null);
|
||||
}
|
||||
_createClass(OwO, [{
|
||||
key: 'init',
|
||||
value: function init(option) {
|
||||
var _this2 = this;
|
||||
this.area = option.target;
|
||||
this.packages = Object.keys(this.odata);
|
||||
// fill in HTML
|
||||
var html = '<div class="OwO-logo"><span>' + option.logo + '</span></div>\n<div class="OwO-body" style="width: ' + option.width + '">';
|
||||
for (var i = 0; i < this.packages.length; i++) {
|
||||
html += '<ul class="OwO-items OwO-items-' + this.odata[this.packages[i]].type + '" style="max-height: ' + (parseInt(option.maxHeight) - 30 + 'px') + ';">';
|
||||
var opackage = this.odata[this.packages[i]].container;
|
||||
for (var _i = 0; _i < opackage.length; _i++) {
|
||||
html += '<li class="OwO-item ' + option.addClass + ('" alt="' + opackage[_i].text + '" title="' + opackage[_i].text + '">' + opackage[_i].icon + '</li>');
|
||||
}
|
||||
html += '</ul>';
|
||||
}
|
||||
html += '<div class="OwO-bar"><ul class="OwO-packages">';
|
||||
for (var _i2 = 0; _i2 < this.packages.length; _i2++) {
|
||||
html += '<li><span>' + this.packages[_i2] + '</span></li>';
|
||||
}
|
||||
html += '</ul></div></div>';
|
||||
if (option.appendContent != '') {
|
||||
html += option.appendContent;
|
||||
}
|
||||
this.container.innerHTML = html;
|
||||
// bind event
|
||||
this.logo = this.container.getElementsByClassName('OwO-logo')[0];
|
||||
this.logo.addEventListener('click', function() {
|
||||
_this2.toggle();
|
||||
});
|
||||
this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', function(e) {
|
||||
var target = null;
|
||||
if (e.target.classList.contains('OwO-item')) {
|
||||
target = e.target;
|
||||
} else if (e.target.parentNode.classList.contains('OwO-item')) {
|
||||
target = e.target.parentNode;
|
||||
}
|
||||
if (target) {
|
||||
var insertContent = target.innerHTML;
|
||||
if (target.firstChild.tagName == "IMG" && option.useMarkdown) {
|
||||
insertContent = "![" + target.title + "](" + target.firstChild.src.substr(0, target.firstChild.src.indexOf(",") + 1) + option.usedSize + ")";
|
||||
}
|
||||
var cursorPos = _this2.area.selectionEnd;
|
||||
var areaValue = _this2.area.value;
|
||||
_this2.area.value = areaValue.slice(0, cursorPos) + insertContent + areaValue.slice(cursorPos);
|
||||
_this2.area.focus();
|
||||
//_this2.toggle();
|
||||
}
|
||||
});
|
||||
this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0];
|
||||
var _loop = function _loop(_i3) {
|
||||
(function(index) {
|
||||
_this2.packagesEle.children[_i3].addEventListener('click', function() {
|
||||
_this2.tab(index);
|
||||
});
|
||||
})(_i3);
|
||||
};
|
||||
|
||||
for (var _i3 = 0; _i3 < this.packagesEle.children.length; _i3++) {
|
||||
_loop(_i3);
|
||||
}
|
||||
this.tab(0);
|
||||
}
|
||||
}, {
|
||||
key: 'toggle',
|
||||
value: function toggle() {
|
||||
if (this.container.classList.contains('OwO-open')) {
|
||||
this.container.classList.remove('OwO-open');
|
||||
} else {
|
||||
this.container.classList.add('OwO-open');
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'tab',
|
||||
value: function tab(index) {
|
||||
var itemsShow = this.container.getElementsByClassName('OwO-items-show')[0];
|
||||
if (itemsShow) {
|
||||
itemsShow.classList.remove('OwO-items-show');
|
||||
}
|
||||
this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show');
|
||||
|
||||
var packageActive = this.container.getElementsByClassName('OwO-package-active')[0];
|
||||
if (packageActive) {
|
||||
packageActive.classList.remove('OwO-package-active');
|
||||
}
|
||||
this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active');
|
||||
}
|
||||
}]);
|
||||
return OwO;
|
||||
}();
|
||||
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
|
||||
module.exports = OwO;
|
||||
} else {
|
||||
window.OwO = OwO;
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,2 @@
|
|||
/*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */
|
||||
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);
|
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 701 B |
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,748 @@
|
|||
/*
|
||||
* 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 Page util, load heighlight and process comment.
|
||||
*
|
||||
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
|
||||
* @author <a href="http://88250.b3log.org">Liang Ding</a>
|
||||
* @version 1.4.0.0, Nov 10, 2017
|
||||
*/
|
||||
var Page = function (tips) {
|
||||
this.currentCommentId = "";
|
||||
this.tips = tips;
|
||||
};
|
||||
$.extend(Page.prototype, {
|
||||
/*
|
||||
* @description 评论时点击表情,在评论内容中插入相关代码
|
||||
* @param {String} name 用于区别回复评论还是对文章的评论
|
||||
*/
|
||||
insertEmotions: function (name) {
|
||||
var _it = this;
|
||||
if (name === undefined) {
|
||||
name = "";
|
||||
}
|
||||
|
||||
$("#emotions" + name + " span").click(function () {
|
||||
var $comment = $("#comment" + name);
|
||||
var endPosition = _it._getCursorEndPosition($comment[0]);
|
||||
var key = this.title + ' ',
|
||||
textValue = $comment[0].value;
|
||||
textValue = textValue.substring(0, endPosition) + key + textValue.substring(endPosition, textValue.length);
|
||||
$("#comment" + name).val(textValue);
|
||||
if ($.browser.msie) {
|
||||
endPosition -= textValue.split('\n').length - 1;
|
||||
var oR = $comment[0].createTextRange();
|
||||
oR.collapse(true);
|
||||
oR.moveStart('character', endPosition + key.length);
|
||||
oR.select();
|
||||
} else {
|
||||
$comment[0].setSelectionRange(endPosition + key.length, endPosition + key.length);
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @description 获取当前光标最后位置
|
||||
* @param {Dom} textarea 评论框对象
|
||||
* @returns {Num} 光标位置
|
||||
*/
|
||||
_getCursorEndPosition: function (textarea) {
|
||||
textarea.focus();
|
||||
if (textarea.setSelectionRange) { // W3C
|
||||
return textarea.selectionEnd;
|
||||
} else if (document.selection) { // IE
|
||||
var i = 0,
|
||||
oS = document.selection.createRange(),
|
||||
oR = document.body.createTextRange();
|
||||
oR.moveToElementText(textarea);
|
||||
oS.getBookmark();
|
||||
for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i++) {
|
||||
if (textarea.value.charAt(i) === '\n') {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 评论校验
|
||||
* @param {String} state 用于区别回复评论还是对文章的评论
|
||||
*/
|
||||
validateComment: function (state) {
|
||||
if (Util.isLoggedIn()) {
|
||||
var commenterContent = $("#comment" + state).val().replace(/(^\s*)|(\s*$)/g, "");
|
||||
if (2 > commenterContent.length || commenterContent.length > 500) {
|
||||
$("#commentErrorTip" + state).html(this.tips.commentContentCannotEmptyLabel);
|
||||
$("#comment" + state).focus();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
$("#commentErrorTip" + state).show();
|
||||
return false;
|
||||
}
|
||||
|
||||
var commentName = $("#commentName" + state).val().replace(/(^\s*)|(\s*$)/g, ""),
|
||||
commenterContent = $("#comment" + state).val().replace(/(^\s*)|(\s*$)/g, "");
|
||||
if (2 > commentName.length || commentName.length > 20) {
|
||||
$("#commentErrorTip" + state).html(this.tips.nameTooLongLabel);
|
||||
$("#commentName" + state).focus();
|
||||
} else if ($("#commentEmail" + state).val().replace(/\s/g, "") === "") {
|
||||
$("#commentErrorTip" + state).html(this.tips.mailCannotEmptyLabel);
|
||||
$("#commentEmail" + state).focus();
|
||||
} else if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test($("#commentEmail" + state).val())) {
|
||||
$("#commentErrorTip" + state).html(this.tips.mailInvalidLabel);
|
||||
$("#commentEmail" + state).focus();
|
||||
} else if (2 > commenterContent.length || commenterContent.length > 500) {
|
||||
$("#commentErrorTip" + state).html(this.tips.commentContentCannotEmptyLabel);
|
||||
$("#comment" + state).focus();
|
||||
} else if ($("#commentValidate" + state).val().replace(/\s/g, "") === "") {
|
||||
$("#commentErrorTip" + state).html(this.tips.captchaCannotEmptyLabel);
|
||||
$("#commentValidate" + state).focus();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
$("#commentErrorTip" + state).show();
|
||||
return false;
|
||||
},
|
||||
/*
|
||||
* @description 把评论中的标识替换为图片
|
||||
* @param {Dom} selector
|
||||
*/
|
||||
replaceCommentsEm: function (selector) {
|
||||
var $commentContents = $(selector);
|
||||
for (var i = 0; i < $commentContents.length; i++) {
|
||||
var str = $commentContents[i].innerHTML;
|
||||
$commentContents[i].innerHTML = Util.replaceEmString(str);
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 初始化 SyantaxHighlighter
|
||||
* @param {Array} languages 需要加载的语言
|
||||
*/
|
||||
_initSyntaxHighlighter: function (languages) {
|
||||
// load brush js
|
||||
for (var i = 0; i < languages.length; i++) {
|
||||
switch (languages[i]) {
|
||||
case "groovy":
|
||||
languages[i] = 'groovy ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushGroovy.js';
|
||||
break;
|
||||
case "java":
|
||||
languages[i] = 'java ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushJava.js';
|
||||
break;
|
||||
case "php":
|
||||
languages[i] = 'php ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushPhp.js';
|
||||
break;
|
||||
case "scala":
|
||||
languages[i] = 'scala ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushScala.js';
|
||||
break;
|
||||
case "sql":
|
||||
languages[i] = 'sql ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushSql.js';
|
||||
break;
|
||||
case "applescript":
|
||||
languages[i] = 'applescript ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushAppleScript.js';
|
||||
break;
|
||||
case "as3":
|
||||
case "actionscript3":
|
||||
languages[i] = 'actionscript3 as3 ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushAS3.js';
|
||||
break;
|
||||
case "bash":
|
||||
case "shell":
|
||||
languages[i] = 'bash shell ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushBash.js';
|
||||
break;
|
||||
case "coldfusion":
|
||||
case "cf":
|
||||
languages[i] = 'coldfusion cf ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushColdFusion.js';
|
||||
break;
|
||||
case "c#":
|
||||
case "c-sharp":
|
||||
case "csharp":
|
||||
languages[i] = 'c# c-sharp csharp ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushCSharp.js';
|
||||
break;
|
||||
case "cpp":
|
||||
case "c":
|
||||
languages[i] = 'cpp c ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushCpp.js';
|
||||
break;
|
||||
case "css":
|
||||
languages[i] = 'css ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushCss.js';
|
||||
break;
|
||||
case "delphi":
|
||||
case "pascal":
|
||||
languages[i] = 'delphi pascal ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushDelphi.js';
|
||||
break;
|
||||
case "diff":
|
||||
case "patch":
|
||||
case "pas":
|
||||
languages[i] = 'diff patch pas ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushDiff.js';
|
||||
break;
|
||||
case "erl":
|
||||
case "erlang":
|
||||
languages[i] = 'erl erlang ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushErlang.js';
|
||||
break;
|
||||
case "js":
|
||||
case "jscript":
|
||||
case "javascript":
|
||||
languages[i] = 'js jscript javascript ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushJScript.js';
|
||||
break;
|
||||
case "jfx":
|
||||
case "javafx":
|
||||
languages[i] = 'jfx javafx ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushJavaFX.js';
|
||||
break;
|
||||
case "perl":
|
||||
case "pl":
|
||||
languages[i] = 'perl pl ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushPerl.js';
|
||||
break;
|
||||
case "plain":
|
||||
case "text":
|
||||
languages[i] = 'text plain ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushPlain.js';
|
||||
break;
|
||||
case "ps":
|
||||
case "powershell":
|
||||
languages[i] = 'ps powershell ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushPowerShell.js';
|
||||
break;
|
||||
case "py":
|
||||
case "python":
|
||||
languages[i] = 'py python ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushPython.js';
|
||||
break;
|
||||
case "rails":
|
||||
case "ror":
|
||||
case "ruby":
|
||||
case "rb":
|
||||
languages[i] = 'ruby rails ror rb ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushRuby.js';
|
||||
break;
|
||||
case "sass":
|
||||
case "scss":
|
||||
languages[i] = 'sass scss ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushSass.js';
|
||||
break;
|
||||
case "vb":
|
||||
case "vbnet":
|
||||
languages[i] = 'vb vbnet ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushVb.js';
|
||||
break;
|
||||
case "xml":
|
||||
case "xhtml":
|
||||
case "xslt":
|
||||
case "html":
|
||||
languages[i] = 'xml xhtml xslt html ' +
|
||||
latkeConfig.staticServePath + '/js/lib/SyntaxHighlighter/scripts/shBrushXml.js';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// code high lighter
|
||||
SyntaxHighlighter.autoloader.apply(null, languages);
|
||||
SyntaxHighlighter.config.stripBrs = true;
|
||||
SyntaxHighlighter.all();
|
||||
},
|
||||
/*
|
||||
* @description 加载 SyntaxHighlighter
|
||||
* @param {String} SHTheme SyntaxHighLighter 样式
|
||||
*/
|
||||
_loadSyntaxHighlighter: function (SHTheme) {
|
||||
var cssName = SHTheme ? SHTheme : "shCoreEclipse",
|
||||
that = this;
|
||||
// load css
|
||||
if (document.createStyleSheet) {
|
||||
document.createStyleSheet(latkeConfig.staticServePath + "/js/lib/SyntaxHighlighter/styles/" + cssName + ".css");
|
||||
} else {
|
||||
$("head").append($("<link rel='stylesheet' href='" + latkeConfig.staticServePath + "/js/lib/SyntaxHighlighter/styles/"
|
||||
+ cssName + ".css' type='text/css' charset='utf-8' />"));
|
||||
}
|
||||
|
||||
// load js
|
||||
$.ajax({
|
||||
url: latkeConfig.staticServePath + "/js/lib/SyntaxHighlighter/scripts/shCore.js",
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
success: function () {
|
||||
// get brush settings
|
||||
var languages = [],
|
||||
isScrip = false;
|
||||
$(".article-body pre, .code-highlight pre").each(function () {
|
||||
var name = this.className.split(";")[0];
|
||||
var language = name.substr(7, name.length - 1);
|
||||
if (this.className.indexOf("html-script: true") > -1 &&
|
||||
(language !== "xml" && language !== "xhtml" &&
|
||||
language !== "xslt" && language != "html")) {
|
||||
isScrip = true;
|
||||
}
|
||||
|
||||
languages.push(language);
|
||||
});
|
||||
// when html-script is true, need shBrushXml.js
|
||||
if (isScrip) {
|
||||
$.ajax({
|
||||
url: latkeConfig.staticServePath + "/js/lib/SyntaxHighlighter/scripts/shBrushXml.js",
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
success: function () {
|
||||
that._initSyntaxHighlighter(languages);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
that._initSyntaxHighlighter(languages);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* @description 解析语法高亮
|
||||
* @param {Obj} obj 语法高亮配置参数
|
||||
* @param {Obj} obj.SHTheme 语法高亮 SyntaxHighLighter 样式
|
||||
*/
|
||||
parseLanguage: function (obj) {
|
||||
var isPrettify = false,
|
||||
isSH = false;
|
||||
$(".article-body pre, .code-highlight pre").each(function () {
|
||||
if (this.className.indexOf("brush") > -1) {
|
||||
isSH = true;
|
||||
}
|
||||
|
||||
if (this.className.indexOf("prettyprint") > -1) {
|
||||
isPrettify = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (isSH) {
|
||||
this._loadSyntaxHighlighter(obj ? (obj.SHTheme ? obj.SHTheme : undefined) : undefined);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isPrettify) {
|
||||
// load css
|
||||
if (document.createStyleSheet) {
|
||||
document.createStyleSheet(latkeConfig.staticServePath + "/js/lib/google-code-prettify/prettify.css");
|
||||
} else {
|
||||
$("head").append($("<link rel='stylesheet' href='" + latkeConfig.staticServePath + "/js/lib/google-code-prettify/prettify.css'>"));
|
||||
}
|
||||
|
||||
// load js
|
||||
$.ajax({
|
||||
url: latkeConfig.staticServePath + "/js/lib/google-code-prettify/prettify.js",
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
success: function () {
|
||||
prettyPrint();
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// otherelse use highlight
|
||||
// load css
|
||||
if (document.createStyleSheet) {
|
||||
document.createStyleSheet(latkeConfig.staticServePath + "/js/lib/highlight.js-9.6.0/styles/default.css");
|
||||
} else {
|
||||
$("head").append($("<link rel='stylesheet' href='" + latkeConfig.staticServePath + "/js/lib/highlight.js-9.6.0/styles/github.css'>"));
|
||||
}
|
||||
$.ajax({
|
||||
url: latkeConfig.staticServePath + "/js/lib/highlight.js-9.6.0/highlight.pack.js",
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
success: function () {
|
||||
hljs.initHighlighting.called = false;
|
||||
hljs.initHighlighting();
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* @description 文章/自定义页面加载
|
||||
* @param {Obj} obj 配置设定
|
||||
* @param {Obj} obj.language 代码高亮配置
|
||||
*/
|
||||
load: function (obj) {
|
||||
var that = this;
|
||||
// emotions
|
||||
that.insertEmotions();
|
||||
// language
|
||||
that.parseLanguage(obj ? (obj.language ? obj.language : undefined) : undefined);
|
||||
// submit comment
|
||||
$("#commentValidate").keypress(function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
that.submitComment();
|
||||
}
|
||||
});
|
||||
|
||||
$("#comment").keypress(function (event) {
|
||||
if (event.keyCode === 13 && event.ctrlKey) {
|
||||
that.submitComment();
|
||||
}
|
||||
});
|
||||
// captcha
|
||||
$("#captcha").click(function () {
|
||||
$(this).attr("src", latkeConfig.servePath + "/captcha.do?code=" + Math.random());
|
||||
});
|
||||
// cookie
|
||||
if (!Util.isLoggedIn()) {
|
||||
$("#commentEmail").val(Cookie.readCookie("commentEmail"));
|
||||
$("#commentURL").val(Cookie.readCookie("commentURL"));
|
||||
$("#commentName").val(Cookie.readCookie("commentName"));
|
||||
}
|
||||
// if no JSON, add it.
|
||||
try {
|
||||
JSON
|
||||
} catch (e) {
|
||||
document.write("<script src=\"" + latkeConfig.staticServePath + "/js/lib/json2.js\"><\/script>");
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 加载随机文章
|
||||
* @param {String} headTitle 随机文章标题
|
||||
*/
|
||||
loadRandomArticles: function (headTitle) {
|
||||
var randomArticles1Label = this.tips.randomArticles1Label;
|
||||
// getRandomArticles
|
||||
$.ajax({
|
||||
url: latkeConfig.servePath + "/get-random-articles.do",
|
||||
type: "POST",
|
||||
success: function (result, textStatus) {
|
||||
var randomArticles = result.randomArticles;
|
||||
if (!randomArticles || 0 === randomArticles.length) {
|
||||
$("#randomArticles").remove();
|
||||
return;
|
||||
}
|
||||
|
||||
var listHtml = "";
|
||||
for (var i = 0; i < randomArticles.length; i++) {
|
||||
var article = randomArticles[i];
|
||||
var title = article.articleTitle;
|
||||
var randomArticleLiHtml = "<li>" + "<a rel='nofollow' title='" + title + "' href='" + latkeConfig.servePath +
|
||||
article.articlePermalink + "'>" + title + "</a></li>";
|
||||
listHtml += randomArticleLiHtml;
|
||||
}
|
||||
|
||||
var titleHTML = headTitle ? headTitle : "<h4>" + randomArticles1Label + "</h4>";
|
||||
var randomArticleListHtml = titleHTML + "<ul class='marginLeft12'>" + listHtml + "</ul>";
|
||||
$("#randomArticles").append(randomArticleListHtml);
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* @description 加载相关文章
|
||||
* @param {String} id 文章 id
|
||||
* @param {String} headTitle 相关文章标题
|
||||
*/
|
||||
loadRelevantArticles: function (id, headTitle) {
|
||||
$.ajax({
|
||||
url: latkeConfig.servePath + "/article/id/" + id + "/relevant/articles",
|
||||
type: "GET",
|
||||
success: function (data, textStatus) {
|
||||
var articles = data.relevantArticles;
|
||||
if (!articles || 0 === articles.length) {
|
||||
$("#relevantArticles").remove();
|
||||
return;
|
||||
}
|
||||
var listHtml = "";
|
||||
for (var i = 0; i < articles.length; i++) {
|
||||
var article = articles[i];
|
||||
var title = article.articleTitle;
|
||||
var articleLiHtml = "<li>"
|
||||
+ "<a rel='nofollow' title='" + title + "' href='" + latkeConfig.servePath + article.articlePermalink + "'>"
|
||||
+ title + "</a></li>"
|
||||
listHtml += articleLiHtml
|
||||
}
|
||||
|
||||
var relevantArticleListHtml = headTitle
|
||||
+ "<ul class='marginLeft12'>"
|
||||
+ listHtml + "</ul>";
|
||||
$("#relevantArticles").append(relevantArticleListHtml);
|
||||
},
|
||||
error: function () {
|
||||
$("#relevantArticles").remove();
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* @description 加载站外相关文章
|
||||
* @param {String} tags 文章 tags
|
||||
* @param {String} headTitle 站外相关文章标题
|
||||
*/
|
||||
loadExternalRelevantArticles: function (tags, headTitle) {
|
||||
var tips = this.tips;
|
||||
try {
|
||||
$.ajax({
|
||||
url: "https://rhythm.b3log.org/get-articles-by-tags.do?tags=" + tags
|
||||
+ "&blogHost=" + tips.blogHost + "&paginationPageSize=" + tips.externalRelevantArticlesDisplayCount,
|
||||
type: "GET",
|
||||
cache: true,
|
||||
dataType: "jsonp",
|
||||
error: function () {
|
||||
$("#externalRelevantArticles").remove();
|
||||
},
|
||||
success: function (data, textStatus) {
|
||||
var articles = data.articles;
|
||||
if (!articles || 0 === articles.length) {
|
||||
$("#externalRelevantArticles").remove();
|
||||
return;
|
||||
}
|
||||
var listHtml = "";
|
||||
for (var i = 0; i < articles.length; i++) {
|
||||
var article = articles[i];
|
||||
var title = article.articleTitle;
|
||||
var articleLiHtml = "<li>"
|
||||
+ "<a rel='nofollow' title='" + title + "' target='_blank' href='" + article.articlePermalink + "'>"
|
||||
+ title + "</a></li>"
|
||||
listHtml += articleLiHtml
|
||||
}
|
||||
|
||||
var titleHTML = headTitle ? headTitle : "<h4>" + tips.externalRelevantArticles1Label + "</h4>";
|
||||
var randomArticleListHtml = titleHTML
|
||||
+ "<ul class='marginLeft12'>"
|
||||
+ listHtml + "</ul>";
|
||||
$("#externalRelevantArticles").append(randomArticleListHtml);
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
// 忽略相关文章加载异常:load script error
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 提交评论
|
||||
* @param {String} commentId 回复评论时的评论 id
|
||||
* @param {String} state 区分回复文章还是回复评论的标识
|
||||
*/
|
||||
submitComment: function (commentId, state, reply) {
|
||||
this.currentCommentId = commentId; // iadd
|
||||
if (!state) {
|
||||
state = '';
|
||||
}
|
||||
var that = this,
|
||||
tips = this.tips,
|
||||
type = "article";
|
||||
if (tips.externalRelevantArticlesDisplayCount === undefined) {
|
||||
type = "page";
|
||||
}
|
||||
|
||||
if (this.validateComment(state)) {
|
||||
$("#submitCommentButton" + state).attr("disabled", "disabled");
|
||||
$("#commentErrorTip" + state).show().html(this.tips.loadingLabel);
|
||||
var requestJSONObject = {
|
||||
"oId": tips.oId,
|
||||
"commentContent": $("#comment" + state).val().replace(/(^\s*)|(\s*$)/g, "")
|
||||
};
|
||||
|
||||
if (!Util.isLoggedIn()) {
|
||||
requestJSONObject = {
|
||||
"oId": tips.oId,
|
||||
"commentContent": $("#comment" + state).val().replace(/(^\s*)|(\s*$)/g, ""),
|
||||
"commentEmail": $("#commentEmail" + state).val(),
|
||||
"commentURL": Util.proessURL($("#commentURL" + state).val().replace(/(^\s*)|(\s*$)/g, "")),
|
||||
"commentName": $("#commentName" + state).val().replace(/(^\s*)|(\s*$)/g, ""),
|
||||
"captcha": $("#commentValidate" + state).val()
|
||||
};
|
||||
Cookie.createCookie("commentName", requestJSONObject.commentName, 365);
|
||||
Cookie.createCookie("commentEmail", requestJSONObject.commentEmail, 365);
|
||||
Cookie.createCookie("commentURL", $("#commentURL" + state).val().replace(/(^\s*)|(\s*$)/g, ""), 365);
|
||||
}
|
||||
|
||||
if (state === "Reply" || reply) { // iadd
|
||||
requestJSONObject.commentOriginalCommentId = commentId;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: latkeConfig.servePath + "/add-" + type + "-comment.do",
|
||||
cache: false,
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify(requestJSONObject),
|
||||
success: function (result) {
|
||||
$("#submitCommentButton" + state).removeAttr("disabled");
|
||||
if (!result.sc) {
|
||||
$("#commentErrorTip" + state).html(result.msg);
|
||||
$("#commentValidate" + state).val('');
|
||||
$("#captcha" + state).click();
|
||||
if (!Util.isLoggedIn()) {
|
||||
$("#captcha" + state).attr("src", latkeConfig.servePath + "/captcha.do?code=" + Math.random());
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$("#comment" + state).val(result.commentContent); // Server processed XSS
|
||||
$("#commentName" + state).val(result.commentName); // Server processed XSS
|
||||
|
||||
result.replyNameHTML = "";
|
||||
if (!Util.isLoggedIn()) {
|
||||
$("#captcha" + state).attr("src", latkeConfig.servePath + "/captcha.do?code=" + Math.random());
|
||||
if ($("#commentURL" + state).val().replace(/\s/g, "") === "") {
|
||||
result.replyNameHTML = '<a>' + $("#commentName" + state).val() + '</a>';
|
||||
} else {
|
||||
result.replyNameHTML = '<a href="' + Util.proessURL($("#commentURL" + state).val()) +
|
||||
'" target="_blank">' + $("#commentName" + state).val() + '</a>';
|
||||
}
|
||||
result.userName = result.commentName;
|
||||
} else {
|
||||
result.replyNameHTML = '<a href="' + window.location.host +
|
||||
'" target="_blank">' + Util.getUserName() + '</a>';
|
||||
result.userName = Util.getUserName();
|
||||
}
|
||||
|
||||
if (typeof(addComment) === "undefined") { // https://github.com/b3log/solo/issues/12246
|
||||
that.addCommentAjax(Util.replaceEmString(result.cmtTpl), state);
|
||||
} else { // 1.9.0 向后兼容 iadd
|
||||
that.addCommentAjax(addComment(result, state, reply), state);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 添加回复评论表单
|
||||
* @param {String} id 被回复的评论 id
|
||||
* @param {String} commentFormHTML 评论表单HTML
|
||||
* @param {String} endHTML 判断该表单使用 table 还是 div 标签,然后进行构造
|
||||
*/
|
||||
addReplyForm: function (id, commentFormHTML, endHTML) {
|
||||
var that = this;
|
||||
if (id === this.currentCommentId) {
|
||||
if ($("#commentNameReply").val() === "") {
|
||||
$("#commentNameReply").focus();
|
||||
} else if ($("#commentEmailReply").val() === "") {
|
||||
$("#commentEmailReply").focus();
|
||||
} else {
|
||||
$("#commentReply").focus();
|
||||
}
|
||||
return;
|
||||
}
|
||||
$("#replyForm").remove();
|
||||
endHTML = endHTML ? endHTML : "";
|
||||
if (endHTML === "</div>") {
|
||||
$("#" + id).append(commentFormHTML + $("#commentForm").html() + endHTML);
|
||||
} else {
|
||||
$("#" + id).append(commentFormHTML + $("#commentForm").html() + "</table>" + endHTML);
|
||||
}
|
||||
|
||||
// change id, bind event and set value
|
||||
$("#replyForm input, #replyForm textarea").each(function () {
|
||||
this.id = this.id + "Reply";
|
||||
});
|
||||
$("#commentNameReply").val(Cookie.readCookie("commentName"));
|
||||
$("#commentEmailReply").val(Cookie.readCookie("commentEmail"));
|
||||
var $label = $("#replyForm #commentURLLabel");
|
||||
if ($label.length === 1) {
|
||||
$label.attr("id", "commentURLLabelReply");
|
||||
}
|
||||
|
||||
$("#commentURLReply").val(Cookie.readCookie("commentURL"));
|
||||
$("#replyForm #emotions").attr("id", "emotionsReply");
|
||||
this.insertEmotions("Reply");
|
||||
$("#commentReply").unbind().keypress(function (event) {
|
||||
if (event.keyCode === 13 && event.ctrlKey) {
|
||||
that.submitComment(id, 'Reply');
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
$("#commentValidateReply").unbind().keypress(function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
that.submitComment(id, 'Reply');
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
$("#replyForm #captcha").attr("id", "captchaReply").attr("src", latkeConfig.servePath + "/captcha.do?" + new Date().getTime()).click(function () {
|
||||
$(this).attr("src", latkeConfig.servePath + "/captcha.do?code=" + Math.random());
|
||||
});
|
||||
$("#replyForm #commentErrorTip").attr("id", "commentErrorTipReply").html("").hide();
|
||||
$("#replyForm #submitCommentButton").attr("id", "submitCommentButtonReply");
|
||||
$("#replyForm #submitCommentButtonReply").unbind("click").removeAttr("onclick").click(function () {
|
||||
that.submitComment(id, 'Reply');
|
||||
});
|
||||
if ($("#commentNameReply").val() === "") {
|
||||
$("#commentNameReply").focus();
|
||||
} else if ($("#commentEmailReply").val() === "") {
|
||||
$("#commentEmailReply").focus();
|
||||
} else {
|
||||
$("#commentReply").focus();
|
||||
}
|
||||
|
||||
this.currentCommentId = id;
|
||||
},
|
||||
/*
|
||||
* @description 隐藏回复评论的浮出层
|
||||
* @parma {String} id 被回复的评论 id
|
||||
*/
|
||||
hideComment: function (id) {
|
||||
$("#commentRef" + id).hide();
|
||||
},
|
||||
/*
|
||||
* @description 显示回复评论的浮出层
|
||||
* @parma {Dom} it 触发事件的 dom
|
||||
* @param {String} id 被回复的评论 id
|
||||
* @param {Int} top 位置相对浮出层的高度
|
||||
* @param {String} [parentTag] it 如果嵌入在 position 为 relative 的元素 A 中时,需取到 A 元素
|
||||
*/
|
||||
showComment: function (it, id, top, parentTag) {
|
||||
var positionTop = parseInt($(it).position().top);
|
||||
if (parentTag) {
|
||||
positionTop = parseInt($(it).parents(parentTag).position().top);
|
||||
}
|
||||
if ($("#commentRef" + id).length > 0) {
|
||||
// 此处重复设置 top 是由于评论为异步,原有回复评论的显示位置应往下移动
|
||||
$("#commentRef" + id).show().css("top", (positionTop + top) + "px");
|
||||
} else {
|
||||
var $refComment = $("#" + id).clone();
|
||||
$refComment.addClass("comment-body-ref").attr("id", "commentRef" + id);
|
||||
$refComment.find("#replyForm").remove();
|
||||
$("#comments").append($refComment);
|
||||
$("#commentRef" + id).css("top", (positionTop + top) + "px");
|
||||
}
|
||||
},
|
||||
/*
|
||||
* @description 回复不刷新,将回复内容异步添加到评论列表中
|
||||
* @parma {String} commentHTML 回复内容 HTML
|
||||
* @param {String} state 用于区分评论文章还是回复评论
|
||||
*/
|
||||
addCommentAjax: function (commentHTML, state) {
|
||||
if ($("#comments").children().length > 0) {
|
||||
$($("#comments").children()[0]).before(commentHTML);
|
||||
} else {
|
||||
$("#comments").html(commentHTML);
|
||||
}
|
||||
|
||||
if (state === "") {
|
||||
$("#commentErrorTip").html("").hide();
|
||||
$("#comment").val("");
|
||||
$("#commentValidate").val("");
|
||||
$("#captcha").attr("src", latkeConfig.servePath + "/captcha.do?code=" + Math.random());
|
||||
} else {
|
||||
$("#replyForm").remove();
|
||||
}
|
||||
window.location.hash = "#comments";
|
||||
}
|
||||
});
|
|
@ -0,0 +1,30 @@
|
|||
(function() {
|
||||
var wemsg = function(smsg) {
|
||||
layer.msg(smsg, { time: 2000 });
|
||||
},
|
||||
xcookie = function(name) {
|
||||
return Cookie.readCookie(name);
|
||||
},
|
||||
ccookie = function(name, value, days) {
|
||||
Cookie.createCookie(name, value, days);
|
||||
};
|
||||
if ($("body").width() > 750 && xcookie("showTips") == "" && xcookie("isShowTips") == "" && top.location.pathname == "/" && navigator.cookieEnabled) {
|
||||
layer.confirm(`客官您好,<b>${ $("#logofont").text() }</b>欢迎您的访问,已默认为您开启图标悬浮提示,是否需要显示悬浮提示?`, {
|
||||
btn: ['留着吧', '消失一周', '再想想'],
|
||||
closeBtn: false,
|
||||
time: 9999,
|
||||
title: false,
|
||||
success: function(layero) {
|
||||
layero.find('.layui-layer-btn .layui-layer-btn0').css({ "border-color": "#333", "background-color": "#666" });
|
||||
}
|
||||
}, function() {
|
||||
ccookie("isShowTips", "1", 90);
|
||||
wemsg('<b>好嘞~</b>');
|
||||
}, function() {
|
||||
ccookie("showTips", "0", 7);
|
||||
wemsg('<b><i>7</i> 天内访问将不再提示!<b>');
|
||||
}, function() {
|
||||
layer.closeAll();
|
||||
});
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,82 @@
|
|||
/* Copyright (c) 2010-2016, b3log.org & hacpai.com Licensed under the Apache License, Version 2.0 (the "License"); */
|
||||
/**
|
||||
* @fileoverview util and every page should be used.
|
||||
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
|
||||
* @version 1.2.0.0, Nov 3, 2015
|
||||
*/
|
||||
/**
|
||||
* @description yilia 皮肤脚本
|
||||
* @static
|
||||
*/
|
||||
var Yilia = {
|
||||
/**
|
||||
* @description 页面初始化
|
||||
*/
|
||||
init: function () {
|
||||
Util.killIE();
|
||||
|
||||
this._initToc();
|
||||
this.resetTags();
|
||||
|
||||
$(window).scroll(function () {
|
||||
if ($("article").length > 0 && $("article.post").length === 0) {
|
||||
$("article:not(.show)").each(function () {
|
||||
if ($(this).offset().top <= $(window).scrollTop() + $(window).height() - $(this).height() / 7) {
|
||||
$(this).addClass("show");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ($(window).scrollTop() > $(window).height()) {
|
||||
$(".icon-goup").show();
|
||||
} else {
|
||||
$(".icon-goup").hide();
|
||||
}
|
||||
if (($(document).height() - $("body").height() - 300) < $(window).scrollTop()) {
|
||||
$("#backBtm").hide();
|
||||
} else {
|
||||
$("#backBtm").show();
|
||||
}
|
||||
|
||||
if ($("article.post").length === 1) {
|
||||
$("article.post").addClass('show');
|
||||
}
|
||||
});
|
||||
|
||||
$(window).scroll();
|
||||
},
|
||||
_initToc: function () {
|
||||
if ($('.b3-solo-list li').length === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$('.side footer').after('<div class="toc"><a href="javascript:$(\'.side .toc\').hide()" class="close">X</a></div>');
|
||||
|
||||
$('.side .toc a').after($('.b3-solo-list'));
|
||||
|
||||
$('.side .toc-btn').show();
|
||||
},
|
||||
resetTags: function () {
|
||||
$("a.tag").each(function (i) {
|
||||
$(this).addClass("color" + Math.ceil(Math.random() * 4));
|
||||
});
|
||||
},
|
||||
share: function () {
|
||||
$(".share span").click(function () {
|
||||
var key = $(this).data("type");
|
||||
var title = encodeURIComponent($("title").text()),
|
||||
url = $(".post-title a").attr('href') ? $(".post-title a").attr('href') : location,
|
||||
pic = $(".post-content img:eq(0)").attr("src");
|
||||
var urls = {};
|
||||
urls.qq = "http://connect.qq.com/widget/shareqq/index.html?title=" + title + "&url=" + url;
|
||||
urls.tencent = "http://share.v.t.qq.com/index.php?c=share&a=index&title=" + title +
|
||||
"&url=" + url + "&pic=" + pic;
|
||||
urls.weibo = "http://v.t.sina.com.cn/share/share.php?title=" +
|
||||
title + "&url=" + url + "&pic=" + pic;
|
||||
urls.google = "https://plus.google.com/share?url=" + url;
|
||||
urls.twitter = "https://twitter.com/intent/tweet?status=" + title + " " + url;
|
||||
window.open(urls[key], "_blank", "top=100,left=200,width=720,height=618");
|
||||
});
|
||||
}
|
||||
};
|
||||
Yilia.init();
|
|
@ -0,0 +1,2 @@
|
|||
/* Copyright (c) 2010-2016, b3log.org & hacpai.com Licensed under the Apache License, Version 2.0 (the "License");
|
||||
*/var Yilia={init:function(){Util.killIE(),this._initToc(),this.resetTags(),$(window).scroll(function(){$("article").length>0&&0===$("article.post").length&&$("article:not(.show)").each(function(){$(this).offset().top<=$(window).scrollTop()+$(window).height()-$(this).height()/13&&$(this).addClass("show")}),$(window).scrollTop()>$(window).height()?$(".icon-goup").show():$(".icon-goup").hide(), (($(document).height() - $("body").height() - 300) < $(window).scrollTop()) ? $("#backBtm").hide() : $("#backBtm").show(), 1===$("article.post").length&&$("article.post").addClass("show")}),$(window).scroll()},_initToc:function(){return 0!==$(".b3-solo-list li").length&&($(".side footer").after('<div class="toc"><a href="javascript:hideToc();" class="close iconfont icon-close2"></a></div>'),$(".side .toc a").after($(".b3-solo-list")),void $(".side .toc-btn").show())},resetTags:function(){$("a.tag").each(function(t){$(this).addClass("color"+Math.ceil(3*Math.random()))})},share:function(){$(".share span").click(function(){var t=$(this).data("type"),i=encodeURIComponent($("title").text()+" "+$("meta[name=description]").attr("content")),o=$(".post-title a").attr("href")?$(".post-title a").attr("href"):location,img=($("article.post img:eq(1)").length==0?$("article.post img:eq(0)"):$("article.post img:eq(1)")),e=$(img).attr("src"),s={};s.qq = "http://connect.qq.com/widget/shareqq/index.html?title="+i+"&url="+o;s.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+i+"&url="+o+"&pic="+e,s.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+o+"&pic="+e,s.google="https://plus.google.com/share?url="+o,s.twitter="https://twitter.com/intent/tweet?status="+i+" "+o,window.open(s[t],"_blank","top=100,left=200,width=720,height=618")})}};Yilia.init();
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Copyright (c) 2010-2016, 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: B3log Solo language configurations(en_US).
|
||||
# Version: 1.1.0.1, Oct 11, 2016
|
||||
# Author: Liyuan Li
|
||||
#
|
||||
|
||||
tocLabel=Article ToC
|
||||
subscribeLabel=Subscribe
|
||||
dynamicLabel=Dynamic
|
||||
adminConsoleLabel=Admin
|
||||
adminIndexLabel=Admin Index
|
||||
postArticleLabel=Post
|
||||
articleListLabel=Articles
|
||||
commentListLabel=Comments
|
||||
draftListLabel=Drafts
|
||||
userManageLabel=Users
|
||||
commonUserLabel=Common User
|
||||
addUserLabel=Add User
|
||||
updateUserLabel=Update User
|
||||
linkManagementLabel=Links
|
||||
pluginMgmtLabel=Plugins
|
||||
pluginNameLabel=Name
|
||||
versionLabel=Version
|
||||
statusLabel=Status
|
||||
enabledLabel=Enabled
|
||||
disabledLabel=Disabled
|
||||
enableLabel=Enable
|
||||
disableLabel=Disable
|
||||
preferenceLabel=Preference
|
||||
localeString1Label=Language:
|
||||
timeZoneId1Label=Time Zone:
|
||||
adminLabel=Admin
|
||||
administratorLabel=Administrator
|
||||
loginLabel=Login
|
||||
logoutLabel=Logout
|
||||
initLabel=Initial
|
||||
popTagsLabel=Popular Tags
|
||||
tag1Label=Tag:
|
||||
tags1Label=Tags:
|
||||
recentArticlesLabel=Recent Articles
|
||||
recentCommentsLabel=Recent Comments
|
||||
postCommentsLabel=Post Comment
|
||||
mostCommentArticlesLabel=Most Comment Articles
|
||||
mostViewCountArticlesLabel=Most View Articles
|
||||
em00Label=Smile
|
||||
em01Label=Laughter
|
||||
em02Label=Happy
|
||||
em03Label=Sad
|
||||
em04Label=Cry
|
||||
em05Label=No Comments
|
||||
em06Label=Fidget
|
||||
em07Label=Angry
|
||||
em08Label=Look Around
|
||||
em09Label=Surprise
|
||||
em10Label=Cool
|
||||
em11Label=Cheeky
|
||||
em12Label=Heart
|
||||
em13Label=Heart Broken
|
||||
em14Label=Devil
|
||||
linkLabel=Friend Links
|
||||
sumLabel=
|
||||
pageLabel=Page
|
||||
commentLabel=Comment
|
||||
linkTitleLabel=Link Title
|
||||
linkTitle1Label=Title:
|
||||
updateLabel=Update
|
||||
removeLabel=Remove
|
||||
putTopLabel=Put Top
|
||||
cancelPutTopLabel=Cancel Put Top
|
||||
downloadCountLabel=Count
|
||||
sizeLabel=Size
|
||||
uploadDateLabel=Upload Date
|
||||
downloadURLLabel=Download URL
|
||||
downloadLabel=Download
|
||||
createDateLabel=Create Date
|
||||
updateDateLabel=Update Date
|
||||
titleLabel=Title
|
||||
title1Label=Title:
|
||||
content1Label=Content:
|
||||
abstract1Label=Summary:
|
||||
publishLabel=Publish
|
||||
unPublishLabel=Un Publish
|
||||
urlLabel=URL
|
||||
url1Label=URL (start protocol, e.g.: http://):
|
||||
addLinkLabel=Add Link
|
||||
updateLinkLabel=Update Link
|
||||
archiveLabel=Archive
|
||||
archive1Label=archive:
|
||||
yearLabel=
|
||||
monthLabel=
|
||||
pageLabel=Page
|
||||
pageMgmtLabel=Pages
|
||||
othersLabel=Others
|
||||
fileListLabel=Files
|
||||
submitUploadLabel=Upload
|
||||
fileNameLabel=File Name
|
||||
paramSettingsLabel=Parameters
|
||||
skinLabel=Skins
|
||||
signLabel=Signs
|
||||
sign1Label=Signs:
|
||||
noSignLabel=No Signs
|
||||
signIsNullLabel=This Sign is Null
|
||||
statisticLabel=Blog Statistic
|
||||
viewLabel=View
|
||||
countLabel=Posts
|
||||
viewCount1Label=View Count:
|
||||
articleCount1Label=Article Count:
|
||||
commentCountLabel=Comment Count
|
||||
commentCount1Label=Comment Count:
|
||||
commentEmotions1Label=Emotions:
|
||||
commentEmotionsLabel=Emotions
|
||||
commentName1Label=Name:
|
||||
commentNameLabel=Name
|
||||
commentEmail1Label=Email:
|
||||
commentEmailLabel=Email
|
||||
commentURL1Label=URL:
|
||||
commentURLLabel=URL
|
||||
commentContent1Label=Content:
|
||||
commentContentLabel=Content
|
||||
getDateLabel=Get Date
|
||||
getArticleLabel=Get Article
|
||||
selectDateLabel=Select Date
|
||||
selectDate1Label=Select Date:
|
||||
importLabel=Import
|
||||
chooseBlog1Label=Choose Blog:
|
||||
blogArticleImportLabel=Article Import
|
||||
userName1Label=Username:
|
||||
userPassword1Label=Password:
|
||||
categoryLabel=Category
|
||||
noticeBoard1Label=Notice Board:
|
||||
noticeBoardLabel=Notice Board
|
||||
htmlhead1Label=HTML head:
|
||||
indexTagDisplayCnt1Label=Index Tag Display Count:
|
||||
indexRecentArticleDisplayCnt1Label=Recent Article Display Count:
|
||||
indexRecentCommentDisplayCnt1Label=Recent Comment Display Count:
|
||||
indexMostCommentArticleDisplayCnt1Label=Most Comment Article Display Count:
|
||||
indexMostViewArticleDisplayCnt1Label=Most View Article Display Count:
|
||||
relevantArticlesDisplayCnt1Label=Relevant Article Display Count:
|
||||
randomArticlesDisplayCnt1Label=Random Article Display Count:
|
||||
externalRelevantArticlesDisplayCnt1Label=External Relevant Article Display Count:
|
||||
windowSize1Label=Pagination Window Size:
|
||||
pageSize1Label=Pagination Page Size:
|
||||
blogTitle1Label=Blog Title:
|
||||
blogSubtitle1Label=Blog Subtitle:
|
||||
blogHost1Label=Blog Host:
|
||||
submmitCommentLabel=Commit Comment
|
||||
saveLabel=Save
|
||||
tagLabel=Tag
|
||||
tagsLabel=Tags
|
||||
importedLabel=Imported
|
||||
captcha1Label=Captcha:
|
||||
captchaLabel=Captcha
|
||||
indexLabel=Index
|
||||
nextArticle1Label=Next:
|
||||
previousArticle1Label=Previous:
|
||||
updatedLabel=Updated!
|
||||
topArticleLabel=Top!
|
||||
CSDNBlogLabel=CSDN Blog
|
||||
BlogJavaLabel=BlogJava
|
||||
CnBlogsLabel=CnBlogs
|
||||
previousPageLabel=Previous Page
|
||||
nextPagePabel=Next Page
|
||||
firstPageLabel=First Page
|
||||
lastPageLabel=Last Page
|
||||
returnTo1Label=Return to:
|
||||
tencentLabel=Tencent
|
||||
appKey1Label=App Key:
|
||||
appSecret1Label=App Secret:
|
||||
postToTencentMicroblogWhilePublishArticleLabel=Post to Tencent microblog while publish an article:
|
||||
postToCommunityLabel=Post to Community:
|
||||
authorizeTencentMicroblog1Label=Click to authorize:
|
||||
googleLabel=Google
|
||||
OAuthConsumerSecret1Label=OAuth Consumer Secret:
|
||||
atomLabel=Atom
|
||||
relevantArticles1Label=Relevant Articles:
|
||||
randomArticles1Label=Random Articles:
|
||||
externalRelevantArticles1Label=External Relevant Articles:
|
||||
metaKeywords1Label=Meta Keywords:
|
||||
metaDescription1Label=Meta Description:
|
||||
removeUnusedTagsLabel=Remove Unused Tags
|
||||
goTopLabel=Top
|
||||
permalink1Label=Permalink:
|
||||
permalinkLabel=Permalink
|
||||
b3logLabel=<span style="color: orange;">B</span><span style="color: blue;"><sup>3</sup></span><span style="color: green;">L</span><span style="color: red;">O</span><span style="color: blue;">G</span>
|
||||
killBrowserLabel=<h2>Let's kill outdated and insecure browser!</h2><p>Let's kill outdated and insecure browser for browser evolution, human progress and better experience.</p><p>You can download</p><ul><li><a href="http://www.mozilla.com/" target="_blank">Firefox</a></li><li><a href="http://www.google.com/chrome" target="_blank">Chrome</a></li><li><a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie" target="_blank">IE8 / IE9</a></li><li><a href="http://www.maxthon.com/" target="_blank">Maxthon</a> and <a href="http://www.google.com" target="_blank">so on</a>.</li></ul>
|
||||
readmoreLabel=Read more\u00bb
|
||||
readmore2Label=Read more
|
||||
replyLabel=Reply\u00bb
|
||||
homeLabel=Home
|
||||
enableArticleUpdateHint1Label=Enable Article Update Hint:
|
||||
allowVisitDraftViaPermalink1Label=Allow Visit Draft Via Link:
|
||||
author1Label=Author:
|
||||
authorLabel=Author
|
||||
keyOfSolo1Label=Solo Key:
|
||||
articleLabel=Article
|
||||
tagArticlesLabel=Tag Articles
|
||||
dateArticlesLabel=Archive Date Articles
|
||||
authorArticlesLabel=Author Articles
|
||||
indexArticleLabel=Index Articles
|
||||
allTagsLabel=Tag Cloud
|
||||
customizedPageLabel=Customized Page
|
||||
killBrowserPageLabel=Kill Browser Page
|
||||
pageNumLabel=Page Number
|
||||
####
|
||||
forbiddenLabel=Forbidden Access!
|
||||
sorryLabel=Sorry!
|
||||
notFoundLabel=Not Found!
|
||||
unPulbishSuccLabel=Un Publish Successfully
|
||||
unPulbishFailLabel=Un Publish Fail
|
||||
removeSuccLabel=Remove Successfully
|
||||
removeFailLabel=Remove Fail
|
||||
removeUserFailSkinNeedMulUsersLabel=Remove Fail, the current skin need multiple users!
|
||||
putTopSuccLabel=Put Top Successfully
|
||||
putTopFailLabel=Put Top Fail
|
||||
cancelTopSuccLabel=Cancel Top Successfully
|
||||
cancelTopFailLabel=Cancel Top Fail
|
||||
addSuccLabel=Add Successfully
|
||||
addFailLabel=Add Fail
|
||||
updateSuccLabel=Update Successfully
|
||||
updateFailLabel=Update Fail
|
||||
updatePreferenceFailNeedMulUsersLabel=Update Fail, the selected skin need multiple users!
|
||||
setFailLabel=Set Fail
|
||||
setSuccLabel=Set Successfully
|
||||
getFailLabel=Get Fail
|
||||
noSettingLabel=No Setting
|
||||
getSuccLabel=Get Successfully
|
||||
importSuccLabel=Import Successfully :-)
|
||||
importFailLabel=Some Import Fail %>_<%
|
||||
noCommentLabel=No Comment
|
||||
captchaErrorLabel=Captcha Error
|
||||
inputErrorLabel=Input Error!
|
||||
gotoLabel=Go
|
||||
nameEmptyLabel=Username is empty
|
||||
passwordEmptyLabel=Password is empty
|
||||
blogEmptyLabel=Blogging service is empty
|
||||
blogArticleEmptyLabel=Please select articles
|
||||
nameTooLongLabel=Sorry, your username must be between 2 and 20 characters long.
|
||||
mailCannotEmptyLabel=Mail is empty
|
||||
mailInvalidLabel=Mail is invalid
|
||||
commentContentCannotEmptyLabel=Sorry, your content must be between 2 and 500 characters long.
|
||||
captchaCannotEmptyLabel=Captcha is empty
|
||||
loadingLabel=Loading....
|
||||
titleEmptyLabel=Title is empty
|
||||
contentEmptyLabel=Content is empty
|
||||
orderEmptyLabel=Order is empty
|
||||
abstractEmptyLabel=Abstract is empty
|
||||
tagsEmptyLabel=Tags is empty
|
||||
addressEmptyLabel=Address is empty
|
||||
noAuthorizationURLLabel=Can not retrieve authorization URL from Google, please \
|
||||
make sure the <em>Consumer Secret</em> you typed in and then try again.
|
||||
duplicatedPermalinkLabel=Duplicated permalink!
|
||||
invalidPermalinkFormatLabel=Invalid permalink format!
|
||||
duplicatedEmailLabel=Duplicated email!
|
||||
refreshAndRetryLabel=Please refresh and try again!
|
||||
editorLeaveLabel=Content is not null, Do you leave\uff1f
|
||||
editorPostLabel=Content is not null, Do you clear\uff1f
|
||||
####
|
||||
confirmRemoveLabel=Are You Sure?
|
||||
confirmInitLabel=Are You Sure?
|
|
@ -0,0 +1,263 @@
|
|||
# Copyright (c) 2010-2016, b3log.org & hacpai.com Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# Description: B3log Solo default language configurations(zh_CN). Version: 1.1.0.1, Oct 11, 2016 Author: Liyuan Li
|
||||
tocLabel=\u6587\u7ae0\u76ee\u5f55
|
||||
subscribeLabel=\u8ba2\u9605
|
||||
dynamicLabel=\u52a8\u6001
|
||||
adminConsoleLabel=\u540e\u53f0\u7ba1\u7406
|
||||
adminIndexLabel=\u540e\u53f0\u9996\u9875
|
||||
postArticleLabel=\u53d1\u5e03\u6587\u7ae0
|
||||
articleListLabel=\u6587\u7ae0\u7ba1\u7406
|
||||
commentListLabel=\u8bc4\u8bba\u7ba1\u7406
|
||||
draftListLabel=\u8349\u7a3f\u5939
|
||||
userManageLabel=\u7528\u6237\u7ba1\u7406
|
||||
commonUserLabel=\u4e00\u822c\u7528\u6237
|
||||
addUserLabel=\u6dfb\u52a0\u7528\u6237
|
||||
updateUserLabel=\u66f4\u65b0\u7528\u6237
|
||||
linkManagementLabel=\u94fe\u63a5\u7ba1\u7406
|
||||
pluginMgmtLabel=\u63d2\u4ef6\u7ba1\u7406
|
||||
pluginNameLabel=\u63d2\u4ef6\u540d
|
||||
versionLabel=\u7248\u672c
|
||||
statusLabel=\u72b6\u6001
|
||||
enabledLabel=\u5df2\u542f\u7528
|
||||
disabledLabel=\u5df2\u7981\u7528
|
||||
enableLabel=\u542f\u7528
|
||||
disableLabel=\u7981\u7528
|
||||
preferenceLabel=\u504f\u597d\u8bbe\u5b9a
|
||||
localeString1Label=\u8bed\u8a00\uff1a
|
||||
timeZoneId1Label=\u65f6\u533a\uff1a
|
||||
adminLabel=\u7ba1\u7406
|
||||
administratorLabel=\u7ba1\u7406\u5458
|
||||
loginLabel=\u767b\u5f55
|
||||
logoutLabel=\u767b\u51fa
|
||||
initLabel=\u521d\u59cb\u5316
|
||||
popTagsLabel=\u5206\u7c7b\u6807\u7b7e
|
||||
tag1Label=\u6807\u7b7e\uff1a
|
||||
tags1Label=\u6807\u7b7e\uff1a
|
||||
recentArticlesLabel=\u6700\u65b0\u6587\u7ae0
|
||||
recentCommentsLabel=\u6700\u65b0\u8bc4\u8bba
|
||||
postCommentsLabel=\u53d1\u8868\u8bc4\u8bba
|
||||
mostCommentArticlesLabel=\u8bc4\u8bba\u6700\u591a\u7684\u6587\u7ae0
|
||||
mostViewCountArticlesLabel=\u8bbf\u95ee\u6700\u591a\u7684\u6587\u7ae0
|
||||
em00Label=\u5fae\u7b11
|
||||
em01Label=\u5927\u7b11
|
||||
em02Label=\u9ad8\u5174
|
||||
em03Label=\u60b2\u4f24
|
||||
em04Label=\u54ed\u6ce3
|
||||
em05Label=\u65e0\u8bed
|
||||
em06Label=\u70e6\u8e81
|
||||
em07Label=\u751f\u6c14
|
||||
em08Label=\u6211\u7785
|
||||
em09Label=\u60ca\u8bb6
|
||||
em10Label=\u9177
|
||||
em11Label=\u987d\u76ae
|
||||
em12Label=\u7231\u5fc3
|
||||
em13Label=\u5fc3\u788e
|
||||
em14Label=\u9b54\u9b3c
|
||||
linkLabel=\u53cb\u94fe
|
||||
sumLabel=\u5171
|
||||
pageLabel=\u9875
|
||||
commentLabel=\u8bc4\u8bba
|
||||
linkTitleLabel=\u94fe\u63a5\u6807\u9898
|
||||
linkTitle1Label=\u6807\u9898\uff1a
|
||||
updateLabel=\u66f4\u65b0
|
||||
removeLabel=\u5220\u9664
|
||||
putTopLabel=\u7f6e\u9876
|
||||
cancelPutTopLabel=\u53d6\u6d88\u7f6e\u9876
|
||||
downloadCountLabel=\u4e0b\u8f7d\u6b21\u6570
|
||||
sizeLabel=\u5927\u5c0f
|
||||
uploadDateLabel=\u4e0a\u4f20\u65e5\u671f
|
||||
downloadURLLabel=\u4e0b\u8f7d\u5730\u5740
|
||||
downloadLabel=\u4e0b\u8f7d
|
||||
createDateLabel=\u521b\u5efa\u65e5\u671f
|
||||
updateDateLabel=\u66f4\u65b0\u65e5\u671f
|
||||
titleLabel=\u6807\u9898
|
||||
title1Label=\u6807\u9898\uff1a
|
||||
content1Label=\u6b63\u6587\uff1a
|
||||
abstract1Label=\u6458\u8981\uff1a
|
||||
publishLabel=\u53d1\u5e03
|
||||
unPublishLabel=\u53d6\u6d88\u53d1\u5e03
|
||||
urlLabel=URL
|
||||
url1Label=URL (\u8bf7\u4ee5\u534f\u8bae\u5f00\u5934\uff0c\u5982: http://)\uff1a
|
||||
addLinkLabel=\u6dfb\u52a0\u94fe\u63a5
|
||||
updateLinkLabel=\u66f4\u65b0\u94fe\u63a5
|
||||
archiveLabel=\u5b58\u6863
|
||||
archive1Label=\u5b58\u6863\uff1a
|
||||
yearLabel=\u5e74
|
||||
monthLabel=\u6708
|
||||
blogSyncLabel=\u535a\u5ba2\u540c\u6b65
|
||||
pageLabel=\u9875\u9762
|
||||
pageMgmtLabel=\u9875\u9762\u7ba1\u7406
|
||||
othersLabel=\u5176\u4ed6
|
||||
fileListLabel=\u6587\u4ef6\u7ba1\u7406
|
||||
submitUploadLabel=\u4e0a\u4f20
|
||||
fileNameLabel=\u6587\u4ef6\u540d
|
||||
paramSettingsLabel=\u53c2\u6570\u8bbe\u7f6e
|
||||
skinLabel=\u76ae\u80a4
|
||||
signLabel=\u7b7e\u540d\u6863
|
||||
sign1Label=\u7b7e\u540d\u6863\uff1a
|
||||
noSignLabel=\u4e0d\u4f7f\u7528\u7b7e\u540d\u6863
|
||||
signIsNullLabel=\u8be5\u7b7e\u540d\u6863\u4e3a\u7a7a
|
||||
statisticLabel=\u535a\u5ba2\u7edf\u8ba1
|
||||
viewLabel=\u6d4f\u89c8
|
||||
countLabel=\u7bc7
|
||||
commentCountLabel=\u8bc4\u8bba\u6570
|
||||
commentEmotions1Label=\u8868\u60c5\uff1a
|
||||
commentEmotionsLabel=\u8868\u60c5
|
||||
commentName1Label=\u59d3\u540d\uff1a
|
||||
commentNameLabel=\u59d3\u540d
|
||||
commentEmail1Label=\u90ae\u7bb1\uff1a
|
||||
commentEmailLabel=\u90ae\u7bb1
|
||||
commentURL1Label=URL\uff1a
|
||||
commentURLLabel=URL
|
||||
commentContent1Label=\u8bc4\u8bba\u5185\u5bb9\uff1a
|
||||
commentContentLabel=\u8bc4\u8bba\u5185\u5bb9
|
||||
getDateLabel=\u83b7\u53d6\u65e5\u671f
|
||||
getArticleLabel=\u83b7\u53d6\u6587\u7ae0
|
||||
selectDateLabel=\u9009\u62e9\u65e5\u671f
|
||||
selectDate1Label=\u9009\u62e9\u65e5\u671f\uff1a
|
||||
importLabel=\u5bfc\u5165
|
||||
chooseBlog1Label=\u8bf7\u9009\u62e9\u9700\u8981\u7ba1\u7406\u7684\u535a\u5ba2\uff1a
|
||||
blogArticleImportLabel=\u6587\u7ae0\u5bfc\u5165
|
||||
blogSyncMgmtLabel=\u535a\u5ba2\u540c\u6b65\u7ba1\u7406
|
||||
syncMgmtLabel=\u540c\u6b65\u7ba1\u7406\u535a\u5ba2
|
||||
userName1Label=\u7528\u6237\u540d\uff1a
|
||||
userPassword1Label=\u5bc6\u7801\uff1a
|
||||
syncPostLabel=\u540c\u6b65\u53d1\u5e03
|
||||
syncUpdateLabel=\u540c\u6b65\u66f4\u65b0
|
||||
syncRemoveLabel=\u540c\u6b65\u5220\u9664
|
||||
categoryLabel=\u5206\u7c7b
|
||||
noticeBoard1Label=\u516c\u544a\uff1a
|
||||
noticeBoardLabel=\u516c\u544a
|
||||
htmlhead1Label=HTML head\uff1a
|
||||
indexTagDisplayCnt1Label= \u9996\u9875\u6807\u7b7e\u663e\u793a\u6570\uff1a
|
||||
indexRecentArticleDisplayCnt1Label=\u6700\u65b0\u6587\u7ae0\u663e\u793a\u6570\u76ee\uff1a
|
||||
indexRecentCommentDisplayCnt1Label=\u6700\u65b0\u8bc4\u8bba\u663e\u793a\u6570\u76ee\uff1a
|
||||
indexMostCommentArticleDisplayCnt1Label=\u8bc4\u8bba\u6700\u591a\u6587\u7ae0\u663e\u793a\u6570\u76ee\uff1a
|
||||
indexMostViewArticleDisplayCnt1Label=\u8bbf\u95ee\u6700\u591a\u6700\u591a\u6587\u7ae0\u663e\u793a\u6570\u76ee\uff1a
|
||||
relevantArticlesDisplayCnt1Label=\u76f8\u5173\u9605\u8bfb\u663e\u793a\u6570\u76ee\uff1a
|
||||
randomArticlesDisplayCnt1Label=\u968f\u673a\u9605\u8bfb\u663e\u793a\u6570\u76ee\uff1a
|
||||
externalRelevantArticlesDisplayCnt1Label=\u7ad9\u5916\u76f8\u5173\u9605\u8bfb\u663e\u793a\u6570\u76ee\uff1a
|
||||
windowSize1Label=\u5206\u9875\u9875\u7801\u6700\u5927\u5bbd\u5ea6\uff1a
|
||||
pageSize1Label=\u5206\u9875\u6bcf\u9875\u663e\u793a\u6587\u7ae0\u6570\uff1a
|
||||
blogTitle1Label=\u535a\u5ba2\u6807\u9898\uff1a
|
||||
blogSubtitle1Label=\u535a\u5ba2\u5b50\u6807\u9898\uff1a
|
||||
blogHost1Label=\u535a\u5ba2\u5730\u5740\uff1a
|
||||
submmitCommentLabel=\u63d0\u4ea4\u8bc4\u8bba
|
||||
saveLabel=\u4fdd\u5b58
|
||||
tagLabel=\u6807\u7b7e
|
||||
tagsLabel=\u6807\u7b7e
|
||||
importedLabel=\u5df2\u5bfc\u5165
|
||||
captcha1Label=\u9a8c\u8bc1\u7801\uff1a
|
||||
captchaLabel=\u9a8c\u8bc1\u7801
|
||||
indexLabel=\u9996\u9875
|
||||
nextArticle1Label=\u65b0\u4e00\u7bc7\uff1a
|
||||
previousArticle1Label=\u65e7\u4e00\u7bc7\uff1a
|
||||
updatedLabel=\u6709\u66f4\u65b0\uff01
|
||||
topArticleLabel=\u7f6e\u9876\uff01
|
||||
CSDNBlogLabel=CSDN \u535a\u5ba2
|
||||
BlogJavaLabel=BlogJava
|
||||
CnBlogsLabel=\u535a\u5ba2\u56ed
|
||||
previousPageLabel=\u4e0a\u4e00\u9875
|
||||
nextPagePabel=\u4e0b\u4e00\u9875
|
||||
firstPageLabel=\u7b2c\u4e00\u9875
|
||||
lastPageLabel=\u6700\u540e\u4e00\u9875
|
||||
returnTo1Label=\u8fd4\u56de\uff1a
|
||||
tencentLabel=\u817e\u8baf
|
||||
appKey1Label=App Key:
|
||||
appSecret1Label=App Secret:
|
||||
postToTencentMicroblogWhilePublishArticleLabel=\u53d1\u6587\u7ae0\u65f6\u540c\u6b65\u5230\u817e\u8baf\u5fae\u535a\uff1a
|
||||
postToCommunityLabel=\u53d1\u5e03\u5230\u793e\u533a\uff1a
|
||||
authorizeTencentMicroblog1Label=\u70b9\u51fb\u56fe\u6807\u8fdb\u884c\u6388\u6743:
|
||||
googleLabel=Google
|
||||
OAuthConsumerSecret1Label=OAuth Consumer Secret\uff1a
|
||||
atomLabel=Atom
|
||||
relevantArticles1Label=\u76f8\u5173\u9605\u8bfb\uff1a
|
||||
randomArticles1Label=\u968f\u673a\u9605\u8bfb\uff1a
|
||||
externalRelevantArticles1Label=\u7ad9\u5916\u76f8\u5173\u9605\u8bfb\uff1a
|
||||
metaKeywords1Label=Meta Keywords:
|
||||
metaDescription1Label=Meta Description:
|
||||
removeUnusedTagsLabel=\u79fb\u9664\u672a\u4f7f\u7528\u6807\u7b7e
|
||||
goTopLabel=\u9876\u90e8
|
||||
permalink1Label=\u94fe\u63a5\uff1a
|
||||
permalinkLabel=\u94fe\u63a5
|
||||
b3logLabel=<span style="color: orange;">B</span><span style="color: blue;"><sup>3</sup></span><span style="color: green;">L</span><span style="color: red;">O</span><span style="color: blue;">G</span>
|
||||
killBrowserLabel=<h2>\u8ba9\u6211\u4eec\u653e\u5f03\u4f7f\u7528\u90a3\u4e9b\u8fc7\u65f6\u3001\u4e0d\u5b89\u5168\u7684\u6d4f\u89c8\u5668\u5427\uff01</h2><p>\u4e3a\u4e86\u8ba9\u6d4f\u89c8\u5668\u66f4\u597d\u7684\u53d1\u5c55\uff0c\u4eba\u7c7b\u66f4\u52a0\u7684\u8fdb\u6b65\uff0c\u62e5\u6709\u66f4\u597d\u7684\u4f53\u9a8c\uff0c\u8ba9\u6211\u4eec\u653e\u5f03\u4f7f\u7528\u90a3\u4e9b\u8fc7\u65f6\u3001\u4e0d\u5b89\u5168\u7684\u6d4f\u89c8\u5668\u3002</p>\u60a8\u53ef\u4ee5\u4e0b\u8f7d<ul><li><a href="http://www.mozilla.com/" target="_blank">\u706b\u72d0</a></li><li><a href="http://www.google.com/chrome" target="_blank">\u8c37\u6b4c\u6d4f\u89c8\u5668</a></li><li><a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie" target="_blank">IE8 / IE9</a></li><li><a href="http://www.maxthon.com/" target="_blank">\u9068\u6e38</a>\u6216\u8005<a href="http://www.google.com" target="_blank">\u5176\u5b83\u6d4f\u89c8\u5668</a>.</li></ul>
|
||||
readmoreLabel=\u9605\u8bfb\u66f4\u591a\u00bb
|
||||
readmore2Label=\u9605\u8bfb\u66f4\u591a
|
||||
replyLabel=\u56de\u590d\u00bb
|
||||
homeLabel=\u9996\u9875
|
||||
enableArticleUpdateHint1Label=\u542f\u7528\u6587\u7ae0\u66f4\u65b0\u63d0\u793a\uff1a
|
||||
allowVisitDraftViaPermalink1Label=\u5141\u8bb8\u901a\u8fc7\u94fe\u63a5\u8bbf\u95ee\u8349\u7a3f\uff1a
|
||||
author1Label=\u4f5c\u8005\uff1a
|
||||
authorLabel=\u4f5c\u8005
|
||||
keyOfSolo1Label=Solo Key\uff1a
|
||||
articleLabel=\u6587\u7ae0
|
||||
tagArticlesLabel=\u6807\u7b7e\u6587\u7ae0\u5217\u8868
|
||||
dateArticlesLabel=\u5b58\u6863\u6587\u7ae0\u5217\u8868
|
||||
authorArticlesLabel=\u4f5c\u8005\u6587\u7ae0\u5217\u8868
|
||||
indexArticleLabel=\u9996\u9875\u6587\u7ae0\u5217\u8868
|
||||
allTagsLabel=\u6807\u7b7e\u5899
|
||||
customizedPageLabel=\u81ea\u5b9a\u4e49\u9875\u9762
|
||||
killBrowserPageLabel=Kill Browser Page
|
||||
pageNumLabel=\u9875\u53f7
|
||||
####
|
||||
forbiddenLabel=\u64cd\u4f5c\u88ab\u7981\u6b62\uff01
|
||||
sorryLabel=\u5bf9\u4e0d\u8d77\uff01
|
||||
notFoundLabel=\u627e\u4e0d\u5230\uff01
|
||||
unPulbishSuccLabel=\u53d6\u6d88\u53d1\u5e03\u6210\u529f
|
||||
unPulbishFailLabel=\u53d6\u6d88\u53d1\u5e03\u5931\u8d25
|
||||
removeSuccLabel=\u5220\u9664\u6210\u529f
|
||||
removeFailLabel=\u5220\u9664\u5931\u8d25
|
||||
removeUserFailSkinNeedMulUsersLabel=\u5220\u9664\u5931\u8d25\uff0c\u5f53\u524d\u4f7f\u7528\u7684\u76ae\u80a4\u9700\u8981\u591a\u7528\u6237\u652f\u6301
|
||||
putTopSuccLabel=\u7f6e\u9876\u6210\u529f
|
||||
putTopFailLabel=\u7f6e\u9876\u5931\u8d25
|
||||
cancelTopSuccLabel=\u53d6\u6d88\u7f6e\u9876\u6210\u529f
|
||||
cancelTopFailLabel=\u53d6\u6d88\u7f6e\u9876\u5931\u8d25
|
||||
addSuccLabel=\u6dfb\u52a0\u6210\u529f
|
||||
addFailLabel=\u6dfb\u52a0\u5931\u8d25
|
||||
updateSuccLabel=\u66f4\u65b0\u6210\u529f
|
||||
updateFailLabel=\u66f4\u65b0\u5931\u8d25
|
||||
updatePreferenceFailNeedMulUsersLabel=\u66f4\u65b0\u5931\u8d25\uff0c\u9700\u8981\u591a\u7528\u6237\u624d\u80fd\u4f7f\u7528\u9009\u62e9\u7684\u76ae\u80a4
|
||||
setFailLabel=\u8bbe\u7f6e\u5931\u8d25
|
||||
setSuccLabel=\u8bbe\u7f6e\u6210\u529f
|
||||
getFailLabel=\u83b7\u53d6\u5931\u8d25
|
||||
noSettingLabel=\u8be5\u535a\u5ba2\u65e0\u8d26\u53f7\uff0c\u8bf7\u6dfb\u52a0
|
||||
getSuccLabel=\u83b7\u53d6\u6210\u529f
|
||||
importSuccLabel=\u5bfc\u5165\u6210\u529f :-)
|
||||
importFailLabel=\u90e8\u5206\u5bfc\u5165\u5931\u8d25 %>_<%
|
||||
noCommentLabel=\u6682\u65e0\u8bc4\u8bba
|
||||
captchaErrorLabel=\u9a8c\u8bc1\u7801\u9519\u8bef
|
||||
inputErrorLabel=\u8f93\u5165\u9519\u8bef\uff01
|
||||
gotoLabel=\u8df3\u8f6c
|
||||
nameEmptyLabel=\u59d3\u540d\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
passwordEmptyLabel=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
blogEmptyLabel=\u8bf7\u9009\u62e9\u535a\u5ba2\u670d\u52a1\uff01
|
||||
blogArticleEmptyLabel=\u8bf7\u9009\u62e9\u9700\u8981\u5bfc\u5165\u7684\u6587\u7ae0
|
||||
nameTooLongLabel=\u59d3\u540d\u53ea\u80fd\u4e3a 2 \u5230 20 \u4e2a\u5b57\u7b26\uff01
|
||||
mailCannotEmptyLabel=\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
mailInvalidLabel=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e\uff01
|
||||
commentContentCannotEmptyLabel=\u8bc4\u8bba\u5185\u5bb9\u53ea\u80fd\u4e3a 2 \u5230 500 \u4e2a\u5b57\u7b26\uff01
|
||||
captchaCannotEmptyLabel=\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
loadingLabel=\u8f7d\u5165\u4e2d....
|
||||
titleEmptyLabel=\u6807\u9898\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
contentEmptyLabel=\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
orderEmptyLabel=\u5e8f\u53f7\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
abstractEmptyLabel=\u6458\u8981\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
tagsEmptyLabel=\u6807\u7b7e\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
addressEmptyLabel=\u5730\u5740\u4e0d\u80fd\u4e3a\u7a7a\uff01
|
||||
noAuthorizationURLLabel=\u4ece Google \u83b7\u53d6\u6388\u6743\u5730\u5740\u5931\u8d25\uff0c\u8bf7\u786e\u8ba4\u60a8\u8f93\u5165\u7684 \
|
||||
<em>Consumer Secret</em> \u662f\u6b63\u786e\u7684\uff0c\u7136\u540e\u8fdb\u884c\u91cd\u8bd5\u3002
|
||||
duplicatedPermalinkLabel=\u94fe\u63a5\u91cd\u590d\uff01
|
||||
invalidPermalinkFormatLabel=\u975e\u6cd5\u7684\u94fe\u63a5\u683c\u5f0f\uff01
|
||||
duplicatedEmailLabel=\u90ae\u4ef6\u5730\u5740\u91cd\u590d\uff01
|
||||
refreshAndRetryLabel=\u8bf7\u5237\u65b0\u91cd\u8bd5\uff01
|
||||
editorLeaveLabel=\u7f16\u8f91\u5668\u4e2d\u8fd8\u6709\u5185\u5bb9\uff0c\u662f\u5426\u79bb\u5f00\uff1f
|
||||
editorPostLabel=\u7f16\u8f91\u5668\u4e2d\u8fd8\u6709\u5185\u5bb9\uff0c\u662f\u5426\u6e05\u7a7a\uff1f
|
||||
####
|
||||
confirmRemoveLabel=\u786e\u5b9a\u5220\u9664\uff1f
|
||||
confirmInitLabel=\u786e\u5b9a\u8fdb\u884c\u521d\u59cb\u5316\u5417\uff1f
|
||||
#### CountInfo
|
||||
onlineVisitor1Label=\u5728\u7ebf\uff1a
|
||||
articleCount1Label=\u6587\u7ae0\uff1a
|
||||
commentCount1Label=\u8bc4\u8bba\uff1a
|
||||
viewCount1Label=\u6d4f\u89c8\uff1a
|
|
@ -0,0 +1,36 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<@head title="${linkLabel} - ${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${linkLabel}">
|
||||
<meta name="description" content="${metaDescription},${linkLabel}">
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "side.ftl">
|
||||
<main class="classify">
|
||||
<article>
|
||||
<header><h2><a rel="archive" href="/links.html"><li class="icontitle iconfont icon-lianjie"></li>${linkLabel}</a></h2></header>
|
||||
<#if 0 != links?size>
|
||||
<ul class="tags fn-clear">
|
||||
<#list links as link>
|
||||
<li>
|
||||
<a rel="friend" href="${link.linkAddress}" class="tag itip" id="link-${link_index}" lang="${link.linkDescription}" data-point="3" target="_blank">
|
||||
<img src="${faviconAPI}<#list link.linkAddress?split('/') as x><#if x_index=2>${x}<#break></#if></#list>" width="16" height="16"/>
|
||||
${link.linkTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</#if>
|
||||
<#-- 若使用请修改为自己的,建议使用草稿夹中的文章链接
|
||||
<footer>
|
||||
<h4><span class="iconfont icon-haoyou"></span>可爱的小伙伴可以在这 <a rel="archive" href="/befriendswithme.html">申请友链</a></h4>
|
||||
</footer>
|
||||
-->
|
||||
</article>
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,157 @@
|
|||
<#macro comments commentList article>
|
||||
<ul class="comments" id="comments">
|
||||
<#list commentList as comment>
|
||||
<li id="${comment.oId}">
|
||||
<img class="avatar" title="${comment.commentName}" src="${comment.commentThumbnailURL}">
|
||||
<div class="content">
|
||||
<div class="fn-clear post-meta">
|
||||
<span class="fn-left">
|
||||
<#if "http://" == comment.commentURL>
|
||||
<a>${comment.commentName}</a>
|
||||
<#else>
|
||||
<a href="${comment.commentURL}" rel="nofollow">${comment.commentName}</a>
|
||||
</#if>
|
||||
<#if comment.isReply>
|
||||
<span class="iconfont icon-anonymous-iconfont"></span>
|
||||
<a class="quote-link" href="${article.permalink}#${comment.commentOriginalCommentId}"
|
||||
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
|
||||
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
|
||||
>${comment.commentOriginalCommentName}</a>
|
||||
</#if>
|
||||
<time>${comment.commentDate?string("yyyy-MM-dd")}</time>
|
||||
</span>
|
||||
<#if article.commentable>
|
||||
<a class="fn-right itip" lang="${replyLabel}" id="rep_${comment.oId}" href="javascript:replyTo('${comment.oId}','${comment.commentName}')"><span class="iconfont icon-huiche"></span></a>
|
||||
</#if>
|
||||
</div>
|
||||
<div class="comment-content">${comment.commentContent}</div>
|
||||
</div>
|
||||
</li>
|
||||
</#list>
|
||||
<li style="margin-bottom:15px;padding-bottom:15px;">
|
||||
<div id="conoption">
|
||||
<span id="replyname" style="display:inline-block"></span>
|
||||
<a class="fn-right iconfont icon-send itip" id="reply-original" href="javascript:replyTo('','')" lang="回帖"></a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<#if article.commentable>
|
||||
<div class="comment-body fn-wrap">
|
||||
<table id="commentForm" class="form">
|
||||
<tbody>
|
||||
<#if !isLoggedIn>
|
||||
<tr>
|
||||
<td><input placeholder="${commentNameLabel}" type="text" class="normalInput" id="commentName" required="required"/></td>
|
||||
<td><input placeholder="${commentEmailLabel}" type="email" class="normalInput" id="commentEmail"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><input placeholder="${commentURLLabel}" type="url" id="commentURL"/></td>
|
||||
</tr>
|
||||
</#if>
|
||||
<tr>
|
||||
<td id="emotions" colspan="2">
|
||||
<div class="OwO"></div>
|
||||
<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 colspan="2"><textarea rows="10" cols="96" class="OwO-textarea" id="comment" placeholder="支持 Markdown 格式"></textarea></td>
|
||||
</tr>
|
||||
<#if !isLoggedIn>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input style="width:50%" placeholder="${captchaLabel}" type="text" class="normalInput" id="commentValidate"/>
|
||||
<img id="captcha" alt="validate" src="/captcha.do" />
|
||||
</td>
|
||||
</tr>
|
||||
</#if>
|
||||
<tr>
|
||||
<td colspan="2" align="right">
|
||||
<button id="submitCommentButton" onclick="page.submitComment();">${submmitCommentLabel}</button>
|
||||
<span class="error-msg" id="commentErrorTip"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro comment_script oId>
|
||||
<script src="/skins/${skinDirName}/js/page.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
<script src="/skins/${skinDirName}/js/lib/OwO/OwO${miniPostfix}.js?${staticResourceVersion}"></script>
|
||||
<script type="text/javascript">
|
||||
var OwO_demo = new OwO({
|
||||
logo: 'OωO表情', api: '/skins/${skinDirName}/js/lib/OwO/OwO.js',
|
||||
container: document.getElementsByClassName('OwO')[0], target: document.getElementsByClassName('OwO-textarea')[0],
|
||||
position: 'up', width: '100%', maxHeight: '250px', useMarkdown: true, usedSize: 'h_150', addClass: 'itip',
|
||||
appendContent:'<code> 使用OωO表情更生动形象的表达情感</code>'
|
||||
});
|
||||
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 addComment = function (result, state, reply) {
|
||||
var commentable = $("#commentForm").length === 0 ? false : true;
|
||||
var commentHTML = '<li id="' + result.oId + '"><img class="avatar" title="'
|
||||
+ result.userName + '" src="' + result.commentThumbnailURL + '"><div class="content">'
|
||||
+ '<div class="fn-clear post-meta"><span class="fn-left">' + result.replyNameHTML;
|
||||
if (state !== "" || reply) {
|
||||
var commentOriginalCommentName = $("#" + page.currentCommentId).find(".post-meta a").first().text();
|
||||
commentHTML += ' <span class="iconfont icon-anonymous-iconfont"></span> <a class="quote-link" href="${servePath}' + result.commentSharpURL.split("#")[0] + '#' + page.currentCommentId + '"'
|
||||
+ 'onmouseover="page.showComment(this, \'' + page.currentCommentId + '\', 23);"'
|
||||
+ 'onmouseout="page.hideComment(\'' + page.currentCommentId + '\')">' + commentOriginalCommentName + '</a>';
|
||||
}
|
||||
commentHTML += ' <time>' + result.commentDate + '</time></span>';
|
||||
if (commentable) {
|
||||
commentHTML += '<a class="fn-right" href="javascript:replyTo(\'' + result.oId + '\', \'' + result.userName + '\');"><span class="iconfont icon-huiche" title="${replyLabel}"></span></a>';
|
||||
}
|
||||
commentHTML += '</div><div class="comment-content">' + Util.replaceEmString($("#comment" + state).val()) + '</div></div></li>';
|
||||
return commentHTML;
|
||||
};
|
||||
var replyTo = function (id, name) {
|
||||
$("#commentForm").fadeIn();$("#comment").focus();
|
||||
if(id != '' && id != null) { // rep
|
||||
console.log(name);
|
||||
$("#replyname").html('<a href ="#' + id + '"><span class="iconfont icon-anonymous-iconfont"></span>' + name + '</a>');
|
||||
$("#comment").unbind().keypress(function(event) {
|
||||
if (event.keyCode === 13 && event.ctrlKey) {page.submitComment(id, '', true); event.preventDefault();}
|
||||
});
|
||||
$("#submitCommentButton").unbind("click").removeAttr("onclick").click(function() {page.submitComment(id, '', true);});
|
||||
} else { // comm
|
||||
$("#replyname").html('<a></a>');
|
||||
$("#comment").unbind().keypress(function(event) {
|
||||
if (event.keyCode === 13 && event.ctrlKey) {page.submitComment(); event.preventDefault();}
|
||||
});
|
||||
$("#submitCommentButton").unbind("click").removeAttr("onclick").click(function() {page.submitComment();});
|
||||
}
|
||||
};
|
||||
(function () {
|
||||
Yilia.share();page.load();page.replaceCommentsEm(".comments .comment-content");
|
||||
<#nested>
|
||||
$("article a[href*='/download?dir']").each(function(i, n) { $(n).attr("href", encodeURI($(n).attr("href"))); });
|
||||
})();
|
||||
</script>
|
||||
</#macro>
|
|
@ -0,0 +1,43 @@
|
|||
<#macro head title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="theme-color" content="#ccc">
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta name="force-rendering" content="webkit" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
|
||||
<meta content="always" name="referrer">
|
||||
<title>${title}</title>
|
||||
<link rel="dns-prefetch" href="//at.alicdn.com">
|
||||
<link rel="dns-prefetch" href="//lib.baomitu.com">
|
||||
<#-- <link rel="dns-prefetch" href="//hm.baidu.com"> -->
|
||||
<#nested>
|
||||
<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,${blogTitle?html}">
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp">
|
||||
<meta http-equiv="Window-target" content="_top">
|
||||
<#if article??>
|
||||
<meta property="og:type" content="blog">
|
||||
<meta property="og:image" content="图片URL地址">
|
||||
<meta property="og:release_date" content="${article.articleCreateDate?string("yyyy-MM-dd")}">
|
||||
<meta property="og:title" content=" ${title}">
|
||||
<meta property="og:description" content=" ${article.articleAbstract?html}">
|
||||
<meta property="og:author" content="${blogTitle?html}">
|
||||
</#if>
|
||||
<link rel="icon" type="image/png" href="/favicon.png">
|
||||
<link type="text/css" rel="stylesheet" href="/skins/${skinDirName}/css/yilia7${miniPostfix}.css?${staticResourceVersion}">
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_262081_9r6pziz40iugcik9.css">
|
||||
<link href="/blog-articles-rss.do" title="RSS" type="application/rss+xml" rel="alternate">
|
||||
<link rel="search" type="application/opensearchdescription+xml" title="${blogTitle?html}" href="/opensearch.xml">
|
||||
<link rel="apple-touch-icon" href="/favicon.png">
|
||||
<meta itemprop="image" content="/favicon.png">
|
||||
<meta name="apple-mobile-web-app-title" content="${blogTitle?html}">
|
||||
<meta name="format-detection" content="telephone=no,email=no,adress=no">
|
||||
<meta name="msapplication-TileColor" content="#eee">
|
||||
<meta name="msapplication-TileImage" content="/favicon.png">
|
||||
<meta name="msapplication-square150x150logo" content="/favicon.png">
|
||||
<meta name="application-name" content="${blogTitle?html}">
|
||||
${htmlHead}
|
||||
</#macro>
|
|
@ -0,0 +1,32 @@
|
|||
<#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 "side.ftl">
|
||||
<main>
|
||||
<article class="post article-body">
|
||||
<section class="abstract">
|
||||
${page.pageContent}
|
||||
</section>
|
||||
<footer class="fn-clear share">
|
||||
<div class="fn-right">
|
||||
<span class="icon icon-t-weibo" data-type="tencent"></span>
|
||||
<span class="icon icon-weibo" data-type="weibo"></span>
|
||||
<span class="icon icon-twitter" data-type="twitter"></span>
|
||||
<span class="icon icon-gplus" data-type="google"></span>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
<@comments commentList=pageComments article=page></@comments>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=page.oId></@comment_script>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 207 KiB |
|
@ -0,0 +1,75 @@
|
|||
<script src="//lib.baomitu.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
<script>
|
||||
var clickme = function() {
|
||||
var abcon = '<div id="hideinfo"><h2>关于我</h2><p>请将此处的文字在 side.ftl 中修改为你自己的介绍信息。</p> 地址:${servePath} <p>End.</p></div>';
|
||||
layer.open({
|
||||
type:1, title:'ABOUT ME - ${blogTitle?html}', closeBtn:false, area:'320px', shade:0.3, id:'aboutlayer', resize:false,
|
||||
btn:['\u6d88\u5931\u5427\u007e'], btnAlign:'c', moveType:1, content: abcon, success:function(layero){
|
||||
layero.find('.layui-layer-btn .layui-layer-btn0').css({"border-color":"#333", "background-color":"#666"});
|
||||
}
|
||||
});
|
||||
}, showToc = function() {
|
||||
$('.side .toc').removeClass("toc__panel--hide");
|
||||
}, hideToc = function() {
|
||||
$('.side .toc').addClass("toc__panel--hide");
|
||||
};
|
||||
</script>
|
||||
<div class="side">
|
||||
<div class="overlay"><a href="javascript:showToc();" class="toc-btn iconfont icon-liebiao itip ifixed" id="art_dir" lang="${tocLabel}"></a></div>
|
||||
<header class="content">
|
||||
<a href="/">
|
||||
<img class="avatar itip ifixed" id="logoicon" src="${adminUser.userAvatar}" title="${blogTitle?html}" alt="${blogTitle?html}"
|
||||
lang="使用移动设备访问<br><img src='http://qr.liantu.com/api.php?text=${servePath}' width='123' height='123' border='1'>"/>
|
||||
</a>
|
||||
<hgroup><h1><a href="javascript:clickme();" class="itip ifixed" id="logofont" lang="请在 side.ftl 中修改成你要显示的提示信息。">${blogTitle}</a></h1></hgroup>
|
||||
<#if "" != noticeBoard>
|
||||
<p class="subtitle">${blogSubtitle}</p>
|
||||
</#if>
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/archives.html"><span class="iconfont icon-rili itip ifixed" id="archives" lang="${archiveLabel}"></span></a><a href="/tags.html"><span class="iconfont icon-biaoqian itip ifixed" id="tags" lang="${allTagsLabel}"></span></a><a href="/dynamic.html"><span class="iconfont icon-jiaoyin itip ifixed" id="dynamic" lang="${dynamicLabel}"></span></a><a href="/links.html"><span class="iconfont icon-lianjie itip ifixed" id="links" lang="${linkLabel}"></span></a><a href="/search?keyword="><span class="iconfont icon-sousuo18 itip ifixed" id="search" lang="${searchLabel}"></span></a>
|
||||
</li>
|
||||
<#if 0 != pageNavigations?size>
|
||||
<li class="hide">
|
||||
<#list pageNavigations as page>
|
||||
<a href="${page.pagePermalink}" target="${page.pageOpenTarget}">${page.pageTitle}</a>
|
||||
</#list>
|
||||
</li>
|
||||
</#if>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<footer>
|
||||
<#if noticeBoard??>
|
||||
<div>${noticeBoard}</div>
|
||||
</#if>
|
||||
<#-- 若要使用此行图标请将链接和相关信息修改为自己的
|
||||
<div>
|
||||
<a href="https://github.com/iTanken/">
|
||||
<span class="iconfont icon-github mysites itip ifixed" id="mygit" lang="Github"></span>
|
||||
</a>
|
||||
<a href="https://weibo.com/itanken/">
|
||||
<span class="iconfont icon-wb mysites itip ifixed" id="myweibo" lang="官方微博"></span>
|
||||
</a>
|
||||
<a href="http://oss.itanken.net/images/blog/ssswxqr.jpg" rel="nofollow">
|
||||
<span class="iconfont icon-weixin1 mysites itip ifixed" id="mywechat"
|
||||
lang="<b>公众号:StarSevenSky</b><br><img src='http://qr.liantu.com/api.php?text=http://YourURL' width='123' height='123'/>"></span>
|
||||
</a>
|
||||
<a href="/QQ">
|
||||
<span class="iconfont icon-qq1 mysites itip ifixed" id="myqq" lang="QQ消息" rel="nofollow"></span>
|
||||
</a>
|
||||
</div>
|
||||
-->
|
||||
<#if isLoggedIn>
|
||||
<a href="${servePath}/admin-index.do#main" class="iconfont icon-shezhi itip ifixed" id="admin_do" lang="${adminLabel}" rel="nofollow"></a>
|
||||
<a href="/logout?goto=%2F" class="iconfont icon-tuichu itip ifixed" id="logout_do" lang="${logoutLabel}" rel="nofollow"></a>
|
||||
<#else>
|
||||
<a href="${servePath}/login" class="iconfont icon-jinru itip ifixed" id="login_do" lang="${loginLabel}" rel="nofollow"></a>
|
||||
<a href="${servePath}/#register" class="iconfont icon-tianjiayonghu itip ifixed" id="noreg" lang="暂未开放${registerLabel}" rel="nofollow"></a>
|
||||
</#if>
|
||||
<#-- 此处的反馈邮箱链接请到 http://openmail.qq.com/ 去申请开通。 -->
|
||||
<a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=YourKey" class="iconfont icon-xiaoxi itip ifixed" id="send_mail" lang="反馈" rel="nofollow"></a>
|
||||
<a rel="alternate" href="${servePath}/blog-articles-rss.do" class="iconfont icon-dingyue itip ifixed" id="rss_do" lang="${subscribeLabel}"></a>
|
||||
</footer>
|
||||
</div>
|
|
@ -0,0 +1,24 @@
|
|||
#
|
||||
# Copyright (c) 2010-2017, 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: Mobile skin.
|
||||
# Version: 1.0.0.15, Feb 20, 2017
|
||||
# Author: Liang Ding
|
||||
# Revised: Tanken·L
|
||||
|
||||
name=iMobile
|
||||
memo=\u5efa\u8bae\u5c06\u6b64\u76ae\u80a4\u76f4\u63a5\u8986\u76d6\u81f3\u0020\u006d\u006f\u0062\u0069\u006c\u0065\u0020\u76ae\u80a4\u76ee\u5f55\uff0c\u6ce8\u610f\u4e0d\u8981\u8986\u76d6\u6389\u6b64\u6587\u4ef6\u3002
|
|
@ -0,0 +1,24 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<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 "side.ftl">
|
||||
<main>
|
||||
<h2 class="classify-name">
|
||||
${tag1Label}
|
||||
<a rel="alternate" href="${servePath}/tag-articles-feed.do?oId=${tag.oId}">
|
||||
${tag.tagTitle}
|
||||
(${tag.tagPublishedRefCount})
|
||||
</a>
|
||||
</h2>
|
||||
<#include "article-list.ftl">
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<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 "side.ftl">
|
||||
<main class="classify">
|
||||
<#if 0 != mostUsedCategories?size>
|
||||
<article>
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="archive" href="${servePath}/tags.html"><li class="icontitle iconfont icon-wenjianjia"></li>
|
||||
${categoryLabel}
|
||||
</a>
|
||||
</h2>
|
||||
</header>
|
||||
<ul class="tags fn-clear">
|
||||
<#list mostUsedCategories as category>
|
||||
<li>
|
||||
<a class="tag" href="${servePath}/category/${category.categoryURI}">
|
||||
${category.categoryTitle} (${category.categoryTagCnt})</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</article>
|
||||
</#if>
|
||||
<article>
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="archive" href="/tags.html"><li class="icontitle iconfont icon-biaoqian"></li>
|
||||
${tagLabel}
|
||||
</a>
|
||||
</h2>
|
||||
</header>
|
||||
<ul class="tags fn-clear">
|
||||
<#list tags as tag>
|
||||
<li>
|
||||
<a rel="tag" class="tag" data-count="${tag.tagPublishedRefCount}"
|
||||
href="/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagTitle}">
|
||||
<span>${tag.tagTitle}</span>
|
||||
(<b>${tag.tagPublishedRefCount}</b>)
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</article>
|
||||
<#include "footer.ftl">
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,431 @@
|
|||
/**
|
||||
* Copyright (c) 2010-2017, 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.
|
||||
*/
|
||||
/**
|
||||
* 403, 404, 500, article-pwd, init, login and kill-browser page style.
|
||||
*
|
||||
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
|
||||
* @author <a href="http://88250.b3log.org">Liang Ding</a>
|
||||
* @version 1.1.0.0, Sep 12, 2017
|
||||
*/
|
||||
html,body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body {
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
font-family: \5fae\8f6f\96c5\9ed1;
|
||||
font-size: small;
|
||||
}
|
||||
h2 {
|
||||
border-radius: 4px 4px 0 0;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
padding: 10px 20px;
|
||||
text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
input {
|
||||
border: 1px solid #CCCCCC;
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075) inset;
|
||||
font-size: 13px;
|
||||
margin: 15px 0;
|
||||
padding: 7px 8px;
|
||||
vertical-align: middle;
|
||||
width: 410px;
|
||||
font-family: \5fae\8f6f\96c5\9ed1;
|
||||
font-size: small;
|
||||
}
|
||||
input:focus {
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075) inset, 0 0 5px rgbargba(200, 200, 200, 0.9);
|
||||
border: 1px solid #E6E5D9;
|
||||
}
|
||||
.form {
|
||||
padding: 20px;
|
||||
}
|
||||
label {
|
||||
font-size: 13px;
|
||||
}
|
||||
button {
|
||||
position:relative;
|
||||
display:inline-block;
|
||||
font-size:13px;
|
||||
font-weight:700;
|
||||
color:#333;
|
||||
text-shadow:0 1px 0 rgba(255,255,255,0.9);
|
||||
white-space:nowrap;
|
||||
background-color:#eaeaea;
|
||||
background-image:linear-gradient(#fafafa,#eaeaea);
|
||||
background-repeat:repeat-x;
|
||||
border-radius:3px;
|
||||
border:1px solid #ddd;
|
||||
border-bottom-color:#c5c5c5;
|
||||
box-shadow:0 1px 3px rgba(0,0,0,0.075);
|
||||
vertical-align:baseline;
|
||||
cursor:pointer;
|
||||
-webkit-touch-callout:none;
|
||||
-webkit-user-select:none;
|
||||
-khtml-user-select:none;
|
||||
-moz-user-select:none;
|
||||
-ms-user-select:none;
|
||||
user-select:none;
|
||||
-webkit-appearance:none;
|
||||
outline:none;
|
||||
padding:7px 15px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
button:hover,
|
||||
button:active {
|
||||
color:#fff;
|
||||
text-decoration:none;
|
||||
text-shadow:0 -1px 0 rgba(0,0,0,0.25);
|
||||
background-color: #3072b3;
|
||||
background-image:linear-gradient(#599bcd,#3072b3);
|
||||
background-repeat:repeat-x;
|
||||
}
|
||||
|
||||
.clear {
|
||||
background-color: transparent;
|
||||
border: 0px;
|
||||
clear: both;
|
||||
display: block;
|
||||
font-size: 0px;
|
||||
height: 0px;
|
||||
line-height: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fn-clear:before,
|
||||
.fn-clear:after {
|
||||
display: table;
|
||||
content: ""
|
||||
}
|
||||
.fn-clear:after {
|
||||
clear: both
|
||||
}
|
||||
.fn-left {
|
||||
float: left
|
||||
}
|
||||
|
||||
.fn-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.none {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.solo {
|
||||
color: orangered;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.logo {
|
||||
float: left;
|
||||
padding: 142px 12px 0;
|
||||
width: 217px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
border-top: 5px solid #E6E5D9;
|
||||
padding: 110px 0;
|
||||
background-color: #F3F1E5;
|
||||
}
|
||||
|
||||
.content {
|
||||
background-color: #fff;
|
||||
margin: 0 auto;
|
||||
width: 760px;
|
||||
}
|
||||
|
||||
.main {
|
||||
border-left: 1px solid #E6E5D9;
|
||||
float: right;
|
||||
font-size: 15px;
|
||||
padding: 20px;
|
||||
width: 470px;
|
||||
min-height: 360px;
|
||||
}
|
||||
|
||||
.main a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main li {
|
||||
margin: 6px 0 6px 16px;
|
||||
}
|
||||
|
||||
.footerWrapper {
|
||||
position: fixed; bottom: 0; width: 100%; margin-top: 100px;
|
||||
background-color: #FFFFFF; border-top: 1px solid #E6E5D9;
|
||||
padding: 12px 0; text-align: center; font-size: 12px;
|
||||
}
|
||||
|
||||
.footerWrapper a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* start article-pwd */
|
||||
.article-pwd > div,
|
||||
.article-pwd > form {
|
||||
margin: 0 20px;
|
||||
}
|
||||
|
||||
.article-pwd > div {
|
||||
margin-bottom: 10px;
|
||||
max-height: 264px;
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
/* end article-pwd */
|
||||
|
||||
/* start 403/404/500 */
|
||||
.a-error {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.img-error {
|
||||
max-width: 100%;
|
||||
margin: 20px auto;
|
||||
padding: 0;
|
||||
display: block;
|
||||
}
|
||||
/* end 403/404/500 */
|
||||
|
||||
/* start kill */
|
||||
.kill img {
|
||||
position: absolute;
|
||||
right: 40px;
|
||||
top: 200px;
|
||||
}
|
||||
|
||||
.kill ul {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.kill p {
|
||||
margin: 12px 20px;
|
||||
}
|
||||
|
||||
.kill span {
|
||||
margin-left: 20px;
|
||||
}
|
||||
/* end kill */
|
||||
|
||||
/* start init */
|
||||
#init {
|
||||
position: absolute;
|
||||
width: 470px;
|
||||
}
|
||||
|
||||
#init input,
|
||||
.register input {
|
||||
margin: 5px 0;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
.register {
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
#sys p {
|
||||
height: 206px;
|
||||
}
|
||||
|
||||
#sys {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
#initButton {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#tip {
|
||||
color: #21759B;
|
||||
font-weight: bold;
|
||||
margin-left: 10px;
|
||||
}
|
||||
/* end init */
|
||||
|
||||
/* start search */
|
||||
.content-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.5;
|
||||
font-size: 13px;
|
||||
word-break: break-all;
|
||||
color: #545454;
|
||||
}
|
||||
|
||||
.content-reset ul,
|
||||
.content-reset ol {
|
||||
padding-left: 2em;
|
||||
margin-top: 0;
|
||||
margin-bottom: 16px
|
||||
}
|
||||
.content-reset li {
|
||||
margin-top: 0.25em
|
||||
}
|
||||
.content-reset h1,
|
||||
.content-reset h2,
|
||||
.content-reset h3,
|
||||
.content-reset h4,
|
||||
.content-reset h5,
|
||||
.content-reset h6 {
|
||||
margin-top: 24px;
|
||||
margin-bottom: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 1.25
|
||||
}
|
||||
.content-reset h1 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 2em;
|
||||
border-bottom: 1px solid #eee
|
||||
}
|
||||
.content-reset h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.5em;
|
||||
border-bottom: 1px solid #eee
|
||||
}
|
||||
.content-reset h3 {
|
||||
font-size: 1.25em
|
||||
}
|
||||
.content-reset h4 {
|
||||
font-size: 1em
|
||||
}
|
||||
.content-reset h5 {
|
||||
font-size: 0.875em
|
||||
}
|
||||
.content-reset h6 {
|
||||
font-size: 0.85em
|
||||
}
|
||||
.content-reset hr {
|
||||
height: 2px;
|
||||
padding: 0;
|
||||
margin: 5px 0;
|
||||
background-color: #e7e7e7;
|
||||
border: 0
|
||||
}
|
||||
.content-reset p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.content-reset blockquote {
|
||||
padding: 0 1em;
|
||||
color: #777;
|
||||
border-left: 0.25em solid #ddd;
|
||||
margin-bottom: 16px
|
||||
}
|
||||
.content-reset blockquote p {
|
||||
margin: 0
|
||||
}
|
||||
.content-reset iframe {
|
||||
border: 1px solid #ccc
|
||||
}
|
||||
.content-reset table {
|
||||
width: 100%;
|
||||
border: 1px solid #dedede;
|
||||
margin: 15px auto;
|
||||
border-collapse: collapse;
|
||||
empty-cells: show
|
||||
}
|
||||
.content-reset thead {
|
||||
text-align: center
|
||||
}
|
||||
.content-reset td,
|
||||
.content-reset th {
|
||||
height: 35px;
|
||||
border: 1px solid #dedede;
|
||||
padding: 0 10px
|
||||
}
|
||||
.content-reset th {
|
||||
font-weight: bold;
|
||||
text-align: center !important;
|
||||
background: rgba(158, 188, 226, 0.2)
|
||||
}
|
||||
.content-reset tbody tr:nth-child(2n) {
|
||||
background: rgba(158, 188, 226, 0.12)
|
||||
}
|
||||
.content-reset tr:hover {
|
||||
background: #efefef
|
||||
}
|
||||
.content-reset code {
|
||||
padding: 0.2em 0.4em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
background-color: rgba(252, 41, 41, 0.12);
|
||||
border-radius: 3px;
|
||||
color: #d23f31;
|
||||
font-family: mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace
|
||||
}
|
||||
.content-reset pre>code {
|
||||
padding: 0.5em;
|
||||
border-radius: 0;
|
||||
color: #333;
|
||||
background-color: rgba(0, 0, 0, 0.04);
|
||||
background-size: 20px 20px;
|
||||
border-radius: 5px
|
||||
}
|
||||
.content-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 #ccc;
|
||||
border-bottom-color: #bbb;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb
|
||||
}
|
||||
|
||||
.search { padding-bottom: 110px; border-top: 5px solid #e6e5d9; }
|
||||
.search__header { padding: 15px 20px; position: fixed; top: 0; width: 100%; z-index: 9; background: #efefef; border-bottom: 3px solid #e6e5d9; }
|
||||
.search__header a { line-height: 44px; }
|
||||
.search__input input { margin: 0 10px 0 20px; height: 32px; line-height: 32px; float: left; font-size: 16px; padding: 5px 10px; }
|
||||
.search__input button { height: 44px; margin: 0; float: left; }
|
||||
.search__articles { padding: 0 50px; margin-top: 80px; }
|
||||
.search__articles article { border-bottom: 3px solid #e6e5d9; }
|
||||
.search__articles header h1 { margin: 0; }
|
||||
.search__articles header h1 > a { font-size: 18px; text-decoration: none; font-weight: normal; }
|
||||
.search__articles .meta { font-size: 14px; color: #999; }
|
||||
.search__articles footer { margin-bottom: 30px; }
|
||||
.search__articles footer a { text-decoration: none; font-size: 13px; }
|
||||
.search__articles footer a:hover,.search__articles header h1 > a:hover,.search__pagination a:hover { text-decoration: underline; }
|
||||
.search__pagination a { color: #4285f4; text-decoration: none; }
|
||||
.search__pagination a,.search__pagination span { margin-right: 5px; }
|
||||
/* end search */
|
||||
|
||||
/* start responsive */
|
||||
@media (max-width: 780px) {
|
||||
.wrap { padding: 40px 0; }
|
||||
.content { width: auto; }
|
||||
.logo, .search__header img { width: 32px; }
|
||||
.search__header > .fn-right { display: none; }
|
||||
.main { border: 0; float: none; width: auto; }
|
||||
input { width: 100%; box-sizing: border-box; display: block; }
|
||||
.a-500, .a-403, .a-404 { margin: 0 20px 0 0; }
|
||||
#init { width: 100%; padding: 0 20px; box-sizing: border-box; left: 0; }
|
||||
.search__input { float: none; }
|
||||
.search__input button { position: absolute; right: 50px; height: 32px; line-height: 16px; }
|
||||
.search { width: 100%; min-height: auto; box-sizing: border-box; }
|
||||
.search__articles { width: auto; min-width: auto; padding: 0; margin-top: 70px; }
|
||||
}
|
||||
/* end responsive */
|
|
@ -0,0 +1,622 @@
|
|||
html {
|
||||
height: 100%; max-height: 100%; font-size: 16px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
body {
|
||||
max-height: 100%; line-height: 1.5em;
|
||||
font-family: "Helvetica Neue","Luxi Sans","DejaVu Sans",Tahoma,"Hiragino Sans GB","Microsoft Yahei",sans-serif;
|
||||
font-size: 100%; letter-spacing: 0.01rem; margin: 0;
|
||||
color: rgba(0, 0, 0, 0.6); background-color: #eaeaea;
|
||||
-webkit-font-feature-settings: 'kern' 1; -moz-font-feature-settings: 'kern' 1; -o-font-feature-settings: 'kern' 1;
|
||||
text-rendering: geometricPrecision;
|
||||
}
|
||||
::-moz-selection {
|
||||
background: #D6EDFF;
|
||||
}
|
||||
::selection {
|
||||
background: #D6EDFF;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
outline-width: 0;
|
||||
color: #258fb8;
|
||||
outline: none;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
-webkit-font-feature-settings: 'dlig' 1, 'liga' 1, 'lnum' 1, 'kern' 1;
|
||||
-moz-font-feature-settings: 'dlig' 1, 'liga' 1, 'lnum' 1, 'kern' 1;
|
||||
-o-font-feature-settings: 'dlig' 1, 'liga' 1, 'lnum' 1, 'kern' 1;
|
||||
color: #666;
|
||||
line-height: 1.15em;
|
||||
font-family: "Open Sans", "Helvetica Neue","Luxi Sans","DejaVu Sans",Tahoma,"Hiragino Sans GB","Microsoft Yahei",sans-serif;
|
||||
text-rendering: geometricPrecision;
|
||||
}
|
||||
h1 {
|
||||
letter-spacing: -2px;
|
||||
text-indent: -3px;
|
||||
}
|
||||
h2 {
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
p, ul, ol, dl {
|
||||
-webkit-font-feature-settings: 'liga' 1, 'onum' 1, 'kern' 1;
|
||||
-moz-font-feature-settings: 'liga' 1, 'onum' 1, 'kern' 1;
|
||||
-o-font-feature-settings: 'liga' 1, 'onum' 1, 'kern' 1;
|
||||
text-rendering: geometricPrecision;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
padding-left: 3rem;
|
||||
}
|
||||
|
||||
ol ol, ul ul,
|
||||
ul ol, ol ul {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
float: left;
|
||||
width: 180px;
|
||||
overflow: hidden;
|
||||
clear: left;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
margin-left: 200px;
|
||||
margin-bottom: 1em
|
||||
}
|
||||
|
||||
li li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 1px;
|
||||
border: 0;
|
||||
border-top: #EFEFEF 1px solid;
|
||||
margin: 3.2em 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
box-sizing: border-box;
|
||||
margin: 1.75em 0 1.75em 0;
|
||||
padding: 0 0 0 1.75em;
|
||||
border-left: 5px solid;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
|
||||
blockquote:hover {
|
||||
border-color: #b0a0aa;
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
margin: 0.8em 0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
blockquote small {
|
||||
display: inline-block;
|
||||
margin: 0.8em 0 0.8em 1.5em;
|
||||
font-size: 0.9em;
|
||||
color: #CCC;
|
||||
}
|
||||
|
||||
blockquote small:before { content: "\2014 \00A0"; }
|
||||
|
||||
blockquote cite {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
blockquote cite a { font-weight: normal; }
|
||||
|
||||
mark {
|
||||
background-color: #fdffb6;
|
||||
}
|
||||
|
||||
code, tt {
|
||||
padding: 1px 3px;
|
||||
font-family: Inconsolata, monospace, "Helvetica Neue","Luxi Sans","DejaVu Sans",Tahoma,"Hiragino Sans GB","Microsoft Yahei",sans-serif;
|
||||
font-size: 0.85em;
|
||||
white-space: pre-wrap;
|
||||
border: #E3EDF3 1px solid;
|
||||
background: #F7FAFB;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
pre code, pre tt {
|
||||
font-size: inherit;
|
||||
white-space: pre-wrap;
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
/* end reset */
|
||||
|
||||
/* start function */
|
||||
.fn-clear:before,
|
||||
.fn-clear:after {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.fn-clear:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.fn-left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fn-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fn-none {
|
||||
display: none;
|
||||
}
|
||||
/* end function */
|
||||
/* start common */
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src:url('/skins/mobile/css/fonts/icomoon.eot?3js4w7');
|
||||
src:url('/skins/mobile/css/fonts/icomoon.eot?3js4w7#iefix') format('embedded-opentype'),
|
||||
url('/skins/mobile/css/fonts/icomoon.ttf?3js4w7') format('truetype'),
|
||||
url('/skins/mobile/css/fonts/icomoon.woff?3js4w7') format('woff'),
|
||||
url('/skins/mobile/css/fonts/icomoon.svg?3js4w7#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
font-family: 'icomoon';
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.icon-tag:before {
|
||||
content: "\e903";
|
||||
}
|
||||
.icon-date:before {
|
||||
content: "\e902";
|
||||
}
|
||||
#captcha, #captchaReply {
|
||||
height: 27px;
|
||||
display: inline-block;
|
||||
vertical-align: inherit;
|
||||
}
|
||||
/* start emotions */
|
||||
.em00, .em01, .em02, .em03, .em04, .em05, .em06, .em07, .em08, .em09,
|
||||
.em10, .em11, .em12, .em13, .em14 {
|
||||
cursor: pointer;
|
||||
background-image: url("/images/emotions/emotions-classic.png");
|
||||
float: left;
|
||||
height: 24px;
|
||||
margin-right: 5px;
|
||||
width: 24px;
|
||||
transition: all .2s ease-out;
|
||||
-webkit-transition: all .2s ease-out;
|
||||
-moz-transition: all .2s ease-out;
|
||||
}
|
||||
#emotions span:hover {
|
||||
transform: scale(1.2) rotate(360deg);
|
||||
-webkit-transform: scale(1.2) rotate(360deg);
|
||||
-moz-transform: scale(1.2) rotate(360deg);
|
||||
}
|
||||
|
||||
.em01 {
|
||||
background-position: -24px 0;
|
||||
}
|
||||
|
||||
.em02 {
|
||||
background-position: -48px 0;
|
||||
}
|
||||
|
||||
.em03 {
|
||||
background-position: -72px 0;
|
||||
}
|
||||
.em04 {
|
||||
background-position: -96px 0;
|
||||
}
|
||||
|
||||
.em05 {
|
||||
background-position: 0px -24px;
|
||||
}
|
||||
|
||||
.em06 {
|
||||
background-position: -24px -24px;
|
||||
}
|
||||
|
||||
.em07 {
|
||||
background-position: -48px -24px;
|
||||
}
|
||||
|
||||
.em08 {
|
||||
background-position: -72px -24px;
|
||||
}
|
||||
|
||||
.em09 {
|
||||
background-position: -96px -24px;
|
||||
}
|
||||
|
||||
.em10 {
|
||||
background-position: 0 -48px;
|
||||
}
|
||||
|
||||
.em11 {
|
||||
background-position: -24px -48px ;
|
||||
}
|
||||
|
||||
.em12 {
|
||||
background-position: -48px -48px;
|
||||
}
|
||||
|
||||
.em13 {
|
||||
background-position: -72px -48px;
|
||||
}
|
||||
|
||||
.em14 {
|
||||
background-position: -96px -48px;
|
||||
}
|
||||
/* end emotions */
|
||||
|
||||
/* start main */
|
||||
main {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
min-height: 100%;
|
||||
background: #eaeaea;
|
||||
width: auto;
|
||||
}
|
||||
/* end main */
|
||||
|
||||
/* start article */
|
||||
article {
|
||||
margin: 30px;
|
||||
border: 1px solid #ddd;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
transition: all 0.2s ease-in;
|
||||
visibility: hidden;
|
||||
}
|
||||
article.show {
|
||||
visibility: visible;
|
||||
-webkit-animation: bounce 0.6s;
|
||||
animation: bounce 0.6s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes bounce {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(1);
|
||||
}
|
||||
60% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1.02);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes bounce {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-moz-transform: scale(1);
|
||||
}
|
||||
60% {
|
||||
opacity: 1;
|
||||
-moz-transform: scale(1.02);
|
||||
}
|
||||
100% {
|
||||
-moz-transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
article header {
|
||||
border-left: 5px solid;
|
||||
padding: 15px 30px 15px 25px;
|
||||
}
|
||||
|
||||
article header:hover {
|
||||
border-color: #b0a0aa;
|
||||
}
|
||||
|
||||
article header h2 {
|
||||
margin: 0;
|
||||
font-size: 26px;
|
||||
padding-right: 130px;
|
||||
}
|
||||
|
||||
article header a {
|
||||
color: #696969;
|
||||
margin-left: 0px;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
}
|
||||
|
||||
article header a:hover {
|
||||
color: #b0a0aa;
|
||||
}
|
||||
|
||||
article header sup {
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
article header .meta {
|
||||
font-size: 14px;
|
||||
position: absolute;
|
||||
right: 30px;
|
||||
color: #aaa;
|
||||
top: 18px;
|
||||
}
|
||||
article header time {
|
||||
white-space: nowrap;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
article .abstract {
|
||||
line-height: 1.8em;
|
||||
padding-right: 30px;
|
||||
padding-left: 30px;
|
||||
overflow: hidden;
|
||||
word-wrap: break-word
|
||||
}
|
||||
|
||||
article footer {
|
||||
padding: 20px 35px 0 0;
|
||||
margin: 30px 30px 20px 30px;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tags .tag:hover,
|
||||
article .abstract a:hover{
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.tags .avatar {
|
||||
width: 20px;
|
||||
border-radius: 10px;
|
||||
right: 30px;
|
||||
position: absolute;
|
||||
bottom: 25px;
|
||||
transition: all 0.2s ease-out 0s;
|
||||
}
|
||||
.tags .avatar:hover,
|
||||
.share span:hover {
|
||||
transform: rotate(360deg);
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tags .tag {
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
display: inline-block;
|
||||
padding: 0 5px 0px 10px;
|
||||
position: relative;
|
||||
border-radius: 0 5px 5px 0;
|
||||
margin: 5px 9px 5px 8px;
|
||||
background-color: #7b5d5f;
|
||||
font-family: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace;
|
||||
}
|
||||
|
||||
.tags .tag:before {
|
||||
content: " ";
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -18px;
|
||||
border: 9px solid transparent;
|
||||
border-right-color: #7b5d5f;
|
||||
}
|
||||
|
||||
.tags .tag:after {
|
||||
content: " ";
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.3);
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
a.color1.tag{ background:#999 }
|
||||
a.color1.tag:before{ border-right-color:#999 }
|
||||
|
||||
a.color2.tag{ background:#ccc }
|
||||
a.color2.tag:before{ border-right-color:#ccc }
|
||||
|
||||
a.color3.tag{ background:#666 }
|
||||
a.color3.tag:before{ border-right-color:#666 }
|
||||
|
||||
a.color4.tag { background: #cfb7c4; }
|
||||
a.color4.tag:before { border-right-color: #cfb7c4; }
|
||||
|
||||
nav.pagination {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav.pagination .page-num {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: #4d4d4d;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
margin: 0 3px 30px;
|
||||
}
|
||||
|
||||
nav.pagination a.page-num:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
|
||||
nav.pagination .page-num.current {
|
||||
background: #88acdb;
|
||||
}
|
||||
|
||||
nav.pagination .extend {
|
||||
color: #4d4d4d;
|
||||
margin: 0 27px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
nav.pagination .extend:hover {
|
||||
color: #b0a0aa;
|
||||
}
|
||||
|
||||
nav.pagination:hover .extend {
|
||||
opacity: 1;
|
||||
}
|
||||
/* end article */
|
||||
|
||||
/* start footer */
|
||||
footer.footer {
|
||||
line-height: 1rem;
|
||||
font-size: 12px;
|
||||
font-family: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace;
|
||||
text-shadow: 0 1px #fff;
|
||||
opacity: 0.6;
|
||||
margin: 0 30px 30px;
|
||||
}
|
||||
|
||||
footer.footer .icon-goup {
|
||||
position: fixed;
|
||||
bottom: 35px;
|
||||
right: 5px;
|
||||
-webkit-animation: upbounce 4s 2s infinite;
|
||||
animation: upbounce 4s 2s infinite;
|
||||
z-index: 10;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
color: #b0a0aa;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
footer.footer .icon-goup:hover {
|
||||
color: #4a4a4a;
|
||||
}
|
||||
|
||||
@-webkit-keyframes upbounce {
|
||||
0%, 10%, 25%, 40%, 50% {
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0);
|
||||
}
|
||||
20% {
|
||||
-webkit-transform: translateY(-10px);
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
30% {
|
||||
-webkit-transform: translateY(-5px);
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes upbounce {
|
||||
0%, 20%, 50%, 80%, 100% {
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0);
|
||||
}
|
||||
40% {
|
||||
-webkit-transform: translateY(-10px);
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
60% {
|
||||
-webkit-transform: translateY(-5px);
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
}
|
||||
/* end footer */
|
||||
|
||||
/* start classify*/
|
||||
.classify li {
|
||||
list-style: none;
|
||||
font-size: 20px;
|
||||
float: left;
|
||||
margin: 0 30px 20px 0;
|
||||
}
|
||||
|
||||
.classify .tags .tag {
|
||||
font-size: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.classify .tags .tag:before {
|
||||
left: -38px;
|
||||
border-width: 19px;
|
||||
}
|
||||
|
||||
.classify .tags .tag:after {
|
||||
top: 15px;
|
||||
left: -6px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.classify-name {
|
||||
font-size: 18px;
|
||||
margin: 30px;
|
||||
}
|
||||
table {width: 100%; border-collapse:collapse; border: 1px solid #ccc;}
|
||||
table th, table td {
|
||||
border: 1px solid #E6E6E6;
|
||||
padding: 3px 5px;
|
||||
word-break: normal;
|
||||
}
|
||||
table th {
|
||||
background: #F3F3F3;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
}
|
||||
/* end classify*/
|
||||
/* start responsive */
|
||||
@media only screen and (max-width: 500px) {
|
||||
main {
|
||||
position: initial;
|
||||
}
|
||||
article {
|
||||
margin: 10px;
|
||||
}
|
||||
footer.footer {
|
||||
text-align: center;
|
||||
}
|
||||
footer.footer .fn-right {
|
||||
float: none;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
/* end responsive */
|
|
@ -0,0 +1,7 @@
|
|||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||
<ShortName>子兮子兮</ShortName>
|
||||
<Description>子兮子兮风兮寒,三江七泽情洄沿。</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16" type="image/x-icon">https://res.zixizixi.cn/izcn.png</Image>
|
||||
<Url type="text/html" method="get" template="https://zixizixi.cn/search?keyword={searchTerms}"/>
|
||||
</OpenSearchDescription>
|
|
@ -0,0 +1,94 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="initial-scale=1.0,user-scalable=no,maximum-scale=1,width=device-width">
|
||||
<meta name="viewport" content="initial-scale=1.0,user-scalable=no,maximum-scale=1" media="(device-height: 568px)">
|
||||
<title>${blogTitle} - ${searchLabel} ${keyword!''}</title>
|
||||
<link type="text/css" rel="stylesheet" href="${staticServePath}/css/default-init.css?${staticResourceVersion}" charset="utf-8"/>
|
||||
<link type="text/css" rel="stylesheet" href="${staticServePath}/css/search.css?${staticResourceVersion}">
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_262081_inf6p9s2nfp3nmi.css">
|
||||
<link rel="icon" type="image/png" href="${staticServePath}/favicon.png"/>
|
||||
<link rel="apple-touch-icon" href="${staticServePath}/favicon.png">
|
||||
</head>
|
||||
<body>
|
||||
<div class="search__header fn-clear">
|
||||
<a href="${servePath}"><img class="fn-left" width="44" border="0" alt="Solo" title="Solo" src="${staticServePath}/images/favicon.png"/></a>
|
||||
<div class="search__input fn-left">
|
||||
<input placeholder="请输入关键字" value="${keyword!''}" id="keyword" onkeypress="if(event.keyCode===13){document.getElementById('searchBtn').click()}">
|
||||
<button id="searchBtn" onclick="window.location.href='${servePath}/search?keyword=' + document.getElementById('keyword').value">搜 索</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search">
|
||||
<div class="search__articles">
|
||||
<#list articles as article>
|
||||
<article class="show">
|
||||
<header>
|
||||
<h2>
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
</h2>
|
||||
<div class="meta">
|
||||
<time><span class="icon-date"></span> ${article.articleCreateDate?string("yyyy-MM-dd")}</time>
|
||||
<i class="iconfont icon-duihua" title="${commentLabel}"></i> ${article.articleCommentCount}
|
||||
<i class="iconfont icon-liulan" title="${viewLabel}"></i> ${article.articleViewCount}
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-reset abstract">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
<footer class="tags">
|
||||
<span class="icon-tag"></span>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a class="tag color" rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">${articleTag}</a>
|
||||
<#if articleTag_has_next> </#if>
|
||||
</#list>
|
||||
</footer>
|
||||
</article>
|
||||
</#list>
|
||||
</div>
|
||||
<#if 0 != articles?size>
|
||||
<nav class="search__pagination pagination">
|
||||
<#if 1 != pagination.paginationPageNums?first>
|
||||
<a class="page-num" href="${servePath}/search?keyword=${keyword!''}&p=${pagination.paginationCurrentPageNum - 1}">«</a>
|
||||
<a class="page-num" href="${servePath}/search?keyword=${keyword!''}&p=1">1</a> <span class="page-number">...</span>
|
||||
</#if>
|
||||
<#list pagination.paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == pagination.paginationCurrentPageNum>
|
||||
<span class="current page-num">${paginationPageNum}</span>
|
||||
<#else>
|
||||
<a class="page-num" href="${servePath}/search?keyword=${keyword!''}&p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if pagination.paginationPageNums?last != pagination.paginationPageCount>
|
||||
<span>...</span>
|
||||
<a class="page-num" href="${servePath}/search?keyword=${keyword!''}&p=${pagination.paginationPageCount}">${pagination.paginationPageCount}</a>
|
||||
<a class="page-num" href="${servePath}/search?keyword=${keyword!''}&p=${pagination.paginationCurrentPageNum + 1}">»</a>
|
||||
</#if>
|
||||
</nav>
|
||||
<#else>
|
||||
<article class="show">
|
||||
<nav class="pagination">
|
||||
<div class="iconfont icon-404-6" style="font-size:280px;"></div>
|
||||
抱歉,未搜索到相关内容,请使用其他关键字或返回 <a href="${servePath}">首页</a> 看看吧!
|
||||
</nav>
|
||||
</article>
|
||||
</#if>
|
||||
</div>
|
||||
<div class="footerWrapper">
|
||||
<div class="footer">© ${year} ${blogTitle?html} All Rights Reserved. <br>
|
||||
Powered by <a href="http://b3log.org" target="_blank">B3log 开源 • Solo</a>
|
||||
<i class="iconfont icon-benchi" title="浏览"> ${statistic.statisticBlogViewCount}</i>
|
||||
<i class="iconfont icon-leikesasi1" title="在线"> ${onlineVisitorCnt}</i>
|
||||
<br>${footerContent}</div>
|
||||
</div>
|
||||
<script>
|
||||
var tags = document.getElementsByClassName("tag");
|
||||
for(var i=0; i < tags.length; i+=1) {
|
||||
tags[i].className = ("tag color" + Math.ceil(Math.random() * 3));
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|