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
0473873a
Commit
0473873a
authored
Jun 28, 2016
by
D
Committed by
GitHub
Jun 28, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12127 from b3log/1.4.0-dev
Release 1.4.0
parents
3a6df63c
f0d25531
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
83 additions
and
57 deletions
+83
-57
CHANGE_LOGS.html
CHANGE_LOGS.html
+13
-0
pom.xml
pom.xml
+2
-2
src/main/java/org/b3log/solo/SoloServletListener.java
src/main/java/org/b3log/solo/SoloServletListener.java
+2
-2
src/main/java/org/b3log/solo/service/CommentQueryService.java
...main/java/org/b3log/solo/service/CommentQueryService.java
+4
-1
src/main/java/org/b3log/solo/service/UpgradeService.java
src/main/java/org/b3log/solo/service/UpgradeService.java
+12
-41
src/main/java/org/b3log/solo/util/Emotions.java
src/main/java/org/b3log/solo/util/Emotions.java
+1
-1
src/main/webapp/CHANGE_LOGS.html
src/main/webapp/CHANGE_LOGS.html
+13
-0
src/main/webapp/css/default-init.min.css
src/main/webapp/css/default-init.min.css
+1
-1
src/main/webapp/js/admin/latkeAdmin.js
src/main/webapp/js/admin/latkeAdmin.js
+31
-5
src/main/webapp/js/admin/latkeAdmin.min.js
src/main/webapp/js/admin/latkeAdmin.min.js
+1
-1
src/main/webapp/skins/mobile/skin.properties
src/main/webapp/skins/mobile/skin.properties
+1
-1
src/main/webapp/skins/yilia/css/yilia.min.css
src/main/webapp/skins/yilia/css/yilia.min.css
+1
-1
src/main/webapp/skins/yilia/skin.properties
src/main/webapp/skins/yilia/skin.properties
+1
-1
No files found.
CHANGE_LOGS.html
View file @
0473873a
...
...
@@ -5,6 +5,19 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
<body>
<h2>
Release 1.4.0 - Jun 28, 2016
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12060"
>
12060 前台皮肤切换
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12096"
>
12096 Meta Desc 解析异常
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12100"
>
12100 代码高亮换行问题
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12114"
>
12114 静态资源加载问题
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12118"
>
12118 finding 皮肤 bug
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span>
<span
style=
'background: #eb6420 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
skin
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12058"
>
12058 简化配置
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12059"
>
12059 细节体验改进
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12079"
>
12079 文件上传后缀改进
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12093"
>
12093 评论 Emoji 支持
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12107"
>
12107 Markdown 支持增强
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
</ul>
<h2>
Release 1.3.0 - Dec 19, 2015
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12051"
>
12051 社区文章推荐
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
...
...
pom.xml
View file @
0473873a
<?xml version="1.0" encoding="UTF-8"?>
<!--
Description: Solo POM.
Version: 3.11.1.2
1, Jun 25
, 2016
Version: 3.11.1.2
2, Jun 28
, 2016
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
-->
...
...
@@ -13,7 +13,7 @@
<artifactId>
solo
</artifactId>
<packaging>
war
</packaging>
<name>
Solo
</name>
<version>
1.
3
.0
</version>
<version>
1.
4
.0
</version>
<description>
A blogging system written in Java, feel free to create your or your team own blog. 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧。
</description>
...
...
src/main/java/org/b3log/solo/SoloServletListener.java
View file @
0473873a
...
...
@@ -60,7 +60,7 @@ import org.json.JSONObject;
* Solo Servlet listener.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.8.2.1
3, Jan 7
, 2016
* @version 1.8.2.1
4, Jun 28
, 2016
* @since 0.3.1
*/
public
final
class
SoloServletListener
extends
AbstractServletListener
{
...
...
@@ -68,7 +68,7 @@ public final class SoloServletListener extends AbstractServletListener {
/**
* Solo version.
*/
public
static
final
String
VERSION
=
"1.
3
.0"
;
public
static
final
String
VERSION
=
"1.
4
.0"
;
/**
* Logger.
...
...
src/main/java/org/b3log/solo/service/CommentQueryService.java
View file @
0473873a
...
...
@@ -40,6 +40,7 @@ import org.b3log.solo.repository.ArticleRepository;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.PageRepository
;
import
org.b3log.solo.util.Emotions
;
import
org.b3log.solo.util.Markdowns
;
import
org.b3log.solo.util.Thumbnails
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
...
...
@@ -48,7 +49,7 @@ import org.json.JSONObject;
* Comment query service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
2.0.8, May 10
, 2016
* @version 1.
3.0.8, Jun 28
, 2016
* @since 0.3.5
*/
@Service
...
...
@@ -193,6 +194,7 @@ public class CommentQueryService {
String
commentContent
=
comment
.
optString
(
Comment
.
COMMENT_CONTENT
);
commentContent
=
Emotions
.
convert
(
commentContent
);
commentContent
=
Markdowns
.
toHTML
(
commentContent
);
comment
.
put
(
Comment
.
COMMENT_CONTENT
,
commentContent
);
comment
.
put
(
Comment
.
COMMENT_TIME
,
((
Date
)
comment
.
get
(
Comment
.
COMMENT_DATE
)).
getTime
());
...
...
@@ -251,6 +253,7 @@ public class CommentQueryService {
String
commentContent
=
comment
.
optString
(
Comment
.
COMMENT_CONTENT
);
commentContent
=
Emotions
.
convert
(
commentContent
);
commentContent
=
Markdowns
.
toHTML
(
commentContent
);
comment
.
put
(
Comment
.
COMMENT_CONTENT
,
commentContent
);
ret
.
add
(
comment
);
...
...
src/main/java/org/b3log/solo/service/UpgradeService.java
View file @
0473873a
...
...
@@ -16,39 +16,37 @@
package
org
.
b3log
.
solo
.
service
;
import
java.io.IOException
;
import
java.sql.Connection
;
import
java.sql.Statement
;
import
javax.inject.Inject
;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
import
org.b3log.latke.mail.MailServiceFactory
;
import
org.b3log.latke.model.User
;
import
org.b3log.latke.repository.
*
;
import
org.b3log.latke.repository.
jdbc.util.Connections
;
import
org.b3log.latke.repository.
Query
;
import
org.b3log.latke.repository.
Transaction
;
import
org.b3log.latke.service.LangPropsService
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.*
;
import
org.b3log.solo.repository.*
;
import
org.b3log.solo.util.Markdowns
;
import
org.b3log.solo.model.Article
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.UserExt
;
import
org.b3log.solo.repository.ArticleRepository
;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.OptionRepository
;
import
org.b3log.solo.repository.UserRepository
;
import
org.b3log.solo.util.Thumbnails
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
org.jsoup.Jsoup
;
import
org.jsoup.safety.Whitelist
;
/**
* Upgrade service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:dongxu.wang@acm.org">Dongxu Wang</a>
* @version 1.2.0.
4, Dec 17, 2015
* @version 1.2.0.
5, Jun 28, 2016
* @since 1.2.0
*/
@Service
...
...
@@ -113,7 +111,7 @@ public class UpgradeService {
/**
* Old version.
*/
private
static
final
String
FROM_VER
=
"1.
2
.0"
;
private
static
final
String
FROM_VER
=
"1.
3
.0"
;
/**
* New version.
...
...
@@ -166,40 +164,13 @@ public class UpgradeService {
private
void
perform
()
throws
Exception
{
LOGGER
.
log
(
Level
.
INFO
,
"Upgrading from version [{0}] to version [{1}]...."
,
FROM_VER
,
TO_VER
);
Transaction
transaction
=
null
;
Transaction
transaction
=
optionRepository
.
beginTransaction
()
;
try
{
final
Connection
connection
=
Connections
.
getConnection
();
final
Statement
statement
=
connection
.
createStatement
();
final
String
tablePrefix
=
Latkes
.
getLocalProperty
(
"jdbc.tablePrefix"
)
+
"_"
;
statement
.
execute
(
"DROP TABLE `"
+
tablePrefix
+
"preference`"
);
statement
.
close
();
connection
.
commit
();
connection
.
close
();
transaction
=
optionRepository
.
beginTransaction
();
final
JSONObject
versionOpt
=
optionRepository
.
get
(
Option
.
ID_C_VERSION
);
versionOpt
.
put
(
Option
.
OPTION_VALUE
,
TO_VER
);
optionRepository
.
update
(
Option
.
ID_C_VERSION
,
versionOpt
);
final
JSONArray
comments
=
commentRepository
.
get
(
new
Query
()).
optJSONArray
(
Keys
.
RESULTS
);
for
(
int
i
=
0
;
i
<
comments
.
length
();
i
++)
{
final
JSONObject
comment
=
comments
.
getJSONObject
(
i
);
String
name
=
comment
.
optString
(
Comment
.
COMMENT_NAME
);
name
=
Jsoup
.
clean
(
name
,
Whitelist
.
none
());
comment
.
put
(
Comment
.
COMMENT_NAME
,
name
);
String
content
=
comment
.
optString
(
Comment
.
COMMENT_CONTENT
);
content
=
StringEscapeUtils
.
unescapeHtml
(
content
).
replaceAll
(
"_esc_enter_88250_"
,
"\n\n"
);
content
=
Markdowns
.
toHTML
(
content
);
content
=
Jsoup
.
clean
(
content
,
Whitelist
.
relaxed
());
comment
.
put
(
Comment
.
COMMENT_CONTENT
,
content
);
commentRepository
.
update
(
comment
.
optString
(
Keys
.
OBJECT_ID
),
comment
);
}
transaction
.
commit
();
LOGGER
.
log
(
Level
.
INFO
,
"Updated preference"
);
...
...
src/main/java/org/b3log/solo/util/Emotions.java
View file @
0473873a
/*
* Copyright (c) 201
2
-2016, b3log.org & hacpai.com
* Copyright (c) 201
0
-2016, b3log.org & hacpai.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
src/main/webapp/CHANGE_LOGS.html
View file @
0473873a
...
...
@@ -5,6 +5,19 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
<body>
<h2>
Release 1.4.0 - Jun 28, 2016
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12060"
>
12060 前台皮肤切换
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12096"
>
12096 Meta Desc 解析异常
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12100"
>
12100 代码高亮换行问题
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12114"
>
12114 静态资源加载问题
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12118"
>
12118 finding 皮肤 bug
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span>
<span
style=
'background: #eb6420 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
skin
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12058"
>
12058 简化配置
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12059"
>
12059 细节体验改进
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12079"
>
12079 文件上传后缀改进
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12093"
>
12093 评论 Emoji 支持
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12107"
>
12107 Markdown 支持增强
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
</ul>
<h2>
Release 1.3.0 - Dec 19, 2015
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12051"
>
12051 社区文章推荐
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
...
...
src/main/webapp/css/default-init.min.css
View file @
0473873a
...
...
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
html
{
height
:
100%
;
overflow
:
hidden
}
html
,
body
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#f3f1e5
;
color
:
#333
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
;
height
:
100%
}
h2
{
background-color
:
#ececec
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-repeat
:
repeat-x
;
border-radius
:
4px
4px
0
0
;
font-size
:
16px
;
margin
:
0
;
padding
:
10px
20px
;
text-shadow
:
0
-1px
0
rgba
(
255
,
255
,
255
,
0.5
)}
input
{
border
:
1px
solid
#ccc
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
;
font-size
:
13px
;
margin
:
15px
0
;
padding
:
7px
8px
;
transition
:
all
.15s
ease-in
0s
;
vertical-align
:
middle
;
width
:
410px
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
}
input
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
,
0
0
5px
rgbargba
(
200
,
200
,
200
,
0.9
);
border
:
1px
solid
#e6e5d9
}
.form
{
padding
:
20px
}
label
{
font-size
:
13px
}
button
{
position
:
relative
;
display
:
inline-block
;
font-size
:
13px
;
font-weight
:
700
;
color
:
#333
;
text-shadow
:
0
1px
0
rgba
(
255
,
255
,
255
,
0.9
);
white-space
:
nowrap
;
background-color
:
#eaeaea
;
background-image
:
linear-gradient
(
#fafafa
,
#eaeaea
);
background-repeat
:
repeat-x
;
border-radius
:
3px
;
border
:
1px
solid
#ddd
;
border-bottom-color
:
#c5c5c5
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.075
);
vertical-align
:
baseline
;
cursor
:
pointer
;
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-khtml-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
-webkit-appearance
:
none
;
outline
:
0
;
padding
:
7px
15px
;
margin-top
:
10px
}
button
:hover
,
button
:active
{
color
:
#fff
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
);
background-color
:
#3072b3
;
background-image
:
linear-gradient
(
#599bcd
,
#3072b3
);
background-repeat
:
repeat-x
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.main
.icon
{
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
16px
;
height
:
16px
}
.solo
{
color
:
orangered
;
font-weight
:
bold
}
.logo
{
float
:
left
;
padding
:
162px
12px
0
;
width
:
153px
}
.wrapper
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
.wrap
{
border-top
:
5px
solid
#e6e5d9
;
min-height
:
400px
}
.content
{
background
:
url("../images/zz.jpg")
repeat-x
scroll
center
bottom
white
;
border-color
:
#e6e5d9
;
border-style
:
solid
solid
none
;
border-width
:
1px
;
margin
:
0
auto
;
position
:
relative
;
width
:
700px
;
top
:
60px
}
.main
{
border-left
:
1px
solid
#e6e5d9
;
float
:
right
;
font-size
:
15px
;
margin
:
24px
0
;
padding
:
12px
24px
;
width
:
470px
;
height
:
338px
}
.main
a
{
text-decoration
:
none
}
.main
li
{
margin
:
6px
0
6px
16px
}
.footerWrapper
{
background-color
:
#fff
;
border-top
:
1px
solid
#e6e5d9
;
bottom
:
0
;
padding
:
12px
0
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
.footerWrapper
a
{
text-decoration
:
none
}
.article-pwd
>
div
,
.article-pwd
>
form
{
margin
:
0
20px
}
.article-pwd
>
div
{
margin-bottom
:
10px
;
max-height
:
264px
;
overflow
:
auto
;
word-wrap
:
break-word
}
.img-403
,
.img-500
{
box-shadow
:
0
0
5px
#e6e5d9
;
margin
:
20px
0
0
45px
;
padding
:
5px
}
.a-403
,
.a-500
{
margin
:
20px
50px
0
0
;
text-align
:
right
}
.a-403
{
margin
:
10px
75px
0
0
}
.img-500
{
margin
:
20px
0
0
25px
}
.a-500
{
margin
:
25px
35px
0
0
}
.kill
img
{
position
:
absolute
;
right
:
40px
;
top
:
200px
}
.kill
ul
{
margin-bottom
:
50px
}
.kill
p
{
margin
:
12px
20px
}
.kill
span
{
margin-left
:
20px
}
#init
{
position
:
absolute
;
top
:
81px
;
width
:
470px
}
#init
.form
{
padding
:
10px
20px
}
#init
input
,
.register
input
{
margin
:
5px
0
;
padding
:
5px
8px
}
.register
{
height
:
400px
}
#sys
p
{
height
:
206px
}
#sys
{
padding
:
0
20px
}
#initButton
{
margin-right
:
10px
}
#tip
{
color
:
#21759b
;
font-weight
:
bold
;
margin-left
:
10px
}
\ No newline at end of file
html
{
height
:
100%
;
overflow
:
hidden
}
html
,
body
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#f3f1e5
;
color
:
#333
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
;
height
:
100%
}
h2
{
background-color
:
#ececec
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-repeat
:
repeat-x
;
border-radius
:
4px
4px
0
0
;
font-size
:
16px
;
margin
:
0
;
padding
:
10px
20px
;
text-shadow
:
0
-1px
0
rgba
(
255
,
255
,
255
,
0.5
)}
input
{
border
:
1px
solid
#ccc
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
;
font-size
:
13px
;
margin
:
15px
0
;
padding
:
7px
8px
;
transition
:
all
.15s
ease-in
0s
;
vertical-align
:
middle
;
width
:
410px
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
}
input
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
,
0
0
5px
rgbargba
(
200
,
200
,
200
,
0.9
);
border
:
1px
solid
#e6e5d9
}
.form
{
padding
:
20px
}
label
{
font-size
:
13px
}
button
{
position
:
relative
;
display
:
inline-block
;
font-size
:
13px
;
font-weight
:
700
;
color
:
#333
;
text-shadow
:
0
1px
0
rgba
(
255
,
255
,
255
,
0.9
);
white-space
:
nowrap
;
background-color
:
#eaeaea
;
background-image
:
linear-gradient
(
#fafafa
,
#eaeaea
);
background-repeat
:
repeat-x
;
border-radius
:
3px
;
border
:
1px
solid
#ddd
;
border-bottom-color
:
#c5c5c5
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.075
);
vertical-align
:
baseline
;
cursor
:
pointer
;
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-khtml-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
-webkit-appearance
:
none
;
outline
:
0
;
padding
:
7px
15px
;
margin-top
:
10px
}
button
:hover
,
button
:active
{
color
:
#fff
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
);
background-color
:
#3072b3
;
background-image
:
linear-gradient
(
#599bcd
,
#3072b3
);
background-repeat
:
repeat-x
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.main
.icon
{
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
16px
;
height
:
16px
}
.solo
{
color
:
orangered
;
font-weight
:
bold
}
.logo
{
float
:
left
;
padding
:
162px
12px
0
;
width
:
153px
}
.wrapper
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
.wrap
{
border-top
:
5px
solid
#e6e5d9
;
min-height
:
400px
}
.content
{
background
:
url("../images/zz.jpg")
repeat-x
scroll
center
bottom
white
;
border-color
:
#e6e5d9
;
border-style
:
solid
solid
none
;
border-width
:
1px
;
margin
:
0
auto
;
padding
:
0
0
28px
0
;
position
:
relative
;
width
:
700px
;
top
:
60px
}
.main
{
border-left
:
1px
solid
#e6e5d9
;
float
:
right
;
font-size
:
15px
;
margin
:
24px
0
;
padding
:
12px
24px
;
width
:
470px
;
height
:
338px
}
.main
a
{
text-decoration
:
none
}
.main
li
{
margin
:
6px
0
6px
16px
}
.footerWrapper
{
background-color
:
#fff
;
border-top
:
1px
solid
#e6e5d9
;
bottom
:
0
;
padding
:
12px
0
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
.footerWrapper
a
{
text-decoration
:
none
}
.article-pwd
>
div
,
.article-pwd
>
form
{
margin
:
0
20px
}
.article-pwd
>
div
{
margin-bottom
:
10px
;
max-height
:
264px
;
overflow
:
auto
;
word-wrap
:
break-word
}
.img-403
,
.img-500
{
box-shadow
:
0
0
5px
#e6e5d9
;
margin
:
20px
0
0
45px
;
padding
:
5px
}
.a-403
,
.a-500
{
margin
:
20px
50px
0
0
;
text-align
:
right
}
.a-403
{
margin
:
10px
75px
0
0
}
.img-500
{
margin
:
20px
0
0
25px
}
.a-500
{
margin
:
25px
35px
0
0
}
.kill
img
{
position
:
absolute
;
right
:
40px
;
top
:
200px
}
.kill
ul
{
margin-bottom
:
50px
}
.kill
p
{
margin
:
12px
20px
}
.kill
span
{
margin-left
:
20px
}
#init
{
position
:
absolute
;
top
:
81px
;
width
:
470px
}
#init
.form
{
padding
:
10px
20px
}
#init
input
,
.register
input
{
margin
:
5px
0
;
padding
:
5px
8px
}
.register
{
height
:
400px
}
#sys
p
{
height
:
206px
}
#sys
{
padding
:
0
20px
}
#initButton
{
margin-right
:
10px
}
#tip
{
color
:
#21759b
;
font-weight
:
bold
;
margin-left
:
10px
}
\ No newline at end of file
src/main/webapp/js/admin/latkeAdmin.js
View file @
0473873a
...
...
@@ -898,7 +898,7 @@ $.extend(TablePaginate.prototype, {
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
2.4.4, Jan
7, 2016
* @version 1.
3.4.4, Jan 2
7, 2016
*/
admin
.
article
=
{
currentEditorType
:
''
,
...
...
@@ -1352,23 +1352,34 @@ admin.article = {
// upload
var
qiniu
=
window
.
qiniu
;
var
filename
=
""
;
$
(
'
#articleUpload
'
).
fileupload
({
multipart
:
true
,
url
:
"
http://upload.qiniu.com/
"
,
add
:
function
(
e
,
data
)
{
filename
=
data
.
files
[
0
].
name
;
data
.
submit
();
},
formData
:
function
(
form
)
{
var
data
=
form
.
serializeArray
();
var
ext
=
filename
.
substring
(
filename
.
lastIndexOf
(
"
.
"
)
+
1
);
data
.
push
({
name
:
'
key
'
,
value
:
getUUID
()
+
"
.
"
+
ext
});
data
.
push
({
name
:
'
token
'
,
value
:
qiniu
.
qiniuUploadToken
});
return
data
;
},
done
:
function
(
e
,
data
)
{
var
qiniuKey
=
data
.
result
.
key
;
if
(
!
qiniuKey
)
{
alert
(
"
Upload error
"
);
return
;
}
$
(
'
#articleUpload
'
).
after
(
'
<div id="uploadContent">
<a target="_blank" href="http://
'
+
qiniu
.
qiniuDomain
+
qiniuKey
+
'
">[
'
+
data
.
files
[
0
].
name
+
'
]</a>
http://
'
+
qiniu
.
qiniuDomain
+
qiniuKey
+
'
</div>
'
);
$
(
'
#articleUpload
'
).
after
(
'
<div id="uploadContent">
!<a target="_blank" href="http://
'
+
qiniu
.
qiniuDomain
+
qiniuKey
+
'
">[
'
+
filename
+
'
]</a>(
http://
'
+
qiniu
.
qiniuDomain
+
qiniuKey
+
'
)
</div>
'
);
},
fail
:
function
(
e
,
data
)
{
alert
(
"
Upload error:
"
+
data
.
errorThrown
);
...
...
@@ -1559,7 +1570,22 @@ admin.register.article = {
$
(
"
#loadMsg
"
).
text
(
""
);
$
(
"
#tipMsg
"
).
text
(
""
);
}
};
/*
};
function
getUUID
()
{
var
d
=
new
Date
().
getTime
();
var
ret
=
'
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
'
.
replace
(
/
[
xy
]
/g
,
function
(
c
)
{
var
r
=
(
d
+
Math
.
random
()
*
16
)
%
16
|
0
;
d
=
Math
.
floor
(
d
/
16
);
return
(
c
==
'
x
'
?
r
:
(
r
&
0x3
|
0x8
)).
toString
(
16
);
});
ret
=
ret
.
replace
(
new
RegExp
(
"
-
"
,
'
g
'
),
""
);
return
ret
;
};
/*
* Copyright (c) 2010-2016, b3log.org & hacpai.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
...
...
src/main/webapp/js/admin/latkeAdmin.min.js
View file @
0473873a
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/webapp/skins/mobile/skin.properties
View file @
0473873a
...
...
@@ -22,5 +22,5 @@
name
=
Mobile
version
=
0.1.5
forSolo
=
1.
3
.0
forSolo
=
1.
4
.0
memo
=
\u
8bf7
\u
4e0d
\u8981\u
4ece
\u
90e8
\u
7f72
\u
76ee
\u
5f55
\u
4e2d
\u5220\u9664\u
8be5
\u
76ae
\u
80a4
\u
ff0c
\u5426\u5219\u
79fb
\u
52a8
\u
8bbe
\u5907\u
8bbf
\u
95ee
\u
65f6
\u
535a
\u
5ba2
\u
5c06
\u
4e0d
\u
53ef
\u7528\u3002
src/main/webapp/skins/yilia/css/yilia.min.css
View file @
0473873a
...
...
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@charset
"utf-8"
;
body
,
html
{
height
:
100%
;
max-height
:
100%
}
body
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
text-rendering
:
geometricPrecision
}
dl
dd
,
dl
dt
{
margin-bottom
:
1em
}
body
,
li
li
{
margin
:
0
}
blockquote
cite
,
dl
dt
{
font-weight
:
700
}
.fn-left
,
dl
dt
{
float
:
left
}
.form
button
,
a
,
blockquote
{
transition
:
all
.3s
ease
}
.classify
li
,
.comments
,
.dynamic
li
,
.side
nav
ul
{
list-style
:
none
}
html
{
font-size
:
16px
;
-webkit-tap-highlight-color
:
transparent
}
body
{
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
;
letter-spacing
:
.01rem
;
font-size
:
100%
;
line-height
:
1.75em
;
color
:
rgba
(
0
,
0
,
0
,
.6
);
-webkit-font-feature-settings
:
'kern'
1
;
-moz-font-feature-settings
:
'kern'
1
;
-o-font-feature-settings
:
'kern'
1
;
background-color
:
#eaeaea
}
::-moz-selection
{
background
:
#D6EDFF
}
::selection
{
background
:
#D6EDFF
}
a
{
text-decoration
:
none
;
color
:
#258fb8
;
outline
:
0
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
-webkit-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
color
:
#666
;
line-height
:
1.15em
;
font-family
:
"Open Sans"
,
"Microsoft Yahei"
,
Helvetica
}
h1
{
letter-spacing
:
-2px
;
text-indent
:
-3px
}
h2
{
letter-spacing
:
-1px
}
img
{
max-width
:
100%
}
dl
,
ol
,
p
,
ul
{
-webkit-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
}
ol
,
ul
{
padding-left
:
3rem
}
ol
ol
,
ol
ul
,
ul
ol
,
ul
ul
{
padding-left
:
2em
}
dl
dt
{
width
:
180px
;
overflow
:
hidden
;
clear
:
left
;
text-align
:
right
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
dl
dd
{
margin-left
:
200px
}
hr
{
display
:
block
;
height
:
1px
;
border
:
0
;
border-top
:
#EFEFEF
1px
solid
;
margin
:
3.2em
0
;
padding
:
0
}
blockquote
{
box-sizing
:
border-box
;
margin
:
1.75em
0
;
padding
:
0
0
0
1.75em
;
border-left
:
5px
solid
}
blockquote
:hover
{
border-color
:
#b0a0aa
}
blockquote
p
{
margin
:
.8em
0
;
font-style
:
italic
}
blockquote
small
{
display
:
inline-block
;
margin
:
.8em
0
.8em
1.5em
;
font-size
:
.9em
;
color
:
#CCC
}
blockquote
small
:before
{
content
:
"\2014 \00A0"
}
blockquote
cite
a
{
font-weight
:
400
}
mark
{
background-color
:
#fdffb6
}
code
,
tt
{
padding
:
1px
3px
;
font-family
:
Inconsolata
,
monospace
,
"Microsoft Yahei"
,
Helvetica
;
font-size
:
.85em
;
white-space
:
pre-wrap
;
border
:
1px
solid
#E3EDF3
;
background
:
#F7FAFB
;
border-radius
:
2px
}
pre
{
font-size
:
.9em
}
pre
code
,
pre
tt
{
font-size
:
inherit
;
white-space
:
pre-wrap
;
background
:
0
0
;
border
:
none
;
padding
:
0
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?3js4w7)
;
src
:
url(fonts/icomoon.eot?3js4w7#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?3js4w7)
format
(
'truetype'
),
url(fonts/icomoon.woff?3js4w7)
format
(
'woff'
),
url(fonts/icomoon.svg?3js4w7#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
;
speak
:
none
;
font-style
:
normal
;
font-weight
:
400
;
font-variant
:
normal
;
text-transform
:
none
;
line-height
:
1
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
vertical-align
:
middle
}
.icon-tag
:before
{
content
:
"\e903"
}
.icon-date
:before
{
content
:
"\e902"
}
.icon-github
:before
{
content
:
"\e900"
}
.icon-rss
:before
{
content
:
"\e901"
}
.icon-register
:before
{
content
:
"\e600"
}
.icon-logout
:before
{
content
:
"\e601"
}
.icon-setting
:before
{
content
:
"\e602"
}
.icon-gplus
:before
{
content
:
"\e603"
}
.icon-weibo
:before
{
content
:
"\e605"
}
.icon-goup
:before
{
content
:
"\e60a"
}
.icon-twitter
:before
{
content
:
"\e60b"
}
.icon-t-weibo
:before
{
content
:
"\e60d"
}
.icon-login
:before
{
content
:
"\e611"
}
.form
{
width
:
100%
;
padding
:
30px
}
#captcha
,
#captchaReply
{
height
:
27px
;
display
:
inline-block
;
vertical-align
:
inherit
}
.form
button
,
.form
input
,
.form
textarea
{
border
:
1px
solid
#CCC
;
background-color
:
#FAFAFA
;
border-radius
:
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
7px
8px
;
width
:
100%
;
box-sizing
:
border-box
;
outline
:
0
;
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
}
.tags
.tag
,
footer
.footer
{
font-family
:
Menlo
,
Monaco
,
"Andale Mono"
,
"lucida console"
,
"Courier New"
,
monospace
}
.form
button
{
width
:
auto
;
vertical-align
:
bottom
;
cursor
:
pointer
}
.form
button
:hover
{
background-color
:
#b0a0aa
;
color
:
#FFF
;
box-shadow
:
0
0
0
;
border-color
:
#b0a0aa
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
176
,
160
,
170
,
.5
);
border
:
1px
solid
#b0a0aa
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url(../images/emotions/emotions-ease.png)
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
;
transition
:
all
.2s
ease-out
;
-webkit-transition
:
all
.2s
ease-out
;
-moz-transition
:
all
.2s
ease-out
}
#emotions
span
:hover
{
transform
:
scale
(
1.2
)
rotate
(
360deg
);
-webkit-transform
:
scale
(
1.2
)
rotate
(
360deg
);
-moz-transform
:
scale
(
1.2
)
rotate
(
360deg
)}
.em01
{
background-position
:
-24px
0
}
.em02
{
background-position
:
-48px
0
}
.em03
{
background-position
:
-72px
0
}
.em04
{
background-position
:
-96px
0
}
.em05
{
background-position
:
0
-24px
}
.em06
{
background-position
:
-24px
-24px
}
.em07
{
background-position
:
-48px
-24px
}
.em08
{
background-position
:
-72px
-24px
}
.em09
{
background-position
:
-96px
-24px
}
.em10
{
background-position
:
0
-48px
}
.em11
{
background-position
:
-24px
-48px
}
.em12
{
background-position
:
-48px
-48px
}
.em13
{
background-position
:
-72px
-48px
}
.em14
{
background-position
:
-96px
-48px
}
.side
{
position
:
fixed
;
background-color
:
#FFF
;
height
:
100%
;
width
:
300px
}
.side
.overlay
,
.side
footer
,
main
{
position
:
absolute
}
.side
a
{
color
:
#696969
;
font-size
:
30px
}
.side
a
:hover
{
color
:
#b0a0aa
}
.side
.overlay
{
height
:
180px
;
background-color
:
#000
;
opacity
:
.7
;
width
:
100%
;
z-index
:
-1
}
.side
.content
{
width
:
76%
;
text-align
:
center
;
margin
:
112px
auto
0
}
.side
.avatar
{
display
:
block
;
border
:
5px
solid
#fff
;
border-radius
:
50%
;
width
:
128px
;
height
:
128px
;
margin
:
0
auto
;
transition
:
all
.1s
ease-in
}
.side
.avatar
:hover
{
border-color
:
rgba
(
37
,
143
,
184
,
.6
)}
.side
hgroup
h1
{
margin
:
10px
0
;
line-height
:
30px
}
.side
.subtitle
{
color
:
#999
;
font-size
:
14px
;
line-height
:
25px
}
.side
nav
ul
{
margin
:
0
;
padding
:
0
}
.side
nav
a
{
font-size
:
14px
}
.side
footer
{
bottom
:
15px
}
.side
footer
>
div
{
margin-bottom
:
10px
}
main
{
right
:
0
;
min-height
:
100%
;
background
:
#eaeaea
;
left
:
300px
;
width
:
auto
}
article
{
margin
:
30px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
position
:
relative
;
transition
:
all
.2s
ease-in
;
visibility
:
hidden
}
.share
span
,
.tags
.avatar
{
transition
:
all
.2s
ease-out
0s
}
article
.post
,
article
.show
{
visibility
:
visible
}
article
.show
{
-webkit-animation
:
bounce
.6s
;
animation
:
bounce
.6s
}
@-webkit-keyframes
bounce
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1.02
)}
100
%
{
-webkit-transform
:
scale
(
1
)}}
@-moz-keyframes
bounce
{
0
%
{
opacity
:
0
;
-moz-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-moz-transform
:
scale
(
1.02
)}
100
%
{
-moz-transform
:
scale
(
1
)}}
.tags
.tag
:hover
,
article
.abstract
a
:hover
,
nav
.pagination
a
.page-num
:hover
{
opacity
:
.7
}
article
header
{
border-left
:
5px
solid
;
padding
:
15px
30px
15px
25px
}
article
header
:hover
{
border-color
:
#b0a0aa
}
article
header
h2
{
margin
:
0
;
font-size
:
26px
;
padding-right
:
110px
}
article
header
a
{
color
:
#696969
;
margin-left
:
0
;
font-weight
:
300
;
line-height
:
35px
}
article
header
a
:hover
{
color
:
#b0a0aa
}
article
header
sup
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#999
}
article
header
time
{
font-size
:
14px
;
position
:
absolute
;
right
:
30px
;
color
:
#aaa
;
top
:
18px
}
article
.abstract
{
line-height
:
1.8em
;
padding-right
:
30px
;
padding-left
:
30px
;
overflow
:
hidden
;
word-wrap
:
break-word
}
article
footer
{
padding
:
20px
35px
0
0
;
margin
:
30px
30px
20px
;
border-top
:
1px
solid
#ddd
}
.tags
.avatar
{
width
:
20px
;
border-radius
:
10px
;
right
:
30px
;
position
:
absolute
;
bottom
:
25px
}
.share
span
{
cursor
:
pointer
}
.share
span
:hover
,
.tags
.avatar
:hover
{
transform
:
rotate
(
360deg
);
color
:
#333
}
.tags
.tag
{
color
:
#fff
;
font-size
:
10px
;
height
:
18px
;
line-height
:
18px
;
display
:
inline-block
;
padding
:
0
5px
0
10px
;
position
:
relative
;
border-radius
:
0
5px
5px
0
;
margin
:
5px
9px
5px
8px
;
background-color
:
#7b5d5f
}
.tags
.tag
:after
,
.tags
.tag
:before
{
content
:
" "
;
position
:
absolute
}
.tags
.tag
:before
{
width
:
0
;
height
:
0
;
top
:
0
;
left
:
-18px
;
border
:
9px
solid
transparent
;
border-right-color
:
#7b5d5f
}
.tags
.tag
:after
{
width
:
4px
;
height
:
4px
;
background-color
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0
0
0
1px
rgba
(
0
,
0
,
0
,
.3
);
top
:
7px
;
left
:
2px
}
a
.color1.tag
{
background
:
#ff945c
}
a
.color1.tag
:before
{
border-right-color
:
#ff945c
}
a
.color2.tag
{
background
:
#f5c7b7
}
a
.color2.tag
:before
{
border-right-color
:
#f5c7b7
}
a
.color3.tag
{
background
:
#ba8f6c
}
a
.color3.tag
:before
{
border-right-color
:
#ba8f6c
}
a
.color4.tag
{
background
:
#cfb7c4
}
a
.color4.tag
:before
{
border-right-color
:
#cfb7c4
}
nav
.pagination
{
text-align
:
center
;
margin-top
:
30px
}
nav
.pagination
.page-num
{
width
:
20px
;
height
:
20px
;
background
:
#4d4d4d
;
border-radius
:
50%
;
display
:
inline-block
;
color
:
#fff
;
line-height
:
20px
;
font-size
:
12px
;
margin
:
0
3px
30px
}
nav
.pagination
.page-num.current
{
background
:
#88acdb
}
nav
.pagination
.extend
{
color
:
#4d4d4d
;
margin
:
0
27px
;
opacity
:
0
}
nav
.pagination
.extend
:hover
{
color
:
#b0a0aa
}
nav
.pagination
:hover
.extend
{
opacity
:
1
}
.post
.tags
.avatar
{
bottom
:
inherit
;
margin-top
:
4px
}
.post
section
.tags
{
margin
:
0
}
.post
header
{
padding-bottom
:
0
}
.post
.share
{
padding
:
10px
0
0
;
margin-top
:
15px
;
font-size
:
14px
}
.post
aside
a
{
color
:
#DDD
}
.post
aside
a
>
strong
{
background
:
#ddd
;
color
:
#fff
;
border-radius
:
50%
;
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
transition
:
background
.3s
;
vertical-align
:
middle
;
line-height
:
18px
;
text-align
:
center
}
.post
aside
a
:hover
{
color
:
#4d4d4d
}
.post
aside
a
:hover
>
strong
{
background-color
:
#4d4d4d
}
.comments
{
margin
:
60px
60px
0
50px
;
padding
:
0
;
position
:
relative
}
.comments
li
{
margin-bottom
:
30px
;
padding-bottom
:
30px
;
border-bottom
:
1px
solid
#ddd
}
.comments
li
time
{
border-left
:
1px
solid
#d5dbde
;
padding-left
:
10px
;
margin-left
:
10px
}
.comments
.avatar
{
position
:
absolute
;
height
:
60px
;
width
:
60px
;
border-radius
:
50%
;
border
:
3px
solid
#FFF
}
.comments
.content
{
margin-left
:
80px
;
min-height
:
66px
}
.comments
.post-meta
{
margin-bottom
:
9px
}
.comments
.content
img
{
vertical-align
:
sub
}
.comments
li
.comment-body-ref
{
position
:
absolute
;
background-color
:
#FFF
;
width
:
80%
;
margin-left
:
80px
;
padding
:
10px
;
border
:
1px
solid
#ddd
}
footer
.footer
{
line-height
:
1rem
;
font-size
:
12px
;
text-shadow
:
0
1px
#fff
;
opacity
:
.6
;
margin
:
0
30px
30px
}
footer
.footer
.icon-goup
{
position
:
fixed
;
bottom
:
35px
;
right
:
5px
;
-webkit-animation
:
upbounce
4s
2s
infinite
;
animation
:
upbounce
4s
2s
infinite
;
z-index
:
10
;
font-size
:
20px
;
cursor
:
pointer
;
color
:
#b0a0aa
;
transition
:
all
.3s
ease
}
footer
.footer
.icon-goup
:hover
{
color
:
#4a4a4a
}
@-webkit-keyframes
upbounce
{
0
%,
10
%,
25
%,
40
%,
50
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
20
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
30
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
@keyframes
upbounce
{
0
%,
100
%,
20
%,
50
%,
80
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
40
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
60
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
.classify
li
{
font-size
:
20px
;
float
:
left
;
margin
:
0
30px
20px
0
}
.classify
.tags
.tag
{
font-size
:
20px
;
padding
:
10px
}
.classify
.tags
.tag
:before
{
left
:
-38px
;
border-width
:
19px
}
.classify
.tags
.tag
:after
{
top
:
15px
;
left
:
-6px
;
width
:
8px
;
height
:
8px
}
.classify-name
{
font-size
:
18px
;
margin
:
30px
}
.dynamic
.comments
li
:last-child
{
border-bottom-width
:
0
}
@media
only
screen
and
(
max-width
:
500px
){
.side
,
.side
.avatar
{
position
:
relative
}
.side
{
height
:
auto
;
width
:
100%
}
.side
footer
,
main
{
position
:
initial
}
.side
.content
{
margin-top
:
0
;
padding-top
:
20px
}
.side
.overlay
{
height
:
100px
;
z-index
:
0
}
.side
nav
{
display
:
none
}
.side
footer
{
margin
:
10px
auto
;
padding-bottom
:
16px
}
article
{
margin
:
10px
}
.comments
{
margin
:
20px
20px
0
}
footer
.footer
{
text-align
:
center
}
footer
.footer
.fn-right
{
float
:
none
;
display
:
block
}}
\ No newline at end of file
@charset
"utf-8"
;
body
,
html
{
height
:
100%
;
max-height
:
100%
}
body
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
text-rendering
:
geometricPrecision
}
dl
dd
,
dl
dt
{
margin-bottom
:
1em
}
body
,
li
li
{
margin
:
0
}
blockquote
cite
,
dl
dt
{
font-weight
:
700
}
.fn-left
,
dl
dt
{
float
:
left
}
.form
button
,
a
,
blockquote
{
transition
:
all
.3s
ease
}
.classify
li
,
.comments
,
.dynamic
li
,
.side
nav
ul
{
list-style
:
none
}
html
{
font-size
:
16px
;
-webkit-tap-highlight-color
:
transparent
}
body
{
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
;
letter-spacing
:
.01rem
;
font-size
:
100%
;
line-height
:
1.75em
;
color
:
rgba
(
0
,
0
,
0
,
.6
);
-webkit-font-feature-settings
:
'kern'
1
;
-moz-font-feature-settings
:
'kern'
1
;
-o-font-feature-settings
:
'kern'
1
;
background-color
:
#eaeaea
}
::-moz-selection
{
background
:
#D6EDFF
}
::selection
{
background
:
#D6EDFF
}
a
{
text-decoration
:
none
;
color
:
#258fb8
;
outline
:
0
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
-webkit-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
color
:
#666
;
line-height
:
1.15em
;
font-family
:
"Open Sans"
,
"Microsoft Yahei"
,
Helvetica
}
h1
{
letter-spacing
:
-2px
;
text-indent
:
-3px
}
h2
{
letter-spacing
:
-1px
}
img
{
max-width
:
100%
}
dl
,
ol
,
p
,
ul
{
-webkit-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
}
ol
,
ul
{
padding-left
:
3rem
}
ol
ol
,
ol
ul
,
ul
ol
,
ul
ul
{
padding-left
:
2em
}
dl
dt
{
width
:
180px
;
overflow
:
hidden
;
clear
:
left
;
text-align
:
right
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
dl
dd
{
margin-left
:
200px
}
hr
{
display
:
block
;
height
:
1px
;
border
:
0
;
border-top
:
#EFEFEF
1px
solid
;
margin
:
3.2em
0
;
padding
:
0
}
blockquote
{
box-sizing
:
border-box
;
margin
:
1.75em
0
;
padding
:
0
0
0
1.75em
;
border-left
:
5px
solid
}
blockquote
:hover
{
border-color
:
#b0a0aa
}
blockquote
p
{
margin
:
.8em
0
;
font-style
:
italic
}
blockquote
small
{
display
:
inline-block
;
margin
:
.8em
0
.8em
1.5em
;
font-size
:
.9em
;
color
:
#CCC
}
blockquote
small
:before
{
content
:
"\2014 \00A0"
}
blockquote
cite
a
{
font-weight
:
400
}
mark
{
background-color
:
#fdffb6
}
code
,
tt
{
padding
:
1px
3px
;
font-family
:
Inconsolata
,
monospace
,
"Microsoft Yahei"
,
Helvetica
;
font-size
:
.85em
;
white-space
:
pre-wrap
;
border
:
1px
solid
#E3EDF3
;
background
:
#F7FAFB
;
border-radius
:
2px
}
pre
{
font-size
:
.9em
}
pre
code
,
pre
tt
{
font-size
:
inherit
;
white-space
:
pre-wrap
;
background
:
0
0
;
border
:
none
;
padding
:
0
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?3js4w7)
;
src
:
url(fonts/icomoon.eot?3js4w7#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?3js4w7)
format
(
'truetype'
),
url(fonts/icomoon.woff?3js4w7)
format
(
'woff'
),
url(fonts/icomoon.svg?3js4w7#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
;
speak
:
none
;
font-style
:
normal
;
font-weight
:
400
;
font-variant
:
normal
;
text-transform
:
none
;
line-height
:
1
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
vertical-align
:
middle
}
.icon-tag
:before
{
content
:
"\e903"
}
.icon-date
:before
{
content
:
"\e902"
}
.icon-github
:before
{
content
:
"\e900"
}
.icon-rss
:before
{
content
:
"\e901"
}
.icon-register
:before
{
content
:
"\e600"
}
.icon-logout
:before
{
content
:
"\e601"
}
.icon-setting
:before
{
content
:
"\e602"
}
.icon-gplus
:before
{
content
:
"\e603"
}
.icon-weibo
:before
{
content
:
"\e605"
}
.icon-goup
:before
{
content
:
"\e60a"
}
.icon-twitter
:before
{
content
:
"\e60b"
}
.icon-t-weibo
:before
{
content
:
"\e60d"
}
.icon-login
:before
{
content
:
"\e611"
}
.form
{
width
:
100%
;
padding
:
30px
}
#captcha
,
#captchaReply
{
height
:
27px
;
display
:
inline-block
;
vertical-align
:
inherit
}
.form
button
,
.form
input
,
.form
textarea
{
border
:
1px
solid
#CCC
;
background-color
:
#FAFAFA
;
border-radius
:
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
7px
8px
;
width
:
100%
;
box-sizing
:
border-box
;
outline
:
0
;
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
}
.tags
.tag
,
footer
.footer
{
font-family
:
Menlo
,
Monaco
,
"Andale Mono"
,
"lucida console"
,
"Courier New"
,
monospace
}
.form
button
{
width
:
auto
;
vertical-align
:
bottom
;
cursor
:
pointer
}
.form
button
:hover
{
background-color
:
#b0a0aa
;
color
:
#FFF
;
box-shadow
:
0
0
0
;
border-color
:
#b0a0aa
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
176
,
160
,
170
,
.5
);
border
:
1px
solid
#b0a0aa
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url(../images/emotions/emotions-ease.png)
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
;
transition
:
all
.2s
ease-out
;
-webkit-transition
:
all
.2s
ease-out
;
-moz-transition
:
all
.2s
ease-out
}
#emotions
span
:hover
{
transform
:
scale
(
1.2
)
rotate
(
360deg
);
-webkit-transform
:
scale
(
1.2
)
rotate
(
360deg
);
-moz-transform
:
scale
(
1.2
)
rotate
(
360deg
)}
.em01
{
background-position
:
-24px
0
}
.em02
{
background-position
:
-48px
0
}
.em03
{
background-position
:
-72px
0
}
.em04
{
background-position
:
-96px
0
}
.em05
{
background-position
:
0
-24px
}
.em06
{
background-position
:
-24px
-24px
}
.em07
{
background-position
:
-48px
-24px
}
.em08
{
background-position
:
-72px
-24px
}
.em09
{
background-position
:
-96px
-24px
}
.em10
{
background-position
:
0
-48px
}
.em11
{
background-position
:
-24px
-48px
}
.em12
{
background-position
:
-48px
-48px
}
.em13
{
background-position
:
-72px
-48px
}
.em14
{
background-position
:
-96px
-48px
}
.side
{
position
:
fixed
;
background-color
:
#FFF
;
height
:
100%
;
width
:
300px
}
.side
a
{
color
:
#696969
;
font-size
:
30px
}
.side
a
:hover
{
color
:
#b0a0aa
}
.side
.overlay
{
height
:
180px
;
background-color
:
#000
;
position
:
absolute
;
opacity
:
.7
;
width
:
100%
}
.side
.content
{
width
:
76%
;
text-align
:
center
;
margin
:
112px
auto
0
;
position
:
relative
;
z-index
:
1
}
.side
footer
,
main
{
position
:
absolute
}
.side
.avatar
{
display
:
block
;
border
:
5px
solid
#fff
;
border-radius
:
50%
;
width
:
128px
;
height
:
128px
;
margin
:
0
auto
;
transition
:
all
.1s
ease-in
}
.side
.avatar
:hover
{
border-color
:
rgba
(
37
,
143
,
184
,
.6
)}
.side
hgroup
h1
{
margin
:
10px
0
;
line-height
:
30px
}
.side
.subtitle
{
color
:
#999
;
font-size
:
14px
;
line-height
:
25px
}
.side
nav
ul
{
margin
:
0
;
padding
:
0
}
.side
nav
a
{
font-size
:
14px
}
.side
footer
{
bottom
:
15px
;
width
:
228px
;
text-align
:
center
;
left
:
50%
;
margin-left
:
-114px
}
.side
footer
>
div
{
margin-bottom
:
10px
}
main
{
right
:
0
;
min-height
:
100%
;
background
:
#eaeaea
;
left
:
300px
;
width
:
auto
}
article
{
margin
:
30px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
position
:
relative
;
transition
:
all
.2s
ease-in
;
visibility
:
hidden
}
.share
span
,
.tags
.avatar
{
transition
:
all
.2s
ease-out
0s
}
article
.post
,
article
.show
{
visibility
:
visible
}
article
.show
{
-webkit-animation
:
bounce
.6s
;
animation
:
bounce
.6s
}
@-webkit-keyframes
bounce
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1.02
)}
100
%
{
-webkit-transform
:
scale
(
1
)}}
@-moz-keyframes
bounce
{
0
%
{
opacity
:
0
;
-moz-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-moz-transform
:
scale
(
1.02
)}
100
%
{
-moz-transform
:
scale
(
1
)}}
.tags
.tag
:hover
,
article
.abstract
a
:hover
,
nav
.pagination
a
.page-num
:hover
{
opacity
:
.7
}
article
header
{
border-left
:
5px
solid
;
padding
:
15px
30px
15px
25px
}
article
header
:hover
{
border-color
:
#b0a0aa
}
article
header
h2
{
margin
:
0
;
font-size
:
26px
;
padding-right
:
110px
}
article
header
a
{
color
:
#696969
;
margin-left
:
0
;
font-weight
:
300
;
line-height
:
35px
}
article
header
a
:hover
{
color
:
#b0a0aa
}
article
header
sup
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#999
}
article
header
time
{
font-size
:
14px
;
position
:
absolute
;
right
:
30px
;
color
:
#aaa
;
top
:
18px
}
article
.abstract
{
line-height
:
1.8em
;
padding-right
:
30px
;
padding-left
:
30px
;
overflow
:
hidden
;
word-wrap
:
break-word
}
article
footer
{
padding
:
20px
35px
0
0
;
margin
:
30px
30px
20px
;
border-top
:
1px
solid
#ddd
}
.tags
.avatar
{
width
:
20px
;
border-radius
:
10px
;
right
:
30px
;
position
:
absolute
;
bottom
:
25px
}
.share
span
{
cursor
:
pointer
}
.share
span
:hover
,
.tags
.avatar
:hover
{
transform
:
rotate
(
360deg
);
color
:
#333
}
.tags
.tag
{
color
:
#fff
;
font-size
:
10px
;
height
:
18px
;
line-height
:
18px
;
display
:
inline-block
;
padding
:
0
5px
0
10px
;
position
:
relative
;
border-radius
:
0
5px
5px
0
;
margin
:
5px
9px
5px
8px
;
background-color
:
#7b5d5f
}
.tags
.tag
:after
,
.tags
.tag
:before
{
content
:
" "
;
position
:
absolute
}
.tags
.tag
:before
{
width
:
0
;
height
:
0
;
top
:
0
;
left
:
-18px
;
border
:
9px
solid
transparent
;
border-right-color
:
#7b5d5f
}
.tags
.tag
:after
{
width
:
4px
;
height
:
4px
;
background-color
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0
0
0
1px
rgba
(
0
,
0
,
0
,
.3
);
top
:
7px
;
left
:
2px
}
a
.color1.tag
{
background
:
#ff945c
}
a
.color1.tag
:before
{
border-right-color
:
#ff945c
}
a
.color2.tag
{
background
:
#f5c7b7
}
a
.color2.tag
:before
{
border-right-color
:
#f5c7b7
}
a
.color3.tag
{
background
:
#ba8f6c
}
a
.color3.tag
:before
{
border-right-color
:
#ba8f6c
}
a
.color4.tag
{
background
:
#cfb7c4
}
a
.color4.tag
:before
{
border-right-color
:
#cfb7c4
}
nav
.pagination
{
text-align
:
center
;
margin-top
:
30px
}
nav
.pagination
.page-num
{
width
:
20px
;
height
:
20px
;
background
:
#4d4d4d
;
border-radius
:
50%
;
display
:
inline-block
;
color
:
#fff
;
line-height
:
20px
;
font-size
:
12px
;
margin
:
0
3px
30px
}
nav
.pagination
.page-num.current
{
background
:
#88acdb
}
nav
.pagination
.extend
{
color
:
#4d4d4d
;
margin
:
0
27px
;
opacity
:
0
}
nav
.pagination
.extend
:hover
{
color
:
#b0a0aa
}
nav
.pagination
:hover
.extend
{
opacity
:
1
}
.post
.tags
.avatar
{
bottom
:
inherit
;
margin-top
:
4px
}
.post
section
.tags
{
margin
:
0
}
.post
header
{
padding-bottom
:
0
}
.post
.share
{
padding
:
10px
0
0
;
margin-top
:
15px
;
font-size
:
14px
}
.post
aside
a
{
color
:
#DDD
}
.post
aside
a
>
strong
{
background
:
#ddd
;
color
:
#fff
;
border-radius
:
50%
;
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
transition
:
background
.3s
;
vertical-align
:
middle
;
line-height
:
18px
;
text-align
:
center
}
.post
aside
a
:hover
{
color
:
#4d4d4d
}
.post
aside
a
:hover
>
strong
{
background-color
:
#4d4d4d
}
.comments
{
margin
:
60px
60px
0
50px
;
padding
:
0
;
position
:
relative
}
.comments
li
{
margin-bottom
:
30px
;
padding-bottom
:
30px
;
border-bottom
:
1px
solid
#ddd
}
.comments
li
time
{
border-left
:
1px
solid
#d5dbde
;
padding-left
:
10px
;
margin-left
:
10px
}
.comments
.avatar
{
position
:
absolute
;
height
:
60px
;
width
:
60px
;
border-radius
:
50%
;
border
:
3px
solid
#FFF
}
.comments
.content
{
margin-left
:
80px
;
min-height
:
66px
}
.comments
.post-meta
{
margin-bottom
:
9px
}
.comments
.content
img
{
vertical-align
:
sub
}
.comments
li
.comment-body-ref
{
position
:
absolute
;
background-color
:
#FFF
;
width
:
80%
;
margin-left
:
80px
;
padding
:
10px
;
border
:
1px
solid
#ddd
}
footer
.footer
{
line-height
:
1rem
;
font-size
:
12px
;
text-shadow
:
0
1px
#fff
;
opacity
:
.6
;
margin
:
0
30px
30px
}
footer
.footer
.icon-goup
{
position
:
fixed
;
bottom
:
35px
;
right
:
5px
;
-webkit-animation
:
upbounce
4s
2s
infinite
;
animation
:
upbounce
4s
2s
infinite
;
z-index
:
10
;
font-size
:
20px
;
cursor
:
pointer
;
color
:
#b0a0aa
;
transition
:
all
.3s
ease
}
footer
.footer
.icon-goup
:hover
{
color
:
#4a4a4a
}
@-webkit-keyframes
upbounce
{
0
%,
10
%,
25
%,
40
%,
50
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
20
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
30
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
@keyframes
upbounce
{
0
%,
100
%,
20
%,
50
%,
80
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
40
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
60
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
.classify
li
{
font-size
:
20px
;
float
:
left
;
margin
:
0
30px
20px
0
}
.classify
.tags
.tag
{
font-size
:
20px
;
padding
:
10px
}
.classify
.tags
.tag
:before
{
left
:
-38px
;
border-width
:
19px
}
.classify
.tags
.tag
:after
{
top
:
15px
;
left
:
-6px
;
width
:
8px
;
height
:
8px
}
.classify-name
{
font-size
:
18px
;
margin
:
30px
}
.dynamic
.comments
li
:last-child
{
border-bottom-width
:
0
}
@media
only
screen
and
(
max-width
:
500px
){
.side
,
.side
.avatar
{
position
:
relative
}
.side
{
height
:
auto
;
width
:
100%
}
.side
footer
,
main
{
position
:
initial
}
.side
.content
{
margin-top
:
0
;
padding-top
:
20px
}
.side
.overlay
{
height
:
100px
;
z-index
:
0
}
.side
nav
{
display
:
none
}
.side
footer
{
margin
:
10px
auto
;
padding-bottom
:
16px
}
article
{
margin
:
10px
}
.comments
{
margin
:
20px
20px
0
}
footer
.footer
{
text-align
:
center
}
footer
.footer
.fn-right
{
float
:
none
;
display
:
block
}}
\ No newline at end of file
src/main/webapp/skins/yilia/skin.properties
View file @
0473873a
...
...
@@ -22,5 +22,5 @@
name
=
yilia
version
=
1.0.0
forSolo
=
1.
3
.0
forSolo
=
1.
4
.0
memo
=
http://litten.github.io/
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