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"?>
<!--
Description: Solo POM.
Version: 2.8.1.
8, Nov 29
, 2015
Version: 2.8.1.
9, Dec 2
, 2015
Author: Liang Ding
-->
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
...
...
@@ -311,8 +311,6 @@
<excludes>
<exclude>
**/src/main/java/**/package-info.java
</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>
</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
}
\ 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
}
\ 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
}
\ No newline at end of file
src/main/webapp/js/admin/latkeAdmin.js
View file @
c900f9b2
...
...
@@ -2867,7 +2867,7 @@ admin.register["link-list"] = {
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</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 相关操作 */
...
...
@@ -2906,13 +2906,17 @@ admin.preference = {
$
(
"
#localeString
"
).
val
(
preference
.
localeString
);
$
(
"
#timeZoneId
"
).
val
(
preference
.
timeZoneId
);
$
(
"
#noticeBoard
"
).
val
(
preference
.
noticeBoard
);
$
(
"
#footerContent
"
).
val
(
preference
.
footerContent
);
$
(
"
#htmlHead
"
).
val
(
preference
.
htmlHead
);
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(
preference
.
externalRelevantArticlesDisplayCount
);
$
(
"
#relevantArticlesDisplayCount
"
).
val
(
preference
.
relevantArticlesDisplayCount
);
$
(
"
#randomArticlesDisplayCount
"
).
val
(
preference
.
randomArticlesDisplayCount
);
$
(
"
#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
.
editorType
=
preference
.
editorType
;
...
...
@@ -2926,7 +2930,7 @@ admin.preference = {
if
(
skins
[
i
].
skinName
===
preference
.
skinName
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
selectedClass
+=
"
selected
"
;
}
}
skinsHTML
+=
"
<div title='
"
+
skins
[
i
].
skinDirName
+
"
' class='left skinItem
"
+
selectedClass
+
"
'><img class='skinPreview' src='
"
+
latkeConfig
.
staticServePath
+
"
/skins/
"
+
skins
[
i
].
skinDirName
...
...
@@ -2938,8 +2942,8 @@ admin.preference = {
$
(
"
.skinItem
"
).
removeClass
(
"
selected
"
);
$
(
this
).
addClass
(
"
selected
"
);
$
(
"
#skinMain
"
).
data
(
"
skinDirName
"
,
this
.
title
);
});
});
// sign
var
signs
=
eval
(
'
(
'
+
preference
.
signs
+
'
)
'
);
for
(
var
j
=
1
;
j
<
signs
.
length
;
j
++
)
{
...
...
@@ -2950,21 +2954,16 @@ admin.preference = {
});
}
// Article list style
$
(
"
#articleListDisplay
"
).
val
(
preference
.
articleListStyle
);
// Editor Type
$
(
"
#editorType
"
).
val
(
preference
.
editorType
);
// Feed output
$
(
"
#feedOutputMode
"
).
val
(
preference
.
feedOutputMode
);
$
(
"
#feedOutputCnt
"
).
val
(
preference
.
feedOutputCnt
);
// Commentable
preference
.
commentable
?
$
(
"
#commentable
"
).
attr
(
"
checked
"
,
"
checked
"
)
:
$
(
"
commentable
"
).
removeAttr
(
"
checked
"
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/preference/qiniu
"
,
type
:
"
GET
"
,
cache
:
false
,
...
...
@@ -3065,6 +3064,7 @@ admin.preference = {
"
localeString
"
:
$
(
"
#localeString
"
).
val
(),
"
timeZoneId
"
:
$
(
"
#timeZoneId
"
).
val
(),
"
noticeBoard
"
:
$
(
"
#noticeBoard
"
).
val
(),
"
footerContent
"
:
$
(
"
#footerContent
"
).
val
(),
"
htmlHead
"
:
$
(
"
#htmlHead
"
).
val
(),
"
externalRelevantArticlesDisplayCount
"
:
$
(
"
#externalRelevantArticlesDisplayCount
"
).
val
(),
"
relevantArticlesDisplayCount
"
:
$
(
"
#relevantArticlesDisplayCount
"
).
val
(),
...
...
@@ -3077,7 +3077,8 @@ admin.preference = {
"
editorType
"
:
$
(
"
#editorType
"
).
val
(),
"
feedOutputMode
"
:
$
(
"
#feedOutputMode
"
).
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=/
"
}}};
\ 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
"
}});
\ 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
}
\ 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
}}
\ 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
();
\ 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