Module: Workbench::DisplayHelper

Defined in:
app/helpers/workbench/display_helper.rb

Overview

Generic wrappers around AR instances, these should not include link generation, but may call out to other helpers that do generate links. See /app/helpers/README.md for more.

Instance Method Summary collapse

Instance Method Details

#kind(object) ⇒ Object



66
67
68
# File 'app/helpers/workbench/display_helper.rb', line 66

def kind(object)
  object.class.name.humanize
end

#label_for(object) ⇒ Object

General wrapper around individual <model_name>_tag methods

label_for(@otu)


38
39
40
41
42
43
44
45
46
47
48
# File 'app/helpers/workbench/display_helper.rb', line 38

def label_for(object)
  return nil if object.nil?
  method = label_for_method(object)

  if self.respond_to?(method)
    string = send(method, object)
    return string if string
  else
    nil 
  end
end

#label_for_method(object) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'app/helpers/workbench/display_helper.rb', line 50

def label_for_method(object)
  return nil if object.nil?
  klass_name = object.class.name
  method = "label_for_#{klass_name.underscore.gsub('/', '_')}"
  if ApplicationController.helpers.respond_to?(method)
    method
  else
    klass_name = metamorphosize_if(object).class.name
    "label_for_#{klass_name.underscore}"
  end
end

#model_name_titleObject



62
63
64
# File 'app/helpers/workbench/display_helper.rb', line 62

def model_name_title
  controller_name.humanize
end

#object_attributes_partial_path(object) ⇒ Object



70
71
72
# File 'app/helpers/workbench/display_helper.rb', line 70

def object_attributes_partial_path(object)
  "/#{metamorphosize_if(object).class.base_class.name.tableize}/attributes"
end

#object_card_partial_path(object) ⇒ Object



74
75
76
# File 'app/helpers/workbench/display_helper.rb', line 74

def object_card_partial_path(object)
  '/' + object_class_name(object) + '/card'
end

#object_class_name(object) ⇒ Object



78
79
80
# File 'app/helpers/workbench/display_helper.rb', line 78

def object_class_name(object)
  object.class.base_class.name.tableize.to_s
end

#object_tag(object) ⇒ Object

General wrapper around individual <model_name>_tag methods

object_tag(@otu)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/helpers/workbench/display_helper.rb', line 8

def object_tag(object)
  return nil if object.nil?
  method = object_tag_method(object)

  # meh, exceptions  
  return send('taxon_works_content_tag', object).html_safe if method == 'content_tag' 
  return image_tag(object.image_file.url(:thumb)) if method == 'image_tag' 

  if self.respond_to?(method)
    html = send(method, object)
    html ? html.html_safe : nil
  else
    nil #  content_tag(:span,"#{object.class} has no helper method '#{method}'", class: :warning)
  end
end

#object_tag_method(object) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'app/helpers/workbench/display_helper.rb', line 24

def object_tag_method(object)
  return nil if object.nil?
  klass_name = object.class.name
  method = "#{klass_name.underscore.gsub('/', '_')}_tag"
  if ApplicationController.helpers.respond_to?(method)
    method
  else
    klass_name = metamorphosize_if(object).class.name
    "#{klass_name.underscore}_tag"
  end
end

#regex_mark_tag(text, term) ⇒ String?

Returns use ‘mark` tags to highlight the position of the term in the text.

Returns:

  • (String, nil)

    use ‘mark` tags to highlight the position of the term in the text



84
85
86
87
88
89
90
91
# File 'app/helpers/workbench/display_helper.rb', line 84

def regex_mark_tag(text, term)
  return text if term.nil?
  if t = text[/#{Regexp.escape(term)}/i]  # probably some look-ahead (behind) magic could be used here
    text.gsub(/#{Regexp.escape(term)}/i, "<mark>#{t}</mark>")
  else
    text
  end
end