初始提交,bootstyle--bootstrap风格B3log皮肤
11
bootstyle/archive-articles.ftl
Normal file
@ -0,0 +1,11 @@
|
||||
<!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>
|
||||
</body>
|
||||
</html>
|
36
bootstyle/archives.ftl
Normal file
@ -0,0 +1,36 @@
|
||||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${archiveLabel}"/>
|
||||
<meta name="description" content="${metaDescription},${archiveLabel}"/>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<#if 0 != archiveDates?size>
|
||||
<div class="other-main archives">
|
||||
<#list archiveDates as archiveDate>
|
||||
<span data-year="${archiveDate.archiveDateYear}">
|
||||
<#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}(${archiveDate.archiveDatePublishedArticleCount})</a>
|
||||
<#else>
|
||||
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
|
||||
title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})">
|
||||
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})</a>
|
||||
</#if>
|
||||
</span>
|
||||
</#list>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
57
bootstyle/article-list.ftl
Normal file
@ -0,0 +1,57 @@
|
||||
<ul>
|
||||
<#list articles as article>
|
||||
<li class="article<#if !article_has_next> article-last</#if>">
|
||||
<div class="article-title">
|
||||
<h2>
|
||||
<a rel="bookmark" class="ft-gray" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
${updatedLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="right">
|
||||
<a rel="nofollow" class="ft-gray" href="${servePath}${article.articlePermalink}#comments">
|
||||
${article.articleCommentCount} ${commentLabel}
|
||||
</a>
|
||||
<a rel="nofollow" class="ft-gray" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleViewCount} ${viewLabel}
|
||||
</a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="article-body">
|
||||
<div id="abstract${article.oId}">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
<div id="content${article.oId}" class="none"></div>
|
||||
</div>
|
||||
<div class="right ft-gray">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yy-MM-dd HH:mm")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yy-MM-dd HH:mm")}
|
||||
</#if>
|
||||
<a rel="nofollow" href="${servePath}/authors/${article.authorId}">${article.authorName}</a>
|
||||
</div>
|
||||
<div class="left ft-gray">
|
||||
${tag1Label}
|
||||
<#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="clear"></div>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
<#if paginationCurrentPageNum != paginationPageCount && 0 != paginationPageCount>
|
||||
<div class="article-next ft-gray" onclick="getNextPage()" data-page="${paginationCurrentPageNum}">${moreLabel}</div>
|
||||
</#if>
|
82
bootstyle/article.ftl
Normal file
@ -0,0 +1,82 @@
|
||||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${article.articleTitle} - ${blogTitle}">
|
||||
<meta name="keywords" content="${article.articleTags}" />
|
||||
<meta name="description" content="${article.articleAbstract?html}" />
|
||||
</@head>
|
||||
</head>
|
||||
<body class="home page top-navbar">
|
||||
<#include "header.ftl">
|
||||
<div id="wrap" class="container" role="document">
|
||||
<div id="content" class="row">
|
||||
<div id="main" class="span8" role="main">
|
||||
<div class="page-header page-header-m">
|
||||
<h3>
|
||||
${article.articleTitle}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="page-header-bottom">
|
||||
<span>
|
||||
<li class="icon-time"></li>
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</#if>
|
||||
</span>
|
||||
<span>
|
||||
<li class="icon-user"></li>
|
||||
<a href="/authors/${article.authorId}" title="${authorLabel}: ${article.authorName}">
|
||||
${article.authorName}
|
||||
</a>
|
||||
</span>
|
||||
<div class="pull-right">
|
||||
<span>
|
||||
<li class="icon-eye-open"></li>
|
||||
<a href="${article.articlePermalink}">${article.articleViewCount} ${viewLabel}</a>
|
||||
</span>
|
||||
<span>
|
||||
<li class="icon-comment"></li>
|
||||
<a href="${article.articlePermalink}#comments">${article.articleCommentCount} ${commentLabel}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
${article.articleContent}
|
||||
<div class="article-tags">
|
||||
<li class="icon-tags"></li>
|
||||
${tag1Label}
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<span>
|
||||
<a href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}
|
||||
</a>
|
||||
<#if articleTag_has_next>,</#if>
|
||||
</span>
|
||||
</#list>
|
||||
</div>
|
||||
<div class="alert alert-info">
|
||||
<#if nextArticlePermalink??>
|
||||
<a href="${servePath}${nextArticlePermalink}" title="${nextArticleTitle}">
|
||||
<li class="icon-step-backward"></li>${nextArticleTitle}
|
||||
</a>
|
||||
</#if>
|
||||
|
||||
<#if previousArticlePermalink??>
|
||||
<div class="pull-right">
|
||||
<a href="${servePath}${previousArticlePermalink}" title="${previousArticleTitle}">
|
||||
${previousArticleTitle}<li class="icon-step-forward"></li>
|
||||
</a>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<aside id="sidebar" class="span4" role="complementary">
|
||||
<#include "side.ftl">
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
21
bootstyle/author-articles.ftl
Normal file
@ -0,0 +1,21 @@
|
||||
<#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>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<h2>${author1Label}${authorName}</h2>
|
||||
<#include "article-list.ftl">
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
1092
bootstyle/bootstrap/css/bootstrap-responsive.css
vendored
Normal file
9
bootstyle/bootstrap/css/bootstrap-responsive.min.css
vendored
Normal file
6039
bootstyle/bootstrap/css/bootstrap.css
vendored
Normal file
9
bootstyle/bootstrap/css/bootstrap.min.css
vendored
Normal file
BIN
bootstyle/bootstrap/img/glyphicons-halflings-white.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
bootstyle/bootstrap/img/glyphicons-halflings.png
Normal file
After Width: | Height: | Size: 12 KiB |
2159
bootstyle/bootstrap/js/bootstrap.js
vendored
Normal file
6
bootstyle/bootstrap/js/bootstrap.min.js
vendored
Normal file
34
bootstyle/css/bootstyle.css
Normal file
@ -0,0 +1,34 @@
|
||||
body.top-navbar {
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
#sidebar a:hover{
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.page-header-m{
|
||||
margin: 20px 0px 5px;
|
||||
}
|
||||
|
||||
.page-header-bottom{
|
||||
margin: 0px 0px 5px;
|
||||
font-size: 12px;
|
||||
color: #585858;
|
||||
}
|
||||
|
||||
.page-header-bottom a:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.article-tags{
|
||||
color: #676767;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.article-tags a{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#footer .container{
|
||||
padding: 10px 15px 10px;
|
||||
}
|
108
bootstyle/dynamic.ftl
Normal file
@ -0,0 +1,108 @@
|
||||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${dynamicLabel}"/>
|
||||
<meta name="description" content="${metaDescription},${dynamicLabel}"/>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper dynamic">
|
||||
<div class="other-main">
|
||||
<#if 0 != recentComments?size>
|
||||
<div class="module side-comments">
|
||||
<h3 class="ft-gray">${recentCommentsLabel}</h3>
|
||||
<ul>
|
||||
<#list recentComments as comment>
|
||||
<li>
|
||||
<img class='comment-header'
|
||||
alt='${comment.commentName}'
|
||||
src='${comment.commentThumbnailURL}'/>
|
||||
<div class='comment-panel'>
|
||||
<span class="left">
|
||||
<#if "http://" == comment.commentURL>
|
||||
${comment.commentName}
|
||||
<#else>
|
||||
<a target="_blank" href="${comment.commentURL}">${comment.commentName}</a>
|
||||
</#if>
|
||||
</span>
|
||||
<div class="right ft-gray">
|
||||
${comment.commentDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<a rel="nofollow" href="${servePath}${comment.commentSharpURL}">${viewLabel}</a>
|
||||
</div>
|
||||
<span class="clear"></span>
|
||||
<div class="article-body">
|
||||
${comment.commentContent}
|
||||
</div>
|
||||
</div>
|
||||
<div class='clear'></div>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</#if>
|
||||
<#if 0 != mostUsedTags?size>
|
||||
<div class="module side-tags">
|
||||
<h3 class="ft-gray">${popTagsLabel}</h3>
|
||||
<ul>
|
||||
<#list mostUsedTags as tag>
|
||||
<li>
|
||||
<a rel="tag" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}"
|
||||
title="${tag.tagTitle}(${tag.tagPublishedRefCount})">
|
||||
<span>${tag.tagTitle}</span>
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</#if>
|
||||
<div class="clear"></div>
|
||||
<#if 0 != mostCommentArticles?size>
|
||||
<div class="module side-most-comment">
|
||||
<h3 class="ft-gray">${mostCommentArticlesLabel}</h3>
|
||||
<ul>
|
||||
<#list mostCommentArticles as article>
|
||||
<li>
|
||||
<a rel="nofollow" class="left" title="${article.articleTitle}"
|
||||
href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<a rel="nofollow" class="ft-gray right" href="${servePath}${article.articlePermalink}#comments">
|
||||
${article.articleCommentCount} ${commentLabel}
|
||||
</a>
|
||||
<span class="clear"></span>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</#if>
|
||||
<#if 0 != mostViewCountArticles?size>
|
||||
<div class="module side-most-view">
|
||||
<h3 class="ft-gray">${mostViewCountArticlesLabel}</h3>
|
||||
<ul>
|
||||
<#list mostViewCountArticles as article>
|
||||
<li>
|
||||
<a rel="nofollow" class="left" title="${article.articleTitle}" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<a rel="nofollow" class="ft-gray right" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleViewCount} ${viewLabel}
|
||||
</a>
|
||||
<span class="clear"></span>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</#if>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
80
bootstyle/footer.ftl
Normal file
@ -0,0 +1,80 @@
|
||||
<footer id="footer" role="banner">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<div class="pull-left">
|
||||
<span class="ft-gray">© ${year}</span> - <a href="${servePath}">${blogTitle}</a>
|
||||
Powered by
|
||||
<a href="http://b3log.org" target="_blank" class="logo">
|
||||
${b3logLabel}
|
||||
<span style="color: orangered; font-weight: bold;">Solo</span></a>,
|
||||
ver ${version}
|
||||
Theme by <a rel="friend" rel="friend" href="http://vanessa.b3log.org" target="_blank">Vanessa</a>.
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="pull-left">
|
||||
${viewCount1Label}
|
||||
<span class="ft-gray">
|
||||
${statistic.statisticBlogViewCount}
|
||||
</span>
|
||||
|
||||
${articleCount1Label}
|
||||
<span class="ft-gray">
|
||||
${statistic.statisticPublishedBlogArticleCount}
|
||||
</span>
|
||||
|
||||
${commentCount1Label}
|
||||
<span class="ft-gray">
|
||||
${statistic.statisticPublishedBlogCommentCount}
|
||||
</span>
|
||||
</div>
|
||||
<span class="translate-ico" onclick="goTranslate()"></span>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div id="goTop" onclick="Util.goTop()" class="hide">TOP</div>
|
||||
<script type="text/javascript">
|
||||
var latkeConfig = {
|
||||
"servePath": "${servePath}",
|
||||
"staticServePath": "${staticServePath}"
|
||||
};
|
||||
|
||||
var Label = {
|
||||
"tag1Label": "${tag1Label}",
|
||||
"viewLabel": "${viewLabel}",
|
||||
"commentLabel": "${commentLabel}",
|
||||
"topArticleLabel": "${topArticleLabel}",
|
||||
"updatedLabel": "${updatedLabel}",
|
||||
"contentLabel": "${contentLabel}",
|
||||
"abstractLabel": "${abstractLabel}",
|
||||
"clearAllCacheLabel": "${clearAllCacheLabel}",
|
||||
"clearCacheLabel": "${clearCacheLabel}",
|
||||
"adminLabel": "${adminLabel}",
|
||||
"logoutLabel": "${logoutLabel}",
|
||||
"skinDirName": "${skinDirName}",
|
||||
"loginLabel": "${loginLabel}",
|
||||
"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}"
|
||||
};
|
||||
</script>
|
||||
<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" src="${staticServePath}/skins/${skinDirName}/bootstrap/js/bootstrap${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="${staticServePath}/skins/${skinDirName}/js/${skinDirName}${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
${plugins}
|
36
bootstyle/header.ftl
Normal file
@ -0,0 +1,36 @@
|
||||
<header id="banner" class="navbar navbar-fixed-top" role="banner">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="${servePath}" title="${blogSubtitle}">${blogTitle}</a>
|
||||
<nav id="nav-main" class="nav-collapse" role="navigation">
|
||||
<ul id="menu-primary-navigation" class="nav">
|
||||
<li class="menu-home"><a href="${servePath}">${indexLabel}</a></li>
|
||||
<#list pageNavigations as page>
|
||||
<li><a href="${page.pagePermalink}" target="${page.pageOpenTarget}">${page.pageTitle}</a></li>
|
||||
</#list>
|
||||
<li>
|
||||
<a href="${servePath}/dynamic.html">${dynamicLabel}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="${servePath}/tags.html">${allTagsLabel}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="${servePath}/archives.html">${archiveLabel}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="${servePath}/links.html">${linkLabel}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a rel="alternate" href="${servePath}/blog-articles-feed.do">Atom<img src="${staticServePath}/images/feed.png" alt="Atom"/></a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
BIN
bootstyle/images/404.png
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
bootstyle/images/ajax-loader.gif
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
bootstyle/images/emotions/em00.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em01.png
Normal file
After Width: | Height: | Size: 926 B |
BIN
bootstyle/images/emotions/em02.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em03.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
bootstyle/images/emotions/em04.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
bootstyle/images/emotions/em05.png
Normal file
After Width: | Height: | Size: 1001 B |
BIN
bootstyle/images/emotions/em06.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em07.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
bootstyle/images/emotions/em08.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em09.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em10.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em11.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em12.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
bootstyle/images/emotions/em13.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
bootstyle/images/emotions/em14.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
bootstyle/images/emotions/emotions-ease.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
bootstyle/images/icons.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
28
bootstyle/index.ftl
Normal file
@ -0,0 +1,28 @@
|
||||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords}"/>
|
||||
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
|
||||
</@head>
|
||||
</head>
|
||||
<body class="home page top-navbar">
|
||||
<#include "header.ftl">
|
||||
<div id="wrap" class="container" role="document">
|
||||
<div id="content" class="row">
|
||||
<div id="main" class="span8" role="main">
|
||||
<div class="page-header">
|
||||
<h1>
|
||||
Home </h1>
|
||||
</div> <div class="alert alert-info"><a href="http://www.rootstheme.com/">Back to Roots</a></div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat, orci ac laoreet cursus, dolor sem luctus lorem, eget consequat magna felis a magna. Aliquam scelerisque condimentum ante, eget facilisis tortor lobortis in. In interdum venenatis justo eget consequat. Morbi commodo rhoncus mi nec pharetra. Aliquam erat volutpat. Mauris non lorem eu dolor hendrerit dapibus. Mauris mollis nisl quis sapien posuere consectetur. Nullam in sapien at nisi ornare bibendum at ut lectus. Pellentesque ut magna mauris. Nam viverra suscipit ligula, sed accumsan enim placerat nec. Cras vitae metus vel dolor ultrices sagittis. Duis venenatis augue sed risus laoreet congue ac ac leo. Donec fermentum accumsan libero sit amet iaculis. Duis tristique dictum enim, ac fringilla risus bibendum in. Nunc ornare, quam sit amet ultricies gravida, tortor mi malesuada urna, quis commodo dui nibh in lacus. Nunc vel tortor mi. Pellentesque vel urna a arcu adipiscing imperdiet vitae sit amet neque. Integer eu lectus et nunc dictum sagittis. Curabitur commodo vulputate fringilla. Sed eleifend, arcu convallis adipiscing congue, dui turpis commodo magna, et vehicula sapien turpis sit amet nisi.</p>
|
||||
</div>
|
||||
<aside id="sidebar" class="span4" role="complementary">
|
||||
<#include "side.ftl">
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
20
bootstyle/js/bootstyle.js
Normal file
@ -0,0 +1,20 @@
|
||||
var bootstyle = {
|
||||
setNavCurrent: function(){
|
||||
$(".nav li a").each(function () {
|
||||
var $this = $(this);
|
||||
var path1 = latkeConfig.servePath + location.pathname,
|
||||
path2 = latkeConfig.servePath + location.pathname.substr(0,location.pathname.length-1);
|
||||
if ($this.attr("href") === path1 || $this.attr("href") === path2) {
|
||||
$this.parent().addClass("active");
|
||||
} else if (/\/[0-9]+$/.test(location.pathname)) {
|
||||
$(".nav li")[0].className = "current";
|
||||
}
|
||||
});
|
||||
},
|
||||
init:function(){
|
||||
this.setNavCurrent();
|
||||
}
|
||||
};
|
||||
$(function(){
|
||||
bootstyle.init();
|
||||
})
|
94
bootstyle/lang/lang_en_US.properties
Normal file
@ -0,0 +1,94 @@
|
||||
#
|
||||
# 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: Language configurations(en_US) for skin "ease".
|
||||
# Version: 1.0.0.5, May 22, 2012
|
||||
# Author: Liyuan Li
|
||||
#
|
||||
dynamicLabel=Dynamic
|
||||
moreLabel=More
|
||||
contentLabel=More...
|
||||
abstractLabel=Abstract
|
||||
viewCount1Label=View Count:
|
||||
articleCount1Label=Article Count:
|
||||
commentCount1Label=Comment Count:
|
||||
allTagsLabel=Tags
|
||||
archiveLabel=Archive
|
||||
yearLabel=
|
||||
monthLabel=
|
||||
recentArticlesLabel=Recent Articles
|
||||
recentCommentsLabel=Recent Comments
|
||||
mostCommentArticlesLabel=Most Comment Articles
|
||||
mostViewCountArticlesLabel=Most View Articles
|
||||
popTagsLabel=Popular Tags
|
||||
linkLabel=Friend Links
|
||||
indexLabel=Home
|
||||
sumLabel=
|
||||
pageLabel=Page
|
||||
clearAllCacheLabel=Clear all cache
|
||||
clearCacheLabel=Clear cache
|
||||
adminLabel=Admin
|
||||
logoutLabel=Logout
|
||||
loginLabel=Login
|
||||
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
|
||||
commentLabel=Comment
|
||||
viewLabel=View
|
||||
authorLabel=Author
|
||||
previousPageLabel=Previous Page
|
||||
nextPagePabel=Next Page
|
||||
firstPageLabel=First Page
|
||||
lastPageLabel=Last Page
|
||||
archive1Label=Archive:
|
||||
author1Label=Author:
|
||||
tag1Label=Tags:
|
||||
sorryLabel=Sorry!
|
||||
notFoundLabel=Not Found!
|
||||
returnTo1Label=Return:
|
||||
updatedLabel=Updated!
|
||||
topArticleLabel=Top!
|
||||
replyLabel=Reply
|
||||
commentNameLabel=Name
|
||||
commentEmailLabel=Email
|
||||
commentURLLabel=URL
|
||||
submmitCommentLabel=Commit Comment
|
||||
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....
|
||||
relevantArticlesLabel=Relevant Articles
|
||||
randomArticlesLabel=Random Articles
|
||||
externalRelevantArticlesLabel=External Relevant Articles:
|
||||
captchaErrorLabel=Captcha Error
|
||||
b3logLabel=<span style="color: orange;">B</span><span style="color: blue;"><sup>3</sup></span><span style="color: green;">L</span><span style="color: red;">O</span><span style="color: blue;">G</span>
|
||||
killBrowserLabel=<h2>Let's kill outdated and insecure browser!</h2><p>Let's kill outdated and insecure browser for browser evolution, human progress and better experience.</p><p>You can download</p><ul><li><a href="http://www.mozilla.com/" target="_blank">Firefox</a></li><li><a href="http://www.google.com/chrome" target="_blank">Chrome</a></li><li><a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie" target="_blank">IE8 / IE9</a></li><li><a href="http://www.maxthon.com/" target="_blank">Maxthon</a> and <a href="http://www.google.com" target="_blank">so on</a>.</li></ul>
|
||||
noticeBoardLabel=Notice Board
|
94
bootstyle/lang/lang_zh_CN.properties
Normal file
@ -0,0 +1,94 @@
|
||||
#
|
||||
# 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: Language configurations(zh_CN) for skin "ease".
|
||||
# Version: 1.0.0.5, May 22, 2012
|
||||
# Author: Liyuan Li
|
||||
#
|
||||
dynamicLabel=\u52a8\u6001
|
||||
moreLabel=\u66f4\u591a
|
||||
contentLabel=\u5168\u6587
|
||||
abstractLabel=\u6458\u8981
|
||||
viewCount1Label=\u6d4f\u89c8\u6b21\u6570\uff1a
|
||||
articleCount1Label=\u6587\u7ae0\u603b\u6570\uff1a
|
||||
commentCount1Label=\u8bc4\u8bba\u603b\u6570\uff1a
|
||||
allTagsLabel=\u6807\u7b7e\u5899
|
||||
updatedLabel=\u6709\u66f4\u65b0\uff01
|
||||
topArticleLabel=\u7f6e\u9876\uff01
|
||||
archiveLabel=\u5b58\u6863
|
||||
yearLabel=\u5e74
|
||||
monthLabel=\u6708
|
||||
recentArticlesLabel=\u6700\u65b0\u6587\u7ae0
|
||||
recentCommentsLabel=\u6700\u65b0\u8bc4\u8bba
|
||||
mostCommentArticlesLabel=\u8bc4\u8bba\u6700\u591a\u7684\u6587\u7ae0
|
||||
mostViewCountArticlesLabel=\u8bbf\u95ee\u6700\u591a\u7684\u6587\u7ae0
|
||||
popTagsLabel=\u5206\u7c7b\u6807\u7b7e
|
||||
linkLabel=\u53cb\u60c5\u94fe\u63a5
|
||||
indexLabel=\u9996\u9875
|
||||
sumLabel=\u5171
|
||||
pageLabel=\u9875
|
||||
clearAllCacheLabel=\u6e05\u9664\u6240\u6709\u9875\u9762\u7f13\u5b58
|
||||
clearCacheLabel=\u6e05\u9664\u672c\u9875\u7f13\u5b58
|
||||
adminLabel=\u7ba1\u7406
|
||||
logoutLabel=\u767b\u51fa
|
||||
loginLabel=\u767b\u5f55
|
||||
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
|
||||
commentLabel=\u8bc4\u8bba
|
||||
viewLabel=\u6d4f\u89c8
|
||||
authorLabel=\u4f5c\u8005
|
||||
previousPageLabel=\u4e0a\u4e00\u9875
|
||||
nextPagePabel=\u4e0b\u4e00\u9875
|
||||
firstPageLabel=\u7b2c\u4e00\u9875
|
||||
lastPageLabel=\u6700\u540e\u4e00\u9875
|
||||
archive1Label=\u5b58\u6863\uff1a
|
||||
author1Label=\u4f5c\u8005\uff1a
|
||||
tag1Label=\u6807\u7b7e\uff1a
|
||||
sorryLabel=\u5bf9\u4e0d\u8d77\uff01
|
||||
notFoundLabel=\u627e\u4e0d\u5230\uff01
|
||||
returnTo1Label=\u8fd4\u56de\uff1a
|
||||
replyLabel=\u56de\u590d
|
||||
commentNameLabel=\u59d3\u540d
|
||||
commentEmailLabel=\u90ae\u7bb1
|
||||
commentURLLabel=URL
|
||||
submmitCommentLabel=\u63d0\u4ea4\u8bc4\u8bba
|
||||
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....
|
||||
relevantArticlesLabel=\u76f8\u5173\u9605\u8bfb
|
||||
randomArticlesLabel=\u968f\u673a\u9605\u8bfb
|
||||
externalRelevantArticlesLabel=\u7ad9\u5916\u76f8\u5173\u9605\u8bfb
|
||||
captchaErrorLabel=\u9a8c\u8bc1\u7801\u9519\u8bef
|
||||
b3logLabel=<span style="color: orange;">B</span><span style="color: blue;"><sup>3</sup></span><span style="color: green;">L</span><span style="color: red;">O</span><span style="color: blue;">G</span>
|
||||
killBrowserLabel=<h2>\u8ba9\u6211\u4eec\u653e\u5f03\u4f7f\u7528\u90a3\u4e9b\u8fc7\u65f6\u3001\u4e0d\u5b89\u5168\u7684\u6d4f\u89c8\u5668\u5427\uff01</h2><p>\u4e3a\u4e86\u8ba9\u6d4f\u89c8\u5668\u66f4\u597d\u7684\u53d1\u5c55\uff0c\u4eba\u7c7b\u66f4\u52a0\u7684\u8fdb\u6b65\uff0c\u62e5\u6709\u66f4\u597d\u7684\u4f53\u9a8c\uff0c\u8ba9\u6211\u4eec\u653e\u5f03\u4f7f\u7528\u90a3\u4e9b\u8fc7\u65f6\u3001\u4e0d\u5b89\u5168\u7684\u6d4f\u89c8\u5668\u3002</p>\u60a8\u53ef\u4ee5\u4e0b\u8f7d<ul><li><a href="http://www.mozilla.com/" target="_blank">\u706b\u72d0</a></li><li><a href="http://www.google.com/chrome" target="_blank">\u8c37\u6b4c\u6d4f\u89c8\u5668</a></li><li><a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie" target="_blank">IE8 / IE9</a></li><li><a href="http://www.maxthon.com/" target="_blank">\u9068\u6e38</a>\u6216\u8005<a href="http://www.google.com" target="_blank">\u5176\u5b83\u6d4f\u89c8\u5668</a>.</li></ul>
|
||||
noticeBoardLabel=¹«¸æ
|
32
bootstyle/links.ftl
Normal file
@ -0,0 +1,32 @@
|
||||
<#include "macro-head.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${blogTitle}">
|
||||
<meta name="keywords" content="${metaKeywords},${linkLabel}"/>
|
||||
<meta name="description" content="${metaDescription},${linkLabel}"/>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<#if 0 != links?size>
|
||||
<ul class="other-main links">
|
||||
<#list links as link>
|
||||
<li>
|
||||
<a rel="friend" href="${link.linkAddress}" alt="${link.linkTitle}" target="_blank">
|
||||
<img alt="${link.linkTitle}"
|
||||
src="http://www.google.com/s2/u/0/favicons?domain=<#list link.linkAddress?split('/') as x><#if x_index=2>${x}<#break></#if></#list>" /></a>
|
||||
<a rel="friend" href="${link.linkAddress}" title="${link.linkDescription}" target="_blank">${link.linkTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
158
bootstyle/macro-comments.ftl
Normal file
@ -0,0 +1,158 @@
|
||||
<#macro comments commentList article>
|
||||
<div id="comments">
|
||||
<#list commentList as comment>
|
||||
<div id="${comment.oId}">
|
||||
<img class="comment-header" title="${comment.commentName}"
|
||||
alt="${comment.commentName}" src="${comment.commentThumbnailURL}"/>
|
||||
<div class="comment-panel">
|
||||
<div class="left">
|
||||
<#if "http://" == comment.commentURL>
|
||||
<a>${comment.commentName}</a>
|
||||
<#else>
|
||||
<a href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
|
||||
</#if>
|
||||
<#if comment.isReply>@
|
||||
<a href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}"
|
||||
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 20);"
|
||||
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')">${comment.commentOriginalCommentName}</a>
|
||||
</#if>
|
||||
</div>
|
||||
<#if article.commentable>
|
||||
<div class="right ft-gray">
|
||||
${comment.commentDate?string("yy-MM-dd HH:mm")}
|
||||
<a rel="nofollow" href="javascript:replyTo('${comment.oId}');">${replyLabel}</a>
|
||||
</div>
|
||||
</#if>
|
||||
<span class="clear"></span>
|
||||
<div class="article-body">${comment.commentContent}</div>
|
||||
</div>
|
||||
<span class="clear"></span>
|
||||
</div>
|
||||
</#list>
|
||||
</div>
|
||||
<#if article.commentable>
|
||||
<div class="form">
|
||||
<table id="commentForm">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="text" class="normalInput" id="commentName"/>
|
||||
<label for="commentName">${commentNameLabel}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="text" class="normalInput" id="commentEmail"/>
|
||||
<label for="commentEmail">${commentEmailLabel}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="text" id="commentURL"/>
|
||||
<label for="commentURL">${commentURLLabel}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="emotions" colspan="2">
|
||||
<span class="em00" title="${em00Label}"></span>
|
||||
<span class="em01" title="${em01Label}"></span>
|
||||
<span class="em02" title="${em02Label}"></span>
|
||||
<span class="em03" title="${em03Label}"></span>
|
||||
<span class="em04" title="${em04Label}"></span>
|
||||
<span class="em05" title="${em05Label}"></span>
|
||||
<span class="em06" title="${em06Label}"></span>
|
||||
<span class="em07" title="${em07Label}"></span>
|
||||
<span class="em08" title="${em08Label}"></span>
|
||||
<span class="em09" title="${em09Label}"></span>
|
||||
<span class="em10" title="${em10Label}"></span>
|
||||
<span class="em11" title="${em11Label}"></span>
|
||||
<span class="em12" title="${em12Label}"></span>
|
||||
<span class="em13" title="${em13Label}"></span>
|
||||
<span class="em14" title="${em14Label}"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<textarea rows="10" cols="96" id="comment"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="text" class="normalInput" id="commentValidate"/>
|
||||
<img id="captcha" alt="validate" src="${servePath}/captcha.do" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="ft-gray" id="commentErrorTip"></span>
|
||||
</td>
|
||||
<td align="right">
|
||||
<button id="submitCommentButton" onclick="page.submitComment();">${submmitCommentLabel}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<#if externalRelevantArticlesDisplayCount?? && 0 != externalRelevantArticlesDisplayCount>
|
||||
<div id="externalRelevantArticles" class="article-relative"></div>
|
||||
</#if>
|
||||
<span class="clear"></span>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#macro comment_script oId>
|
||||
<script type="text/javascript" src="${staticServePath}/js/page${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
var page = new Page({
|
||||
"nameTooLongLabel": "${nameTooLongLabel}",
|
||||
"mailCannotEmptyLabel": "${mailCannotEmptyLabel}",
|
||||
"mailInvalidLabel": "${mailInvalidLabel}",
|
||||
"commentContentCannotEmptyLabel": "${commentContentCannotEmptyLabel}",
|
||||
"captchaCannotEmptyLabel": "${captchaCannotEmptyLabel}",
|
||||
"captchaErrorLabel": "${captchaErrorLabel}",
|
||||
"loadingLabel": "${loadingLabel}",
|
||||
"oId": "${oId}",
|
||||
"skinDirName": "${skinDirName}",
|
||||
"blogHost": "${blogHost}",
|
||||
"randomArticles1Label": "${randomArticlesLabel}",
|
||||
"externalRelevantArticles1Label": "${externalRelevantArticlesLabel}"
|
||||
});
|
||||
|
||||
var addComment = function (result, state) {
|
||||
var commentHTML = '<div id="' + result.oId + '"><img class="comment-header" \
|
||||
title="' + $("#commentName" + state).val() + '" alt="' + $("#commentName" + state).val() +
|
||||
'" src="' + result.commentThumbnailURL + '"/><div class="comment-panel"><div class="left">' + result.replyNameHTML;
|
||||
|
||||
if (state !== "") {
|
||||
var commentOriginalCommentName = $("#" + page.currentCommentId + " .comment-panel>.left a").first().text();
|
||||
commentHTML += ' @ <a href="${servePath}' + result.commentSharpURL.split("#")[0] + '#' + page.currentCommentId + '"'
|
||||
+ 'onmouseover="page.showComment(this, \'' + page.currentCommentId + '\', 20);"'
|
||||
+ 'onmouseout="page.hideComment(\'' + page.currentCommentId + '\')">' + commentOriginalCommentName + '</a>';
|
||||
}
|
||||
|
||||
commentHTML += '</div><div class="right ft-gray">' + result.commentDate.substring(2, 16)
|
||||
+ ' <a rel="nofollow" href="javascript:replyTo(\'' + result.oId
|
||||
+ '\');">${replyLabel}</a></div><span class="clear"></span><div class="article-body">' +
|
||||
Util.replaceEmString($("#comment" + state).val().replace(/</g, "<").replace(/>/g, ">").replace(/\n/g,"<br/>"))
|
||||
+ '</div></div><span class="clear"></span></div>';
|
||||
|
||||
return commentHTML;
|
||||
}
|
||||
|
||||
var replyTo = function (id) {
|
||||
var commentFormHTML = "<table class='form' id='replyForm'>";
|
||||
page.addReplyForm(id, commentFormHTML);
|
||||
$("#replyForm label").each(function () {
|
||||
$this = $(this);
|
||||
$this.attr("for", $this.attr("for") + "Reply");
|
||||
});
|
||||
};
|
||||
|
||||
(function () {
|
||||
page.load();
|
||||
// emotions
|
||||
page.replaceCommentsEm("#comments .article-body");
|
||||
<#nested>
|
||||
})();
|
||||
</script>
|
||||
</#macro>
|
12
bootstyle/macro-head.ftl
Normal file
@ -0,0 +1,12 @@
|
||||
<#macro head title>
|
||||
<meta charset="utf-8" />
|
||||
<title>${title}</title>
|
||||
<#nested>
|
||||
<meta http-equiv="Window-target" content="_top" />
|
||||
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/bootstrap/css/bootstrap${miniPostfix}.css?${staticResourceVersion}" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/bootstrap/css/bootstrap-responsive${miniPostfix}.css?${staticResourceVersion}" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/css/${skinDirName}${miniPostfix}.css?${staticResourceVersion}" charset="utf-8" />
|
||||
<link href="${servePath}/blog-articles-feed.do" title="ATOM" type="application/atom+xml" rel="alternate" />
|
||||
<link rel="icon" type="image/png" href="${staticServePath}/favicon.png" />
|
||||
${htmlHead}
|
||||
</#macro>
|
25
bootstyle/page.ftl
Normal file
@ -0,0 +1,25 @@
|
||||
<#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>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<div class="article-body article">
|
||||
${page.pageContent}
|
||||
</div>
|
||||
<@comments commentList=pageComments article=page></@comments>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=page.oId></@comment_script>
|
||||
</body>
|
||||
</html>
|
BIN
bootstyle/preview.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
136
bootstyle/side.ftl
Normal file
@ -0,0 +1,136 @@
|
||||
<#if "" != noticeBoard>
|
||||
<section class="widget-1 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${noticeBoardLabel}</h4>
|
||||
<p>${noticeBoard}</p>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != recentComments?size>
|
||||
<section class="widget-2 widget">
|
||||
<div class="widget-inner"><h4>${recentCommentsLabel}</h4>
|
||||
<ul>
|
||||
<#list recentComments as comment>
|
||||
<li class="recentcomments">
|
||||
<a target="_blank" rel="external nofollow" href="${comment.commentURL}" class="url">${comment.commentName}</a>
|
||||
<a rel="external nofollow" class=" breakline url" href="${comment.commentSharpURL}">
|
||||
${comment.commentContent}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != mostCommentArticles?size>
|
||||
<section class="widget-3 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${mostCommentArticlesLabel}</h4>
|
||||
<ul>
|
||||
<#list mostCommentArticles as article>
|
||||
<li>
|
||||
<a href="${article.articlePermalink}">
|
||||
[${article.articleCommentCount}] ${article.articleTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != mostViewCountArticles?size>
|
||||
<section class="widget-4 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${mostViewCountArticlesLabel}</h4>
|
||||
<ul>
|
||||
<#list mostViewCountArticles as article>
|
||||
<li>
|
||||
<a href="${article.articlePermalink}">
|
||||
[${article.articleViewCount}] ${article.articleTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != mostUsedTags?size>
|
||||
<section class="widget-5 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${popTagsLabel}</h4>
|
||||
<ul>
|
||||
<#list mostUsedTags as tag>
|
||||
<span class="tag">
|
||||
<#if (tag.tagPublishedRefCount/3 > 5 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge badge-inverse">${tag.tagTitle}</span>
|
||||
</a>
|
||||
<#elseif (tag.tagPublishedRefCount/3 > 4 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge badge-info">${tag.tagTitle}</span>
|
||||
</a>
|
||||
<#elseif (tag.tagPublishedRefCount/3 > 3 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge badge-success">${tag.tagTitle}</span>
|
||||
</a>
|
||||
<#elseif (tag.tagPublishedRefCount/3 > 2 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge badge-important">${tag.tagTitle}</span>
|
||||
</a>
|
||||
<#elseif (tag.tagPublishedRefCount/3 > 1 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge badge-warning">${tag.tagTitle}</span>
|
||||
</a>
|
||||
<#elseif (tag.tagPublishedRefCount/3 > 0 ) >
|
||||
<a href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" title="${tag.tagPublishedRefCount}">
|
||||
<span class="badge">${tag.tagTitle}</span>
|
||||
</a>
|
||||
</#if>
|
||||
</span>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != archiveDates?size>
|
||||
<section class="widget-6 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${archiveLabel}</h4>
|
||||
<ul>
|
||||
<#list archiveDates as archiveDate>
|
||||
<#if "en" == localeString?substring(0, 2)>
|
||||
<li><a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
|
||||
title="${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})">
|
||||
${archiveDate.monthName} ${archiveDate.archiveDateYear}</a>(${archiveDate.archiveDatePublishedArticleCount})</li>
|
||||
<#else>
|
||||
<li><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})</li>
|
||||
</#if>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<#if 0 != links?size>
|
||||
<section class="widget-7 widget">
|
||||
<div class="widget-inner">
|
||||
<h4>${linkLabel}</h4>
|
||||
<ul>
|
||||
<#list links as link>
|
||||
<li>
|
||||
<a href="${link.linkAddress}" title="${link.linkTitle}" target="_blank">
|
||||
${link.linkTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</#if>
|
27
bootstyle/skin.properties
Normal file
@ -0,0 +1,27 @@
|
||||
#
|
||||
# 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: ease skin.
|
||||
# Version: 1.0.0.3, Nov 21, 2012
|
||||
# Author: Liyuan Li
|
||||
# Author: Liang Ding
|
||||
#
|
||||
|
||||
name=bootstyle
|
||||
version=1.0.0
|
||||
forSolo=0.5.5
|
||||
memo=Bootstrap style for B3log
|
27
bootstyle/tag-articles.ftl
Normal file
@ -0,0 +1,27 @@
|
||||
<#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>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<h2>
|
||||
<a rel="alternate" href="${servePath}/tag-articles-feed.do?oId=${tag.oId}">
|
||||
${tag1Label}
|
||||
${tag.tagTitle}
|
||||
(${tag.tagPublishedRefCount})
|
||||
</a>
|
||||
</h2>
|
||||
<#include "article-list.ftl">
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
34
bootstyle/tags.ftl
Normal file
@ -0,0 +1,34 @@
|
||||
<#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>
|
||||
${topBarReplacement}
|
||||
<#include "header.ftl">
|
||||
<div class="main">
|
||||
<div class="wrapper">
|
||||
<ul id="tags" class="other-main">
|
||||
<#list tags as tag>
|
||||
<li>
|
||||
<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>
|
||||
</li>
|
||||
</#list>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
<script type="text/javascript">
|
||||
Util.buildTags();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|