summaryrefslogtreecommitdiff
path: root/app/services/issues
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-02-23 14:18:54 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-03-17 07:39:15 +0100
commit4cbe87d50ecfad9b97ba76f05935124676c96052 (patch)
treea89e4334342f1f3095f2e98c98b41e0690b58ade /app/services/issues
parent5ed8a1e107b9b6f91257e5afdd370f0552078786 (diff)
downloadgitlab-ce-4cbe87d50ecfad9b97ba76f05935124676c96052.tar.gz
Rewrite references in issue description when moving it
Diffstat (limited to 'app/services/issues')
-rw-r--r--app/services/issues/move_service.rb17
1 files changed, 16 insertions, 1 deletions
diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb
index d818ed86020..bba972382d9 100644
--- a/app/services/issues/move_service.rb
+++ b/app/services/issues/move_service.rb
@@ -45,7 +45,8 @@ module Issues
end
def open_new_issue
- @issue_new.update(project: @project_new)
+ new_description = rewrite_references(@issue_old, @issue_old.description)
+ @issue_new.update(project: @project_new, description: new_description)
end
def rewrite_notes
@@ -69,5 +70,19 @@ module Issues
def add_moved_to_note
SystemNoteService.noteable_moved(:to, @issue_old, @project_old, @issue_new, @current_user)
end
+
+ def rewrite_references(mentionable, text)
+ new_content = text.dup
+ references = mentionable.all_references
+
+ [:issues, :merge_requests, :milestones].each do |type|
+ references.public_send(type).each do |mentioned|
+ new_content.gsub!(mentioned.to_reference,
+ mentioned.to_reference(@project_new))
+ end
+ end
+
+ new_content
+ end
end
end