Merge pull request #3252 from evazion/fix-2736

Fix #2736: Comment mention dmail didn't go through
This commit is contained in:
Albert Yi
2017-08-07 16:05:05 -07:00
committed by GitHub
5 changed files with 31 additions and 10 deletions

View File

@@ -9,6 +9,16 @@ class DText
"[quote]\n#{creator_name} said:\n\n#{stripped_body}\n[/quote]\n\n"
end
def self.parse_mentions(text)
text = strip_blocks(text.to_s, "quote")
names = text.scan(MENTION_REGEXP).map do |mention|
mention.gsub(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "")
end
names.uniq
end
def self.strip_blocks(string, tag)
n = 0
stripped = ""
@@ -91,4 +101,3 @@ class DText
excerpt
end
end

View File

@@ -8,7 +8,8 @@ module Mentionable
def mentionable(options = {})
@mentionable_options = options
after_create :queue_mention_messages
message_field = mentionable_option(:message_field)
after_save :queue_mention_messages, if: :"#{message_field}_changed?"
end
def mentionable_option(key)
@@ -17,13 +18,11 @@ module Mentionable
end
def queue_mention_messages
from_id = read_attribute(self.class.mentionable_option(:user_field))
text = read_attribute(self.class.mentionable_option(:message_field))
text = DText.strip_blocks(text, "quote")
message_field = self.class.mentionable_option(:message_field)
text = send(message_field)
text_was = send("#{message_field}_was")
names = text.scan(DText::MENTION_REGEXP).map do |mention|
mention.gsub!(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "")
end
names = DText.parse_mentions(text) - DText.parse_mentions(text_was)
names.uniq.each do |name|
body = self.instance_exec(name, &self.class.mentionable_option(:body))