Commit d2c0c0f3 authored by Liang Ding's avatar Liang Ding

💚 修复单元测试

parent 2cc18228
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div class="fn-clear article__wrap">
<#list articles as article>
<article class="article__item
<#if article_index == 0 || article_index == 10>article__item--big
<#elseif article_index &gt; 0 && article_index &lt; 5>article__item--small
<#elseif article_index &gt; 4 && article_index &lt; 8>article__item--big
<#elseif article_index == 8 || article_index == 9>article__item--mid
<#elseif article_index &gt; 10 && article_index &lt; 15>article__item--small
<#elseif article_index &gt; 14 && article_index &lt; 18>article__item--big
<#elseif article_index &gt; 17 && article_index &lt; 20>article__item--mid
<#else>article__item--big
</#if>">
<header class="article__panel">
<div class="article__main">
<h2 class="article__title">
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
${article.articleTitle}
</a>
<#if article.articlePutTop>
<sup>
${topArticleLabel}
</sup>
</#if>
<#if article.hasUpdated>
<sup>
${updatedLabel}
</sup>
</#if>
</h2>
<div class="content-reset article__content">
${article.articleAbstract}
</div>
</div>
<div class="article__meta ft-gray fn-flex">
<time>
${article.articleCreateDate?string("yyyy-MM-dd")}
</time> &nbsp;•&nbsp;
<a href="${servePath}${article.articlePermalink}#comments" class="ft-gray">
${article.articleCommentCount} ${commentLabel}
</a> &nbsp;•&nbsp;
<a href="${servePath}${article.articlePermalink}" class="ft-gray">
${article.articleViewCount} ${viewLabel}
</a>
</div>
</header>
</article>
</#list>
</div>
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}/${paginationPreviousPageNum}" class="pagination__item">&laquo;</a>
<a class="pagination__item" href="${servePath}${path}/1">1</a>
<span class="pagination__item pagination__omit">...</span>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="pagination__item pagination__item--active">${paginationPageNum}</span>
<#else>
<a class="pagination__item" href="${servePath}${path}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<span class="pagination__item pagination__omit">...</span>
<a href="${servePath}${path}/${paginationPageCount}" class="pagination__item">${paginationPageCount}</a>
<a href="${servePath}${path}/${paginationNextPageNum}" class="pagination__item">&raquo;</a>
</#if>
</nav>
</#if>
\ No newline at end of file
This diff is collapsed.
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div class="footer__tag wrapper fn-flex">
<#if 0 != mostUsedCategories?size>
<div class="fn-flex-1">
<div class="module__title">
<span>${categoryLabel}</span>
</div>
<div>
<#list mostUsedCategories as category>
<a class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${category.categoryTagCnt} ${cntLabel}${tagsLabel}"
href="${servePath}/category/${category.categoryURI}">${category.categoryTitle}</a>
</#list>
</div>
</div>
</#if>
<#if 0 != mostUsedTags?size>
<div class="fn-flex-1">
<div class="module__title">
<span>${tagsLabel}</span>
</div>
<div>
<#list mostUsedTags as tag>
<a rel="tag"
class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${tag.tagPublishedRefCount} ${countLabel}${articleLabel}"
href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">${tag.tagTitle}</a>
</#list>
</div>
</div>
</#if>
</div>
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div class="footer__tag wrapper">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<a class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${category.categoryTagCnt} ${cntLabel}${tagsLabel}"
href="${servePath}/category/${category.categoryURI}">${category.categoryTitle}</a>
</#list>
</#if>
<#if 0 != mostUsedTags?size>
<#list mostUsedTags as tag>
<a rel="tag"
class="tag pipe-tooltipped pipe-tooltipped--n"
aria-label="${tag.tagPublishedRefCount} ${countLabel}${articleLabel}"
href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">${tag.tagTitle}</a>
</#list>
</#if>
</div>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div id="${comment.oId}" class="comment__item">
<img class="comment__avatar" src="${comment.commentThumbnailURL}"/>
<main class="comment__body">
<div class="fn-clear">
<span class="comment__user">
<#if "http://" == comment.commentURL>
${comment.commentName}
<#else>
<a href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
</#if>
</span>
<span class="ft-12">
<#if comment.isReply>
<a class="ft-gray" href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}"
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')">
<svg class="ft-gray"><use xlink:href="#icon-reply"></use></svg>
${reply1Label} ${comment.commentOriginalCommentName}
</a>
</#if>
<time class="ft-fade"> • ${comment.commentDate2?string("yyyy-MM-dd")}</time>
</span>
<#if article.commentable>
<a class="fn-right ft-green" href="javascript:replyTo('${comment.oId}')">
<svg><use xlink:href="#icon-reply"></use></svg> ${reply1Label}
</a>
</#if>
</div>
<div class="content-reset">
${comment.commentContent}
</div>
</main>
</div>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* Solo - A small and beautiful blogging system written in Java.
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* @fileoverview util and every page should be used.
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 0.1.0.0, Jan 29, 2018
*/
/**
* @description 皮肤脚本
* @static
*/
var Skin = {
init: function () {
$('body').on('click', '.content-reset img', function () {
window.open(this.src);
});
$(window).scroll(function () {
if ($('#headerNav').length === 0) {
return
}
if ($(window).scrollTop() > 64) {
$('#headerNav').addClass('header__nav--fixed');
$('.main').css('margin-top', '100px');
} else {
$('#headerNav').removeClass('header__nav--fixed');
$('.main').css('margin-top', '50px');
}
});
$(window).scroll();
Util.initPjax(function () {
Util.parseMarkdown('content-reset');
if (location.href === latkeConfig.servePath + '/tags.html') {
Skin.initTags()
}
}, function () {
Util.parseMarkdown('content-reset');
Skin.initArticle();
Skin.initComment($('.post__tags').data('oid'), $('.post__tags').data('tag'))
})
},
initTags: function () {
var $tags = $('#tags');
var tagsArray = $tags.find('.tag')
// 根据引用次数添加样式,产生云效果
var max = parseInt(tagsArray.first().data('count'));
var distance = Math.ceil(max / 5);
for (var i = 0; i < tagsArray.length; i++) {
var count = parseInt($(tagsArray[i]).data('count'));
// 算出当前 tag 数目所在的区间,加上 class
for (var j = 0; j < 5; j++) {
if (count > j * distance && count <= (j + 1) * distance) {
tagsArray[i].className = 'tag tag__level' + j;
break;
}
}
}
// 按字母或者中文拼音进行排序
$tags.html(tagsArray.get().sort(function (a, b) {
var valA = $(a).text().toLowerCase();
var valB = $(b).text().toLowerCase();
// 对中英文排序的处理
return valA.localeCompare(valB);
}));
},
initArticle: function () {
Skin._share('#articleShare')
Skin._share('#articleSideShare')
Skin._share('#articleBottomShare')
var $postSide = $('.post__side')
if ($(window).height() >= $('.post').height()) {
$postSide.css('opacity', 1)
}
$postSide.css('left', (($('.post').offset().left - 20) / 2 - 27) + 'px')
var sideAbsoluteTop = ($(window).height() - 249) / 2 + 125
var beforScrollTop = $(window).scrollTop()
$(window).scroll(function () {
var scrollTop = $(window).scrollTop()
var bottomTop = $('.article__bottom').offset().top
if (scrollTop > 65) {
$postSide.css('opacity', 1)
if (beforScrollTop - scrollTop > 0) {
// up
$('.header').addClass('header--fixed').css({'top': '0'})
$('.main').css('padding-top', '64px')
if ($(window).height() <= $('.post').height() && scrollTop < bottomTop - $(window).height()) {
$('.article__toolbar').css({
'bottom': 0,
'opacity': 1
})
}
} else if (beforScrollTop - scrollTop < 0) {
// down
$('.header').css({'top': '-64px'}).removeClass('header--fixed')
$('.main').css('padding-top', '0')
$('.article__toolbar').css({
'bottom': '-44px',
'opacity': 0
})
}
} else {
if ($(window).height() <= $('.post').height()) {
$postSide.css('opacity', 0)
}
$('.header').removeClass('header--fixed').css('top', '-64px')
$('.main').css('padding-top', '0')
}
if (scrollTop > bottomTop - $(window).height()) {
if (bottomTop < $(window).height()) {
$postSide.css({
'position': 'absolute',
'top': (bottomTop - 125) + 'px'
})
} else {
$postSide.css({
'position': 'absolute',
'top': (bottomTop - sideAbsoluteTop) + 'px'
})
}
} else {
$postSide.css({
'position': 'fixed',
'top': '50%'
})
}
beforScrollTop = scrollTop
})
$(window).scroll()
},
_share: function (id) {
var $this = $(id)
var $qrCode = $this.find('.article__code')
var shareURL = $qrCode.data('url')
var avatarURL = $qrCode.data('avatar')
var title = encodeURIComponent($qrCode.data('title') + ' - ' + $qrCode.data('blogtitle')),
url = encodeURIComponent(shareURL)
var urls = {}
urls.tencent = 'http://share.v.t.qq.com/index.php?c=share&a=index&title=' + title +
'&url=' + url + '&pic=' + avatarURL
urls.weibo = 'http://v.t.sina.com.cn/share/share.php?title=' +
title + '&url=' + url + '&pic=' + avatarURL
urls.google = 'https://plus.google.com/share?url=' + url
urls.twitter = 'https://twitter.com/intent/tweet?status=' + title + ' ' + url
$this.find('span').click(function () {
var key = $(this).data('type')
if (!key) {
return
}
if (key === 'wechat') {
if ($qrCode.find('canvas').length === 0) {
$qrCode.qrcode({
width: 128,
height: 128,
text: shareURL
});
} else {
$qrCode.slideToggle();
}
return false;
}
window.open(urls[key], '_blank', 'top=100,left=200,width=648,height=618')
})
}
};
Skin.init();
\ No newline at end of file
/*
* Solo - A small and beautiful blogging system written in Java.
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
var Skin={init:function(){$("body").on("click",".content-reset img",function(){window.open(this.src)}),$(window).scroll(function(){0!==$("#headerNav").length&&($(window).scrollTop()>64?($("#headerNav").addClass("header__nav--fixed"),$(".main").css("margin-top","100px")):($("#headerNav").removeClass("header__nav--fixed"),$(".main").css("margin-top","50px")))}),$(window).scroll(),Util.initPjax(function(){Util.parseMarkdown("content-reset"),location.href===latkeConfig.servePath+"/tags.html"&&Skin.initTags()},function(){Util.parseMarkdown("content-reset"),Skin.initArticle(),Skin.initComment($(".post__tags").data("oid"),$(".post__tags").data("tag"))})},initTags:function(){for(var t=$("#tags"),e=t.find(".tag"),i=parseInt(e.first().data("count")),o=Math.ceil(i/5),a=0;a<e.length;a++)for(var n=parseInt($(e[a]).data("count")),s=0;s<5;s++)if(n>s*o&&n<=(s+1)*o){e[a].className="tag tag__level"+s;break}t.html(e.get().sort(function(t,e){var i=$(t).text().toLowerCase(),o=$(e).text().toLowerCase();return i.localeCompare(o)}))},initArticle:function(){Skin._share("#articleShare"),Skin._share("#articleSideShare"),Skin._share("#articleBottomShare");var t=$(".post__side");$(window).height()>=$(".post").height()&&t.css("opacity",1),t.css("left",($(".post").offset().left-20)/2-27+"px");var e=($(window).height()-249)/2+125,i=$(window).scrollTop();$(window).scroll(function(){var o=$(window).scrollTop(),a=$(".article__bottom").offset().top;o>65?(t.css("opacity",1),i-o>0?($(".header").addClass("header--fixed").css({top:"0"}),$(".main").css("padding-top","64px"),$(window).height()<=$(".post").height()&&o<a-$(window).height()&&$(".article__toolbar").css({bottom:0,opacity:1})):i-o<0&&($(".header").css({top:"-64px"}).removeClass("header--fixed"),$(".main").css("padding-top","0"),$(".article__toolbar").css({bottom:"-44px",opacity:0}))):($(window).height()<=$(".post").height()&&t.css("opacity",0),$(".header").removeClass("header--fixed").css("top","-64px"),$(".main").css("padding-top","0")),o>a-$(window).height()?a<$(window).height()?t.css({position:"absolute",top:a-125+"px"}):t.css({position:"absolute",top:a-e+"px"}):t.css({position:"fixed",top:"50%"}),i=o}),$(window).scroll()},_share:function(t){var e=$(t),i=e.find(".article__code"),o=i.data("url"),a=i.data("avatar"),n=encodeURIComponent(i.data("title")+" - "+i.data("blogtitle")),s=encodeURIComponent(o),r={};r.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+n+"&url="+s+"&pic="+a,r.weibo="http://v.t.sina.com.cn/share/share.php?title="+n+"&url="+s+"&pic="+a,r.google="https://plus.google.com/share?url="+s,r.twitter="https://twitter.com/intent/tweet?status="+n+" "+s,e.find("span").click(function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===i.find("canvas").length?i.qrcode({width:128,height:128,text:o}):i.slideToggle(),!1):void window.open(r[t],"_blank","top=100,left=200,width=648,height=618")})}};Skin.init();
\ No newline at end of file
This diff is collapsed.
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<nav id="headerNav" class="header__nav">
<div class="wrapper">
<a href="${servePath}">
<svg>
<use xlink:href="#icon-home"></use>
</svg>
${indexLabel}
</a>
<a href="${servePath}/tags.html" rel="section">
<svg>
<use xlink:href="#icon-tag"></use>
</svg> ${allTagsLabel}
</a>
<a href="${servePath}/archives.html">
<svg>
<use xlink:href="#icon-bookmark"></use>
</svg> ${archiveLabel}
</a>
<#list pageNavigations as page>
<a href="${page.pagePermalink}" target="${page.pageOpenTarget}" rel="section">
<#if page.pageIcon != ''><img src="${page.pageIcon}"></#if> ${page.pageTitle}
</a>
</#list>
<a rel="archive" href="${servePath}/links.html">
<svg>
<use xlink:href="#icon-link"></use>
</svg> ${linkLabel}
</a>
<a rel="alternate" href="${servePath}/rss.xml" rel="section">
<svg>
<use xlink:href="#icon-feed"></use>
</svg>
RSS
</a>
<#if isLoggedIn>
<a href="${servePath}/admin-index.do#main">
<svg>
<use xlink:href="#icon-setting"></use>
</svg> ${adminLabel}
</a>
<a href="${logoutURL}">
<svg>
<use xlink:href="#icon-out"></use>
</svg>
${logoutLabel}
</a>
<#else>
<a href="${loginURL}">
<svg>
<use xlink:href="#icon-enter"></use>
</svg> ${loginLabel}
</a>
<a rel="alternate" href="${servePath}/register" rel="section">
<svg>
<use xlink:href="#icon-register"></use>
</svg>
${registerLabel}
</a>
</#if>
</div>
</nav>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount}) - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${archiveDate.archiveDateYear}${archiveDate.archiveDateMonth}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post">
<h2 class="marginLeft12 marginBottom12">${archive1Label}
<#if "en" == localeString?substring(0, 2)>
${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount})
<#else>
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} (${archiveDate.archiveDatePublishedArticleCount})
</#if>
</h2>
</div>
</div>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div class="content">
<div class="result-text"><!--TODO wptouch_core_body_result_text()--></div>
<#list articles as article>
<div class="post" id="post-${article.oId}">
<#if 0 lt article.articleCommentCount>
<div class="comment-bubble">${article.articleCommentCount}</div>
</#if>
<script type="text/javascript">
$wpt(document).ready(function(){
$wpt("a#arrow-${article.oId}").bind( touchStartOrClick, function(e) {
$wpt(this).toggleClass("post-arrow-down");
$wpt('#entry-${article.oId}').wptouchFadeToggle(500);
});
});
</script>
<a class="post-arrow" id="arrow-${article.oId}" href="javascript: return false;"></a>
<div class="calendar">
<div class="cal-month month-${article.articleUpdateDate?string("MM")}">${article.articleUpdateDate?string("MM")}</div>
<div class="cal-date">${article.articleUpdateDate?string("dd")}</div>
</div>
<a rel="bookmark" class="h2" href="${servePath}${article.articlePermalink}">${article.articleTitle}</a>
<div class="post-author">
<span class="lead">By</span> ${article.authorName}<br />
<span class="lead">${tags1Label}</span>
<#list article.articleTags?split(",") as articleTag>
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
${articleTag}</a><#if articleTag_has_next>,</#if>
</#list>
</div>
<div class="clearer"></div>
<div id="entry-${article.oId}" style="display:none" class="mainentry left-justified">
${article.articleAbstract}
<a class="read-more" href="${servePath}${article.articlePermalink}">${readThisPost}</a>
</div>
</div>
</div>
</#list>
<!--TODO ajax load page
<div id="call${paginationCurrentPageNum}" class="ajax-load-more">
<div id="spinner${paginationCurrentPageNum}" class="spin" style="display:none"></div>
<a class="ajax" href="javascript:void(0)" onclick="$wpt('#spinner${paginationCurrentPageNum}').fadeIn(200); $wpt('#ajaxentries${paginationCurrentPageNum}').load('${path}/${paginationPreviousPageNum}', {}, function(){ $wpt('#call${paginationCurrentPageNum}').fadeOut();});">
Load more entries...
</a>
</div>
<div id="ajaxentries${paginationCurrentPageNum}"></div>
-->
<#if 0 != paginationPageCount>
<div class="ajax-load-more">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}/1">${firstPageLabel}</a>
<a id="previousPage" href="${servePath}${path}/${paginationPreviousPageNum}">${previousPageLabel}</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<a href="${servePath}${path}/${paginationPageNum}" class="selected">${paginationPageNum}</a>
<#else>
<a href="${servePath}${path}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}/${paginationNextPageNum}">${nextPagePabel}</a>
<a href="${servePath}${path}/${paginationPageCount}">${lastPageLabel}</a>
</#if>
&nbsp;&nbsp;${sumLabel} ${paginationPageCount} ${pageLabel}
</div>
</#if>
</div>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<#include "macro-comments.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${article.articleTitle} - ${blogTitle}">
<meta name="keywords" content="${article.articleTags}" />
<meta name="description" content="${article.articleAbstract?html}" />
</@head>
<#if previousArticlePermalink??>
<link rel="prev" title="${previousArticleTitle}" href="${servePath}${previousArticlePermalink}">
</#if>
<#if nextArticlePermalink??>
<link rel="next" title="${nextArticleTitle}" href="${servePath}${nextArticlePermalink}">
</#if>
<!-- Open Graph -->
<meta property="og:locale" content="zh_CN"/>
<meta property="og:type" content="article"/>
<meta property="og:title" content="${article.articleTitle}"/>
<meta property="og:description" content="${article.articleAbstract?html}"/>
<meta property="og:image" content="${article.authorThumbnailURL}"/>
<meta property="og:url" content="${servePath}${article.articlePermalink}"/>
<meta property="og:site_name" content="Solo"/>
<!-- Twitter Card -->
<meta name="twitter:card" content="summary"/>
<meta name="twitter:description" content="${article.articleAbstract?html}"/>
<meta name="twitter:title" content="${article.articleTitle}"/>
<meta name="twitter:image" content="${article.authorThumbnailURL}"/>
<meta name="twitter:url" content="${servePath}${article.articlePermalink}"/>
<meta name="twitter:site" content="@DL88250"/>
<meta name="twitter:creator" content="@DL88250"/>
</head>
<body class="classic-wptouch-bg">
<#include "header.ftl">
<div class="content single">
<div class="post">
<a class="sh2" href="${servePath}${article.articlePermalink}" rel="bookmark">${article.articleTitle}</a>
<div class="single-post-meta-top">
<#if article.hasUpdated>
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
<#else>
${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
</#if>
&rsaquo; ${article.authorName}<br />
<a rel="nofollow" href="#comments">${skipToComment}</a>
</div>
</div>
<div class="clearer"></div>
<div class="post article-body" id="post-${article.oId}">
<div id="singlentry" class="left-justified">
${article.articleContent}
<#if "" != article.articleSign.signHTML?trim>
<div class=""><!--TODO sign class-->
${article.articleSign.signHTML}
</div>
</#if>
</div>
<!-- Categories and Tags post footer -->
<div class="single-post-meta-bottom">
${tags1Label}
<#list article.articleTags?split(",") as articleTag>
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}" rel="tag">${articleTag}</a><#if articleTag_has_next>,</#if>
</#list>
</div>
<ul id="post-options">
<#if nextArticlePermalink??>
<li><a href="${servePath}${nextArticlePermalink}" id="oprev"></a></li>
</#if>
<li><a href="mailto:?subject=${article.authorName} - ${article.articleTitle}&body=Check out this post: ${servePath}${article.articlePermalink}" id="omail"></a></li>
<li><a href="javascript:void(0)" onclick="window.open('http://service.weibo.com/share/share.php?url=${servePath}${article.articlePermalink}&title=B3LOG%20-%20${article.articleTitle}', '_blank');" id="otweet"></a></li>
<li><a href="javascript:void(0)" id="obook"></a></li>
<#if previousArticlePermalink??>
<li><a href="${servePath}${previousArticlePermalink}" id="onext"></a></li>
</#if>
</ul>
</div>
<div id="bookmark-box" style="display:none">
<ul>
<li><a href="http://del.icio.us/post?url=${servePath}/?p=12&title=${article.articleTitle}" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/delicious.jpg" alt="" /> Del.icio.us</a></li>
<li><a href="http://digg.com/submit?phase=2&url=${servePath}/?p=12&title=${article.articleTitle}" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/digg.jpg" alt="" /> Digg</a></li>
<li><a href="http://technorati.com/faves?add=${servePath}/?p=12" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/technorati.jpg" alt="" /> Technorati</a></li>
<li><a href="http://ma.gnolia.com/bookmarklet/add?url=${servePath}/?p=12&title=${article.articleTitle}" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/magnolia.jpg" alt="" /> Magnolia</a></li>
<li><a href="http://www.newsvine.com/_wine/save?popoff=0&u=${servePath}/?p=12&h=${article.articleTitle}" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/newsvine.jpg" target="_blank"> Newsvine</a></li>
<li class="noborder"><a href="http://reddit.com/submit?url=${servePath}/?p=12&title=${article.articleTitle}" target="_blank"><img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/bookmarks/reddit.jpg" alt="" /> Reddit</a></li>
</ul>
</div>
<div id="externalRelevantArticles" class="post"></div>
<@comments commentList=articleComments article=article></@comments>
</div>
<#include "footer.ftl">
<@comment_script oId=article.oId>
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
<#if 0 != randomArticlesDisplayCount>
page.loadRandomArticles();
</#if>
<#if 0 != relevantArticlesDisplayCount>
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticles1Label}</h4>');
</#if>
<#if 0 != externalRelevantArticlesDisplayCount>
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
</#if>
</@comment_script>
</body>
</html>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<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 class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post">
<h2 >
${author1Label}${authorName}
</h2>
</div>
</div>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post">
<h2 >${categoryLabel}
<a rel="alternate" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}
(${category.categoryTagCnt})</a>
</h2>
</div>
</div>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<!-- Here we're establishing whether the page was loaded via Ajax or not, for dynamic purposes. If it's ajax, we're not bringing in footer.php -->
<div id="footer">
<center>
<div id="wptouch-switch-link">
<script type="text/javascript">function switch_delayer() { location.reload();}</script>${mobileLabel} <a id="switch-link" onclick="wptouch_switch_confirmation('normal');" href="javascript:void(0)"></a> </div>
</center>
<p><span style="color: gray;">&copy; ${year}</span> - <a href="${servePath}">${blogTitle}</a>${footerContent}</p>
<p>Powered by <a href="https://b3log.org" target="_blank">B3log 开源</a> • <a href="https://solo.b3log.org" target="_blank">Solo</a> ${version},
Theme <a rel="friend" href="https://github.com/b3log/solo-skins" target="_blank">mobile</a>
by <a rel="friend" href="http://vanessa.b3log.org" target="_blank">Vanessa</a></p>
</div>
<script type="text/javascript" src="${staticServePath}/js/lib/jquery/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript" src="${staticServePath}/js/common${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
<script type="text/javascript">
var latkeConfig = {
"servePath": "${servePath}",
"isLoggedIn": "${isLoggedIn?string}",
"staticServePath": "${staticServePath}"
};
var Label = {
"skinDirName": "${skinDirName}",
"em00Label": "${em00Label}",
"em01Label": "${em01Label}",
"em02Label": "${em02Label}",
"em03Label": "${em03Label}",
"em04Label": "${em04Label}",
"em05Label": "${em05Label}",
"em06Label": "${em06Label}",
"em07Label": "${em07Label}",
"em08Label": "${em08Label}",
"em09Label": "${em09Label}",
"em10Label": "${em10Label}",
"em11Label": "${em11Label}",
"em12Label": "${em12Label}",
"em13Label": "${em13Label}",
"em14Label": "${em14Label}"
};
$(document).ready(function () {
Util.init();
var toggleArchive = function (it) {
var $it = $(it);
$it.next().slideToggle(260, function () {
var h4Obj = $it.find("h4");
if (this.style.display === "none") {
h4Obj.html("${archiveLabel} +");
} else {
h4Obj.html("${archiveLabel} -");
}
});
}
});
</script>
${plugins}
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<!--TODO i18n-->
<!-- New noscript check, we need js on now folks -->
<noscript>
<div id="noscript-wrap">
<div id="noscript">
<h2>Notice</h2>
<p>JavaScript for Mobile Safari is currently turned off.</p>
<p>Turn it on in <em>Settings &rsaquo; Safari</em><br /> to view this website.</p>
</div>
</div>
</noscript>
<!-- Prowl: if DM is sent, let's tell the user what happened -->
<!-- #start The Search Overlay -->
<#--
<div id="wptouch-search">
<div id="wptouch-search-inner">
<form target="_blank" id="searchform" action="http://zhannei.baidu.com/cse/site">
<input id="search" placeholder="Search..." type="text" name="q" />
<input type="submit" id="search-submit" value="" />
<input type="hidden" name="cc" value="${serverHost}">
<a href="javascript:void(0)"><img class="head-close" src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/head-close.png" alt="close" /></a>
</form>
</div>
</div>
-->
<div id="wptouch-menu" class="dropper">
<div id="wptouch-menu-inner">
<div id="menu-head">
<div id="tabnav">
<a href="#head-pages"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Pages.png" alt=""/></a>
<a href="#head-tags"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Tags.png" alt=""/></a>
<a href="#head-cats"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Archives.png" alt=""/></a>
<a href="#head-category"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/category.png" alt=""/></a>
</div>
<ul id="head-pages">
<li id="admin" data-login="${isLoggedIn?string}"><a href="${servePath}/admin-index.do#main"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Home.png" alt=""/>Admin</a></li>
<#list pageNavigations as page>
<li><a href="${page.pagePermalink}" target="${page.pageOpenTarget}"><#if page.pageIcon != ''><img class="page-icon" src="${page.pageIcon}"></#if>${page.pageTitle}</a></li>
</#list>
<li><a rel="alternate" href="${servePath}/rss.xml"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/RSS.png" alt="" />RSS Feed</a></li>
<li><a href="${servePath}/search?keyword=">Search</a></li>
</ul>
<ul id="head-tags">
<#if 0 != mostUsedTags?size>
<#list mostUsedTags as tag>
<li><a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">${tag.tagTitle} <span>(${tag.tagPublishedRefCount})</span></a></li>
</#list>
</#if>
</ul>
<ul id="head-cats">
<#if 0 != archiveDates?size>
<#list archiveDates as archiveDate>
<li>
<#if "en" == localeString?substring(0, 2)>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}">
${archiveDate.monthName} ${archiveDate.archiveDateYear} <span>(${archiveDate.archiveDatePublishedArticleCount})</span></a>
<#else>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}">
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} <span>(${archiveDate.archiveDatePublishedArticleCount})</span></a>
</#if>
</li>
</#list>
</#if>
</ul>
<ul id="head-category">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}</a>
</li>
</#list>
</#if>
</ul>
</div>
</div>
</div>
<div id="headerbar">
<div id="headerbar-title">
<!-- This fetches the admin selection logo icon for the header, which is also the bookmark icon -->
<img id="logo-icon" src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Apps.png" alt="aln" />
<a rel="nofollow" href="${servePath}">${blogTitle}</a>
</div>
<div id="headerbar-menu">
<a href="javascript:void(0)"></a>
</div>
</div>
<div id="drop-fade">
<#--<a id="searchopen" class="top" href="javascript:void(0)">${searchLabel}</a>-->
<!-- #start the Prowl Message Area -->
<div id="prowl-message" style="display:none">
<div id="push-style-bar"></div><!-- filler to get the styling just right -->
<img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/push-icon.png" alt="push icon" />
<h4>Send a Message</h4>
<p>This message will be pushed to the admin's iPhone instantly.</p><!--TODO instant msg-->
<form id="prowl-direct-message" method="post" action="/blog/">
<p>
<input name="prowl-msg-name" id="prowl-msg-name" type="text" />
<label for="prowl-msg-name">Name</label>
</p>
<p>
<input name="prowl-msg-email" id="prowl-msg-email" type="text" />
<label for="prowl-msg-email">E-Mail</label>
</p>
<textarea name="prowl-msg-message"></textarea>
<input type="hidden" name="wptouch-prowl-message" value="1" />
<input type="hidden" name="_nonce" value="3690953c13" />
<input type="submit" name="prowl-submit" value="Send Now" id="prowl-submit" />
</form>
<div class="clearer"></div>
</div>
</div>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${blogTitle}">
<#if metaKeywords??>
<meta name="keywords" content="${metaKeywords}"/>
</#if>
<#if metaDescription??>
<meta name="description" content="${metaDescription}"/>
</#if>
</@head>
</head>
<body class="classic-wptouch-bg">
<#include "header.ftl">
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>
/*
* Solo - A small and beautiful blogging system written in Java.
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
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}
\ No newline at end of file
#
# Solo - A small and beautiful blogging system written in Java.
# Copyright (c) 2010-2018, b3log.org & hacpai.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
#
# Description: Mobile skin language configurations(en_US).
# Version: 1.0.0.3, Aug 30, 2012
# Author: Liang Ding
# Author: Liyuan Li
#
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
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
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
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?
mobileLabel=Mobile Theme
responses=Responses
commentSuccess=Success! Comment added.
refresh2CComment=&lt; Refresh the page to see your comment.
readThisPost=Read This Post
skipToComment=&darr; Skip to comments
searchLabel=Search
publishing=Publishing...
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#macro comments commentList article>
<!-- Let's rock the comments -->
<!-- You can start editing below here... but make a backup first! -->
<div class="comment_wrapper" id="comments">
<#if 0 lt commentList?size>
<h3 onclick="bnc_showhide_coms_toggle();" id="com-head">
${commentList?size} ${responses}
</h3>
</#if>
<ol class="commentlist" id="commentlist">
<#list commentList as comment>
<#include "common-comment.ftl"/>
</#list>
</ol>
<#if article.commentable>
<div id="textinputwrap">
<div id="refresher" style="display:none;">
<img src="${staticServePath}/skins/${skinDirName}/images/good.png" alt="checkmark" />
<h3>${commentSuccess}</h3>
<a href="javascript:this.location.reload();">${refresh2CComment}</a>
</div>
<div id="commentForm">
<h3 id="respond">${postCommentsLabel}</h3>
<#if !isLoggedIn>
<p>
<input type="text" id="commentName" size="22" tabindex="1"/>
<label for="author">${commentNameLabel} *</label>
</p>
<p>
<input type="text" id="commentEmail" size="22" tabindex="2" />
<label for="email">${commentEmailLabel} *</label>
</p>
<p>
<input type="text" id="commentURL" size="22" tabindex="3" />
<label for="url">${commentURLLabel}</label>
</p>
</#if>
<p>
<span id="commentErrorTip" style="display:none;"></span>
</p>
<p><textarea id="comment" tabindex="4"></textarea></p>
<#if !isLoggedIn>
<p>
<input type="text" id="commentValidate" tabindex="5" />
<label for="url">${captchaLabel}</label>
<img id="captcha" alt="validate" src="${servePath}/captcha.do" />
</p>
</#if>
<p>
<input class="reply-button" id="submitCommentButton" type="submit" onclick="page.submitComment();" value="${submmitCommentLabel}" tabindex="6" />
<div id="loading" style="display:none">
<img src="${staticServePath}/skins/${skinDirName}/themes/core/core-images/comment-ajax-loader.gif" alt="" /> <p>${publishing}</p>
</div>
</p>
</div>
</div>
</#if><!--textinputwrap div-->
</div>
</#macro>
<#macro comment_script oId>
<script type="text/javascript" src="${staticServePath}/js/page${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
<script type="text/javascript">
Page.prototype.submitComment = function(commentId, state) {
if (!state) {
state = '';
}
var 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 (!$("#admin").data("login")) {
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") {
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) {
$("#commentValidate" + state).val("").focus();
$("#commentErrorTip" + state).html(result.msg);
$("#captcha" + state).attr("src", "/captcha.do?code=" + Math.random());
$wpt('#commentErrorTip' + state).show();
$wpt("#loading").fadeOut(400);
return;
}
$wpt("#commentForm").hide();
$wpt("#loading").fadeOut(400);
$wpt("#refresher").fadeIn(400);
$("#comment" + state).val("");
$("#commentValidate" + state).val("");
$("#replyForm").remove();
}, // end success
error: function() {
} //end error
});
}
};
var replyTo = function(id) {
var commentFormHTML = "<div id='replyForm'>";
page.addReplyForm(id, commentFormHTML, "</div>");
};
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}"
});
(function() {
page.load();
// emotions
page.replaceCommentsEm("#commentlist .combody");
<#nested>
})();
</script>
</#macro>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#macro head title>
<meta charset="utf-8" />
<title>${title}</title>
<#nested>
<meta name="author" content="${blogTitle?html}" />
<meta name="generator" content="Solo" />
<meta name="copyright" content="B3log" />
<meta name="owner" content="B3log Team" />
<meta name="revised" content="${blogTitle?html}, ${year}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" />
<meta http-equiv="Window-target" content="_top" />
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/themes/default/style.css?${staticResourceVersion}" charset="utf-8" />
<link rel="manifest" href="${servePath}/manifest.json">
<link rel="search" type="application/opensearchdescription+xml" title="${title}" href="/opensearch.xml">
<style type="text/css">
#headerbar, #wptouch-login, #wptouch-search {
background: #000000 url(/skins/${skinDirName}/themes/core/core-images/head-fade-bk.png);
}
#headerbar-title, #headerbar-title a {
color: #eeeeee;
}
#wptouch-menu-inner a:hover {
color: #006bb3;
}
#catsmenu-inner a:hover {
color: #006bb3;
}
#drop-fade {
background: #333333;
}
a, h3#com-head {
color: #006bb3;
}
a.h2, a.sh2, .page h2 {
font-family: 'Helvetica Neue';
}
a.h2{
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
</style>
<link href="${servePath}/rss.xml" title="RSS" type="application/rss+xml" rel="alternate" />
<link rel="icon" type="image/png" href="${servePath}/favicon.png" />
<script type='text/javascript' src='${staticServePath}/skins/${skinDirName}/js/l10n${miniPostfix}.js?${staticResourceVersion}'></script>
<script type="text/javascript" src="${staticServePath}/js/lib/jquery/jquery.min.js" charset="utf-8"></script>
<script type='text/javascript' src='${staticServePath}/skins/${skinDirName}/themes/core/core.js?${staticResourceVersion}'></script>
<script type="text/javascript">
// Hides the addressbar on non-post pages
function hideURLbar() { window.scrollTo(0,1); }
addEventListener('load', function() { setTimeout(hideURLbar, 0); }, false );
</script>
${htmlHead}
</#macro>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#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 class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post article-body">
${page.pageContent}
</div>
<@comments commentList=pageComments article=page></@comments>
</div>
<#include "footer.ftl">
<@comment_script oId=page.oId></@comment_script>
</body>
</html>
\ No newline at end of file
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<div id="sideNavi" class="side-navi">
<#if "" != noticeBoard>
<ul class="marginTop12">
<li>
<h4>${noticeBoardLabel}</h4>
</li>
<li class="side-navi-notice">${noticeBoard}</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != recentComments?size>
<ul>
<li>
<h4>${recentCommentsLabel}</h4>
</li>
<li>
<ul id="recentComments">
<#list recentComments as comment>
<li>
<#if "http://" == comment.commentURL>
${comment.commentName}<#else>
<a target="_blank" href="${comment.commentURL}">
${comment.commentName}</a></#if>:
<a rel="nofollow" class='side-comment' href="${servePath}${comment.commentSharpURL}">
${comment.commentContent}
</a>
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != mostCommentArticles?size>
<ul>
<li>
<h4>${mostCommentArticlesLabel}</h4>
</li>
<li>
<ul>
<#list mostCommentArticles as article>
<li>
<sup>[${article.articleCommentCount}]</sup><a rel="nofollow" title="${article.articleTitle}"
href="${servePath}${article.articlePermalink}">${article.articleTitle}</a>
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != mostViewCountArticles?size>
<ul>
<li>
<h4>${mostViewCountArticlesLabel}</h4>
</li>
<li>
<ul id="mostViewCountArticles">
<#list mostViewCountArticles as article>
<li>
<sup>[${article.articleViewCount}]</sup><a rel="nofollow" title="${article.articleTitle}" href="${servePath}${article.articlePermalink}">${article.articleTitle}</a>
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != mostUsedTags?size>
<ul>
<li>
<h4>${popTagsLabel}</h4>
</li>
<li>
<ul>
<#list mostUsedTags as tag>
<li>
<a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">
${tag.tagTitle}</a>
(${tag.tagPublishedRefCount})
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != links?size>
<ul>
<li>
<h4>${linkLabel}</h4>
</li>
<li>
<ul id="sideLink">
<#list links as link>
<li>
<a rel="friend" href="${link.linkAddress}" title="${link.linkTitle}" target="_blank">
<img alt="${link.linkTitle}"
src="${faviconAPI}<#list link.linkAddress?split('/') as x><#if x_index=2>${x}<#break></#if></#list>" width="16" height="16" /></a>
<a rel="friend" href="${link.linkAddress}" title="${link.linkTitle}" target="_blank">${link.linkTitle}
</a>
<#-- ${link.linkDescription} -->
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != archiveDates?size>
<ul>
<li onclick="toggleArchive(this)" class="pointer">
<h4>${archiveLabel} +</h4>
</li>
<li class="none">
<ul>
<#list archiveDates as archiveDate>
<li>
<#if "en" == localeString?substring(0, 2)>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
title="${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})">
${archiveDate.monthName} ${archiveDate.archiveDateYear}</a>(${archiveDate.archiveDatePublishedArticleCount})
<#else>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})">
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}</a>(${archiveDate.archiveDatePublishedArticleCount})
</#if>
</li>
</#list>
</ul>
</li>
</ul>
</#if>
</div>
<ul id="head-category">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
aria-label="${category.categoryTagCnt} ${tagsLabel}"
class="tag tooltipped tooltipped-n">
${category.categoryTitle}</a>
</li>
</#list>
</#if>
</ul>
\ No newline at end of file
#
# Solo - A small and beautiful blogging system written in Java.
# Copyright (c) 2010-2018, b3log.org & hacpai.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
#
# Description: Mobile skin.
# Version: 1.0.0.15, Feb 20, 2017
# Author: Liang Ding
#
name=mobile
memo=\u8BF7\u4E0D\u8981\u4ECE\u90E8\u7F72\u76EE\u5F55\u4E2D\u5220\u9664\u8BE5\u76AE\u80A4\uFF0C\u5426\u5219\u79FB\u52A8\u8BBE\u5907\u8BBF\u95EE\u65F6\u535A\u5BA2\u5C06\u4E0D\u53EF\u7528\u3002
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${tag.tagTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${tag.tagTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post">
<h2 >${tag1Label}
<a rel="alternate" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}"><span id="tagArticlesTag">
${tag.tagTitle}
</span>(${tag.tagPublishedRefCount})</a>
</h2>
</div>
</div>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>
<#--
Solo - A small and beautiful blogging system written in Java.
Copyright (c) 2010-2018, b3log.org & hacpai.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${allTagsLabel} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${allTagsLabel}"/>
<meta name="description" content="<#list tags as tag>${tag.tagTitle}<#if tag_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="classic-wptouch-bg ">
${topBarReplacement}
<#include "header.ftl">
<div class="content single">
<div class="post">
<ul id="tags">
<#list tags as tag>
<span>
<a rel="tag" data-count="${tag.tagPublishedRefCount}"
href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagTitle}">
<span>${tag.tagTitle}</span>
(<b>${tag.tagPublishedRefCount}</b>)
</a>
</span>&nbsp;&nbsp;
</#list>
</ul>
</div>
</div>
<#include "footer.ftl">
</body>
</html>
/*
* Solo - A small and beautiful blogging system written in Java.
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* WPtouch 1.9.x -The WPtouch Core JS File
*/
var $wpt = jQuery.noConflict();
if ( ( navigator.platform == 'iPhone' || navigator.platform == 'iPod' ) && typeof orientation != 'undefined' ) {
var touchStartOrClick = 'touchstart';
} else {
var touchStartOrClick = 'click';
};
/* Try to get out of frames! */
if ( window.top != window.self ) {
window.top.location = self.location.href
}
$wpt.fn.wptouchFadeToggle = function( speed, easing, callback ) {
return this.animate( {
opacity: 'toggle'
}, speed, easing, callback );
};
/**
* @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=/";
}
};
function wptouch_switch_confirmation(skin, e ) {
if ( document.cookie && document.cookie.indexOf( 'btouch_switch_toggle' ) > -1 ) {
// just switch
Cookie.createCookie("btouch_switch_toggle", skin, 365);
$wpt( 'a#switch-link' ).toggleClass( 'offimg' );
setTimeout('switch_delayer()', 1250 );
} else {
// ask first
Cookie.createCookie("btouch_switch_toggle", skin, 365);
if ( confirm( "Switch to regular view? \n \n You can switch back again in the top bar." ) ) {
$wpt( 'a#switch-link' ).toggleClass( 'offimg' );
setTimeout( 'switch_delayer()', 1350 );
} else {
e.preventDefault();
e.stopImmediatePropagation();
}
}
}
if ( $wpt( '#prowl-success' ).length ) {
setTimeout( function() {
$wpt( '#prowl-success' ).fadeOut( 350 );
}, 5250 );
}
if ( $wpt( '#prowl-fail' ).length ) {
setTimeout( function() {
$wpt( '#prowl-fail' ).fadeOut( 350 );
}, 5250 );
}
$wpt(function() {
var tabContainers = $wpt( '#menu-head > ul' );
$wpt( '#tabnav a' ).bind(touchStartOrClick, function () {
tabContainers.hide().filter( this.hash ).show();
$wpt( '#tabnav a' ).removeClass( 'selected' );
$wpt( this ).addClass( 'selected' );
return false;
}).filter( ':first' ).trigger( touchStartOrClick );
});
function bnc_showhide_coms_toggle() {
$wpt( '#commentlist' ).wptouchFadeToggle( 350 );
$wpt( 'img#com-arrow' ).toggleClass( 'com-arrow-down' );
$wpt( 'h3#com-head' ).toggleClass( 'comhead-open' );
}
function doWPtouchReady() {
$wpt( '#headerbar-menu a' ).bind( touchStartOrClick, function( e ){
$wpt( '#wptouch-menu' ).wptouchFadeToggle( 350 );
$wpt( '#headerbar-menu a' ).toggleClass( 'open' );
});
$wpt( 'a#searchopen, #wptouch-search-inner a' ).bind( touchStartOrClick, function( e ){
$wpt( '#wptouch-search' ).wptouchFadeToggle( 350 );
});
$wpt( 'a#prowlopen' ).bind( touchStartOrClick, function( e ){
$wpt( '#prowl-message' ).wptouchFadeToggle( 350 );
});
$wpt( 'a#wordtwitopen' ).bind( touchStartOrClick, function( e ){
$wpt( '#wptouch-wordtwit' ).wptouchFadeToggle( 350 );
});
$wpt( 'a#gigpressopen' ).bind( touchStartOrClick, function( e ){
$wpt( '#wptouch-gigpress' ).wptouchFadeToggle( 350 );
});
$wpt( 'a#loginopen, #wptouch-login-inner a' ).bind( touchStartOrClick, function( e ){
$wpt( '#wptouch-login' ).wptouchFadeToggle(350);
});
$wpt( 'a#obook' ).bind( touchStartOrClick, function() {
$wpt( '#bookmark-box' ).wptouchFadeToggle(350);
});
$wpt( '.singlentry img, .singlentry .wp-caption' ).each( function() {
if ( $wpt( this ).width() <= 250 ) {
$wpt( this ).addClass( 'aligncenter' );
}
});
if ( $wpt( '#FollowMeTabLeftSm' ).length ) {
$wpt( '#FollowMeTabLeftSm' ).remove();
}
$wpt( '.post' ).fitVids();
}
$wpt( document ).ready( function() {
doWPtouchReady();
} );
/*!
* FitVids 1.0
* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
* Date: Thu Sept 01 18:00:00 2011 -0500
*/
(function( $ ){
$.fn.fitVids = function( options ) {
var settings = {
customSelector: null
}
var div = document.createElement('div'),
ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0];
div.className = 'fit-vids-style';
div.innerHTML = '&shy;<style> \
.fluid-width-video-wrapper { \
width: 100%; \
position: relative; \
padding: 0; \
} \
\
.fluid-width-video-wrapper iframe, \
.fluid-width-video-wrapper object, \
.fluid-width-video-wrapper embed { \
position: absolute; \
top: 0; \
left: 0; \
width: 100%; \
height: 100%; \
} \
</style>';
ref.parentNode.insertBefore(div,ref);
if ( options ) {
$.extend( settings, options );
}
return this.each(function(){
var selectors = [
"iframe[src^='http://player.vimeo.com']",
"iframe[src^='http://www.youtube.com']",
"iframe[src^='http://www.kickstarter.com']",
"object",
"embed"
];
if (settings.customSelector) {
selectors.push(settings.customSelector);
}
var $allVideos = $(this).find(selectors.join(','));
$allVideos.each(function(){
var $this = $(this),
height = this.tagName == 'OBJECT' ? $this.attr('height') : $this.height(),
aspectRatio = height / $this.width();
$this.wrap('<div class="fluid-width-video-wrapper" />').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%");
$this.removeAttr('height').removeAttr('width');
});
});
}
})( jQuery );
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment