Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
5cfa9d56
Commit
5cfa9d56
authored
Oct 16, 2014
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
0.6.7
parent
dadee72e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
5 deletions
+35
-5
core/src/main/java/org/b3log/solo/SoloServletListener.java
core/src/main/java/org/b3log/solo/SoloServletListener.java
+5
-5
war/src/main/webapp/skins/ease/css/ease.min.css
war/src/main/webapp/skins/ease/css/ease.min.css
+15
-0
war/src/main/webapp/skins/ease/js/ease.min.js
war/src/main/webapp/skins/ease/js/ease.min.js
+15
-0
No files found.
core/src/main/java/org/b3log/solo/SoloServletListener.java
View file @
5cfa9d56
...
...
@@ -15,6 +15,7 @@
*/
package
org
.
b3log
.
solo
;
import
java.util.ResourceBundle
;
import
javax.servlet.ServletContextEvent
;
import
javax.servlet.ServletRequestEvent
;
...
...
@@ -51,6 +52,7 @@ import org.b3log.solo.service.StatisticMgmtService;
import
org.b3log.solo.util.Skins
;
import
org.json.JSONObject
;
/**
* B3log Solo servlet listener.
*
...
...
@@ -149,13 +151,11 @@ public final class SoloServletListener extends AbstractServletListener {
}
@Override
public
void
sessionCreated
(
final
HttpSessionEvent
httpSessionEvent
)
{
}
public
void
sessionCreated
(
final
HttpSessionEvent
httpSessionEvent
)
{}
// Note: This method will never invoked on GAE production environment
@Override
public
void
sessionDestroyed
(
final
HttpSessionEvent
httpSessionEvent
)
{
}
public
void
sessionDestroyed
(
final
HttpSessionEvent
httpSessionEvent
)
{}
@Override
public
void
requestInitialized
(
final
ServletRequestEvent
servletRequestEvent
)
{
...
...
@@ -175,7 +175,7 @@ public final class SoloServletListener extends AbstractServletListener {
final
HttpSession
session
=
httpServletRequest
.
getSession
();
LOGGER
.
log
(
Level
.
DEBUG
,
"Gets a session[id={0}, remoteAddr={1}, User-Agent={2}, isNew={3}]"
,
session
.
getId
(),
httpServletRequest
.
getRemoteAddr
(),
httpServletRequest
.
getHeader
(
"User-Agent"
),
session
.
isNew
());
httpServletRequest
.
getRemoteAddr
(),
httpServletRequest
.
getHeader
(
"User-Agent"
),
session
.
isNew
());
// Online visitor count
final
StatisticMgmtService
statisticMgmtService
=
beanManager
.
getReference
(
StatisticMgmtService
.
class
);
...
...
war/src/main/webapp/skins/ease/css/ease.min.css
View file @
5cfa9d56
/**
* Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, B3log Team
*
* 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
{
margin
:
0
;
padding
:
0
}
body
{
font-family
:
Verdana
,
arial
,
'\5fae\8f6f\96c5\9ed1'
;
font-size
:
12px
;
background-color
:
#fcfcfc
}
::selection
{
background-color
:
#d5d5d5
;
color
:
#fcfcfc
}
::-moz-selection
{
background-color
:
#d5d5d5
;
color
:
#fcfcfc
}
a
{
outline
:
none
;
color
:
#009eb8
;
text-decoration
:
none
}
a
:visited
{
color
:
#00b4d2
}
a
:hover
{
text-decoration
:
underline
}
a
:active
{
color
:
#00889f
}
img
{
vertical-align
:
middle
;
border
:
0
}
textarea
,
input
{
outline
:
none
}
sup
{
font-size
:
10px
;
font-weight
:
normal
;
-webkit-text-size-adjust
:
none
}
.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
}
.ft-gray
{
color
:
#808080
}
.ft-gray
:visited
{
color
:
#9a9a9a
}
.ft-gray
:hover
{
color
:
#676767
;
text-decoration
:
none
}
.fn-mgtb10
{
margin
:
10px
0
}
.logo
{
padding
:
0
5px
;
text-shadow
:
0
0
1px
#d5d5d5
}
.em00
,
.em01
,
.em02
,
.em03
,
.em04
,
.em05
,
.em06
,
.em07
,
.em08
,
.em09
,
.em10
,
.em11
,
.em12
,
.em13
,
.em14
{
cursor
:
pointer
;
background-image
:
url("../../ease/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
1px
}
.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
}
#search
,
.translate-ico
{
background-image
:
url("/skins/ease/images/icons.png")
}
.translate-ico
{
background-position
:
1px
-125px
;
background-repeat
:
no-repeat
;
border
:
1px
solid
#d5d5d5
;
border-radius
:
3px
;
cursor
:
pointer
;
float
:
right
;
height
:
16px
;
margin
:
-3px
0
0
15px
;
padding
:
1px
;
width
:
16px
}
.translate-ico
:hover
{
border-color
:
#9a9a9a
;
box-shadow
:
0
0
1px
#808080
;
background-color
:
#fcfcfc
}
.wrapper
{
margin
:
0
auto
;
width
:
990px
}
.main
{
background-color
:
#fff
;
padding-bottom
:
50px
}
.header
{
width
:
100%
;
z-index
:
1
}
.header
.title
{
border-bottom
:
1px
solid
#808080
;
font-size
:
26px
;
font-weight
:
normal
}
.header
.sub-title
{
font-size
:
11px
}
#search
{
background-position
:
7px
-99px
;
background-repeat
:
no-repeat
;
background-color
:
#fff
;
border
:
1px
solid
#d5d5d5
;
border-radius
:
2px
2px
2px
2px
;
box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
0.1
)
inset
;
color
:
#808080
;
float
:
right
;
font-size
:
14px
;
height
:
19px
;
line-height
:
145%
;
padding
:
4px
10px
4px
28px
;
width
:
24px
;
-moz-transition
:
width
.4s
ease
,
background
.4s
ease
;
-webkit-transition
:
width
.4s
ease
,
background
.4s
ease
;
transition
:
width
.4s
ease
,
background
.4s
ease
}
#search
:focus
{
width
:
150px
}
.banner
{
margin-bottom
:
20px
}
.banner
.notice
{
float
:
left
;
margin
:
20px
0
0
50px
}
.nav
{
background-color
:
#2c2c2c
;
box-shadow
:
0
2px
2px
#d5d5d5
,
0
3px
3px
-3px
#d5d5d5
inset
;
border-top
:
1px
solid
#e2e2e2
;
border-bottom
:
1px
solid
#e2e2e2
;
height
:
29px
;
top
:
0
;
width
:
100%
;
z-index
:
1
}
.nav
ul
{
list-style
:
none
;
float
:
left
}
.nav
li
{
float
:
left
}
.nav
a
{
color
:
#c9c9c9
;
display
:
block
;
float
:
left
;
font-size
:
14px
;
font-weight
:
700
;
line-height
:
29px
;
margin-right
:
20px
;
padding
:
0
10px
;
text-decoration
:
none
;
transition
:
color
.4s
ease
,
background-color
.8s
ease
;
-webkit-transition
:
color
.4s
ease
,
background-color
.8s
ease
;
-moz-transition
:
color
.4s
ease
,
background-color
.8s
ease
}
.nav
a
:hover
{
color
:
#fff
;
background-color
:
#535353
}
.nav
a
.current
{
background-color
:
#fff
;
box-shadow
:
0
-1px
1px
rgba
(
0
,
0
,
0
,
0.1
)
inset
,
0
1px
1px
rgba
(
0
,
0
,
0
,
0.1
)
inset
;
color
:
#808080
}
.nav
img
{
margin-left
:
3px
}
.footer
{
border-top
:
1px
solid
#d5d5d5
;
box-shadow
:
0
-1px
1px
#d5d5d5
;
font-size
:
11px
;
padding
:
12px
0
;
-webkit-text-size-adjust
:
none
}
#goTop
{
background
:
url("/skins/ease/images/icons.png")
no-repeat
scroll
5px
-51px
#d5d5d5
;
border-radius
:
2px
2px
0
0
;
box-shadow
:
0
0
3px
#d5d5d5
;
cursor
:
pointer
;
font-size
:
11px
;
height
:
21px
;
line-height
:
21px
;
padding
:
0
10px
0
23px
;
position
:
absolute
;
right
:
50px
;
display
:
none
}
#goTop
:hover
{
background-color
:
#c8c8c8
;
box-shadow
:
0
0
3px
#c8c8c8
}
.wrapper
>
ul
{
list-style
:
none
}
.main
>
.wrapper
>
h2
{
margin
:
0
;
padding
:
14px
0
}
.article
{
border-bottom
:
1px
solid
#f6f6f6
;
padding
:
30px
50px
}
.article
:hover
{
border-bottom-color
:
#ddd
;
box-shadow
:
0
0
1px
#f6f6f6
inset
;
background-color
:
#fcfcfc
}
.article-body
{
line-height
:
145%
;
overflow
:
hidden
;
word-wrap
:
break-word
;
margin-bottom
:
10px
;
font-size
:
14px
}
.article-body
ol
,
.article-body
ul
{
margin-left
:
40px
}
.article-body
a
{
color
:
#808080
;
text-decoration
:
underline
}
.article-body
a
:vidited
{
color
:
#9a9a9a
}
.article-body
a
:hover
{
color
:
#676767
}
.article-body
>
div
{
min-height
:
32px
}
.article-title
h2
{
display
:
inline
}
.article-title
span
{
cursor
:
pointer
}
.article-last
:hover
{
border-bottom
:
1px
solid
#f6f6f6
}
.article-next
{
border
:
1px
solid
#eee
;
background-color
:
#f9f9f9
;
cursor
:
pointer
;
font-size
:
14px
;
line-height
:
36px
;
text-align
:
center
}
.article-next
:hover
{
background-color
:
#fcfcfc
}
.article-relative
{
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
float
:
left
;
margin
:
10px
0
;
padding
:
0
20px
10px
;
width
:
382px
}
.article-relative
:hover
{
background-color
:
#fff
;
box-shadow
:
0
0
4px
#d5d5d5
}
.article-relative
ul
{
list-style
:
none
}
#relevantArticles
{
margin-right
:
40px
}
#externalRelevantArticles
{
width
:
357px
;
margin-top
:
0
}
#comments
{
padding
:
20px
50px
;
position
:
relative
}
.comment-header
{
float
:
left
;
background-color
:
#fff
;
border
:
1px
solid
#dedede
;
padding
:
2px
;
height
:
60px
;
width
:
60px
}
.comment-panel
{
float
:
left
;
line-height
:
16px
;
margin
:
0
0
20px
10px
;
min-height
:
64px
;
overflow
:
hidden
;
width
:
814px
}
.comment-body-ref
{
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
display
:
block
;
left
:
127px
;
padding
:
10px
;
opacity
:
.9
;
filter
:
alpha
(
opacity
=
90
);
position
:
absolute
;
border
:
1px
solid
#e2e2e2
}
.comment-body-ref
>
.comment-header
{
border
:
0
none
;
float
:
right
;
height
:
48px
;
width
:
48px
;
padding
:
0
}
.comment-body-ref
>
.comment-panel
{
margin
:
0
20px
0
0
;
min-height
:
48px
;
width
:
725px
}
.comment-body-ref
>
.comment-panel
>
.right
{
display
:
none
}
#replyForm
{
margin-left
:
25px
}
.form
{
padding
:
0
50px
20px
}
.wrapper
>
.form
{
float
:
left
}
.form
th
{
text-align
:
right
;
white-space
:
nowrap
}
.form
input
[
type
=
"text"
],
.form
input
[
type
=
"password"
],
.form
textarea
{
background-color
:
#fcfcfc
;
border-width
:
0
;
box-shadow
:
0
0
2px
#bcbcbc
;
font-family
:
Verdana
,
arial
,
\
5
fae
\
8
f6f
\
96
c5
\
9
ed1
;
font-size
:
12px
;
margin
:
0
5px
10px
0
;
outline
:
medium
none
;
padding
:
0
3px
;
height
:
28px
;
line-height
:
28px
;
width
:
260px
}
.form
input
:focus
,
.form
textarea
:focus
{
box-shadow
:
0
0
4px
#d5d5d5
}
.form
textarea
{
height
:
120px
;
overflow
:
auto
;
width
:
426px
;
line-height
:
16px
}
.form
button
{
background-color
:
#f6f6f6
;
border
:
0
none
;
box-shadow
:
0
0
2px
#d5d5d5
;
height
:
28px
;
line-height
:
28px
;
padding
:
0
12px
;
color
:
#808080
}
.form
button
:hover
{
box-shadow
:
0
0
4px
#d5d5d5
;
text-shadow
:
0
0
2px
}
.form
img
{
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
cursor
:
pointer
;
height
:
24px
;
padding
:
1px
}
#tags
.other-main
{
margin
:
47px
44px
0
;
width
:
902px
}
#tags
li
{
float
:
left
;
height
:
38px
}
#tags
a
{
margin
:
3px
6px
;
padding
:
3px
12px
;
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
float
:
left
}
#tags
a
:hover
{
text-shadow
:
0
0
2px
;
text-decoration
:
none
;
box-shadow
:
0
0
4px
#d5d5d5
}
.tags1
,
.tags1
:visited
{
font-size
:
12px
;
color
:
#a7a7a7
}
.tags2
,
.tags2
:visited
{
font-size
:
14px
;
color
:
#808080
}
.tags3
,
.tags3
:visited
{
font-size
:
16px
;
color
:
#595959
}
.tags4
,
.tags4
:visited
{
font-size
:
18px
;
color
:
#323232
}
.tags5
,
.tags5
:visited
{
font-size
:
20px
;
color
:
#0a0a0a
}
.archives
{
position
:
relative
}
.archives
>
div
{
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
padding-bottom
:
20px
;
line-height
:
20px
;
margin
:
20px
;
width
:
270px
;
position
:
absolute
;
top
:
0
}
.archives
h3
{
text-align
:
center
}
.archives
>
div
:hover
{
box-shadow
:
0
0
4px
#d5d5d5
}
.archives
a
{
display
:
block
;
margin-left
:
77px
}
.dynamic
ul
{
list-style
:
none
}
.dynamic
h3
{
text-align
:
center
}
.dynamic
.module
{
background-color
:
#fcfcfc
;
box-shadow
:
0
0
2px
#d5d5d5
;
float
:
left
;
line-height
:
20px
;
margin
:
20px
;
padding
:
10px
20px
20px
;
width
:
385px
}
.dynamic
.module
:hover
{
box-shadow
:
0
0
4px
#d5d5d5
}
.dynamic
.side-comments
{
width
:
600px
}
.dynamic
.side-comments
.comment-panel
{
width
:
510px
}
.dynamic
.side-tags
{
width
:
170px
}
.dynamic
.side-tags
li
{
float
:
left
;
margin
:
0
5px
}
.dynamic
.side-most-comment
,
.dynamic
.side-most-view
{
margin-bottom
:
0
}
.other-main.links
{
margin-top
:
45px
}
.links
li
{
float
:
left
;
line-height
:
22px
;
margin
:
0
20px
;
width
:
270px
}
.other-main
{
display
:
inline-block
;
margin
:
30px
30px
0
;
width
:
930px
}
#tags
a
,
.archives
>
div
,
.dynamic
.module
,
.form
input
[
type
=
"text"
],
.form
input
[
type
=
"password"
],
.form
textarea
,
.article-relative
{
border
:
1px
solid
#f2f2f2
}
#tags
a
:hover
,
.archives
>
div
:hover
,
.dynamic
.module
:hover
,
.form
input
:focus
,
.form
textarea
:focus
,
.article-relative
:hover
{
border
:
1px
solid
#e2e2e2
}
war/src/main/webapp/skins/ease/js/ease.min.js
View file @
5cfa9d56
/*
* Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, B3log Team
*
* 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
goTranslate
=
function
(){
window
.
open
(
"
http://translate.google.com/translate?sl=auto&tl=auto&u=
"
+
location
.
href
)};
var
getNextPage
=
function
(){
var
$more
=
$
(
"
.article-next
"
);
currentPage
+=
1
;
var
path
=
"
/articles/
"
;
if
(
$
(
"
#tag
"
).
length
===
1
){
var
pathnames
=
location
.
pathname
.
split
(
"
/
"
);
path
=
"
/articles/tags/
"
+
pathnames
[
pathnames
.
length
-
1
]
+
"
/
"
}
else
if
(
$
(
"
#archive
"
).
length
===
1
){
var
pathnames
=
location
.
pathname
.
split
(
"
/
"
);
path
=
"
/articles/archives/
"
+
pathnames
[
pathnames
.
length
-
2
]
+
"
/
"
+
pathnames
[
pathnames
.
length
-
1
]
+
"
/
"
}
else
if
(
$
(
"
#author
"
).
length
===
1
){
var
pathnames
=
location
.
pathname
.
split
(
"
/
"
);
path
=
"
/articles/authors/
"
+
pathnames
[
pathnames
.
length
-
1
]
+
"
/
"
}
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
path
+
currentPage
,
type
:
"
GET
"
,
beforeSend
:
function
(){
$more
.
css
(
"
background
"
,
"
url(
"
+
latkeConfig
.
staticServePath
+
"
/skins/ease/images/ajax-loader.gif) no-repeat scroll center center #fefefe
"
)},
success
:
function
(
result
,
textStatus
){
if
(
!
result
.
sc
){
return
}
var
articlesHTML
=
""
,
pagination
=
result
.
rslts
.
pagination
;
for
(
var
i
=
0
;
i
<
result
.
rslts
.
articles
.
length
;
i
++
){
var
article
=
result
.
rslts
.
articles
[
i
],
lastClass
=
""
;
if
(
result
.
rslts
.
articles
.
length
-
1
===
i
){
lastClass
=
"
article-last
"
}
articlesHTML
+=
'
<li class="article
'
+
lastClass
+
'
">
'
+
'
<div class="article-title">
'
+
"
<h2>
"
+
'
<a rel="bookmark" class="ft-gray" href="
'
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
'
">
'
+
article
.
articleTitle
+
"
</a>
"
;
if
(
article
.
hasUpdated
){
articlesHTML
+=
"
<sup>
"
+
Label
.
updatedLabel
+
"
</sup>
"
}
if
(
article
.
articlePutTop
){
articlesHTML
+=
"
<sup>
"
+
Label
.
topArticleLabel
+
"
</sup>
"
}
articlesHTML
+=
"
</h2>
"
+
'
<div class="right">
'
+
'
<a rel="nofollow" class="ft-gray" href="
'
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
'
#comments">
'
+
+
article
.
articleCommentCount
+
"
"
+
Label
.
commentLabel
+
"
</a>
"
+
'
<a rel="nofollow" class="ft-gray" href="
'
+
latkeConfig
.
servePath
+
article
.
articlePermalink
+
'
">
'
+
article
.
articleViewCount
+
"
"
+
Label
.
viewLabel
+
"
</a>
"
+
"
</div>
"
+
'
<div class="clear"></div>
'
+
"
</div>
"
+
'
<div class="article-body">
'
+
'
<div id="abstract
'
+
article
.
oId
+
'
">
'
+
article
.
articleAbstract
+
"
</div>
"
+
'
<div id="content
'
+
article
.
oId
+
'
" class="none"></div>
'
+
"
</div>
"
+
'
<div class="right ft-gray">
'
;
if
(
article
.
hasUpdated
){
articlesHTML
+=
Util
.
toDate
(
article
.
articleUpdateTime
,
"
yy-MM-dd HH:mm
"
)}
else
{
articlesHTML
+=
Util
.
toDate
(
article
.
articleCreateTime
,
"
yy-MM-dd HH:mm
"
)}
articlesHTML
+=
'
<a href="
'
+
latkeConfig
.
servePath
+
"
/authors/
"
+
article
.
authorId
+
'
">
'
+
article
.
authorName
+
"
</a>
"
+
"
</div>
"
+
'
<div class="left ft-gray">
'
+
Label
.
tag1Label
+
"
"
;
var
articleTags
=
article
.
articleTags
.
split
(
"
,
"
);
for
(
var
j
=
0
;
j
<
articleTags
.
length
;
j
++
){
articlesHTML
+=
'
<a rel="tag" href="
'
+
latkeConfig
.
servePath
+
"
/tags/
"
+
encodeURIComponent
(
articleTags
[
j
])
+
'
">
'
+
articleTags
[
j
]
+
"
</a>
"
;
if
(
j
<
articleTags
.
length
-
1
){
articlesHTML
+=
"
,
"
}}
articlesHTML
+=
"
</div>
"
+
'
<div class="clear"></div>
'
+
"
</li>
"
}
$
(
"
.article-last
"
).
removeClass
(
"
article-last
"
);
$
(
"
.main>.wrapper>ul
"
).
append
(
articlesHTML
);
if
(
pagination
.
paginationPageCount
===
currentPage
){
$more
.
remove
()}
else
{
$more
.
css
(
"
background
"
,
"
none
"
)}}})};
var
ease
=
{
$header
:
$
(
"
.header
"
),
headerH
:
103
,
$body
:
$
(
"
.main > .wrapper
"
),
$nav
:
$
(
"
.nav
"
),
getCurrentPage
:
function
(){
var
$next
=
$
(
"
.article-next
"
);
if
(
$next
.
length
>
0
){
window
.
currentPage
=
$next
.
data
(
"
page
"
)}},
setNavCurrent
:
function
(){
$
(
"
.nav ul a
"
).
each
(
function
(){
var
$this
=
$
(
this
);
if
(
$this
.
attr
(
"
href
"
)
===
latkeConfig
.
servePath
+
location
.
pathname
){
$this
.
addClass
(
"
current
"
)}
else
if
(
/
\/[
0-9
]
+$/
.
test
(
location
.
pathname
)){
$
(
"
.nav ul li
"
)[
0
].
className
=
"
current
"
}})},
initCommon
:
function
(){
Util
.
init
();
Util
.
replaceSideEm
(
$
(
"
.recent-comments-content
"
));
Util
.
buildTags
(
"
tagsSide
"
)},
initArchives
:
function
(){
var
$archives
=
$
(
"
.archives
"
);
if
(
$archives
.
length
<
1
){
return
}
$
(
"
.footer
"
).
css
(
"
marginTop
"
,
"
30px
"
);
var
years
=
[],
$archiveList
=
$archives
.
find
(
"
span
"
).
each
(
function
(){
var
year
=
$
(
this
).
data
(
"
year
"
),
tag
=
true
;
for
(
var
i
=
0
;
i
<
years
.
length
;
i
++
){
if
(
year
===
years
[
i
]){
tag
=
false
;
break
}}
if
(
tag
){
years
.
push
(
year
)}});
var
yearsHTML
=
""
;
for
(
var
j
=
0
;
j
<
years
.
length
;
j
++
){
var
monthsHTML
=
""
;
for
(
var
l
=
0
;
l
<
$archiveList
.
length
;
l
++
){
var
$month
=
$
(
$archiveList
[
l
]);
if
(
$month
.
data
(
"
year
"
)
===
years
[
j
]){
monthsHTML
+=
$month
.
html
()}}
yearsHTML
+=
"
<div><h3 class='ft-gray'>
"
+
years
[
j
]
+
"
</h3>
"
+
monthsHTML
+
"
</div>
"
}
$archives
.
html
(
yearsHTML
);
var
$items
=
$
(
"
.archives>div
"
),
line
=
0
,
top
=
0
,
heights
=
[];
for
(
var
m
=
0
;
m
<
$items
.
length
;
m
++
){
for
(
var
n
=
0
;
n
<
3
;
n
++
){
if
(
m
>=
$items
.
length
){
break
}
$items
[
m
].
style
.
left
=
n
*
310
+
"
px
"
;
if
(
line
>
0
){
if
(
$items
[
m
-
3
].
style
.
top
!==
""
){
top
=
parseInt
(
$items
[
m
-
3
].
style
.
top
)}
$items
[
m
].
style
.
top
=
$
(
$items
[
m
-
3
]).
height
()
+
60
+
top
+
"
px
"
;
heights
[
n
]
=
parseInt
(
$items
[
m
].
style
.
top
)
+
$
(
$items
[
m
]).
height
()
+
60
}
else
{
heights
[
n
]
=
$
(
$items
[
m
]).
height
()
+
60
}
if
(
n
<
2
){
m
+=
1
}}
line
+=
1
}
$archives
.
height
(
heights
.
sort
()[
heights
.
length
-
1
])},
scrollEvent
:
function
(){
var
_it
=
this
;
$
(
window
).
scroll
(
function
(){
var
y
=
$
(
window
).
scrollTop
(),
topH
=
0
;
if
(
$
(
"
#top
"
).
css
(
"
display
"
)
===
"
block
"
){
topH
=
$
(
"
#top
"
).
height
()}
if
(
y
>=
_it
.
headerH
+
topH
){
_it
.
$nav
.
css
(
"
position
"
,
"
fixed
"
);
_it
.
$body
.
css
(
"
marginTop
"
,
"
55px
"
)}
else
{
_it
.
$nav
.
css
(
"
position
"
,
"
inherit
"
);
_it
.
$body
.
css
(
"
marginTop
"
,
"
0
"
)}
if
(
y
>
_it
.
headerH
){
var
bodyH
=
$
(
window
).
height
();
var
top
=
y
+
bodyH
-
21
;
if
(
$
(
"
body
"
).
height
()
-
58
<=
y
+
bodyH
){
top
=
$
(
"
.footer
"
).
offset
().
top
-
21
}
$
(
"
#goTop
"
).
fadeIn
(
"
slow
"
).
css
(
"
top
"
,
top
)}
else
{
$
(
"
#goTop
"
).
hide
()}})},
setDynamic
:
function
(){
var
$dynamic
=
$
(
"
.dynamic
"
);
if
(
$
(
"
.dynamic
"
).
length
<
1
){
return
}
var
$comments
=
$dynamic
.
find
(
"
.side-comments
"
),
$tags
=
$dynamic
.
find
(
"
.side-tags
"
),
$mostComment
=
$dynamic
.
find
(
"
.side-most-comment
"
),
$mostView
=
$dynamic
.
find
(
"
.side-most-view
"
);
if
(
$comments
.
height
()
>
$tags
.
height
()){
$tags
.
height
(
$comments
.
height
())}
else
{
$comments
.
height
(
$tags
.
height
())}
if
(
$mostComment
.
height
()
>
$mostView
.
height
()){
$mostView
.
height
(
$mostComment
.
height
())}
else
{
$mostComment
.
height
(
$mostView
.
height
())}
$
(
"
.article-body
"
).
each
(
function
(){
this
.
innerHTML
=
Util
.
replaceEmString
(
$
(
this
).
html
())})},
scrollToCmt
:
function
(){
if
(
$
(
window
.
location
.
hash
).
length
==
1
){
$
(
window
).
scrollTop
(
$
(
window
.
location
.
hash
).
offset
().
top
-
60
)}}};(
function
(){
ease
.
getCurrentPage
();
ease
.
initCommon
();
ease
.
scrollEvent
();
ease
.
setNavCurrent
();
ease
.
initArchives
();
ease
.
setDynamic
()})();
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