Module: PeopleHelper

Defined in:
app/helpers/people_helper.rb

Instance Method Summary collapse

Instance Method Details

#author_annotation_tag(author) ⇒ Object



92
93
94
95
# File 'app/helpers/people_helper.rb', line 92

def author_annotation_tag(author)
  return nil if author.nil?
  (:span, author.name, class: [:annotation__author])
end

#author_list_tag(object) ⇒ Object



97
98
99
100
101
102
103
# File 'app/helpers/people_helper.rb', line 97

def author_list_tag(object)
  return nil unless object.authors.any?
  (:h3, 'Authors') +
    (:ul, class: 'annotations_author_list') do
    object.authors.collect{|a| (:li, author_annotation_tag(a)) }.join.html_safe
  end
end

#editor_list_tag(object) ⇒ Object



105
106
107
108
109
110
111
# File 'app/helpers/people_helper.rb', line 105

def editor_list_tag(object)
  return nil unless object.editors.any?
  (:h3, 'Editors') +
    (:ul, class: 'annotations_editor_list') do
    object.editors.collect{|a| (:li, author_annotation_tag(a)) }.join.html_safe
  end
end

#people_names(people) ⇒ String?

Returns A formatted list of people's last names TODO: deprecate for native call.

Returns:

  • (String, nil)

    A formatted list of people's last names TODO: deprecate for native call



88
89
90
# File 'app/helpers/people_helper.rb', line 88

def people_names(people)
  Utilities::Strings.authorship_sentence( people.collect{ |a| a.full_last_name } ) 
end

#people_search_formObject



81
82
83
# File 'app/helpers/people_helper.rb', line 81

def people_search_form
  render('/people/quick_search_form')
end

#person_active_tag(person) ⇒ Object



46
47
48
49
50
51
52
53
# File 'app/helpers/people_helper.rb', line 46

def person_active_tag(person)
  return ('active: ' + (:i, 'unknown')).html_safe if person.year_active_start.nil? && person.year_active_end.nil?

  ae = person.year_active_end
  ae = nil if !ae.nil? && ae == person.year_active_start

  'active ~ ' + [ person.year_active_start || '?', ae || '?'].join('-')
end

#person_autocomplete_tag(person) ⇒ Object



17
18
19
20
21
22
23
24
# File 'app/helpers/people_helper.rb', line 17

def person_autocomplete_tag(person)
  return nil if person.nil?
  [ person_tag(person),
    person_timeframe_tag(person),
    person_used_tag(person),
    person_project_membership_tag(person)
  ].compact.join(' ')
end


12
13
14
15
# File 'app/helpers/people_helper.rb', line 12

def person_link(person)
  return nil if person.nil?
  link_to(person_tag(person), person.metamorphosize)
end

#person_lived_tag(person) ⇒ Object



32
33
34
# File 'app/helpers/people_helper.rb', line 32

def person_lived_tag(person)
  'lived: ' + [person.year_born || '?', person.year_died || '?'].join('-') 
end

#person_project_membership_tag(person) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'app/helpers/people_helper.rb', line 36

def person_project_membership_tag(person)
  if person && person.respond_to?(:in_project_id) && person.in_project_id == sessions_current_project_id
    (:span, "In Project".html_safe, class: [:feedback, 'feedback-thin', 'feedback-success'])
  elsif person && person.used_in_project?(sessions_current_project_id)
    (:span, "In Project".html_safe, class: [:feedback, 'feedback-thin', 'feedback-success']) 
  else
    nil
  end
end

#person_tag(person) ⇒ Object



3
4
5
6
7
8
9
10
# File 'app/helpers/people_helper.rb', line 3

def person_tag(person)
  return nil if person.nil?
  if person.new_record?
    person.bibtex_name 
  else
    person.cached ? person.cached : 'CACHED VALUE NOT BUILT, CONTACT AN ADMIN.'
  end
end

#person_timeframe_tag(person) ⇒ Object



26
27
28
29
30
# File 'app/helpers/people_helper.rb', line 26

def person_timeframe_tag(person)
  (:span, class: [ :feedback, 'feedback-secondary', 'feedback-thin' ]) do 
    (person_lived_tag(person) + ' ' + person_active_tag(person)).html_safe
  end.html_safe
end

#person_used_tag(person) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/helpers/people_helper.rb', line 55

def person_used_tag(person)
  # Use count is SQL based attribute
  if person.respond_to?(:use_count)
    a = ''
    if person.use_count == 0
      a += (:span, 'unused', class: [:feedback, 'feedback-thin', 'feedback-danger'] )
    elsif person.use_count > 0
      a = a + (:span, "#{person.use_count} #{"use".pluralize(person.use_count)}", class: [:feedback, 'feedback-thin', 'feedback-primary'], data: {count: person.use_count}) + ' '
      a = a + (:span, "#{person.roles.select(:type).distinct.pluck(:type).map(&:safe_constantize).collect{|r| r.human_name}.join(', ')}", class: [:feedback, 'feedback-thin', 'feedback-secondary'] )
    else
      ''
    end
  else
    t = person.roles #.load
    a = ''
    if t.count == 0
      a += (:span, 'unused', class: [:feedback, 'feedback-thin', 'feedback-danger'] )
    elsif t.count > 0
      a = a + (:span, "#{person.roles.size} #{"use".pluralize(t)}", class: [:feedback, 'feedback-thin', 'feedback-primary'], data: {count: t.count}) + ' '
      a = a + (:span, "#{person.roles.select(:type).distinct.pluck(:type).map(&:safe_constantize).collect{|r| r.human_name}.join(', ')}", class: [:feedback, 'feedback-thin', 'feedback-secondary'] )
    else
      ''
    end
  end
end