summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-01-07 19:22:43 +0000
committerRobert Speicher <robert@gitlab.com>2016-01-07 19:22:43 +0000
commit90510f00376591f3adc4719f8a9fbc6434388480 (patch)
tree6f9d8118253efa751adf7e9bede6885f19996b04 /app
parent3c93e588e9a829bb805aab9ccafb94383f44ed57 (diff)
parent539b41929bddf0e82d986f9e823208dd92707a21 (diff)
downloadgitlab-ce-90510f00376591f3adc4719f8a9fbc6434388480.tar.gz
Merge branch 'milestone-ref' into 'master'
Link to milestone in "Milestone changed" system note Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/4141 See merge request !2203
Diffstat (limited to 'app')
-rw-r--r--app/models/milestone.rb22
-rw-r--r--app/services/system_note_service.rb6
2 files changed, 25 insertions, 3 deletions
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index d8c7536cd31..550d14d4c39 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -22,6 +22,7 @@ class Milestone < ActiveRecord::Base
include InternalId
include Sortable
+ include Referable
include StripAttribute
belongs_to :project
@@ -61,6 +62,27 @@ class Milestone < ActiveRecord::Base
end
end
+ def self.reference_pattern
+ nil
+ end
+
+ def self.link_reference_pattern
+ super("milestones", /(?<milestone>\d+)/)
+ end
+
+ def to_reference(from_project = nil)
+ escaped_title = self.title.gsub("]", "\\]")
+
+ h = Gitlab::Application.routes.url_helpers
+ url = h.namespace_project_milestone_url(self.project.namespace, self.project, self)
+
+ "[#{escaped_title}](#{url})"
+ end
+
+ def reference_link_text(from_project = nil)
+ self.title
+ end
+
def expired?
if due_date
due_date.past?
diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb
index 98a71cbf1ad..1083bcec054 100644
--- a/app/services/system_note_service.rb
+++ b/app/services/system_note_service.rb
@@ -41,7 +41,7 @@ class SystemNoteService
#
# Returns the created Note object
def self.change_assignee(noteable, project, author, assignee)
- body = assignee.nil? ? 'Assignee removed' : "Reassigned to @#{assignee.username}"
+ body = assignee.nil? ? 'Assignee removed' : "Reassigned to #{assignee.to_reference}"
create_note(noteable: noteable, project: project, author: author, note: body)
end
@@ -66,7 +66,7 @@ class SystemNoteService
def self.change_label(noteable, project, author, added_labels, removed_labels)
labels_count = added_labels.count + removed_labels.count
- references = ->(label) { "~#{label.id}" }
+ references = ->(label) { label.to_reference(:id) }
added_labels = added_labels.map(&references).join(' ')
removed_labels = removed_labels.map(&references).join(' ')
@@ -103,7 +103,7 @@ class SystemNoteService
# Returns the created Note object
def self.change_milestone(noteable, project, author, milestone)
body = 'Milestone '
- body += milestone.nil? ? 'removed' : "changed to #{milestone.title}"
+ body += milestone.nil? ? 'removed' : "changed to #{milestone.to_reference(project)}"
create_note(noteable: noteable, project: project, author: author, note: body)
end