Merge pull request #9 from iTanken/master

 Add a new skin (iMobile)
This commit is contained in:
D 2018-02-11 09:44:48 +08:00 committed by GitHub
commit 235403e1c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
85 changed files with 6707 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
iMobile/.DS_Store vendored Normal file

Binary file not shown.

135
iMobile/README.md Normal file
View File

@ -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**

View File

@ -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>

42
iMobile/archives.ftl Normal file
View File

@ -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>

72
iMobile/article-list.ftl Normal file
View File

@ -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> &nbsp;
<#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> &nbsp;
<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>

96
iMobile/article.ftl Normal file
View File

@ -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> &nbsp;
<#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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -0,0 +1,2 @@
[ZoneTransfer]
ZoneId=3

BIN
iMobile/css/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

View File

@ -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="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe600;" 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="&#xe601;" 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="&#xe602;" 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="&#xe603;" 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="&#xe605;" 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="&#xe60a;" 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="&#xe60b;" 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="&#xe60d;" 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="&#xe611;" glyph-name="login" d="M360 405.334h-300v120h300v120l180-180-180-180zM960 885.334v-780l-360-180v180h-360v240h60v-180h300v540l240 120h-540v-240h-60v300z" />
<glyph unicode="&#xe900;" 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="&#xe901;" 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="&#xe902;" 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="&#xe903;" 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

Binary file not shown.

Binary file not shown.

View File

@ -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
}
}

1252
iMobile/css/yilia7.css Normal file

File diff suppressed because it is too large Load Diff

2
iMobile/css/yilia7.min.css vendored Normal file

File diff suppressed because one or more lines are too long

92
iMobile/dynamic.ftl Normal file
View File

@ -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="&#xe14e;">${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="&#xe185;">${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>

94
iMobile/footer.ftl Normal file
View File

@ -0,0 +1,94 @@
<footer class="footer">
<div class="fn-clear">
<span class="itip" id="stat_copy" lang="${blogTitle}感谢您的访问">
${viewCount1Label}${statistic.statisticBlogViewCount}</span>&nbsp;
${articleCount1Label}${statistic.statisticPublishedBlogArticleCount}&nbsp;
${commentCount1Label}${statistic.statisticPublishedBlogCommentCount}&nbsp;
${onlineVisitor1Label}${onlineVisitorCnt}
<span class="fn-right">&nbsp;${footerContent}</span>
</div>
<div class="fn-clear">
&copy;${year} ${blogTitle?html} All Rights Reserved
<span class="fn-right">&nbsp;
<#-- 根据自己实际情况修改
<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>&nbsp;
-->
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} -->

BIN
iMobile/images/.DS_Store vendored Normal file

Binary file not shown.

BIN
iMobile/images/bbg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
iMobile/images/emotions/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

21
iMobile/index.ftl Normal file
View File

@ -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>

BIN
iMobile/js/.DS_Store vendored Normal file

Binary file not shown.

379
iMobile/js/common.js Normal file
View File

@ -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=/";
}
};
}

16
iMobile/js/common.min.js vendored Normal file

File diff suppressed because one or more lines are too long

16
iMobile/js/l10n.js Normal file
View File

@ -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};

16
iMobile/js/l10n.min.js vendored Normal file
View File

@ -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}

BIN
iMobile/js/lib/.DS_Store vendored Normal file

Binary file not shown.

BIN
iMobile/js/lib/OwO/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -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;
}
})();

290
iMobile/js/lib/OwO/OwO.js Normal file
View File

@ -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": "代码" }
]
}
}

View File

@ -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":"代码"}
]
}
}

1
iMobile/js/lib/OwO/OwO.min.css vendored Normal file

File diff suppressed because one or more lines are too long

153
iMobile/js/lib/OwO/OwO.min.js vendored Normal file
View File

@ -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;
}
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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);

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

748
iMobile/js/page.js Normal file
View File

@ -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";
}
});

30
iMobile/js/welcome.js Normal file
View File

@ -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();
});
}
})();

82
iMobile/js/yilia7.js Normal file
View File

@ -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();

2
iMobile/js/yilia7.min.js vendored Normal file
View File

@ -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();

View File

@ -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?

View File

@ -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

36
iMobile/links.ftl Normal file
View File

@ -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>

157
iMobile/macro-comments.ftl Normal file
View File

@ -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 += '&nbsp;<span class="iconfont icon-anonymous-iconfont"></span>&nbsp;<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>

43
iMobile/macro-head.ftl Normal file
View File

@ -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>

32
iMobile/page.ftl Normal file
View File

@ -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>

BIN
iMobile/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

75
iMobile/side.ftl Normal file
View File

@ -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>&nbsp;
</#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> &nbsp;&nbsp;
<a href="https://weibo.com/itanken/">
<span class="iconfont icon-wb mysites itip ifixed" id="myweibo" lang="官方微博"></span>
</a> &nbsp;&nbsp;
<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> &nbsp;&nbsp;
<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> &nbsp;&nbsp;
<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> &nbsp;&nbsp;
<a href="${servePath}/#register" class="iconfont icon-tianjiayonghu itip ifixed" id="noreg" lang="暂未开放${registerLabel}" rel="nofollow"></a>
</#if>&nbsp;&nbsp;
<#-- 此处的反馈邮箱链接请到 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> &nbsp;&nbsp;
<a rel="alternate" href="${servePath}/blog-articles-rss.do" class="iconfont icon-dingyue itip ifixed" id="rss_do" lang="${subscribeLabel}"></a>
</footer>
</div>

24
iMobile/skin.properties Normal file
View File

@ -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

24
iMobile/tag-articles.ftl Normal file
View File

@ -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>

55
iMobile/tags.ftl Normal file
View File

@ -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>

Binary file not shown.

Binary file not shown.

View File

@ -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 */

View File

@ -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 */

View File

@ -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>

View File

@ -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>
&nbsp;<i class="iconfont icon-duihua" title="${commentLabel}"></i> ${article.articleCommentCount}
&nbsp;<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> &nbsp;
<#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> &nbsp; </#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}">&laquo;</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}">&raquo;</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">&copy; ${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>&nbsp;
<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>