Module: TaxonNamesHelper

Defined in:
app/helpers/taxon_names_helper.rb

Instance Method Summary collapse

Instance Method Details



263
264
265
266
267
268
269
270
271
272
# File 'app/helpers/taxon_names_helper.rb', line 263

def ancestor_browse_taxon_name_link(taxon_name, path = :browse_nomenclature_task_path)
  text = 'Up'
  if taxon_name.ancestors.any?
    a = taxon_name.ancestors.first.metamorphosize
    text = object_tag(a)
    link_to((:span, text, data: {icon: 'arrow-up'}, class: 'small-icon'), taxon_name_link_path(a, path), class: 'navigation-item', data: {arrow: 'ancestor'})
  else
    (:div, (:span, text, class: 'small-icon', data: {icon: 'arrow-up'}), class: 'navigation-item disable')
  end
end

#cached_classified_as_tag(taxon_name) ⇒ Object



158
159
160
# File 'app/helpers/taxon_names_helper.rb', line 158

def cached_classified_as_tag(taxon_name)
  taxon_name.cached_classified_as ? taxon_name.cached_classified_as.strip.html_safe : ''
end

#current_author_year(taxon_name) ⇒ String

Returns:

  • (String)


105
106
107
108
# File 'app/helpers/taxon_names_helper.rb', line 105

def current_author_year(taxon_name)
  return nil if taxon_name.nil? || taxon_name.cached_author_year.nil?
  taxon_name.cached_author_year
end


274
275
276
277
278
279
280
281
282
283
# File 'app/helpers/taxon_names_helper.rb', line 274

def descendant_browse_taxon_name_link(taxon_name, path = :browse_nomenclature_task_path)
  text = 'Down'
  if taxon_name.descendants.any?
    a = taxon_name.descendants.first.metamorphosize
    text = taxon_name_tag(a)
    link_to((:span, text, data: {icon: 'arrow-down'}, class: 'small-icon'), taxon_name_link_path(a, path), class: 'navigation-item', data: {arrow: 'descendant'})
  else
    (:div, (:span, text, class: 'small-icon', data: {icon: 'arrow-down'}), class: 'navigation-item disable')
  end
end


212
213
214
# File 'app/helpers/taxon_names_helper.rb', line 212

def edit_original_combination_task_link(taxon_name)
  link_to('Edit original combination', edit_protonym_original_combination_task_path(taxon_name)) if GENUS_AND_SPECIES_RANK_NAMES.include?(taxon_name.rank_string)
end


227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'app/helpers/taxon_names_helper.rb', line 227

def edit_taxon_name_link(taxon_name, target: nil)
  i = {'Combination': :combination, 'Protonym': :taxon_name}[taxon_name.type.to_sym]
  t = taxon_name.metamorphosize
  case target
  when :edit_task
    path = case i
           when :taxon_name
             new_taxon_name_task_path(taxon_name_id: t.id)
           when :combination
             new_combination_task_path(taxon_name_id: t.id, literal: URI.escape(t.cached))
           end
    link_to(
      (
        :span, 'Edit (task)',
        'data-icon' => 'edit',
        class: 'small-icon'
      ),
      path, class: 'navigation-item', 'data-task' => 'new_taxon_name')
  else
    link_to((:span, 'Edit', 'data-icon' => 'edit', 'class' => 'small-icon'), send("edit_#{i}_path}", taxon_name.metamorphosize), 'class' => 'navigation-item')
  end
end

#edit_taxon_name_path_string(taxon_name) ⇒ Object

See #edit_object_path_string in navigation_helper.rb



217
218
219
220
221
222
223
224
225
# File 'app/helpers/taxon_names_helper.rb', line 217

def edit_taxon_name_path_string(taxon_name)
  if taxon_name.type == 'Protonym'
    'edit_taxon_name_path'
  elsif taxon_name.type == 'Combination'
    'edit_combination_path'
  else
    nil
  end
end

#full_original_taxon_name_string(taxon_name) ⇒ String

Returns the name in original combination, with author year, with HTML.

Returns:

  • (String)

    the name in original combination, with author year, with HTML



90
91
92
93
94
95
# File 'app/helpers/taxon_names_helper.rb', line 90

def full_original_taxon_name_string(taxon_name)
  return nil if taxon_name.nil? || taxon_name.cached_original_combination.nil?
  [ taxon_name.cached_original_combination,
    taxon_name.cached_author_year
  ].compact.join(' ')
end

#full_original_taxon_name_tag(taxon_name) ⇒ String

Returns the name in original combination, with author year, with HTML.

Returns:

  • (String)

    the name in original combination, with author year, with HTML



74
75
76
77
78
79
# File 'app/helpers/taxon_names_helper.rb', line 74

def full_original_taxon_name_tag(taxon_name)
  return nil if taxon_name.nil?
  [ original_taxon_name_tag(taxon_name),
    history_author_year_tag(taxon_name)
  ].compact.join(' ').html_safe
end

#full_taxon_name_tag(taxon_name) ⇒ String

Returns the current name/combination with author year, with HTML.

Returns:

  • (String)

    the current name/combination with author year, with HTML



67
68
69
70
# File 'app/helpers/taxon_names_helper.rb', line 67

def full_taxon_name_tag(taxon_name)
  return nil if taxon_name.nil?
  [taxon_name_tag(taxon_name), taxon_name.cached_author_year].compact.join(' ').html_safe
end

#label_for_taxon_name(taxon_name) ⇒ Object



11
12
13
14
# File 'app/helpers/taxon_names_helper.rb', line 11

def label_for_taxon_name(taxon_name)
  return nil if taxon_name.nil?
  [taxon_name.cached, taxon_name.cached_author_year].compact.join(' ')
end


285
286
287
288
289
290
291
292
293
# File 'app/helpers/taxon_names_helper.rb', line 285

def next_sibling_browse_taxon_name_link(taxon_name, path = :browse_nomenclature_task_path)
  text = 'Next'
  link_object = taxon_name.next_sibling
  if link_object.nil?
    (:div, (:span, text), class:  'navigation-item disable')
  else
    link_to(text, taxon_name_link_path(link_object, path), title: taxon_name_tag(link_object), class: 'navigation-item', data: { button: 'next' })
  end
end

#original_author_year(taxon_name) ⇒ String

Returns removes parens.

Returns:

  • (String)

    removes parens



99
100
101
102
# File 'app/helpers/taxon_names_helper.rb', line 99

def original_author_year(taxon_name)
  return nil if taxon_name.nil? || taxon_name.cached_author_year.nil?
  taxon_name.original_author_year || ''
end


189
190
191
192
# File 'app/helpers/taxon_names_helper.rb', line 189

def original_taxon_name_link(taxon_name)
  return nil if taxon_name.nil?
  link_to(original_taxon_name_tag(taxon_name).html_safe, browse_nomenclature_task_path(taxon_name_id: taxon_name.id))
end

#original_taxon_name_tag(taxon_name) ⇒ String

Returns the taxon name in original combination, without author year, with HTML.

Returns:

  • (String)

    the taxon name in original combination, without author year, with HTML



56
57
58
59
60
61
62
63
# File 'app/helpers/taxon_names_helper.rb', line 56

def original_taxon_name_tag(taxon_name)
  return nil if taxon_name.nil?
  if taxon_name.cached_original_combination_html.nil?
    taxon_name_tag(taxon_name)
  else
    taxon_name.cached_original_combination_html.html_safe
  end
end

#parent_taxon_name_for_select(taxon_name) ⇒ Object

@taxon_name.parent.andand.display_name(:type => :for_select_list)



199
200
201
# File 'app/helpers/taxon_names_helper.rb', line 199

def parent_taxon_name_for_select(taxon_name)
  taxon_name.parent ? taxon_name_for_select(taxon_name.parent) : nil
end


295
296
297
298
299
300
301
302
303
304
# File 'app/helpers/taxon_names_helper.rb', line 295

def previous_sibling_browse_taxon_name_link(taxon_name, path = :browse_nomenclature_task_path)
  text = 'Previous'
  link_object = taxon_name.previous_sibling

  if link_object.nil?
    (:div, (:span, text), class: 'navigation-item disable')
  else
    link_to(text, taxon_name_link_path(link_object, path), class: 'navigation-item', data: { button: 'back' })
  end
end

#rank_tag(taxon_name) ⇒ Object



250
251
252
253
254
255
256
257
258
259
260
261
# File 'app/helpers/taxon_names_helper.rb', line 250

def rank_tag(taxon_name)
  case taxon_name.type
  when 'Protonym'
    if taxon_name.rank_class
      taxon_name.rank.downcase
    else
      (:em, 'ERROR')
    end
  when 'Combination'
    (:em, 'Combination')
  end
end

#taxon_name_autocomplete_selected_tag(taxon_name) ⇒ String

Returns no HTML inside <input>.

Returns:

  • (String)

    no HTML inside <input>



30
31
32
# File 'app/helpers/taxon_names_helper.rb', line 30

def taxon_name_autocomplete_selected_tag(taxon_name)
  taxon_name_label(taxon_name)
end

#taxon_name_autocomplete_tag(taxon_name, term) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'app/helpers/taxon_names_helper.rb', line 16

def taxon_name_autocomplete_tag(taxon_name, term)
  return nil if taxon_name.nil?
  klass = taxon_name.rank_class ? taxon_name.rank_class.nomenclatural_code : nil
  a = [
    (:span, mark_tag(taxon_name.cached_html_name_and_author_year, term),  class: :klass),
    taxon_name_rank_tag(taxon_name),
    taxon_name_parent_tag(taxon_name),
    taxon_name_original_combination_tag(taxon_name),
    taxon_name_type_short_tag(taxon_name)
  ].compact.join('&nbsp;').html_safe
end


172
173
174
175
# File 'app/helpers/taxon_names_helper.rb', line 172

def taxon_name_browse_link(taxon_name)
  return nil if taxon_name.nil?
  [ link_to(taxon_name_tag(taxon_name), browse_nomenclature_task_path(taxon_name_id: taxon_name.id)).html_safe,  taxon_name.cached_author_year].compact.join(' ').html_safe
end

#taxon_name_for_select(taxon_name) ⇒ Object



194
195
196
# File 'app/helpers/taxon_names_helper.rb', line 194

def taxon_name_for_select(taxon_name)
  taxon_name.name if taxon_name
end

#taxon_name_gender_sentence_tag(taxon_name) ⇒ Object



153
154
155
156
# File 'app/helpers/taxon_names_helper.rb', line 153

def taxon_name_gender_sentence_tag(taxon_name)
  return nil if taxon_name.nil?
  "The name is #{taxon_name.gender_name}." if taxon_name.gender_name
end

#taxon_name_label(taxon_name) ⇒ Object



34
35
36
37
# File 'app/helpers/taxon_names_helper.rb', line 34

def taxon_name_label(taxon_name)
  return nil if taxon_name.nil?
  [taxon_name.cached, taxon_name.cached_author_year].compact.join(' ')
end

#taxon_name_latinization_tag(taxon_name) ⇒ Object



162
163
164
165
# File 'app/helpers/taxon_names_helper.rb', line 162

def taxon_name_latinization_tag(taxon_name)
  list = taxon_name.taxon_name_classifications.with_type_array(LATINIZED_TAXON_NAME_CLASSIFICATION_NAMES).map(&:classification_label)
  (:span,  "The word \"#{taxon_name.name}\" has the following Latin-based classifications: #{list.to_sentence}.", class: 'history__latinized_classifications') if list.any?
end


167
168
169
170
# File 'app/helpers/taxon_names_helper.rb', line 167

def taxon_name_link(taxon_name)
  return nil if taxon_name.nil?
  link_to(taxon_name_tag(taxon_name), taxon_name.metamorphosize).html_safe
end


321
322
323
324
325
326
327
# File 'app/helpers/taxon_names_helper.rb', line 321

def taxon_name_link_path(taxon_name, path)
  if path == :taxon_name_path
    send(path, taxon_name)
  else
    send(path, taxon_name_id: taxon_name.id)
  end
end

#taxon_name_name_string(taxon_name) ⇒ String

Returns the current name/combination with author year, without HTML.

Returns:

  • (String)

    the current name/combination with author year, without HTML



83
84
85
86
# File 'app/helpers/taxon_names_helper.rb', line 83

def taxon_name_name_string(taxon_name)
  return nil if taxon_name.nil?
  [ taxon_name.cached, taxon_name.cached_author_year].compact.join(' ')
end

#taxon_name_original_combination_tag(taxon_name, css_class = [:feedback, 'feedback-notice', 'feedback-thin']) ⇒ Object



49
50
51
52
# File 'app/helpers/taxon_names_helper.rb', line 49

def taxon_name_original_combination_tag(taxon_name, css_class = [:feedback, 'feedback-notice', 'feedback-thin'] )
  return nil if taxon_name.nil? || taxon_name.cached_original_combination.blank?
  (:span, taxon_name.cached_original_combination, class: css_class)
end


306
307
308
309
310
311
312
313
314
315
316
317
# File 'app/helpers/taxon_names_helper.rb', line 306

def taxon_name_otus_links(taxon_name)
  if taxon_name.otus.load.any?
    ('The following Otus are linked to this name: ' +
    (:ul, class: 'no_bullets') do
     taxon_name.otus.each do |o|
        concat((:li, otu_link(o) ))
      end
    end.html_safe).html_safe
  else
    (:em, 'There are no Otus linked to this name.')
  end
end


177
178
179
180
181
182
183
184
185
186
187
# File 'app/helpers/taxon_names_helper.rb', line 177

def taxon_name_parent_navigator_item_link(taxon_name, target = :taxon_name_path)
  return nil if taxon_name.nil? || target.nil?
  if target
    case target.to_sym
    when :taxon_name_path
      link_to(taxon_name_tag(taxon_name), taxon_name.metamorphosize)
    else
      link_to(taxon_name_tag(taxon_name), send(target, {taxon_name_id: taxon_name.id}))
    end
  end
end

#taxon_name_parent_tag(taxon_name, css_class = [:feedback, 'feedback-secondary', 'feedback-thin']) ⇒ Object



44
45
46
47
# File 'app/helpers/taxon_names_helper.rb', line 44

def taxon_name_parent_tag(taxon_name, css_class = [:feedback, 'feedback-secondary', 'feedback-thin'] )
  return nil if taxon_name.nil? || taxon_name.parent_id.nil?
  (:span, taxon_name_tag(taxon_name.parent).html_safe, class: css_class)
end

#taxon_name_rank_select_tag(taxon_name: TaxonName.new, code: nil) ⇒ Object

TODO: Scope to code



204
205
206
# File 'app/helpers/taxon_names_helper.rb', line 204

def taxon_name_rank_select_tag(taxon_name: TaxonName.new, code:  nil)
  select(:taxon_name, :rank_class, options_for_select(RANKS_SELECT_OPTIONS, selected: taxon_name.rank_string) )
end

#taxon_name_rank_tag(taxon_name, css_class = [:feedback, 'feedback-info', 'feedback-thin']) ⇒ Object



39
40
41
42
# File 'app/helpers/taxon_names_helper.rb', line 39

def taxon_name_rank_tag(taxon_name, css_class = [:feedback, 'feedback-info', 'feedback-thin'] )
  return nil if taxon_name.nil?
  (:span, taxon_name.rank || 'Combination', class: css_class)
end

#taxon_name_short_status(taxon_name) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'app/helpers/taxon_names_helper.rb', line 119

def taxon_name_short_status(taxon_name)
  if taxon_name.is_combination?
    n = taxon_name.finest_protonym
    s = ["This name is subsequent combination of"]
    if n.is_valid?
      s += [
        link_to(original_taxon_name_tag(n), browse_nomenclature_task_path(taxon_name_id: n.id)),
        history_author_year_tag(n),
      ]
    else
      v = n.valid_taxon_name
      s += [
        original_taxon_name_tag(n),
        history_author_year_tag(n),
        "whose valid/accepted name is",
        link_to(taxon_name_tag(v), browse_nomenclature_task_path(taxon_name_id: v.id) ),
        v.cached_author_year
      ]
    end

    (s.join(' ') + '.').html_safe
  else
    if taxon_name.is_valid? # taxon_name.unavailable_or_invalid?
      (:span, 'This name is valid/accepted.', class: :brief_status, data: {icon: :ok, status: :valid })
    else
      if taxon_name.is_ambiguously_invalid?
        tag.span('This name is not valid/accepted.'.html_safe, class: :brief_status, data: {icon: :attention, status: :invalid})
      else
        tag.span("This name is not valid/accepted.<br>The valid name is #{taxon_name_browse_link(taxon_name.valid_taxon_name)}.".html_safe, class: :brief_status, data: {icon: :attention, status: :invalid})
      end
    end
  end
end

#taxon_name_tag(taxon_name) ⇒ String

Returns the taxon name without author year, with HTML.

Returns:

  • (String)

    the taxon name without author year, with HTML



5
6
7
8
9
# File 'app/helpers/taxon_names_helper.rb', line 5

def taxon_name_tag(taxon_name)
  return nil if taxon_name.nil?
  return taxon_name.name if taxon_name.new_record?
  taxon_name.cached_html.try(:html_safe) || taxon_name.name
end

#taxon_name_type_short_tag(taxon_name) ⇒ Object



110
111
112
113
114
115
116
117
# File 'app/helpers/taxon_names_helper.rb', line 110

def taxon_name_type_short_tag(taxon_name)
  return nil if taxon_name.nil?
  if taxon_name.is_valid?
    '&#10003;'.html_safe # checkmark
  else
    taxon_name.type == 'Combination' ? '[c]' : '&#10060;'.html_safe # c or X
  end
end

#taxon_names_search_formObject



208
209
210
# File 'app/helpers/taxon_names_helper.rb', line 208

def taxon_names_search_form
  render '/taxon_names/quick_search_form'
end