Module: GeoblacklightHelper

Defined in:
app/helpers/geoblacklight_helper.rb

Instance Method Summary collapse

Instance Method Details

#document_available?Boolean

Returns:

  • (Boolean)


3
4
5
# File 'app/helpers/geoblacklight_helper.rb', line 3

def document_available?
  @document.public? || (@document.same_institution? && user_signed_in?)
end

#document_downloadable?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'app/helpers/geoblacklight_helper.rb', line 7

def document_downloadable?
  document_available? && @document.downloadable?
end


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

def download_link_file(label, id, url)
  link_to(
    label,
    url,
    'contentUrl' => url,
    data: {
      download: 'trigger',
      download_type: 'direct',
      download_id: id
    }
  )
end


54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/helpers/geoblacklight_helper.rb', line 54

def download_link_generated(download_type, document)
  link_to(
    t('geoblacklight.download.export_link', download_format: export_format_label(download_type)),
    '',
    data: {
      download_path: download_path(document.id, type: download_type),
      download: 'trigger',
      download_type: download_type,
      download_id: document.id
    }
  )
end


28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/helpers/geoblacklight_helper.rb', line 28

def download_link_hgl(text, document)
  link_to(
    text,
    download_hgl_path(id: document),
    data: {
      blacklight_modal: 'trigger',
      download: 'trigger',
      download_type: 'harvard-hgl',
      download_id: document.id
    }
  )
end

Generates the link markup for the IIIF JPEG download

Returns:

  • (String)


43
44
45
46
47
48
49
50
51
52
# File 'app/helpers/geoblacklight_helper.rb', line 43

def download_link_iiif
  link_to(
    download_text('JPG'),
    iiif_jpg_url,
    'contentUrl' => iiif_jpg_url,
    data: {
      download: 'trigger'
    }
  )
end

#download_text(format) ⇒ Object

Wraps download text with proper_case_format



110
111
112
113
114
# File 'app/helpers/geoblacklight_helper.rb', line 110

def download_text(format)
  download_format = proper_case_format(format)
  value = t('geoblacklight.download.download_link', download_format: download_format)
  value.html_safe
end

#export_format_label(format) ⇒ Object

Format labels are customized for exports - look up the appropriate key.



95
96
97
# File 'app/helpers/geoblacklight_helper.rb', line 95

def export_format_label(format)
  t("geoblacklight.download.export_#{format.to_s.parameterize(separator: '_')}_link")
end

#first_metadata?(document, metadata) ⇒ Boolean

Determines whether or not the metadata is the first within the array of References

Parameters:

Returns:

  • (Boolean)


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

def first_metadata?(document, )
  document.references..first.type == .type
end

#formatted_name_reference(reference) ⇒ String

Looks up formatted names for references

Parameters:

  • reference (String, Symbol)

Returns:

  • (String)


103
104
105
# File 'app/helpers/geoblacklight_helper.rb', line 103

def formatted_name_reference(reference)
  t "geoblacklight.references.#{reference}"
end

#geoblacklight_basemapString

Selects the basemap used for map displays

Returns:

  • (String)


160
161
162
# File 'app/helpers/geoblacklight_helper.rb', line 160

def geoblacklight_basemap
  blacklight_config.basemap_provider || 'positron'
end

#geoblacklight_icon(name, **args) ⇒ SVG or HTML tag

Returns an SVG icon or empty HTML span element

Returns:

  • (SVG or HTML tag)


78
79
80
81
82
83
84
85
# File 'app/helpers/geoblacklight_helper.rb', line 78

def geoblacklight_icon(name, **args)
  icon_name = name ? name.to_s.parameterize : 'none'
  begin
    blacklight_icon(icon_name, **args)
  rescue Blacklight::Exceptions::IconNotFound
    tag.span class: 'icon-missing geoblacklight-none'
  end
end

#iiif_jpg_urlObject



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

def iiif_jpg_url
  @document.references.iiif.endpoint.sub! 'info.json', 'full/full/0/default.jpg'
end

#leaflet_optionsObject

Returns a hash of the leaflet plugin settings to pass to the viewer. @return



180
181
182
# File 'app/helpers/geoblacklight_helper.rb', line 180

def leaflet_options
  Settings.LEAFLET
end

#proper_case_format(format) ⇒ Object

Looks up properly formatted names for formats



90
91
92
# File 'app/helpers/geoblacklight_helper.rb', line 90

def proper_case_format(format)
  t("geoblacklight.formats.#{format.to_s.parameterize(separator: '_')}")
end

#relations_icon(document, icon) ⇒ Object

Returns the icon used based off a Settings strategy



220
221
222
223
224
225
226
# File 'app/helpers/geoblacklight_helper.rb', line 220

def relations_icon(document, icon)
  icon_name = document[Settings.FIELDS.GEOM_TYPE] if Settings.USE_GEOM_FOR_RELATIONS_ICON
  icon_name = icon if icon_name.blank?
  icon_options = {}
  icon_options = { classes: 'svg_tooltip' } if Settings.USE_GEOM_FOR_RELATIONS_ICON
  geoblacklight_icon(icon_name, **icon_options)
end

#render_help_text_entry(feature, key) ⇒ HTML tag

Render help text popover for a given feature and translation key

Returns:

  • (HTML tag)


126
127
128
129
130
131
132
133
134
135
136
137
# File 'app/helpers/geoblacklight_helper.rb', line 126

def render_help_text_entry(feature, key)
  if I18n.exists?("geoblacklight.help_text.#{feature}.#{key}", locale)
    help_text = I18n.t("geoblacklight.help_text.#{feature}.#{key}")
    tag.h3 class: 'help-text viewer_protocol h6' do
      tag.a data: { toggle: 'popover', title: help_text[:title], content: help_text[:content] } do
        help_text[:title]
      end
    end
  else
    tag.span class: 'help-text translation-missing'
  end
end

#render_references_url(args) ⇒ Object

Renders a reference url for a document

Parameters:

  • document, (Hash)

    field_name



211
212
213
214
215
216
217
# File 'app/helpers/geoblacklight_helper.rb', line 211

def render_references_url(args)
  return unless args[:document]&.references&.url
  link_to(
    args[:document].references.url.endpoint,
    args[:document].references.url.endpoint
  )
end

#render_transformed_metadata(metadata) ⇒ String

Renders the transformed metadata (Renders a partial when the metadata isn’t available)

Parameters:

Returns:

  • (String)


189
190
191
192
193
194
195
196
197
# File 'app/helpers/geoblacklight_helper.rb', line 189

def ()
  render partial: 'catalog/metadata/content', locals: { content: .transform.html_safe }
rescue Geoblacklight::MetadataTransformer::TransformError => transform_err
  Geoblacklight.logger.warn transform_err.message
  render partial: 'catalog/metadata/markup', locals: { content: .to_xml }
rescue => err
  Geoblacklight.logger.warn err.message
  render partial: 'catalog/metadata/missing'
end

#render_value_as_truncate_abstract(args) ⇒ Object

Render value for a document’s field as a truncate abstract div. Arguments come from Blacklight::DocumentPresenter’s get_field_values method

Parameters:

  • args (Hash)

    from get_field_values



151
152
153
154
155
# File 'app/helpers/geoblacklight_helper.rb', line 151

def render_value_as_truncate_abstract(args)
  tag.div class: 'truncate-abstract' do
    Array(args[:value]).flatten.join(' ')
  end
end

#render_web_services(reference) ⇒ Object

Renders the partials for a Geoblacklight::Reference in the web services modal

Parameters:



168
169
170
171
172
173
174
175
# File 'app/helpers/geoblacklight_helper.rb', line 168

def render_web_services(reference)
  render(
    partial: "web_services_#{reference.type}",
    locals: { reference: reference }
  )
rescue ActionView::MissingTemplate
  render partial: 'web_services_default', locals: { reference: reference }
end

#results_js_map_selector(controller_name) ⇒ Object

Returns the data-map attribute value used as the JS map selector



229
230
231
232
233
234
235
236
# File 'app/helpers/geoblacklight_helper.rb', line 229

def results_js_map_selector(controller_name)
  case controller_name
  when 'bookmarks'
    'bookmarks'
  else
    'index'
  end
end

#show_attribute_table?Boolean

Deteremines if item view should include attribute table

Returns:

  • (Boolean)


142
143
144
# File 'app/helpers/geoblacklight_helper.rb', line 142

def show_attribute_table?
  document_available? && @document.inspectable?
end

#show_help_text?(feature, key) ⇒ Boolean

Deteremines if a feature should include help text popover

Returns:

  • (Boolean)


119
120
121
# File 'app/helpers/geoblacklight_helper.rb', line 119

def show_help_text?(feature, key)
  Settings&.HELP_TEXT&.send(feature)&.include?(key)
end

#snippit(args) ⇒ String

Blacklight catalog controller helper method to truncate field value to 150 chars

Parameters:

  • args (SolrDocument)

Returns:

  • (String)


71
72
73
# File 'app/helpers/geoblacklight_helper.rb', line 71

def snippit(args)
  truncate(Array(args[:value]).flatten.join(' '), length: 150)
end