diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java
index 8851dbc82..faf0da599 100755
--- a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java
@@ -4,6 +4,7 @@ import cc.ryanc.halo.model.domain.Comment;
import cc.ryanc.halo.model.domain.Post;
import cc.ryanc.halo.model.domain.User;
import cc.ryanc.halo.model.dto.HaloConst;
+import cc.ryanc.halo.model.dto.JsonResult;
import cc.ryanc.halo.model.enums.BlogPropertiesEnum;
import cc.ryanc.halo.model.enums.CommentStatusEnum;
import cc.ryanc.halo.model.enums.PostTypeEnum;
@@ -27,10 +28,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -150,10 +148,11 @@ public class CommentController extends BaseController {
*
* @param commentId 被回复的评论
* @param commentContent 回复的内容
- * @return 重定向到/admin/comments
+ * @return JsonResult
*/
@PostMapping(value = "/reply")
- public String replyComment(@RequestParam("commentId") Long commentId,
+ @ResponseBody
+ public JsonResult replyComment(@RequestParam("commentId") Long commentId,
@RequestParam("postId") Long postId,
@RequestParam("commentContent") String commentContent,
@RequestParam("userAgent") String userAgent,
@@ -182,7 +181,7 @@ public class CommentController extends BaseController {
comment.setCommentAuthorAvatarMd5(SecureUtil.md5(user.getUserEmail()));
comment.setCommentDate(DateUtil.date());
String lastContent = "@" + lastComment.getCommentAuthor() + " ";
- comment.setCommentContent(lastContent + OwoUtil.markToImg(HtmlUtil.escape(commentContent)));
+ comment.setCommentContent(lastContent + OwoUtil.markToImg(HtmlUtil.escape(commentContent).replace("<br/>", "
")));
comment.setCommentAgent(userAgent);
comment.setCommentParent(commentId);
comment.setCommentStatus(CommentStatusEnum.PUBLISHED.getCode());
@@ -191,10 +190,11 @@ public class CommentController extends BaseController {
//邮件通知
new EmailToAuthor(comment, lastComment, post, user, commentContent).start();
+ return new JsonResult(1, "回复成功!");
} catch (Exception e) {
log.error("回复评论失败:{}", e.getMessage());
+ return new JsonResult(0, "回复失败!");
}
- return "redirect:/admin/comments";
}
/**
diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java
index 9c5b8ba61..cb2a805d8 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java
@@ -127,10 +127,10 @@ public class FrontCommentController {
if (comment.getCommentParent() > 0) {
lastComment = commentService.findCommentById(comment.getCommentParent()).get();
String lastContent = "@" + lastComment.getCommentAuthor() + " ";
- comment.setCommentContent(lastContent + OwoUtil.markToImg(HtmlUtil.escape(comment.getCommentContent())));
+ comment.setCommentContent(lastContent + OwoUtil.markToImg(HtmlUtil.escape(comment.getCommentContent()).replace("<br/>", "
")));
} else {
//将评论内容的字符专为安全字符
- comment.setCommentContent(OwoUtil.markToImg(HtmlUtil.escape(comment.getCommentContent())));
+ comment.setCommentContent(OwoUtil.markToImg(HtmlUtil.escape(comment.getCommentContent()).replace("<br/>", "
")));
}
if (StrUtil.isNotEmpty(comment.getCommentAuthorUrl())) {
comment.setCommentAuthorUrl(URLUtil.formatUrl(comment.getCommentAuthorUrl()));
diff --git a/src/main/resources/static/js/comment.js b/src/main/resources/static/js/comment.js
index 0a573747b..5b8b09e50 100644
--- a/src/main/resources/static/js/comment.js
+++ b/src/main/resources/static/js/comment.js
@@ -38,10 +38,10 @@ $('#comment-submit').click(function () {
async: false,
data: {
'postId': $('input[name=postId]').val(),
- 'commentContent': $('textarea[name=commentContent]').val(),
- 'commentAuthor': $('input[name=commentAuthor]').val(),
- 'commentAuthorEmail': $('input[name=commentAuthorEmail]').val(),
- 'commentAuthorUrl': $('input[name=commentAuthorUrl]').val(),
+ 'commentContent': formatContent(content.val()),
+ 'commentAuthor': author.val(),
+ 'commentAuthorEmail': email.val(),
+ 'commentAuthorUrl': url.val(),
'commentAgent': navigator.userAgent,
'commentParent': $('input[name=commentParent]').val()
},
@@ -78,12 +78,22 @@ $('.comment-cancel-reply').click(function () {
$('#commentContent').attr("placeholder","");
$(".comment-cancel-reply").hide();
});
+
+/**
+ * 加载头像
+ */
function loadAvatar() {
$(".comment-author-avatar").attr("src","//gravatar.loli.net/avatar/"+md5(localStorage.getItem("email"))+"?s=256&d="+avatarType);
if($('input[name=commentAuthorEmail]').val()!='' && $('input[name=commentAuthorEmail]').val()!=null){
$(".comment-author-avatar").attr("src","//gravatar.loli.net/avatar/"+md5($('input[name=commentAuthorEmail]').val())+"?s=256&d="+avatarType);
}
}
+
+/**
+ * 格式化ua信息
+ * @param string
+ * @returns {string}
+ */
var parser = new UAParser();
function show_ua(string){
parser.setUA(string);
@@ -95,3 +105,15 @@ function show_ua(string){
var os = uua.os.name + ' ' + uua.os.version;
return ''+browser+''+os+'';
}
+
+/**
+ * 格式化字符串
+ * @param a a
+ * @returns {*}
+ */
+function formatContent(a) {
+ a = a.replace(/\r\n/g, '
');
+ a = a.replace(/\n/g, '
');
+ a = a.replace(/\s/g, ' ');
+ return a;
+}
diff --git a/src/main/resources/templates/admin/admin_comment.ftl b/src/main/resources/templates/admin/admin_comment.ftl
index 67c63351d..39ddd8036 100755
--- a/src/main/resources/templates/admin/admin_comment.ftl
+++ b/src/main/resources/templates/admin/admin_comment.ftl
@@ -129,16 +129,16 @@