summaryrefslogtreecommitdiff
path: root/app/helpers
diff options
context:
space:
mode:
authorJarka Kadlecova <jarka@gitlab.com>2017-07-10 09:38:42 +0200
committerJarka Kadlecova <jarka@gitlab.com>2017-07-24 08:13:43 +0200
commit7bee7b848aab883a6869e1fd2fbb9e66182d2023 (patch)
tree286029930e7c9af9402a752a1dd6f2ab9c607776 /app/helpers
parent2fa22a07296223c1239bfab94654487cca222097 (diff)
downloadgitlab-ce-7bee7b848aab883a6869e1fd2fbb9e66182d2023.tar.gz
Support both internal and external issue trackers
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/issues_helper.rb26
1 files changed, 23 insertions, 3 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 42b6cfdf02f..7e1ccb23e9e 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -17,10 +17,10 @@ module IssuesHelper
return '' if project.nil?
url =
- if options[:only_path]
- project.issues_tracker.issue_path(issue_iid)
+ if options[:internal]
+ url_for_internal_issue(issue_iid, project, options)
else
- project.issues_tracker.issue_url(issue_iid)
+ url_for_tracker_issue(issue_iid, project, options)
end
# Ensure we return a valid URL to prevent possible XSS.
@@ -29,6 +29,24 @@ module IssuesHelper
''
end
+ def url_for_tracker_issue(issue_iid, project, options)
+ if options[:only_path]
+ project.issues_tracker.issue_path(issue_iid)
+ else
+ project.issues_tracker.issue_url(issue_iid)
+ end
+ end
+
+ def url_for_internal_issue(issue_iid, project = @project, options = {})
+ helpers = Gitlab::Routing.url_helpers
+
+ if options[:only_path]
+ helpers.namespace_project_issue_path(namespace_id: project.namespace, project_id: project, id: issue_iid)
+ else
+ helpers.namespace_project_issue_url(namespace_id: project.namespace, project_id: project, id: issue_iid)
+ end
+ end
+
def bulk_update_milestone_options
milestones = @project.milestones.active.reorder(due_date: :asc, title: :asc).to_a
milestones.unshift(Milestone::None)
@@ -158,4 +176,6 @@ module IssuesHelper
# Required for Banzai::Filter::IssueReferenceFilter
module_function :url_for_issue
+ module_function :url_for_internal_issue
+ module_function :url_for_tracker_issue
end