Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo
Commits
5f6ecbff
Commit
5f6ecbff
authored
Aug 09, 2016
by
D
Committed by
GitHub
Aug 09, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12139 from b3log/1.5.0-dev
1.5.0 dev
parents
f61bd1d3
3bcdb8d2
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
278 additions
and
2326 deletions
+278
-2326
.gitignore
.gitignore
+1
-0
pom.xml
pom.xml
+9
-2
src/main/java/org/b3log/solo/processor/console/AdminConsole.java
...n/java/org/b3log/solo/processor/console/AdminConsole.java
+90
-1
src/main/resources/lang_en_US.properties
src/main/resources/lang_en_US.properties
+2
-1
src/main/resources/lang_zh_CN.properties
src/main/resources/lang_zh_CN.properties
+2
-1
src/main/resources/local.properties
src/main/resources/local.properties
+12
-12
src/main/webapp/admin-others.ftl
src/main/webapp/admin-others.ftl
+3
-0
src/main/webapp/js/admin/others.js
src/main/webapp/js/admin/others.js
+37
-19
src/main/webapp/skins/next/archive-articles.ftl
src/main/webapp/skins/next/archive-articles.ftl
+32
-0
src/main/webapp/skins/next/archives.ftl
src/main/webapp/skins/next/archives.ftl
+1
-1
src/main/webapp/skins/next/article-list.ftl
src/main/webapp/skins/next/article-list.ftl
+4
-4
src/main/webapp/skins/next/article.ftl
src/main/webapp/skins/next/article.ftl
+8
-8
src/main/webapp/skins/next/css/main.css
src/main/webapp/skins/next/css/main.css
+0
-2243
src/main/webapp/skins/next/css/next.css
src/main/webapp/skins/next/css/next.css
+33
-4
src/main/webapp/skins/next/css/next.min.css
src/main/webapp/skins/next/css/next.min.css
+1
-0
src/main/webapp/skins/next/dynamic.ftl
src/main/webapp/skins/next/dynamic.ftl
+1
-1
src/main/webapp/skins/next/js/next.js
src/main/webapp/skins/next/js/next.js
+2
-2
src/main/webapp/skins/next/js/next.min.js
src/main/webapp/skins/next/js/next.min.js
+1
-0
src/main/webapp/skins/next/lang/lang_en_US.properties
src/main/webapp/skins/next/lang/lang_en_US.properties
+7
-1
src/main/webapp/skins/next/lang/lang_zh_CN.properties
src/main/webapp/skins/next/lang/lang_zh_CN.properties
+27
-21
src/main/webapp/skins/next/macro-comments.ftl
src/main/webapp/skins/next/macro-comments.ftl
+1
-1
src/main/webapp/skins/next/preview.png
src/main/webapp/skins/next/preview.png
+0
-0
src/main/webapp/skins/next/side.ftl
src/main/webapp/skins/next/side.ftl
+3
-3
src/main/webapp/skins/next/tags.ftl
src/main/webapp/skins/next/tags.ftl
+1
-1
src/main/webapp/skins/yilia/preview.png
src/main/webapp/skins/yilia/preview.png
+0
-0
No files found.
.gitignore
View file @
5f6ecbff
...
...
@@ -16,3 +16,4 @@ src/main/webapp/skins/*
!src/main/webapp/skins/mobile
!src/main/webapp/skins/yilia
!src/main/webapp/skins/next
**/.DS_Store
pom.xml
View file @
5f6ecbff
<?xml version="1.0" encoding="UTF-8"?>
<!--
Description: Solo POM.
Version: 3.1
1.1.23, Jul 7
, 2016
Version: 3.1
2.1.25, Aug 10
, 2016
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
-->
...
...
@@ -106,7 +106,7 @@
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<org.b3log.latke.version>
2.2.
6
</org.b3log.latke.version>
<org.b3log.latke.version>
2.2.
10
</org.b3log.latke.version>
<servlet.version>
3.1.0
</servlet.version>
<slf4j.version>
1.7.5
</slf4j.version>
...
...
@@ -116,6 +116,7 @@
<jetty.version>
9.2.13.v20150730
</jetty.version>
<commons-cli.version>
1.3.1
</commons-cli.version>
<emoji-java.version>
3.0.0
</emoji-java.version>
<jodd.version>
3.6.6
</jodd.version>
<!-- maven plugin -->
<maven-compiler-plugin.version>
3.3
</maven-compiler-plugin.version>
...
...
@@ -215,6 +216,12 @@
<artifactId>
commons-cli
</artifactId>
<version>
${commons-cli.version}
</version>
</dependency>
<dependency>
<groupId>
org.jodd
</groupId>
<artifactId>
jodd-http
</artifactId>
<version>
${jodd.version}
</version>
</dependency>
</dependencies>
<build>
...
...
src/main/java/org/b3log/solo/processor/console/AdminConsole.java
View file @
5f6ecbff
...
...
@@ -16,15 +16,25 @@
package
org
.
b3log
.
solo
.
processor
.
console
;
import
com.qiniu.util.Auth
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.OutputStream
;
import
java.util.Calendar
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.TimeZone
;
import
java.util.UUID
;
import
javax.inject.Inject
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
jodd.io.ZipUtil
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.RuntimeDatabase
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.event.EventManager
;
...
...
@@ -40,6 +50,7 @@ import org.b3log.latke.servlet.HTTPRequestMethod;
import
org.b3log.latke.servlet.annotation.RequestProcessing
;
import
org.b3log.latke.servlet.annotation.RequestProcessor
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Execs
;
import
org.b3log.latke.util.Strings
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.Common
;
...
...
@@ -58,7 +69,7 @@ import org.json.JSONObject;
* Admin console render processing.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
2.1.8, Nov 20, 2015
* @version 1.
3.1.9, Jul 28, 2016
* @since 0.4.1
*/
@RequestProcessor
...
...
@@ -222,6 +233,8 @@ public class AdminConsole {
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
locale
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
dataModel
.
put
(
"isMySQL"
,
RuntimeDatabase
.
MYSQL
==
Latkes
.
getRuntimeDatabase
());
dataModel
.
putAll
(
langs
);
Keys
.
fillRuntime
(
dataModel
);
...
...
@@ -283,6 +296,82 @@ public class AdminConsole {
fireFreeMarkerActionEvent
(
templateName
,
dataModel
);
}
/**
* Exports data as SQL file.
*
* @param request the specified HTTP servlet request
* @param response the specified HTTP servlet response
* @param context the specified HTTP request context
* @throws Exception exception
*/
@RequestProcessing
(
value
=
"/console/export/sql"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
exportSQL
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
throws
Exception
{
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
return
;
}
if
(!
Latkes
.
runsWithJDBCDatabase
()
||
RuntimeDatabase
.
MYSQL
!=
Latkes
.
getRuntimeDatabase
())
{
context
.
renderJSON
().
renderMsg
(
"Just support MySQL export now"
);
return
;
}
final
String
dbUser
=
Latkes
.
getLocalProperty
(
"jdbc.username"
);
final
String
dbPwd
=
Latkes
.
getLocalProperty
(
"jdbc.password"
);
final
String
dbURL
=
Latkes
.
getLocalProperty
(
"jdbc.URL"
);
String
db
=
StringUtils
.
substringAfterLast
(
dbURL
,
"/"
);
db
=
StringUtils
.
substringBefore
(
db
,
"?"
);
String
sql
;
try
{
if
(
StringUtils
.
isNotBlank
(
dbPwd
))
{
sql
=
Execs
.
exec
(
"mysqldump -u"
+
dbUser
+
" -p"
+
dbPwd
+
" --database "
+
db
);
}
else
{
sql
=
Execs
.
exec
(
"mysqldump -u"
+
dbUser
+
" --database "
+
db
);
}
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Export failed"
,
e
);
context
.
renderJSON
().
renderMsg
(
"Export failed, please check log"
);
return
;
}
final
String
tmpDir
=
System
.
getProperty
(
"java.io.tmpdir"
);
String
localFilePath
=
tmpDir
+
"/b3_solo_"
+
UUID
.
randomUUID
().
toString
()
+
".sql"
;
LOGGER
.
info
(
localFilePath
);
final
File
localFile
=
new
File
(
localFilePath
);
try
{
final
byte
[]
data
=
sql
.
getBytes
(
"UTF-8"
);
OutputStream
output
=
new
FileOutputStream
(
localFile
);
IOUtils
.
write
(
data
,
output
);
IOUtils
.
closeQuietly
(
output
);
final
File
zipFile
=
ZipUtil
.
zip
(
localFile
);
final
FileInputStream
inputStream
=
new
FileInputStream
(
zipFile
);
final
byte
[]
zipData
=
IOUtils
.
toByteArray
(
inputStream
);
IOUtils
.
closeQuietly
(
inputStream
);
response
.
setContentType
(
"application/zip"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment; filename=\"solo.sql.zip\""
);
final
ServletOutputStream
outputStream
=
response
.
getOutputStream
();
outputStream
.
write
(
zipData
);
outputStream
.
flush
();
outputStream
.
close
();
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Export failed"
,
e
);
context
.
renderJSON
().
renderMsg
(
"Export failed, please check log"
);
return
;
}
}
/**
* Fires FreeMarker action event with the host template name and data model.
*
...
...
src/main/resources/lang_en_US.properties
View file @
5f6ecbff
...
...
@@ -16,12 +16,13 @@
#
# Description: Solo language configurations(en_US).
# Version: 2.
5.2.10, Feb 20
, 2016
# Version: 2.
6.2.10, Jul 27
, 2016
# Author: Liang Ding
# Author: Liyuan Li
# Author: Dongxu Wang
#
exportSQLLabel
=
Export SQL file
notAllowRegisterLabel
=
Not allow register
allowRegister1Label
=
Allow Register:
footerContent1Label
=
Footer:
...
...
src/main/resources/lang_zh_CN.properties
View file @
5f6ecbff
...
...
@@ -16,12 +16,13 @@
#
# Description: Solo default language configurations(zh_CN).
# Version: 2.
5.4.17, Feb 20
, 2016
# Version: 2.
6.4.17, Jul 27
, 2016
# Author: Liang Ding
# Author: Liyuan Li
# Author: Dongxu Wang
#
exportSQLLabel
=
\u
5bfc
\u
51fa SQL
\u6587\u
4ef6
notAllowRegisterLabel
=
\u6682\u
4e0d
\u
5f00
\u
653e
\u
6ce8
\u
518c
\u
ff01
allowRegister1Label
=
\u5141\u
8bb8
\u
6ce8
\u
518c
\u
ff1a
footerContent1Label
=
\u9875\u
811a
\u
ff1a
...
...
src/main/resources/local.properties
View file @
5f6ecbff
...
...
@@ -21,20 +21,20 @@
#
#### H2 runtime ####
runtimeDatabase
=
H2
jdbc.username
=
root
jdbc.password
=
jdbc.driver
=
org.h2.Driver
jdbc.URL
=
jdbc:h2:~/b3log_solo_h2/db
jdbc.pool
=
h2
#### MySQL runtime ####
#runtimeDatabase=MYSQL
#runtimeDatabase=H2
#jdbc.username=root
#jdbc.password=
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.URL=jdbc:mysql://localhost:3306/b3log?useUnicode=yes&characterEncoding=utf8
#jdbc.pool=druid
#jdbc.driver=org.h2.Driver
#jdbc.URL=jdbc:h2:~/b3log_solo_h2/db
#jdbc.pool=h2
#### MySQL runtime ####
runtimeDatabase
=
MYSQL
jdbc.username
=
root
jdbc.password
=
jdbc.driver
=
com.mysql.jdbc.Driver
jdbc.URL
=
jdbc:mysql://localhost:3306/b3log?useUnicode=yes&characterEncoding=utf8
jdbc.pool
=
druid
# The minConnCnt MUST larger or equal to 3
jdbc.minConnCnt
=
5
...
...
src/main/webapp/admin-others.ftl
View file @
5f6ecbff
...
...
@@ -47,6 +47,9 @@
</div>
<div id="tabOthersPanel_other" class="none">
<button class="margin12" onclick="admin.others.removeUnusedTags();">${removeUnusedTagsLabel}</button>
<#if isMySQL>
<button class="margin12" onclick="admin.others.exportSQL();">${exportSQLLabel}</button>
</#if>
</div>
</div>
${plugins}
src/main/webapp/js/admin/others.js
View file @
5f6ecbff
...
...
@@ -18,7 +18,7 @@
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
0.0.8, May 28, 2013
* @version 1.
1.0.8, Jul 27, 2016
*/
/* oterhs 相关操作 */
...
...
@@ -28,42 +28,61 @@ admin.others = {
*/
init
:
function
()
{
$
(
"
#tabOthers
"
).
tabs
();
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/reply/notification/template
"
,
type
:
"
GET
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
return
;
}
$
(
"
#replayEmailTemplateTitle
"
).
val
(
result
.
replyNotificationTemplate
.
subject
);
$
(
"
#replayEmailTemplateBody
"
).
val
(
result
.
replyNotificationTemplate
.
body
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
});
},
/*
* @description 移除未使用的标签。
*/
removeUnusedTags
:
function
()
{
$
(
"
#tipMsg
"
).
text
(
""
);
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/tag/unused
"
,
type
:
"
DELETE
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
){
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
}
});
},
/*
* @description 移除未使用的标签。
*/
exportSQL
:
function
()
{
$
(
"
#tipMsg
"
).
text
(
""
);
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/export/sql
"
,
type
:
"
GET
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
)
{
// AJAX 下载文件的话这里会发两次请求,用 sc 来判断是否是文件,如果没有 sc 说明文件可以下载(实际上就是 result)
if
(
!
result
.
sc
)
{
// 再发一次请求进行正式下载
window
.
location
=
latkeConfig
.
servePath
+
"
/console/export/sql
"
;
}
else
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
}
}
});
},
/*
* 获取未使用的标签。
* XXX: Not used this function yet.
...
...
@@ -73,13 +92,13 @@ admin.others = {
url
:
latkeConfig
.
servePath
+
"
/console/tag/unused
"
,
type
:
"
GET
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
return
;
}
var
unusedTags
=
result
.
unusedTags
;
if
(
0
===
unusedTags
.
length
)
{
return
;
...
...
@@ -87,21 +106,20 @@ admin.others = {
}
});
},
/*
* @description 跟新回复提醒邮件模版
*/
update
:
function
()
{
$
(
"
#loadMsg
"
).
text
(
Label
.
loadingLabel
);
$
(
"
#tipMsg
"
).
text
(
""
);
var
requestJSONObject
=
{
"
replyNotificationTemplate
"
:
{
"
subject
"
:
$
(
"
#replayEmailTemplateTitle
"
).
val
(),
"
body
"
:
$
(
"
#replayEmailTemplateBody
"
).
val
()
}
};
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/reply/notification/template
"
,
type
:
"
PUT
"
,
...
...
@@ -111,16 +129,16 @@ admin.others = {
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
});
}
};
/*
* 注册到 admin 进行管理
*/
admin
.
register
.
others
=
{
admin
.
register
.
others
=
{
"
obj
"
:
admin
.
others
,
"
init
"
:
admin
.
others
.
init
,
"
init
"
:
admin
.
others
.
init
,
"
refresh
"
:
function
()
{
admin
.
clearTip
();
}
...
...
src/main/webapp/skins/next/archive-articles.ftl
0 → 100644
View file @
5f6ecbff
<
#include
"
macro-head
.
ftl
"
>
<!DOCTYPE html>
<html>
<head>
<
@
head
title=
"${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount}) - ${blogTitle}"
>
<meta
name=
"keywords"
content=
"${metaKeywords},${archiveDate.archiveDateYear}${archiveDate.archiveDateMonth}"
/>
<meta
name=
"description"
content=
"<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"
/>
</
@
head>
</head>
<body>
<
#include
"
header
.
ftl
"
>
<main
class=
"main wrapper"
>
<div
class=
"content page-archive"
>
<section
class=
"posts-collapse"
>
<span
class=
"archive-move-on"
></span>
<span
class=
"archive-page-counter"
>
${ohLabel}..!
<
#if
"
en
"
==
localeString
?
substring
(
0
,
2
)
>
${archiveDate.archiveDateMonth} ${archiveDate.archiveDateYear}
<
#else
>
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}
</
#
if>
${sumLabel} ${archiveDate.archiveDatePublishedArticleCount} ${fightLabel}
</span>
</section>
<
#include
"
article-list
.
ftl
"
>
</div>
<
#include
"
side
.
ftl
"
>
</main>
<
#include
"
footer
.
ftl
"
>
</body>
</html>
src/main/webapp/skins/next/archives.ftl
View file @
5f6ecbff
...
...
@@ -14,7 +14,7 @@
<section
class=
"posts-collapse"
>
<span
class=
"archive-move-on"
></span>
<span
class=
"archive-page-counter"
>
嗯..! 目前共计 ${statistic.statisticPublishedBlogArticleCount} 篇日志。 继续努力。
${ohLabel}..! ${sumLabel} ${statistic.statisticPublishedBlogArticleCount} ${fightLabel}
</span>
<
#if
0
!=
archiveDates
?
size
>
<
#list
archiveDates
as
archiveDate
>
...
...
src/main/webapp/skins/next/article-list.ftl
View file @
5f6ecbff
...
...
@@ -20,7 +20,7 @@
<div class="post-meta">
<span>
发表于
${postTimeLabel}
<time>
${article.articleCreateDate?string("yyyy-MM-dd")}
</time>
...
...
@@ -28,15 +28,15 @@
<span>
|
<a href="${servePath}${article.articlePermalink}#comments">
${article.articleCommentCount}
条评论
</a>
${article.articleCommentCount}
${cmtLabel}
</a>
</span>
|
热度
${article.articleViewCount}°C
|
${viewsLabel}
${article.articleViewCount}°C
</div>
</header>
${article.articleAbstract}
<div class="post-more-link">
<a href="${servePath}${article.articlePermalink}/#more" rel="contents">
阅读全文
»
${readLabel}
»
</a>
</div>
</article>
...
...
src/main/webapp/skins/next/article.ftl
View file @
5f6ecbff
...
...
@@ -29,7 +29,7 @@
</h1>
<div
class=
"post-meta"
>
<span
class=
"post-time"
>
发表于
${postTimeLabel}
<time>
${article.articleCreateDate?string("yyyy-MM-dd")}
</time>
...
...
@@ -37,14 +37,14 @@
<span
class=
"post-comments-count"
>
|
<a
href=
"${servePath}${article.articlePermalink}#comments"
>
${article.articleCommentCount}
条评论
</a>
${article.articleCommentCount}
${cmtLabel}
</a>
</span>
|
热度
|
${viewsLabel}
${article.articleViewCount}°C
</div>
</header>
<div
class=
"post-body"
>
<div
class=
"post-body
article-body
"
>
${article.articleContent}
<
#if
""
!=
article
.
articleSign
.
signHTML
?
trim
>
<div>
...
...
@@ -61,16 +61,16 @@
</div>
<div
class=
"post-nav fn-clear"
>
<
#if
previousArticlePermalink
??
>
<div
class=
"post-nav-prev post-nav-item fn-
lef
t"
>
<div
class=
"post-nav-prev post-nav-item fn-
righ
t"
>
<a
href=
"${servePath}${previousArticlePermalink}"
rel=
"next"
title=
"${previousArticleTitle}"
>
<
${
previousArticleTitle
}
${previousArticleTitle} >
</a>
</div>
</
#
if>
<
#if
nextArticlePermalink
??
>
<div
class=
"post-nav-next post-nav-item fn-
righ
t"
>
<div
class=
"post-nav-next post-nav-item fn-
lef
t"
>
<a
href=
"${servePath}${nextArticlePermalink}"
rel=
"prev"
title=
"${nextArticleTitle}"
>
${nextArticleTitle} >
<
${
nextArticleTitle
}
</
a
>
</div>
</
#
if>
...
...
src/main/webapp/skins/next/css/main.css
deleted
100644 → 0
View file @
f61bd1d3
This diff is collapsed.
Click to expand it.
src/main/webapp/skins/next/css/next.css
View file @
5f6ecbff
...
...
@@ -664,11 +664,13 @@ img {
text-align
:
center
;
}
.post-body
{
word-wrap
:
break-word
;
}
.post-body
img
{
box-sizing
:
border-box
;
margin
:
auto
;
padding
:
3px
;
border
:
1px
solid
#ddd
;
}
.posts-expand
.post-tags
{
margin-top
:
40px
;
...
...
@@ -734,6 +736,7 @@ ul.comments .avatar-48 {
ul
.comments
.comment-body
{
margin
:
8px
0
0
60px
;
min-height
:
50px
;
}
ul
.comments
li
.comment-body-ref
{
...
...
@@ -925,7 +928,33 @@ ul.comments .comment-meta time {
/* end archives */
/* start responsive */
@media
(
max-width
:
700px
)
{
.b3-solo-list
{
margin
:
0
;
padding
:
0
;
}
.page-archive
.posts-collapse
.archive-move-on
{
margin-left
:
5px
;
}
.posts-collapse
{
margin-left
:
10px
;
}
}
@media
(
max-width
:
500px
)
{
pre
{
word-wrap
:
break-word
;
word-break
:
break-all
;
white-space
:
normal
;
}
.page-archive
.archive-page-counter
{
margin-right
:
10px
;
}
.site-nav-toggle
{
display
:
block
;
margin-top
:
16px
;
...
...
@@ -953,11 +982,11 @@ ul.comments .comment-meta time {
background-color
:
#ddd
;
display
:
none
;
}
.header
.wrapper
{
padding
:
0
10px
;
}
.logo-wrap
.site-title
{
margin-left
:
10px
;
}
...
...
src/main/webapp/skins/next/css/next.min.css
0 → 100644
View file @
5f6ecbff
This diff is collapsed.
Click to expand it.
src/main/webapp/skins/next/dynamic.ftl
View file @
5f6ecbff
...
...
@@ -28,7 +28,7 @@
</span>
<a
class=
"fn-right"
href=
"${servePath}${comment.commentSharpURL}"
>
${viewLabel}»
</a>
</div>
<div
class=
"comment-content"
>
<div
class=
"comment-content
post-body article-body
"
>
${comment.commentContent}
</div>
</div>
...
...
src/main/webapp/skins/next/js/next.js
View file @
5f6ecbff
...
...
@@ -17,7 +17,7 @@
* @fileoverview util and every page should be used.
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 0.1.
0.0, Jan 11
, 2016
* @version 0.1.
1.0, Jul 30
, 2016
*/
/**
...
...
@@ -79,7 +79,7 @@ var NexT = {
});
},
initArticle
:
function
()
{
if
(
$
(
'
.b3-solo-list li
'
).
length
>
0
)
{
if
(
$
(
'
.b3-solo-list li
'
).
length
>
0
&&
$
(
window
).
width
()
>
700
)
{
$
(
'
.sidebar
'
).
html
(
$
(
'
.b3-solo-list
'
));
$
(
'
.sidebar-toggle
'
).
click
();
}
...
...
src/main/webapp/skins/next/js/next.min.js
0 → 100644
View file @
5f6ecbff
var
NexT
=
{
init
:
function
(){
$
(
"
.sidebar-toggle
"
).
click
(
function
(){
var
i
=
$
(
"
.sidebar
"
);
$
(
this
).
hasClass
(
"
sidebar-active
"
)?(
$
(
this
).
removeClass
(
"
sidebar-active
"
),
$
(
"
body
"
).
animate
({
"
padding-right
"
:
0
}),
i
.
animate
({
right
:
-
320
})):(
$
(
this
).
addClass
(
"
sidebar-active
"
),
$
(
"
body
"
).
animate
({
"
padding-right
"
:
320
}),
i
.
animate
({
right
:
0
}))}),
$
(
"
.site-nav-toggle
"
).
click
(
function
(){
$
(
"
.site-nav
"
).
slideToggle
()}),
$
(
document
).
ready
(
function
(){
setTimeout
(
function
(){
$
(
"
.logo-wrap
"
).
css
(
"
opacity
"
,
1
),
$
(
"
.logo-line-before i
"
).
animate
({
left
:
"
0
"
},
function
(){
$
(
"
.site-title
"
).
css
(
"
opacity
"
,
1
).
animate
({
top
:
0
},
function
(){
$
(
"
.menu
"
).
css
(
"
opacity
"
,
1
).
animate
({
"
margin-top
"
:
"
15px
"
}),
$
(
"
.main
"
).
css
(
"
opacity
"
,
1
).
animate
({
top
:
"
0
"
})})}),
$
(
"
.logo-line-after i
"
).
animate
({
right
:
"
0
"
})},
500
)})},
initArticle
:
function
(){
$
(
"
.b3-solo-list li
"
).
length
>
0
&&
$
(
window
).
width
()
>
700
&&
(
$
(
"
.sidebar
"
).
html
(
$
(
"
.b3-solo-list
"
)),
$
(
"
.sidebar-toggle
"
).
click
())}};
NexT
.
init
();
\ No newline at end of file
src/main/webapp/skins/next/lang/lang_en_US.properties
View file @
5f6ecbff
...
...
@@ -16,10 +16,16 @@
#
# Description: B3log Solo language configurations(en_US).
# Version: 1.0.0.
1, Jun 19
, 2015
# Version: 1.0.0.
2, Jun 30
, 2015
# Author: Liyuan Li
#
viewsLabel
=
Heat
cmtLabel\uff1d
postTimeLabel
=
Post At
readLabel
=
Read More
fightLabel
=
articles, fighting!
ohLabel
=
Oh
subscribeLabel
=
Subscribe
dynamicLabel
=
Dynamic
adminConsoleLabel
=
Admin
...
...
src/main/webapp/skins/next/lang/lang_zh_CN.properties
View file @
5f6ecbff
...
...
@@ -16,17 +16,23 @@
#
# Description: B3log Solo default language configurations(zh_CN).
# Version:
0.1.0.0, Jun 29
, 2016
# Version:
1.0.0.1, Jul 30
, 2016
# Author: Liyuan Li
#
viewsLabel
=
\u
70ed
\u
5ea6
cmtLabel
=
\u6761\u
8bc4
\u
8bba
postTimeLabel
=
\u
53d1
\u8868\u
4e8e
readLabel
=
\u9605\u
8bfb
\u5168\u6587
fightLabel
=
\u
7bc7
\u
65e5
\u
5fd7
\u3002
\u
7ee7
\u
7eed
\u
52aa
\u
529b
\u3002
ohLabel
=
\u
55ef
searchLabel
=
\u
641c
\u
7d22
subscribeLabel
=
\u
8ba2
\u9605
dynamicLabel
=
\u
52a8
\u6001
adminConsoleLabel
=
\u
540e
\u
53f0
\u
7ba1
\u7406
adminIndexLabel
=
\u
540e
\u
53f0
\u9996\u9875
postArticleLabel
=
\u
53d1
\u
5e03
\u65
87\u
7ae0
articleListLabel
=
\u65
87\u
7ae0
\u
7ba1
\u7406
postArticleLabel
=
\u
53d1
\u
5e03
\u
65
e5
\u
5fd7
articleListLabel
=
\u
65
e5
\u
5fd7
\u
7ba1
\u7406
commentListLabel
=
\u
8bc4
\u
8bba
\u
7ba1
\u7406
draftListLabel
=
\u8349\u
7a3f
\u5939
userManageLabel
=
\u7528\u6237\u
7ba1
\u7406
...
...
@@ -53,11 +59,11 @@ initLabel=\u521d\u59cb\u5316
popTagsLabel
=
\u5206\u
7c7b
\u6807\u
7b7e
tag1Label
=
\u6807\u
7b7e
\u
ff1a
tags1Label
=
\u6807\u
7b7e
\u
ff1a
recentArticlesLabel
=
\u6700\u
65b0
\u65
87\u
7ae0
recentArticlesLabel
=
\u6700\u
65b0
\u
65
e5
\u
5fd7
recentCommentsLabel
=
\u6700\u
65b0
\u
8bc4
\u
8bba
postCommentsLabel
=
\u
53d1
\u8868\u
8bc4
\u
8bba
mostCommentArticlesLabel
=
\u
8bc4
\u
8bba
\u6700\u
591a
\u7684\u65
87\u
7ae0
mostViewCountArticlesLabel
=
\u
8bbf
\u
95ee
\u6700\u
591a
\u7684\u65
87\u
7ae0
mostCommentArticlesLabel
=
\u
8bc4
\u
8bba
\u6700\u
591a
\u7684\u
65
e5
\u
5fd7
mostViewCountArticlesLabel
=
\u
8bbf
\u
95ee
\u6700\u
591a
\u7684\u
65
e5
\u
5fd7
em00Label
=
\u
5fae
\u
7b11
em01Label
=
\u5927\u
7b11
em02Label
=
\u
9ad8
\u5174
...
...
@@ -121,7 +127,7 @@ statisticLabel=\u535a\u5ba2\u7edf\u8ba1
viewLabel
=
\u
6d4f
\u
89c8
countLabel
=
\u
7bc7
viewCount1Label
=
\u
6d4f
\u
89c8
\u
6b21
\u6570\u
ff1a
articleCount1Label
=
\u65
87\u
7ae0
\u
603b
\u6570\u
ff1a
articleCount1Label
=
\u
65
e5
\u
5fd7
\u
603b
\u6570\u
ff1a
commentCountLabel
=
\u
8bc4
\u
8bba
\u6570
commentCount1Label
=
\u
8bc4
\u
8bba
\u
603b
\u6570\u
ff1a
commentEmotions1Label
=
\u8868\u
60c5
\u
ff1a
...
...
@@ -135,12 +141,12 @@ commentURLLabel=URL
commentContent1Label
=
\u
8bc4
\u
8bba
\u5185\u
5bb9
\u
ff1a
commentContentLabel
=
\u
8bc4
\u
8bba
\u5185\u
5bb9
getDateLabel
=
\u
83b7
\u
53d6
\u
65e5
\u
671f
getArticleLabel
=
\u
83b7
\u
53d6
\u65
87\u
7ae0
getArticleLabel
=
\u
83b7
\u
53d6
\u
65
e5
\u
5fd7
selectDateLabel
=
\u9009\u
62e9
\u
65e5
\u
671f
selectDate1Label
=
\u9009\u
62e9
\u
65e5
\u
671f
\u
ff1a
importLabel
=
\u
5bfc
\u5165
chooseBlog1Label
=
\u
8bf7
\u9009\u
62e9
\u9700\u8981\u
7ba1
\u7406\u7684\u
535a
\u
5ba2
\u
ff1a
blogArticleImportLabel
=
\u65
87\u
7ae0
\u
5bfc
\u5165
blogArticleImportLabel
=
\u
65
e5
\u
5fd7
\u
5bfc
\u5165
blogSyncMgmtLabel
=
\u
535a
\u
5ba2
\u
540c
\u
6b65
\u
7ba1
\u7406
syncMgmtLabel
=
\u
540c
\u
6b65
\u
7ba1
\u7406\u
535a
\u
5ba2
userName1Label
=
\u7528\u6237\u
540d
\u
ff1a
...
...
@@ -153,15 +159,15 @@ noticeBoard1Label=\u516c\u544a\uff1a
noticeBoardLabel
=
\u
516c
\u
544a
htmlhead1Label
=
HTML head
\u
ff1a
indexTagDisplayCnt1Label
=
\u9996\u9875\u6807\u
7b7e
\u
663e
\u
793a
\u6570\u
ff1a
indexRecentArticleDisplayCnt1Label
=
\u6700\u
65b0
\u65
87\u
7ae0
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexRecentArticleDisplayCnt1Label
=
\u6700\u
65b0
\u
65
e5
\u
5fd7
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexRecentCommentDisplayCnt1Label
=
\u6700\u
65b0
\u
8bc4
\u
8bba
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexMostCommentArticleDisplayCnt1Label
=
\u
8bc4
\u
8bba
\u6700\u
591a
\u65
87\u
7ae0
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexMostViewArticleDisplayCnt1Label
=
\u
8bbf
\u
95ee
\u6700\u
591a
\u6700\u
591a
\u65
87\u
7ae0
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexMostCommentArticleDisplayCnt1Label
=
\u
8bc4
\u
8bba
\u6700\u
591a
\u
65
e5
\u
5fd7
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
indexMostViewArticleDisplayCnt1Label
=
\u
8bbf
\u
95ee
\u6700\u
591a
\u6700\u
591a
\u
65
e5
\u
5fd7
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
relevantArticlesDisplayCnt1Label
=
\u
76f8
\u5173\u9605\u
8bfb
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
randomArticlesDisplayCnt1Label
=
\u
968f
\u
673a
\u9605\u
8bfb
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
externalRelevantArticlesDisplayCnt1Label
=
\u
7ad9
\u5916\u
76f8
\u5173\u9605\u
8bfb
\u
663e
\u
793a
\u6570\u
76ee
\u
ff1a
windowSize1Label
=
\u5206\u9875\u9875\u7801\u6700\u5927\u
5bbd
\u
5ea6
\u
ff1a
pageSize1Label
=
\u5206\u9875\u
6bcf
\u9875\u
663e
\u
793a
\u65
87\u
7ae0
\u6570\u
ff1a
pageSize1Label
=
\u5206\u9875\u
6bcf
\u9875\u
663e
\u
793a
\u
65
e5
\u
5fd7
\u6570\u
ff1a
blogTitle1Label
=
\u
535a
\u
5ba2
\u6807\u9898\u
ff1a
blogSubtitle1Label
=
\u
535a
\u
5ba2
\u
5b50
\u6807\u9898\u
ff1a
blogHost1Label
=
\u
535a
\u
5ba2
\u5730\u5740\u
ff1a
...
...
@@ -188,7 +194,7 @@ returnTo1Label=\u8fd4\u56de\uff1a
tencentLabel
=
\u
817e
\u
8baf
appKey1Label
=
App Key:
appSecret1Label
=
App Secret:
postToTencentMicroblogWhilePublishArticleLabel
=
\u
53d1
\u65
87\u
7ae0
\u
65f6
\u
540c
\u
6b65
\u5230\u
817e
\u
8baf
\u
5fae
\u
535a
\u
ff1a
postToTencentMicroblogWhilePublishArticleLabel
=
\u
53d1
\u
65
e5
\u
5fd7
\u
65f6
\u
540c
\u
6b65
\u5230\u
817e
\u
8baf
\u
5fae
\u
535a
\u
ff1a
postToCommunityLabel
=
\u
53d1
\u
5e03
\u5230\u
793e
\u
533a
\u
ff1a
authorizeTencentMicroblog1Label
=
\u
70b9
\u
51fb
\u
56fe
\u6807\u
8fdb
\u
884c
\u6388\u6743
:
googleLabel
=
Google
...
...
@@ -209,16 +215,16 @@ readmoreLabel=\u9605\u8bfb\u66f4\u591a\u00bb
readmore2Label
=
\u9605\u
8bfb
\u
66f4
\u
591a
replyLabel
=
\u
56de
\u
590d
\u
00bb
homeLabel
=
\u9996\u9875
enableArticleUpdateHint1Label
=
\u
542f
\u7528\u65
87\u
7ae0
\u
66f4
\u
65b0
\u
63d0
\u
793a
\u
ff1a
enableArticleUpdateHint1Label
=
\u
542f
\u7528\u
65
e5
\u
5fd7
\u
66f4
\u
65b0
\u
63d0
\u
793a
\u
ff1a
allowVisitDraftViaPermalink1Label
=
\u5141\u
8bb8
\u
901a
\u
8fc7
\u
94fe
\u
63a5
\u
8bbf
\u
95ee
\u8349\u
7a3f
\u
ff1a
author1Label
=
\u
4f5c
\u8005\u
ff1a
authorLabel
=
\u
4f5c
\u8005
keyOfSolo1Label
=
Solo Key
\u
ff1a
articleLabel
=
\u65
87\u
7ae0
tagArticlesLabel
=
\u6807\u
7b7e
\u65
87\u
7ae0
\u5217\u8868
dateArticlesLabel
=
\u
5b58
\u6863\u65
87\u
7ae0
\u5217\u8868
authorArticlesLabel
=
\u
4f5c
\u8005\u65
87\u
7ae0
\u5217\u8868
indexArticleLabel
=
\u9996\u9875\u65
87\u
7ae0
\u5217\u8868
articleLabel
=
\u
65
e5
\u
5fd7
tagArticlesLabel
=
\u6807\u
7b7e
\u
65
e5
\u
5fd7
\u5217\u8868
dateArticlesLabel
=
\u
5b58
\u6863\u
65
e5
\u
5fd7
\u5217\u8868
authorArticlesLabel
=
\u
4f5c
\u8005\u
65
e5
\u
5fd7
\u5217\u8868
indexArticleLabel
=
\u9996\u9875\u
65
e5
\u
5fd7
\u5217\u8868
allTagsLabel
=
\u6807\u
7b7e
\u5899
customizedPageLabel
=
\u
81ea
\u
5b9a
\u
4e49
\u9875\u9762
killBrowserPageLabel
=
Kill Browser Page
...
...
@@ -255,7 +261,7 @@ gotoLabel=\u8df3\u8f6c
nameEmptyLabel
=
\u
59d3
\u
540d
\u
4e0d
\u
80fd
\u
4e3a
\u
7a7a
\u
ff01
passwordEmptyLabel
=
\u
5bc6
\u7801\u
4e0d
\u
80fd
\u
4e3a
\u
7a7a
\u
ff01
blogEmptyLabel
=
\u
8bf7
\u9009\u
62e9
\u
535a
\u
5ba2
\u
670d
\u
52a1
\u
ff01
blogArticleEmptyLabel
=
\u
8bf7
\u9009\u
62e9
\u9700\u8981\u
5bfc
\u5165\u7684\u65
87\u
7ae0
blogArticleEmptyLabel
=
\u
8bf7
\u9009\u
62e9
\u9700\u8981\u
5bfc
\u5165\u7684\u
65
e5
\u
5fd7
nameTooLongLabel
=
\u
59d3
\u
540d
\u
53ea
\u
80fd
\u
4e3a 2
\u5230
20
\u
4e2a
\u
5b57
\u
7b26
\u
ff01
mailCannotEmptyLabel
=
\u
90ae
\u
7bb1
\u
4e0d
\u
80fd
\u
4e3a
\u
7a7a
\u
ff01
mailInvalidLabel
=
\u
90ae
\u
7bb1
\u
683c
\u
5f0f
\u
4e0d
\u
6b63
\u
786e
\u
ff01
...
...
src/main/webapp/skins/next/macro-comments.ftl
View file @
5f6ecbff
...
...
@@ -24,7 +24,7 @@
<a class="fn-right" href="javascript:replyTo('${comment.oId}')">${replyLabel}</a>
</#if>
</div>
<div class="comment-content">
<div class="comment-content
post-body article-body
">
${comment.commentContent}
</div>
</div>
...
...
src/main/webapp/skins/next/preview.png
View replaced file @
f61bd1d3
View file @
5f6ecbff
12.3 KB
|
W:
|
H:
7.24 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/main/webapp/skins/next/side.ftl
View file @
5f6ecbff
...
...
@@ -15,19 +15,19 @@
<div class="site-state-item">
<a href="/archives">
<span class="site-state-item-count">${statistic.statisticPublishedBlogArticleCount}</span>
<span class="site-state-item-name">
日志
</span>
<span class="site-state-item-name">
${articleLabel}
</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<span class="site-state-item-count">${statistic.statisticBlogViewCount}</span>
<span class="site-state-item-name">
浏览
</span>
<span class="site-state-item-name">
${viewLabel}
</span>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags">
<span class="site-state-item-count">${statistic.statisticPublishedBlogCommentCount}</span>
<span class="site-state-item-name">
评论
</span>
<span class="site-state-item-name">
${commentLabel}
</span>
</a>
</div>
</nav>
...
...
src/main/webapp/skins/next/tags.ftl
View file @
5f6ecbff
...
...
@@ -12,7 +12,7 @@
<main
class=
"main wrapper"
>
<div
class=
"content"
>
<div
class=
"tag-cloud"
>
目前共计 ${tags?size} 个标签
${sumLabel} ${tags?size} ${tagLabel}
<ul
class=
"tag-cloud-tags fn-clear"
id=
"tags"
>
<
#list
tags
as
tag
>
<li>
...
...
src/main/webapp/skins/yilia/preview.png
View replaced file @
f61bd1d3
View file @
5f6ecbff
12.3 KB
|
W:
|
H:
24.9 KB
|
W:
|
H:
2-up
Swipe
Onion skin
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment