Module: Hyrax::HyraxHelperBehavior

Includes:
ERB::Util, AbilityHelper, ChartsHelper, CitationsBehavior, CollectionsHelper, DashboardHelperBehavior, EmbargoHelper, FileSetHelper, LeaseHelper, TitleHelper, UrlHelper
Included in:
HyraxHelper
Defined in:
app/helpers/hyrax/hyrax_helper_behavior.rb

Constant Summary

Constants included from CitationsBehaviors::TitleBehavior

CitationsBehaviors::TitleBehavior::EXPANDED_NOCAPS, CitationsBehaviors::TitleBehavior::TITLE_NOCAPS

Instance Method Summary collapse

Methods included from DashboardHelperBehavior

#number_of_collections, #number_of_files, #number_of_works, #on_my_works?, #on_the_dashboard?

Methods included from ChartsHelper

#hash_to_chart

Methods included from CollectionsHelper

#button_for_remove_from_collection, #button_for_remove_selected_from_collection, #has_collection_search_parameters?, #present_terms, #render_collection_links, #single_item_action_remove_form_fields

Methods included from LeaseHelper

#assets_under_lease, #assets_with_deactivated_leases, #assets_with_expired_leases

Methods included from EmbargoHelper

#assets_under_embargo, #assets_with_deactivated_embargoes, #assets_with_expired_embargoes

Methods included from AbilityHelper

#render_visibility_link, #visibility_badge, #visibility_options

Methods included from FileSetHelper

#media_display, #media_display_partial, #parent_path

Methods included from TitleHelper

#application_name, #construct_page_title, #curation_concern_page_title, #default_page_title

Methods included from CitationsBehavior

#export_as_apa_citation, #export_as_chicago_citation, #export_as_mla_citation, #export_as_openurl_ctx_kev

Methods included from CitationsBehaviors::TitleBehavior

#chicago_citation_title, #mla_citation_title, #process_title_parts, #setup_title_info

Methods included from CitationsBehaviors::CommonBehavior

#clean_end_punctuation, #persistent_url

Methods included from CitationsBehaviors::NameBehavior

#abbreviate_name, #all_authors, #author_list, #given_name_first, #surname_first

Methods included from CitationsBehaviors::PublicationBehavior

#setup_pub_date, #setup_pub_info, #setup_pub_place, #setup_pub_publisher

Instance Method Details

#available_translationsHash<String,String>

Which translations are available for the user to select

Returns:

  • (Hash<String,String>)

    locale abbreviations as keys and flags as values



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

def available_translations
  {
    'de' => 'Deutsch',
    'en' => 'English',
    'es' => 'Español',
    'fr' => 'Français',
    'it' => 'Italiano',
    'pt-BR' => 'Português do Brasil',
    'zh' => '中文'
  }
end


31
32
33
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 31

def banner_image
  Hyrax.config.banner_image
end

#collection_thumbnail(_document, _image_options = {}, _url_options = {}) ⇒ Object

Used by the gallery view



242
243
244
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 242

def collection_thumbnail(_document, _image_options = {}, _url_options = {})
  (:span, "", class: [Hyrax::ModelIcon.css_class_for(Collection), "collection-icon-search"])
end

#current_search_parametersObject

Only display the current search parameters if the user is not in the dashboard. Otherwise, search defaults to the user’s works and not all of Hyrax.



221
222
223
224
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 221

def current_search_parameters
  return if on_the_dashboard?
  params[:q]
end

#human_readable_date(options) ⇒ Date

A Blacklight helper_method

Parameters:

  • options (Hash)

    from blacklight invocation of helper_method

Returns:

  • (Date)

See Also:



112
113
114
115
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 112

def human_readable_date(options)
  value = options[:value].first
  Date.parse(value).to_formatted_s(:standard)
end
TODO:

stop being a helper_method, start being part of the Blacklight render stack?

Uses Rails auto_link to add links to fields

Parameters:

  • field (String, Hash)

    string to format and escape, or a hash as per helper_method

  • show_link (Boolean) (defaults to: true)

Options Hash (field):

  • :document (SolrDocument)
  • :field (String)

    name of the solr field

  • :config (Blacklight::Configuration::IndexField, Blacklight::Configuration::ShowField)
  • :value (Array)

    array of values for the field

Returns:

  • (ActiveSupport::SafeBuffer)


168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 168

def iconify_auto_link(field, show_link = true)
  if field.is_a? Hash
    options = field[:config].separator_options || {}
    text = field[:value].to_sentence(options)
  else
    text = field
  end
  # this block is only executed when a link is inserted;
  # if we pass text containing no links, it just returns text.
  auto_link(html_escape(text)) do |value|
    "<span class='glyphicon glyphicon-new-window'></span>#{('&nbsp;' + value) if show_link}"
  end
end

A Blacklight helper_method

Parameters:

  • options (Hash{Symbol=>Object})

    Blacklight sends :document, :field, :config, :value and whatever else was in options

Options Hash (options):

  • :value (Array{String})
  • :config (Hash)

    including => “my_name”

  • :document (Hash)
  • :value (Array{String})

    the strings you might otherwise have passed to this method singly

Returns:

  • (ActiveSupport::SafeBuffer)

    the html_safe link

Raises:

  • (ArgumentError)


124
125
126
127
128
129
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 124

def index_field_link(options)
  raise ArgumentError unless options[:config] && options[:config][:field_name]
  name = options[:config][:field_name]
  links = options[:value].map { |item| link_to_field(name, item, item) }
  safe_join(links, ", ")
end

A Blacklight index field helper_method

Parameters:

  • options (Hash)

    from blacklight helper_method invocation. Maps license URIs to links with labels.

Returns:

  • (ActiveSupport::SafeBuffer)

    license links, html_safe



201
202
203
204
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 201

def license_links(options)
  service = Hyrax::LicenseService.new
  options[:value].map { |right| link_to service.label(right), right }.to_sentence.html_safe
end

A Blacklight helper_method

Examples:

link_to_each_facet_field({ value: "Imaging > Object Photography", config: { helper_facet: :document_types_sim }})
```html
<a href=\"/catalog?f%5Bdocument_types_sim%5D%5B%5D=Imaging\">Imaging</a> &gt; <a href=\"/catalog?f%5Bdocument_types_sim%5D%5B%5D=Object+Photography\">Object Photography</a>
```

Parameters:

  • options (Hash)

    from blacklight invocation of helper_method

Options Hash (options):

  • :value (Array<#strip>)
  • ] (Hash)

    :config Example: { separator: ‘>’, helper_facet: :document_types_sim, output_separator: ‘::’ }

Returns:

  • the html_safe facet links separated by the given separator (default: ‘ > ’) to indicate facet hierarchy

Raises:

  • KeyError when the options are note properly configured



145
146
147
148
149
150
151
152
153
154
155
156
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 145

def link_to_each_facet_field(options)
  config = options.fetch(:config)
  separator = config.fetch(:separator, ' > ')
  output_separator = config.fetch(:output_separator, separator)
  facet_search = config.fetch(:helper_facet)
  facet_fields = Array.wrap(options.fetch(:value)).first.split(separator).map(&:strip)

  facet_links = facet_fields.map do |type|
    link_to(type, main_app.search_catalog_path(f: { facet_search => [type] }))
  end
  safe_join(facet_links, output_separator)
end

Returns the html_safe link.

Parameters:

  • item (Object)
  • field (String)

Returns:

  • (ActiveSupport::SafeBuffer)

    the html_safe link



77
78
79
80
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 77

def link_to_facet(item, field)
  path = main_app.search_catalog_path(search_state.add_facet_params_and_redirect(field, item))
  link_to(item, path)
end

Returns the html_safe link.

Parameters:

  • values (Array{String})

    strings to display

  • solr_field (String)

    name of the solr field to link to, without its suffix (:facetable)

  • empty_message (String) (defaults to: "No value entered".html_safe)

    message to display if no values are passed in

  • separator (String) (defaults to: ", ")

    value to join with

Returns:

  • (ActiveSupport::SafeBuffer)

    the html_safe link



87
88
89
90
91
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 87

def link_to_facet_list(values, solr_field, empty_message = "No value entered".html_safe, separator = ", ")
  return empty_message if values.blank?
  facet_field = Solrizer.solr_name(solr_field, :facetable)
  safe_join(values.map { |item| link_to_facet(item, facet_field) }, separator)
end

Returns the html_safe link.

Parameters:

  • name (String)

    field name

  • value (String)

    field value

  • label (String) (defaults to: nil)

    defaults to value

  • facet_hash (Hash) (defaults to: {})

    first argument to Blacklight::SearchState.new

Returns:

  • (ActiveSupport::SafeBuffer)

    the html_safe link

See Also:

  • Blacklight::SearchState#initialize


99
100
101
102
103
104
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 99

def link_to_field(name, value, label = nil, facet_hash = {})
  label ||= value
  params = { search_field: name, q: "\"#{value}\"" }
  state = search_state_with_facets(params, facet_hash)
  link_to(label, main_app.search_catalog_path(state))
end

Sometimes a Blacklight index field helper_method

Parameters:

  • args (String, User, Hash{Symbol=>Array})

    if a hash, the user_key must be under :value

Returns:

  • (ActiveSupport::SafeBuffer)

    the html_safe link



185
186
187
188
189
190
191
192
193
194
195
196
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 185

def link_to_profile(args)
  user_or_key = args.is_a?(Hash) ? args[:value].first : args
  user = case user_or_key
         when User
           user_or_key
         when String
           ::User.find_by_user_key(user_or_key)
         end
  return user_or_key if user.nil?
  text = user.respond_to?(:name) ? user.name : user_or_key
  link_to text, Hyrax::Engine.routes.url_helpers.user_path(user)
end


214
215
216
217
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 214

def link_to_telephone(user)
  return unless user
  link_to user.telephone, "wtai://wp/mc;#{user.telephone}" if user.telephone
end

#orcid_label(style_class = '') ⇒ Object



35
36
37
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 35

def orcid_label(style_class = '')
  "#{image_tag 'orcid.png', alt: t('hyrax.user_profile.orcid.alt'), class: style_class} #{t('hyrax.user_profile.orcid.label')}".html_safe
end

#render_notifications(user:) ⇒ Object

Parameters:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 49

def render_notifications(user:)
  mailbox = UserMailbox.new(user)
  unread_notifications = mailbox.unread_count
  link_to(hyrax.notifications_path,
          'aria-label' => mailbox.label(params[:locale]),
          class: 'notify-number') do
    capture do
      concat (:span, '', class: 'fa fa-bell')
      concat "\n"
      concat (:span,
                         unread_notifications,
                         class: count_classes_for(unread_notifications))
    end
  end
end

A Blacklight index field helper_method

Parameters:

  • options (Hash)

    from blacklight helper_method invocation. Maps rights statement URIs to links with labels.

Returns:

  • (ActiveSupport::SafeBuffer)

    rights statement links, html_safe



209
210
211
212
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 209

def rights_statement_links(options)
  service = Hyrax::RightsStatementService.new
  options[:value].map { |right| link_to service.label(right), right }.to_sentence.html_safe
end

#search_form_actionString

Returns the appropriate action url for our search form (depending on our current page).

Returns:

  • (String)

    the appropriate action url for our search form (depending on our current page)



227
228
229
230
231
232
233
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 227

def search_form_action
  if on_the_dashboard?
    search_action_for_dashboard
  else
    main_app.search_catalog_path
  end
end

#show_transfer_request_title(req) ⇒ Object

Parameters:



66
67
68
69
70
71
72
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 66

def show_transfer_request_title(req)
  if req.deleted_work? || req.canceled?
    req.to_s
  else
    link_to(req.to_s, [main_app, req.work])
  end
end

#user_display_name_and_key(user_key) ⇒ Object



235
236
237
238
239
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 235

def user_display_name_and_key(user_key)
  user = ::User.find_by_user_key(user_key)
  return user_key if user.nil?
  user.respond_to?(:name) ? "#{user.name} (#{user_key})" : user_key
end

#zotero_label(opts = {}) ⇒ Object



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

def zotero_label(opts = {})
  html_class = opts[:html_class] || ''
  "#{image_tag 'zotero.png', alt: t('hyrax.user_profile.zotero.alt'), class: html_class} #{t('hyrax.user_profile.zotero.label')}".html_safe
end

#zotero_profile_url(zotero_user_id) ⇒ Object



44
45
46
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 44

def zotero_profile_url(zotero_user_id)
  "https://www.zotero.org/users/#{zotero_user_id}"
end