Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
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-1
Commits
d7a38706
Commit
d7a38706
authored
May 25, 2017
by
Liang Ding
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'refs/remotes/origin/2.1.0-dev'
parents
0c3f2b69
1c4e9acd
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
67 additions
and
45 deletions
+67
-45
CHANGE_LOGS.html
CHANGE_LOGS.html
+10
-0
pom.xml
pom.xml
+3
-3
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/UpgradeService.java
src/main/java/org/b3log/solo/service/UpgradeService.java
+35
-29
src/main/webapp/CHANGE_LOGS.html
src/main/webapp/CHANGE_LOGS.html
+10
-0
src/main/webapp/skins/9IPHP/css/base.min.css
src/main/webapp/skins/9IPHP/css/base.min.css
+1
-1
src/main/webapp/skins/9IPHP/skin.properties
src/main/webapp/skins/9IPHP/skin.properties
+0
-2
src/main/webapp/skins/mobile/skin.properties
src/main/webapp/skins/mobile/skin.properties
+0
-2
src/test/java/org/b3log/solo/service/UserMgmtServiceTestCase.java
.../java/org/b3log/solo/service/UserMgmtServiceTestCase.java
+6
-6
No files found.
CHANGE_LOGS.html
View file @
d7a38706
...
@@ -5,6 +5,16 @@
...
@@ -5,6 +5,16 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
</head>
<body>
<body>
<h2>
Release 2.1.0 - May 25, 2017
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12284"
>
12284 H2 SQL 文件导出
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12280"
>
12280 社区同步过来的评论加入头像
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12285"
>
12285 移除 HTML 编辑器
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12273"
>
12273 重新整理文档
</a>
<span
style=
'background: #006b75 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
doc
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12278"
>
12278 新的 Logo
</a>
<span
style=
'background: #006b75 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
doc
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12274"
>
12274 更新分类标签计数错误
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12295"
>
12295 并发请求报错
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
</ul>
<h2>
Release 2.0.0 - Apr 14, 2017
</h2>
<h2>
Release 2.0.0 - Apr 14, 2017
</h2>
<ul>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12256"
>
12256 支持文章分类
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12256"
>
12256 支持文章分类
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
...
...
pom.xml
View file @
d7a38706
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!--
<!--
Description: Solo POM.
Description: Solo POM.
Version: 3.16.1.3
7, May 13
, 2017
Version: 3.16.1.3
8, May 25
, 2017
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
...
@@ -14,9 +14,9 @@
...
@@ -14,9 +14,9 @@
<artifactId>
solo
</artifactId>
<artifactId>
solo
</artifactId>
<packaging>
war
</packaging>
<packaging>
war
</packaging>
<name>
Solo
</name>
<name>
Solo
</name>
<version>
2.
0
.0
</version>
<version>
2.
1
.0
</version>
<description>
<description>
A blogging system written in Java, feel free to create your or your team own blog. 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧
。
A blogging system written in Java, feel free to create your or your team own blog. 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧
!
</description>
</description>
<inceptionYear>
2010
</inceptionYear>
<inceptionYear>
2010
</inceptionYear>
...
...
src/main/java/org/b3log/solo/SoloServletListener.java
View file @
d7a38706
...
@@ -63,7 +63,7 @@ import java.util.concurrent.locks.ReentrantLock;
...
@@ -63,7 +63,7 @@ import java.util.concurrent.locks.ReentrantLock;
* Solo Servlet listener.
* Solo Servlet listener.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.9.3.2
0, May 20
, 2017
* @version 1.9.3.2
1, May 25
, 2017
* @since 0.3.1
* @since 0.3.1
*/
*/
public
final
class
SoloServletListener
extends
AbstractServletListener
{
public
final
class
SoloServletListener
extends
AbstractServletListener
{
...
@@ -71,7 +71,7 @@ public final class SoloServletListener extends AbstractServletListener {
...
@@ -71,7 +71,7 @@ public final class SoloServletListener extends AbstractServletListener {
/**
/**
* Solo version.
* Solo version.
*/
*/
public
static
final
String
VERSION
=
"2.
0
.0"
;
public
static
final
String
VERSION
=
"2.
1
.0"
;
/**
/**
* JSONO print indent factor.
* JSONO print indent factor.
...
...
src/main/java/org/b3log/solo/service/UpgradeService.java
View file @
d7a38706
...
@@ -51,7 +51,7 @@ import java.sql.Statement;
...
@@ -51,7 +51,7 @@ import java.sql.Statement;
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:dongxu.wang@acm.org">Dongxu Wang</a>
* @author <a href="mailto:dongxu.wang@acm.org">Dongxu Wang</a>
* @version 1.2.0.1
2, May 2
, 2017
* @version 1.2.0.1
3, May 25
, 2017
* @since 1.2.0
* @since 1.2.0
*/
*/
@Service
@Service
...
@@ -75,7 +75,7 @@ public class UpgradeService {
...
@@ -75,7 +75,7 @@ public class UpgradeService {
/**
/**
* Old version.
* Old version.
*/
*/
private
static
final
String
FROM_VER
=
"
1.9
.0"
;
private
static
final
String
FROM_VER
=
"
2.0
.0"
;
/**
/**
* New version.
* New version.
...
@@ -169,6 +169,37 @@ public class UpgradeService {
...
@@ -169,6 +169,37 @@ public class UpgradeService {
Transaction
transaction
=
null
;
Transaction
transaction
=
null
;
try
{
try
{
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
JSONObject
editorTypeOpt
=
optionRepository
.
get
(
Option
.
ID_C_EDITOR_TYPE
);
editorTypeOpt
.
put
(
Option
.
OPTION_VALUE
,
Option
.
DefaultPreference
.
DEFAULT_EDITOR_TYPE
);
optionRepository
.
update
(
Option
.
ID_C_EDITOR_TYPE
,
editorTypeOpt
);
transaction
.
commit
();
LOGGER
.
log
(
Level
.
INFO
,
"Updated preference"
);
}
catch
(
final
Exception
e
)
{
if
(
null
!=
transaction
&&
transaction
.
isActive
())
{
transaction
.
rollback
();
}
LOGGER
.
log
(
Level
.
ERROR
,
"Upgrade failed!"
,
e
);
throw
new
Exception
(
"Upgrade failed from version ["
+
FROM_VER
+
"] to version ["
+
TO_VER
+
']'
);
}
LOGGER
.
log
(
Level
.
INFO
,
"Upgraded from version [{0}] to version [{1}] successfully :-)"
,
FROM_VER
,
TO_VER
);
}
/**
* Upgrade database tables.
*
* @throws Exception exception
*/
private
void
upgradeTables
()
throws
Exception
{
final
Connection
connection
=
Connections
.
getConnection
();
final
Connection
connection
=
Connections
.
getConnection
();
final
Statement
statement
=
connection
.
createStatement
();
final
Statement
statement
=
connection
.
createStatement
();
...
@@ -191,31 +222,6 @@ public class UpgradeService {
...
@@ -191,31 +222,6 @@ public class UpgradeService {
statement
.
close
();
statement
.
close
();
connection
.
commit
();
connection
.
commit
();
connection
.
close
();
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
);
// https://github.com/b3log/solo/issues/12285
// final JSONObject editorTypeOpt = optionRepository.get(Option.ID_C_EDITOR_TYPE);
// editorTypeOpt.put(Option.OPTION_VALUE, Option.DefaultPreference.DEFAULT_EDITOR_TYPE);
// optionRepository.update(Option.ID_C_EDITOR_TYPE, editorTypeOpt);
transaction
.
commit
();
LOGGER
.
log
(
Level
.
INFO
,
"Updated preference"
);
}
catch
(
final
Exception
e
)
{
if
(
null
!=
transaction
&&
transaction
.
isActive
())
{
transaction
.
rollback
();
}
LOGGER
.
log
(
Level
.
ERROR
,
"Upgrade failed!"
,
e
);
throw
new
Exception
(
"Upgrade failed from version ["
+
FROM_VER
+
"] to version ["
+
TO_VER
+
']'
);
}
LOGGER
.
log
(
Level
.
INFO
,
"Upgraded from version [{0}] to version [{1}] successfully :-)"
,
FROM_VER
,
TO_VER
);
}
}
/**
/**
...
...
src/main/webapp/CHANGE_LOGS.html
View file @
d7a38706
...
@@ -5,6 +5,16 @@
...
@@ -5,6 +5,16 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
</head>
<body>
<body>
<h2>
Release 2.1.0 - May 25, 2017
</h2>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12284"
>
12284 H2 SQL 文件导出
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12280"
>
12280 社区同步过来的评论加入头像
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12285"
>
12285 移除 HTML 编辑器
</a>
<span
style=
'background: #84b6eb !important;color:#FFFFFF !important;padding: 1px 4px;'
>
enhancement
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12273"
>
12273 重新整理文档
</a>
<span
style=
'background: #006b75 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
doc
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12278"
>
12278 新的 Logo
</a>
<span
style=
'background: #006b75 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
doc
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12274"
>
12274 更新分类标签计数错误
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12295"
>
12295 并发请求报错
</a>
<span
style=
'background: #fc2929 !important;color:#FFFFFF !important;padding: 1px 4px;'
>
bug
</span></li>
</ul>
<h2>
Release 2.0.0 - Apr 14, 2017
</h2>
<h2>
Release 2.0.0 - Apr 14, 2017
</h2>
<ul>
<ul>
<li><a
href=
"https://github.com/b3log/solo/issues/12256"
>
12256 支持文章分类
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
<li><a
href=
"https://github.com/b3log/solo/issues/12256"
>
12256 支持文章分类
</a>
<span
style=
'background: #02e10c !important;color:#FFFFFF !important;padding: 1px 4px;'
>
feature
</span></li>
...
...
src/main/webapp/skins/9IPHP/css/base.min.css
View file @
d7a38706
...
@@ -13,4 +13,4 @@
...
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* See the License for the specific language governing permissions and
* limitations under the License.
* limitations under the License.
*/
*/
blockquote
,
body
,
dd
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
margin
:
0
}
.content-reset
,
body
,
button
,
input
,
select
,
textarea
{
font-family
:
"Helvetica Neue"
,
"Luxi Sans"
,
"DejaVu Sans"
,
Tahoma
,
"Hiragino Sans GB"
,
"Microsoft Yahei"
,
sans-serif
}
html
{
-webkit-text-size-adjust
:
100%
;
-ms-text-size-adjust
:
100%
}
body
{
font-size
:
14px
;
color
:
#333
}
::-moz-selection
{
text-shadow
:
none
;
background
:
rgba
(
65
,
131
,
196
,
.4
)}
ol
,
ul
{
padding
:
0
}
article
,
aside
,
details
,
figcaption
,
figure
,
footer
,
header
,
hgroup
,
nav
,
section
{
display
:
block
}
audio
,
canvas
,
video
{
display
:
inline-block
}
audio
:not
([
controls
])
{
display
:
none
}
a
{
text-decoration
:
none
;
color
:
#383838
}
.content-reset
a
,
a
:hover
{
color
:
#ff4d3a
}
a
:hover
{
text-decoration
:
underline
}
sub
,
sup
{
position
:
relative
;
font-size
:
75%
;
line-height
:
0
;
vertical-align
:
baseline
}
sup
{
top
:
-.5em
}
sub
{
bottom
:
-.25em
}
img
{
max-width
:
100%
;
vertical-align
:
middle
;
border
:
0
;
height
:
auto
;
-ms-interpolation-mode
:
bicubic
}
button
,
input
,
select
,
textarea
{
margin
:
0
;
font-size
:
100%
;
vertical-align
:
middle
;
outline
:
0
}
button
,
input
{
line-height
:
normal
}
button
::-moz-focus-inner
,
input
::-moz-focus-inner
{
padding
:
0
;
border
:
0
}
.content-reset
h1
,
.content-reset
h2
{
padding-bottom
:
.3em
;
border-bottom
:
1px
solid
#eee
}
button
,
input
[
type
=
button
],
input
[
type
=
reset
],
input
[
type
=
submit
]
{
cursor
:
pointer
;
-webkit-appearance
:
button
}
input
[
type
=
search
]
{
-webkit-box-sizing
:
content-box
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
-webkit-appearance
:
textfield
}
input
[
type
=
search
]
::-webkit-search-cancel-button
,
input
[
type
=
search
]
::-webkit-search-decoration
{
-webkit-appearance
:
none
}
textarea
{
overflow
:
auto
;
resize
:
vertical
}
svg
{
vertical-align
:
text-top
;
fill
:
currentColor
}
.content-reset
{
word-wrap
:
break-word
;
overflow
:
auto
;
line-height
:
1.5
;
font-size
:
16px
;
word-break
:
break-all
}
.content-reset
ol
,
.content-reset
ul
{
padding-left
:
2em
;
margin-top
:
0
;
margin-bottom
:
16px
}
.content-reset
li
{
margin-top
:
.25em
}
.content-reset
h1
,
.content-reset
h2
,
.content-reset
h3
,
.content-reset
h4
,
.content-reset
h5
,
.content-reset
h6
{
margin-top
:
24px
;
margin-bottom
:
16px
;
font-weight
:
600
;
line-height
:
1.25
}
.content-reset
h1
{
font-size
:
2em
}
.content-reset
h2
{
font-size
:
1.5em
}
.content-reset
h3
{
font-size
:
1.25em
}
.content-reset
h4
{
font-size
:
1em
}
.content-reset
h5
{
font-size
:
.875em
}
.content-reset
h6
{
font-size
:
.85em
}
.content-reset
hr
{
height
:
.25em
;
padding
:
0
;
margin
:
24px
0
;
background-color
:
#e7e7e7
;
border
:
0
}
.content-reset
p
{
margin-top
:
0
;
margin-bottom
:
16px
}
.content-reset
blockquote
{
padding
:
0
1em
;
color
:
#777
;
border-left
:
.25em
solid
#ddd
;
margin-bottom
:
16px
}
.content-reset
blockquote
p
{
margin
:
0
}
.content-reset
iframe
{
border
:
1px
solid
#ccc
}
.content-reset
table
{
width
:
100%
;
border
:
1px
solid
#dedede
;
margin
:
15px
auto
;
border-collapse
:
collapse
;
empty-cells
:
show
}
.content-reset
thead
{
text-align
:
center
}
.content-reset
td
,
.content-reset
th
{
height
:
35px
;
border
:
1px
solid
#dedede
;
padding
:
0
10px
}
.content-reset
th
{
font-weight
:
700
;
text-align
:
center
!important
;
background
:
rgba
(
158
,
188
,
226
,
.2
)}
.footer
,
.icon-up
{
text-align
:
center
}
.content-reset
tbody
tr
:nth-child
(
2n
)
{
background
:
rgba
(
158
,
188
,
226
,
.12
)}
.content-reset
tr
:hover
{
background
:
#efefef
}
.content-reset
code
{
padding
:
.2em
.4em
;
margin
:
0
;
font-size
:
85%
;
background-color
:
rgba
(
252
,
41
,
41
,
.12
);
border-radius
:
3px
;
color
:
#d23f31
;
font-family
:
mononoki
,
Consolas
,
"Liberation Mono"
,
Menlo
,
Courier
,
monospace
}
.content-reset
pre
>
code
{
padding
:
.5em
;
color
:
#333
;
background-color
:
rgba
(
0
,
0
,
0
,
.04
);
background-image
:
url(../images/code-bg.png)
;
background-size
:
20px
20px
;
border-radius
:
5px
}
.content-reset
kbd
{
display
:
inline-block
;
padding
:
3px
5px
;
font
:
11px
Consolas
,
"Liberation Mono"
,
Menlo
,
Courier
,
monospace
;
line-height
:
10px
;
color
:
#555
;
vertical-align
:
middle
;
background-color
:
#fcfcfc
;
border
:
1px
solid
#ccc
;
border-bottom-color
:
#bbb
;
border-radius
:
3px
;
box-shadow
:
inset
0
-1px
0
#bbb
}
.fn-pointer
{
cursor
:
pointer
}
.fn-inline
{
display
:
inline
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-left
{
float
:
left
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
.fn-hidden
{
visibility
:
hidden
}
.fn-ellipsis
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
word-wrap
:
normal
}
.tooltipped
{
position
:
relative
;
cursor
:
pointer
}
.tooltipped
::after
,
.tooltipped
::before
{
position
:
absolute
;
display
:
none
;
pointer-events
:
none
}
.tooltipped
::after
{
z-index
:
1000000
;
padding
:
5px
8px
;
font-size
:
11px
;
font-weight
:
400
;
-webkit-font-smoothing
:
subpixel-antialiased
;
color
:
#fff
;
text-align
:
center
;
text-decoration
:
none
;
text-shadow
:
none
;
text-transform
:
none
;
letter-spacing
:
normal
;
word-wrap
:
break-word
;
white-space
:
pre
;
content
:
attr
(
aria-label
);
background
:
rgba
(
0
,
0
,
0
,
.8
);
border-radius
:
3px
;
line-height
:
16px
;
opacity
:
0
}
.tooltipped
::before
{
z-index
:
1000001
;
width
:
0
;
height
:
0
;
color
:
rgba
(
0
,
0
,
0
,
.8
);
content
:
""
;
border
:
5px
solid
transparent
;
opacity
:
0
}
@-webkit-keyframes
tooltip-appear
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
@keyframes
tooltip-appear
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
.tooltipped-hover
::after
,
.tooltipped-hover
::before
,
.tooltipped
:active::after
,
.tooltipped
:active::before
,
.tooltipped
:focus::after
,
.tooltipped
:focus::before
,
.tooltipped
:hover::after
,
.tooltipped
:hover::before
{
display
:
inline-block
;
text-decoration
:
none
;
-webkit-animation-name
:
tooltip-appear
;
animation-name
:
tooltip-appear
;
-webkit-animation-duration
:
.1s
;
animation-duration
:
.1s
;
-webkit-animation-fill-mode
:
forwards
;
animation-fill-mode
:
forwards
;
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
-webkit-animation-delay
:
.4s
;
animation-delay
:
.4s
}
.tooltipped-s
::after
,
.tooltipped-se
::after
,
.tooltipped-sw
::after
{
top
:
100%
;
right
:
50%
;
margin-top
:
5px
}
.tooltipped-s
::before
,
.tooltipped-se
::before
,
.tooltipped-sw
::before
{
top
:
auto
;
right
:
50%
;
bottom
:
-5px
;
margin-right
:
-5px
;
border-bottom-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-se
::after
{
right
:
auto
;
left
:
50%
;
margin-left
:
-15px
}
.tooltipped-sw
::after
{
margin-right
:
-15px
}
.tooltipped-n
::after
,
.tooltipped-ne
::after
,
.tooltipped-nw
::after
{
right
:
50%
;
bottom
:
100%
;
margin-bottom
:
5px
}
.tooltipped-n
::before
,
.tooltipped-ne
::before
,
.tooltipped-nw
::before
{
top
:
-5px
;
right
:
50%
;
bottom
:
auto
;
margin-right
:
-5px
;
border-top-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-ne
::after
{
right
:
auto
;
left
:
50%
;
margin-left
:
-15px
}
.tooltipped-nw
::after
{
margin-right
:
-15px
}
.tooltipped-n
::after
,
.tooltipped-s
::after
{
-webkit-transform
:
translateX
(
50%
);
transform
:
translateX
(
50%
)}
.tooltipped-w
::after
{
right
:
100%
;
bottom
:
50%
;
margin-right
:
5px
;
-webkit-transform
:
translateY
(
50%
);
transform
:
translateY
(
50%
)}
.tooltipped-w
::before
{
top
:
50%
;
bottom
:
50%
;
left
:
-5px
;
margin-top
:
-5px
;
border-left-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-e
::after
{
bottom
:
50%
;
left
:
100%
;
margin-left
:
5px
;
-webkit-transform
:
translateY
(
50%
);
transform
:
translateY
(
50%
)}
.tooltipped-e
::before
{
top
:
50%
;
right
:
-5px
;
bottom
:
50%
;
margin-top
:
-5px
;
border-right-color
:
rgba
(
0
,
0
,
0
,
.8
)}
a
[
class
*=
" icon-"
],
a
[
class
^=
icon-
]
{
color
:
#333
}
a
[
class
*=
" icon-"
]
:hover
,
a
[
class
^=
icon-
]
:hover
{
text-decoration
:
none
;
color
:
#4285f4
}
.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
}
.icon-up
,
a
{
transition
:
all
.3s
}
.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
}
#commentForm
,
#replyForm
{
width
:
100%
}
.comments
{
position
:
relative
}
.comment-body-ref
{
position
:
absolute
;
width
:
80%
;
background-color
:
#fff
;
right
:
0
;
border
:
1px
solid
#eee
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?oyqnlj)
;
src
:
url(fonts/icomoon.eot?oyqnlj#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?oyqnlj)
format
(
'truetype'
),
url(fonts/icomoon.woff?oyqnlj)
format
(
'woff'
),
url(fonts/icomoon.svg?oyqnlj#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
!important
;
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
}
.icon-list
:before
{
content
:
"\f0ca"
}
.icon-home
:before
{
content
:
"\f015"
}
.icon-comments
:before
{
content
:
"\f0e6"
}
.icon-date
:before
{
content
:
"\f073"
}
.icon-search
:before
{
content
:
"\f002"
}
.icon-up
:before
{
content
:
"\f077"
}
.icon-inbox
:before
{
content
:
"\f01c"
}
.icon-tags
:before
{
content
:
"\f02c"
}
.icon-link
:before
{
content
:
"\f0c1"
}
.icon-refresh
:before
{
content
:
"\f021"
}
.icon-category
:before
{
content
:
"\e9bc"
}
.icon-logout
:before
{
content
:
"\ea14"
}
.icon-views
:before
{
content
:
"\e900"
}
.icon-register
:before
{
content
:
"\e973"
}
.icon-setting
:before
{
content
:
"\e994"
}
.icon-login
:before
{
content
:
"\ea13"
}
.icon-rss
:before
{
content
:
"\e901"
}
::selection
{
text-shadow
:
none
;
background
:
#3D4450
;
color
:
#FFF
;
outline
:
0
}
a
{
outline
:
0
}
.pagination
{
margin-bottom
:
30px
;
line-height
:
30px
;
font-family
:
Georgia
}
.pagination
.page-number
:first-child
{
border-left
:
1px
solid
#ddd
}
.pagination
.page-number
{
display
:
inline-block
;
padding
:
0
10px
;
border
:
1px
solid
#ddd
;
border-left
:
0
;
text-decoration
:
none
;
float
:
left
}
.pagination
a
.page-number
:hover
{
color
:
#ff4d3a
;
background-color
:
#eee
}
.pagination
.page-number.current
{
color
:
#fff
;
background
:
#ff4d3a
;
border-color
:
#ff4d3a
;
margin-left
:
-1px
}
.module
{
box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.05
);
margin-bottom
:
20px
}
.module
header
h2
{
border-bottom
:
1px
solid
#ff4d3a
;
padding
:
10px
;
line-height
:
18px
;
font-size
:
16px
;
font-weight
:
400
}
.module
main
{
padding
:
20px
}
.ft-warn
{
color
:
#ff4d3a
}
.ft-gray
{
color
:
#aaa
}
.list
,
.module
main
.list
{
padding
:
0
}
.list
li
{
list-style
:
none
;
border-bottom
:
1px
solid
#eee
;
line-height
:
40px
;
padding
:
0
20px
}
.list
li
:last-child
{
border-bottom
:
0
}
.list
a
{
color
:
#666
;
text-decoration
:
none
;
display
:
block
}
.list
a
:hover
{
color
:
#ff4d3a
}
.form
input
,
.form
textarea
{
border
:
1px
solid
#ccc
;
background-color
:
#FAFAFA
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
0
10px
;
width
:
100%
;
line-height
:
28px
;
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
}
.banner
.fn-right
a
,
.banner
h1
a
{
line-height
:
75px
;
text-decoration
:
none
}
.post
,
aside
.ad
{
box-sizing
:
border-box
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
81
,
167
,
232
,
.5
);
border
:
1px
solid
#51A7E8
}
.form
button
{
background-color
:
#EB5750
;
border
:
0
;
color
:
#fff
}
.form
button
:hover
{
background-color
:
#e42f19
}
.wrapper
{
width
:
90%
;
margin
:
0
auto
;
min-width
:
720px
;
max-width
:
1300px
}
aside
{
width
:
28%
;
min-width
:
236px
}
.main-wrap
{
display
:
flex
}
.main-wrap
>
main
{
margin-right
:
30px
;
flex
:
1
;
min-width
:
1px
}
.banner
{
background-color
:
#393939
;
height
:
75px
}
.banner
h1
a
{
color
:
#fff
}
.banner
small
{
color
:
#DFDFDF
;
font-size
:
15px
}
.banner
.fn-right
a
{
color
:
#DFDFDF
;
margin-left
:
10px
;
opacity
:
.6
}
.banner
.fn-right
a
:hover
{
opacity
:
1
}
.navbar
{
border-bottom
:
1px
solid
#eee
;
height
:
50px
;
margin-bottom
:
30px
}
.navbar.pin
{
position
:
fixed
;
width
:
100%
;
background-color
:
rgba
(
255
,
255
,
255
,
.95
);
top
:
0
;
z-index
:
10
}
.navbar
nav
a
{
color
:
#555
;
text-decoration
:
none
;
line-height
:
50px
;
padding
:
0
10px
;
display
:
inline-block
}
.navbar
nav
a
:hover
{
color
:
#333
}
.navbar
nav
a
.current
{
background-color
:
#eee
}
.navbar
form
{
position
:
relative
;
margin-top
:
8px
}
.navbar
.form
input
{
padding-right
:
40px
}
.navbar
button
{
background-color
:
#EB5750
;
border
:
0
;
color
:
#fff
;
position
:
absolute
;
top
:
0
;
right
:
0
;
height
:
30px
;
width
:
30px
}
.navbar
button
:hover
{
background-color
:
#e42f19
}
.footer
{
padding
:
30px
0
;
background
:
#111
;
margin-top
:
30px
;
color
:
#fff
}
.footer
a
{
color
:
#ff4d3a
;
text-decoration
:
none
}
.icon-up
{
position
:
fixed
;
bottom
:
122px
;
right
:
20px
;
color
:
#fff
;
background-color
:
#111
;
height
:
30px
;
width
:
30px
;
line-height
:
28px
;
border-radius
:
15px
;
cursor
:
pointer
;
display
:
none
}
.post
.rel
a
,
.tags
>
a
.tag
,
aside
.tag.tooltipped
{
display
:
inline-block
;
text-decoration
:
none
}
.icon-up
:hover
{
background-color
:
#ff4d3a
}
aside
.ad
{
background-color
:
#3cbc8d
;
color
:
#fff
;
padding
:
20px
;
margin-bottom
:
20px
;
border
:
1px
solid
transparent
}
aside
.meta
main
{
text-align
:
right
;
line-height
:
20px
}
aside
.meta
img
{
float
:
left
;
height
:
80px
;
width
:
80px
;
border-radius
:
5px
}
aside
.tag.tooltipped
{
padding
:
2px
5px
;
margin-bottom
:
10px
;
border
:
1px
solid
#e1e1e1
;
margin-right
:
10px
;
line-height
:
22px
}
aside
.has-toc
>
ul
>
li
{
list-style
:
none
;
float
:
left
;
width
:
50%
;
margin
:
0
;
cursor
:
pointer
;
line-height
:
18px
;
font-size
:
16px
;
text-align
:
center
;
font-weight
:
400
}
aside
.has-toc
ul
>
li
.current
{
color
:
#ff4d3a
}
.post
.meta
,
.post
sup
{
color
:
#aaa
}
aside
.b3-solo-list
{
font-size
:
14px
}
aside
.has-toc
>
section
:last-child
{
margin-top
:
20px
}
.post
{
border
:
1px
solid
#ededed
;
margin-bottom
:
20px
;
padding
:
20px
}
.post
.meta
,
.post
h1
{
margin-bottom
:
10px
}
.post
h1
a
{
font-size
:
30px
;
font-weight
:
500
;
text-decoration
:
none
}
.post
sup
{
font-weight
:
300
}
.post
.meta
a
{
color
:
#aaa
;
text-decoration
:
none
}
.post
.meta
a
:hover
{
color
:
#ff4d3a
}
.tags
>
a
.tag
{
color
:
#fff
;
font-size
:
12px
;
background-color
:
#bbb
;
margin-right
:
10px
;
padding
:
0
5px
;
line-height
:
22px
;
margin-top
:
10px
}
.tags
>
a
.tag
:before
{
content
:
"#"
}
.tags
>
a
.tag
:hover
{
background
:
#999
}
.post
footer
.copyright
{
padding
:
10px
;
font-size
:
14px
;
line-height
:
16px
;
border
:
1px
solid
#ff4d3a
;
border-left-width
:
20px
;
margin
:
20px
0
}
.post
.rel
a
{
padding
:
5px
14px
;
background-color
:
#fff
;
border
:
1px
solid
#ddd
;
border-radius
:
15px
;
margin
:
20px
0
}
.post
.rel
a
:hover
{
background-color
:
#eee
}
.title
h2
{
font-size
:
16px
;
font-weight
:
700
;
padding-bottom
:
10px
;
border-bottom
:
1px
solid
#f1f1f1
;
margin-top
:
20px
}
.title
>
h2
.tip
{
border-bottom
:
0
}
.comments
>
li
{
list-style
:
none
;
border-bottom
:
1px
solid
#f1f1f1
;
padding
:
10px
}
.comments
>
li
>
div
{
display
:
flex
}
.comments
.avatar
{
width
:
50px
;
height
:
50px
;
border-radius
:
100%
;
margin-right
:
20px
;
background-size
:
contain
}
.comments
main
{
flex
:
1
;
min-width
:
1px
}
.comments
.content-reset
{
margin-top
:
10px
}
.comments
.user-name
{
color
:
#666
;
text-decoration
:
none
}
.comments
.user-name
:hover
{
color
:
#ff4d3a
}
.comments
.reply-btn
{
float
:
right
;
background-color
:
#ff4d3a
;
color
:
#fff
;
text-decoration
:
none
;
font-size
:
12px
;
padding
:
2px
5px
}
.comments
.reply-btn
:hover
{
background-color
:
#e42f19
}
#commentForm
{
margin-top
:
20px
}
.form
.captcha
{
height
:
28px
}
.other
{
border
:
1px
solid
#ededed
;
margin-bottom
:
20px
;
padding
:
0
20px
20px
}
@media
(
max-width
:
900px
){
.navbar
.form
{
display
:
none
}}
@media
(
max-width
:
700px
){
.wrapper
,
aside
{
box-sizing
:
border-box
;
width
:
100%
}
.icon-list
,
.responsive
.list
{
background-color
:
#fff
;
position
:
absolute
}
.wrapper
{
min-width
:
auto
;
padding
:
0
10px
}
.main-wrap
>
main
{
margin-right
:
0
}
.main-wrap
,
.responsive
{
display
:
block
}
.banner
{
margin-bottom
:
20px
}
.banner
.fn-right
,
.banner
small
,
.navbar
{
display
:
none
}
.icon-list
{
right
:
10px
;
top
:
20px
;
font-size
:
20px
;
padding
:
8px
6px
;
cursor
:
pointer
}
.responsive
.list
{
width
:
100%
;
border
:
1px
solid
#eee
;
left
:
0
;
display
:
none
;
z-index
:
10
;
top
:
75px
}
.responsive
.list
li
.current
{
background-color
:
#eee
}}
blockquote
,
body
,
dd
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
margin
:
0
}
.content-reset
,
body
,
button
,
input
,
select
,
textarea
{
font-family
:
"Helvetica Neue"
,
"Luxi Sans"
,
"DejaVu Sans"
,
Tahoma
,
"Hiragino Sans GB"
,
"Microsoft Yahei"
,
sans-serif
}
html
{
-webkit-text-size-adjust
:
100%
;
-ms-text-size-adjust
:
100%
}
body
{
font-size
:
14px
;
color
:
#333
}
::-moz-selection
{
text-shadow
:
none
;
background
:
rgba
(
65
,
131
,
196
,
.4
)}
ol
,
ul
{
padding
:
0
}
article
,
aside
,
details
,
figcaption
,
figure
,
footer
,
header
,
hgroup
,
nav
,
section
{
display
:
block
}
audio
,
canvas
,
video
{
display
:
inline-block
}
audio
:not
([
controls
])
{
display
:
none
}
a
{
text-decoration
:
none
;
color
:
#383838
}
.content-reset
a
,
a
:hover
{
color
:
#ff4d3a
}
a
:hover
{
text-decoration
:
underline
}
sub
,
sup
{
position
:
relative
;
font-size
:
75%
;
line-height
:
0
;
vertical-align
:
baseline
}
sup
{
top
:
-.5em
}
sub
{
bottom
:
-.25em
}
img
{
max-width
:
100%
;
vertical-align
:
middle
;
border
:
0
;
height
:
auto
;
-ms-interpolation-mode
:
bicubic
}
button
,
input
,
select
,
textarea
{
margin
:
0
;
font-size
:
100%
;
vertical-align
:
middle
;
outline
:
0
}
button
,
input
{
line-height
:
normal
}
button
::-moz-focus-inner
,
input
::-moz-focus-inner
{
padding
:
0
;
border
:
0
}
.content-reset
h1
,
.content-reset
h2
{
padding-bottom
:
.3em
;
border-bottom
:
1px
solid
#eee
}
button
,
input
[
type
=
button
],
input
[
type
=
reset
],
input
[
type
=
submit
]
{
cursor
:
pointer
;
-webkit-appearance
:
button
}
input
[
type
=
search
]
{
-webkit-box-sizing
:
content-box
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
-webkit-appearance
:
textfield
}
input
[
type
=
search
]
::-webkit-search-cancel-button
,
input
[
type
=
search
]
::-webkit-search-decoration
{
-webkit-appearance
:
none
}
textarea
{
overflow
:
auto
;
resize
:
vertical
}
svg
{
vertical-align
:
text-top
;
fill
:
currentColor
}
.content-reset
{
word-wrap
:
break-word
;
overflow
:
auto
;
line-height
:
1.5
;
font-size
:
16px
;
word-break
:
break-all
}
.content-reset
ol
,
.content-reset
ul
{
padding-left
:
2em
;
margin-top
:
0
;
margin-bottom
:
16px
}
.content-reset
li
{
margin-top
:
.25em
}
.content-reset
h1
,
.content-reset
h2
,
.content-reset
h3
,
.content-reset
h4
,
.content-reset
h5
,
.content-reset
h6
{
margin-top
:
24px
;
margin-bottom
:
16px
;
font-weight
:
600
;
line-height
:
1.25
}
.content-reset
h1
{
font-size
:
2em
}
.content-reset
h2
{
font-size
:
1.5em
}
.content-reset
h3
{
font-size
:
1.25em
}
.content-reset
h4
{
font-size
:
1em
}
.content-reset
h5
{
font-size
:
.875em
}
.content-reset
h6
{
font-size
:
.85em
}
.content-reset
hr
{
height
:
.25em
;
padding
:
0
;
margin
:
24px
0
;
background-color
:
#e7e7e7
;
border
:
0
}
.content-reset
p
{
margin-top
:
0
;
margin-bottom
:
16px
}
.content-reset
blockquote
{
padding
:
0
1em
;
color
:
#777
;
border-left
:
.25em
solid
#ddd
;
margin-bottom
:
16px
}
.content-reset
blockquote
p
{
margin
:
0
}
.content-reset
iframe
{
border
:
1px
solid
#ccc
}
.content-reset
table
{
width
:
100%
;
border
:
1px
solid
#dedede
;
margin
:
15px
auto
;
border-collapse
:
collapse
;
empty-cells
:
show
}
.content-reset
thead
{
text-align
:
center
}
.content-reset
td
,
.content-reset
th
{
height
:
35px
;
border
:
1px
solid
#dedede
;
padding
:
0
10px
}
.content-reset
th
{
font-weight
:
700
;
text-align
:
center
!important
;
background
:
rgba
(
158
,
188
,
226
,
.2
)}
.footer
,
.icon-up
{
text-align
:
center
}
.content-reset
tbody
tr
:nth-child
(
2n
)
{
background
:
rgba
(
158
,
188
,
226
,
.12
)}
.content-reset
tr
:hover
{
background
:
#efefef
}
.content-reset
code
{
padding
:
.2em
.4em
;
margin
:
0
;
font-size
:
85%
;
background-color
:
rgba
(
252
,
41
,
41
,
.12
);
border-radius
:
3px
;
color
:
#d23f31
;
font-family
:
mononoki
,
Consolas
,
"Liberation Mono"
,
Menlo
,
Courier
,
monospace
}
.content-reset
pre
>
code
{
padding
:
.5em
;
color
:
#333
;
background-color
:
rgba
(
0
,
0
,
0
,
.04
);
background-image
:
url(../images/code-bg.png)
;
background-size
:
20px
20px
;
border-radius
:
5px
}
.content-reset
kbd
{
display
:
inline-block
;
padding
:
3px
5px
;
font
:
11px
Consolas
,
"Liberation Mono"
,
Menlo
,
Courier
,
monospace
;
line-height
:
10px
;
color
:
#555
;
vertical-align
:
middle
;
background-color
:
#fcfcfc
;
border
:
1px
solid
#ccc
;
border-bottom-color
:
#bbb
;
border-radius
:
3px
;
box-shadow
:
inset
0
-1px
0
#bbb
}
.fn-pointer
{
cursor
:
pointer
}
.fn-inline
{
display
:
inline
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-left
{
float
:
left
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
.fn-hidden
{
visibility
:
hidden
}
.fn-ellipsis
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
word-wrap
:
normal
}
.tooltipped
{
position
:
relative
;
cursor
:
pointer
}
.tooltipped
::after
,
.tooltipped
::before
{
position
:
absolute
;
display
:
none
;
pointer-events
:
none
}
.tooltipped
::after
{
z-index
:
1000000
;
padding
:
5px
8px
;
font-size
:
11px
;
font-weight
:
400
;
-webkit-font-smoothing
:
subpixel-antialiased
;
color
:
#fff
;
text-align
:
center
;
text-decoration
:
none
;
text-shadow
:
none
;
text-transform
:
none
;
letter-spacing
:
normal
;
word-wrap
:
break-word
;
white-space
:
pre
;
content
:
attr
(
aria-label
);
background
:
rgba
(
0
,
0
,
0
,
.8
);
border-radius
:
3px
;
line-height
:
16px
;
opacity
:
0
}
.tooltipped
::before
{
z-index
:
1000001
;
width
:
0
;
height
:
0
;
color
:
rgba
(
0
,
0
,
0
,
.8
);
content
:
""
;
border
:
5px
solid
transparent
;
opacity
:
0
}
@-webkit-keyframes
tooltip-appear
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
@keyframes
tooltip-appear
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
.tooltipped-hover
::after
,
.tooltipped-hover
::before
,
.tooltipped
:active::after
,
.tooltipped
:active::before
,
.tooltipped
:focus::after
,
.tooltipped
:focus::before
,
.tooltipped
:hover::after
,
.tooltipped
:hover::before
{
display
:
inline-block
;
text-decoration
:
none
;
-webkit-animation-name
:
tooltip-appear
;
animation-name
:
tooltip-appear
;
-webkit-animation-duration
:
.1s
;
animation-duration
:
.1s
;
-webkit-animation-fill-mode
:
forwards
;
animation-fill-mode
:
forwards
;
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
-webkit-animation-delay
:
.4s
;
animation-delay
:
.4s
}
.tooltipped-s
::after
,
.tooltipped-se
::after
,
.tooltipped-sw
::after
{
top
:
100%
;
right
:
50%
;
margin-top
:
5px
}
.tooltipped-s
::before
,
.tooltipped-se
::before
,
.tooltipped-sw
::before
{
top
:
auto
;
right
:
50%
;
bottom
:
-5px
;
margin-right
:
-5px
;
border-bottom-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-se
::after
{
right
:
auto
;
left
:
50%
;
margin-left
:
-15px
}
.tooltipped-sw
::after
{
margin-right
:
-15px
}
.tooltipped-n
::after
,
.tooltipped-ne
::after
,
.tooltipped-nw
::after
{
right
:
50%
;
bottom
:
100%
;
margin-bottom
:
5px
}
.tooltipped-n
::before
,
.tooltipped-ne
::before
,
.tooltipped-nw
::before
{
top
:
-5px
;
right
:
50%
;
bottom
:
auto
;
margin-right
:
-5px
;
border-top-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-ne
::after
{
right
:
auto
;
left
:
50%
;
margin-left
:
-15px
}
.tooltipped-nw
::after
{
margin-right
:
-15px
}
.tooltipped-n
::after
,
.tooltipped-s
::after
{
-webkit-transform
:
translateX
(
50%
);
transform
:
translateX
(
50%
)}
.tooltipped-w
::after
{
right
:
100%
;
bottom
:
50%
;
margin-right
:
5px
;
-webkit-transform
:
translateY
(
50%
);
transform
:
translateY
(
50%
)}
.tooltipped-w
::before
{
top
:
50%
;
bottom
:
50%
;
left
:
-5px
;
margin-top
:
-5px
;
border-left-color
:
rgba
(
0
,
0
,
0
,
.8
)}
.tooltipped-e
::after
{
bottom
:
50%
;
left
:
100%
;
margin-left
:
5px
;
-webkit-transform
:
translateY
(
50%
);
transform
:
translateY
(
50%
)}
.tooltipped-e
::before
{
top
:
50%
;
right
:
-5px
;
bottom
:
50%
;
margin-top
:
-5px
;
border-right-color
:
rgba
(
0
,
0
,
0
,
.8
)}
a
[
class
*=
" icon-"
],
a
[
class
^=
icon-
]
{
color
:
#333
}
a
[
class
*=
" icon-"
]
:hover
,
a
[
class
^=
icon-
]
:hover
{
text-decoration
:
none
;
color
:
#4285f4
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url(../../../images/emotions/emotions.png)
;
background-size
:
120px
;
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
}
.icon-up
,
a
{
transition
:
all
.3s
}
.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
}
#commentForm
,
#replyForm
{
width
:
100%
}
.comments
{
position
:
relative
}
.comment-body-ref
{
position
:
absolute
;
width
:
80%
;
background-color
:
#fff
;
right
:
0
;
border
:
1px
solid
#eee
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?oyqnlj)
;
src
:
url(fonts/icomoon.eot?oyqnlj#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?oyqnlj)
format
(
'truetype'
),
url(fonts/icomoon.woff?oyqnlj)
format
(
'woff'
),
url(fonts/icomoon.svg?oyqnlj#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
!important
;
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
}
.icon-list
:before
{
content
:
"\f0ca"
}
.icon-home
:before
{
content
:
"\f015"
}
.icon-comments
:before
{
content
:
"\f0e6"
}
.icon-date
:before
{
content
:
"\f073"
}
.icon-search
:before
{
content
:
"\f002"
}
.icon-up
:before
{
content
:
"\f077"
}
.icon-inbox
:before
{
content
:
"\f01c"
}
.icon-tags
:before
{
content
:
"\f02c"
}
.icon-link
:before
{
content
:
"\f0c1"
}
.icon-refresh
:before
{
content
:
"\f021"
}
.icon-category
:before
{
content
:
"\e9bc"
}
.icon-logout
:before
{
content
:
"\ea14"
}
.icon-views
:before
{
content
:
"\e900"
}
.icon-register
:before
{
content
:
"\e973"
}
.icon-setting
:before
{
content
:
"\e994"
}
.icon-login
:before
{
content
:
"\ea13"
}
.icon-rss
:before
{
content
:
"\e901"
}
::selection
{
text-shadow
:
none
;
background
:
#3D4450
;
color
:
#FFF
;
outline
:
0
}
a
{
outline
:
0
}
.pagination
{
margin-bottom
:
30px
;
line-height
:
30px
;
font-family
:
Georgia
}
.pagination
.page-number
:first-child
{
border-left
:
1px
solid
#ddd
}
.pagination
.page-number
{
display
:
inline-block
;
padding
:
0
10px
;
border
:
1px
solid
#ddd
;
border-left
:
0
;
text-decoration
:
none
;
float
:
left
}
.pagination
a
.page-number
:hover
{
color
:
#ff4d3a
;
background-color
:
#eee
}
.pagination
.page-number.current
{
color
:
#fff
;
background
:
#ff4d3a
;
border-color
:
#ff4d3a
;
margin-left
:
-1px
}
.module
{
box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.05
);
margin-bottom
:
20px
}
.module
header
h2
{
border-bottom
:
1px
solid
#ff4d3a
;
padding
:
10px
;
line-height
:
18px
;
font-size
:
16px
;
font-weight
:
400
}
.module
main
{
padding
:
20px
}
.ft-warn
{
color
:
#ff4d3a
}
.ft-gray
{
color
:
#aaa
}
.list
,
.module
main
.list
{
padding
:
0
}
.list
li
{
list-style
:
none
;
border-bottom
:
1px
solid
#eee
;
line-height
:
40px
;
padding
:
0
20px
}
.list
li
:last-child
{
border-bottom
:
0
}
.list
a
{
color
:
#666
;
text-decoration
:
none
;
display
:
block
}
.list
a
:hover
{
color
:
#ff4d3a
}
.form
input
,
.form
textarea
{
border
:
1px
solid
#ccc
;
background-color
:
#FAFAFA
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
0
10px
;
width
:
100%
;
line-height
:
28px
;
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
}
.banner
.fn-right
a
,
.banner
h1
a
{
line-height
:
75px
;
text-decoration
:
none
}
.post
,
aside
.ad
{
box-sizing
:
border-box
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
81
,
167
,
232
,
.5
);
border
:
1px
solid
#51A7E8
}
.form
button
{
background-color
:
#EB5750
;
border
:
0
;
color
:
#fff
}
.form
button
:hover
{
background-color
:
#e42f19
}
.wrapper
{
width
:
90%
;
margin
:
0
auto
;
min-width
:
720px
;
max-width
:
1300px
}
aside
{
width
:
28%
;
min-width
:
236px
}
.main-wrap
{
display
:
flex
}
.main-wrap
>
main
{
margin-right
:
30px
;
flex
:
1
;
min-width
:
1px
}
.banner
{
background-color
:
#393939
;
height
:
75px
}
.banner
h1
a
{
color
:
#fff
}
.banner
small
{
color
:
#DFDFDF
;
font-size
:
15px
}
.banner
.fn-right
a
{
color
:
#DFDFDF
;
margin-left
:
10px
;
opacity
:
.6
}
.banner
.fn-right
a
:hover
{
opacity
:
1
}
.navbar
{
border-bottom
:
1px
solid
#eee
;
height
:
50px
;
margin-bottom
:
30px
}
.navbar.pin
{
position
:
fixed
;
width
:
100%
;
background-color
:
rgba
(
255
,
255
,
255
,
.95
);
top
:
0
;
z-index
:
10
}
.navbar
nav
a
{
color
:
#555
;
text-decoration
:
none
;
line-height
:
50px
;
padding
:
0
10px
;
display
:
inline-block
}
.navbar
nav
a
:hover
{
color
:
#333
}
.navbar
nav
a
.current
{
background-color
:
#eee
}
.navbar
form
{
position
:
relative
;
margin-top
:
8px
}
.navbar
.form
input
{
padding-right
:
40px
}
.navbar
button
{
background-color
:
#EB5750
;
border
:
0
;
color
:
#fff
;
position
:
absolute
;
top
:
0
;
right
:
0
;
height
:
30px
;
width
:
30px
}
.navbar
button
:hover
{
background-color
:
#e42f19
}
.footer
{
padding
:
30px
0
;
background
:
#111
;
margin-top
:
30px
;
color
:
#fff
}
.footer
a
{
color
:
#ff4d3a
;
text-decoration
:
none
}
.icon-up
{
position
:
fixed
;
bottom
:
122px
;
right
:
20px
;
color
:
#fff
;
background-color
:
#111
;
height
:
30px
;
width
:
30px
;
line-height
:
28px
;
border-radius
:
15px
;
cursor
:
pointer
;
display
:
none
}
.post
.rel
a
,
.tags
>
a
.tag
,
aside
.tag.tooltipped
{
display
:
inline-block
;
text-decoration
:
none
}
.icon-up
:hover
{
background-color
:
#ff4d3a
}
aside
.ad
{
background-color
:
#3cbc8d
;
color
:
#fff
;
padding
:
20px
;
margin-bottom
:
20px
;
border
:
1px
solid
transparent
}
aside
.meta
main
{
text-align
:
right
;
line-height
:
20px
}
aside
.meta
img
{
float
:
left
;
height
:
80px
;
width
:
80px
;
border-radius
:
5px
}
aside
.tag.tooltipped
{
padding
:
2px
5px
;
margin-bottom
:
10px
;
border
:
1px
solid
#e1e1e1
;
margin-right
:
10px
;
line-height
:
22px
}
aside
.has-toc
>
ul
>
li
{
list-style
:
none
;
float
:
left
;
width
:
50%
;
margin
:
0
;
cursor
:
pointer
;
line-height
:
18px
;
font-size
:
16px
;
text-align
:
center
;
font-weight
:
400
}
aside
.has-toc
ul
>
li
.current
{
color
:
#ff4d3a
}
.post
.meta
,
.post
sup
{
color
:
#aaa
}
aside
.b3-solo-list
{
font-size
:
14px
}
aside
.has-toc
>
section
:last-child
{
margin-top
:
20px
}
.post
{
border
:
1px
solid
#ededed
;
margin-bottom
:
20px
;
padding
:
20px
}
.post
.meta
,
.post
h1
{
margin-bottom
:
10px
}
.post
h1
a
{
font-size
:
30px
;
font-weight
:
500
;
text-decoration
:
none
}
.post
sup
{
font-weight
:
300
}
.post
.meta
a
{
color
:
#aaa
;
text-decoration
:
none
}
.post
.meta
a
:hover
{
color
:
#ff4d3a
}
.tags
>
a
.tag
{
color
:
#fff
;
font-size
:
12px
;
background-color
:
#bbb
;
margin-right
:
10px
;
padding
:
0
5px
;
line-height
:
22px
;
margin-top
:
10px
}
.tags
>
a
.tag
:before
{
content
:
"#"
}
.tags
>
a
.tag
:hover
{
background
:
#999
}
.post
footer
.copyright
{
padding
:
10px
;
font-size
:
14px
;
line-height
:
16px
;
border
:
1px
solid
#ff4d3a
;
border-left-width
:
20px
;
margin
:
20px
0
}
.post
.rel
a
{
padding
:
5px
14px
;
background-color
:
#fff
;
border
:
1px
solid
#ddd
;
border-radius
:
15px
;
margin
:
20px
0
}
.post
.rel
a
:hover
{
background-color
:
#eee
}
.title
h2
{
font-size
:
16px
;
font-weight
:
700
;
padding-bottom
:
10px
;
border-bottom
:
1px
solid
#f1f1f1
;
margin-top
:
20px
}
.title
>
h2
.tip
{
border-bottom
:
0
}
.comments
>
li
{
list-style
:
none
;
border-bottom
:
1px
solid
#f1f1f1
;
padding
:
10px
}
.comments
>
li
>
div
{
display
:
flex
}
.comments
.avatar
{
width
:
50px
;
height
:
50px
;
border-radius
:
100%
;
margin-right
:
20px
;
background-size
:
contain
}
.comments
main
{
flex
:
1
;
min-width
:
1px
}
.comments
.content-reset
{
margin-top
:
10px
}
.comments
.user-name
{
color
:
#666
;
text-decoration
:
none
}
.comments
.user-name
:hover
{
color
:
#ff4d3a
}
.comments
.reply-btn
{
float
:
right
;
background-color
:
#ff4d3a
;
color
:
#fff
;
text-decoration
:
none
;
font-size
:
12px
;
padding
:
2px
5px
}
.comments
.reply-btn
:hover
{
background-color
:
#e42f19
}
#commentForm
{
margin-top
:
20px
}
.form
.captcha
{
height
:
28px
}
.other
{
border
:
1px
solid
#ededed
;
margin-bottom
:
20px
;
padding
:
0
20px
20px
}
@media
(
max-width
:
900px
){
.navbar
.form
{
display
:
none
}}
@media
(
max-width
:
700px
){
.wrapper
,
aside
{
box-sizing
:
border-box
;
width
:
100%
}
.icon-list
,
.responsive
.list
{
background-color
:
#fff
;
position
:
absolute
}
.wrapper
{
min-width
:
auto
;
padding
:
0
10px
}
.main-wrap
>
main
{
margin-right
:
0
}
.main-wrap
,
.responsive
{
display
:
block
}
.banner
{
margin-bottom
:
20px
}
.banner
.fn-right
,
.banner
small
,
.navbar
{
display
:
none
}
.icon-list
{
right
:
10px
;
top
:
20px
;
font-size
:
20px
;
padding
:
8px
6px
;
cursor
:
pointer
}
.responsive
.list
{
width
:
100%
;
border
:
1px
solid
#eee
;
left
:
0
;
display
:
none
;
z-index
:
10
;
top
:
75px
}
.responsive
.list
li
.current
{
background-color
:
#eee
}}
\ No newline at end of file
\ No newline at end of file
src/main/webapp/skins/9IPHP/skin.properties
View file @
d7a38706
...
@@ -21,6 +21,4 @@
...
@@ -21,6 +21,4 @@
#
#
name
=
9IPHP
name
=
9IPHP
version
=
1.0.0
forSolo
=
2.0.0
memo
=
https://github.com/9IPHP
memo
=
https://github.com/9IPHP
src/main/webapp/skins/mobile/skin.properties
View file @
d7a38706
...
@@ -21,6 +21,4 @@
...
@@ -21,6 +21,4 @@
#
#
name
=
Mobile
name
=
Mobile
version
=
0.1.5
forSolo
=
2.0.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
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/test/java/org/b3log/solo/service/UserMgmtServiceTestCase.java
View file @
d7a38706
...
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
...
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
* {@link UserMgmtService} test case.
* {@link UserMgmtService} test case.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.
2, May 16, 2013
* @version 1.0.0.
3, May 25, 2017
*/
*/
@Test
(
suiteName
=
"service"
)
@Test
(
suiteName
=
"service"
)
public
class
UserMgmtServiceTestCase
extends
AbstractTestCase
{
public
class
UserMgmtServiceTestCase
extends
AbstractTestCase
{
...
@@ -44,7 +44,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
...
@@ -44,7 +44,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
final
JSONObject
requestJSONObject
=
new
JSONObject
();
final
JSONObject
requestJSONObject
=
new
JSONObject
();
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user1
name"
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user1name"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test1@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test1@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass1"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass1"
);
...
@@ -63,7 +63,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
...
@@ -63,7 +63,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
JSONObject
requestJSONObject
=
new
JSONObject
();
JSONObject
requestJSONObject
=
new
JSONObject
();
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2
name"
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2name"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test2@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test2@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass2"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass2"
);
requestJSONObject
.
put
(
User
.
USER_ROLE
,
Role
.
ADMIN_ROLE
);
requestJSONObject
.
put
(
User
.
USER_ROLE
,
Role
.
ADMIN_ROLE
);
...
@@ -72,16 +72,16 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
...
@@ -72,16 +72,16 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
Assert
.
assertNotNull
(
id
);
Assert
.
assertNotNull
(
id
);
requestJSONObject
.
put
(
Keys
.
OBJECT_ID
,
id
);
requestJSONObject
.
put
(
Keys
.
OBJECT_ID
,
id
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2
new
name"
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2
new
name"
);
userMgmtService
.
updateUser
(
requestJSONObject
);
userMgmtService
.
updateUser
(
requestJSONObject
);
Assert
.
assertEquals
(
getUserQueryService
().
getUser
(
id
).
getJSONObject
(
Assert
.
assertEquals
(
getUserQueryService
().
getUser
(
id
).
getJSONObject
(
User
.
USER
).
getString
(
User
.
USER_NAME
),
"user2
new
name"
);
User
.
USER
).
getString
(
User
.
USER_NAME
),
"user2
new
name"
);
// Do not update password
// Do not update password
requestJSONObject
.
put
(
Keys
.
OBJECT_ID
,
id
);
requestJSONObject
.
put
(
Keys
.
OBJECT_ID
,
id
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2
name"
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"user2name"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test2@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test2@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass2"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass2"
);
...
...
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