Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo
Commits
c900f9b2
Commit
c900f9b2
authored
Dec 02, 2015
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
压缩后的前端文件加入文件头
parent
525d84d9
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
153 additions
and
19 deletions
+153
-19
pom.xml
pom.xml
+1
-3
src/main/webapp/css/default-admin.min.css
src/main/webapp/css/default-admin.min.css
+15
-0
src/main/webapp/css/default-base.min.css
src/main/webapp/css/default-base.min.css
+15
-0
src/main/webapp/css/default-init.min.css
src/main/webapp/css/default-init.min.css
+15
-0
src/main/webapp/js/admin/latkeAdmin.js
src/main/webapp/js/admin/latkeAdmin.js
+16
-15
src/main/webapp/js/admin/latkeAdmin.min.js
src/main/webapp/js/admin/latkeAdmin.min.js
+16
-1
src/main/webapp/js/common.min.js
src/main/webapp/js/common.min.js
+15
-0
src/main/webapp/js/page.min.js
src/main/webapp/js/page.min.js
+15
-0
src/main/webapp/skins/mobile/js/l10n.min.js
src/main/webapp/skins/mobile/js/l10n.min.js
+15
-0
src/main/webapp/skins/yilia/css/yilia.min.css
src/main/webapp/skins/yilia/css/yilia.min.css
+15
-0
src/main/webapp/skins/yilia/js/yilia.min.js
src/main/webapp/skins/yilia/js/yilia.min.js
+15
-0
No files found.
pom.xml
View file @
c900f9b2
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!--
<!--
Description: Solo POM.
Description: Solo POM.
Version: 2.8.1.
8, Nov 29
, 2015
Version: 2.8.1.
9, Dec 2
, 2015
Author: Liang Ding
Author: Liang Ding
-->
-->
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
...
@@ -311,8 +311,6 @@
...
@@ -311,8 +311,6 @@
<excludes>
<excludes>
<exclude>
**/src/main/java/**/package-info.java
</exclude>
<exclude>
**/src/main/java/**/package-info.java
</exclude>
<exclude>
**/src/*/webapp/js/lib/*.js
</exclude>
<exclude>
**/src/*/webapp/js/lib/*.js
</exclude>
<exclude>
**/src/*/webapp/js/**/*.min.js
</exclude>
<exclude>
**/src/*/webapp/css/**/*.min.css
</exclude>
<exclude>
**/src/main/java/com/**/*.java
</exclude>
<exclude>
**/src/main/java/com/**/*.java
</exclude>
</excludes>
</excludes>
...
...
src/main/webapp/css/default-admin.min.css
View file @
c900f9b2
/**
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
body
,
input
,
textarea
{
font-family
:
'sans-serif'
,
'\5fae\8f6f\96c5\9ed1'
}
html
,
body
{
height
:
100%
;
min-width
:
1024px
;
background-color
:
#fafafa
}
a
:link
{
color
:
#21759b
}
a
:visited
{
color
:
#551a8b
}
a
:active
{
color
:
#d54121
}
a
:hover
{
color
:
#d54121
}
button
.selected
{
background
:
url("../images/bowknot/completed.png")
no-repeat
scroll
right
bottom
transparent
;
color
:
#d54121
}
.ico-arrow-down
,
.ico-arrow-up
{
background
:
url("../images/arrows.png")
repeat
scroll
0
4px
transparent
;
float
:
right
;
height
:
20px
;
margin
:
2px
3px
0
0
;
width
:
18px
}
.ico-arrow-up
{
background-position
:
0
-30px
}
.aboutIcon
{
background-position
:
-16px
-48px
}
#allPanel
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
#tabsPanel
{
margin
:
30px
0
0
162px
;
padding
:
0
12px
}
#tabsPanel
>
div
{
padding-bottom
:
36px
}
.tip
{
font-weight
:
bold
;
margin
:
0
auto
;
overflow
:
hidden
;
padding
:
2px
0
;
position
:
fixed
;
text-align
:
center
;
top
:
5px
;
width
:
100%
;
z-index
:
2
}
.tip-msg
{
top
:
33px
}
#tipMsg
,
#loadMsg
{
background-color
:
#e5e7eb
;
border-radius
:
3px
;
padding
:
2px
0
}
.footer
{
bottom
:
12px
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
#top
{
background-color
:
#666
;
background-image
:
linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-ms-linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-o-linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-webkit-linear-gradient
(
#666
,
#7f7f7f
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#666666'
,
endColorstr
=
'#7F7F7F'
)}
#top
a
,
#top
span
span
{
float
:
left
;
line-height
:
18px
;
margin
:
6px
0
;
padding
:
0
6px
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
#fff
;
font-weight
:
normal
;
border-right
:
1px
solid
#686868
;
color
:
#ccc
;
text-shadow
:
0
-1px
0
#555
}
#top
>
a
{
color
:
#fff
}
#top
a
:hover
,
#top
a
.hover
{
border-radius
:
0
13px
13px
0
;
margin
:
0
;
line-height
:
30px
;
background-color
:
#4c4c4c
;
border-left-color
:
#707070
}
#tabs
{
background-color
:
#ececec
;
border-radius
:
0
5px
5px
0
;
border-right
:
1px
solid
#CCC
;
border-top
:
1px
solid
#DDD
;
bottom
:
0
;
box-shadow
:
6px
0
6px
#ececec
;
min-height
:
468px
;
padding
:
15px
0
;
position
:
absolute
;
top
:
58px
;
width
:
145px
}
#tabs
ul
{
list-style
:
none
}
#tabs
li
{
margin-left
:
0
}
#tabs
a
,
#tabs
>
ul
>
li
>
div
{
color
:
#21759b
;
display
:
block
;
text-decoration
:
none
;
cursor
:
pointer
;
letter-spacing
:
1px
}
#tabs
a
:hover
,
#tabs
>
ul
>
li
>
div
:hover
{
color
:
#d54121
}
#tabs
>
ul
>
li
>
div
{
border-bottom
:
1px
solid
#dfdfdf
;
border-top
:
1px
solid
#f9f9f9
;
font-weight
:
bold
;
padding-left
:
12px
;
line-height
:
30px
;
height
:
30px
}
#tabs
>
ul
>
li
>
div
>
a
.tab-current
{
background-color
:
#777
;
border-bottom
:
1px
solid
#6d6d6d
;
border-top
:
1px
solid
#808080
;
color
:
#fff
;
margin-left
:
-12px
;
padding-left
:
12px
;
text-shadow
:
0
-1px
0
#333
}
#tabs
li
li
a
{
background-color
:
#fff
;
padding-left
:
36px
;
line-height
:
28px
;
height
:
28px
}
#tabs
.tab-current
{
background-color
:
#eaf2fa
;
color
:
#333
;
font-weight
:
bold
}
#tabs
li
li
a
:hover
{
background-color
:
#eaf2fa
;
color
:
#333
}
#tabs
.commentIcon
,
#tabs
.postIcon
,
#tabs
.preferenceIcon
,
#tabs
.usersIcon
,
#tabs
.aboutIcon
{
margin
:
6px
9px
0
0
}
.sub-tabs
{
height
:
30px
}
.sub-tabs
ul
{
float
:
right
;
list-style
:
none
outside
none
;
margin-right
:
24px
}
.sub-tabs
li
{
float
:
left
}
.sub-tabs
li
a
{
background-color
:
#ececec
;
border
:
1px
solid
#dfdfdf
;
border-bottom
:
0
;
border-radius
:
5px
5px
0
0
;
color
:
#333
;
display
:
block
;
line-height
:
29px
;
padding
:
0
12px
;
text-decoration
:
none
}
.sub-tabs
.tab-current
,
.sub-tabs
.tab-current
:hover
{
background-color
:
#fff
;
font-weight
:
bold
;
line-height
:
30px
}
.sub-tabs
a
:hover
{
background-color
:
#f5f5f5
}
.sub-tabs-main
{
background-color
:
#fff
;
border
:
1px
solid
#dfdfdf
;
padding
:
12px
;
border-radius
:
6px
}
.form
>
div
{
margin
:
12px
0
}
.form
>
div
label
{
font-weight
:
bold
;
line-height
:
28px
;
margin-right
:
12px
}
.module-panel
{
border
:
1px
solid
#dfdfdf
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
0
#fff
inset
;
background-color
:
#f5f5f5
;
margin-bottom
:
36px
;
min-height
:
160px
}
.module-header
{
background-color
:
#f9f9f9
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-ms-linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-o-linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-webkit-linear-gradient
(
#f9f9f9
,
#ececec
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#f9f9f9'
,
endColorstr
=
'#ececec'
);
border-bottom-color
:
#dfdfdf
;
box-shadow
:
0
1px
0
#fff
;
text-shadow
:
0
1px
0
#fff
;
padding
:
5px
10px
}
.module-header
h2
{
color
:
#464646
;
font-size
:
16px
}
.module-header
a
{
text-decoration
:
none
}
.comment-title
{
background-color
:
#ececec
;
border-bottom
:
1px
solid
#dfdfdf
;
border-top
:
1px
solid
#f9f9f9
;
padding
:
3px
6px
3px
12px
}
#comments
{
height
:
462px
;
overflow
:
auto
}
.markdown-preivew
{
background-color
:
#fff
;
background-image
:
linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-ms-linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-o-linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-webkit-linear-gradient
(
#fff
,
#f3f3f3
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#FFFFFF'
,
endColorstr
=
'#F3F3F3'
);
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-style
:
solid
;
border-width
:
1px
;
float
:
left
;
height
:
500px
;
margin-left
:
20px
;
overflow
:
auto
;
width
:
47%
;
word-wrap
:
break-word
}
.markdown-help.ico-help
,
.markdown-help.ico-close
{
background-image
:
url("../images/icon.png")
;
background-position
:
-16px
-47px
;
cursor
:
pointer
;
float
:
right
;
height
:
17px
;
width
:
17px
}
.markdown-help.ico-close
{
height
:
16px
;
background-position
:
-48px
-16px
}
.markdown-help-main
,
.markdown-preview-main
{
color
:
#21759b
;
padding
:
0
12px
}
.markdown-help-main
dt
{
font-size
:
14px
;
font-weight
:
bold
;
margin
:
12px
0
6px
0
}
.markdown-help-main
dd
{
margin-left
:
12px
}
button
#submitArticle
{
background
:
none
repeat
scroll
0
0
#d54121
;
box-shadow
:
0
0
0
1px
#fff
inset
,
0
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
text-shadow
:
0
1px
rgba
(
0
,
0
,
0
,
0.1
);
color
:
#FFF
}
#skinsPanel
{
min-width
:
328px
;
width
:
99%
}
.skinPreview
{
cursor
:
pointer
;
height
:
160px
;
margin
:
6px
;
width
:
280px
}
.skinItem
{
background-color
:
#fafafa
;
border-radius
:
3px
;
box-shadow
:
1px
1px
3px
#333
;
line-height
:
16px
;
margin
:
24px
12px
;
padding
:
5px
;
text-align
:
center
}
#skinMain
.skinItem.selected
{
background-color
:
#d54121
}
.skinItem
:hover
{
background-color
:
#EEE
}
.f-blue
,
.error-msg
{
color
:
#36c
}
.signs
button
{
margin
:
0
12px
}
.small-head
{
float
:
left
;
height
:
35px
;
margin
:
3px
9px
0
3px
;
width
:
35px
}
#commentTable
.table-main
td
{
vertical-align
:
top
}
.about-logo
{
float
:
left
;
margin
:
62px
36px
62px
24px
}
.about-margin
{
font-size
:
20px
;
margin
:
20px
0
}
.ico-alipay-me
{
background-image
:
url("../images/alipay-me.png")
;
font-size
:
20px
;
height
:
24px
;
margin
:
20px
0
;
width
:
126px
}
.completed-input
{
margin
:
2px
12px
0
0
}
.completed-panel
{
background-color
:
#ececec
;
border
:
1px
solid
#ccc
;
color
:
#00c
;
display
:
none
;
overflow
:
auto
;
padding
:
2px
;
position
:
absolute
;
z-index
:
10
}
.completed-panel
a
{
display
:
block
;
text-decoration
:
none
}
.completed-panel
a
.selected
{
background-color
:
#fff
;
color
:
#d54121
}
.completed-ck
{
margin-top
:
9px
}
.completed-ck
span
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
color
:
#21759b
;
cursor
:
pointer
;
float
:
left
;
height
:
28px
;
line-height
:
26px
;
margin
:
3px
6px
;
padding
:
0
6px
;
vertical-align
:
top
}
.completed-ck
span
:hover
{
border-color
:
#BBB
}
.completed-ck
span
.selected
{
color
:
#d54121
;
background
:
url(../images/bowknot/completed.png)
no-repeat
right
bottom
}
.dialog-background
{
background-color
:
#000
;
display
:
none
;
filter
:
alpha
(
opacity
=
30
);
height
:
100%
;
left
:
0
;
opacity
:
.3
;
position
:
absolute
;
top
:
0
;
width
:
100%
;
z-index
:
90
}
.dialog-panel
{
display
:
none
;
position
:
absolute
;
z-index
:
100
}
.dialog-title
{
color
:
#fff
;
float
:
left
;
font-size
:
12px
;
line-height
:
27px
;
margin-left
:
3px
}
.dialog-header-bg
{
background
:
url("../images/icon.png")
repeat
scroll
center
bottom
#f1f1f1
;
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-radius
:
6px
6px
0
0
;
border-style
:
solid
;
border-width
:
1px
1px
0
;
cursor
:
move
;
height
:
34px
}
.dialog-close-icon
{
background
:
url("../images/bowknot/dialog-close.png")
no-repeat
scroll
0
0
transparent
;
cursor
:
pointer
;
float
:
right
;
height
:
18px
;
margin-top
:
6px
;
padding
:
3px
;
width
:
22px
}
.dialog-close-icon
:hover
{
background-image
:
url("../images/bowknot/dialog-close-hover.png")
}
.dialog-main
{
background-color
:
#fff
;
border
:
2px
solid
#666
;
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-top-width
:
0
;
padding
:
12px
}
.paginate-paginate
div
,
.paginate-paginate
a
,
.paginate-pageCount
{
float
:
left
;
height
:
20px
;
line-height
:
20px
;
margin
:
0
5px
;
text-decoration
:
none
}
.pagination-pages
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
padding
:
0
6px
;
cursor
:
pointer
;
float
:
left
;
height
:
20px
;
line-height
:
20px
;
margin
:
0
5px
}
.pagination-current-page
{
cursor
:
auto
;
font-weight
:
bold
;
border-color
:
#BBB
}
.paginate-inputPage
{
height
:
14px
;
width
:
24px
}
.table-main
{
margin
:
0
;
padding
:
0
;
position
:
relative
}
.table-main
table
{
word-break
:
break-all
;
word-wrap
:
break-word
}
.table-header
{
border
:
1px
solid
#d0d0d0
;
border-bottom
:
0
;
border-radius
:
6px
6px
0
0
}
.table-header
th
{
height
:
34px
;
line-height
:
34px
;
text-align
:
left
;
text-indent
:
6px
;
font-size
:
14px
;
font-weight
:
normal
;
background
:
url("../images/icon.png")
repeat
scroll
center
bottom
#f1f1f1
}
.table-main
td
{
border-bottom
:
1px
solid
#d0d0d0
;
color
:
#333
;
padding
:
3px
0
}
.table-lineHover
.table-hasExpend
td
{
border-bottom
:
0
}
.table-heiglight
td
,
.table-lineHover
td
{
background-color
:
#f3f3f3
;
border-right-color
:
#f3f3f3
}
.table-expendRow
td
{
padding
:
0
0
5px
36px
}
.table-expendRow
td
span
{
margin-left
:
60px
}
.table-expendRow
td
a
{
background-color
:
#999
;
border-radius
:
3px
;
color
:
#FFF
;
font-size
:
12px
;
margin-right
:
5px
;
padding
:
1px
6px
;
text-decoration
:
none
}
.table-expendRow
td
a
:hover
{
background-color
:
#BBB
}
.table-center
{
margin
:
0
auto
}
.table-upIcon
,
.table-downIcon
{
background-image
:
url("../images/icon.png")
;
cursor
:
pointer
;
float
:
left
;
height
:
16px
;
width
:
16px
;
background-position
:
-81px
-32px
}
.table-upIcon
{
background-position
:
-64px
-32px
;
margin-right
:
6px
}
.table-tag
{
color
:
#d54121
;
font-size
:
12px
;
font-style
:
italic
;
margin-left
:
10px
}
.tip-panel
{
background-color
:
#FFF
;
box-shadow
:
0
3px
10px
#8b8b8b
;
display
:
none
;
max-height
:
500px
;
max-width
:
500px
;
overflow
:
hidden
;
padding
:
3px
;
position
:
absolute
;
z-index
:
1
}
body
,
input
,
textarea
{
font-family
:
'sans-serif'
,
'\5fae\8f6f\96c5\9ed1'
}
html
,
body
{
height
:
100%
;
min-width
:
1024px
;
background-color
:
#fafafa
}
a
:link
{
color
:
#21759b
}
a
:visited
{
color
:
#551a8b
}
a
:active
{
color
:
#d54121
}
a
:hover
{
color
:
#d54121
}
button
.selected
{
background
:
url("../images/bowknot/completed.png")
no-repeat
scroll
right
bottom
transparent
;
color
:
#d54121
}
.ico-arrow-down
,
.ico-arrow-up
{
background
:
url("../images/arrows.png")
repeat
scroll
0
4px
transparent
;
float
:
right
;
height
:
20px
;
margin
:
2px
3px
0
0
;
width
:
18px
}
.ico-arrow-up
{
background-position
:
0
-30px
}
.aboutIcon
{
background-position
:
-16px
-48px
}
#allPanel
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
#tabsPanel
{
margin
:
30px
0
0
162px
;
padding
:
0
12px
}
#tabsPanel
>
div
{
padding-bottom
:
36px
}
.tip
{
font-weight
:
bold
;
margin
:
0
auto
;
overflow
:
hidden
;
padding
:
2px
0
;
position
:
fixed
;
text-align
:
center
;
top
:
5px
;
width
:
100%
;
z-index
:
2
}
.tip-msg
{
top
:
33px
}
#tipMsg
,
#loadMsg
{
background-color
:
#e5e7eb
;
border-radius
:
3px
;
padding
:
2px
0
}
.footer
{
bottom
:
12px
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
#top
{
background-color
:
#666
;
background-image
:
linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-ms-linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-o-linear-gradient
(
#666
,
#7f7f7f
);
background-image
:
-webkit-linear-gradient
(
#666
,
#7f7f7f
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#666666'
,
endColorstr
=
'#7F7F7F'
)}
#top
a
,
#top
span
span
{
float
:
left
;
line-height
:
18px
;
margin
:
6px
0
;
padding
:
0
6px
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
#fff
;
font-weight
:
normal
;
border-right
:
1px
solid
#686868
;
color
:
#ccc
;
text-shadow
:
0
-1px
0
#555
}
#top
>
a
{
color
:
#fff
}
#top
a
:hover
,
#top
a
.hover
{
border-radius
:
0
13px
13px
0
;
margin
:
0
;
line-height
:
30px
;
background-color
:
#4c4c4c
;
border-left-color
:
#707070
}
#tabs
{
background-color
:
#ececec
;
border-radius
:
0
5px
5px
0
;
border-right
:
1px
solid
#CCC
;
border-top
:
1px
solid
#DDD
;
bottom
:
0
;
box-shadow
:
6px
0
6px
#ececec
;
min-height
:
468px
;
padding
:
15px
0
;
position
:
absolute
;
top
:
58px
;
width
:
145px
}
#tabs
ul
{
list-style
:
none
}
#tabs
li
{
margin-left
:
0
}
#tabs
a
,
#tabs
>
ul
>
li
>
div
{
color
:
#21759b
;
display
:
block
;
text-decoration
:
none
;
cursor
:
pointer
;
letter-spacing
:
1px
}
#tabs
a
:hover
,
#tabs
>
ul
>
li
>
div
:hover
{
color
:
#d54121
}
#tabs
>
ul
>
li
>
div
{
border-bottom
:
1px
solid
#dfdfdf
;
border-top
:
1px
solid
#f9f9f9
;
font-weight
:
bold
;
padding-left
:
12px
;
line-height
:
30px
;
height
:
30px
}
#tabs
>
ul
>
li
>
div
>
a
.tab-current
{
background-color
:
#777
;
border-bottom
:
1px
solid
#6d6d6d
;
border-top
:
1px
solid
#808080
;
color
:
#fff
;
margin-left
:
-12px
;
padding-left
:
12px
;
text-shadow
:
0
-1px
0
#333
}
#tabs
li
li
a
{
background-color
:
#fff
;
padding-left
:
36px
;
line-height
:
28px
;
height
:
28px
}
#tabs
.tab-current
{
background-color
:
#eaf2fa
;
color
:
#333
;
font-weight
:
bold
}
#tabs
li
li
a
:hover
{
background-color
:
#eaf2fa
;
color
:
#333
}
#tabs
.commentIcon
,
#tabs
.postIcon
,
#tabs
.preferenceIcon
,
#tabs
.usersIcon
,
#tabs
.aboutIcon
{
margin
:
6px
9px
0
0
}
.sub-tabs
{
height
:
30px
}
.sub-tabs
ul
{
float
:
right
;
list-style
:
none
outside
none
;
margin-right
:
24px
}
.sub-tabs
li
{
float
:
left
}
.sub-tabs
li
a
{
background-color
:
#ececec
;
border
:
1px
solid
#dfdfdf
;
border-bottom
:
0
;
border-radius
:
5px
5px
0
0
;
color
:
#333
;
display
:
block
;
line-height
:
29px
;
padding
:
0
12px
;
text-decoration
:
none
}
.sub-tabs
.tab-current
,
.sub-tabs
.tab-current
:hover
{
background-color
:
#fff
;
font-weight
:
bold
;
line-height
:
30px
}
.sub-tabs
a
:hover
{
background-color
:
#f5f5f5
}
.sub-tabs-main
{
background-color
:
#fff
;
border
:
1px
solid
#dfdfdf
;
padding
:
12px
;
border-radius
:
6px
}
.form
>
div
{
margin
:
12px
0
}
.form
>
div
label
{
font-weight
:
bold
;
line-height
:
28px
;
margin-right
:
12px
}
.module-panel
{
border
:
1px
solid
#dfdfdf
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
0
#fff
inset
;
background-color
:
#f5f5f5
;
margin-bottom
:
36px
;
min-height
:
160px
}
.module-header
{
background-color
:
#f9f9f9
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-ms-linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-o-linear-gradient
(
#f9f9f9
,
#ececec
);
background-image
:
-webkit-linear-gradient
(
#f9f9f9
,
#ececec
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#f9f9f9'
,
endColorstr
=
'#ececec'
);
border-bottom-color
:
#dfdfdf
;
box-shadow
:
0
1px
0
#fff
;
text-shadow
:
0
1px
0
#fff
;
padding
:
5px
10px
}
.module-header
h2
{
color
:
#464646
;
font-size
:
16px
}
.module-header
a
{
text-decoration
:
none
}
.comment-title
{
background-color
:
#ececec
;
border-bottom
:
1px
solid
#dfdfdf
;
border-top
:
1px
solid
#f9f9f9
;
padding
:
3px
6px
3px
12px
}
#comments
{
height
:
462px
;
overflow
:
auto
}
.markdown-preivew
{
background-color
:
#fff
;
background-image
:
linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-ms-linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-o-linear-gradient
(
#fff
,
#f3f3f3
);
background-image
:
-webkit-linear-gradient
(
#fff
,
#f3f3f3
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
GradientType
=
0
,
startColorstr
=
'#FFFFFF'
,
endColorstr
=
'#F3F3F3'
);
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-style
:
solid
;
border-width
:
1px
;
float
:
left
;
height
:
500px
;
margin-left
:
20px
;
overflow
:
auto
;
width
:
47%
;
word-wrap
:
break-word
}
.markdown-help.ico-help
,
.markdown-help.ico-close
{
background-image
:
url("../images/icon.png")
;
background-position
:
-16px
-47px
;
cursor
:
pointer
;
float
:
right
;
height
:
17px
;
width
:
17px
}
.markdown-help.ico-close
{
height
:
16px
;
background-position
:
-48px
-16px
}
.markdown-help-main
,
.markdown-preview-main
{
color
:
#21759b
;
padding
:
0
12px
}
.markdown-help-main
dt
{
font-size
:
14px
;
font-weight
:
bold
;
margin
:
12px
0
6px
0
}
.markdown-help-main
dd
{
margin-left
:
12px
}
button
#submitArticle
{
background
:
none
repeat
scroll
0
0
#d54121
;
box-shadow
:
0
0
0
1px
#fff
inset
,
0
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
text-shadow
:
0
1px
rgba
(
0
,
0
,
0
,
0.1
);
color
:
#FFF
}
#skinsPanel
{
min-width
:
328px
;
width
:
99%
}
.skinPreview
{
cursor
:
pointer
;
height
:
160px
;
margin
:
6px
;
width
:
280px
}
.skinItem
{
background-color
:
#fafafa
;
border-radius
:
3px
;
box-shadow
:
1px
1px
3px
#333
;
line-height
:
16px
;
margin
:
24px
12px
;
padding
:
5px
;
text-align
:
center
}
#skinMain
.skinItem.selected
{
background-color
:
#d54121
}
.skinItem
:hover
{
background-color
:
#EEE
}
.f-blue
,
.error-msg
{
color
:
#36c
}
.signs
button
{
margin
:
0
12px
}
.small-head
{
float
:
left
;
height
:
35px
;
margin
:
3px
9px
0
3px
;
width
:
35px
}
#commentTable
.table-main
td
{
vertical-align
:
top
}
.about-logo
{
float
:
left
;
margin
:
62px
36px
62px
24px
}
.about-margin
{
font-size
:
20px
;
margin
:
20px
0
}
.ico-alipay-me
{
background-image
:
url("../images/alipay-me.png")
;
font-size
:
20px
;
height
:
24px
;
margin
:
20px
0
;
width
:
126px
}
.completed-input
{
margin
:
2px
12px
0
0
}
.completed-panel
{
background-color
:
#ececec
;
border
:
1px
solid
#ccc
;
color
:
#00c
;
display
:
none
;
overflow
:
auto
;
padding
:
2px
;
position
:
absolute
;
z-index
:
10
}
.completed-panel
a
{
display
:
block
;
text-decoration
:
none
}
.completed-panel
a
.selected
{
background-color
:
#fff
;
color
:
#d54121
}
.completed-ck
{
margin-top
:
9px
}
.completed-ck
span
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
color
:
#21759b
;
cursor
:
pointer
;
float
:
left
;
height
:
28px
;
line-height
:
26px
;
margin
:
3px
6px
;
padding
:
0
6px
;
vertical-align
:
top
}
.completed-ck
span
:hover
{
border-color
:
#BBB
}
.completed-ck
span
.selected
{
color
:
#d54121
;
background
:
url(../images/bowknot/completed.png)
no-repeat
right
bottom
}
.dialog-background
{
background-color
:
#000
;
display
:
none
;
filter
:
alpha
(
opacity
=
30
);
height
:
100%
;
left
:
0
;
opacity
:
.3
;
position
:
absolute
;
top
:
0
;
width
:
100%
;
z-index
:
90
}
.dialog-panel
{
display
:
none
;
position
:
absolute
;
z-index
:
100
}
.dialog-title
{
color
:
#fff
;
float
:
left
;
font-size
:
12px
;
line-height
:
27px
;
margin-left
:
3px
}
.dialog-header-bg
{
background
:
url("../images/icon.png")
repeat
scroll
center
bottom
#f1f1f1
;
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-radius
:
6px
6px
0
0
;
border-style
:
solid
;
border-width
:
1px
1px
0
;
cursor
:
move
;
height
:
34px
}
.dialog-close-icon
{
background
:
url("../images/bowknot/dialog-close.png")
no-repeat
scroll
0
0
transparent
;
cursor
:
pointer
;
float
:
right
;
height
:
18px
;
margin-top
:
6px
;
padding
:
3px
;
width
:
22px
}
.dialog-close-icon
:hover
{
background-image
:
url("../images/bowknot/dialog-close-hover.png")
}
.dialog-main
{
background-color
:
#fff
;
border
:
2px
solid
#666
;
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-top-width
:
0
;
padding
:
12px
}
.paginate-paginate
div
,
.paginate-paginate
a
,
.paginate-pageCount
{
float
:
left
;
height
:
20px
;
line-height
:
20px
;
margin
:
0
5px
;
text-decoration
:
none
}
.pagination-pages
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
padding
:
0
6px
;
cursor
:
pointer
;
float
:
left
;
height
:
20px
;
line-height
:
20px
;
margin
:
0
5px
}
.pagination-current-page
{
cursor
:
auto
;
font-weight
:
bold
;
border-color
:
#BBB
}
.paginate-inputPage
{
height
:
14px
;
width
:
24px
}
.table-main
{
margin
:
0
;
padding
:
0
;
position
:
relative
}
.table-main
table
{
word-break
:
break-all
;
word-wrap
:
break-word
}
.table-header
{
border
:
1px
solid
#d0d0d0
;
border-bottom
:
0
;
border-radius
:
6px
6px
0
0
}
.table-header
th
{
height
:
34px
;
line-height
:
34px
;
text-align
:
left
;
text-indent
:
6px
;
font-size
:
14px
;
font-weight
:
normal
;
background
:
url("../images/icon.png")
repeat
scroll
center
bottom
#f1f1f1
}
.table-main
td
{
border-bottom
:
1px
solid
#d0d0d0
;
color
:
#333
;
padding
:
3px
0
}
.table-lineHover
.table-hasExpend
td
{
border-bottom
:
0
}
.table-heiglight
td
,
.table-lineHover
td
{
background-color
:
#f3f3f3
;
border-right-color
:
#f3f3f3
}
.table-expendRow
td
{
padding
:
0
0
5px
36px
}
.table-expendRow
td
span
{
margin-left
:
60px
}
.table-expendRow
td
a
{
background-color
:
#999
;
border-radius
:
3px
;
color
:
#FFF
;
font-size
:
12px
;
margin-right
:
5px
;
padding
:
1px
6px
;
text-decoration
:
none
}
.table-expendRow
td
a
:hover
{
background-color
:
#BBB
}
.table-center
{
margin
:
0
auto
}
.table-upIcon
,
.table-downIcon
{
background-image
:
url("../images/icon.png")
;
cursor
:
pointer
;
float
:
left
;
height
:
16px
;
width
:
16px
;
background-position
:
-81px
-32px
}
.table-upIcon
{
background-position
:
-64px
-32px
;
margin-right
:
6px
}
.table-tag
{
color
:
#d54121
;
font-size
:
12px
;
font-style
:
italic
;
margin-left
:
10px
}
.tip-panel
{
background-color
:
#FFF
;
box-shadow
:
0
3px
10px
#8b8b8b
;
display
:
none
;
max-height
:
500px
;
max-width
:
500px
;
overflow
:
hidden
;
padding
:
3px
;
position
:
absolute
;
z-index
:
1
}
\ No newline at end of file
src/main/webapp/css/default-base.min.css
View file @
c900f9b2
/**
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
html
,
body
,
div
,
ul
,
li
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
p
,
dd
,
dl
,
ol
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#FFF
;
color
:
#000
;
font-family
:
elvetica
,
Arial
,
'sans-serif'
,
'\5fae\8f6f\96c5\9ed1'
;
font-size
:
small
}
img
{
border
:
medium
none
;
margin
:
0
;
padding
:
0
;
vertical-align
:
middle
}
h1
{
font-size
:
160%
}
h2
{
font-size
:
140%
}
h3
{
font-size
:
120%
}
h4
{
font-size
:
110%
}
textarea
{
overflow
:
auto
}
li
{
margin-left
:
12px
}
button
,
.button
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
height
:
28px
;
margin
:
0
;
padding
:
0
6px
;
vertical-align
:
top
}
button
:hover
,
.button
:hover
{
border-color
:
#BBB
}
.padding12
{
padding
:
12px
}
.paddingBottom12
{
padding-bottom
:
12px
!important
}
.paddingTop12
{
padding-top
:
12px
!important
}
.margin12
{
margin
:
12px
}
.marginTop12
{
margin-top
:
12px
!important
}
.marginBottom12
{
margin-bottom
:
12px
!important
}
.marginLeft12
{
margin-left
:
12px
!important
}
.marginLeft6
{
margin-left
:
6px
!important
}
.marginRight12
{
margin-right
:
12px
!important
}
.f-bold
{
font-weight
:
bold
!important
}
.nowrap
{
white-space
:
nowrap
}
.left
{
float
:
left
}
.right
{
float
:
right
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.pointer
{
cursor
:
pointer
}
.no-underline
{
text-decoration
:
none
!important
}
.red
{
color
:
red
}
.contentBody
{
margin-bottom
:
12px
;
padding
:
3px
12px
}
.form
th
{
text-align
:
right
;
white-space
:
nowrap
}
.form
input
[
type
=
'text'
],
.form
input
[
type
=
'password'
],
.form
textarea
{
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-right
:
1px
solid
#d9d9d9
;
border-style
:
solid
;
border-width
:
1px
;
font-family
:
Helvetica
,
Arial
,
sans-serif
;
font-size
:
12px
;
outline
:
medium
none
;
width
:
99%
;
padding
:
0
3px
}
.form
input
{
height
:
24px
}
.form
input
[
type
=
'checkbox'
]
{
border
:
0
;
vertical-align
:
middle
}
.form
input
.normalInput
{
width
:
auto
}
.form
input
[
type
=
'checkbox'
]
:focus
{
border
:
0
}
.form
input
:focus
,
.form
textarea
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.3
)
inset
}
.form
textarea
{
padding
:
3px
;
overflow
:
auto
;
resize
:
vertical
}
.logo
{
padding
:
0
5px
;
text-decoration
:
none
;
text-shadow
:
0
0
1px
#eee
}
.putTopIcon
,
.notPutTopIcon
,
.deleteIcon
,
.updateIcon
,
.commentIcon
,
.homeIcon
,
.adminIcon
,
.loginIcon
,
.logoutIcon
,
.calendarIcon
,
.browserIcon
,
.postIcon
,
.articlesIcon
,
.draftsIcon
,
.usersIcon
,
.linkIcon
,
.preferenceIcon
,
.pageIcon
,
.trueIcon
,
.falseIcon
,
.fileIcon
,
.othersIcon
,
.goTopIcon
,
.goBottomIcon
,
.cacheIcon
,
.aboutIcon
{
background-image
:
url("../images/icon.png")
;
cursor
:
pointer
;
height
:
16px
;
width
:
16px
}
.adminIcon
,
.loginIcon
,
.logoutIcon
,
.homeIcon
{
margin-top
:
3px
}
.pageIcon
{
background-position
:
-144px
0
}
.postIcon
{
background-position
:
-16px
0
}
.linkIcon
{
background-position
:
-32px
0
}
.preferenceIcon
{
background-position
:
-48px
0
}
.articlesIcon
{
background-position
:
-64px
0
}
.trueIcon
{
background-position
:
-80px
0
;
cursor
:
auto
}
.falseIcon
{
background-position
:
-96px
0
;
cursor
:
auto
}
.fileIcon
{
background-position
:
-112px
0
}
.deleteIcon
{
background-position
:
0
-16px
}
.updateIcon
{
background-position
:
-16px
-16px
}
.commentIcon
{
background-position
:
-32px
-16px
}
.homeIcon
{
background-position
:
-64px
-16px
}
.adminIcon
{
background-position
:
-80px
-16px
}
.logoutIcon
{
background-position
:
-96px
-16px
}
.loginIcon
{
background-position
:
-112px
-16px
}
.browserIcon
{
background-position
:
-128px
-16px
}
.calendarIcon
{
background-position
:
-144px
-16px
}
.putTopIcon
{
background-position
:
-16px
-32px
;
float
:
left
}
.notPutTopIcon
{
background-position
:
-32px
-32px
;
float
:
left
}
.othersIcon
{
background-position
:
-48px
-32px
}
.cacheIcon
{
background-position
:
-96px
-32px
}
.draftsIcon
{
background-position
:
-96px
-32px
}
.usersIcon
{
background-position
:
-112px
-32px
}
.goTopIcon
{
background-position
:
-64px
-32px
;
position
:
fixed
;
right
:
20px
;
top
:
45%
}
.goBottomIcon
{
background-position
:
-80px
-32px
;
bottom
:
40%
;
position
:
fixed
;
right
:
20px
}
.article-body
{
overflow
:
hidden
;
line-height
:
145%
;
word-wrap
:
break-word
}
.article-body
blockquote
{
border
:
1px
dotted
#98a47f
;
font-style
:
italic
;
margin
:
12px
;
padding
:
12px
}
.article-body
h1
{
font-size
:
2em
;
margin
:
.67em
0
}
.article-body
h2
{
font-size
:
1.5em
;
margin
:
.75em
0
}
.article-body
h3
{
font-size
:
1.17em
;
margin
:
.83em
0
}
.article-body
h4
,
.article-body
p
,
.article-body
blockquote
,
.article-body
ul
,
.article-body
fieldset
,
.article-body
form
,
.article-body
ol
,
.article-body
dl
,
.article-body
dir
,
.article-body
menu
{
margin
:
1.12em
0
}
.article-body
h5
{
font-size
:
.83em
;
margin
:
1.5em
0
}
.article-body
h6
{
font-size
:
.75em
;
margin
:
1.67em
0
}
.article-body
blockquote
{
margin-left
:
40px
;
margin-right
:
40px
}
.article-body
ol
,
.article-body
ul
,
.article-body
dir
,
.article-body
menu
,
.article-body
dd
{
margin-left
:
40px
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
background-image
:
url("../images/emotions/classic/emotions-classic.png")
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
}
#emotions
span
{
cursor
:
pointer
}
.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
}
#tags
{
list-style
:
none
}
#tags
li
{
float
:
left
;
list-style
:
none
;
height
:
38px
}
#tags
a
:hover
{
text-shadow
:
0
0
2px
#555
}
#tags
a
{
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
1px
1px
3px
#555
;
float
:
left
;
margin
:
3px
6px
;
padding
:
3px
12px
;
text-decoration
:
none
}
#tags
.tags1
{
font-size
:
12px
;
font-weight
:
normal
}
#tags
.tags2
{
font-size
:
14px
;
font-weight
:
normal
}
#tags
.tags3
{
font-size
:
16px
;
font-weight
:
normal
}
#tags
.tags4
{
font-size
:
18px
;
font-weight
:
bold
}
#tags
.tags5
{
font-size
:
20px
;
font-weight
:
bold
}
#captcha
,
#captchaReply
{
cursor
:
pointer
}
html
,
body
,
div
,
ul
,
li
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
p
,
dd
,
dl
,
ol
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#FFF
;
color
:
#000
;
font-family
:
elvetica
,
Arial
,
'sans-serif'
,
'\5fae\8f6f\96c5\9ed1'
;
font-size
:
small
}
img
{
border
:
medium
none
;
margin
:
0
;
padding
:
0
;
vertical-align
:
middle
}
h1
{
font-size
:
160%
}
h2
{
font-size
:
140%
}
h3
{
font-size
:
120%
}
h4
{
font-size
:
110%
}
textarea
{
overflow
:
auto
}
li
{
margin-left
:
12px
}
button
,
.button
{
background
:
url(../images/icon.png)
repeat
center
bottom
;
border
:
1px
solid
;
border-color
:
#CCc
#bbb
#A0A0A0
;
border-radius
:
4px
;
height
:
28px
;
margin
:
0
;
padding
:
0
6px
;
vertical-align
:
top
}
button
:hover
,
.button
:hover
{
border-color
:
#BBB
}
.padding12
{
padding
:
12px
}
.paddingBottom12
{
padding-bottom
:
12px
!important
}
.paddingTop12
{
padding-top
:
12px
!important
}
.margin12
{
margin
:
12px
}
.marginTop12
{
margin-top
:
12px
!important
}
.marginBottom12
{
margin-bottom
:
12px
!important
}
.marginLeft12
{
margin-left
:
12px
!important
}
.marginLeft6
{
margin-left
:
6px
!important
}
.marginRight12
{
margin-right
:
12px
!important
}
.f-bold
{
font-weight
:
bold
!important
}
.nowrap
{
white-space
:
nowrap
}
.left
{
float
:
left
}
.right
{
float
:
right
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.pointer
{
cursor
:
pointer
}
.no-underline
{
text-decoration
:
none
!important
}
.red
{
color
:
red
}
.contentBody
{
margin-bottom
:
12px
;
padding
:
3px
12px
}
.form
th
{
text-align
:
right
;
white-space
:
nowrap
}
.form
input
[
type
=
'text'
],
.form
input
[
type
=
'password'
],
.form
textarea
{
border-color
:
#c0c0c0
#D9D9D9
#d9d9d9
;
border-right
:
1px
solid
#d9d9d9
;
border-style
:
solid
;
border-width
:
1px
;
font-family
:
Helvetica
,
Arial
,
sans-serif
;
font-size
:
12px
;
outline
:
medium
none
;
width
:
99%
;
padding
:
0
3px
}
.form
input
{
height
:
24px
}
.form
input
[
type
=
'checkbox'
]
{
border
:
0
;
vertical-align
:
middle
}
.form
input
.normalInput
{
width
:
auto
}
.form
input
[
type
=
'checkbox'
]
:focus
{
border
:
0
}
.form
input
:focus
,
.form
textarea
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.3
)
inset
}
.form
textarea
{
padding
:
3px
;
overflow
:
auto
;
resize
:
vertical
}
.logo
{
padding
:
0
5px
;
text-decoration
:
none
;
text-shadow
:
0
0
1px
#eee
}
.putTopIcon
,
.notPutTopIcon
,
.deleteIcon
,
.updateIcon
,
.commentIcon
,
.homeIcon
,
.adminIcon
,
.loginIcon
,
.logoutIcon
,
.calendarIcon
,
.browserIcon
,
.postIcon
,
.articlesIcon
,
.draftsIcon
,
.usersIcon
,
.linkIcon
,
.preferenceIcon
,
.pageIcon
,
.trueIcon
,
.falseIcon
,
.fileIcon
,
.othersIcon
,
.goTopIcon
,
.goBottomIcon
,
.cacheIcon
,
.aboutIcon
{
background-image
:
url("../images/icon.png")
;
cursor
:
pointer
;
height
:
16px
;
width
:
16px
}
.adminIcon
,
.loginIcon
,
.logoutIcon
,
.homeIcon
{
margin-top
:
3px
}
.pageIcon
{
background-position
:
-144px
0
}
.postIcon
{
background-position
:
-16px
0
}
.linkIcon
{
background-position
:
-32px
0
}
.preferenceIcon
{
background-position
:
-48px
0
}
.articlesIcon
{
background-position
:
-64px
0
}
.trueIcon
{
background-position
:
-80px
0
;
cursor
:
auto
}
.falseIcon
{
background-position
:
-96px
0
;
cursor
:
auto
}
.fileIcon
{
background-position
:
-112px
0
}
.deleteIcon
{
background-position
:
0
-16px
}
.updateIcon
{
background-position
:
-16px
-16px
}
.commentIcon
{
background-position
:
-32px
-16px
}
.homeIcon
{
background-position
:
-64px
-16px
}
.adminIcon
{
background-position
:
-80px
-16px
}
.logoutIcon
{
background-position
:
-96px
-16px
}
.loginIcon
{
background-position
:
-112px
-16px
}
.browserIcon
{
background-position
:
-128px
-16px
}
.calendarIcon
{
background-position
:
-144px
-16px
}
.putTopIcon
{
background-position
:
-16px
-32px
;
float
:
left
}
.notPutTopIcon
{
background-position
:
-32px
-32px
;
float
:
left
}
.othersIcon
{
background-position
:
-48px
-32px
}
.cacheIcon
{
background-position
:
-96px
-32px
}
.draftsIcon
{
background-position
:
-96px
-32px
}
.usersIcon
{
background-position
:
-112px
-32px
}
.goTopIcon
{
background-position
:
-64px
-32px
;
position
:
fixed
;
right
:
20px
;
top
:
45%
}
.goBottomIcon
{
background-position
:
-80px
-32px
;
bottom
:
40%
;
position
:
fixed
;
right
:
20px
}
.article-body
{
overflow
:
hidden
;
line-height
:
145%
;
word-wrap
:
break-word
}
.article-body
blockquote
{
border
:
1px
dotted
#98a47f
;
font-style
:
italic
;
margin
:
12px
;
padding
:
12px
}
.article-body
h1
{
font-size
:
2em
;
margin
:
.67em
0
}
.article-body
h2
{
font-size
:
1.5em
;
margin
:
.75em
0
}
.article-body
h3
{
font-size
:
1.17em
;
margin
:
.83em
0
}
.article-body
h4
,
.article-body
p
,
.article-body
blockquote
,
.article-body
ul
,
.article-body
fieldset
,
.article-body
form
,
.article-body
ol
,
.article-body
dl
,
.article-body
dir
,
.article-body
menu
{
margin
:
1.12em
0
}
.article-body
h5
{
font-size
:
.83em
;
margin
:
1.5em
0
}
.article-body
h6
{
font-size
:
.75em
;
margin
:
1.67em
0
}
.article-body
blockquote
{
margin-left
:
40px
;
margin-right
:
40px
}
.article-body
ol
,
.article-body
ul
,
.article-body
dir
,
.article-body
menu
,
.article-body
dd
{
margin-left
:
40px
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
background-image
:
url("../images/emotions/classic/emotions-classic.png")
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
}
#emotions
span
{
cursor
:
pointer
}
.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
}
#tags
{
list-style
:
none
}
#tags
li
{
float
:
left
;
list-style
:
none
;
height
:
38px
}
#tags
a
:hover
{
text-shadow
:
0
0
2px
#555
}
#tags
a
{
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
1px
1px
3px
#555
;
float
:
left
;
margin
:
3px
6px
;
padding
:
3px
12px
;
text-decoration
:
none
}
#tags
.tags1
{
font-size
:
12px
;
font-weight
:
normal
}
#tags
.tags2
{
font-size
:
14px
;
font-weight
:
normal
}
#tags
.tags3
{
font-size
:
16px
;
font-weight
:
normal
}
#tags
.tags4
{
font-size
:
18px
;
font-weight
:
bold
}
#tags
.tags5
{
font-size
:
20px
;
font-weight
:
bold
}
#captcha
,
#captchaReply
{
cursor
:
pointer
}
\ No newline at end of file
src/main/webapp/css/default-init.min.css
View file @
c900f9b2
/**
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
html
{
height
:
100%
;
overflow
:
hidden
}
html
,
body
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#f3f1e5
;
color
:
#333
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
;
height
:
100%
}
h2
{
background-color
:
#ececec
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-repeat
:
repeat-x
;
border-radius
:
4px
4px
0
0
;
font-size
:
16px
;
margin
:
0
;
padding
:
10px
20px
;
text-shadow
:
0
-1px
0
rgba
(
255
,
255
,
255
,
0.5
)}
input
{
border
:
1px
solid
#ccc
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
;
font-size
:
13px
;
margin
:
15px
0
;
padding
:
7px
8px
;
transition
:
all
.15s
ease-in
0s
;
vertical-align
:
middle
;
width
:
410px
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
}
input
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
,
0
0
5px
rgbargba
(
200
,
200
,
200
,
0.9
);
border
:
1px
solid
#e6e5d9
}
.form
{
padding
:
20px
}
label
{
font-size
:
13px
}
button
{
position
:
relative
;
display
:
inline-block
;
font-size
:
13px
;
font-weight
:
700
;
color
:
#333
;
text-shadow
:
0
1px
0
rgba
(
255
,
255
,
255
,
0.9
);
white-space
:
nowrap
;
background-color
:
#eaeaea
;
background-image
:
linear-gradient
(
#fafafa
,
#eaeaea
);
background-repeat
:
repeat-x
;
border-radius
:
3px
;
border
:
1px
solid
#ddd
;
border-bottom-color
:
#c5c5c5
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.075
);
vertical-align
:
baseline
;
cursor
:
pointer
;
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-khtml-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
-webkit-appearance
:
none
;
outline
:
0
;
padding
:
7px
15px
;
margin-top
:
10px
}
button
:hover
,
button
:active
{
color
:
#fff
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
);
background-color
:
#3072b3
;
background-image
:
linear-gradient
(
#599bcd
,
#3072b3
);
background-repeat
:
repeat-x
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.main
.icon
{
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
16px
;
height
:
16px
}
.solo
{
color
:
orangered
;
font-weight
:
bold
}
.logo
{
float
:
left
;
padding
:
162px
12px
0
;
width
:
153px
}
.wrapper
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
.wrap
{
border-top
:
5px
solid
#e6e5d9
;
min-height
:
400px
}
.content
{
background
:
url("../images/zz.jpg")
repeat-x
scroll
center
bottom
white
;
border-color
:
#e6e5d9
;
border-style
:
solid
solid
none
;
border-width
:
1px
;
margin
:
0
auto
;
position
:
relative
;
width
:
700px
;
top
:
60px
}
.main
{
border-left
:
1px
solid
#e6e5d9
;
float
:
right
;
font-size
:
15px
;
margin
:
24px
0
;
padding
:
12px
24px
;
width
:
470px
;
height
:
338px
}
.main
a
{
text-decoration
:
none
}
.main
li
{
margin
:
6px
0
6px
16px
}
.footerWrapper
{
background-color
:
#fff
;
border-top
:
1px
solid
#e6e5d9
;
bottom
:
0
;
padding
:
12px
0
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
.footerWrapper
a
{
text-decoration
:
none
}
.article-pwd
>
div
,
.article-pwd
>
form
{
margin
:
0
20px
}
.article-pwd
>
div
{
margin-bottom
:
10px
;
max-height
:
264px
;
overflow
:
auto
;
word-wrap
:
break-word
}
.img-403
,
.img-500
{
box-shadow
:
0
0
5px
#e6e5d9
;
margin
:
20px
0
0
45px
;
padding
:
5px
}
.a-403
,
.a-500
{
margin
:
20px
50px
0
0
;
text-align
:
right
}
.a-403
{
margin
:
10px
75px
0
0
}
.img-500
{
margin
:
20px
0
0
25px
}
.a-500
{
margin
:
25px
35px
0
0
}
.kill
img
{
position
:
absolute
;
right
:
40px
;
top
:
200px
}
.kill
ul
{
margin-bottom
:
50px
}
.kill
p
{
margin
:
12px
20px
}
.kill
span
{
margin-left
:
20px
}
#init
{
position
:
absolute
;
top
:
81px
;
width
:
470px
}
#init
.form
{
padding
:
10px
20px
}
#init
input
,
.register
input
{
margin
:
5px
0
;
padding
:
5px
8px
}
.register
{
height
:
400px
}
#sys
p
{
height
:
206px
}
#sys
{
padding
:
0
20px
}
#initButton
{
margin-right
:
10px
}
#tip
{
color
:
#21759b
;
font-weight
:
bold
;
margin-left
:
10px
}
html
{
height
:
100%
;
overflow
:
hidden
}
html
,
body
{
margin
:
0
;
padding
:
0
}
body
{
background-color
:
#f3f1e5
;
color
:
#333
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
;
height
:
100%
}
h2
{
background-color
:
#ececec
;
background-image
:
linear-gradient
(
#f9f9f9
,
#ececec
);
background-repeat
:
repeat-x
;
border-radius
:
4px
4px
0
0
;
font-size
:
16px
;
margin
:
0
;
padding
:
10px
20px
;
text-shadow
:
0
-1px
0
rgba
(
255
,
255
,
255
,
0.5
)}
input
{
border
:
1px
solid
#ccc
;
border-radius
:
3px
3px
3px
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
;
font-size
:
13px
;
margin
:
15px
0
;
padding
:
7px
8px
;
transition
:
all
.15s
ease-in
0s
;
vertical-align
:
middle
;
width
:
410px
;
font-family
:
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
small
}
input
:focus
{
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
0.075
)
inset
,
0
0
5px
rgbargba
(
200
,
200
,
200
,
0.9
);
border
:
1px
solid
#e6e5d9
}
.form
{
padding
:
20px
}
label
{
font-size
:
13px
}
button
{
position
:
relative
;
display
:
inline-block
;
font-size
:
13px
;
font-weight
:
700
;
color
:
#333
;
text-shadow
:
0
1px
0
rgba
(
255
,
255
,
255
,
0.9
);
white-space
:
nowrap
;
background-color
:
#eaeaea
;
background-image
:
linear-gradient
(
#fafafa
,
#eaeaea
);
background-repeat
:
repeat-x
;
border-radius
:
3px
;
border
:
1px
solid
#ddd
;
border-bottom-color
:
#c5c5c5
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.075
);
vertical-align
:
baseline
;
cursor
:
pointer
;
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-khtml-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
-webkit-appearance
:
none
;
outline
:
0
;
padding
:
7px
15px
;
margin-top
:
10px
}
button
:hover
,
button
:active
{
color
:
#fff
;
text-decoration
:
none
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
);
background-color
:
#3072b3
;
background-image
:
linear-gradient
(
#599bcd
,
#3072b3
);
background-repeat
:
repeat-x
}
.clear
{
background-color
:
transparent
;
border
:
0
;
clear
:
both
;
display
:
block
;
font-size
:
0
;
height
:
0
;
line-height
:
0
;
overflow
:
hidden
}
.none
{
display
:
none
}
.main
.icon
{
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
16px
;
height
:
16px
}
.solo
{
color
:
orangered
;
font-weight
:
bold
}
.logo
{
float
:
left
;
padding
:
162px
12px
0
;
width
:
153px
}
.wrapper
{
height
:
auto
;
min-height
:
100%
;
position
:
relative
}
.wrap
{
border-top
:
5px
solid
#e6e5d9
;
min-height
:
400px
}
.content
{
background
:
url("../images/zz.jpg")
repeat-x
scroll
center
bottom
white
;
border-color
:
#e6e5d9
;
border-style
:
solid
solid
none
;
border-width
:
1px
;
margin
:
0
auto
;
position
:
relative
;
width
:
700px
;
top
:
60px
}
.main
{
border-left
:
1px
solid
#e6e5d9
;
float
:
right
;
font-size
:
15px
;
margin
:
24px
0
;
padding
:
12px
24px
;
width
:
470px
;
height
:
338px
}
.main
a
{
text-decoration
:
none
}
.main
li
{
margin
:
6px
0
6px
16px
}
.footerWrapper
{
background-color
:
#fff
;
border-top
:
1px
solid
#e6e5d9
;
bottom
:
0
;
padding
:
12px
0
;
position
:
absolute
;
text-align
:
center
;
width
:
100%
}
.footerWrapper
a
{
text-decoration
:
none
}
.article-pwd
>
div
,
.article-pwd
>
form
{
margin
:
0
20px
}
.article-pwd
>
div
{
margin-bottom
:
10px
;
max-height
:
264px
;
overflow
:
auto
;
word-wrap
:
break-word
}
.img-403
,
.img-500
{
box-shadow
:
0
0
5px
#e6e5d9
;
margin
:
20px
0
0
45px
;
padding
:
5px
}
.a-403
,
.a-500
{
margin
:
20px
50px
0
0
;
text-align
:
right
}
.a-403
{
margin
:
10px
75px
0
0
}
.img-500
{
margin
:
20px
0
0
25px
}
.a-500
{
margin
:
25px
35px
0
0
}
.kill
img
{
position
:
absolute
;
right
:
40px
;
top
:
200px
}
.kill
ul
{
margin-bottom
:
50px
}
.kill
p
{
margin
:
12px
20px
}
.kill
span
{
margin-left
:
20px
}
#init
{
position
:
absolute
;
top
:
81px
;
width
:
470px
}
#init
.form
{
padding
:
10px
20px
}
#init
input
,
.register
input
{
margin
:
5px
0
;
padding
:
5px
8px
}
.register
{
height
:
400px
}
#sys
p
{
height
:
206px
}
#sys
{
padding
:
0
20px
}
#initButton
{
margin-right
:
10px
}
#tip
{
color
:
#21759b
;
font-weight
:
bold
;
margin-left
:
10px
}
\ No newline at end of file
src/main/webapp/js/admin/latkeAdmin.js
View file @
c900f9b2
...
@@ -2867,7 +2867,7 @@ admin.register["link-list"] = {
...
@@ -2867,7 +2867,7 @@ admin.register["link-list"] = {
*
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
1.1.8, Sep 12
, 2015
* @version 1.
2.1.9, Nov 20
, 2015
*/
*/
/* preference 相关操作 */
/* preference 相关操作 */
...
@@ -2906,13 +2906,17 @@ admin.preference = {
...
@@ -2906,13 +2906,17 @@ admin.preference = {
$
(
"
#localeString
"
).
val
(
preference
.
localeString
);
$
(
"
#localeString
"
).
val
(
preference
.
localeString
);
$
(
"
#timeZoneId
"
).
val
(
preference
.
timeZoneId
);
$
(
"
#timeZoneId
"
).
val
(
preference
.
timeZoneId
);
$
(
"
#noticeBoard
"
).
val
(
preference
.
noticeBoard
);
$
(
"
#noticeBoard
"
).
val
(
preference
.
noticeBoard
);
$
(
"
#footerContent
"
).
val
(
preference
.
footerContent
);
$
(
"
#htmlHead
"
).
val
(
preference
.
htmlHead
);
$
(
"
#htmlHead
"
).
val
(
preference
.
htmlHead
);
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(
preference
.
externalRelevantArticlesDisplayCount
);
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(
preference
.
externalRelevantArticlesDisplayCount
);
$
(
"
#relevantArticlesDisplayCount
"
).
val
(
preference
.
relevantArticlesDisplayCount
);
$
(
"
#relevantArticlesDisplayCount
"
).
val
(
preference
.
relevantArticlesDisplayCount
);
$
(
"
#randomArticlesDisplayCount
"
).
val
(
preference
.
randomArticlesDisplayCount
);
$
(
"
#randomArticlesDisplayCount
"
).
val
(
preference
.
randomArticlesDisplayCount
);
$
(
"
#keyOfSolo
"
).
val
(
preference
.
keyOfSolo
);
$
(
"
#keyOfSolo
"
).
val
(
preference
.
keyOfSolo
);
preference
.
enableArticleUpdateHint
?
$
(
"
#enableArticleUpdateHint
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
#enableArticleUpdateHint
"
).
removeAttr
(
"
checked
"
);
preference
.
allowVisitDraftViaPermalink
?
$
(
"
#allowVisitDraftViaPermalink
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
allowVisitDraftViaPermalink
"
).
removeAttr
(
"
checked
"
);
"
true
"
===
preference
.
enableArticleUpdateHint
?
$
(
"
#enableArticleUpdateHint
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
#enableArticleUpdateHint
"
).
removeAttr
(
"
checked
"
);
"
true
"
===
preference
.
allowVisitDraftViaPermalink
?
$
(
"
#allowVisitDraftViaPermalink
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
allowVisitDraftViaPermalink
"
).
removeAttr
(
"
checked
"
);
"
true
"
===
preference
.
allowRegister
?
$
(
"
#allowRegister
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
#allowRegister
"
).
removeAttr
(
"
checked
"
);
"
true
"
===
preference
.
commentable
?
$
(
"
#commentable
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
commentable
"
).
removeAttr
(
"
checked
"
);
admin
.
preference
.
locale
=
preference
.
localeString
;
admin
.
preference
.
locale
=
preference
.
localeString
;
admin
.
preference
.
editorType
=
preference
.
editorType
;
admin
.
preference
.
editorType
=
preference
.
editorType
;
...
@@ -2926,7 +2930,7 @@ admin.preference = {
...
@@ -2926,7 +2930,7 @@ admin.preference = {
if
(
skins
[
i
].
skinName
===
preference
.
skinName
if
(
skins
[
i
].
skinName
===
preference
.
skinName
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
selectedClass
+=
"
selected
"
;
selectedClass
+=
"
selected
"
;
}
}
skinsHTML
+=
"
<div title='
"
+
skins
[
i
].
skinDirName
skinsHTML
+=
"
<div title='
"
+
skins
[
i
].
skinDirName
+
"
' class='left skinItem
"
+
selectedClass
+
"
'><img class='skinPreview' src='
"
+
"
' class='left skinItem
"
+
selectedClass
+
"
'><img class='skinPreview' src='
"
+
latkeConfig
.
staticServePath
+
"
/skins/
"
+
skins
[
i
].
skinDirName
+
latkeConfig
.
staticServePath
+
"
/skins/
"
+
skins
[
i
].
skinDirName
...
@@ -2938,8 +2942,8 @@ admin.preference = {
...
@@ -2938,8 +2942,8 @@ admin.preference = {
$
(
"
.skinItem
"
).
removeClass
(
"
selected
"
);
$
(
"
.skinItem
"
).
removeClass
(
"
selected
"
);
$
(
this
).
addClass
(
"
selected
"
);
$
(
this
).
addClass
(
"
selected
"
);
$
(
"
#skinMain
"
).
data
(
"
skinDirName
"
,
this
.
title
);
$
(
"
#skinMain
"
).
data
(
"
skinDirName
"
,
this
.
title
);
});
});
// sign
// sign
var
signs
=
eval
(
'
(
'
+
preference
.
signs
+
'
)
'
);
var
signs
=
eval
(
'
(
'
+
preference
.
signs
+
'
)
'
);
for
(
var
j
=
1
;
j
<
signs
.
length
;
j
++
)
{
for
(
var
j
=
1
;
j
<
signs
.
length
;
j
++
)
{
...
@@ -2950,21 +2954,16 @@ admin.preference = {
...
@@ -2950,21 +2954,16 @@ admin.preference = {
});
});
}
}
// Article list style
$
(
"
#articleListDisplay
"
).
val
(
preference
.
articleListStyle
);
$
(
"
#articleListDisplay
"
).
val
(
preference
.
articleListStyle
);
// Editor Type
$
(
"
#editorType
"
).
val
(
preference
.
editorType
);
$
(
"
#editorType
"
).
val
(
preference
.
editorType
);
// Feed output
$
(
"
#feedOutputMode
"
).
val
(
preference
.
feedOutputMode
);
$
(
"
#feedOutputMode
"
).
val
(
preference
.
feedOutputMode
);
$
(
"
#feedOutputCnt
"
).
val
(
preference
.
feedOutputCnt
);
$
(
"
#feedOutputCnt
"
).
val
(
preference
.
feedOutputCnt
);
// Commentable
preference
.
commentable
?
$
(
"
#commentable
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
commentable
"
).
removeAttr
(
"
checked
"
);
$
(
"
#loadMsg
"
).
text
(
""
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
}
});
});
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/preference/qiniu
"
,
url
:
latkeConfig
.
servePath
+
"
/console/preference/qiniu
"
,
type
:
"
GET
"
,
type
:
"
GET
"
,
cache
:
false
,
cache
:
false
,
...
@@ -3065,6 +3064,7 @@ admin.preference = {
...
@@ -3065,6 +3064,7 @@ admin.preference = {
"
localeString
"
:
$
(
"
#localeString
"
).
val
(),
"
localeString
"
:
$
(
"
#localeString
"
).
val
(),
"
timeZoneId
"
:
$
(
"
#timeZoneId
"
).
val
(),
"
timeZoneId
"
:
$
(
"
#timeZoneId
"
).
val
(),
"
noticeBoard
"
:
$
(
"
#noticeBoard
"
).
val
(),
"
noticeBoard
"
:
$
(
"
#noticeBoard
"
).
val
(),
"
footerContent
"
:
$
(
"
#footerContent
"
).
val
(),
"
htmlHead
"
:
$
(
"
#htmlHead
"
).
val
(),
"
htmlHead
"
:
$
(
"
#htmlHead
"
).
val
(),
"
externalRelevantArticlesDisplayCount
"
:
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(),
"
externalRelevantArticlesDisplayCount
"
:
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(),
"
relevantArticlesDisplayCount
"
:
$
(
"
#relevantArticlesDisplayCount
"
).
val
(),
"
relevantArticlesDisplayCount
"
:
$
(
"
#relevantArticlesDisplayCount
"
).
val
(),
...
@@ -3077,7 +3077,8 @@ admin.preference = {
...
@@ -3077,7 +3077,8 @@ admin.preference = {
"
editorType
"
:
$
(
"
#editorType
"
).
val
(),
"
editorType
"
:
$
(
"
#editorType
"
).
val
(),
"
feedOutputMode
"
:
$
(
"
#feedOutputMode
"
).
val
(),
"
feedOutputMode
"
:
$
(
"
#feedOutputMode
"
).
val
(),
"
feedOutputCnt
"
:
$
(
"
#feedOutputCnt
"
).
val
(),
"
feedOutputCnt
"
:
$
(
"
#feedOutputCnt
"
).
val
(),
"
commentable
"
:
$
(
"
#commentable
"
).
prop
(
"
checked
"
)
"
commentable
"
:
$
(
"
#commentable
"
).
prop
(
"
checked
"
),
"
allowRegister
"
:
$
(
"
#allowRegister
"
).
prop
(
"
checked
"
)
}
}
};
};
...
...
src/main/webapp/js/admin/latkeAdmin.min.js
View file @
c900f9b2
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/webapp/js/common.min.js
View file @
c900f9b2
/*
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var
Util
=
{
isLoggedIn
:
function
(){
if
((
$
(
"
#admin
"
).
length
===
1
&&
$
(
"
#admin
"
).
data
(
"
login
"
))
||
latkeConfig
.
isLoggedIn
===
"
true
"
){
return
true
}
else
{
return
false
}},
getUserName
:
function
(){
if
(
$
(
"
#adminName
"
).
length
===
1
){
return
$
(
"
#adminName
"
).
text
()}
else
{
return
latkeConfig
.
userName
}},
error
:
function
(){
$
(
"
#tipMsg
"
).
text
(
"
Error:
"
+
arguments
[
0
]
+
"
File:
"
+
arguments
[
1
]
+
"
\n
Line:
"
+
arguments
[
2
]
+
"
please report this issue on https://github.com/b3log/solo/issues/new
"
);
$
(
"
#loadMsg
"
).
text
(
""
)},
killIE
:
function
(){
var
addKillPanel
=
function
(){
if
(
Cookie
.
readCookie
(
"
showKill
"
)
===
""
){
var
left
=
(
$
(
window
).
width
()
-
701
)
/
2
,
top
=
(
$
(
window
).
height
()
-
420
)
/
2
;
$
(
"
body
"
).
append
(
"
<div style='display: block; height: 100%; width: 100%; position: fixed; background-color: rgb(0, 0, 0); opacity: 0.6; top: 0px;z-index:11'></div><iframe style='left:
"
+
left
+
"
px;z-index:20;top:
"
+
top
+
"
px; position: fixed; border: 0px none; width: 701px; height: 420px;' src='
"
+
latkeConfig
.
servePath
+
"
/kill-browser'></iframe>
"
)}};
if
(
$
.
browser
.
msie
){
if
(
$
.
browser
.
version
===
"
6.0
"
||
$
.
browser
.
version
===
"
7.0
"
){
addKillPanel
();
return
}
if
(
window
.
external
&&
window
.
external
.
twGetRunPath
){
var
path
=
external
.
twGetRunPath
();
if
(
path
&&
path
.
toLowerCase
().
indexOf
(
"
360se
"
)
>-
1
&&
window
.
location
.
href
.
indexOf
(
"
admin-index
"
)
>-
1
){
addKillPanel
();
return
}}}},
replaceEmString
:
function
(
str
){
var
commentSplited
=
str
.
split
(
"
[em
"
);
if
(
commentSplited
.
length
===
1
){
return
str
}
str
=
commentSplited
[
0
];
for
(
var
j
=
1
;
j
<
commentSplited
.
length
;
j
++
){
var
key
=
commentSplited
[
j
].
substr
(
0
,
2
);
str
+=
"
<img src='
"
+
latkeConfig
.
staticServePath
+
"
/skins/
"
+
Label
.
skinDirName
+
"
/images/emotions/em
"
+
key
+
"
.png' alt='
"
+
Label
[
"
em
"
+
key
+
"
Label
"
]
+
"
' title='
"
+
Label
[
"
em
"
+
key
+
"
Label
"
]
+
"
'/>
"
+
commentSplited
[
j
].
substr
(
3
)}
return
str
},
proessURL
:
function
(
url
){
if
(
!
/^
\w
+:
\/\/
/
.
test
(
url
)){
url
=
"
http://
"
+
url
}
return
url
},
switchMobile
:
function
(
skin
){
Cookie
.
createCookie
(
"
btouch_switch_toggle
"
,
skin
,
365
);
setTimeout
(
function
(){
location
.
reload
()},
1250
)},
setTopBar
:
function
(){
var
$top
=
$
(
"
#top
"
);
if
(
$top
.
length
===
1
){
var
$showTop
=
$
(
"
#showTop
"
);
$showTop
.
click
(
function
(){
$top
.
slideDown
();
$showTop
.
hide
()});
$
(
"
#hideTop
"
).
click
(
function
(){
$top
.
slideUp
();
$showTop
.
show
()})}},
goTop
:
function
(){
$
(
"
html, body
"
).
animate
({
scrollTop
:
0
},
800
)},
goBottom
:
function
(
bottom
){
if
(
!
bottom
){
bottom
=
0
}
var
wHeight
=
$
(
"
body
"
).
height
()
>
$
(
document
).
height
()?
$
(
"
body
"
).
height
():
$
(
document
).
height
();
window
.
scrollTo
(
0
,
wHeight
-
$
(
window
).
height
()
-
bottom
)},
init
:
function
(){
Util
.
killIE
();
Util
.
setTopBar
()},
replaceSideEm
:
function
(
comments
){
for
(
var
i
=
0
;
i
<
comments
.
length
;
i
++
){
var
$comment
=
$
(
comments
[
i
]);
$comment
.
html
(
Util
.
replaceEmString
(
$comment
.
html
()))}},
buildTags
:
function
(
id
){
id
=
id
||
"
tags
"
;
var
classes
=
[
"
tags1
"
,
"
tags2
"
,
"
tags3
"
,
"
tags4
"
,
"
tags5
"
],
bList
=
$
(
"
#
"
+
id
+
"
b
"
).
get
();
var
max
=
parseInt
(
$
(
"
#
"
+
id
+
"
b
"
).
last
().
text
());
var
distance
=
Math
.
ceil
(
max
/
classes
.
length
);
for
(
var
i
=
0
;
i
<
bList
.
length
;
i
++
){
var
num
=
parseInt
(
bList
[
i
].
innerHTML
);
for
(
var
j
=
0
;
j
<
classes
.
length
;
j
++
){
if
(
num
>
j
*
distance
&&
num
<=
(
j
+
1
)
*
distance
){
bList
[
i
].
parentNode
.
className
=
classes
[
j
];
break
}}}
$
(
"
#
"
+
id
).
html
(
$
(
"
#
"
+
id
+
"
li
"
).
get
().
sort
(
function
(
a
,
b
){
var
valA
=
$
(
a
).
find
(
"
span
"
).
text
().
toLowerCase
();
var
valB
=
$
(
b
).
find
(
"
span
"
).
text
().
toLowerCase
();
return
valA
.
localeCompare
(
valB
)}))},
toDate
:
function
(
time
,
format
){
var
dateTime
=
new
Date
(
time
);
var
o
=
{
"
M+
"
:
dateTime
.
getMonth
()
+
1
,
"
d+
"
:
dateTime
.
getDate
(),
"
H+
"
:
dateTime
.
getHours
(),
"
m+
"
:
dateTime
.
getMinutes
(),
"
s+
"
:
dateTime
.
getSeconds
(),
"
q+
"
:
Math
.
floor
((
dateTime
.
getMonth
()
+
3
)
/
3
),
S
:
dateTime
.
getMilliseconds
()};
if
(
/
(
y+
)
/
.
test
(
format
)){
format
=
format
.
replace
(
RegExp
.
$1
,(
dateTime
.
getFullYear
()
+
""
).
substr
(
4
-
RegExp
.
$1
.
length
))}
for
(
var
k
in
o
){
if
(
new
RegExp
(
"
(
"
+
k
+
"
)
"
).
test
(
format
)){
format
=
format
.
replace
(
RegExp
.
$1
,
RegExp
.
$1
.
length
==
1
?
o
[
k
]:(
"
00
"
+
o
[
k
]).
substr
((
""
+
o
[
k
]).
length
))}}
return
format
},
getWinHeight
:
function
(){
if
(
window
.
innerHeight
){
return
window
.
innerHeight
}
if
(
document
.
compatMode
===
"
CSS1Compat
"
){
return
window
.
document
.
documentElement
.
clientHeight
}
return
window
.
document
.
body
.
clientHeight
}};
if
(
!
Cookie
){
var
Cookie
=
{
readCookie
:
function
(
name
){
var
nameEQ
=
name
+
"
=
"
;
var
ca
=
document
.
cookie
.
split
(
"
;
"
);
for
(
var
i
=
0
;
i
<
ca
.
length
;
i
++
){
var
c
=
ca
[
i
];
while
(
c
.
charAt
(
0
)
==
"
"
){
c
=
c
.
substring
(
1
,
c
.
length
)}
if
(
c
.
indexOf
(
nameEQ
)
==
0
){
return
decodeURIComponent
(
c
.
substring
(
nameEQ
.
length
,
c
.
length
))}}
return
""
},
eraseCookie
:
function
(
name
){
this
.
createCookie
(
name
,
""
,
-
1
)},
createCookie
:
function
(
name
,
value
,
days
){
var
expires
=
""
;
if
(
days
){
var
date
=
new
Date
();
date
.
setTime
(
date
.
getTime
()
+
(
days
*
24
*
60
*
60
*
1000
));
expires
=
"
; expires=
"
+
date
.
toGMTString
()}
document
.
cookie
=
name
+
"
=
"
+
encodeURIComponent
(
value
)
+
expires
+
"
; path=/
"
}}};
var
Util
=
{
isLoggedIn
:
function
(){
if
((
$
(
"
#admin
"
).
length
===
1
&&
$
(
"
#admin
"
).
data
(
"
login
"
))
||
latkeConfig
.
isLoggedIn
===
"
true
"
){
return
true
}
else
{
return
false
}},
getUserName
:
function
(){
if
(
$
(
"
#adminName
"
).
length
===
1
){
return
$
(
"
#adminName
"
).
text
()}
else
{
return
latkeConfig
.
userName
}},
error
:
function
(){
$
(
"
#tipMsg
"
).
text
(
"
Error:
"
+
arguments
[
0
]
+
"
File:
"
+
arguments
[
1
]
+
"
\n
Line:
"
+
arguments
[
2
]
+
"
please report this issue on https://github.com/b3log/solo/issues/new
"
);
$
(
"
#loadMsg
"
).
text
(
""
)},
killIE
:
function
(){
var
addKillPanel
=
function
(){
if
(
Cookie
.
readCookie
(
"
showKill
"
)
===
""
){
var
left
=
(
$
(
window
).
width
()
-
701
)
/
2
,
top
=
(
$
(
window
).
height
()
-
420
)
/
2
;
$
(
"
body
"
).
append
(
"
<div style='display: block; height: 100%; width: 100%; position: fixed; background-color: rgb(0, 0, 0); opacity: 0.6; top: 0px;z-index:11'></div><iframe style='left:
"
+
left
+
"
px;z-index:20;top:
"
+
top
+
"
px; position: fixed; border: 0px none; width: 701px; height: 420px;' src='
"
+
latkeConfig
.
servePath
+
"
/kill-browser'></iframe>
"
)}};
if
(
$
.
browser
.
msie
){
if
(
$
.
browser
.
version
===
"
6.0
"
||
$
.
browser
.
version
===
"
7.0
"
){
addKillPanel
();
return
}
if
(
window
.
external
&&
window
.
external
.
twGetRunPath
){
var
path
=
external
.
twGetRunPath
();
if
(
path
&&
path
.
toLowerCase
().
indexOf
(
"
360se
"
)
>-
1
&&
window
.
location
.
href
.
indexOf
(
"
admin-index
"
)
>-
1
){
addKillPanel
();
return
}}}},
replaceEmString
:
function
(
str
){
var
commentSplited
=
str
.
split
(
"
[em
"
);
if
(
commentSplited
.
length
===
1
){
return
str
}
str
=
commentSplited
[
0
];
for
(
var
j
=
1
;
j
<
commentSplited
.
length
;
j
++
){
var
key
=
commentSplited
[
j
].
substr
(
0
,
2
);
str
+=
"
<img src='
"
+
latkeConfig
.
staticServePath
+
"
/skins/
"
+
Label
.
skinDirName
+
"
/images/emotions/em
"
+
key
+
"
.png' alt='
"
+
Label
[
"
em
"
+
key
+
"
Label
"
]
+
"
' title='
"
+
Label
[
"
em
"
+
key
+
"
Label
"
]
+
"
'/>
"
+
commentSplited
[
j
].
substr
(
3
)}
return
str
},
proessURL
:
function
(
url
){
if
(
!
/^
\w
+:
\/\/
/
.
test
(
url
)){
url
=
"
http://
"
+
url
}
return
url
},
switchMobile
:
function
(
skin
){
Cookie
.
createCookie
(
"
btouch_switch_toggle
"
,
skin
,
365
);
setTimeout
(
function
(){
location
.
reload
()},
1250
)},
setTopBar
:
function
(){
var
$top
=
$
(
"
#top
"
);
if
(
$top
.
length
===
1
){
var
$showTop
=
$
(
"
#showTop
"
);
$showTop
.
click
(
function
(){
$top
.
slideDown
();
$showTop
.
hide
()});
$
(
"
#hideTop
"
).
click
(
function
(){
$top
.
slideUp
();
$showTop
.
show
()})}},
goTop
:
function
(){
$
(
"
html, body
"
).
animate
({
scrollTop
:
0
},
800
)},
goBottom
:
function
(
bottom
){
if
(
!
bottom
){
bottom
=
0
}
var
wHeight
=
$
(
"
body
"
).
height
()
>
$
(
document
).
height
()?
$
(
"
body
"
).
height
():
$
(
document
).
height
();
window
.
scrollTo
(
0
,
wHeight
-
$
(
window
).
height
()
-
bottom
)},
init
:
function
(){
Util
.
killIE
();
Util
.
setTopBar
()},
replaceSideEm
:
function
(
comments
){
for
(
var
i
=
0
;
i
<
comments
.
length
;
i
++
){
var
$comment
=
$
(
comments
[
i
]);
$comment
.
html
(
Util
.
replaceEmString
(
$comment
.
html
()))}},
buildTags
:
function
(
id
){
id
=
id
||
"
tags
"
;
var
classes
=
[
"
tags1
"
,
"
tags2
"
,
"
tags3
"
,
"
tags4
"
,
"
tags5
"
],
bList
=
$
(
"
#
"
+
id
+
"
b
"
).
get
();
var
max
=
parseInt
(
$
(
"
#
"
+
id
+
"
b
"
).
last
().
text
());
var
distance
=
Math
.
ceil
(
max
/
classes
.
length
);
for
(
var
i
=
0
;
i
<
bList
.
length
;
i
++
){
var
num
=
parseInt
(
bList
[
i
].
innerHTML
);
for
(
var
j
=
0
;
j
<
classes
.
length
;
j
++
){
if
(
num
>
j
*
distance
&&
num
<=
(
j
+
1
)
*
distance
){
bList
[
i
].
parentNode
.
className
=
classes
[
j
];
break
}}}
$
(
"
#
"
+
id
).
html
(
$
(
"
#
"
+
id
+
"
li
"
).
get
().
sort
(
function
(
a
,
b
){
var
valA
=
$
(
a
).
find
(
"
span
"
).
text
().
toLowerCase
();
var
valB
=
$
(
b
).
find
(
"
span
"
).
text
().
toLowerCase
();
return
valA
.
localeCompare
(
valB
)}))},
toDate
:
function
(
time
,
format
){
var
dateTime
=
new
Date
(
time
);
var
o
=
{
"
M+
"
:
dateTime
.
getMonth
()
+
1
,
"
d+
"
:
dateTime
.
getDate
(),
"
H+
"
:
dateTime
.
getHours
(),
"
m+
"
:
dateTime
.
getMinutes
(),
"
s+
"
:
dateTime
.
getSeconds
(),
"
q+
"
:
Math
.
floor
((
dateTime
.
getMonth
()
+
3
)
/
3
),
S
:
dateTime
.
getMilliseconds
()};
if
(
/
(
y+
)
/
.
test
(
format
)){
format
=
format
.
replace
(
RegExp
.
$1
,(
dateTime
.
getFullYear
()
+
""
).
substr
(
4
-
RegExp
.
$1
.
length
))}
for
(
var
k
in
o
){
if
(
new
RegExp
(
"
(
"
+
k
+
"
)
"
).
test
(
format
)){
format
=
format
.
replace
(
RegExp
.
$1
,
RegExp
.
$1
.
length
==
1
?
o
[
k
]:(
"
00
"
+
o
[
k
]).
substr
((
""
+
o
[
k
]).
length
))}}
return
format
},
getWinHeight
:
function
(){
if
(
window
.
innerHeight
){
return
window
.
innerHeight
}
if
(
document
.
compatMode
===
"
CSS1Compat
"
){
return
window
.
document
.
documentElement
.
clientHeight
}
return
window
.
document
.
body
.
clientHeight
}};
if
(
!
Cookie
){
var
Cookie
=
{
readCookie
:
function
(
name
){
var
nameEQ
=
name
+
"
=
"
;
var
ca
=
document
.
cookie
.
split
(
"
;
"
);
for
(
var
i
=
0
;
i
<
ca
.
length
;
i
++
){
var
c
=
ca
[
i
];
while
(
c
.
charAt
(
0
)
==
"
"
){
c
=
c
.
substring
(
1
,
c
.
length
)}
if
(
c
.
indexOf
(
nameEQ
)
==
0
){
return
decodeURIComponent
(
c
.
substring
(
nameEQ
.
length
,
c
.
length
))}}
return
""
},
eraseCookie
:
function
(
name
){
this
.
createCookie
(
name
,
""
,
-
1
)},
createCookie
:
function
(
name
,
value
,
days
){
var
expires
=
""
;
if
(
days
){
var
date
=
new
Date
();
date
.
setTime
(
date
.
getTime
()
+
(
days
*
24
*
60
*
60
*
1000
));
expires
=
"
; expires=
"
+
date
.
toGMTString
()}
document
.
cookie
=
name
+
"
=
"
+
encodeURIComponent
(
value
)
+
expires
+
"
; path=/
"
}}};
\ No newline at end of file
src/main/webapp/js/page.min.js
View file @
c900f9b2
/*
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var
Page
=
function
(
tips
){
this
.
currentCommentId
=
""
;
this
.
tips
=
tips
};
$
.
extend
(
Page
.
prototype
,{
insertEmotions
:
function
(
name
){
var
_it
=
this
;
if
(
name
===
undefined
){
name
=
""
}
$
(
"
#emotions
"
+
name
+
"
span
"
).
click
(
function
(){
var
$comment
=
$
(
"
#comment
"
+
name
);
var
endPosition
=
_it
.
_getCursorEndPosition
(
$comment
[
0
]);
var
key
=
"
[
"
+
this
.
className
+
"
]
"
,
textValue
=
$comment
[
0
].
value
;
textValue
=
textValue
.
substring
(
0
,
endPosition
)
+
key
+
textValue
.
substring
(
endPosition
,
textValue
.
length
);
$
(
"
#comment
"
+
name
).
val
(
textValue
);
if
(
$
.
browser
.
msie
){
endPosition
-=
textValue
.
split
(
"
\n
"
).
length
-
1
;
var
oR
=
$comment
[
0
].
createTextRange
();
oR
.
collapse
(
true
);
oR
.
moveStart
(
"
character
"
,
endPosition
+
6
);
oR
.
select
()}
else
{
$comment
[
0
].
setSelectionRange
(
endPosition
+
6
,
endPosition
+
6
)}})},
_getCursorEndPosition
:
function
(
textarea
){
textarea
.
focus
();
if
(
textarea
.
setSelectionRange
){
return
textarea
.
selectionEnd
}
else
{
if
(
document
.
selection
){
var
i
=
0
,
oS
=
document
.
selection
.
createRange
(),
oR
=
document
.
body
.
createTextRange
();
oR
.
moveToElementText
(
textarea
);
oS
.
getBookmark
();
for
(
i
=
0
;
oR
.
compareEndPoints
(
"
StartToStart
"
,
oS
)
<
0
&&
oS
.
moveStart
(
"
character
"
,
-
1
)
!==
0
;
i
++
){
if
(
textarea
.
value
.
charAt
(
i
)
===
"
\n
"
){
i
++
}}
return
i
}}},
validateComment
:
function
(
state
){
if
(
Util
.
isLoggedIn
()){
var
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#comment
"
+
state
).
focus
()}
else
{
return
true
}
$
(
"
#commentErrorTip
"
+
state
).
show
();
return
false
}
var
commentName
=
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
if
(
2
>
commentName
.
length
||
commentName
.
length
>
20
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
nameTooLongLabel
);
$
(
"
#commentName
"
+
state
).
focus
()}
else
{
if
(
$
(
"
#commentEmail
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailCannotEmptyLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
()}
else
{
if
(
!
/^
((([
a-z
]
|
\d
|
[
!#
\$
%&'
\*\+\-\/
=
\?\^
_`{
\|
}~
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
+
(\.([
a-z
]
|
\d
|
[
!#
\$
%&'
\*\+\-\/
=
\?\^
_`{
\|
}~
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
+
)
*
)
|
((\x
22
)((((\x
20|
\x
09
)
*
(\x
0d
\x
0a
))?(\x
20|
\x
09
)
+
)?(([\x
01-
\x
08
\x
0b
\x
0c
\x
0e-
\x
1f
\x
7f
]
|
\x
21|
[\x
23-
\x
5b
]
|
[\x
5d-
\x
7e
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(\\([\x
01-
\x
09
\x
0b
\x
0c
\x
0d-
\x
7f
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
]))))
*
(((\x
20|
\x
09
)
*
(\x
0d
\x
0a
))?(\x
20|
\x
09
)
+
)?(\x
22
)))
@
((([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])([
a-z
]
|
\d
|-|
\.
|_|~|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
*
([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])))\.)
+
(([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])([
a-z
]
|
\d
|-|
\.
|_|~|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
*
([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])))\.?
$/i
.
test
(
$
(
"
#commentEmail
"
+
state
).
val
())){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailInvalidLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
()}
else
{
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#comment
"
+
state
).
focus
()}
else
{
if
(
$
(
"
#commentValidate
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
captchaCannotEmptyLabel
);
$
(
"
#commentValidate
"
+
state
).
focus
()}
else
{
return
true
}}}}}
$
(
"
#commentErrorTip
"
+
state
).
show
();
return
false
},
replaceCommentsEm
:
function
(
selector
){
var
$commentContents
=
$
(
selector
);
for
(
var
i
=
0
;
i
<
$commentContents
.
length
;
i
++
){
var
str
=
$commentContents
[
i
].
innerHTML
;
$commentContents
[
i
].
innerHTML
=
Util
.
replaceEmString
(
str
)}},
_initSyntaxHighlighter
:
function
(
languages
){
for
(
var
i
=
0
;
i
<
languages
.
length
;
i
++
){
switch
(
languages
[
i
]){
case
"
groovy
"
:
languages
[
i
]
=
"
groovy
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushGroovy.js
"
;
break
;
case
"
java
"
:
languages
[
i
]
=
"
java
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJava.js
"
;
break
;
case
"
php
"
:
languages
[
i
]
=
"
php
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPhp.js
"
;
break
;
case
"
scala
"
:
languages
[
i
]
=
"
scala
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushScala.js
"
;
break
;
case
"
sql
"
:
languages
[
i
]
=
"
sql
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushSql.js
"
;
break
;
case
"
applescript
"
:
languages
[
i
]
=
"
applescript
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushAppleScript.js
"
;
break
;
case
"
as3
"
:
case
"
actionscript3
"
:
languages
[
i
]
=
"
actionscript3 as3
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushAS3.js
"
;
break
;
case
"
bash
"
:
case
"
shell
"
:
languages
[
i
]
=
"
bash shell
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushBash.js
"
;
break
;
case
"
coldfusion
"
:
case
"
cf
"
:
languages
[
i
]
=
"
coldfusion cf
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushColdFusion.js
"
;
break
;
case
"
c#
"
:
case
"
c-sharp
"
:
case
"
csharp
"
:
languages
[
i
]
=
"
c# c-sharp csharp
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCSharp.js
"
;
break
;
case
"
cpp
"
:
case
"
c
"
:
languages
[
i
]
=
"
cpp c
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCpp.js
"
;
break
;
case
"
css
"
:
languages
[
i
]
=
"
css
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCss.js
"
;
break
;
case
"
delphi
"
:
case
"
pascal
"
:
languages
[
i
]
=
"
delphi pascal
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushDelphi.js
"
;
break
;
case
"
diff
"
:
case
"
patch
"
:
case
"
pas
"
:
languages
[
i
]
=
"
diff patch pas
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushDiff.js
"
;
break
;
case
"
erl
"
:
case
"
erlang
"
:
languages
[
i
]
=
"
erl erlang
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushErlang.js
"
;
break
;
case
"
js
"
:
case
"
jscript
"
:
case
"
javascript
"
:
languages
[
i
]
=
"
js jscript javascript
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJScript.js
"
;
break
;
case
"
jfx
"
:
case
"
javafx
"
:
languages
[
i
]
=
"
jfx javafx
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJavaFX.js
"
;
break
;
case
"
perl
"
:
case
"
pl
"
:
languages
[
i
]
=
"
perl pl
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPerl.js
"
;
break
;
case
"
plain
"
:
case
"
text
"
:
languages
[
i
]
=
"
text plain
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPlain.js
"
;
break
;
case
"
ps
"
:
case
"
powershell
"
:
languages
[
i
]
=
"
ps powershell
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPowerShell.js
"
;
break
;
case
"
py
"
:
case
"
python
"
:
languages
[
i
]
=
"
py python
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPython.js
"
;
break
;
case
"
rails
"
:
case
"
ror
"
:
case
"
ruby
"
:
case
"
rb
"
:
languages
[
i
]
=
"
ruby rails ror rb
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushRuby.js
"
;
break
;
case
"
sass
"
:
case
"
scss
"
:
languages
[
i
]
=
"
sass scss
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushSass.js
"
;
break
;
case
"
vb
"
:
case
"
vbnet
"
:
languages
[
i
]
=
"
vb vbnet
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushVb.js
"
;
break
;
case
"
xml
"
:
case
"
xhtml
"
:
case
"
xslt
"
:
case
"
html
"
:
languages
[
i
]
=
"
xml xhtml xslt html
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
;
break
;
default
:
break
}}
SyntaxHighlighter
.
autoloader
.
apply
(
null
,
languages
);
SyntaxHighlighter
.
config
.
stripBrs
=
true
;
SyntaxHighlighter
.
all
()},
_loadSyntaxHighlighter
:
function
(
SHTheme
){
var
cssName
=
SHTheme
?
SHTheme
:
"
shCoreEclipse
"
,
that
=
this
;
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css' type='text/css' charset='utf-8' />
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shCore.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
var
languages
=
[],
isScrip
=
false
;
$
(
"
.article-body pre, .code-highlight pre
"
).
each
(
function
(){
var
name
=
this
.
className
.
split
(
"
;
"
)[
0
];
var
language
=
name
.
substr
(
7
,
name
.
length
-
1
);
if
(
this
.
className
.
indexOf
(
"
html-script: true
"
)
>-
1
&&
(
language
!==
"
xml
"
&&
language
!==
"
xhtml
"
&&
language
!==
"
xslt
"
&&
language
!=
"
html
"
)){
isScrip
=
true
}
languages
.
push
(
language
)});
if
(
isScrip
){
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
that
.
_initSyntaxHighlighter
(
languages
)}})}
else
{
that
.
_initSyntaxHighlighter
(
languages
)}}})},
parseLanguage
:
function
(
obj
){
var
isPrettify
=
false
,
isSH
=
false
;
$
(
"
.article-body pre, .code-highlight pre
"
).
each
(
function
(){
if
(
this
.
className
.
indexOf
(
"
brush
"
)
>-
1
){
isSH
=
true
}
if
(
this
.
className
.
indexOf
(
"
prettyprint
"
)
>-
1
){
isPrettify
=
true
}});
if
(
isSH
){
this
.
_loadSyntaxHighlighter
(
obj
?(
obj
.
SHTheme
?
obj
.
SHTheme
:
undefined
):
undefined
);
return
false
}
if
(
isPrettify
){
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css'>
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
prettyPrint
()}});
return
false
}
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/styles/default.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/styles/github.css'>
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/highlight.pack.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
hljs
.
initHighlightingOnLoad
()}})},
load
:
function
(
obj
){
var
that
=
this
;
that
.
insertEmotions
();
that
.
parseLanguage
(
obj
?(
obj
.
language
?
obj
.
language
:
undefined
):
undefined
);
$
(
"
#commentValidate
"
).
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
){
that
.
submitComment
()}});
$
(
"
#comment
"
).
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
&&
event
.
ctrlKey
){
that
.
submitComment
()}});
$
(
"
#captcha
"
).
click
(
function
(){
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())});
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#commentEmail
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
$
(
"
#commentURL
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#commentName
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
))}
try
{
JSON
}
catch
(
e
){
document
.
write
(
'
<script src="
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/json2.js"><
\
/script>
'
)}},
loadRandomArticles
:
function
(
headTitle
){
var
randomArticles1Label
=
this
.
tips
.
randomArticles1Label
;
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/get-random-articles.do
"
,
type
:
"
POST
"
,
success
:
function
(
result
,
textStatus
){
var
randomArticles
=
result
.
randomArticles
;
if
(
!
randomArticles
||
0
===
randomArticles
.
length
){
$
(
"
#randomArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
randomArticles
.
length
;
i
++
){
var
article
=
randomArticles
[
i
];
var
title
=
article
.
articleTitle
;
var
randomArticleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
randomArticleLiHtml
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
randomArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#randomArticles
"
).
append
(
randomArticleListHtml
)}})},
loadRelevantArticles
:
function
(
id
,
headTitle
){
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/article/id/
"
+
id
+
"
/relevant/articles
"
,
type
:
"
GET
"
,
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
relevantArticles
;
if
(
!
articles
||
0
===
articles
.
length
){
$
(
"
#relevantArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
){
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
articleLiHtml
}
var
relevantArticleListHtml
=
headTitle
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#relevantArticles
"
).
append
(
relevantArticleListHtml
)},
error
:
function
(){
$
(
"
#relevantArticles
"
).
remove
()}})},
loadExternalRelevantArticles
:
function
(
tags
,
headTitle
){
var
tips
=
this
.
tips
;
try
{
$
.
ajax
({
url
:
"
http://rhythm.b3log.org:80/get-articles-by-tags.do?tags=
"
+
tags
+
"
&blogHost=
"
+
tips
.
blogHost
+
"
&paginationPageSize=
"
+
tips
.
externalRelevantArticlesDisplayCount
,
type
:
"
GET
"
,
cache
:
true
,
dataType
:
"
jsonp
"
,
error
:
function
(){
$
(
"
#externalRelevantArticles
"
).
remove
()},
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
articles
;
if
(
!
articles
||
0
===
articles
.
length
){
$
(
"
#externalRelevantArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
){
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' target='_blank' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
articleLiHtml
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
tips
.
externalRelevantArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#externalRelevantArticles
"
).
append
(
randomArticleListHtml
)}})}
catch
(
e
){}},
submitComment
:
function
(
commentId
,
state
){
if
(
!
state
){
state
=
""
}
var
that
=
this
,
tips
=
this
.
tips
,
type
=
"
article
"
;
if
(
tips
.
externalRelevantArticlesDisplayCount
===
undefined
){
type
=
"
page
"
}
if
(
this
.
validateComment
(
state
)){
$
(
"
#submitCommentButton
"
+
state
).
attr
(
"
disabled
"
,
"
disabled
"
);
$
(
"
#commentErrorTip
"
+
state
).
show
().
html
(
this
.
tips
.
loadingLabel
);
var
requestJSONObject
=
{
oId
:
tips
.
oId
,
commentContent
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)};
if
(
!
Util
.
isLoggedIn
()){
requestJSONObject
=
{
oId
:
tips
.
oId
,
commentContent
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
commentEmail
:
$
(
"
#commentEmail
"
+
state
).
val
(),
commentURL
:
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)),
commentName
:
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
captcha
:
$
(
"
#commentValidate
"
+
state
).
val
()};
Cookie
.
createCookie
(
"
commentName
"
,
requestJSONObject
.
commentName
,
365
);
Cookie
.
createCookie
(
"
commentEmail
"
,
requestJSONObject
.
commentEmail
,
365
);
Cookie
.
createCookie
(
"
commentURL
"
,
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
365
)}
if
(
state
===
"
Reply
"
){
requestJSONObject
.
commentOriginalCommentId
=
commentId
}
$
.
ajax
({
type
:
"
POST
"
,
url
:
latkeConfig
.
servePath
+
"
/add-
"
+
type
+
"
-comment.do
"
,
cache
:
false
,
contentType
:
"
application/json
"
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
){
if
(
!
result
.
sc
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
result
.
msg
);
$
(
"
#comment
"
+
state
).
val
(
""
).
focus
();
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())}
return
}
result
.
replyNameHTML
=
""
;
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
if
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
result
.
replyNameHTML
=
"
<a>
"
+
$
(
"
#commentName
"
+
state
).
val
()
+
"
</a>
"
}
else
{
result
.
replyNameHTML
=
'
<a href="
'
+
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
())
+
'
" target="_blank">
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
"
</a>
"
}
result
.
userName
=
$
(
"
#commentName
"
+
state
).
val
()}
else
{
result
.
replyNameHTML
=
'
<a href="
'
+
window
.
location
.
host
+
'
" target="_blank">
'
+
Util
.
getUserName
()
+
"
</a>
"
;
result
.
userName
=
Util
.
getUserName
()}
that
.
addCommentAjax
(
addComment
(
result
,
state
),
state
);
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
)}})}},
addReplyForm
:
function
(
id
,
commentFormHTML
,
endHTML
){
var
that
=
this
;
if
(
id
===
this
.
currentCommentId
){
if
(
$
(
"
#commentNameReply
"
).
val
()
===
""
){
$
(
"
#commentNameReply
"
).
focus
()}
else
{
if
(
$
(
"
#commentEmailReply
"
).
val
()
===
""
){
$
(
"
#commentEmailReply
"
).
focus
()}
else
{
$
(
"
#commentReply
"
).
focus
()}}
return
}
$
(
"
#replyForm
"
).
remove
();
endHTML
=
endHTML
?
endHTML
:
""
;
if
(
endHTML
===
"
</div>
"
){
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
endHTML
)}
else
{
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
"
</table>
"
+
endHTML
)}
$
(
"
#replyForm input, #replyForm textarea
"
).
each
(
function
(){
this
.
id
=
this
.
id
+
"
Reply
"
});
$
(
"
#commentNameReply
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
$
(
"
#commentEmailReply
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
var
$label
=
$
(
"
#replyForm #commentURLLabel
"
);
if
(
$label
.
length
===
1
){
$label
.
attr
(
"
id
"
,
"
commentURLLabelReply
"
)}
$
(
"
#commentURLReply
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#replyForm #emotions
"
).
attr
(
"
id
"
,
"
emotionsReply
"
);
this
.
insertEmotions
(
"
Reply
"
);
$
(
"
#commentReply
"
).
unbind
().
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
&&
event
.
ctrlKey
){
that
.
submitComment
(
id
,
"
Reply
"
);
event
.
preventDefault
()}});
$
(
"
#commentValidateReply
"
).
unbind
().
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
){
that
.
submitComment
(
id
,
"
Reply
"
);
event
.
preventDefault
()}});
$
(
"
#replyForm #captcha
"
).
attr
(
"
id
"
,
"
captchaReply
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?
"
+
new
Date
().
getTime
()).
click
(
function
(){
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())});
$
(
"
#replyForm #commentErrorTip
"
).
attr
(
"
id
"
,
"
commentErrorTipReply
"
).
html
(
""
).
hide
();
$
(
"
#replyForm #submitCommentButton
"
).
attr
(
"
id
"
,
"
submitCommentButtonReply
"
);
$
(
"
#replyForm #submitCommentButtonReply
"
).
unbind
(
"
click
"
).
removeAttr
(
"
onclick
"
).
click
(
function
(){
that
.
submitComment
(
id
,
"
Reply
"
)});
if
(
$
(
"
#commentNameReply
"
).
val
()
===
""
){
$
(
"
#commentNameReply
"
).
focus
()}
else
{
if
(
$
(
"
#commentEmailReply
"
).
val
()
===
""
){
$
(
"
#commentEmailReply
"
).
focus
()}
else
{
$
(
"
#commentReply
"
).
focus
()}}
this
.
currentCommentId
=
id
},
hideComment
:
function
(
id
){
$
(
"
#commentRef
"
+
id
).
hide
()},
showComment
:
function
(
it
,
id
,
top
,
parentTag
){
var
positionTop
=
parseInt
(
$
(
it
).
position
().
top
);
if
(
parentTag
){
positionTop
=
parseInt
(
$
(
it
).
parents
(
parentTag
).
position
().
top
)}
if
(
$
(
"
#commentRef
"
+
id
).
length
>
0
){
$
(
"
#commentRef
"
+
id
).
show
().
css
(
"
top
"
,(
positionTop
+
top
)
+
"
px
"
)}
else
{
var
$refComment
=
$
(
"
#
"
+
id
).
clone
();
$refComment
.
addClass
(
"
comment-body-ref
"
).
attr
(
"
id
"
,
"
commentRef
"
+
id
);
$refComment
.
find
(
"
#replyForm
"
).
remove
();
$
(
"
#comments
"
).
append
(
$refComment
);
$
(
"
#commentRef
"
+
id
).
css
(
"
top
"
,(
positionTop
+
top
)
+
"
px
"
)}},
addCommentAjax
:
function
(
commentHTML
,
state
){
if
(
$
(
"
#comments
"
).
children
().
length
>
0
){
$
(
$
(
"
#comments
"
).
children
()[
0
]).
before
(
commentHTML
)}
else
{
$
(
"
#comments
"
).
html
(
commentHTML
)}
if
(
state
===
""
){
$
(
"
#commentErrorTip
"
).
html
(
""
).
hide
();
$
(
"
#comment
"
).
val
(
""
);
$
(
"
#commentValidate
"
).
val
(
""
);
$
(
"
#captcha
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())}
else
{
$
(
"
#replyForm
"
).
remove
()}
window
.
location
.
hash
=
"
#comments
"
}});
var
Page
=
function
(
tips
){
this
.
currentCommentId
=
""
;
this
.
tips
=
tips
};
$
.
extend
(
Page
.
prototype
,{
insertEmotions
:
function
(
name
){
var
_it
=
this
;
if
(
name
===
undefined
){
name
=
""
}
$
(
"
#emotions
"
+
name
+
"
span
"
).
click
(
function
(){
var
$comment
=
$
(
"
#comment
"
+
name
);
var
endPosition
=
_it
.
_getCursorEndPosition
(
$comment
[
0
]);
var
key
=
"
[
"
+
this
.
className
+
"
]
"
,
textValue
=
$comment
[
0
].
value
;
textValue
=
textValue
.
substring
(
0
,
endPosition
)
+
key
+
textValue
.
substring
(
endPosition
,
textValue
.
length
);
$
(
"
#comment
"
+
name
).
val
(
textValue
);
if
(
$
.
browser
.
msie
){
endPosition
-=
textValue
.
split
(
"
\n
"
).
length
-
1
;
var
oR
=
$comment
[
0
].
createTextRange
();
oR
.
collapse
(
true
);
oR
.
moveStart
(
"
character
"
,
endPosition
+
6
);
oR
.
select
()}
else
{
$comment
[
0
].
setSelectionRange
(
endPosition
+
6
,
endPosition
+
6
)}})},
_getCursorEndPosition
:
function
(
textarea
){
textarea
.
focus
();
if
(
textarea
.
setSelectionRange
){
return
textarea
.
selectionEnd
}
else
{
if
(
document
.
selection
){
var
i
=
0
,
oS
=
document
.
selection
.
createRange
(),
oR
=
document
.
body
.
createTextRange
();
oR
.
moveToElementText
(
textarea
);
oS
.
getBookmark
();
for
(
i
=
0
;
oR
.
compareEndPoints
(
"
StartToStart
"
,
oS
)
<
0
&&
oS
.
moveStart
(
"
character
"
,
-
1
)
!==
0
;
i
++
){
if
(
textarea
.
value
.
charAt
(
i
)
===
"
\n
"
){
i
++
}}
return
i
}}},
validateComment
:
function
(
state
){
if
(
Util
.
isLoggedIn
()){
var
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#comment
"
+
state
).
focus
()}
else
{
return
true
}
$
(
"
#commentErrorTip
"
+
state
).
show
();
return
false
}
var
commentName
=
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
if
(
2
>
commentName
.
length
||
commentName
.
length
>
20
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
nameTooLongLabel
);
$
(
"
#commentName
"
+
state
).
focus
()}
else
{
if
(
$
(
"
#commentEmail
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailCannotEmptyLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
()}
else
{
if
(
!
/^
((([
a-z
]
|
\d
|
[
!#
\$
%&'
\*\+\-\/
=
\?\^
_`{
\|
}~
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
+
(\.([
a-z
]
|
\d
|
[
!#
\$
%&'
\*\+\-\/
=
\?\^
_`{
\|
}~
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
+
)
*
)
|
((\x
22
)((((\x
20|
\x
09
)
*
(\x
0d
\x
0a
))?(\x
20|
\x
09
)
+
)?(([\x
01-
\x
08
\x
0b
\x
0c
\x
0e-
\x
1f
\x
7f
]
|
\x
21|
[\x
23-
\x
5b
]
|
[\x
5d-
\x
7e
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(\\([\x
01-
\x
09
\x
0b
\x
0c
\x
0d-
\x
7f
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
]))))
*
(((\x
20|
\x
09
)
*
(\x
0d
\x
0a
))?(\x
20|
\x
09
)
+
)?(\x
22
)))
@
((([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])([
a-z
]
|
\d
|-|
\.
|_|~|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
*
([
a-z
]
|
\d
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])))\.)
+
(([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
|
(([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])([
a-z
]
|
\d
|-|
\.
|_|~|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])
*
([
a-z
]
|
[\u
00A0-
\u
D7FF
\u
F900-
\u
FDCF
\u
FDF0-
\u
FFEF
])))\.?
$/i
.
test
(
$
(
"
#commentEmail
"
+
state
).
val
())){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailInvalidLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
()}
else
{
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#comment
"
+
state
).
focus
()}
else
{
if
(
$
(
"
#commentValidate
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
captchaCannotEmptyLabel
);
$
(
"
#commentValidate
"
+
state
).
focus
()}
else
{
return
true
}}}}}
$
(
"
#commentErrorTip
"
+
state
).
show
();
return
false
},
replaceCommentsEm
:
function
(
selector
){
var
$commentContents
=
$
(
selector
);
for
(
var
i
=
0
;
i
<
$commentContents
.
length
;
i
++
){
var
str
=
$commentContents
[
i
].
innerHTML
;
$commentContents
[
i
].
innerHTML
=
Util
.
replaceEmString
(
str
)}},
_initSyntaxHighlighter
:
function
(
languages
){
for
(
var
i
=
0
;
i
<
languages
.
length
;
i
++
){
switch
(
languages
[
i
]){
case
"
groovy
"
:
languages
[
i
]
=
"
groovy
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushGroovy.js
"
;
break
;
case
"
java
"
:
languages
[
i
]
=
"
java
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJava.js
"
;
break
;
case
"
php
"
:
languages
[
i
]
=
"
php
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPhp.js
"
;
break
;
case
"
scala
"
:
languages
[
i
]
=
"
scala
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushScala.js
"
;
break
;
case
"
sql
"
:
languages
[
i
]
=
"
sql
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushSql.js
"
;
break
;
case
"
applescript
"
:
languages
[
i
]
=
"
applescript
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushAppleScript.js
"
;
break
;
case
"
as3
"
:
case
"
actionscript3
"
:
languages
[
i
]
=
"
actionscript3 as3
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushAS3.js
"
;
break
;
case
"
bash
"
:
case
"
shell
"
:
languages
[
i
]
=
"
bash shell
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushBash.js
"
;
break
;
case
"
coldfusion
"
:
case
"
cf
"
:
languages
[
i
]
=
"
coldfusion cf
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushColdFusion.js
"
;
break
;
case
"
c#
"
:
case
"
c-sharp
"
:
case
"
csharp
"
:
languages
[
i
]
=
"
c# c-sharp csharp
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCSharp.js
"
;
break
;
case
"
cpp
"
:
case
"
c
"
:
languages
[
i
]
=
"
cpp c
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCpp.js
"
;
break
;
case
"
css
"
:
languages
[
i
]
=
"
css
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushCss.js
"
;
break
;
case
"
delphi
"
:
case
"
pascal
"
:
languages
[
i
]
=
"
delphi pascal
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushDelphi.js
"
;
break
;
case
"
diff
"
:
case
"
patch
"
:
case
"
pas
"
:
languages
[
i
]
=
"
diff patch pas
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushDiff.js
"
;
break
;
case
"
erl
"
:
case
"
erlang
"
:
languages
[
i
]
=
"
erl erlang
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushErlang.js
"
;
break
;
case
"
js
"
:
case
"
jscript
"
:
case
"
javascript
"
:
languages
[
i
]
=
"
js jscript javascript
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJScript.js
"
;
break
;
case
"
jfx
"
:
case
"
javafx
"
:
languages
[
i
]
=
"
jfx javafx
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushJavaFX.js
"
;
break
;
case
"
perl
"
:
case
"
pl
"
:
languages
[
i
]
=
"
perl pl
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPerl.js
"
;
break
;
case
"
plain
"
:
case
"
text
"
:
languages
[
i
]
=
"
text plain
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPlain.js
"
;
break
;
case
"
ps
"
:
case
"
powershell
"
:
languages
[
i
]
=
"
ps powershell
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPowerShell.js
"
;
break
;
case
"
py
"
:
case
"
python
"
:
languages
[
i
]
=
"
py python
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushPython.js
"
;
break
;
case
"
rails
"
:
case
"
ror
"
:
case
"
ruby
"
:
case
"
rb
"
:
languages
[
i
]
=
"
ruby rails ror rb
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushRuby.js
"
;
break
;
case
"
sass
"
:
case
"
scss
"
:
languages
[
i
]
=
"
sass scss
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushSass.js
"
;
break
;
case
"
vb
"
:
case
"
vbnet
"
:
languages
[
i
]
=
"
vb vbnet
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushVb.js
"
;
break
;
case
"
xml
"
:
case
"
xhtml
"
:
case
"
xslt
"
:
case
"
html
"
:
languages
[
i
]
=
"
xml xhtml xslt html
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
;
break
;
default
:
break
}}
SyntaxHighlighter
.
autoloader
.
apply
(
null
,
languages
);
SyntaxHighlighter
.
config
.
stripBrs
=
true
;
SyntaxHighlighter
.
all
()},
_loadSyntaxHighlighter
:
function
(
SHTheme
){
var
cssName
=
SHTheme
?
SHTheme
:
"
shCoreEclipse
"
,
that
=
this
;
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css' type='text/css' charset='utf-8' />
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shCore.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
var
languages
=
[],
isScrip
=
false
;
$
(
"
.article-body pre, .code-highlight pre
"
).
each
(
function
(){
var
name
=
this
.
className
.
split
(
"
;
"
)[
0
];
var
language
=
name
.
substr
(
7
,
name
.
length
-
1
);
if
(
this
.
className
.
indexOf
(
"
html-script: true
"
)
>-
1
&&
(
language
!==
"
xml
"
&&
language
!==
"
xhtml
"
&&
language
!==
"
xslt
"
&&
language
!=
"
html
"
)){
isScrip
=
true
}
languages
.
push
(
language
)});
if
(
isScrip
){
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
that
.
_initSyntaxHighlighter
(
languages
)}})}
else
{
that
.
_initSyntaxHighlighter
(
languages
)}}})},
parseLanguage
:
function
(
obj
){
var
isPrettify
=
false
,
isSH
=
false
;
$
(
"
.article-body pre, .code-highlight pre
"
).
each
(
function
(){
if
(
this
.
className
.
indexOf
(
"
brush
"
)
>-
1
){
isSH
=
true
}
if
(
this
.
className
.
indexOf
(
"
prettyprint
"
)
>-
1
){
isPrettify
=
true
}});
if
(
isSH
){
this
.
_loadSyntaxHighlighter
(
obj
?(
obj
.
SHTheme
?
obj
.
SHTheme
:
undefined
):
undefined
);
return
false
}
if
(
isPrettify
){
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css'>
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
prettyPrint
()}});
return
false
}
if
(
document
.
createStyleSheet
){
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/styles/default.css
"
)}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/styles/github.css'>
"
))}
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/highlight/highlight.pack.js
"
,
dataType
:
"
script
"
,
cache
:
true
,
success
:
function
(){
hljs
.
initHighlightingOnLoad
()}})},
load
:
function
(
obj
){
var
that
=
this
;
that
.
insertEmotions
();
that
.
parseLanguage
(
obj
?(
obj
.
language
?
obj
.
language
:
undefined
):
undefined
);
$
(
"
#commentValidate
"
).
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
){
that
.
submitComment
()}});
$
(
"
#comment
"
).
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
&&
event
.
ctrlKey
){
that
.
submitComment
()}});
$
(
"
#captcha
"
).
click
(
function
(){
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())});
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#commentEmail
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
$
(
"
#commentURL
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#commentName
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
))}
try
{
JSON
}
catch
(
e
){
document
.
write
(
'
<script src="
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/json2.js"><
\
/script>
'
)}},
loadRandomArticles
:
function
(
headTitle
){
var
randomArticles1Label
=
this
.
tips
.
randomArticles1Label
;
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/get-random-articles.do
"
,
type
:
"
POST
"
,
success
:
function
(
result
,
textStatus
){
var
randomArticles
=
result
.
randomArticles
;
if
(
!
randomArticles
||
0
===
randomArticles
.
length
){
$
(
"
#randomArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
randomArticles
.
length
;
i
++
){
var
article
=
randomArticles
[
i
];
var
title
=
article
.
articleTitle
;
var
randomArticleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
randomArticleLiHtml
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
randomArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#randomArticles
"
).
append
(
randomArticleListHtml
)}})},
loadRelevantArticles
:
function
(
id
,
headTitle
){
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/article/id/
"
+
id
+
"
/relevant/articles
"
,
type
:
"
GET
"
,
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
relevantArticles
;
if
(
!
articles
||
0
===
articles
.
length
){
$
(
"
#relevantArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
){
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
articleLiHtml
}
var
relevantArticleListHtml
=
headTitle
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#relevantArticles
"
).
append
(
relevantArticleListHtml
)},
error
:
function
(){
$
(
"
#relevantArticles
"
).
remove
()}})},
loadExternalRelevantArticles
:
function
(
tags
,
headTitle
){
var
tips
=
this
.
tips
;
try
{
$
.
ajax
({
url
:
"
http://rhythm.b3log.org:80/get-articles-by-tags.do?tags=
"
+
tags
+
"
&blogHost=
"
+
tips
.
blogHost
+
"
&paginationPageSize=
"
+
tips
.
externalRelevantArticlesDisplayCount
,
type
:
"
GET
"
,
cache
:
true
,
dataType
:
"
jsonp
"
,
error
:
function
(){
$
(
"
#externalRelevantArticles
"
).
remove
()},
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
articles
;
if
(
!
articles
||
0
===
articles
.
length
){
$
(
"
#externalRelevantArticles
"
).
remove
();
return
}
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
){
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li><a rel='nofollow' title='
"
+
title
+
"
' target='_blank' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
articleLiHtml
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
tips
.
externalRelevantArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#externalRelevantArticles
"
).
append
(
randomArticleListHtml
)}})}
catch
(
e
){}},
submitComment
:
function
(
commentId
,
state
){
if
(
!
state
){
state
=
""
}
var
that
=
this
,
tips
=
this
.
tips
,
type
=
"
article
"
;
if
(
tips
.
externalRelevantArticlesDisplayCount
===
undefined
){
type
=
"
page
"
}
if
(
this
.
validateComment
(
state
)){
$
(
"
#submitCommentButton
"
+
state
).
attr
(
"
disabled
"
,
"
disabled
"
);
$
(
"
#commentErrorTip
"
+
state
).
show
().
html
(
this
.
tips
.
loadingLabel
);
var
requestJSONObject
=
{
oId
:
tips
.
oId
,
commentContent
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)};
if
(
!
Util
.
isLoggedIn
()){
requestJSONObject
=
{
oId
:
tips
.
oId
,
commentContent
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
commentEmail
:
$
(
"
#commentEmail
"
+
state
).
val
(),
commentURL
:
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)),
commentName
:
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
captcha
:
$
(
"
#commentValidate
"
+
state
).
val
()};
Cookie
.
createCookie
(
"
commentName
"
,
requestJSONObject
.
commentName
,
365
);
Cookie
.
createCookie
(
"
commentEmail
"
,
requestJSONObject
.
commentEmail
,
365
);
Cookie
.
createCookie
(
"
commentURL
"
,
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
365
)}
if
(
state
===
"
Reply
"
){
requestJSONObject
.
commentOriginalCommentId
=
commentId
}
$
.
ajax
({
type
:
"
POST
"
,
url
:
latkeConfig
.
servePath
+
"
/add-
"
+
type
+
"
-comment.do
"
,
cache
:
false
,
contentType
:
"
application/json
"
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
){
if
(
!
result
.
sc
){
$
(
"
#commentErrorTip
"
+
state
).
html
(
result
.
msg
);
$
(
"
#comment
"
+
state
).
val
(
""
).
focus
();
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())}
return
}
result
.
replyNameHTML
=
""
;
if
(
!
Util
.
isLoggedIn
()){
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
if
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
){
result
.
replyNameHTML
=
"
<a>
"
+
$
(
"
#commentName
"
+
state
).
val
()
+
"
</a>
"
}
else
{
result
.
replyNameHTML
=
'
<a href="
'
+
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
())
+
'
" target="_blank">
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
"
</a>
"
}
result
.
userName
=
$
(
"
#commentName
"
+
state
).
val
()}
else
{
result
.
replyNameHTML
=
'
<a href="
'
+
window
.
location
.
host
+
'
" target="_blank">
'
+
Util
.
getUserName
()
+
"
</a>
"
;
result
.
userName
=
Util
.
getUserName
()}
that
.
addCommentAjax
(
addComment
(
result
,
state
),
state
);
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
)}})}},
addReplyForm
:
function
(
id
,
commentFormHTML
,
endHTML
){
var
that
=
this
;
if
(
id
===
this
.
currentCommentId
){
if
(
$
(
"
#commentNameReply
"
).
val
()
===
""
){
$
(
"
#commentNameReply
"
).
focus
()}
else
{
if
(
$
(
"
#commentEmailReply
"
).
val
()
===
""
){
$
(
"
#commentEmailReply
"
).
focus
()}
else
{
$
(
"
#commentReply
"
).
focus
()}}
return
}
$
(
"
#replyForm
"
).
remove
();
endHTML
=
endHTML
?
endHTML
:
""
;
if
(
endHTML
===
"
</div>
"
){
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
endHTML
)}
else
{
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
"
</table>
"
+
endHTML
)}
$
(
"
#replyForm input, #replyForm textarea
"
).
each
(
function
(){
this
.
id
=
this
.
id
+
"
Reply
"
});
$
(
"
#commentNameReply
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
$
(
"
#commentEmailReply
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
var
$label
=
$
(
"
#replyForm #commentURLLabel
"
);
if
(
$label
.
length
===
1
){
$label
.
attr
(
"
id
"
,
"
commentURLLabelReply
"
)}
$
(
"
#commentURLReply
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#replyForm #emotions
"
).
attr
(
"
id
"
,
"
emotionsReply
"
);
this
.
insertEmotions
(
"
Reply
"
);
$
(
"
#commentReply
"
).
unbind
().
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
&&
event
.
ctrlKey
){
that
.
submitComment
(
id
,
"
Reply
"
);
event
.
preventDefault
()}});
$
(
"
#commentValidateReply
"
).
unbind
().
keypress
(
function
(
event
){
if
(
event
.
keyCode
===
13
){
that
.
submitComment
(
id
,
"
Reply
"
);
event
.
preventDefault
()}});
$
(
"
#replyForm #captcha
"
).
attr
(
"
id
"
,
"
captchaReply
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?
"
+
new
Date
().
getTime
()).
click
(
function
(){
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())});
$
(
"
#replyForm #commentErrorTip
"
).
attr
(
"
id
"
,
"
commentErrorTipReply
"
).
html
(
""
).
hide
();
$
(
"
#replyForm #submitCommentButton
"
).
attr
(
"
id
"
,
"
submitCommentButtonReply
"
);
$
(
"
#replyForm #submitCommentButtonReply
"
).
unbind
(
"
click
"
).
removeAttr
(
"
onclick
"
).
click
(
function
(){
that
.
submitComment
(
id
,
"
Reply
"
)});
if
(
$
(
"
#commentNameReply
"
).
val
()
===
""
){
$
(
"
#commentNameReply
"
).
focus
()}
else
{
if
(
$
(
"
#commentEmailReply
"
).
val
()
===
""
){
$
(
"
#commentEmailReply
"
).
focus
()}
else
{
$
(
"
#commentReply
"
).
focus
()}}
this
.
currentCommentId
=
id
},
hideComment
:
function
(
id
){
$
(
"
#commentRef
"
+
id
).
hide
()},
showComment
:
function
(
it
,
id
,
top
,
parentTag
){
var
positionTop
=
parseInt
(
$
(
it
).
position
().
top
);
if
(
parentTag
){
positionTop
=
parseInt
(
$
(
it
).
parents
(
parentTag
).
position
().
top
)}
if
(
$
(
"
#commentRef
"
+
id
).
length
>
0
){
$
(
"
#commentRef
"
+
id
).
show
().
css
(
"
top
"
,(
positionTop
+
top
)
+
"
px
"
)}
else
{
var
$refComment
=
$
(
"
#
"
+
id
).
clone
();
$refComment
.
addClass
(
"
comment-body-ref
"
).
attr
(
"
id
"
,
"
commentRef
"
+
id
);
$refComment
.
find
(
"
#replyForm
"
).
remove
();
$
(
"
#comments
"
).
append
(
$refComment
);
$
(
"
#commentRef
"
+
id
).
css
(
"
top
"
,(
positionTop
+
top
)
+
"
px
"
)}},
addCommentAjax
:
function
(
commentHTML
,
state
){
if
(
$
(
"
#comments
"
).
children
().
length
>
0
){
$
(
$
(
"
#comments
"
).
children
()[
0
]).
before
(
commentHTML
)}
else
{
$
(
"
#comments
"
).
html
(
commentHTML
)}
if
(
state
===
""
){
$
(
"
#commentErrorTip
"
).
html
(
""
).
hide
();
$
(
"
#comment
"
).
val
(
""
);
$
(
"
#commentValidate
"
).
val
(
""
);
$
(
"
#captcha
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
())}
else
{
$
(
"
#replyForm
"
).
remove
()}
window
.
location
.
hash
=
"
#comments
"
}});
\ No newline at end of file
src/main/webapp/skins/mobile/js/l10n.min.js
View file @
c900f9b2
/*
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
function
convertEntities
(
t
){
var
e
,
n
;
if
(
e
=
function
(
t
){
if
(
/&
[^
;
]
+;/
.
test
(
t
)){
var
e
=
document
.
createElement
(
"
div
"
);
return
e
.
innerHTML
=
t
,
e
.
firstChild
?
e
.
firstChild
.
nodeValue
:
t
}
return
t
},
"
string
"
==
typeof
t
)
return
e
(
t
);
if
(
"
object
"
==
typeof
t
)
for
(
n
in
t
)
"
string
"
==
typeof
t
[
n
]
&&
(
t
[
n
]
=
e
(
t
[
n
]));
return
t
}
function
convertEntities
(
t
){
var
e
,
n
;
if
(
e
=
function
(
t
){
if
(
/&
[^
;
]
+;/
.
test
(
t
)){
var
e
=
document
.
createElement
(
"
div
"
);
return
e
.
innerHTML
=
t
,
e
.
firstChild
?
e
.
firstChild
.
nodeValue
:
t
}
return
t
},
"
string
"
==
typeof
t
)
return
e
(
t
);
if
(
"
object
"
==
typeof
t
)
for
(
n
in
t
)
"
string
"
==
typeof
t
[
n
]
&&
(
t
[
n
]
=
e
(
t
[
n
]));
return
t
}
\ No newline at end of file
src/main/webapp/skins/yilia/css/yilia.min.css
View file @
c900f9b2
/**
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@charset
"utf-8"
;
body
,
html
{
height
:
100%
;
max-height
:
100%
}
body
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
text-rendering
:
geometricPrecision
}
dl
dd
,
dl
dt
{
margin-bottom
:
1em
}
body
,
li
li
{
margin
:
0
}
blockquote
cite
,
dl
dt
{
font-weight
:
700
}
.fn-left
,
dl
dt
{
float
:
left
}
.form
button
,
a
,
blockquote
{
transition
:
all
.3s
ease
}
.classify
li
,
.comments
,
.dynamic
li
,
.side
nav
ul
{
list-style
:
none
}
html
{
font-size
:
16px
;
-webkit-tap-highlight-color
:
transparent
}
body
{
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
;
letter-spacing
:
.01rem
;
font-size
:
100%
;
line-height
:
1.75em
;
color
:
rgba
(
0
,
0
,
0
,
.6
);
-webkit-font-feature-settings
:
'kern'
1
;
-moz-font-feature-settings
:
'kern'
1
;
-o-font-feature-settings
:
'kern'
1
;
background-color
:
#eaeaea
}
::-moz-selection
{
background
:
#D6EDFF
}
::selection
{
background
:
#D6EDFF
}
a
{
text-decoration
:
none
;
color
:
#258fb8
;
outline
:
0
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
-webkit-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
color
:
#666
;
line-height
:
1.15em
;
font-family
:
"Open Sans"
,
"Microsoft Yahei"
,
Helvetica
}
h1
{
letter-spacing
:
-2px
;
text-indent
:
-3px
}
h2
{
letter-spacing
:
-1px
}
img
{
max-width
:
100%
}
dl
,
ol
,
p
,
ul
{
-webkit-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
}
ol
,
ul
{
padding-left
:
3rem
}
ol
ol
,
ol
ul
,
ul
ol
,
ul
ul
{
padding-left
:
2em
}
dl
dt
{
width
:
180px
;
overflow
:
hidden
;
clear
:
left
;
text-align
:
right
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
dl
dd
{
margin-left
:
200px
}
hr
{
display
:
block
;
height
:
1px
;
border
:
0
;
border-top
:
#EFEFEF
1px
solid
;
margin
:
3.2em
0
;
padding
:
0
}
blockquote
{
box-sizing
:
border-box
;
margin
:
1.75em
0
;
padding
:
0
0
0
1.75em
;
border-left
:
5px
solid
}
blockquote
:hover
{
border-color
:
#b0a0aa
}
blockquote
p
{
margin
:
.8em
0
;
font-style
:
italic
}
blockquote
small
{
display
:
inline-block
;
margin
:
.8em
0
.8em
1.5em
;
font-size
:
.9em
;
color
:
#CCC
}
blockquote
small
:before
{
content
:
"\2014 \00A0"
}
blockquote
cite
a
{
font-weight
:
400
}
mark
{
background-color
:
#fdffb6
}
code
,
tt
{
padding
:
1px
3px
;
font-family
:
Inconsolata
,
monospace
,
"Microsoft Yahei"
,
Helvetica
;
font-size
:
.85em
;
white-space
:
pre-wrap
;
border
:
1px
solid
#E3EDF3
;
background
:
#F7FAFB
;
border-radius
:
2px
}
pre
{
font-size
:
.9em
}
pre
code
,
pre
tt
{
font-size
:
inherit
;
white-space
:
pre-wrap
;
background
:
0
0
;
border
:
none
;
padding
:
0
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?3js4w7)
;
src
:
url(fonts/icomoon.eot?3js4w7#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?3js4w7)
format
(
'truetype'
),
url(fonts/icomoon.woff?3js4w7)
format
(
'woff'
),
url(fonts/icomoon.svg?3js4w7#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
;
speak
:
none
;
font-style
:
normal
;
font-weight
:
400
;
font-variant
:
normal
;
text-transform
:
none
;
line-height
:
1
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
vertical-align
:
middle
}
.icon-tag
:before
{
content
:
"\e903"
}
.icon-date
:before
{
content
:
"\e902"
}
.icon-github
:before
{
content
:
"\e900"
}
.icon-rss
:before
{
content
:
"\e901"
}
.icon-register
:before
{
content
:
"\e600"
}
.icon-logout
:before
{
content
:
"\e601"
}
.icon-setting
:before
{
content
:
"\e602"
}
.icon-gplus
:before
{
content
:
"\e603"
}
.icon-weibo
:before
{
content
:
"\e605"
}
.icon-goup
:before
{
content
:
"\e60a"
}
.icon-twitter
:before
{
content
:
"\e60b"
}
.icon-t-weibo
:before
{
content
:
"\e60d"
}
.icon-login
:before
{
content
:
"\e611"
}
.form
{
width
:
100%
;
padding
:
30px
}
#captcha
,
#captchaReply
{
height
:
27px
;
display
:
inline-block
;
vertical-align
:
inherit
}
.form
button
,
.form
input
,
.form
textarea
{
border
:
1px
solid
#CCC
;
background-color
:
#FAFAFA
;
border-radius
:
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
7px
8px
;
width
:
100%
;
box-sizing
:
border-box
;
outline
:
0
;
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
}
.tags
.tag
,
footer
.footer
{
font-family
:
Menlo
,
Monaco
,
"Andale Mono"
,
"lucida console"
,
"Courier New"
,
monospace
}
.form
button
{
width
:
auto
;
vertical-align
:
bottom
;
cursor
:
pointer
}
.form
button
:hover
{
background-color
:
#b0a0aa
;
color
:
#FFF
;
box-shadow
:
0
0
0
;
border-color
:
#b0a0aa
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
176
,
160
,
170
,
.5
);
border
:
1px
solid
#b0a0aa
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url(../images/emotions/emotions-ease.png)
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
;
transition
:
all
.2s
ease-out
;
-webkit-transition
:
all
.2s
ease-out
;
-moz-transition
:
all
.2s
ease-out
}
#emotions
span
:hover
{
transform
:
scale
(
1.2
)
rotate
(
360deg
);
-webkit-transform
:
scale
(
1.2
)
rotate
(
360deg
);
-moz-transform
:
scale
(
1.2
)
rotate
(
360deg
)}
.em01
{
background-position
:
-24px
0
}
.em02
{
background-position
:
-48px
0
}
.em03
{
background-position
:
-72px
0
}
.em04
{
background-position
:
-96px
0
}
.em05
{
background-position
:
0
-24px
}
.em06
{
background-position
:
-24px
-24px
}
.em07
{
background-position
:
-48px
-24px
}
.em08
{
background-position
:
-72px
-24px
}
.em09
{
background-position
:
-96px
-24px
}
.em10
{
background-position
:
0
-48px
}
.em11
{
background-position
:
-24px
-48px
}
.em12
{
background-position
:
-48px
-48px
}
.em13
{
background-position
:
-72px
-48px
}
.em14
{
background-position
:
-96px
-48px
}
.side
{
position
:
fixed
;
background-color
:
#FFF
;
height
:
100%
;
width
:
300px
}
.side
.overlay
,
.side
footer
,
main
{
position
:
absolute
}
.side
a
{
color
:
#696969
;
font-size
:
30px
}
.side
a
:hover
{
color
:
#b0a0aa
}
.side
.overlay
{
height
:
180px
;
background-color
:
#000
;
opacity
:
.7
;
width
:
100%
;
z-index
:
-1
}
.side
.content
{
width
:
76%
;
text-align
:
center
;
margin
:
112px
auto
0
}
.side
.avatar
{
display
:
block
;
border
:
5px
solid
#fff
;
border-radius
:
50%
;
width
:
128px
;
height
:
128px
;
margin
:
0
auto
;
transition
:
all
.1s
ease-in
}
.side
.avatar
:hover
{
border-color
:
rgba
(
37
,
143
,
184
,
.6
)}
.side
hgroup
h1
{
margin
:
10px
0
;
line-height
:
30px
}
.side
.subtitle
{
color
:
#999
;
font-size
:
14px
;
line-height
:
25px
}
.side
nav
ul
{
margin
:
0
;
padding
:
0
}
.side
nav
a
{
font-size
:
14px
}
.side
footer
{
bottom
:
15px
;
left
:
50%
;
margin-left
:
-65px
}
main
{
right
:
0
;
min-height
:
100%
;
background
:
#eaeaea
;
left
:
300px
;
width
:
auto
}
article
{
margin
:
30px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
position
:
relative
;
transition
:
all
.2s
ease-in
;
visibility
:
hidden
}
.share
span
,
.tags
.avatar
{
transition
:
all
.2s
ease-out
0s
}
article
.post
,
article
.show
{
visibility
:
visible
}
article
.show
{
-webkit-animation
:
bounce
.6s
;
animation
:
bounce
.6s
}
@-webkit-keyframes
bounce
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1.02
)}
100
%
{
-webkit-transform
:
scale
(
1
)}}
@-moz-keyframes
bounce
{
0
%
{
opacity
:
0
;
-moz-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-moz-transform
:
scale
(
1.02
)}
100
%
{
-moz-transform
:
scale
(
1
)}}
.tags
.tag
:hover
,
article
.abstract
a
:hover
,
nav
.pagination
a
.page-num
:hover
{
opacity
:
.7
}
article
header
{
border-left
:
5px
solid
;
padding
:
15px
30px
15px
25px
}
article
header
:hover
{
border-color
:
#b0a0aa
}
article
header
h2
{
margin
:
0
;
font-size
:
26px
;
padding-right
:
110px
}
article
header
a
{
color
:
#696969
;
margin-left
:
0
;
font-weight
:
300
;
line-height
:
35px
}
article
header
a
:hover
{
color
:
#b0a0aa
}
article
header
sup
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#999
}
article
header
time
{
font-size
:
14px
;
position
:
absolute
;
right
:
30px
;
color
:
#aaa
;
top
:
18px
}
article
.abstract
{
line-height
:
1.8em
;
padding-right
:
30px
;
padding-left
:
30px
;
overflow
:
hidden
;
word-wrap
:
break-word
}
article
footer
{
padding
:
20px
35px
0
0
;
margin
:
30px
30px
20px
;
border-top
:
1px
solid
#ddd
}
.tags
.avatar
{
width
:
20px
;
border-radius
:
10px
;
right
:
30px
;
position
:
absolute
;
bottom
:
25px
}
.share
span
{
cursor
:
pointer
}
.share
span
:hover
,
.tags
.avatar
:hover
{
transform
:
rotate
(
360deg
);
color
:
#333
}
.tags
.tag
{
color
:
#fff
;
font-size
:
10px
;
height
:
18px
;
line-height
:
18px
;
display
:
inline-block
;
padding
:
0
5px
0
10px
;
position
:
relative
;
border-radius
:
0
5px
5px
0
;
margin
:
5px
9px
5px
8px
;
background-color
:
#7b5d5f
}
.tags
.tag
:after
,
.tags
.tag
:before
{
content
:
" "
;
position
:
absolute
}
.tags
.tag
:before
{
width
:
0
;
height
:
0
;
top
:
0
;
left
:
-18px
;
border
:
9px
solid
transparent
;
border-right-color
:
#7b5d5f
}
.tags
.tag
:after
{
width
:
4px
;
height
:
4px
;
background-color
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0
0
0
1px
rgba
(
0
,
0
,
0
,
.3
);
top
:
7px
;
left
:
2px
}
a
.color1.tag
{
background
:
#ff945c
}
a
.color1.tag
:before
{
border-right-color
:
#ff945c
}
a
.color2.tag
{
background
:
#f5c7b7
}
a
.color2.tag
:before
{
border-right-color
:
#f5c7b7
}
a
.color3.tag
{
background
:
#ba8f6c
}
a
.color3.tag
:before
{
border-right-color
:
#ba8f6c
}
a
.color4.tag
{
background
:
#cfb7c4
}
a
.color4.tag
:before
{
border-right-color
:
#cfb7c4
}
nav
.pagination
{
text-align
:
center
;
margin-top
:
30px
}
nav
.pagination
.page-num
{
width
:
20px
;
height
:
20px
;
background
:
#4d4d4d
;
border-radius
:
50%
;
display
:
inline-block
;
color
:
#fff
;
line-height
:
20px
;
font-size
:
12px
;
margin
:
0
3px
30px
}
nav
.pagination
.page-num.current
{
background
:
#88acdb
}
nav
.pagination
.extend
{
color
:
#4d4d4d
;
margin
:
0
27px
;
opacity
:
0
}
nav
.pagination
.extend
:hover
{
color
:
#b0a0aa
}
nav
.pagination
:hover
.extend
{
opacity
:
1
}
.post
.tags
.avatar
{
bottom
:
inherit
;
margin-top
:
4px
}
.post
section
.tags
{
margin
:
0
}
.post
header
{
padding-bottom
:
0
}
.post
.share
{
padding
:
10px
0
0
;
margin-top
:
15px
;
font-size
:
14px
}
.post
aside
a
{
color
:
#DDD
}
.post
aside
a
>
strong
{
background
:
#ddd
;
color
:
#fff
;
border-radius
:
50%
;
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
transition
:
background
.3s
;
vertical-align
:
middle
;
line-height
:
18px
;
text-align
:
center
}
.post
aside
a
:hover
{
color
:
#4d4d4d
}
.post
aside
a
:hover
>
strong
{
background-color
:
#4d4d4d
}
.comments
{
margin
:
60px
60px
0
50px
;
padding
:
0
;
position
:
relative
}
.comments
li
{
margin-bottom
:
30px
;
padding-bottom
:
30px
;
border-bottom
:
1px
solid
#ddd
}
.comments
li
time
{
border-left
:
1px
solid
#d5dbde
;
padding-left
:
10px
;
margin-left
:
10px
}
.comments
.avatar
{
position
:
absolute
;
height
:
60px
;
width
:
60px
;
border-radius
:
50%
;
border
:
3px
solid
#FFF
}
.comments
.content
{
margin-left
:
80px
;
min-height
:
66px
}
.comments
.post-meta
{
margin-bottom
:
9px
}
.comments
.content
img
{
vertical-align
:
sub
}
.comments
li
.comment-body-ref
{
position
:
absolute
;
background-color
:
#FFF
;
width
:
80%
;
margin-left
:
80px
;
padding
:
10px
;
border
:
1px
solid
#ddd
}
footer
.footer
{
line-height
:
1rem
;
font-size
:
12px
;
text-shadow
:
0
1px
#fff
;
opacity
:
.6
;
margin
:
0
30px
30px
}
footer
.footer
.icon-goup
{
position
:
fixed
;
bottom
:
35px
;
right
:
5px
;
-webkit-animation
:
upbounce
4s
2s
infinite
;
animation
:
upbounce
4s
2s
infinite
;
z-index
:
10
;
font-size
:
20px
;
cursor
:
pointer
;
color
:
#b0a0aa
;
transition
:
all
.3s
ease
}
footer
.footer
.icon-goup
:hover
{
color
:
#4a4a4a
}
@-webkit-keyframes
upbounce
{
0
%,
10
%,
25
%,
40
%,
50
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
20
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
30
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
@keyframes
upbounce
{
0
%,
100
%,
20
%,
50
%,
80
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
40
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
60
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
.classify
li
{
font-size
:
20px
;
float
:
left
;
margin
:
0
30px
20px
0
}
.classify
.tags
.tag
{
font-size
:
20px
;
padding
:
10px
}
.classify
.tags
.tag
:before
{
left
:
-38px
;
border-width
:
19px
}
.classify
.tags
.tag
:after
{
top
:
15px
;
left
:
-6px
;
width
:
8px
;
height
:
8px
}
.classify-name
{
font-size
:
18px
;
margin
:
30px
}
.dynamic
.comments
li
:last-child
{
border-bottom-width
:
0
}
@media
only
screen
and
(
max-width
:
500px
){
.side
,
.side
.avatar
{
position
:
relative
}
.side
{
height
:
auto
;
width
:
100%
}
.side
footer
,
main
{
position
:
initial
}
.side
.content
{
margin-top
:
0
;
padding-top
:
20px
}
.side
.overlay
{
height
:
100px
;
z-index
:
0
}
.side
nav
{
display
:
none
}
.side
footer
{
margin
:
10px
auto
;
padding-bottom
:
16px
}
article
{
margin
:
10px
}
.comments
{
margin
:
20px
20px
0
}
footer
.footer
{
text-align
:
center
}
footer
.footer
.fn-right
{
float
:
none
;
display
:
block
}}
@charset
"utf-8"
;
body
,
html
{
height
:
100%
;
max-height
:
100%
}
body
,
dl
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
ol
,
p
,
ul
{
text-rendering
:
geometricPrecision
}
dl
dd
,
dl
dt
{
margin-bottom
:
1em
}
body
,
li
li
{
margin
:
0
}
blockquote
cite
,
dl
dt
{
font-weight
:
700
}
.fn-left
,
dl
dt
{
float
:
left
}
.form
button
,
a
,
blockquote
{
transition
:
all
.3s
ease
}
.classify
li
,
.comments
,
.dynamic
li
,
.side
nav
ul
{
list-style
:
none
}
html
{
font-size
:
16px
;
-webkit-tap-highlight-color
:
transparent
}
body
{
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
;
letter-spacing
:
.01rem
;
font-size
:
100%
;
line-height
:
1.75em
;
color
:
rgba
(
0
,
0
,
0
,
.6
);
-webkit-font-feature-settings
:
'kern'
1
;
-moz-font-feature-settings
:
'kern'
1
;
-o-font-feature-settings
:
'kern'
1
;
background-color
:
#eaeaea
}
::-moz-selection
{
background
:
#D6EDFF
}
::selection
{
background
:
#D6EDFF
}
a
{
text-decoration
:
none
;
color
:
#258fb8
;
outline
:
0
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
-webkit-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'dlig'
1
,
'liga'
1
,
'lnum'
1
,
'kern'
1
;
color
:
#666
;
line-height
:
1.15em
;
font-family
:
"Open Sans"
,
"Microsoft Yahei"
,
Helvetica
}
h1
{
letter-spacing
:
-2px
;
text-indent
:
-3px
}
h2
{
letter-spacing
:
-1px
}
img
{
max-width
:
100%
}
dl
,
ol
,
p
,
ul
{
-webkit-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-moz-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
;
-o-font-feature-settings
:
'liga'
1
,
'onum'
1
,
'kern'
1
}
ol
,
ul
{
padding-left
:
3rem
}
ol
ol
,
ol
ul
,
ul
ol
,
ul
ul
{
padding-left
:
2em
}
dl
dt
{
width
:
180px
;
overflow
:
hidden
;
clear
:
left
;
text-align
:
right
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
dl
dd
{
margin-left
:
200px
}
hr
{
display
:
block
;
height
:
1px
;
border
:
0
;
border-top
:
#EFEFEF
1px
solid
;
margin
:
3.2em
0
;
padding
:
0
}
blockquote
{
box-sizing
:
border-box
;
margin
:
1.75em
0
;
padding
:
0
0
0
1.75em
;
border-left
:
5px
solid
}
blockquote
:hover
{
border-color
:
#b0a0aa
}
blockquote
p
{
margin
:
.8em
0
;
font-style
:
italic
}
blockquote
small
{
display
:
inline-block
;
margin
:
.8em
0
.8em
1.5em
;
font-size
:
.9em
;
color
:
#CCC
}
blockquote
small
:before
{
content
:
"\2014 \00A0"
}
blockquote
cite
a
{
font-weight
:
400
}
mark
{
background-color
:
#fdffb6
}
code
,
tt
{
padding
:
1px
3px
;
font-family
:
Inconsolata
,
monospace
,
"Microsoft Yahei"
,
Helvetica
;
font-size
:
.85em
;
white-space
:
pre-wrap
;
border
:
1px
solid
#E3EDF3
;
background
:
#F7FAFB
;
border-radius
:
2px
}
pre
{
font-size
:
.9em
}
pre
code
,
pre
tt
{
font-size
:
inherit
;
white-space
:
pre-wrap
;
background
:
0
0
;
border
:
none
;
padding
:
0
}
.fn-clear
:after
,
.fn-clear
:before
{
display
:
table
;
content
:
""
}
.fn-clear
:after
{
clear
:
both
}
.fn-right
{
float
:
right
}
.fn-none
{
display
:
none
}
@font-face
{
font-family
:
icomoon
;
src
:
url(fonts/icomoon.eot?3js4w7)
;
src
:
url(fonts/icomoon.eot?3js4w7#iefix)
format
(
'embedded-opentype'
),
url(fonts/icomoon.ttf?3js4w7)
format
(
'truetype'
),
url(fonts/icomoon.woff?3js4w7)
format
(
'woff'
),
url(fonts/icomoon.svg?3js4w7#icomoon)
format
(
'svg'
);
font-weight
:
400
;
font-style
:
normal
}
[
class
*=
" icon-"
],[
class
^=
icon-
]
{
font-family
:
icomoon
;
speak
:
none
;
font-style
:
normal
;
font-weight
:
400
;
font-variant
:
normal
;
text-transform
:
none
;
line-height
:
1
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
vertical-align
:
middle
}
.icon-tag
:before
{
content
:
"\e903"
}
.icon-date
:before
{
content
:
"\e902"
}
.icon-github
:before
{
content
:
"\e900"
}
.icon-rss
:before
{
content
:
"\e901"
}
.icon-register
:before
{
content
:
"\e600"
}
.icon-logout
:before
{
content
:
"\e601"
}
.icon-setting
:before
{
content
:
"\e602"
}
.icon-gplus
:before
{
content
:
"\e603"
}
.icon-weibo
:before
{
content
:
"\e605"
}
.icon-goup
:before
{
content
:
"\e60a"
}
.icon-twitter
:before
{
content
:
"\e60b"
}
.icon-t-weibo
:before
{
content
:
"\e60d"
}
.icon-login
:before
{
content
:
"\e611"
}
.form
{
width
:
100%
;
padding
:
30px
}
#captcha
,
#captchaReply
{
height
:
27px
;
display
:
inline-block
;
vertical-align
:
inherit
}
.form
button
,
.form
input
,
.form
textarea
{
border
:
1px
solid
#CCC
;
background-color
:
#FAFAFA
;
border-radius
:
3px
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
;
padding
:
7px
8px
;
width
:
100%
;
box-sizing
:
border-box
;
outline
:
0
;
font-family
:
Merriweather
,
"Microsoft Yahei"
,
Helvetica
}
.tags
.tag
,
footer
.footer
{
font-family
:
Menlo
,
Monaco
,
"Andale Mono"
,
"lucida console"
,
"Courier New"
,
monospace
}
.form
button
{
width
:
auto
;
vertical-align
:
bottom
;
cursor
:
pointer
}
.form
button
:hover
{
background-color
:
#b0a0aa
;
color
:
#FFF
;
box-shadow
:
0
0
0
;
border-color
:
#b0a0aa
}
.form
input
:focus
,
.form
textarea
:focus
{
background-color
:
#FFF
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.075
)
inset
,
0
0
5px
rgba
(
176
,
160
,
170
,
.5
);
border
:
1px
solid
#b0a0aa
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url(../images/emotions/emotions-ease.png)
;
float
:
left
;
height
:
24px
;
margin-right
:
5px
;
width
:
24px
;
transition
:
all
.2s
ease-out
;
-webkit-transition
:
all
.2s
ease-out
;
-moz-transition
:
all
.2s
ease-out
}
#emotions
span
:hover
{
transform
:
scale
(
1.2
)
rotate
(
360deg
);
-webkit-transform
:
scale
(
1.2
)
rotate
(
360deg
);
-moz-transform
:
scale
(
1.2
)
rotate
(
360deg
)}
.em01
{
background-position
:
-24px
0
}
.em02
{
background-position
:
-48px
0
}
.em03
{
background-position
:
-72px
0
}
.em04
{
background-position
:
-96px
0
}
.em05
{
background-position
:
0
-24px
}
.em06
{
background-position
:
-24px
-24px
}
.em07
{
background-position
:
-48px
-24px
}
.em08
{
background-position
:
-72px
-24px
}
.em09
{
background-position
:
-96px
-24px
}
.em10
{
background-position
:
0
-48px
}
.em11
{
background-position
:
-24px
-48px
}
.em12
{
background-position
:
-48px
-48px
}
.em13
{
background-position
:
-72px
-48px
}
.em14
{
background-position
:
-96px
-48px
}
.side
{
position
:
fixed
;
background-color
:
#FFF
;
height
:
100%
;
width
:
300px
}
.side
.overlay
,
.side
footer
,
main
{
position
:
absolute
}
.side
a
{
color
:
#696969
;
font-size
:
30px
}
.side
a
:hover
{
color
:
#b0a0aa
}
.side
.overlay
{
height
:
180px
;
background-color
:
#000
;
opacity
:
.7
;
width
:
100%
;
z-index
:
-1
}
.side
.content
{
width
:
76%
;
text-align
:
center
;
margin
:
112px
auto
0
}
.side
.avatar
{
display
:
block
;
border
:
5px
solid
#fff
;
border-radius
:
50%
;
width
:
128px
;
height
:
128px
;
margin
:
0
auto
;
transition
:
all
.1s
ease-in
}
.side
.avatar
:hover
{
border-color
:
rgba
(
37
,
143
,
184
,
.6
)}
.side
hgroup
h1
{
margin
:
10px
0
;
line-height
:
30px
}
.side
.subtitle
{
color
:
#999
;
font-size
:
14px
;
line-height
:
25px
}
.side
nav
ul
{
margin
:
0
;
padding
:
0
}
.side
nav
a
{
font-size
:
14px
}
.side
footer
{
bottom
:
15px
;
left
:
50%
;
margin-left
:
-65px
}
main
{
right
:
0
;
min-height
:
100%
;
background
:
#eaeaea
;
left
:
300px
;
width
:
auto
}
article
{
margin
:
30px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
position
:
relative
;
transition
:
all
.2s
ease-in
;
visibility
:
hidden
}
.share
span
,
.tags
.avatar
{
transition
:
all
.2s
ease-out
0s
}
article
.post
,
article
.show
{
visibility
:
visible
}
article
.show
{
-webkit-animation
:
bounce
.6s
;
animation
:
bounce
.6s
}
@-webkit-keyframes
bounce
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1.02
)}
100
%
{
-webkit-transform
:
scale
(
1
)}}
@-moz-keyframes
bounce
{
0
%
{
opacity
:
0
;
-moz-transform
:
scale
(
1
)}
60
%
{
opacity
:
1
;
-moz-transform
:
scale
(
1.02
)}
100
%
{
-moz-transform
:
scale
(
1
)}}
.tags
.tag
:hover
,
article
.abstract
a
:hover
,
nav
.pagination
a
.page-num
:hover
{
opacity
:
.7
}
article
header
{
border-left
:
5px
solid
;
padding
:
15px
30px
15px
25px
}
article
header
:hover
{
border-color
:
#b0a0aa
}
article
header
h2
{
margin
:
0
;
font-size
:
26px
;
padding-right
:
110px
}
article
header
a
{
color
:
#696969
;
margin-left
:
0
;
font-weight
:
300
;
line-height
:
35px
}
article
header
a
:hover
{
color
:
#b0a0aa
}
article
header
sup
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#999
}
article
header
time
{
font-size
:
14px
;
position
:
absolute
;
right
:
30px
;
color
:
#aaa
;
top
:
18px
}
article
.abstract
{
line-height
:
1.8em
;
padding-right
:
30px
;
padding-left
:
30px
;
overflow
:
hidden
;
word-wrap
:
break-word
}
article
footer
{
padding
:
20px
35px
0
0
;
margin
:
30px
30px
20px
;
border-top
:
1px
solid
#ddd
}
.tags
.avatar
{
width
:
20px
;
border-radius
:
10px
;
right
:
30px
;
position
:
absolute
;
bottom
:
25px
}
.share
span
{
cursor
:
pointer
}
.share
span
:hover
,
.tags
.avatar
:hover
{
transform
:
rotate
(
360deg
);
color
:
#333
}
.tags
.tag
{
color
:
#fff
;
font-size
:
10px
;
height
:
18px
;
line-height
:
18px
;
display
:
inline-block
;
padding
:
0
5px
0
10px
;
position
:
relative
;
border-radius
:
0
5px
5px
0
;
margin
:
5px
9px
5px
8px
;
background-color
:
#7b5d5f
}
.tags
.tag
:after
,
.tags
.tag
:before
{
content
:
" "
;
position
:
absolute
}
.tags
.tag
:before
{
width
:
0
;
height
:
0
;
top
:
0
;
left
:
-18px
;
border
:
9px
solid
transparent
;
border-right-color
:
#7b5d5f
}
.tags
.tag
:after
{
width
:
4px
;
height
:
4px
;
background-color
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0
0
0
1px
rgba
(
0
,
0
,
0
,
.3
);
top
:
7px
;
left
:
2px
}
a
.color1.tag
{
background
:
#ff945c
}
a
.color1.tag
:before
{
border-right-color
:
#ff945c
}
a
.color2.tag
{
background
:
#f5c7b7
}
a
.color2.tag
:before
{
border-right-color
:
#f5c7b7
}
a
.color3.tag
{
background
:
#ba8f6c
}
a
.color3.tag
:before
{
border-right-color
:
#ba8f6c
}
a
.color4.tag
{
background
:
#cfb7c4
}
a
.color4.tag
:before
{
border-right-color
:
#cfb7c4
}
nav
.pagination
{
text-align
:
center
;
margin-top
:
30px
}
nav
.pagination
.page-num
{
width
:
20px
;
height
:
20px
;
background
:
#4d4d4d
;
border-radius
:
50%
;
display
:
inline-block
;
color
:
#fff
;
line-height
:
20px
;
font-size
:
12px
;
margin
:
0
3px
30px
}
nav
.pagination
.page-num.current
{
background
:
#88acdb
}
nav
.pagination
.extend
{
color
:
#4d4d4d
;
margin
:
0
27px
;
opacity
:
0
}
nav
.pagination
.extend
:hover
{
color
:
#b0a0aa
}
nav
.pagination
:hover
.extend
{
opacity
:
1
}
.post
.tags
.avatar
{
bottom
:
inherit
;
margin-top
:
4px
}
.post
section
.tags
{
margin
:
0
}
.post
header
{
padding-bottom
:
0
}
.post
.share
{
padding
:
10px
0
0
;
margin-top
:
15px
;
font-size
:
14px
}
.post
aside
a
{
color
:
#DDD
}
.post
aside
a
>
strong
{
background
:
#ddd
;
color
:
#fff
;
border-radius
:
50%
;
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
transition
:
background
.3s
;
vertical-align
:
middle
;
line-height
:
18px
;
text-align
:
center
}
.post
aside
a
:hover
{
color
:
#4d4d4d
}
.post
aside
a
:hover
>
strong
{
background-color
:
#4d4d4d
}
.comments
{
margin
:
60px
60px
0
50px
;
padding
:
0
;
position
:
relative
}
.comments
li
{
margin-bottom
:
30px
;
padding-bottom
:
30px
;
border-bottom
:
1px
solid
#ddd
}
.comments
li
time
{
border-left
:
1px
solid
#d5dbde
;
padding-left
:
10px
;
margin-left
:
10px
}
.comments
.avatar
{
position
:
absolute
;
height
:
60px
;
width
:
60px
;
border-radius
:
50%
;
border
:
3px
solid
#FFF
}
.comments
.content
{
margin-left
:
80px
;
min-height
:
66px
}
.comments
.post-meta
{
margin-bottom
:
9px
}
.comments
.content
img
{
vertical-align
:
sub
}
.comments
li
.comment-body-ref
{
position
:
absolute
;
background-color
:
#FFF
;
width
:
80%
;
margin-left
:
80px
;
padding
:
10px
;
border
:
1px
solid
#ddd
}
footer
.footer
{
line-height
:
1rem
;
font-size
:
12px
;
text-shadow
:
0
1px
#fff
;
opacity
:
.6
;
margin
:
0
30px
30px
}
footer
.footer
.icon-goup
{
position
:
fixed
;
bottom
:
35px
;
right
:
5px
;
-webkit-animation
:
upbounce
4s
2s
infinite
;
animation
:
upbounce
4s
2s
infinite
;
z-index
:
10
;
font-size
:
20px
;
cursor
:
pointer
;
color
:
#b0a0aa
;
transition
:
all
.3s
ease
}
footer
.footer
.icon-goup
:hover
{
color
:
#4a4a4a
}
@-webkit-keyframes
upbounce
{
0
%,
10
%,
25
%,
40
%,
50
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
20
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
30
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
@keyframes
upbounce
{
0
%,
100
%,
20
%,
50
%,
80
%
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}
40
%
{
-webkit-transform
:
translateY
(
-10px
);
transform
:
translateY
(
-10px
)}
60
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)}}
.classify
li
{
font-size
:
20px
;
float
:
left
;
margin
:
0
30px
20px
0
}
.classify
.tags
.tag
{
font-size
:
20px
;
padding
:
10px
}
.classify
.tags
.tag
:before
{
left
:
-38px
;
border-width
:
19px
}
.classify
.tags
.tag
:after
{
top
:
15px
;
left
:
-6px
;
width
:
8px
;
height
:
8px
}
.classify-name
{
font-size
:
18px
;
margin
:
30px
}
.dynamic
.comments
li
:last-child
{
border-bottom-width
:
0
}
@media
only
screen
and
(
max-width
:
500px
){
.side
,
.side
.avatar
{
position
:
relative
}
.side
{
height
:
auto
;
width
:
100%
}
.side
footer
,
main
{
position
:
initial
}
.side
.content
{
margin-top
:
0
;
padding-top
:
20px
}
.side
.overlay
{
height
:
100px
;
z-index
:
0
}
.side
nav
{
display
:
none
}
.side
footer
{
margin
:
10px
auto
;
padding-bottom
:
16px
}
article
{
margin
:
10px
}
.comments
{
margin
:
20px
20px
0
}
footer
.footer
{
text-align
:
center
}
footer
.footer
.fn-right
{
float
:
none
;
display
:
block
}}
\ No newline at end of file
src/main/webapp/skins/yilia/js/yilia.min.js
View file @
c900f9b2
/*
* Copyright (c) 2010-2015, b3log.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var
Yilia
=
{
init
:
function
(){
Util
.
killIE
(),
this
.
resetTags
(),
$
(
window
).
scroll
(
function
(){
$
(
"
article
"
).
length
>
0
&&
0
===
$
(
"
article.post
"
).
length
&&
$
(
"
article:not(.show)
"
).
each
(
function
(){
$
(
this
).
offset
().
top
<=
$
(
window
).
scrollTop
()
+
$
(
window
).
height
()
-
$
(
this
).
height
()
/
7
&&
$
(
this
).
addClass
(
"
show
"
)}),
$
(
window
).
scrollTop
()
>
$
(
window
).
height
()?
$
(
"
.icon-goup
"
).
show
():
$
(
"
.icon-goup
"
).
hide
(),
1
===
$
(
"
article.post
"
).
length
&&
$
(
"
article.post
"
).
addClass
(
"
show
"
)}),
$
(
window
).
scroll
()},
resetTags
:
function
(){
$
(
"
a.tag
"
).
each
(
function
(
t
){
$
(
this
).
addClass
(
"
color
"
+
Math
.
ceil
(
4
*
Math
.
random
()))})},
share
:
function
(){
$
(
"
.share span
"
).
click
(
function
(){
var
t
=
$
(
this
).
data
(
"
type
"
),
i
=
encodeURIComponent
(
$
(
"
title
"
).
text
()),
o
=
$
(
"
.post-title a
"
).
attr
(
"
href
"
)?
$
(
"
.post-title a
"
).
attr
(
"
href
"
):
location
,
e
=
$
(
"
.post-content img:eq(0)
"
).
attr
(
"
src
"
),
n
=
{};
n
.
tencent
=
"
http://share.v.t.qq.com/index.php?c=share&a=index&title=
"
+
i
+
"
&url=
"
+
o
+
"
&pic=
"
+
e
,
n
.
weibo
=
"
http://v.t.sina.com.cn/share/share.php?title=
"
+
i
+
"
&url=
"
+
o
+
"
&pic=
"
+
e
,
n
.
google
=
"
https://plus.google.com/share?url=
"
+
o
,
n
.
twitter
=
"
https://twitter.com/intent/tweet?status=
"
+
i
+
"
"
+
o
,
window
.
open
(
n
[
t
],
"
_blank
"
,
"
top=100,left=200,width=648,height=618
"
)})}};
Yilia
.
init
();
var
Yilia
=
{
init
:
function
(){
Util
.
killIE
(),
this
.
resetTags
(),
$
(
window
).
scroll
(
function
(){
$
(
"
article
"
).
length
>
0
&&
0
===
$
(
"
article.post
"
).
length
&&
$
(
"
article:not(.show)
"
).
each
(
function
(){
$
(
this
).
offset
().
top
<=
$
(
window
).
scrollTop
()
+
$
(
window
).
height
()
-
$
(
this
).
height
()
/
7
&&
$
(
this
).
addClass
(
"
show
"
)}),
$
(
window
).
scrollTop
()
>
$
(
window
).
height
()?
$
(
"
.icon-goup
"
).
show
():
$
(
"
.icon-goup
"
).
hide
(),
1
===
$
(
"
article.post
"
).
length
&&
$
(
"
article.post
"
).
addClass
(
"
show
"
)}),
$
(
window
).
scroll
()},
resetTags
:
function
(){
$
(
"
a.tag
"
).
each
(
function
(
t
){
$
(
this
).
addClass
(
"
color
"
+
Math
.
ceil
(
4
*
Math
.
random
()))})},
share
:
function
(){
$
(
"
.share span
"
).
click
(
function
(){
var
t
=
$
(
this
).
data
(
"
type
"
),
i
=
encodeURIComponent
(
$
(
"
title
"
).
text
()),
o
=
$
(
"
.post-title a
"
).
attr
(
"
href
"
)?
$
(
"
.post-title a
"
).
attr
(
"
href
"
):
location
,
e
=
$
(
"
.post-content img:eq(0)
"
).
attr
(
"
src
"
),
n
=
{};
n
.
tencent
=
"
http://share.v.t.qq.com/index.php?c=share&a=index&title=
"
+
i
+
"
&url=
"
+
o
+
"
&pic=
"
+
e
,
n
.
weibo
=
"
http://v.t.sina.com.cn/share/share.php?title=
"
+
i
+
"
&url=
"
+
o
+
"
&pic=
"
+
e
,
n
.
google
=
"
https://plus.google.com/share?url=
"
+
o
,
n
.
twitter
=
"
https://twitter.com/intent/tweet?status=
"
+
i
+
"
"
+
o
,
window
.
open
(
n
[
t
],
"
_blank
"
,
"
top=100,left=200,width=648,height=618
"
)})}};
Yilia
.
init
();
\ No newline at end of file
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