comments: use server-side quote-stripping instead of reimplementing in js.

This commit is contained in:
evazion
2017-04-24 19:37:50 -05:00
parent 18424531fa
commit 869f1610fc
5 changed files with 12 additions and 20 deletions

View File

@@ -18,22 +18,6 @@
}
}
Danbooru.Comment.quote_message = function(data) {
var blocks = data["body"].match(/\[\/?quote\]|.|\n|\r/gm);
var n = 0;
var stripped_body = "";
$.each(blocks, function(i, block) {
if (block === "[quote]") {
n += 1;
} else if (block == "[/quote]") {
n -= 1;
} else if (n === 0) {
stripped_body += block;
}
});
return "[quote]\n" + data["creator_name"] + " said:\n\n" + stripped_body + "\n[/quote]\n\n";
}
Danbooru.Comment.quote = function(e) {
$.get(
"/comments/" + $(e.target).data('comment-id') + ".json",
@@ -41,7 +25,7 @@
var $link = $(e.target);
var $div = $link.closest("div.comments-for-post").find(".new-comment");
var $textarea = $div.find("textarea");
var msg = Danbooru.Comment.quote_message(data);
var msg = data["quoted_response"];
if ($textarea.val().length > 0) {
msg = $textarea.val() + "\n\n" + msg;
}

View File

@@ -48,7 +48,7 @@ class CommentsController < ApplicationController
def show
@comment = Comment.find(params[:id])
respond_with(@comment)
respond_with(@comment, methods: [:quoted_response])
end
def destroy

View File

@@ -12,6 +12,11 @@ class DText
CGI.escapeHTML(string)
end
def self.quote(message, creator_name)
stripped_body = DText.strip_blocks(message, "quote")
"[quote]\n#{creator_name} said:\n\n#{stripped_body}\n[/quote]\n\n"
end
def self.strip_blocks(string, tag)
n = 0
stripped = ""

View File

@@ -249,6 +249,10 @@ class Comment < ActiveRecord::Base
def undelete!
update({ :is_deleted => false }, :as => CurrentUser.role)
end
def quoted_response
DText.quote(body, creator_name)
end
end
Comment.connection.extend(PostgresExtensions)

View File

@@ -234,8 +234,7 @@ class ForumPost < ActiveRecord::Base
end
def quoted_response
stripped_body = DText.strip_blocks(body, "quote")
"[quote]\n#{creator_name} said:\n\n#{stripped_body}\n[/quote]\n\n"
DText.quote(body, creator_name)
end
def forum_topic_page