Class: Banzai::Filter::References::IssueReferenceFilter

Inherits:
IssuableReferenceFilter show all
Defined in:
lib/banzai/filter/references/issue_reference_filter.rb

Overview

HTML filter that replaces issue references with links. References to issues that do not exist are ignored.

This filter supports cross-project references.

When external issues tracker like Jira is activated we should not use issue reference pattern, but we should still be able to reference issues from other GitLab projects.

Direct Known Subclasses

WorkItemReferenceFilter

Constant Summary

Constants inherited from AbstractReferenceFilter

AbstractReferenceFilter::REFERENCE_PLACEHOLDER, AbstractReferenceFilter::REFERENCE_PLACEHOLDER_PATTERN

Constants inherited from ReferenceFilter

ReferenceFilter::REFERENCE_TYPE_DATA_ATTRIBUTE

Instance Method Summary collapse

Methods inherited from IssuableReferenceFilter

#find_object, #record_identifier

Methods inherited from AbstractReferenceFilter

#call, #find_object, #find_object_cached, #find_object_from_link, #find_object_from_link_cached, #from_ref_cached, #identifier, #initialize, #object_link_filter, #object_link_text, #object_link_title, #parent, #parent_type, #parse_symbol, #record_identifier, #references_in, #symbol_from_match, #url_for_object_cached, #wrap_link

Methods included from CrossProjectReference

#parent_from_ref

Methods inherited from ReferenceFilter

call, #call, #call_and_update_nodes, #each_node, #group, #initialize, #nodes, #object_class, #project, #references_in, #requires_unescaping?

Methods included from OutputSafety

#escape_once

Methods included from RequestStoreReferenceCache

#cached_call, #get_or_set_cache

Constructor Details

This class inherits a constructor from Banzai::Filter::References::AbstractReferenceFilter

Instance Method Details

#data_attributes_for(text, parent, object, **data) ⇒ Object



36
37
38
# File 'lib/banzai/filter/references/issue_reference_filter.rb', line 36

def data_attributes_for(text, parent, object, **data)
  super.merge(project_path: parent.full_path, iid: object.iid)
end


28
29
30
# File 'lib/banzai/filter/references/issue_reference_filter.rb', line 28

def object_link_text_extras(issue, matches)
  super + design_link_extras(issue, matches.named_captures['path'])
end

#parent_records(parent, ids) ⇒ Object



24
25
26
# File 'lib/banzai/filter/references/issue_reference_filter.rb', line 24

def parent_records(parent, ids)
  parent.issues.where(iid: ids.to_a).includes(:project, :namespace, :work_item_type)
end

#reference_class(object_sym, tooltip: false) ⇒ Object



32
33
34
# File 'lib/banzai/filter/references/issue_reference_filter.rb', line 32

def reference_class(object_sym, tooltip: false)
  super
end

#url_for_object(issue, project) ⇒ Object



18
19
20
21
22
# File 'lib/banzai/filter/references/issue_reference_filter.rb', line 18

def url_for_object(issue, project)
  return issue_path(issue, project) if only_path?

  issue_url(issue, project)
end