diff --git a/community-bubbles/archive-articles.ftl b/community-bubbles/archive-articles.ftl new file mode 100644 index 0000000..b21e6e7 --- /dev/null +++ b/community-bubbles/archive-articles.ftl @@ -0,0 +1,32 @@ +<#include "macro-head.ftl"> + + + + <@head title="${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount}) - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+

${archive1Label} + <#if "en" == localeString?substring(0, 2)> + ${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount}) + <#else> + ${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} (${archiveDate.archiveDatePublishedArticleCount}) + +

+ <#include "article-list.ftl"> +
+
+ <#include "side.ftl"> +
+ + + diff --git a/community-bubbles/article-list.ftl b/community-bubbles/article-list.ftl new file mode 100644 index 0000000..ae336f4 --- /dev/null +++ b/community-bubbles/article-list.ftl @@ -0,0 +1,180 @@ +<#assign leftId=users[0].oId /> +<#assign rightId=users[1].oId/> +<#list articles as article> +
+ <#if article.authorId!=rightId && article.authorId!=leftId> +
+
+

+ by  + + + ${article.authorName} + +    + + <#if article.hasUpdated> + ${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")} + <#else> + ${article.articleCreateDate?string("yyyy-MM-dd HH:mm")} + +    + ( + ${article.articleCommentCount} + / + ${article.articleViewCount} + )

+
+ +
+

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

+
+ ${article.articleAbstract} +
+ +
+ + + <#else> + <#if article.authorId==rightId> +
+ <#elseif article.authorId==leftId> +
+ +
+ + +
+
+ +
+
+ +
+ <#if article.authorId==rightId> +
+
+ <#elseif article.authorId==leftId> +
+
+ +

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

+
+ ${article.articleAbstract} +
+ +
+
+ + +
+
+ +<#if 0 != paginationPageCount> + + \ No newline at end of file diff --git a/community-bubbles/article.ftl b/community-bubbles/article.ftl new file mode 100644 index 0000000..82a6571 --- /dev/null +++ b/community-bubbles/article.ftl @@ -0,0 +1,127 @@ +<#include "macro-head.ftl"> +<#include "macro-comments.ftl"> + + + + <@head title="${article.articleTitle} - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+
+
+ +
+
+
+ +
+ +
+
+

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

+
+ ${article.articleContent} + <#if "" != article.articleSign.signHTML?trim> +
+ ${article.articleSign.signHTML} +
+ +
+
+ + ${tags1Label} + <#list article.articleTags?split(",") as articleTag> + <#if articleTag_has_next>, + +
+ +
+
+
+ <#if nextArticlePermalink??> + ${nextArticle1Label} ${nextArticleTitle} + + <#if previousArticlePermalink??> + ${previousArticle1Label} ${previousArticleTitle} + +
+
+
+
+
+
+
+ <@comments commentList=articleComments article=article> +
+
+ <#include "side.ftl"> +
+ + <@comment_script oId=article.oId> + page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}"; + <#if 0 != randomArticlesDisplayCount> + page.loadRandomArticles(); + + <#if 0 != relevantArticlesDisplayCount> + page.loadRelevantArticles('${article.oId}', '

${relevantArticles1Label}

'); + + <#if 0 != externalRelevantArticlesDisplayCount> + page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,"); + + + + diff --git a/community-bubbles/author-articles.ftl b/community-bubbles/author-articles.ftl new file mode 100644 index 0000000..009a96d --- /dev/null +++ b/community-bubbles/author-articles.ftl @@ -0,0 +1,28 @@ +<#include "macro-head.ftl"> + + + + <@head title="${authorName} - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+

+ ${commentName1Label}${authorName} +

+ <#include "article-list.ftl"> +
+
+ <#include "side.ftl"> +
+ + + diff --git a/community-bubbles/css/bubbles.css b/community-bubbles/css/bubbles.css new file mode 100644 index 0000000..2adb199 --- /dev/null +++ b/community-bubbles/css/bubbles.css @@ -0,0 +1,135 @@ +/* ------------------------------------------ +PURE CSS SPEECH BUBBLES +by Nicolas Gallagher +- http://nicolasgallagher.com/pure-css-speech-bubbles/ + +http://nicolasgallagher.com +http://twitter.com/necolas + +Created: 02 March 2010 +Version: 1.2 (03 March 2011) + +Dual licensed under MIT and GNU GPLv2 � Nicolas Gallagher +------------------------------------------ */ + +/* NOTE: Some declarations use longhand notation so that it can be clearly +explained what specific properties or values do and what their relationship +is to other properties or values in creating the effect */ + +/* ============================================================================================================================ +== GENERAL STYLES +** ============================================================================================================================ */ + + + + + + +/* ============================================================================================================================ +== BUBBLE WITH A BORDER AND TRIANGLE +** ============================================================================================================================ */ + +/* THE SPEECH BUBBLE +------------------------------------------------------------------------------------------------------------------------------- */ + +.triangle-border { + position:relative; + padding:15px; + margin:1em 0 3em; + border:5px solid #5a8f00; + color:#333; + background:#fff; + /* css3 */ + -webkit-border-radius:10px; + -moz-border-radius:10px; + border-radius:10px; +} + +/* Variant : for left positioned triangle +------------------------------------------ */ + +.triangle-border.left { + margin-left:30px; +} + +/* Variant : for right positioned triangle +------------------------------------------ */ + +.triangle-border.right { + margin-right:30px; +} + +/* THE TRIANGLE +------------------------------------------------------------------------------------------------------------------------------- */ + +.triangle-border:before { + content:""; + position:absolute; + bottom:-20px; /* value = - border-top-width - border-bottom-width */ + left:40px; /* controls horizontal position */ + border-width:20px 20px 0; + border-style:solid; + border-color:#5a8f00 transparent; + /* reduce the damage in FF3.0 */ + display:block; + width:0; +} + +/* creates the smaller triangle */ +.triangle-border:after { + content:""; + position:absolute; + bottom:-13px; /* value = - border-top-width - border-bottom-width */ + left:47px; /* value = (:before left) + (:before border-left) - (:after border-left) */ + border-width:13px 13px 0; + border-style:solid; + border-color:#fff transparent; + /* reduce the damage in FF3.0 */ + display:block; + width:0; +} + +/* Variant : left +------------------------------------------ */ + +/* creates the larger triangle */ +.triangle-border.left:before { + top:10px; /* controls vertical position */ + bottom:auto; + left:-30px; /* value = - border-left-width - border-right-width */ + border-width:15px 30px 15px 0; + border-color:transparent #5a8f00; +} + + +/* creates the smaller triangle */ +.triangle-border.left:after { + top:16px; /* value = (:before top) + (:before border-top) - (:after border-top) */ + bottom:auto; + left:-21px; /* value = - border-left-width - border-right-width */ + border-width:9px 21px 9px 0; + border-color:transparent #fff; +} + +/* Variant : right +------------------------------------------ */ + +/* creates the larger triangle */ +.triangle-border.right:before { + top:10px; /* controls vertical position */ + bottom:auto; + left:auto; + right:-30px; /* value = - border-left-width - border-right-width */ + border-width:15px 0 15px 30px; + border-color:transparent pink; +} + +/* creates the smaller triangle */ +.triangle-border.right:after { + top:16px; /* value = (:before top) + (:before border-top) - (:after border-top) */ + bottom:auto; + left:auto; + right:-21px; /* value = - border-left-width - border-right-width */ + border-width:9px 0 9px 21px; + border-color:transparent #fff; +} diff --git a/community-bubbles/css/community-bubbles.css b/community-bubbles/css/community-bubbles.css new file mode 100644 index 0000000..025c468 --- /dev/null +++ b/community-bubbles/css/community-bubbles.css @@ -0,0 +1,759 @@ +@charset "utf-8"; +/* + * skin community style + * + * @author Liyuan Li + * @version 1.0.0.7, May 15, 2012 +*/ +body { + background-color: #EFEFEF; + color: #555555; + min-width: 960px; +} + +.copyright { + background:#E2E2E2; + text-align:left; + margin:20px 0; + padding:3px 0 3px 10px; + color:#333; + font-size:9pt; + line-height:22px; + border-left:5px solid #797979; +} + +a, a:link { + color:#000000; + text-decoration: none; +} + +a:active, a:visited { + color: #000000; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.content { + width: 940px; + margin: 0 auto; +} + +.content>h2 { + margin: -20px 0 20px 0; +} + +.hr { + background: url("../images/indentline-light.png") repeat-x scroll left top transparent; + margin: 20px 0 40px; + clear: both; + height: 2px; +} + +.arrow-right { + background: url("../images/icon.png") 0px -64px no-repeat; + float: left; + height: 38px; + width: 14px; +} + +input[type='button'] { + border-radius:5px; + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset, 0 0 2px rgba(255, 255, 255, 0.3) inset, 0 1px 2px rgba(0, 0, 0, 0.29); + background-color: #000000; + background-image: linear-gradient(top,#333333,#000000); + background-image: -moz-linear-gradient(top,#333333,#000000); + background-image: -ms-linear-gradient(top,#333333,#000000); + background-image: -o-linear-gradient(top,#333333,#000000); + background-image: -webkit-gradient(linear,left top,left bottom,from(#333333),to(#000000)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#000000'); + border: 1px solid #000000; + color: white; + margin: 15px 0 0 200px; + padding: 7px 13px; + height: auto; +} + +input[type='button']:hover { + background-color: #333333; + background-image: linear-gradient(top,#333333,#212121); + background-image: -moz-linear-gradient(top,#333333,#212121); + background-image: -ms-linear-gradient(top,#333333,#212121); + background-image: -o-linear-gradient(top,#333333,#212121); + background-image: -webkit-gradient(linear,left top,left bottom,from(#333333),to(#212121)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#212121'); +} + +.minwidth20per{ + max-width:20%; +} +.minwidth70per{ + max-width:70%; +} + +.marginBottom40 { + margin-bottom: 40px; +} + +/* header */ +.header-user { + background-color: #DEDEDE; + padding-top: 1px; +} + +.header-navi { + background: url("../images/icon.png") 0px -130px repeat-x #333333; + margin-bottom: 50px; +} + +a.header-title { + color: #FFFFFF; + text-decoration: none; + line-height: 49px; + font: bold 35px/53px '微软雅黑,Arial,Helvetica'; +} + +.sub-title { + color: #9BC4CE; + margin-left: 10px; +} + +.header-navi-main .tabs { + list-style: none; + height: 57px; +} + +.header-navi-main .tab { + float: left; + font-size: 16px; + margin-left: 1px; + height: 57px; +} + +.header-navi-main .tab:hover { + background: url("../images/icon.png") repeat-x scroll 0 -130px #9BC4CE; +} + +#header-pages { + position: relative; +} + +.header-navi-main .tab a { + color: #FFFFFF; + display: block; + font-weight: bold; + line-height: 22px; + padding: 19px 16px 16px; + text-decoration: none; +} + +#header-pages:hover .sub-tabs { + left: 0px; + list-style: none; + position: absolute; + top: 57px; + display: block; +} + +.header-navi-main .sub-tab { + background-color: #9BC4CE; + border-bottom: 1px solid #76A0AA; + border-top: 1px solid #B4D9E2; + margin-left: 0px; +} + +.header-navi-main .sub-tab a { + min-width: 98px; + padding: 0 16px; + line-height: 42px; + font-size: 14px; +} + +.header-navi-main .sub-tab:hover { + background-color: #76A0AA; +} + +/* article list */ +.article-header { + color: #9F9F9F; + float: left; + font-size: 12px; + padding-top: 15px; + /* width: 180px; */ + display:inline-block; +} + +.article-header ul { + background-color: #333333; + list-style: none; + width: 160px; +} + +.article-header ul li { + background: url("../images/indentline.png") repeat-x scroll left bottom transparent; + font-weight: bold; + padding: 7px 15px 8px; + margin-left: 0px; +} + +.article-header ul li a { + color: #FFFFFF; + display: block; +} + +.article-main { + background-color: #FFFFFF; + border-bottom: 1px solid #E3E3E3; + border-right: 1px solid #E3E3E3; + margin-right:20px; + padding: 20px 20px 0; + /* width: 499px; */ + /* float: left; */ + overflow: hidden; + display:inline-block; +} + +.article-main-right { + background-color: #FFFFFF; + border-bottom: 1px solid #E3E3E3; + border-left: 1px solid #E3E3E3; + border-right:none; + margin-right:20px; + padding: 20px 20px 0; + /* width: 499px; */ + /* float: left; */ + overflow: hidden; + display:inline-block; +} + +.article-body { + line-height: 145%; +} + +.article-body a { + color: #075181; +} + +.article-body a:hover { + color: #68ADD5; +} + +.article-main h2.title { + font: bold 30px Arial,Helvetica,sans-serif; + margin: 0 0 20px; +} + +.article-main h2.title sup { + font-size: 12px; +} + +.read-more a { + background-color:#F2F2F2; + color: #333333; + font-size: 12px; + padding: 8px 18px 8px 12px; + margin: 20px 0; + float: left; +} + +.article-footer { + width: 200px; + float: left; +} + +.article-footer h3 { + background: url("../images/indentline-light.png") repeat-x scroll left bottom transparent; + font-size: 17px; + padding: 25px 0 10px; +} + +.article-footer ul { + list-style: none; +} + +.article-footer li { + margin-left: 0px; + border-bottom: 1px solid #E0E0E0; + padding: 8px 5px; +} + +.article-footer a { + color: #888888; + margin-bottom: 2px; + display: block; +} + +.pagination { + background-color: #FFFFFF; + border-right: 1px solid #E3E3E3; + border-bottom: 1px solid #E3E3E3; + margin: 0 0 20px 0px; + text-align: center; + padding: 12px 20px; +} + +.pagination a { + color: #555555; + padding: 0 3px; + text-decoration: none; +} +.pagination a.selected { + font-weight: bold; +} + +.pagination a:hover, .pagination a.selected { + text-decoration: underline; +} + +/* article detail */ +.article-detail-body { + width: 716px; + margin-right: 0px; +} + +.article-detail-body .tags, #replyForm { + margin: 20px 0; +} + +.article-detail-footer { + background-color: #FFFFFF; + border-bottom: 1px solid #E3E3E3; + border-right: 1px solid #E3E3E3; + margin: 40px 0 40px 181px; + padding:20px; + width: 716px; +} + +.article-detail-footer>a{ + font-weight: bold; +} + +.article-relative { + margin-top: 20px; + width: 360px; +} + +.article-relative h4 { + font-size: 14px; + line-height: 25px; +} + +.article-relative a { + color: #555555; + line-height: 145%; +} + +#comments { + background: url("../images/indentline-light.png") repeat-x scroll left top transparent; + padding-top: 30px; + position: relative; +} +#comments>div{ + margin-top: 10px; +} + +#comments>div>img { + height: 80px; + width: 80px; + margin: 1px 10px 10px 0; +} + +#comments .comment-panel { + background: none repeat scroll 0 0 #FFFFFF; + border-bottom: 1px solid #E3E3E3; + border-right: 1px solid #E3E3E3; + padding: 20px; + width: 798px; + margin-bottom: 10px; + word-wrap:break-word; + overflow: hidden; +} + +#comments .comment-top { + margin-bottom: 10px; +} + +#comments .comment-panel .reply { + margin-top: 20px; +} + +#comments .comment-panel .reply a { + border-radius:5px; + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset, 0 0 2px rgba(255, 255, 255, 0.3) inset, 0 1px 2px rgba(0, 0, 0, 0.29); + background-color: #EEEEEE; + border: 1px solid #888888; + color: #555555; + padding: 2px 10px; +} + +#comments .comment-panel .reply a:hover { + background-color: #E6E6E6; + text-decoration: none; +} + +.comment-body-ref { + position: absolute; + border: 1px solid #E3E3E3; + background-color: #FFFFFF; + padding: 10px 0 0 10px; + left: 177px; + opacity: 0.9; +} + +#comments .comment-body-ref .comment-panel{ + border-width: 0px; + margin-bottom: 0; + width: 620px; + padding: 10px; +} + +.comment-title { + color: #333333; + font-size: 30px; + margin: 20px 0 15px 0; + font-family: \5fae\8f6f\96c5\9ed1; +} + +.comment { + margin-bottom: 40px; +} + +.comment th { + padding: 10px 0px 10px 0; + text-align: left; +} + +.comment input[type="text"], .comment textarea { + outline: none; + color: #666666; + padding: 10px 7px; + background-color: #FFFFFF; + font-family: Arial,Helvetica,sans-serif; + width: 723px; + border: 1px solid #DDDDDD; + font-size: 12px; + height: 16px; + line-height: 16px; +} + +.comment textarea { + margin: 10px 0; + padding: 7px; + height: auto; +} + +.comment #captchaReply { + margin-left: 10px; +} + +#commentValidate, #commentValidateReply { + width: 240px; +} + +.em00, .em01, .em02, .em03, .em04, .em05, .em06, .em07, .em08, .em09, .em10, .em11, .em12, .em13, .em14 { + background-image: url("../../community/images/emotions/emotions-black.png"); + margin: 0 12px; +} + +/* header notice */ +.header-notice { + background: url("../images/indentline-light.png") repeat-x scroll left top #DEDEDE; + padding: 40px 0; +} +.header-cnt{ + border:5px dashed blue; +} +.notice-cnt{ + padding:15px; + font-size:24px; +} + +.header-notice h4 { + background-color: #333333; + color: #FFFFFF; + float: left; + font-size: 17px; + font-weight: bold; + height: 37px; + line-height: 37px; + padding-left: 15px; + width: 145px; +} + +/* footer secondary */ +.footer-secondary { + background: url("../images/indentline-light.png") repeat-x scroll left top #DEDEDE; + padding: 40px 0; +} + +.footer-secondary h4, .article-date, .comment th span.comment-label { + background-color: #333333; + color: #FFFFFF; + float: left; + font-size: 17px; + font-weight: bold; + height: 37px; + line-height: 37px; + padding-left: 15px; + width: 145px; +} + +.most-view-count-articles, .recent-comments, .notice { + float: left; + width: 700px; + margin-left: 65px; + word-break:break-all; + word-wrap:break-word; +} + +.most-view-count-articles a { + font: 18px 微软雅黑; + margin-right: 20px; + font-weight: bold; +} + +.most-view-count-articles sup { + font-size: 12px; + color: #555555; + font-weight: normal; + margin-right: 3px; +} + +.recent-comments div { + float: left; + margin: 0 25px 10px 0px; + text-align: center; + width: 91px; +} + +.recent-comments div a { + display: block; + line-height: 22px; +} + +.recent-comments img, #comments>div>img { + background-color: #FFFFFF; + border-bottom: 1px solid #C2C2C2; + border-right: 1px solid #C2C2C2; + padding: 8px 7px 7px 8px; + width: 75px; + height: 75px; +} + +.recent-comments img:hover, #comments>div>img:hover { + border-color: #5A5A5A; +} + +/* footer widgets */ +.footer-widgets { + background: url("../images/indentline-light.png") repeat-x scroll left top transparent; + padding: 40px 0; +} + +.footer-block { + margin-right: 20px; + width: 220px; +} + +.footer-block h4{ + font: bold 18px 微软雅黑; + color: #000000; + height: 25px; + padding: 0 0 15px; + background: url("../images/indentline.png") repeat-x scroll left bottom transparent; +} + +.footer-block ul { + list-style: none; +} + +.footer-block li { + margin-left: 0px; + height: 30px; + padding-left: 10px; + background: url("../images/indentline-light.png") repeat-x scroll left bottom transparent; +} + +.footer-block li.mostUsedTags a{ + padding-left: 20px; +} + +.footer-block li img{ + cursor: pointer; + height: 16px; + left: 0px; + position: relative; + top: -20px; + width: 16px; +} + +.footer-block li a { + color: #555555; + display: block; + height: 19px; + line-height: 19px; + overflow: hidden; + padding: 6px 0 1px 0px; +} + +.footer-block li sup { + float: left; + margin: 5px 3px 0 0; +} + +.footer-block li:hover { + background: url("../images/icon.png") repeat-x 0px -34px; +} + +/* footer copyright */ +.footer { + background: url("../images/indentline-light.png") repeat-x scroll left top #DEDEDE; + text-align: left; +} + +.footer .content { + line-height: 22px; +} + +.footer a { + color: #000000; +} + +.footer .goTop { + background: url("../images/icon.png") no-repeat -12px -64px; + cursor: pointer; + padding-left: 15px; + height: 17px; + line-height: 17px; +} + +/* error */ +.error-msg { + color: #333333; + font-weight: bold; +} + +.error-footer { + bottom: 0; + position: fixed; + width: 100%; +} + +.error-panel { + background-color: #FFFFFF; + border-bottom: 1px solid #E3E3E3; + border-right: 1px solid #E3E3E3; + margin-bottom: 50px; + padding: 20px; +} + +.error-panel h2 { + font: bold 30px/24px; + margin: 0 0 20px; +} + +/* icon */ +.read-more-icon, .arrow-dowm-icon, .tag-icon, .atom-icon, .up-icon, .down-icon { + background-image: url("../images/icon.png"); + background-repeat: no-repeat; + float: left; +} +.read-more-icon { + background-position: 0 -22px; + height: 12px; + margin: 2px 0 0 6px; + width: 12px; +} + +.arrow-dowm-icon { + background-position: -13px -22px; + height: 13px; + margin: 8px 0 0 6px; + width: 13px; + cursor: pointer; +} + +.tag-icon { + background-position: 0px -102px; + margin-right: 6px; + height: 16px; + width: 16px; +} + +.atom-icon { + height: 22px; + margin-left: 6px; + width: 22px; +} + +.up-icon { + background-position: -11px -118px; + height: 12px; + margin: 6px 0 0 10px; + width: 11px; + cursor: pointer; +} + +.down-icon { + background-position: 0 -118px; + height: 12px; + margin: 6px 0 0 10px; + width: 11px; + cursor: pointer; +} + +.star-current-icon, .star-icon, .moon-icon, .moon-current-icon { + height: 58px; + width: 64px; + background-image: url("../images/author-header.png"); + float: right; + white-space:normal; + text-align: center; + word-break:break-all; + padding-top: 6px; + word-wrap:break-word; + font-weight: bold; +} + +.star-current-icon { + background-position: 0px -64px; +} + +a.star-current-icon { + color: #333333; +} + +.star-icon { + background-position: 0 -192px; +} + +a.star-icon { + color: orange; +} + +.moon-icon { + float: right; + margin-top: 4px; +} + +.moon-current-icon { + float: right; + background-position: 0 -128px; + margin: 1px 0 3px 0; +} + +#tagsPanel a.tagPanel:hover { + border: 1px dashed; +} + +#tagsPanel a.tagPanel { + border: 1px solid; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + margin: 3px; + cursor: pointer; + float: left; +} \ No newline at end of file diff --git a/community-bubbles/footer.ftl b/community-bubbles/footer.ftl new file mode 100644 index 0000000..df86ad5 --- /dev/null +++ b/community-bubbles/footer.ftl @@ -0,0 +1,112 @@ +
+
+
+ © ${year} - ${blogTitle} +
+ Powered by + , + ver ${version}   + Theme by Armstrong@sweelia.com & Vanessa & Skeptical. +
+
+
${goTopLabel}
+
+
+ ${viewCount1Label} + + ${statistic.statisticBlogViewCount} + +    + ${articleCount1Label} + + ${statistic.statisticPublishedBlogArticleCount} + +    + ${commentCount1Label} + + ${statistic.statisticPublishedBlogCommentCount} + +
+
+
+
+ + + +${plugins} \ No newline at end of file diff --git a/community-bubbles/header.ftl b/community-bubbles/header.ftl new file mode 100644 index 0000000..47de2c9 --- /dev/null +++ b/community-bubbles/header.ftl @@ -0,0 +1,59 @@ +<#if 1 != users?size> +
+
+
+ <#list users as user> + + ${user.userName} + + +
+
+
+ +
+
+
+ + ${blogTitle} + + ${blogSubtitle} +
+
+ +
+
+
+
\ No newline at end of file diff --git a/community-bubbles/images/author-header.png b/community-bubbles/images/author-header.png new file mode 100644 index 0000000..2424668 Binary files /dev/null and b/community-bubbles/images/author-header.png differ diff --git a/community-bubbles/images/emotions/em00.png b/community-bubbles/images/emotions/em00.png new file mode 100644 index 0000000..2420609 Binary files /dev/null and b/community-bubbles/images/emotions/em00.png differ diff --git a/community-bubbles/images/emotions/em01.png b/community-bubbles/images/emotions/em01.png new file mode 100644 index 0000000..bddbe24 Binary files /dev/null and b/community-bubbles/images/emotions/em01.png differ diff --git a/community-bubbles/images/emotions/em02.png b/community-bubbles/images/emotions/em02.png new file mode 100644 index 0000000..39051f3 Binary files /dev/null and b/community-bubbles/images/emotions/em02.png differ diff --git a/community-bubbles/images/emotions/em03.png b/community-bubbles/images/emotions/em03.png new file mode 100644 index 0000000..8cf9113 Binary files /dev/null and b/community-bubbles/images/emotions/em03.png differ diff --git a/community-bubbles/images/emotions/em04.png b/community-bubbles/images/emotions/em04.png new file mode 100644 index 0000000..fb061a8 Binary files /dev/null and b/community-bubbles/images/emotions/em04.png differ diff --git a/community-bubbles/images/emotions/em05.png b/community-bubbles/images/emotions/em05.png new file mode 100644 index 0000000..83d82b4 Binary files /dev/null and b/community-bubbles/images/emotions/em05.png differ diff --git a/community-bubbles/images/emotions/em06.png b/community-bubbles/images/emotions/em06.png new file mode 100644 index 0000000..20d66f0 Binary files /dev/null and b/community-bubbles/images/emotions/em06.png differ diff --git a/community-bubbles/images/emotions/em07.png b/community-bubbles/images/emotions/em07.png new file mode 100644 index 0000000..dcda19c Binary files /dev/null and b/community-bubbles/images/emotions/em07.png differ diff --git a/community-bubbles/images/emotions/em08.png b/community-bubbles/images/emotions/em08.png new file mode 100644 index 0000000..676df26 Binary files /dev/null and b/community-bubbles/images/emotions/em08.png differ diff --git a/community-bubbles/images/emotions/em09.png b/community-bubbles/images/emotions/em09.png new file mode 100644 index 0000000..94f4605 Binary files /dev/null and b/community-bubbles/images/emotions/em09.png differ diff --git a/community-bubbles/images/emotions/em10.png b/community-bubbles/images/emotions/em10.png new file mode 100644 index 0000000..11f9f4c Binary files /dev/null and b/community-bubbles/images/emotions/em10.png differ diff --git a/community-bubbles/images/emotions/em11.png b/community-bubbles/images/emotions/em11.png new file mode 100644 index 0000000..9979744 Binary files /dev/null and b/community-bubbles/images/emotions/em11.png differ diff --git a/community-bubbles/images/emotions/em12.png b/community-bubbles/images/emotions/em12.png new file mode 100644 index 0000000..0c9d57f Binary files /dev/null and b/community-bubbles/images/emotions/em12.png differ diff --git a/community-bubbles/images/emotions/em13.png b/community-bubbles/images/emotions/em13.png new file mode 100644 index 0000000..5279d49 Binary files /dev/null and b/community-bubbles/images/emotions/em13.png differ diff --git a/community-bubbles/images/emotions/em14.png b/community-bubbles/images/emotions/em14.png new file mode 100644 index 0000000..7594861 Binary files /dev/null and b/community-bubbles/images/emotions/em14.png differ diff --git a/community-bubbles/images/emotions/emotions-black.png b/community-bubbles/images/emotions/emotions-black.png new file mode 100644 index 0000000..3e67ef9 Binary files /dev/null and b/community-bubbles/images/emotions/emotions-black.png differ diff --git a/community-bubbles/images/icon.png b/community-bubbles/images/icon.png new file mode 100644 index 0000000..0969cba Binary files /dev/null and b/community-bubbles/images/icon.png differ diff --git a/community-bubbles/images/indentline-light.png b/community-bubbles/images/indentline-light.png new file mode 100644 index 0000000..2c267b8 Binary files /dev/null and b/community-bubbles/images/indentline-light.png differ diff --git a/community-bubbles/images/indentline.png b/community-bubbles/images/indentline.png new file mode 100644 index 0000000..f57ef44 Binary files /dev/null and b/community-bubbles/images/indentline.png differ diff --git a/community-bubbles/index.ftl b/community-bubbles/index.ftl new file mode 100644 index 0000000..19b5679 --- /dev/null +++ b/community-bubbles/index.ftl @@ -0,0 +1,28 @@ +<#include "macro-head.ftl"> + + + + <@head title="${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+ <#include "notice.ftl"> +
+
+ <#include "article-list.ftl"> +
+
+ <#include "side.ftl"> +
+ + + diff --git a/community-bubbles/js/gravatar.js b/community-bubbles/js/gravatar.js new file mode 100644 index 0000000..bba1a1a --- /dev/null +++ b/community-bubbles/js/gravatar.js @@ -0,0 +1,7 @@ +function getIcon(email){ + return "http://secure.gravatar.com/avatar/" + hex_md5(trim(email.toLowerCase())) +"?s=160&r=G"; +} + +function trim(str){ + return str.replace(/(^\s*)|(\s*$)/g, ""); +} diff --git a/community-bubbles/js/md5.js b/community-bubbles/js/md5.js new file mode 100644 index 0000000..131d08f --- /dev/null +++ b/community-bubbles/js/md5.js @@ -0,0 +1,379 @@ +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); } +function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); } +function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); } +function hex_hmac_md5(k, d) + { return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } +function b64_hmac_md5(k, d) + { return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } +function any_hmac_md5(k, d, e) + { return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() +{ + return hex_md5("abc").toLowerCase() == "900150983cd24fb0d6963f7d28e17f72"; +} + +/* + * Calculate the MD5 of a raw string + */ +function rstr_md5(s) +{ + return binl2rstr(binl_md5(rstr2binl(s), s.length * 8)); +} + +/* + * Calculate the HMAC-MD5, of a key and some data (raw strings) + */ +function rstr_hmac_md5(key, data) +{ + var bkey = rstr2binl(key); + if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binl_md5(opad.concat(hash), 512 + 128)); +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) +{ + try { hexcase } catch(e) { hexcase=0; } + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var output = ""; + var x; + for(var i = 0; i < input.length; i++) + { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); + } + return output; +} + +/* + * Convert a raw string to a base-64 string + */ +function rstr2b64(input) +{ + try { b64pad } catch(e) { b64pad=''; } + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var output = ""; + var len = input.length; + for(var i = 0; i < len; i += 3) + { + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } + } + return output; +} + +/* + * Convert a raw string to an arbitrary string encoding + */ +function rstr2any(input, encoding) +{ + var divisor = encoding.length; + var i, j, q, x, quotient; + + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + var dividend = Array(Math.ceil(input.length / 2)); + for(i = 0; i < dividend.length; i++) + { + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + } + + /* + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. All remainders are stored for later + * use. + */ + var full_length = Math.ceil(input.length * 8 / + (Math.log(encoding.length) / Math.log(2))); + var remainders = Array(full_length); + for(j = 0; j < full_length; j++) + { + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[j] = x; + dividend = quotient; + } + + /* Convert the remainders to the output string */ + var output = ""; + for(i = remainders.length - 1; i >= 0; i--) + output += encoding.charAt(remainders[i]); + + return output; +} + +/* + * Encode a string as utf-8. + * For efficiency, this assumes the input is valid utf-16. + */ +function str2rstr_utf8(input) +{ + var output = ""; + var i = -1; + var x, y; + + while(++i < input.length) + { + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } + + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + } + return output; +} + +/* + * Encode a string as utf-16 + */ +function str2rstr_utf16le(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); + return output; +} + +function str2rstr_utf16be(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); + return output; +} + +/* + * Convert a raw string to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binl(input) +{ + var output = Array(input.length >> 2); + for(var i = 0; i < output.length; i++) + output[i] = 0; + for(var i = 0; i < input.length * 8; i += 8) + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32); + return output; +} + +/* + * Convert an array of little-endian words to a string + */ +function binl2rstr(input) +{ + var output = ""; + for(var i = 0; i < input.length * 32; i += 8) + output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF); + return output; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ +function binl_md5(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} diff --git a/community-bubbles/lang/lang_en_US.properties b/community-bubbles/lang/lang_en_US.properties new file mode 100644 index 0000000..cd03256 --- /dev/null +++ b/community-bubbles/lang/lang_en_US.properties @@ -0,0 +1,293 @@ +# +# Copyright (c) 2009, 2010, 2011, B3log Team +# +# 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: 2.0.5.7, Sep 5, 2011 +# Author: Liang Ding +# + +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= +blogSyncLabel=Blog Sync +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 +blogSyncMgmtLabel=Blog Sync Management +syncMgmtLabel=Sync manage Blog +userName1Label=Username: +userPassword1Label=Password: +syncPostLabel=Sync Post +syncUpdateLabel=Sync Update +syncRemoveLabel=Sync Remove +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 +clearAllCacheLabel=Clear all cache +clearCacheLabel=Clear cache +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 +welcomeToSoloLabel=Welcome to B3log Solo! +b3logLabel=B3LOG +killBrowserLabel=

Let's kill outdated and insecure browser!

Let's kill outdated and insecure browser for browser evolution, human progress and better experience.

You can download

+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 +updatePreferenceFailLabel=Update Fail, please check Blog Host configuration! +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 Consumer Secret you typed in and then try again. +exceedMaxUploadSizeLabel=Size exceed 1M :-( +uploadFailLabel=Upload Fail! +fileEmptyLabel=File is empty +duplicatedPermalinkLabel=Duplicated permalink! +invalidPermalinkFormatLabel=Invalid permalink format! +duplicatedEmailLabel=Duplicated email! +canntBeLocalhostOnProductionLabel=Can not set host as localhost on production! +refreshAndRetryLabel=Please refresh and try again! +noDataLable=NO Data +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? +#### +articleRightLabel=Articles on this site are copyright. +articleWelcomeCopyLabel=Please feel free to copy. +articleCopyNoteLabel=Please include the note:Copy from: +articleTitleLabel=Title: +articleLinkLabel=Source: \ No newline at end of file diff --git a/community-bubbles/lang/lang_zh_CN.properties b/community-bubbles/lang/lang_zh_CN.properties new file mode 100644 index 0000000..6a21438 --- /dev/null +++ b/community-bubbles/lang/lang_zh_CN.properties @@ -0,0 +1,293 @@ +# +# Copyright (c) 2009, 2010, 2011, B3log Team +# +# 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 default language configurations(zh_CN). +# Version: 2.0.6.2, Sep 5, 2011 +# Author: Liang Ding +# + +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\u60c5\u94fe\u63a5 +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 +viewCount1Label=\u6d4f\u89c8\u6b21\u6570\uff1a +articleCount1Label=\u6587\u7ae0\u603b\u6570\uff1a +commentCountLabel=\u8bc4\u8bba\u6570 +commentCount1Label=\u8bc4\u8bba\u603b\u6570\uff1a +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 +clearAllCacheLabel=\u6e05\u9664\u6240\u6709\u9875\u9762\u7f13\u5b58 +clearCacheLabel=\u6e05\u9664\u672c\u9875\u7f13\u5b58 +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 +welcomeToSoloLabel=\u6b22\u8fce\u4f7f\u7528 B3log Solo\uff01 +b3logLabel=B3LOG +killBrowserLabel=

\u8ba9\u6211\u4eec\u653e\u5f03\u4f7f\u7528\u90a3\u4e9b\u8fc7\u65f6\u3001\u4e0d\u5b89\u5168\u7684\u6d4f\u89c8\u5668\u5427\uff01

\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

\u60a8\u53ef\u4ee5\u4e0b\u8f7d +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 +updatePreferenceFailLabel=\u66f4\u65b0\u5931\u8d25\uff0c\u8bf7\u4ed4\u7ec6\u68c0\u67e5\u201c\u535a\u5ba2\u5730\u5740\u201d\u7684\u914d\u7f6e\u662f\u5426\u6b63\u786e +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 \ +Consumer Secret \u662f\u6b63\u786e\u7684\uff0c\u7136\u540e\u8fdb\u884c\u91cd\u8bd5\u3002 +exceedMaxUploadSizeLabel=\u76ee\u524d\u53ea\u80fd\u4e0a\u4f20\u5c0f\u4e8e 1M \u7684\u6587\u4ef6 :-( +uploadFailLabel=\u4e0a\u4f20\u5931\u8d25\uff01 +fileEmptyLabel=\u6587\u4ef6\u4e3a\u7a7a\uff01 +duplicatedPermalinkLabel=\u94fe\u63a5\u91cd\u590d\uff01 +invalidPermalinkFormatLabel=\u975e\u6cd5\u7684\u94fe\u63a5\u683c\u5f0f\uff01 +duplicatedEmailLabel=\u90ae\u4ef6\u5730\u5740\u91cd\u590d\uff01 +canntBeLocalhostOnProductionLabel=GAE \u73af\u5883\u4e0a\u8bf7\u52ff\u6307\u5b9a\u535a\u5ba2\u5730\u5740\u4e3a localhost\uff01 +refreshAndRetryLabel=\u8bf7\u5237\u65b0\u91cd\u8bd5\uff01 +noDataLable=\u65e0\u6570\u636e +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 +#### +articleRightLabel=\u672C\u7AD9\u6587\u7AE0\u9664\u6CE8\u660E\u8F6C\u8F7D\u5916\uFF0C\u5747\u4E3A\u672C\u7AD9\u539F\u521B\u6216\u7F16\u8BD1 +articleWelcomeCopyLabel=\u6B22\u8FCE\u4EFB\u4F55\u5F62\u5F0F\u7684\u8F6C\u8F7D\uFF0C\u4F46\u8BF7\u52A1\u5FC5\u6CE8\u660E\u51FA\u5904\uFF0C\u5C0A\u91CD\u4ED6\u4EBA\u52B3\u52A8 +articleCopyNoteLabel=\u8F6C\u8F7D\u8BF7\u6CE8\u660E\uFF1A\u6587\u7AE0\u8F6C\u8F7D\u81EA\uFF1A +articleTitleLabel=\u672C\u6587\u6807\u9898\uFF1A +articleLinkLabel=\u672C\u6587\u5730\u5740\uFF1A diff --git a/community-bubbles/macro-comments.ftl b/community-bubbles/macro-comments.ftl new file mode 100644 index 0000000..0e02388 --- /dev/null +++ b/community-bubbles/macro-comments.ftl @@ -0,0 +1,185 @@ +<#macro comments commentList article> +
+ <#list commentList as comment> +
+ ${comment.commentName} +
+
+ <#if "http://" == comment.commentURL> + ${comment.commentName} + <#else> + ${comment.commentName} + + <#if comment.isReply> + @ + + ${comment.commentOriginalCommentName} + + ${comment.commentDate?string("yyyy-MM-dd HH:mm:ss")} +
+
+ ${comment.commentContent} +
+
+ <#if article.commentable> + + +
+
+
+ +
+<#if article.commentable> +
+ ${postCommentsLabel} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ${commentNameLabel} + + + + +
+ + ${commentEmailLabel} + + + + +
+ + ${commentURLLabel} + + + + +
+ + ${commentEmotionsLabel} + + + + + + + + + + + + + + + + + + +
+ + ${commentContentLabel} + + + + +
+ + ${captchaLabel} + + + + + validate + + +
+ +
+ + + +<#macro comment_script oId> + + + \ No newline at end of file diff --git a/community-bubbles/macro-head.ftl b/community-bubbles/macro-head.ftl new file mode 100644 index 0000000..45c65b9 --- /dev/null +++ b/community-bubbles/macro-head.ftl @@ -0,0 +1,18 @@ +<#macro head title> + +${title} +<#nested> + + + + + + + + + + + + +${htmlHead} + \ No newline at end of file diff --git a/community-bubbles/notice.ftl b/community-bubbles/notice.ftl new file mode 100644 index 0000000..ace9aae --- /dev/null +++ b/community-bubbles/notice.ftl @@ -0,0 +1,15 @@ +
+
+ <#if "" != noticeBoard> +
+
+
+ ${noticeBoard} +
+
+
+
+
+ +
+
\ No newline at end of file diff --git a/community-bubbles/page.ftl b/community-bubbles/page.ftl new file mode 100644 index 0000000..6dc10bd --- /dev/null +++ b/community-bubbles/page.ftl @@ -0,0 +1,30 @@ +<#include "macro-head.ftl"> +<#include "macro-comments.ftl"> + + + + <@head title="${page.pageTitle} - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+
+ ${page.pageContent} +
+ <@comments commentList=pageComments article=page> +
+
+ <#include "side.ftl"> +
+ + <@comment_script oId=page.oId> + + diff --git a/community-bubbles/preview.png b/community-bubbles/preview.png new file mode 100644 index 0000000..11cff66 Binary files /dev/null and b/community-bubbles/preview.png differ diff --git a/community-bubbles/side.ftl b/community-bubbles/side.ftl new file mode 100644 index 0000000..5f17c08 --- /dev/null +++ b/community-bubbles/side.ftl @@ -0,0 +1,114 @@ + + diff --git a/community-bubbles/skin.properties b/community-bubbles/skin.properties new file mode 100644 index 0000000..a96e7c3 --- /dev/null +++ b/community-bubbles/skin.properties @@ -0,0 +1,26 @@ +# +# Copyright (C) 2011, B3log Team +# +# 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: Community skin. +# Version: 1.0.0.9, Nov 21, 2012 +# Author: Liyuan Li +# + +name=Community-bubbles +version=0.0.1 +forSolo=0.5.5 +memo=Refers to http://demo.woothemes.com/skeptical/ \ No newline at end of file diff --git a/community-bubbles/tag-articles.ftl b/community-bubbles/tag-articles.ftl new file mode 100644 index 0000000..e2c6e35 --- /dev/null +++ b/community-bubbles/tag-articles.ftl @@ -0,0 +1,32 @@ +<#include "macro-head.ftl"> + + + + <@head title="${tag.tagTitle} - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+

${tag1Label} + + + ${tag.tagTitle} + (${tag.tagPublishedRefCount}) + +

+ <#include "article-list.ftl"> +
+
+ <#include "side.ftl"> +
+ + + diff --git a/community-bubbles/tags.ftl b/community-bubbles/tags.ftl new file mode 100644 index 0000000..a8d12f8 --- /dev/null +++ b/community-bubbles/tags.ftl @@ -0,0 +1,41 @@ +<#include "macro-head.ftl"> + + + + <@head title="${allTagsLabel} - ${blogTitle}"> + + + + + + ${topBarReplacement} +
+ <#include "header.ftl"> +
+
+
+ + +
+
+
+ <#include "side.ftl"> +
+ + + + diff --git a/skin-preview/community-bubbles-首页.png b/skin-preview/community-bubbles-首页.png new file mode 100644 index 0000000..9411ec3 Binary files /dev/null and b/skin-preview/community-bubbles-首页.png differ