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
Hide 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 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
<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>
<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>
...
...
pom.xml
View file @
d7a38706
<?xml version="1.0" encoding="UTF-8"?>
<!--
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://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
...
...
@@ -14,9 +14,9 @@
<artifactId>
solo
</artifactId>
<packaging>
war
</packaging>
<name>
Solo
</name>
<version>
2.
0
.0
</version>
<version>
2.
1
.0
</version>
<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>
<inceptionYear>
2010
</inceptionYear>
...
...
src/main/java/org/b3log/solo/SoloServletListener.java
View file @
d7a38706
...
...
@@ -63,7 +63,7 @@ import java.util.concurrent.locks.ReentrantLock;
* Solo Servlet listener.
*
* @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
*/
public
final
class
SoloServletListener
extends
AbstractServletListener
{
...
...
@@ -71,7 +71,7 @@ public final class SoloServletListener extends AbstractServletListener {
/**
* Solo version.
*/
public
static
final
String
VERSION
=
"2.
0
.0"
;
public
static
final
String
VERSION
=
"2.
1
.0"
;
/**
* JSONO print indent factor.
...
...
src/main/java/org/b3log/solo/service/UpgradeService.java
View file @
d7a38706
...
...
@@ -51,7 +51,7 @@ import java.sql.Statement;
*
* @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.1
2, May 2
, 2017
* @version 1.2.0.1
3, May 25
, 2017
* @since 1.2.0
*/
@Service
...
...
@@ -75,7 +75,7 @@ public class UpgradeService {
/**
* Old version.
*/
private
static
final
String
FROM_VER
=
"
1.9
.0"
;
private
static
final
String
FROM_VER
=
"
2.0
.0"
;
/**
* New version.
...
...
@@ -169,39 +169,15 @@ public class UpgradeService {
Transaction
transaction
=
null
;
try
{
final
Connection
connection
=
Connections
.
getConnection
();
final
Statement
statement
=
connection
.
createStatement
();
final
String
tablePrefix
=
Latkes
.
getLocalProperty
(
"jdbc.tablePrefix"
)
+
"_"
;
statement
.
execute
(
"CREATE TABLE `"
+
tablePrefix
+
"category` (\n"
+
" `oId` varchar(19) NOT NULL,\n"
+
" `categoryTitle` varchar(64) NOT NULL,\n"
+
" `categoryURI` varchar(32) NOT NULL,\n"
+
" `categoryDescription` text NOT NULL,\n"
+
" `categoryOrder` int(11) NOT NULL,\n"
+
" `categoryTagCnt` int(11) NOT NULL,\n"
+
" PRIMARY KEY (`oId`)\n"
+
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
);
statement
.
execute
(
"CREATE TABLE `"
+
tablePrefix
+
"category_tag` (\n"
+
" `oId` varchar(19) NOT NULL,\n"
+
" `category_oId` varchar(19) NOT NULL,\n"
+
" `tag_oId` varchar(19) NOT NULL,\n"
+
" PRIMARY KEY (`oId`)\n"
+
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
);
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
);
// 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);
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
();
...
...
@@ -218,6 +194,36 @@ public class UpgradeService {
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
Statement
statement
=
connection
.
createStatement
();
final
String
tablePrefix
=
Latkes
.
getLocalProperty
(
"jdbc.tablePrefix"
)
+
"_"
;
statement
.
execute
(
"CREATE TABLE `"
+
tablePrefix
+
"category` (\n"
+
" `oId` varchar(19) NOT NULL,\n"
+
" `categoryTitle` varchar(64) NOT NULL,\n"
+
" `categoryURI` varchar(32) NOT NULL,\n"
+
" `categoryDescription` text NOT NULL,\n"
+
" `categoryOrder` int(11) NOT NULL,\n"
+
" `categoryTagCnt` int(11) NOT NULL,\n"
+
" PRIMARY KEY (`oId`)\n"
+
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
);
statement
.
execute
(
"CREATE TABLE `"
+
tablePrefix
+
"category_tag` (\n"
+
" `oId` varchar(19) NOT NULL,\n"
+
" `category_oId` varchar(19) NOT NULL,\n"
+
" `tag_oId` varchar(19) NOT NULL,\n"
+
" PRIMARY KEY (`oId`)\n"
+
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
);
statement
.
close
();
connection
.
commit
();
connection
.
close
();
}
/**
* Upgrades users.
* <p>
...
...
src/main/webapp/CHANGE_LOGS.html
View file @
d7a38706
...
...
@@ -5,6 +5,16 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
</head>
<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>
<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>
...
...
src/main/webapp/skins/9IPHP/css/base.min.css
View file @
d7a38706
...
...
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* 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
}}
\ No newline at end of file
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
src/main/webapp/skins/9IPHP/skin.properties
View file @
d7a38706
...
...
@@ -21,6 +21,4 @@
#
name
=
9IPHP
version
=
1.0.0
forSolo
=
2.0.0
memo
=
https://github.com/9IPHP
src/main/webapp/skins/mobile/skin.properties
View file @
d7a38706
...
...
@@ -21,6 +21,4 @@
#
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
src/test/java/org/b3log/solo/service/UserMgmtServiceTestCase.java
View file @
d7a38706
...
...
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
* {@link UserMgmtService} test case.
*
* @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"
)
public
class
UserMgmtServiceTestCase
extends
AbstractTestCase
{
...
...
@@ -44,7 +44,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
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_PASSWORD
,
"pass1"
);
...
...
@@ -63,7 +63,7 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
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_PASSWORD
,
"pass2"
);
requestJSONObject
.
put
(
User
.
USER_ROLE
,
Role
.
ADMIN_ROLE
);
...
...
@@ -72,16 +72,16 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
Assert
.
assertNotNull
(
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
);
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
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_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