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
2e131795
Commit
2e131795
authored
Feb 18, 2017
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🔨
#12246
parent
8fae6ef1
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
87 additions
and
43 deletions
+87
-43
src/main/java/org/b3log/solo/processor/CommentProcessor.java
src/main/java/org/b3log/solo/processor/CommentProcessor.java
+48
-33
src/main/java/org/b3log/solo/service/CommentMgmtService.java
src/main/java/org/b3log/solo/service/CommentMgmtService.java
+32
-3
src/main/java/org/b3log/solo/service/CommentQueryService.java
...main/java/org/b3log/solo/service/CommentQueryService.java
+2
-1
src/main/webapp/skins/9IPHP/common-comment.ftl
src/main/webapp/skins/9IPHP/common-comment.ftl
+5
-6
No files found.
src/main/java/org/b3log/solo/processor/CommentProcessor.java
View file @
2e131795
...
@@ -29,13 +29,12 @@ import org.b3log.latke.servlet.annotation.RequestProcessor;
...
@@ -29,13 +29,12 @@ import org.b3log.latke.servlet.annotation.RequestProcessor;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.model.Article
;
import
org.b3log.solo.model.*
;
import
org.b3log.solo.model.Comment
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.model.Page
;
import
org.b3log.solo.service.CommentMgmtService
;
import
org.b3log.solo.service.CommentMgmtService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.UserMgmtService
;
import
org.b3log.solo.service.UserMgmtService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.b3log.solo.util.Skins
;
import
org.json.JSONObject
;
import
org.json.JSONObject
;
import
javax.inject.Inject
;
import
javax.inject.Inject
;
...
@@ -54,7 +53,7 @@ import java.util.Map;
...
@@ -54,7 +53,7 @@ import java.util.Map;
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author ArmstrongCN
* @author ArmstrongCN
* @version 1.3.2.1
2, Feb 17
, 2017
* @version 1.3.2.1
3, Feb 18
, 2017
* @since 0.3.1
* @since 0.3.1
*/
*/
@RequestProcessor
@RequestProcessor
...
@@ -89,6 +88,12 @@ public class CommentProcessor {
...
@@ -89,6 +88,12 @@ public class CommentProcessor {
@Inject
@Inject
private
UserMgmtService
userMgmtService
;
private
UserMgmtService
userMgmtService
;
/**
* Preference query service.
*/
@Inject
private
PreferenceQueryService
preferenceQueryService
;
/**
/**
* Adds a comment to a page.
* Adds a comment to a page.
* <p>
* <p>
...
@@ -122,15 +127,12 @@ public class CommentProcessor {
...
@@ -122,15 +127,12 @@ public class CommentProcessor {
final
HttpServletResponse
httpServletResponse
=
context
.
getResponse
();
final
HttpServletResponse
httpServletResponse
=
context
.
getResponse
();
final
JSONObject
requestJSONObject
=
Requests
.
parseRequestJSONObject
(
httpServletRequest
,
httpServletResponse
);
final
JSONObject
requestJSONObject
=
Requests
.
parseRequestJSONObject
(
httpServletRequest
,
httpServletResponse
);
requestJSONObject
.
put
(
Common
.
TYPE
,
Page
.
PAGE
);
requestJSONObject
.
put
(
Common
.
TYPE
,
Page
.
PAGE
);
fillCommenter
(
requestJSONObject
,
httpServletRequest
,
httpServletResponse
);
fillCommenter
(
requestJSONObject
,
httpServletRequest
,
httpServletResponse
);
final
JSONObject
jsonObject
=
commentMgmtService
.
checkAddCommentRequest
(
requestJSONObject
);
final
JSONObject
jsonObject
=
commentMgmtService
.
checkAddCommentRequest
(
requestJSONObject
);
final
JSONRenderer
renderer
=
new
JSONRenderer
();
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
context
.
setRenderer
(
renderer
);
renderer
.
setJSONObject
(
jsonObject
);
renderer
.
setJSONObject
(
jsonObject
);
...
@@ -149,11 +151,9 @@ public class CommentProcessor {
...
@@ -149,11 +151,9 @@ public class CommentProcessor {
}
}
final
String
storedCaptcha
=
(
String
)
session
.
getAttribute
(
CaptchaProcessor
.
CAPTCHA
);
final
String
storedCaptcha
=
(
String
)
session
.
getAttribute
(
CaptchaProcessor
.
CAPTCHA
);
session
.
removeAttribute
(
CaptchaProcessor
.
CAPTCHA
);
session
.
removeAttribute
(
CaptchaProcessor
.
CAPTCHA
);
if
(!
userQueryService
.
isLoggedIn
(
httpServletRequest
,
httpServletResponse
))
{
if
(!
userQueryService
.
isLoggedIn
(
httpServletRequest
,
httpServletResponse
))
{
final
String
captcha
=
requestJSONObject
.
optString
(
CaptchaProcessor
.
CAPTCHA
);
final
String
captcha
=
requestJSONObject
.
optString
(
CaptchaProcessor
.
CAPTCHA
);
if
(
null
==
storedCaptcha
||
!
storedCaptcha
.
equals
(
captcha
))
{
if
(
null
==
storedCaptcha
||
!
storedCaptcha
.
equals
(
captcha
))
{
...
@@ -162,7 +162,6 @@ public class CommentProcessor {
...
@@ -162,7 +162,6 @@ public class CommentProcessor {
return
;
return
;
}
}
}
}
try
{
try
{
...
@@ -171,13 +170,26 @@ public class CommentProcessor {
...
@@ -171,13 +170,26 @@ public class CommentProcessor {
final
Map
<
String
,
Object
>
dataModel
=
new
HashMap
<>();
final
Map
<
String
,
Object
>
dataModel
=
new
HashMap
<>();
dataModel
.
put
(
Comment
.
COMMENT
,
addResult
);
dataModel
.
put
(
Comment
.
COMMENT
,
addResult
);
final
JSONObject
page
=
addResult
.
optJSONObject
(
Page
.
PAGE
);
page
.
put
(
Common
.
COMMENTABLE
,
addResult
.
opt
(
Common
.
COMMENTABLE
));
page
.
put
(
Common
.
PERMALINK
,
addResult
.
opt
(
Common
.
PERMALINK
));
dataModel
.
put
(
Article
.
ARTICLE
,
page
);
// https://github.com/b3log/solo/issues/12246
try
{
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
skinDirName
,
dataModel
);
Keys
.
fillServer
(
dataModel
);
final
StringWriter
stringWriter
=
new
StringWriter
();
final
StringWriter
stringWriter
=
new
StringWriter
();
template
.
process
(
dataModel
,
stringWriter
);
template
.
process
(
dataModel
,
stringWriter
);
stringWriter
.
close
();
stringWriter
.
close
();
addResult
.
put
(
"cmtTpl"
,
stringWriter
.
toString
());
addResult
.
put
(
"cmtTpl"
,
stringWriter
.
toString
());
}
catch
(
final
Exception
e
)
{
// 1.9.0 向后兼容
}
addResult
.
put
(
Keys
.
STATUS_CODE
,
true
);
addResult
.
put
(
Keys
.
STATUS_CODE
,
true
);
renderer
.
setJSONObject
(
addResult
);
renderer
.
setJSONObject
(
addResult
);
...
@@ -223,15 +235,12 @@ public class CommentProcessor {
...
@@ -223,15 +235,12 @@ public class CommentProcessor {
final
HttpServletResponse
httpServletResponse
=
context
.
getResponse
();
final
HttpServletResponse
httpServletResponse
=
context
.
getResponse
();
final
JSONObject
requestJSONObject
=
Requests
.
parseRequestJSONObject
(
httpServletRequest
,
httpServletResponse
);
final
JSONObject
requestJSONObject
=
Requests
.
parseRequestJSONObject
(
httpServletRequest
,
httpServletResponse
);
requestJSONObject
.
put
(
Common
.
TYPE
,
Article
.
ARTICLE
);
requestJSONObject
.
put
(
Common
.
TYPE
,
Article
.
ARTICLE
);
fillCommenter
(
requestJSONObject
,
httpServletRequest
,
httpServletResponse
);
fillCommenter
(
requestJSONObject
,
httpServletRequest
,
httpServletResponse
);
final
JSONObject
jsonObject
=
commentMgmtService
.
checkAddCommentRequest
(
requestJSONObject
);
final
JSONObject
jsonObject
=
commentMgmtService
.
checkAddCommentRequest
(
requestJSONObject
);
final
JSONRenderer
renderer
=
new
JSONRenderer
();
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
context
.
setRenderer
(
renderer
);
renderer
.
setJSONObject
(
jsonObject
);
renderer
.
setJSONObject
(
jsonObject
);
...
@@ -241,7 +250,6 @@ public class CommentProcessor {
...
@@ -241,7 +250,6 @@ public class CommentProcessor {
}
}
final
HttpSession
session
=
httpServletRequest
.
getSession
(
false
);
final
HttpSession
session
=
httpServletRequest
.
getSession
(
false
);
if
(
null
==
session
)
{
if
(
null
==
session
)
{
jsonObject
.
put
(
Keys
.
STATUS_CODE
,
false
);
jsonObject
.
put
(
Keys
.
STATUS_CODE
,
false
);
jsonObject
.
put
(
Keys
.
MSG
,
langPropsService
.
get
(
"captchaErrorLabel"
));
jsonObject
.
put
(
Keys
.
MSG
,
langPropsService
.
get
(
"captchaErrorLabel"
));
...
@@ -250,20 +258,16 @@ public class CommentProcessor {
...
@@ -250,20 +258,16 @@ public class CommentProcessor {
}
}
final
String
storedCaptcha
=
(
String
)
session
.
getAttribute
(
CaptchaProcessor
.
CAPTCHA
);
final
String
storedCaptcha
=
(
String
)
session
.
getAttribute
(
CaptchaProcessor
.
CAPTCHA
);
session
.
removeAttribute
(
CaptchaProcessor
.
CAPTCHA
);
session
.
removeAttribute
(
CaptchaProcessor
.
CAPTCHA
);
if
(!
userQueryService
.
isLoggedIn
(
httpServletRequest
,
httpServletResponse
))
{
if
(!
userQueryService
.
isLoggedIn
(
httpServletRequest
,
httpServletResponse
))
{
final
String
captcha
=
requestJSONObject
.
optString
(
CaptchaProcessor
.
CAPTCHA
);
final
String
captcha
=
requestJSONObject
.
optString
(
CaptchaProcessor
.
CAPTCHA
);
if
(
null
==
storedCaptcha
||
!
storedCaptcha
.
equals
(
captcha
))
{
if
(
null
==
storedCaptcha
||
!
storedCaptcha
.
equals
(
captcha
))
{
jsonObject
.
put
(
Keys
.
STATUS_CODE
,
false
);
jsonObject
.
put
(
Keys
.
STATUS_CODE
,
false
);
jsonObject
.
put
(
Keys
.
MSG
,
langPropsService
.
get
(
"captchaErrorLabel"
));
jsonObject
.
put
(
Keys
.
MSG
,
langPropsService
.
get
(
"captchaErrorLabel"
));
return
;
return
;
}
}
}
}
try
{
try
{
...
@@ -271,14 +275,26 @@ public class CommentProcessor {
...
@@ -271,14 +275,26 @@ public class CommentProcessor {
final
Map
<
String
,
Object
>
dataModel
=
new
HashMap
<>();
final
Map
<
String
,
Object
>
dataModel
=
new
HashMap
<>();
dataModel
.
put
(
Comment
.
COMMENT
,
addResult
);
dataModel
.
put
(
Comment
.
COMMENT
,
addResult
);
final
JSONObject
article
=
addResult
.
optJSONObject
(
Article
.
ARTICLE
);
article
.
put
(
Common
.
COMMENTABLE
,
addResult
.
opt
(
Common
.
COMMENTABLE
));
article
.
put
(
Common
.
PERMALINK
,
addResult
.
opt
(
Common
.
PERMALINK
));
dataModel
.
put
(
Article
.
ARTICLE
,
article
);
// https://github.com/b3log/solo/issues/12246
try
{
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
skinDirName
,
dataModel
);
Keys
.
fillServer
(
dataModel
);
final
StringWriter
stringWriter
=
new
StringWriter
();
final
StringWriter
stringWriter
=
new
StringWriter
();
template
.
process
(
dataModel
,
stringWriter
);
template
.
process
(
dataModel
,
stringWriter
);
stringWriter
.
close
();
stringWriter
.
close
();
addResult
.
put
(
"cmtTpl"
,
stringWriter
.
toString
());
addResult
.
put
(
"cmtTpl"
,
stringWriter
.
toString
());
}
catch
(
final
Exception
e
)
{
// 1.9.0 向后兼容
}
addResult
.
put
(
Keys
.
STATUS_CODE
,
true
);
addResult
.
put
(
Keys
.
STATUS_CODE
,
true
);
renderer
.
setJSONObject
(
addResult
);
renderer
.
setJSONObject
(
addResult
);
...
@@ -302,7 +318,6 @@ public class CommentProcessor {
...
@@ -302,7 +318,6 @@ public class CommentProcessor {
userMgmtService
.
tryLogInWithCookie
(
httpServletRequest
,
httpServletResponse
);
userMgmtService
.
tryLogInWithCookie
(
httpServletRequest
,
httpServletResponse
);
final
JSONObject
currentUser
=
userQueryService
.
getCurrentUser
(
httpServletRequest
);
final
JSONObject
currentUser
=
userQueryService
.
getCurrentUser
(
httpServletRequest
);
if
(
null
==
currentUser
)
{
if
(
null
==
currentUser
)
{
return
;
return
;
}
}
...
...
src/main/java/org/b3log/solo/service/CommentMgmtService.java
View file @
2e131795
...
@@ -57,7 +57,7 @@ import org.jsoup.safety.Whitelist;
...
@@ -57,7 +57,7 @@ import org.jsoup.safety.Whitelist;
* Comment management service.
* Comment management service.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.3.2.
9, Feb 17
, 2017
* @version 1.3.2.
10, Feb 18
, 2017
* @since 0.3.5
* @since 0.3.5
*/
*/
@Service
@Service
...
@@ -400,7 +400,12 @@ public class CommentMgmtService {
...
@@ -400,7 +400,12 @@ public class CommentMgmtService {
* "commentSharpURL": "",
* "commentSharpURL": "",
* "commentContent": "", // processed XSS HTML
* "commentContent": "", // processed XSS HTML
* "commentName": "", // processed XSS
* "commentName": "", // processed XSS
* "commentURL": "" // optional
* "commentURL": "", // optional
* "isReply": boolean,
* "page": {},
* "commentOriginalCommentId": "" // optional
* "commentable": boolean,
* "permalink": "" // page.pagePermalink
* }
* }
* </pre>
* </pre>
*
*
...
@@ -408,18 +413,21 @@ public class CommentMgmtService {
...
@@ -408,18 +413,21 @@ public class CommentMgmtService {
*/
*/
public
JSONObject
addPageComment
(
final
JSONObject
requestJSONObject
)
throws
ServiceException
{
public
JSONObject
addPageComment
(
final
JSONObject
requestJSONObject
)
throws
ServiceException
{
final
JSONObject
ret
=
new
JSONObject
();
final
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
Common
.
IS_REPLY
,
false
);
final
Transaction
transaction
=
commentRepository
.
beginTransaction
();
final
Transaction
transaction
=
commentRepository
.
beginTransaction
();
try
{
try
{
final
String
pageId
=
requestJSONObject
.
getString
(
Keys
.
OBJECT_ID
);
final
String
pageId
=
requestJSONObject
.
getString
(
Keys
.
OBJECT_ID
);
final
JSONObject
page
=
pageRepository
.
get
(
pageId
);
final
JSONObject
page
=
pageRepository
.
get
(
pageId
);
ret
.
put
(
Page
.
PAGE
,
page
);
final
String
commentName
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_NAME
);
final
String
commentName
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_NAME
);
final
String
commentEmail
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_EMAIL
).
trim
().
toLowerCase
();
final
String
commentEmail
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_EMAIL
).
trim
().
toLowerCase
();
final
String
commentURL
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_URL
);
final
String
commentURL
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_URL
);
final
String
commentContent
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_CONTENT
);
final
String
commentContent
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_CONTENT
);
final
String
originalCommentId
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
);
final
String
originalCommentId
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
,
originalCommentId
);
// Step 1: Add comment
// Step 1: Add comment
final
JSONObject
comment
=
new
JSONObject
();
final
JSONObject
comment
=
new
JSONObject
();
...
@@ -437,6 +445,11 @@ public class CommentMgmtService {
...
@@ -437,6 +445,11 @@ public class CommentMgmtService {
comment
.
put
(
Comment
.
COMMENT_DATE
,
date
);
comment
.
put
(
Comment
.
COMMENT_DATE
,
date
);
ret
.
put
(
Comment
.
COMMENT_DATE
,
DateFormatUtils
.
format
(
date
,
"yyyy-MM-dd HH:mm:ss"
));
ret
.
put
(
Comment
.
COMMENT_DATE
,
DateFormatUtils
.
format
(
date
,
"yyyy-MM-dd HH:mm:ss"
));
ret
.
put
(
"commentDate2"
,
date
);
ret
.
put
(
Common
.
COMMENTABLE
,
preference
.
getBoolean
(
Option
.
ID_C_COMMENTABLE
)
&&
page
.
getBoolean
(
Page
.
PAGE_COMMENTABLE
));
ret
.
put
(
Common
.
PERMALINK
,
page
.
getString
(
Page
.
PAGE_PERMALINK
));
if
(!
Strings
.
isEmptyOrNull
(
originalCommentId
))
{
if
(!
Strings
.
isEmptyOrNull
(
originalCommentId
))
{
originalComment
=
commentRepository
.
get
(
originalCommentId
);
originalComment
=
commentRepository
.
get
(
originalCommentId
);
if
(
null
!=
originalComment
)
{
if
(
null
!=
originalComment
)
{
...
@@ -445,6 +458,8 @@ public class CommentMgmtService {
...
@@ -445,6 +458,8 @@ public class CommentMgmtService {
comment
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
comment
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Common
.
IS_REPLY
,
true
);
}
else
{
}
else
{
LOGGER
.
log
(
Level
.
WARN
,
"Not found orginal comment[id={0}] of reply[name={1}, content={2}]"
,
originalCommentId
,
LOGGER
.
log
(
Level
.
WARN
,
"Not found orginal comment[id={0}] of reply[name={1}, content={2}]"
,
originalCommentId
,
commentName
,
commentContent
);
commentName
,
commentContent
);
...
@@ -522,7 +537,12 @@ public class CommentMgmtService {
...
@@ -522,7 +537,12 @@ public class CommentMgmtService {
* "commentSharpURL": "",
* "commentSharpURL": "",
* "commentContent": "", // processed XSS HTML
* "commentContent": "", // processed XSS HTML
* "commentName": "", // processed XSS
* "commentName": "", // processed XSS
* "commentURL": "" // optional
* "commentURL": "", // optional
* "isReply": boolean,
* "article": {},
* "commentOriginalCommentId": "", // optional
* "commentable": boolean,
* "permalink": "" // article.articlePermalink
* }
* }
* </pre>
* </pre>
*
*
...
@@ -530,18 +550,21 @@ public class CommentMgmtService {
...
@@ -530,18 +550,21 @@ public class CommentMgmtService {
*/
*/
public
JSONObject
addArticleComment
(
final
JSONObject
requestJSONObject
)
throws
ServiceException
{
public
JSONObject
addArticleComment
(
final
JSONObject
requestJSONObject
)
throws
ServiceException
{
final
JSONObject
ret
=
new
JSONObject
();
final
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
Common
.
IS_REPLY
,
false
);
final
Transaction
transaction
=
commentRepository
.
beginTransaction
();
final
Transaction
transaction
=
commentRepository
.
beginTransaction
();
try
{
try
{
final
String
articleId
=
requestJSONObject
.
getString
(
Keys
.
OBJECT_ID
);
final
String
articleId
=
requestJSONObject
.
getString
(
Keys
.
OBJECT_ID
);
final
JSONObject
article
=
articleRepository
.
get
(
articleId
);
final
JSONObject
article
=
articleRepository
.
get
(
articleId
);
ret
.
put
(
Article
.
ARTICLE
,
article
);
final
String
commentName
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_NAME
);
final
String
commentName
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_NAME
);
final
String
commentEmail
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_EMAIL
).
trim
().
toLowerCase
();
final
String
commentEmail
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_EMAIL
).
trim
().
toLowerCase
();
final
String
commentURL
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_URL
);
final
String
commentURL
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_URL
);
final
String
commentContent
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_CONTENT
);
final
String
commentContent
=
requestJSONObject
.
getString
(
Comment
.
COMMENT_CONTENT
);
final
String
originalCommentId
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
);
final
String
originalCommentId
=
requestJSONObject
.
optString
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
,
originalCommentId
);
// Step 1: Add comment
// Step 1: Add comment
final
JSONObject
comment
=
new
JSONObject
();
final
JSONObject
comment
=
new
JSONObject
();
...
@@ -561,6 +584,10 @@ public class CommentMgmtService {
...
@@ -561,6 +584,10 @@ public class CommentMgmtService {
comment
.
put
(
Comment
.
COMMENT_DATE
,
date
);
comment
.
put
(
Comment
.
COMMENT_DATE
,
date
);
ret
.
put
(
Comment
.
COMMENT_DATE
,
DateFormatUtils
.
format
(
date
,
"yyyy-MM-dd HH:mm:ss"
));
ret
.
put
(
Comment
.
COMMENT_DATE
,
DateFormatUtils
.
format
(
date
,
"yyyy-MM-dd HH:mm:ss"
));
ret
.
put
(
"commentDate2"
,
date
);
ret
.
put
(
Common
.
COMMENTABLE
,
preference
.
getBoolean
(
Option
.
ID_C_COMMENTABLE
)
&&
article
.
getBoolean
(
Article
.
ARTICLE_COMMENTABLE
));
ret
.
put
(
Common
.
PERMALINK
,
article
.
getString
(
Article
.
ARTICLE_PERMALINK
));
ret
.
put
(
Comment
.
COMMENT_NAME
,
commentName
);
ret
.
put
(
Comment
.
COMMENT_NAME
,
commentName
);
ret
.
put
(
Comment
.
COMMENT_CONTENT
,
commentContent
);
ret
.
put
(
Comment
.
COMMENT_CONTENT
,
commentContent
);
...
@@ -574,6 +601,8 @@ public class CommentMgmtService {
...
@@ -574,6 +601,8 @@ public class CommentMgmtService {
comment
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
comment
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Comment
.
COMMENT_ORIGINAL_COMMENT_NAME
,
originalCommentName
);
ret
.
put
(
Common
.
IS_REPLY
,
true
);
}
else
{
}
else
{
LOGGER
.
log
(
Level
.
WARN
,
"Not found orginal comment[id={0}] of reply[name={1}, content={2}]"
,
LOGGER
.
log
(
Level
.
WARN
,
"Not found orginal comment[id={0}] of reply[name={1}, content={2}]"
,
new
String
[]{
originalCommentId
,
commentName
,
commentContent
});
new
String
[]{
originalCommentId
,
commentName
,
commentContent
});
...
...
src/main/java/org/b3log/solo/service/CommentQueryService.java
View file @
2e131795
...
@@ -49,7 +49,7 @@ import org.json.JSONObject;
...
@@ -49,7 +49,7 @@ import org.json.JSONObject;
* Comment query service.
* Comment query service.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.3.0.
8, Jun 28, 2016
* @version 1.3.0.
9, Feb 18, 2017
* @since 0.3.5
* @since 0.3.5
*/
*/
@Service
@Service
...
@@ -234,6 +234,7 @@ public class CommentQueryService {
...
@@ -234,6 +234,7 @@ public class CommentQueryService {
for
(
final
JSONObject
comment
:
comments
)
{
for
(
final
JSONObject
comment
:
comments
)
{
comment
.
put
(
Comment
.
COMMENT_TIME
,
((
Date
)
comment
.
get
(
Comment
.
COMMENT_DATE
)).
getTime
());
comment
.
put
(
Comment
.
COMMENT_TIME
,
((
Date
)
comment
.
get
(
Comment
.
COMMENT_DATE
)).
getTime
());
comment
.
put
(
"commentDate2"
,
comment
.
get
(
Comment
.
COMMENT_DATE
));
// 1.9.0 向后兼容
comment
.
put
(
Comment
.
COMMENT_NAME
,
comment
.
getString
(
Comment
.
COMMENT_NAME
));
comment
.
put
(
Comment
.
COMMENT_NAME
,
comment
.
getString
(
Comment
.
COMMENT_NAME
));
String
url
=
comment
.
getString
(
Comment
.
COMMENT_URL
);
String
url
=
comment
.
getString
(
Comment
.
COMMENT_URL
);
if
(
StringUtils
.
contains
(
url
,
"<"
))
{
// legacy issue https://github.com/b3log/solo/issues/12091
if
(
StringUtils
.
contains
(
url
,
"<"
))
{
// legacy issue https://github.com/b3log/solo/issues/12091
...
...
src/main/webapp/skins/9IPHP/common-comment.ftl
View file @
2e131795
...
@@ -9,17 +9,16 @@
...
@@ -9,17 +9,16 @@
<#else>
<#else>
<a class="user-name" href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
<a class="user-name" href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
</#if>
</#if>
<#if false> comment.isReply
<#if comment.isReply>
@
@<a class="user-name" href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}"
<a class="user-name" href="${servePath}${article.permalink}#${comment.commentOriginalCommentId}"
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
>${comment.commentOriginalCommentName}</a>
>${comment.commentOriginalCommentName}</a>
</#if>
</#if>
<time class="ft-gray">
{comment.commentDate
?string("yyyy-MM-dd HH:mm")}</time>
<time class="ft-gray">
${comment.commentDate2
?string("yyyy-MM-dd HH:mm")}</time>
<#if
true> article.commentable
<#if
article.commentable>
<a class="reply-btn" href="javascript:replyTo('${comment.oId}')">{replyLabel}</a>
<a class="reply-btn" href="javascript:replyTo('${comment.oId}')">
$
{replyLabel}</a>
</#if>
</#if>
</div>
</div>
<div class="content-reset">
<div class="content-reset">
...
...
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