Commit e7be7859 authored by Heinrich Lee Yu's avatar Heinrich Lee Yu

Merge branch 'cleanup_external_issue_reference_filter' into 'master'

Cleanup Banzai ExternalIssueReferenceFilter

See merge request gitlab-org/gitlab!32555
parents 94a0008c 9249b48c
...@@ -54,6 +54,8 @@ module Banzai ...@@ -54,6 +54,8 @@ module Banzai
doc doc
end end
private
# Replace `JIRA-123` issue references in text with links to the referenced # Replace `JIRA-123` issue references in text with links to the referenced
# issue's details page. # issue's details page.
# #
...@@ -63,21 +65,14 @@ module Banzai ...@@ -63,21 +65,14 @@ module Banzai
# Returns a String with `JIRA-123` references replaced with links. All # Returns a String with `JIRA-123` references replaced with links. All
# links have `gfm` and `gfm-issue` class names attached for styling. # links have `gfm` and `gfm-issue` class names attached for styling.
def issue_link_filter(text, link_content: nil) def issue_link_filter(text, link_content: nil)
project = context[:project]
self.class.references_in(text, issue_reference_pattern) do |match, id| self.class.references_in(text, issue_reference_pattern) do |match, id|
ExternalIssue.new(id, project)
url = url_for_issue(id, project, only_path: context[:only_path]) url = url_for_issue(id, project, only_path: context[:only_path])
title = "Issue in #{project.external_issue_tracker.title}"
klass = reference_class(:issue) klass = reference_class(:issue)
data = data_attribute(project: project.id, external_issue: id) data = data_attribute(project: project.id, external_issue: id)
content = link_content || match content = link_content || match
%(<a href="#{url}" #{data} %(<a href="#{url}" #{data}
title="#{escape_once(title)}" title="#{escape_once(issue_title)}"
class="#{klass}">#{content}</a>) class="#{klass}">#{content}</a>)
end end
end end
...@@ -94,7 +89,13 @@ module Banzai ...@@ -94,7 +89,13 @@ module Banzai
external_issues_cached(:external_issue_reference_pattern) external_issues_cached(:external_issue_reference_pattern)
end end
private def project
context[:project]
end
def issue_title
"Issue in #{project.external_issue_tracker.title}"
end
def external_issues_cached(attribute) def external_issues_cached(attribute)
cached_attributes = Gitlab::SafeRequestStore[:banzai_external_issues_tracker_attributes] ||= Hash.new { |h, k| h[k] = {} } cached_attributes = Gitlab::SafeRequestStore[:banzai_external_issues_tracker_attributes] ||= Hash.new { |h, k| h[k] = {} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment