Fix cross-references originating from notes
This commit is contained in:
parent
b0164771ec
commit
27d952b119
4 changed files with 7 additions and 20 deletions
|
@ -66,8 +66,8 @@ module Mentionable
|
|||
end
|
||||
|
||||
# Create a cross-reference Note for each GFM reference to another Mentionable found in +mentionable_text+.
|
||||
def create_cross_references!(author = self.author, without = [])
|
||||
refs = referenced_mentionables(author)
|
||||
def create_cross_references!(author = self.author, without = [], text = self.mentionable_text)
|
||||
refs = referenced_mentionables(author, text)
|
||||
|
||||
# We're using this method instead of Array diffing because that requires
|
||||
# both of the object's `hash` values to be the same, which may not be the
|
||||
|
|
|
@ -62,7 +62,6 @@ class Note < ActiveRecord::Base
|
|||
|
||||
serialize :st_diff
|
||||
before_create :set_diff, if: ->(n) { n.line_code.present? }
|
||||
after_update :set_references
|
||||
|
||||
class << self
|
||||
def discussions_from_notes(notes)
|
||||
|
@ -333,15 +332,13 @@ class Note < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def noteable_type_name
|
||||
if noteable_type.present?
|
||||
noteable_type.downcase
|
||||
end
|
||||
noteable_type.downcase if noteable_type.present?
|
||||
end
|
||||
|
||||
# FIXME: Hack for polymorphic associations with STI
|
||||
# For more information visit http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Polymorphic+Associations
|
||||
def noteable_type=(sType)
|
||||
super(sType.to_s.classify.constantize.base_class.to_s)
|
||||
def noteable_type=(noteable_type)
|
||||
super(noteable_type.to_s.classify.constantize.base_class.to_s)
|
||||
end
|
||||
|
||||
# Reset notes events cache
|
||||
|
@ -357,10 +354,6 @@ class Note < ActiveRecord::Base
|
|||
Event.reset_event_cache_for(self)
|
||||
end
|
||||
|
||||
def set_references
|
||||
create_new_cross_references!
|
||||
end
|
||||
|
||||
def system?
|
||||
read_attribute(:system)
|
||||
end
|
||||
|
|
|
@ -11,13 +11,7 @@ module Notes
|
|||
# Skip system notes, like status changes and cross-references.
|
||||
unless note.system
|
||||
event_service.leave_note(note, note.author)
|
||||
|
||||
# Create a cross-reference note if this Note contains GFM that names an
|
||||
# issue, merge request, or commit.
|
||||
note.references.each do |mentioned|
|
||||
SystemNoteService.cross_reference(mentioned, note.noteable, note.author)
|
||||
end
|
||||
|
||||
note.create_cross_references!
|
||||
execute_hooks(note)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ module Notes
|
|||
return note unless note.editable?
|
||||
|
||||
note.update_attributes(params.merge(updated_by: current_user))
|
||||
|
||||
note.create_new_cross_references!
|
||||
note.reset_events_cache
|
||||
|
||||
note
|
||||
|
|
Loading…
Reference in a new issue