Module: Hyrax::HyraxHelperBehavior

Constant Summary

Constants included from CitationsBehaviors::TitleBehavior

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

Instance Method Summary collapse

Methods included from WorkFormHelper

#form_progress_sections_for, #form_tabs_for

Methods included from IiifHelper

#iiif_viewer_display, #iiif_viewer_display_partial

Methods included from DashboardHelperBehavior

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

Methods included from ChartsHelper

#hash_to_chart

Methods included from CollectionsHelper

#append_collection_type_url, #button_for_remove_from_collection, #button_for_remove_selected_from_collection, #collection_type_label, #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



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

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


33
34
35
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 33

def banner_image
  Hyrax.config.banner_image
end

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

Used by the gallery view



258
259
260
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 258

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

#collection_title_by_id(id) ⇒ Object



262
263
264
265
266
267
268
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 262

def collection_title_by_id(id)
  solr_docs = controller.repository.find(id).docs
  return nil if solr_docs.empty?
  solr_field = solr_docs.first[Solrizer.solr_name("title", :stored_searchable)]
  return nil if solr_field.nil?
  solr_field.first
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.



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

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

#human_readable_date(options) ⇒ Date

A Blacklight helper_method

See Also:



116
117
118
119
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 116

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

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



172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 172

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

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

Raises:

  • (ArgumentError)


128
129
130
131
132
133
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 128

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



205
206
207
208
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 205

def license_links(options)
  service = Hyrax.config.license_service_class.new
  to_sentence(options[:value].map { |right| link_to service.label(right), right })
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>
```

Options Hash (options):

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

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

Raises:

  • KeyError when the options are note properly configured



149
150
151
152
153
154
155
156
157
158
159
160
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 149

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


81
82
83
84
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 81

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


91
92
93
94
95
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 91

def link_to_facet_list(values, solr_field, empty_message = "No value entered", 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.

See Also:

  • Blacklight::SearchState#initialize


103
104
105
106
107
108
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 103

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



189
190
191
192
193
194
195
196
197
198
199
200
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 189

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


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

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



37
38
39
40
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 37

def orcid_label(style_class = '')
  safe_join([image_tag('orcid.png', alt: t('hyrax.user_profile.orcid.alt'), class: style_class),
             t('hyrax.user_profile.orcid.label')], ' ')
end

#render_notifications(user:) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 53

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



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

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

#search_form_actionString



243
244
245
246
247
248
249
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 243

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



70
71
72
73
74
75
76
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 70

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

#suppressed_to_status(value) ⇒ String

A Blacklight facet field helper_method



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

def suppressed_to_status(value)
  case value
  when 'false'
    t('hyrax.admin.workflows.index.tabs.published')
  else
    t('hyrax.admin.workflows.index.tabs.under_review')
  end
end

#user_display_name_and_key(user_key) ⇒ Object



251
252
253
254
255
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 251

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



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

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

#zotero_profile_url(zotero_user_id) ⇒ Object



48
49
50
# File 'app/helpers/hyrax/hyrax_helper_behavior.rb', line 48

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