Commit 35d8bc44 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Refactor banzai code that finds cross-project labels

parent dcc45eda
......@@ -18,9 +18,7 @@ module Banzai
def references_in(text, pattern = Label.reference_pattern)
text.gsub(pattern) do |match|
project = project_from_ref($~[:project])
params = label_params($~[:label_id].to_i, $~[:label_name])
label = project.labels.find_by(params) if project
label = find_label($~[:project], $~[:label_id], $~[:label_name])
if label
yield match, label.id, $~[:project], $~
......@@ -30,18 +28,12 @@ module Banzai
end
end
def url_for_object(label, project)
h = Gitlab::Routing.url_helpers
h.namespace_project_issues_url(project.namespace, project, label_name: label.name,
only_path: context[:only_path])
end
def find_label(project_ref, label_id, label_name)
project = project_from_ref(project_ref)
return unless project
def object_link_text(object, matches)
if context[:project] == object.project
LabelsHelper.render_colored_label(object)
else
LabelsHelper.render_colored_cross_project_label(object)
end
label_params = label_params(label_id, label_name)
project.labels.find_by(label_params)
end
# Parameters to pass to `Label.find_by` based on the given arguments
......@@ -55,7 +47,21 @@ module Banzai
if name
{ name: name.tr('"', '') }
else
{ id: id }
{ id: id.to_i }
end
end
def url_for_object(label, project)
h = Gitlab::Routing.url_helpers
h.namespace_project_issues_url(project.namespace, project, label_name: label.name,
only_path: context[:only_path])
end
def object_link_text(object, matches)
if context[:project] == object.project
LabelsHelper.render_colored_label(object)
else
LabelsHelper.render_colored_cross_project_label(object)
end
end
end
......
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