Module: Spotlight::ApplicationHelper
- Includes:
 - CropHelper, CrudLinkHelpers, LanguagesHelper, MetaHelper, TitleHelper
 
- Defined in:
 - app/helpers/spotlight/application_helper.rb
 
Overview
General spotlight application helpers
Instance Method Summary collapse
- #additional_locale_routing_scopes ⇒ Object
 - 
  
    
      #application_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Give the application name a chance to include the exhibit title.
 - #available_view_fields ⇒ Object
 - 
  
    
      #blacklight_view_config_for_search_block(block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return a copy of the blacklight configuration that only includes views conifgured by our block.
 - #block_document_index_view_type(block) ⇒ Object
 - #current_exhibit_theme ⇒ Object
 - 
  
    
      #current_page_for_locale(locale)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the url for the current page in the new locale.
 - 
  
    
      #document_action_path(action_opts, url_opts = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Override Blacklight’s #document_action_path helper to add the current exhibit context.
 - #exhibit_stylesheet_link_tag(tag) ⇒ Object
 - 
  
    
      #method_missing(method, *args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Can search for named routes directly in the main app, omitting the “main_app.” prefix.
 - #render_constraints(localized_params = nil, local_search_state = nil) ⇒ Object
 - 
  
    
      #render_document_class(document = @document)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Override Blacklight’s #render_document_class to inject a private class.
 - #render_search_bar ⇒ Object
 - #respond_to_missing?(method, *args) ⇒ Boolean
 - #select_deselect_button ⇒ Object
 - 
  
    
      #selected_search_block_views(block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return the list of views that are configured to display for a block.
 - #site_title ⇒ Object
 - #uploaded_field_label(config) ⇒ Object
 - 
  
    
      #url_to_tag_facet(tag)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Helper to turn tag data into facets.
 
Methods included from LanguagesHelper
#add_exhibit_language_dropdown_options, #default_language?, #locale_selecter_dropown_options
Methods included from CropHelper
#form_prefix, #iiif_cropper_tag, #iiif_cropper_tags, #iiif_upload_tag
Methods included from MetaHelper
#add_browse_meta_content, #add_document_meta_content, #add_exhibit_meta_content, #add_page_meta_content, #browse_opengraph_content, #browse_twitter_card_content, #document_opengraph_content, #document_twitter_card_content, #exhibit_opengraph_content, #exhibit_twitter_card_content, #meta_image, #page_opengraph_content, #page_twitter_card_content
Methods included from TitleHelper
#accessibility_page_title, #configuration_page_title, #curation_page_title, #page_title, #set_html_page_title
Methods included from CrudLinkHelpers
#action_label, #cancel_link, #create_link, #delete_link, #edit_link, #exhibit_create_link, #exhibit_delete_link, #exhibit_edit_link, #exhibit_view_link, #nav_link, #view_link
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
Can search for named routes directly in the main app, omitting the “main_app.” prefix
      54 55 56 57 58 59 60  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 54 def method_missing(method, *args, &) if main_app_url_helper?(method) main_app.send(method, *args) else super end end  | 
  
Instance Method Details
#additional_locale_routing_scopes ⇒ Object
      48 49 50  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 48 def additional_locale_routing_scopes [spotlight, main_app] end  | 
  
#application_name ⇒ Object
Give the application name a chance to include the exhibit title
      15 16 17 18 19 20 21 22 23 24 25 26 27  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 15 def application_name name = site_title name ||= super if current_exhibit t :'spotlight.application_name', exhibit: current_exhibit.title, application_name: name, default: t('spotlight.application_name', locale: I18n.default_locale, exhibit: current_exhibit.title, application_name: name) else name end end  | 
  
#available_view_fields ⇒ Object
      144 145 146  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 144 def available_view_fields current_exhibit.blacklight_configuration.default_blacklight_config.view.to_h.reject { |_k, v| v.if == false } end  | 
  
#blacklight_view_config_for_search_block(block) ⇒ Object
Return a copy of the blacklight configuration that only includes views conifgured by our block
      99 100 101 102 103 104 105 106  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 99 def blacklight_view_config_for_search_block(block) return {} if block.view.blank? # Reject any views that aren't configured to display for this block blacklight_config.view.select do |view, _| block.view.include? view.to_s end end  | 
  
#block_document_index_view_type(block) ⇒ Object
      108 109 110 111 112 113 114 115 116 117 118  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 108 def block_document_index_view_type(block) views = blacklight_view_config_for_search_block(block) selected_view = if views.key? document_index_view_type document_index_view_type else views.keys.first end selected_view || default_document_index_view_type end  | 
  
#current_exhibit_theme ⇒ Object
      157 158 159  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 157 def current_exhibit_theme current_exhibit.theme if current_exhibit && current_exhibit.theme.present? && current_exhibit.themes.include?(current_exhibit.theme) end  | 
  
#current_page_for_locale(locale) ⇒ Object
Returns the url for the current page in the new locale. This may be overridden in downstream applications where our naive use of ‘url_for` is insufficient to generate the expected routes
      36 37 38 39 40 41 42 43 44 45 46  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 36 def current_page_for_locale(locale) initial_exception = nil ([self] + additional_locale_routing_scopes).each do |scope| return scope.public_send(:url_for, params.to_unsafe_h.merge(locale:)) rescue ActionController::UrlGenerationError => e initial_exception ||= e end raise initial_exception end  | 
  
#document_action_path(action_opts, url_opts = nil) ⇒ Object
Override Blacklight’s #document_action_path helper to add the current exhibit context
      69 70 71 72 73 74 75 76  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 69 def document_action_path(action_opts, url_opts = nil) if current_exhibit model_name = current_exhibit.blacklight_config.document_model.model_name spotlight.send(action_opts.path || "#{action_opts.key}_exhibit_#{model_name.collection}_path", url_opts) else super end end  | 
  
#exhibit_stylesheet_link_tag(tag) ⇒ Object
      148 149 150 151 152 153 154 155  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 148 def exhibit_stylesheet_link_tag(tag) if current_exhibit_theme && current_exhibit.theme != 'default' stylesheet_link_tag "#{tag}_#{current_exhibit_theme}" else Rails.logger.warn "Exhibit theme '#{current_exhibit_theme}' not in the list of available themes: #{current_exhibit.themes}" stylesheet_link_tag(tag) end end  | 
  
#render_constraints(localized_params = nil, local_search_state = nil) ⇒ Object
      172 173 174 175 176 177 178 179  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 172 def render_constraints(localized_params = nil, local_search_state = nil) return super if defined?(super) local_search_state ||= convert_to_search_state(localized_params || search_state) constraints_component = blacklight_config&.view_config(document_index_view_type)&.constraints_component constraints_component ||= Blacklight::ConstraintsComponent render(constraints_component.new(search_state: local_search_state)) end  | 
  
#render_document_class(document = @document) ⇒ Object
Override Blacklight’s #render_document_class to inject a private class
      90 91 92 93 94 95  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 90 def render_document_class(document = @document) [ super, ("#{document_class_prefix}private" if document.private?(current_exhibit)) ].join(' ') end  | 
  
#render_search_bar ⇒ Object
      161 162 163 164 165 166 167 168 169 170  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 161 def return super if defined?(super) render((blacklight_config&.view_config(document_index_view_type)&. || Blacklight::SearchBarComponent).new( url: search_action_url, advanced_search_url: search_action_url(action: 'advanced_search'), params: search_state.params_for_search.except(:qt), autocomplete_path: suggest_index_catalog_path )) end  | 
  
#respond_to_missing?(method, *args) ⇒ Boolean
      62 63 64  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 62 def respond_to_missing?(method, *args) main_app_url_helper?(method) || super end  | 
  
#select_deselect_button ⇒ Object
      127 128 129 130 131 132 133 134 135 136 137  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 127 def ( t(:'.deselect_all'), class: 'btn btn-secondary btn-sm metadata-select', data: { behavior: 'metadata-select', 'deselect-text' => t(:'.deselect_all'), 'select-text' => t(:'.select_all') } ) end  | 
  
#selected_search_block_views(block) ⇒ Object
Return the list of views that are configured to display for a block
      121 122 123 124 125  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 121 def selected_search_block_views(block) block.as_json[:data].select do |_key, value| value == 'on' end.keys.map(&:to_s) end  | 
  
#site_title ⇒ Object
      29 30 31  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 29 def site_title current_site.title.presence end  | 
  
#uploaded_field_label(config) ⇒ Object
      139 140 141 142  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 139 def uploaded_field_label(config) solr_field = Array(config.solr_field || config.field_name).first.to_s blacklight_config.index_fields[solr_field]&.label || config.label || t(".#{solr_field}") end  | 
  
#url_to_tag_facet(tag) ⇒ Object
Helper to turn tag data into facets
      80 81 82 83 84 85 86  | 
    
      # File 'app/helpers/spotlight/application_helper.rb', line 80 def url_to_tag_facet(tag) if current_exhibit search_action_url(search_state.reset.filter(:exhibit_tags).add(tag).params) else search_action_url(q: tag) end end  |