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
6b8e5673
Commit
6b8e5673
authored
Jul 16, 2012
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
--no commit message
--no commit message
parent
22eef669
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
717 additions
and
717 deletions
+717
-717
war/src/main/webapp/js/page.js
war/src/main/webapp/js/page.js
+717
-717
No files found.
war/src/main/webapp/js/page.js
View file @
6b8e5673
/*
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* See the License for the specific language governing permissions and
* limitations under the License.
* limitations under the License.
*/
*/
/**
/**
* @fileoverview Page util, load heighlight and process comment.
* @fileoverview Page util, load heighlight and process comment.
*
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.3.1, Jul 5, 2012
* @version 1.0.3.1, Jul 5, 2012
*/
*/
var
Page
=
function
(
tips
)
{
var
Page
=
function
(
tips
)
{
this
.
currentCommentId
=
""
;
this
.
currentCommentId
=
""
;
this
.
tips
=
tips
;
this
.
tips
=
tips
;
};
};
$
.
extend
(
Page
.
prototype
,
{
$
.
extend
(
Page
.
prototype
,
{
/*
/*
* @description 评论时点击表情,在评论内容中插入相关代码
* @description 评论时点击表情,在评论内容中插入相关代码
* @param {String} name 用于区别回复评论还是对文章的评论
* @param {String} name 用于区别回复评论还是对文章的评论
*/
*/
insertEmotions
:
function
(
name
)
{
insertEmotions
:
function
(
name
)
{
var
_it
=
this
;
var
_it
=
this
;
if
(
name
===
undefined
)
{
if
(
name
===
undefined
)
{
name
=
""
;
name
=
""
;
}
}
$
(
"
#emotions
"
+
name
+
"
span
"
).
click
(
function
()
{
$
(
"
#emotions
"
+
name
+
"
span
"
).
click
(
function
()
{
var
$comment
=
$
(
"
#comment
"
+
name
);
var
$comment
=
$
(
"
#comment
"
+
name
);
var
endPosition
=
_it
.
_getCursorEndPosition
(
$comment
[
0
]);
var
endPosition
=
_it
.
_getCursorEndPosition
(
$comment
[
0
]);
var
key
=
"
[
"
+
this
.
className
+
"
]
"
,
var
key
=
"
[
"
+
this
.
className
+
"
]
"
,
textValue
=
$comment
[
0
].
value
;
textValue
=
$comment
[
0
].
value
;
textValue
=
textValue
.
substring
(
0
,
endPosition
)
+
key
+
textValue
.
substring
(
endPosition
,
textValue
.
length
);
textValue
=
textValue
.
substring
(
0
,
endPosition
)
+
key
+
textValue
.
substring
(
endPosition
,
textValue
.
length
);
$
(
"
#comment
"
+
name
).
val
(
textValue
);
$
(
"
#comment
"
+
name
).
val
(
textValue
);
if
(
$
.
browser
.
msie
)
{
if
(
$
.
browser
.
msie
)
{
endPosition
-=
textValue
.
split
(
'
\n
'
).
length
-
1
;
endPosition
-=
textValue
.
split
(
'
\n
'
).
length
-
1
;
var
oR
=
$comment
[
0
].
createTextRange
();
var
oR
=
$comment
[
0
].
createTextRange
();
oR
.
collapse
(
true
);
oR
.
collapse
(
true
);
oR
.
moveStart
(
'
character
'
,
endPosition
+
6
);
oR
.
moveStart
(
'
character
'
,
endPosition
+
6
);
oR
.
select
();
oR
.
select
();
}
else
{
}
else
{
$comment
[
0
].
setSelectionRange
(
endPosition
+
6
,
endPosition
+
6
);
$comment
[
0
].
setSelectionRange
(
endPosition
+
6
,
endPosition
+
6
);
}
}
});
});
},
},
/**
/**
* @description 获取当前光标最后位置
* @description 获取当前光标最后位置
* @param {Dom} textarea 评论框对象
* @param {Dom} textarea 评论框对象
* @returns {Num} 光标位置
* @returns {Num} 光标位置
*/
*/
_getCursorEndPosition
:
function
(
textarea
)
{
_getCursorEndPosition
:
function
(
textarea
)
{
textarea
.
focus
();
textarea
.
focus
();
if
(
textarea
.
setSelectionRange
)
{
// W3C
if
(
textarea
.
setSelectionRange
)
{
// W3C
return
textarea
.
selectionEnd
;
return
textarea
.
selectionEnd
;
}
else
if
(
document
.
selection
)
{
// IE
}
else
if
(
document
.
selection
)
{
// IE
var
i
=
0
,
var
i
=
0
,
oS
=
document
.
selection
.
createRange
(),
oS
=
document
.
selection
.
createRange
(),
oR
=
document
.
body
.
createTextRange
();
oR
=
document
.
body
.
createTextRange
();
oR
.
moveToElementText
(
textarea
);
oR
.
moveToElementText
(
textarea
);
oS
.
getBookmark
();
oS
.
getBookmark
();
for
(
i
=
0
;
oR
.
compareEndPoints
(
'
StartToStart
'
,
oS
)
<
0
&&
oS
.
moveStart
(
"
character
"
,
-
1
)
!==
0
;
i
++
)
{
for
(
i
=
0
;
oR
.
compareEndPoints
(
'
StartToStart
'
,
oS
)
<
0
&&
oS
.
moveStart
(
"
character
"
,
-
1
)
!==
0
;
i
++
)
{
if
(
textarea
.
value
.
charAt
(
i
)
==
'
\n
'
)
{
if
(
textarea
.
value
.
charAt
(
i
)
==
'
\n
'
)
{
i
++
;
i
++
;
}
}
}
}
return
i
;
return
i
;
}
}
},
},
/*
/*
* @description 评论校验
* @description 评论校验
* @param {String} state 用于区别回复评论还是对文章的评论
* @param {String} state 用于区别回复评论还是对文章的评论
*/
*/
validateComment
:
function
(
state
)
{
validateComment
:
function
(
state
)
{
var
commentName
=
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
var
commentName
=
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
commenterContent
=
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
);
if
(
2
>
commentName
.
length
||
commentName
.
length
>
20
)
{
if
(
2
>
commentName
.
length
||
commentName
.
length
>
20
)
{
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
nameTooLongLabel
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
nameTooLongLabel
);
$
(
"
#commentName
"
+
state
).
focus
();
$
(
"
#commentName
"
+
state
).
focus
();
}
else
if
(
$
(
"
#commentEmail
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
}
else
if
(
$
(
"
#commentEmail
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailCannotEmptyLabel
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailCannotEmptyLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
();
$
(
"
#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
()))
{
}
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
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
mailInvalidLabel
);
$
(
"
#commentEmail
"
+
state
).
focus
();
$
(
"
#commentEmail
"
+
state
).
focus
();
}
else
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
)
{
}
else
if
(
2
>
commenterContent
.
length
||
commenterContent
.
length
>
500
)
{
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
commentContentCannotEmptyLabel
);
$
(
"
#comment
"
+
state
).
focus
();
$
(
"
#comment
"
+
state
).
focus
();
}
else
if
(
$
(
"
#commentValidate
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
}
else
if
(
$
(
"
#commentValidate
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
captchaCannotEmptyLabel
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
this
.
tips
.
captchaCannotEmptyLabel
);
$
(
"
#commentValidate
"
+
state
).
focus
();
$
(
"
#commentValidate
"
+
state
).
focus
();
}
else
{
}
else
{
return
true
;
return
true
;
}
}
$
(
"
#commentErrorTip
"
+
state
).
show
();
$
(
"
#commentErrorTip
"
+
state
).
show
();
return
false
;
return
false
;
},
},
/*
/*
* @description 把评论中的标识替换为图片
* @description 把评论中的标识替换为图片
* @param {Dom} selector
* @param {Dom} selector
*/
*/
replaceCommentsEm
:
function
(
selector
)
{
replaceCommentsEm
:
function
(
selector
)
{
var
$commentContents
=
$
(
selector
);
var
$commentContents
=
$
(
selector
);
for
(
var
i
=
0
;
i
<
$commentContents
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
$commentContents
.
length
;
i
++
)
{
var
str
=
$commentContents
[
i
].
innerHTML
;
var
str
=
$commentContents
[
i
].
innerHTML
;
$commentContents
[
i
].
innerHTML
=
Util
.
replaceEmString
(
str
);
$commentContents
[
i
].
innerHTML
=
Util
.
replaceEmString
(
str
);
}
}
},
},
/*
/*
* @description 初始化 SyantaxHighlighter
* @description 初始化 SyantaxHighlighter
* @param {Array} languages 需要加载的语言
* @param {Array} languages 需要加载的语言
*/
*/
_initSyntaxHighlighter
:
function
(
languages
)
{
_initSyntaxHighlighter
:
function
(
languages
)
{
// load brush js
// load brush js
for
(
var
i
=
0
;
i
<
languages
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
languages
.
length
;
i
++
)
{
switch
(
languages
[
i
])
{
switch
(
languages
[
i
])
{
case
"
groovy
"
:
case
"
groovy
"
:
languages
[
i
]
=
'
groovy
'
+
languages
[
i
]
=
'
groovy
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushGroovy.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushGroovy.js
'
;
break
;
break
;
case
"
java
"
:
case
"
java
"
:
languages
[
i
]
=
'
java
'
+
languages
[
i
]
=
'
java
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJava.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJava.js
'
;
break
;
break
;
case
"
php
"
:
case
"
php
"
:
languages
[
i
]
=
'
php
'
+
languages
[
i
]
=
'
php
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPhp.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPhp.js
'
;
break
;
break
;
case
"
scala
"
:
case
"
scala
"
:
languages
[
i
]
=
'
scala
'
+
languages
[
i
]
=
'
scala
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushScala.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushScala.js
'
;
break
;
break
;
case
"
sql
"
:
case
"
sql
"
:
languages
[
i
]
=
'
sql
'
+
languages
[
i
]
=
'
sql
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushSql.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushSql.js
'
;
break
;
break
;
case
"
applescript
"
:
case
"
applescript
"
:
languages
[
i
]
=
'
applescript
'
+
languages
[
i
]
=
'
applescript
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushAppleScript.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushAppleScript.js
'
;
break
;
break
;
case
"
as3
"
:
case
"
as3
"
:
case
"
actionscript3
"
:
case
"
actionscript3
"
:
languages
[
i
]
=
'
actionscript3 as3
'
+
languages
[
i
]
=
'
actionscript3 as3
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushAS3.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushAS3.js
'
;
break
;
break
;
case
"
bash
"
:
case
"
bash
"
:
case
"
shell
"
:
case
"
shell
"
:
languages
[
i
]
=
'
bash shell
'
+
languages
[
i
]
=
'
bash shell
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushBash.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushBash.js
'
;
break
;
break
;
case
"
coldfusion
"
:
case
"
coldfusion
"
:
case
"
cf
"
:
case
"
cf
"
:
languages
[
i
]
=
'
coldfusion cf
'
+
languages
[
i
]
=
'
coldfusion cf
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushColdFusion.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushColdFusion.js
'
;
break
;
break
;
case
"
c#
"
:
case
"
c#
"
:
case
"
c-sharp
"
:
case
"
c-sharp
"
:
case
"
csharp
"
:
case
"
csharp
"
:
languages
[
i
]
=
'
c# c-sharp csharp
'
+
languages
[
i
]
=
'
c# c-sharp csharp
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCSharp.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCSharp.js
'
;
break
;
break
;
case
"
cpp
"
:
case
"
cpp
"
:
case
"
c
"
:
case
"
c
"
:
languages
[
i
]
=
'
cpp c
'
+
languages
[
i
]
=
'
cpp c
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCpp.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCpp.js
'
;
break
;
break
;
case
"
css
"
:
case
"
css
"
:
languages
[
i
]
=
'
css
'
+
languages
[
i
]
=
'
css
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCss.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushCss.js
'
;
break
;
break
;
case
"
delphi
"
:
case
"
delphi
"
:
case
"
pascal
"
:
case
"
pascal
"
:
languages
[
i
]
=
'
delphi pascal
'
+
languages
[
i
]
=
'
delphi pascal
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushDelphi.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushDelphi.js
'
;
break
;
break
;
case
"
diff
"
:
case
"
diff
"
:
case
"
patch
"
:
case
"
patch
"
:
case
"
pas
"
:
case
"
pas
"
:
languages
[
i
]
=
'
diff patch pas
'
+
languages
[
i
]
=
'
diff patch pas
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushDiff.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushDiff.js
'
;
break
;
break
;
case
"
erl
"
:
case
"
erl
"
:
case
"
erlang
"
:
case
"
erlang
"
:
languages
[
i
]
=
'
erl erlang
'
+
languages
[
i
]
=
'
erl erlang
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushErlang.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushErlang.js
'
;
break
;
break
;
case
"
js
"
:
case
"
js
"
:
case
"
jscript
"
:
case
"
jscript
"
:
case
"
javascript
"
:
case
"
javascript
"
:
languages
[
i
]
=
'
js jscript javascript
'
+
languages
[
i
]
=
'
js jscript javascript
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJScript.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJScript.js
'
;
break
;
break
;
case
"
jfx
"
:
case
"
jfx
"
:
case
"
javafx
"
:
case
"
javafx
"
:
languages
[
i
]
=
'
jfx javafx
'
+
languages
[
i
]
=
'
jfx javafx
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJavaFX.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushJavaFX.js
'
;
break
;
break
;
case
"
perl
"
:
case
"
perl
"
:
case
"
pl
"
:
case
"
pl
"
:
languages
[
i
]
=
'
perl pl
'
+
languages
[
i
]
=
'
perl pl
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPerl.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPerl.js
'
;
break
;
break
;
case
"
plain
"
:
case
"
plain
"
:
case
"
text
"
:
case
"
text
"
:
languages
[
i
]
=
'
text plain
'
+
languages
[
i
]
=
'
text plain
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPlain.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPlain.js
'
;
break
;
break
;
case
"
ps
"
:
case
"
ps
"
:
case
"
powershell
"
:
case
"
powershell
"
:
languages
[
i
]
=
'
ps powershell
'
+
languages
[
i
]
=
'
ps powershell
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPowerShell.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPowerShell.js
'
;
break
;
break
;
case
"
py
"
:
case
"
py
"
:
case
"
python
"
:
case
"
python
"
:
languages
[
i
]
=
'
py python
'
+
languages
[
i
]
=
'
py python
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPython.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushPython.js
'
;
break
;
break
;
case
"
rails
"
:
case
"
rails
"
:
case
"
ror
"
:
case
"
ror
"
:
case
"
ruby
"
:
case
"
ruby
"
:
case
"
rb
"
:
case
"
rb
"
:
languages
[
i
]
=
'
ruby rails ror rb
'
+
languages
[
i
]
=
'
ruby rails ror rb
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushRuby.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushRuby.js
'
;
break
;
break
;
case
"
sass
"
:
case
"
sass
"
:
case
"
scss
"
:
case
"
scss
"
:
languages
[
i
]
=
'
sass scss
'
+
languages
[
i
]
=
'
sass scss
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushSass.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushSass.js
'
;
break
;
break
;
case
"
vb
"
:
case
"
vb
"
:
case
"
vbnet
"
:
case
"
vbnet
"
:
languages
[
i
]
=
'
vb vbnet
'
+
languages
[
i
]
=
'
vb vbnet
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushVb.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushVb.js
'
;
break
;
break
;
case
"
xml
"
:
case
"
xml
"
:
case
"
xhtml
"
:
case
"
xhtml
"
:
case
"
xslt
"
:
case
"
xslt
"
:
case
"
html
"
:
case
"
html
"
:
languages
[
i
]
=
'
xml xhtml xslt html
'
+
languages
[
i
]
=
'
xml xhtml xslt html
'
+
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
'
;
latkeConfig
.
staticServePath
+
'
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
'
;
break
;
break
;
default
:
default
:
break
;
break
;
}
}
}
}
// code high lighter
// code high lighter
SyntaxHighlighter
.
autoloader
.
apply
(
null
,
languages
);
SyntaxHighlighter
.
autoloader
.
apply
(
null
,
languages
);
SyntaxHighlighter
.
config
.
stripBrs
=
true
;
SyntaxHighlighter
.
config
.
stripBrs
=
true
;
SyntaxHighlighter
.
all
();
SyntaxHighlighter
.
all
();
},
},
/*
/*
* @description 加载 SyntaxHighlighter
* @description 加载 SyntaxHighlighter
* @param {String} SHTheme SyntaxHighLighter 样式
* @param {String} SHTheme SyntaxHighLighter 样式
*/
*/
_loadSyntaxHighlighter
:
function
(
SHTheme
)
{
_loadSyntaxHighlighter
:
function
(
SHTheme
)
{
var
cssName
=
SHTheme
?
SHTheme
:
"
shCoreEclipse
"
,
var
cssName
=
SHTheme
?
SHTheme
:
"
shCoreEclipse
"
,
that
=
this
;
that
=
this
;
// load css
// load css
if
(
document
.
createStyleSheet
)
{
if
(
document
.
createStyleSheet
)
{
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css
"
);
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css
"
);
}
else
{
}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/styles/
"
+
cssName
+
"
.css' type='text/css' charset='utf-8' />
"
));
+
cssName
+
"
.css' type='text/css' charset='utf-8' />
"
));
}
}
// load js
// load js
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shCore.js
"
,
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shCore.js
"
,
dataType
:
"
script
"
,
dataType
:
"
script
"
,
cache
:
true
,
cache
:
true
,
success
:
function
()
{
success
:
function
()
{
// get brush settings
// get brush settings
var
languages
=
[],
var
languages
=
[],
isScrip
=
false
;
isScrip
=
false
;
$
(
"
.article-body pre
"
).
each
(
function
()
{
$
(
"
.article-body pre
"
).
each
(
function
()
{
var
name
=
this
.
className
.
split
(
"
;
"
)[
0
];
var
name
=
this
.
className
.
split
(
"
;
"
)[
0
];
var
language
=
name
.
substr
(
7
,
name
.
length
-
1
);
var
language
=
name
.
substr
(
7
,
name
.
length
-
1
);
if
(
this
.
className
.
indexOf
(
"
html-script: true
"
)
>
-
1
&&
if
(
this
.
className
.
indexOf
(
"
html-script: true
"
)
>
-
1
&&
(
language
!==
"
xml
"
&&
language
!==
"
xhtml
"
&&
(
language
!==
"
xml
"
&&
language
!==
"
xhtml
"
&&
language
!==
"
xslt
"
&&
language
!=
"
html
"
))
{
language
!==
"
xslt
"
&&
language
!=
"
html
"
))
{
isScrip
=
true
;
isScrip
=
true
;
}
}
languages
.
push
(
language
);
languages
.
push
(
language
);
});
});
// when html-script is true, need shBrushXml.js
// when html-script is true, need shBrushXml.js
if
(
isScrip
)
{
if
(
isScrip
)
{
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
,
url
:
latkeConfig
.
staticServePath
+
"
/js/lib/SyntaxHighlighter/scripts/shBrushXml.js
"
,
dataType
:
"
script
"
,
dataType
:
"
script
"
,
cache
:
true
,
cache
:
true
,
success
:
function
()
{
success
:
function
()
{
that
.
_initSyntaxHighlighter
(
languages
);
that
.
_initSyntaxHighlighter
(
languages
);
}
}
});
});
}
else
{
}
else
{
that
.
_initSyntaxHighlighter
(
languages
);
that
.
_initSyntaxHighlighter
(
languages
);
}
}
}
}
});
});
},
},
/*
/*
* @description 解析语法高亮
* @description 解析语法高亮
* @param {Obj} obj 语法高亮配置参数
* @param {Obj} obj 语法高亮配置参数
* @param {Obj} obj.SHTheme 语法高亮 SyntaxHighLighter 样式
* @param {Obj} obj.SHTheme 语法高亮 SyntaxHighLighter 样式
*/
*/
parseLanguage
:
function
(
obj
)
{
parseLanguage
:
function
(
obj
)
{
var
isPrettify
=
false
,
var
isPrettify
=
false
,
isSH
=
false
;
isSH
=
false
;
$
(
"
.article-body pre
"
).
each
(
function
()
{
$
(
"
.article-body pre
"
).
each
(
function
()
{
if
(
this
.
className
.
indexOf
(
"
brush
"
)
>
-
1
)
{
if
(
this
.
className
.
indexOf
(
"
brush
"
)
>
-
1
)
{
isSH
=
true
;
isSH
=
true
;
}
}
if
(
this
.
className
.
indexOf
(
"
prettyprint
"
)
>
-
1
)
{
if
(
this
.
className
.
indexOf
(
"
prettyprint
"
)
>
-
1
)
{
isPrettify
=
true
;
isPrettify
=
true
;
}
}
});
});
if
(
isSH
)
{
if
(
isSH
)
{
this
.
_loadSyntaxHighlighter
(
obj
?
(
obj
.
SHTheme
?
obj
.
SHTheme
:
undefined
)
:
undefined
);
this
.
_loadSyntaxHighlighter
(
obj
?
(
obj
.
SHTheme
?
obj
.
SHTheme
:
undefined
)
:
undefined
);
}
}
if
(
isPrettify
)
{
if
(
isPrettify
)
{
// load css
// load css
if
(
document
.
createStyleSheet
)
{
if
(
document
.
createStyleSheet
)
{
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css
"
);
document
.
createStyleSheet
(
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css
"
);
}
else
{
}
else
{
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css'>
"
));
$
(
"
head
"
).
append
(
$
(
"
<link rel='stylesheet' href='
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.css'>
"
));
}
}
// load js
// load js
document
.
write
(
"
<script src=
\"
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.js
\"
><
\
/script>
"
);
document
.
write
(
"
<script src=
\"
"
+
latkeConfig
.
staticServePath
+
"
/js/lib/google-code-prettify/prettify.js
\"
><
\
/script>
"
);
// load function
// load function
$
(
document
).
ready
(
function
()
{
$
(
document
).
ready
(
function
()
{
prettyPrint
();
prettyPrint
();
});
});
}
}
},
},
/*
/*
* @description 文章/自定义页面加载
* @description 文章/自定义页面加载
* @param {Obj} obj 配置设定
* @param {Obj} obj 配置设定
* @param {Obj} obj.language 代码高亮配置
* @param {Obj} obj.language 代码高亮配置
*/
*/
load
:
function
(
obj
)
{
load
:
function
(
obj
)
{
var
that
=
this
;
var
that
=
this
;
// emotions
// emotions
that
.
insertEmotions
();
that
.
insertEmotions
();
// language
// language
that
.
parseLanguage
(
obj
?
(
obj
.
language
?
obj
.
language
:
undefined
)
:
undefined
);
that
.
parseLanguage
(
obj
?
(
obj
.
language
?
obj
.
language
:
undefined
)
:
undefined
);
// submit comment
// submit comment
$
(
"
#commentValidate
"
).
keypress
(
function
(
event
)
{
$
(
"
#commentValidate
"
).
keypress
(
function
(
event
)
{
if
(
event
.
keyCode
===
13
)
{
if
(
event
.
keyCode
===
13
)
{
that
.
submitComment
();
that
.
submitComment
();
}
}
});
});
// captcha
// captcha
$
(
"
#captcha
"
).
click
(
function
()
{
$
(
"
#captcha
"
).
click
(
function
()
{
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
});
});
// cookie
// cookie
var
$top
=
$
(
"
#top #admin
"
);
var
$top
=
$
(
"
#top #admin
"
);
if
(
$top
.
length
===
1
)
{
if
(
$top
.
length
===
1
)
{
if
(
$top
.
find
(
"
a
"
).
length
>
2
)
{
if
(
$top
.
find
(
"
a
"
).
length
>
2
)
{
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
Cookie
.
createCookie
(
"
commentName
"
,
$top
.
find
(
"
span
"
).
text
(),
365
);
Cookie
.
createCookie
(
"
commentName
"
,
$top
.
find
(
"
span
"
).
text
(),
365
);
}
}
if
(
Cookie
.
readCookie
(
"
commentURL
"
)
===
""
)
{
if
(
Cookie
.
readCookie
(
"
commentURL
"
)
===
""
)
{
Cookie
.
createCookie
(
"
commentURL
"
,
window
.
location
.
host
,
365
);
Cookie
.
createCookie
(
"
commentURL
"
,
window
.
location
.
host
,
365
);
}
}
}
}
}
}
$
(
"
#commentEmail
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
$
(
"
#commentEmail
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
$
(
"
#commentURL
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#commentURL
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#commentName
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
$
(
"
#commentName
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
},
},
/*
/*
* @description 加载随机文章
* @description 加载随机文章
* @param {String} headTitle 随机文章标题
* @param {String} headTitle 随机文章标题
*/
*/
loadRandomArticles
:
function
(
headTitle
)
{
loadRandomArticles
:
function
(
headTitle
)
{
var
randomArticles1Label
=
this
.
tips
.
randomArticles1Label
;
var
randomArticles1Label
=
this
.
tips
.
randomArticles1Label
;
// getRandomArticles
// getRandomArticles
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/get-random-articles.do
"
,
url
:
latkeConfig
.
staticServePath
+
"
/get-random-articles.do
"
,
type
:
"
POST
"
,
type
:
"
POST
"
,
success
:
function
(
result
,
textStatus
){
success
:
function
(
result
,
textStatus
){
var
randomArticles
=
result
.
randomArticles
;
var
randomArticles
=
result
.
randomArticles
;
if
(
!
randomArticles
||
0
===
randomArticles
.
length
)
{
if
(
!
randomArticles
||
0
===
randomArticles
.
length
)
{
$
(
"
#randomArticles
"
).
remove
();
$
(
"
#randomArticles
"
).
remove
();
return
;
return
;
}
}
var
listHtml
=
""
;
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
randomArticles
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
randomArticles
.
length
;
i
++
)
{
var
article
=
randomArticles
[
i
];
var
article
=
randomArticles
[
i
];
var
title
=
article
.
articleTitle
;
var
title
=
article
.
articleTitle
;
var
randomArticleLiHtml
=
"
<li>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
var
randomArticleLiHtml
=
"
<li>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
;
listHtml
+=
randomArticleLiHtml
;
listHtml
+=
randomArticleLiHtml
;
}
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
randomArticles1Label
+
"
</h4>
"
;
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
randomArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
$
(
"
#randomArticles
"
).
append
(
randomArticleListHtml
);
$
(
"
#randomArticles
"
).
append
(
randomArticleListHtml
);
}
}
});
});
},
},
/*
/*
* @description 加载相关文章
* @description 加载相关文章
* @param {String} id 文章 id
* @param {String} id 文章 id
* @param {String} headTitle 相关文章标题
* @param {String} headTitle 相关文章标题
*/
*/
loadRelevantArticles
:
function
(
id
,
headTitle
)
{
loadRelevantArticles
:
function
(
id
,
headTitle
)
{
$
.
ajax
({
$
.
ajax
({
url
:
latkeConfig
.
staticServePath
+
"
/article/id/
"
+
id
+
"
/relevant/articles
"
,
url
:
latkeConfig
.
staticServePath
+
"
/article/id/
"
+
id
+
"
/relevant/articles
"
,
type
:
"
GET
"
,
type
:
"
GET
"
,
success
:
function
(
data
,
textStatus
){
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
relevantArticles
;
var
articles
=
data
.
relevantArticles
;
if
(
!
articles
||
0
===
articles
.
length
)
{
if
(
!
articles
||
0
===
articles
.
length
)
{
$
(
"
#relevantArticles
"
).
remove
();
$
(
"
#relevantArticles
"
).
remove
();
return
;
return
;
}
}
var
listHtml
=
""
;
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
)
{
var
article
=
articles
[
i
];
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li>
"
var
articleLiHtml
=
"
<li>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
+
title
+
"
</a></li>
"
listHtml
+=
articleLiHtml
listHtml
+=
articleLiHtml
}
}
var
relevantArticleListHtml
=
headTitle
var
relevantArticleListHtml
=
headTitle
+
"
<ul class='marginLeft12'>
"
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
+
listHtml
+
"
</ul>
"
;
$
(
"
#relevantArticles
"
).
append
(
relevantArticleListHtml
);
$
(
"
#relevantArticles
"
).
append
(
relevantArticleListHtml
);
},
},
error
:
function
()
{
error
:
function
()
{
$
(
"
#relevantArticles
"
).
remove
();
$
(
"
#relevantArticles
"
).
remove
();
}
}
});
});
},
},
/*
/*
* @description 加载站外相关文章
* @description 加载站外相关文章
* @param {String} tags 文章 tags
* @param {String} tags 文章 tags
* @param {String} headTitle 站外相关文章标题
* @param {String} headTitle 站外相关文章标题
*/
*/
loadExternalRelevantArticles
:
function
(
tags
,
headTitle
)
{
loadExternalRelevantArticles
:
function
(
tags
,
headTitle
)
{
var
tips
=
this
.
tips
;
var
tips
=
this
.
tips
;
try
{
try
{
$
.
ajax
({
$
.
ajax
({
url
:
"
http://rhythm.b3log.org:80/get-articles-by-tags.do?tags=
"
+
tags
url
:
"
http://rhythm.b3log.org:80/get-articles-by-tags.do?tags=
"
+
tags
+
"
&blogHost=
"
+
tips
.
blogHost
+
"
&paginationPageSize=
"
+
tips
.
externalRelevantArticlesDisplayCount
,
+
"
&blogHost=
"
+
tips
.
blogHost
+
"
&paginationPageSize=
"
+
tips
.
externalRelevantArticlesDisplayCount
,
type
:
"
GET
"
,
type
:
"
GET
"
,
cache
:
true
,
cache
:
true
,
dataType
:
"
jsonp
"
,
dataType
:
"
jsonp
"
,
error
:
function
(){
error
:
function
(){
$
(
"
#externalRelevantArticles
"
).
remove
();
$
(
"
#externalRelevantArticles
"
).
remove
();
},
},
success
:
function
(
data
,
textStatus
){
success
:
function
(
data
,
textStatus
){
var
articles
=
data
.
articles
;
var
articles
=
data
.
articles
;
if
(
!
articles
||
0
===
articles
.
length
)
{
if
(
!
articles
||
0
===
articles
.
length
)
{
$
(
"
#externalRelevantArticles
"
).
remove
();
$
(
"
#externalRelevantArticles
"
).
remove
();
return
;
return
;
}
}
var
listHtml
=
""
;
var
listHtml
=
""
;
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
articles
.
length
;
i
++
)
{
var
article
=
articles
[
i
];
var
article
=
articles
[
i
];
var
title
=
article
.
articleTitle
;
var
title
=
article
.
articleTitle
;
var
articleLiHtml
=
"
<li>
"
var
articleLiHtml
=
"
<li>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' target='_blank' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
"
<a rel='nofollow' title='
"
+
title
+
"
' target='_blank' href='
"
+
article
.
articlePermalink
+
"
'>
"
+
title
+
"
</a></li>
"
+
title
+
"
</a></li>
"
listHtml
+=
articleLiHtml
listHtml
+=
articleLiHtml
}
}
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
tips
.
externalRelevantArticles1Label
+
"
</h4>
"
;
var
titleHTML
=
headTitle
?
headTitle
:
"
<h4>
"
+
tips
.
externalRelevantArticles1Label
+
"
</h4>
"
;
var
randomArticleListHtml
=
titleHTML
var
randomArticleListHtml
=
titleHTML
+
"
<ul class='marginLeft12'>
"
+
"
<ul class='marginLeft12'>
"
+
listHtml
+
"
</ul>
"
;
+
listHtml
+
"
</ul>
"
;
$
(
"
#externalRelevantArticles
"
).
append
(
randomArticleListHtml
);
$
(
"
#externalRelevantArticles
"
).
append
(
randomArticleListHtml
);
}
}
});
});
}
catch
(
e
)
{
}
catch
(
e
)
{
// 忽略相关文章加载异常:load script error
// 忽略相关文章加载异常:load script error
}
}
},
},
/*
/*
* @description 提交评论
* @description 提交评论
* @param {String} commentId 回复评论时的评论 id
* @param {String} commentId 回复评论时的评论 id
* @param {String} state 区分回复文章还是回复评论的标识
* @param {String} state 区分回复文章还是回复评论的标识
*/
*/
submitComment
:
function
(
commentId
,
state
)
{
submitComment
:
function
(
commentId
,
state
)
{
if
(
!
state
)
{
if
(
!
state
)
{
state
=
''
;
state
=
''
;
}
}
var
that
=
this
,
var
that
=
this
,
tips
=
this
.
tips
,
tips
=
this
.
tips
,
type
=
"
article
"
;
type
=
"
article
"
;
if
(
tips
.
externalRelevantArticlesDisplayCount
===
undefined
)
{
if
(
tips
.
externalRelevantArticlesDisplayCount
===
undefined
)
{
type
=
"
page
"
;
type
=
"
page
"
;
}
}
if
(
this
.
validateComment
(
state
))
{
if
(
this
.
validateComment
(
state
))
{
$
(
"
#submitCommentButton
"
+
state
).
attr
(
"
disabled
"
,
"
disabled
"
);
$
(
"
#submitCommentButton
"
+
state
).
attr
(
"
disabled
"
,
"
disabled
"
);
$
(
"
#commentErrorTip
"
+
state
).
show
().
html
(
this
.
tips
.
loadingLabel
);
$
(
"
#commentErrorTip
"
+
state
).
show
().
html
(
this
.
tips
.
loadingLabel
);
var
requestJSONObject
=
{
var
requestJSONObject
=
{
"
oId
"
:
tips
.
oId
,
"
oId
"
:
tips
.
oId
,
"
commentContent
"
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
"
commentContent
"
:
$
(
"
#comment
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
"
commentEmail
"
:
$
(
"
#commentEmail
"
+
state
).
val
(),
"
commentEmail
"
:
$
(
"
#commentEmail
"
+
state
).
val
(),
"
commentURL
"
:
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)),
"
commentURL
"
:
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
)),
"
commentName
"
:
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
"
commentName
"
:
$
(
"
#commentName
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
"
captcha
"
:
$
(
"
#commentValidate
"
+
state
).
val
()
"
captcha
"
:
$
(
"
#commentValidate
"
+
state
).
val
()
};
};
if
(
state
===
"
Reply
"
)
{
if
(
state
===
"
Reply
"
)
{
requestJSONObject
.
commentOriginalCommentId
=
commentId
;
requestJSONObject
.
commentOriginalCommentId
=
commentId
;
}
}
$
.
ajax
({
$
.
ajax
({
type
:
"
POST
"
,
type
:
"
POST
"
,
url
:
latkeConfig
.
servePath
+
"
/add-
"
+
type
+
"
-comment.do
"
,
url
:
latkeConfig
.
servePath
+
"
/add-
"
+
type
+
"
-comment.do
"
,
cache
:
false
,
cache
:
false
,
contentType
:
"
application/json
"
,
contentType
:
"
application/json
"
,
data
:
JSON
.
stringify
(
requestJSONObject
),
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
){
success
:
function
(
result
){
if
(
!
result
.
sc
)
{
if
(
!
result
.
sc
)
{
$
(
"
#commentErrorTip
"
+
state
).
html
(
result
.
msg
);
$
(
"
#commentErrorTip
"
+
state
).
html
(
result
.
msg
);
$
(
"
#commentValidate
"
+
state
).
val
(
""
).
focus
();
$
(
"
#commentValidate
"
+
state
).
val
(
""
).
focus
();
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
return
;
return
;
}
}
result
.
replyNameHTML
=
""
;
result
.
replyNameHTML
=
""
;
if
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
if
(
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
\s
/g
,
""
)
===
""
)
{
result
.
replyNameHTML
=
'
<a>
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
'
</a>
'
;
result
.
replyNameHTML
=
'
<a>
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
'
</a>
'
;
}
else
{
}
else
{
result
.
replyNameHTML
=
'
<a href="
'
+
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
())
+
result
.
replyNameHTML
=
'
<a href="
'
+
Util
.
proessURL
(
$
(
"
#commentURL
"
+
state
).
val
())
+
'
" target="_blank">
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
'
</a>
'
;
'
" target="_blank">
'
+
$
(
"
#commentName
"
+
state
).
val
()
+
'
</a>
'
;
}
}
that
.
addCommentAjax
(
addComment
(
result
,
state
),
state
);
that
.
addCommentAjax
(
addComment
(
result
,
state
),
state
);
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
$
(
"
#submitCommentButton
"
+
state
).
removeAttr
(
"
disabled
"
);
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
$
(
"
#captcha
"
+
state
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
}
}
});
});
Cookie
.
createCookie
(
"
commentName
"
,
requestJSONObject
.
commentName
,
365
);
Cookie
.
createCookie
(
"
commentName
"
,
requestJSONObject
.
commentName
,
365
);
Cookie
.
createCookie
(
"
commentEmail
"
,
requestJSONObject
.
commentEmail
,
365
);
Cookie
.
createCookie
(
"
commentEmail
"
,
requestJSONObject
.
commentEmail
,
365
);
Cookie
.
createCookie
(
"
commentURL
"
,
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
365
);
Cookie
.
createCookie
(
"
commentURL
"
,
$
(
"
#commentURL
"
+
state
).
val
().
replace
(
/
(
^
\s
*
)
|
(\s
*$
)
/g
,
""
),
365
);
}
}
},
},
/*
/*
* @description 添加回复评论表单
* @description 添加回复评论表单
* @param {String} id 被回复的评论 id
* @param {String} id 被回复的评论 id
* @param {String} commentFormHTML 评论表单HTML
* @param {String} commentFormHTML 评论表单HTML
* @param {String} endHTML 判断该表单使用 table 还是 div 标签,然后进行构造
* @param {String} endHTML 判断该表单使用 table 还是 div 标签,然后进行构造
*/
*/
addReplyForm
:
function
(
id
,
commentFormHTML
,
endHTML
)
{
addReplyForm
:
function
(
id
,
commentFormHTML
,
endHTML
)
{
var
that
=
this
;
var
that
=
this
;
if
(
id
===
this
.
currentCommentId
)
{
if
(
id
===
this
.
currentCommentId
)
{
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
$
(
"
#commentNameReply
"
).
focus
();
$
(
"
#commentNameReply
"
).
focus
();
}
else
{
}
else
{
$
(
"
#commentReply
"
).
focus
();
$
(
"
#commentReply
"
).
focus
();
}
}
return
;
return
;
}
else
{
}
else
{
$
(
"
#replyForm
"
).
remove
();
$
(
"
#replyForm
"
).
remove
();
endHTML
=
endHTML
?
endHTML
:
""
;
endHTML
=
endHTML
?
endHTML
:
""
;
if
(
endHTML
===
"
</div>
"
)
{
if
(
endHTML
===
"
</div>
"
)
{
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
endHTML
);
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
endHTML
);
}
else
{
}
else
{
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
"
</table>
"
+
endHTML
);
$
(
"
#
"
+
id
).
append
(
commentFormHTML
+
$
(
"
#commentForm
"
).
html
()
+
"
</table>
"
+
endHTML
);
}
}
// change id, bind event and set value
// change id, bind event and set value
$
(
"
#replyForm input, #replyForm textarea
"
).
each
(
function
()
{
$
(
"
#replyForm input, #replyForm textarea
"
).
each
(
function
()
{
this
.
id
=
this
.
id
+
"
Reply
"
;
this
.
id
=
this
.
id
+
"
Reply
"
;
});
});
$
(
"
#commentNameReply
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
$
(
"
#commentNameReply
"
).
val
(
Cookie
.
readCookie
(
"
commentName
"
));
$
(
"
#commentEmailReply
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
$
(
"
#commentEmailReply
"
).
val
(
Cookie
.
readCookie
(
"
commentEmail
"
));
var
$label
=
$
(
"
#replyForm #commentURLLabel
"
);
var
$label
=
$
(
"
#replyForm #commentURLLabel
"
);
if
(
$label
.
length
===
1
)
{
if
(
$label
.
length
===
1
)
{
$label
.
attr
(
"
id
"
,
"
commentURLLabelReply
"
);
$label
.
attr
(
"
id
"
,
"
commentURLLabelReply
"
);
}
}
$
(
"
#commentURLReply
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#commentURLReply
"
).
val
(
Cookie
.
readCookie
(
"
commentURL
"
));
$
(
"
#replyForm #emotions
"
).
attr
(
"
id
"
,
"
emotionsReply
"
);
$
(
"
#replyForm #emotions
"
).
attr
(
"
id
"
,
"
emotionsReply
"
);
this
.
insertEmotions
(
"
Reply
"
);
this
.
insertEmotions
(
"
Reply
"
);
$
(
"
#commentValidateReply
"
).
unbind
().
keypress
(
function
(
event
)
{
$
(
"
#commentValidateReply
"
).
unbind
().
keypress
(
function
(
event
)
{
if
(
event
.
keyCode
===
13
)
{
if
(
event
.
keyCode
===
13
)
{
that
.
submitComment
(
id
,
'
Reply
'
);
that
.
submitComment
(
id
,
'
Reply
'
);
event
.
preventDefault
();
event
.
preventDefault
();
}
}
});
});
$
(
"
#replyForm #captcha
"
).
attr
(
"
id
"
,
"
captchaReply
"
).
$
(
"
#replyForm #captcha
"
).
attr
(
"
id
"
,
"
captchaReply
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?
"
+
new
Date
().
getTime
()).
click
(
function
()
{
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?
"
+
new
Date
().
getTime
()).
click
(
function
()
{
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
$
(
this
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
});
});
$
(
"
#replyForm #commentErrorTip
"
).
attr
(
"
id
"
,
"
commentErrorTipReply
"
).
html
(
""
).
hide
();
$
(
"
#replyForm #commentErrorTip
"
).
attr
(
"
id
"
,
"
commentErrorTipReply
"
).
html
(
""
).
hide
();
$
(
"
#replyForm #submitCommentButton
"
).
attr
(
"
id
"
,
"
submitCommentButtonReply
"
);
$
(
"
#replyForm #submitCommentButton
"
).
attr
(
"
id
"
,
"
submitCommentButtonReply
"
);
$
(
"
#replyForm #submitCommentButtonReply
"
).
unbind
(
"
click
"
).
removeAttr
(
"
onclick
"
).
click
(
function
()
{
$
(
"
#replyForm #submitCommentButtonReply
"
).
unbind
(
"
click
"
).
removeAttr
(
"
onclick
"
).
click
(
function
()
{
that
.
submitComment
(
id
,
'
Reply
'
);
that
.
submitComment
(
id
,
'
Reply
'
);
});
});
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
if
(
Cookie
.
readCookie
(
"
commentName
"
)
===
""
)
{
$
(
"
#commentNameReply
"
).
focus
();
$
(
"
#commentNameReply
"
).
focus
();
}
else
{
}
else
{
$
(
"
#commentReply
"
).
focus
();
$
(
"
#commentReply
"
).
focus
();
}
}
}
}
this
.
currentCommentId
=
id
;
this
.
currentCommentId
=
id
;
},
},
/*
/*
* @description 隐藏回复评论的浮出层
* @description 隐藏回复评论的浮出层
* @parma {String} id 被回复的评论 id
* @parma {String} id 被回复的评论 id
*/
*/
hideComment
:
function
(
id
)
{
hideComment
:
function
(
id
)
{
$
(
"
#commentRef
"
+
id
).
hide
();
$
(
"
#commentRef
"
+
id
).
hide
();
},
},
/*
/*
* @description 显示回复评论的浮出层
* @description 显示回复评论的浮出层
* @parma {Dom} it 触发事件的 dom
* @parma {Dom} it 触发事件的 dom
* @param {String} id 被回复的评论 id
* @param {String} id 被回复的评论 id
* @param {Int} top 位置相对浮出层的高度
* @param {Int} top 位置相对浮出层的高度
* @param {String} [parentTag] it 如果嵌入在 position 为 relative 的元素 A 中时,需取到 A 元素
* @param {String} [parentTag] it 如果嵌入在 position 为 relative 的元素 A 中时,需取到 A 元素
*/
*/
showComment
:
function
(
it
,
id
,
top
,
parentTag
)
{
showComment
:
function
(
it
,
id
,
top
,
parentTag
)
{
var
positionTop
=
parseInt
(
$
(
it
).
position
().
top
);
var
positionTop
=
parseInt
(
$
(
it
).
position
().
top
);
if
(
parentTag
)
{
if
(
parentTag
)
{
positionTop
=
parseInt
(
$
(
it
).
parents
(
parentTag
).
position
().
top
);
positionTop
=
parseInt
(
$
(
it
).
parents
(
parentTag
).
position
().
top
);
}
}
if
(
$
(
"
#commentRef
"
+
id
).
length
>
0
)
{
if
(
$
(
"
#commentRef
"
+
id
).
length
>
0
)
{
// 此处重复设置 top 是由于评论为异步,原有回复评论的显示位置应往下移动
// 此处重复设置 top 是由于评论为异步,原有回复评论的显示位置应往下移动
$
(
"
#commentRef
"
+
id
).
show
().
css
(
"
top
"
,
(
positionTop
+
top
)
+
"
px
"
);
$
(
"
#commentRef
"
+
id
).
show
().
css
(
"
top
"
,
(
positionTop
+
top
)
+
"
px
"
);
}
else
{
}
else
{
var
$refComment
=
$
(
"
#
"
+
id
).
clone
();
var
$refComment
=
$
(
"
#
"
+
id
).
clone
();
$refComment
.
addClass
(
"
comment-body-ref
"
).
attr
(
"
id
"
,
"
commentRef
"
+
id
);
$refComment
.
addClass
(
"
comment-body-ref
"
).
attr
(
"
id
"
,
"
commentRef
"
+
id
);
$refComment
.
find
(
"
#replyForm
"
).
remove
();
$refComment
.
find
(
"
#replyForm
"
).
remove
();
$
(
"
#comments
"
).
append
(
$refComment
);
$
(
"
#comments
"
).
append
(
$refComment
);
$
(
"
#commentRef
"
+
id
).
css
(
"
top
"
,
(
positionTop
+
top
)
+
"
px
"
);
$
(
"
#commentRef
"
+
id
).
css
(
"
top
"
,
(
positionTop
+
top
)
+
"
px
"
);
}
}
},
},
/*
/*
* @description 回复不刷新,将回复内容异步添加到评论列表中
* @description 回复不刷新,将回复内容异步添加到评论列表中
* @parma {String} commentHTML 回复内容 HTML
* @parma {String} commentHTML 回复内容 HTML
* @param {String} state 用于区分评论文章还是回复评论
* @param {String} state 用于区分评论文章还是回复评论
*/
*/
addCommentAjax
:
function
(
commentHTML
,
state
)
{
addCommentAjax
:
function
(
commentHTML
,
state
)
{
if
(
$
(
"
#comments
"
).
children
().
length
>
0
)
{
if
(
$
(
"
#comments
"
).
children
().
length
>
0
)
{
$
(
$
(
"
#comments
"
).
children
()[
0
]).
before
(
commentHTML
);
$
(
$
(
"
#comments
"
).
children
()[
0
]).
before
(
commentHTML
);
}
else
{
}
else
{
$
(
"
#comments
"
).
html
(
commentHTML
);
$
(
"
#comments
"
).
html
(
commentHTML
);
}
}
if
(
state
===
""
)
{
if
(
state
===
""
)
{
$
(
"
#commentErrorTip
"
).
html
(
""
).
hide
();
$
(
"
#commentErrorTip
"
).
html
(
""
).
hide
();
$
(
"
#comment
"
).
val
(
""
);
$
(
"
#comment
"
).
val
(
""
);
$
(
"
#commentValidate
"
).
val
(
""
);
$
(
"
#commentValidate
"
).
val
(
""
);
$
(
"
#captcha
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
$
(
"
#captcha
"
).
attr
(
"
src
"
,
latkeConfig
.
servePath
+
"
/captcha.do?code=
"
+
Math
.
random
());
}
else
{
}
else
{
$
(
"
#replyForm
"
).
remove
();
$
(
"
#replyForm
"
).
remove
();
}
}
window
.
location
.
hash
=
"
#comments
"
;
window
.
location
.
hash
=
"
#comments
"
;
}
}
});
});
\ 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