geoblacklight 4.0.0.pre.rc3 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +22 -16
  3. data/.standard.yml +1 -0
  4. data/CODE_OF_CONDUCT.md +1 -1
  5. data/Gemfile +13 -11
  6. data/README.md +22 -14
  7. data/Rakefile +42 -50
  8. data/app/assets/images/blacklight/american-geographical-society-library-uwm-libraries.svg +26 -0
  9. data/app/assets/images/blacklight/arizona.svg +4 -0
  10. data/app/assets/images/blacklight/circle-info-solid.svg +1 -0
  11. data/app/assets/images/blacklight/fire-solid.svg +1 -0
  12. data/app/assets/images/blacklight/geoblacklight-icons.json +98 -66
  13. data/app/assets/images/blacklight/george-mason.svg +4 -0
  14. data/app/assets/images/blacklight/lightbulb-solid.svg +1 -0
  15. data/app/assets/images/blacklight/nebraska.svg +4 -0
  16. data/app/assets/images/blacklight/rutgers.svg +5 -0
  17. data/app/assets/images/blacklight/triangle-exclamation-solid.svg +1 -0
  18. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +8 -0
  19. data/app/components/geoblacklight/display_note_component.html.erb +1 -0
  20. data/app/components/geoblacklight/display_note_component.rb +47 -0
  21. data/app/components/geoblacklight/icon_facet_item_component.rb +2 -2
  22. data/app/controllers/download_controller.rb +36 -37
  23. data/app/controllers/relation_controller.rb +1 -0
  24. data/app/controllers/wms_controller.rb +1 -0
  25. data/app/helpers/arcgis_helper.rb +2 -1
  26. data/app/helpers/blacklight_helper.rb +2 -1
  27. data/app/helpers/carto_helper.rb +3 -2
  28. data/app/helpers/geoblacklight/geoblacklight_helper_behavior.rb +2 -1
  29. data/app/helpers/geoblacklight_helper.rb +44 -36
  30. data/app/models/concerns/geoblacklight/bbox_filter_query.rb +1 -1
  31. data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +1 -0
  32. data/app/models/concerns/geoblacklight/solr_document/carto.rb +1 -0
  33. data/app/models/concerns/geoblacklight/solr_document/citation.rb +3 -2
  34. data/app/models/concerns/geoblacklight/solr_document/finder.rb +1 -0
  35. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +1 -0
  36. data/app/models/concerns/geoblacklight/solr_document.rb +17 -9
  37. data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +2 -1
  38. data/app/presenters/geoblacklight/document_presenter.rb +3 -2
  39. data/app/views/catalog/_show_default_display_note.html.erb +7 -0
  40. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  41. data/app/views/catalog/_show_sidebar_static_map.html.erb +10 -0
  42. data/app/views/relation/index.json.jbuilder +1 -1
  43. data/config/initializers/new_gbl_settings_defaults_4.1.yml +104 -0
  44. data/config/initializers/rails_config.rb +5 -1
  45. data/config/locales/geoblacklight.en.yml +19 -10
  46. data/geoblacklight.gemspec +36 -40
  47. data/lib/generators/geoblacklight/assets_generator.rb +15 -15
  48. data/lib/generators/geoblacklight/install_generator.rb +24 -23
  49. data/lib/generators/geoblacklight/templates/catalog_controller.rb +66 -71
  50. data/lib/generators/geoblacklight/templates/settings.yml +74 -22
  51. data/lib/geoblacklight/bounding_box.rb +1 -0
  52. data/lib/geoblacklight/constants.rb +26 -25
  53. data/lib/geoblacklight/download/geojson_download.rb +10 -9
  54. data/lib/geoblacklight/download/geotiff_download.rb +6 -5
  55. data/lib/geoblacklight/download/hgl_download.rb +4 -3
  56. data/lib/geoblacklight/download/kmz_download.rb +11 -10
  57. data/lib/geoblacklight/download/shapefile_download.rb +10 -9
  58. data/lib/geoblacklight/download.rb +12 -11
  59. data/lib/geoblacklight/engine.rb +10 -9
  60. data/lib/geoblacklight/exceptions.rb +3 -0
  61. data/lib/geoblacklight/faraday_middleware/follow_redirects.rb +12 -11
  62. data/lib/geoblacklight/geometry.rb +6 -5
  63. data/lib/geoblacklight/item_viewer.rb +4 -3
  64. data/lib/geoblacklight/metadata/base.rb +4 -3
  65. data/lib/geoblacklight/metadata/fgdc.rb +1 -0
  66. data/lib/geoblacklight/metadata/html.rb +5 -4
  67. data/lib/geoblacklight/metadata/iso19139.rb +1 -0
  68. data/lib/geoblacklight/metadata.rb +1 -0
  69. data/lib/geoblacklight/metadata_transformer/base.rb +5 -4
  70. data/lib/geoblacklight/metadata_transformer/fgdc.rb +1 -0
  71. data/lib/geoblacklight/metadata_transformer/iso19139.rb +1 -0
  72. data/lib/geoblacklight/metadata_transformer.rb +6 -2
  73. data/lib/geoblacklight/reference.rb +3 -2
  74. data/lib/geoblacklight/references.rb +11 -6
  75. data/lib/geoblacklight/relation/ancestors.rb +4 -3
  76. data/lib/geoblacklight/relation/descendants.rb +4 -3
  77. data/lib/geoblacklight/relation/relation_response.rb +3 -2
  78. data/lib/geoblacklight/routes/downloadable.rb +3 -2
  79. data/lib/geoblacklight/routes/exportable.rb +4 -3
  80. data/lib/geoblacklight/routes/wms.rb +2 -1
  81. data/lib/geoblacklight/routes.rb +4 -3
  82. data/lib/geoblacklight/version.rb +2 -1
  83. data/lib/geoblacklight/view_helper_override.rb +3 -2
  84. data/lib/geoblacklight/wms_layer/feature_info_response.rb +5 -4
  85. data/lib/geoblacklight/wms_layer.rb +4 -3
  86. data/lib/geoblacklight.rb +32 -31
  87. data/lib/tasks/geoblacklight.rake +57 -39
  88. data/schema/geoblacklight-schema-1.0.json +3 -3
  89. data/schema/geoblacklight-schema-aardvark.json +6 -0
  90. data/schema/readme.md +8 -0
  91. data/spec/components/geoblacklight/display_note_component_spec.rb +27 -0
  92. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +11 -10
  93. data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +8 -7
  94. data/spec/config/initializers/rails_config_spec.rb +10 -9
  95. data/spec/controllers/catalog_controller_spec.rb +27 -26
  96. data/spec/controllers/download_controller_spec.rb +50 -49
  97. data/spec/controllers/relation_controller_spec.rb +5 -4
  98. data/spec/controllers/wms_controller_spec.rb +10 -9
  99. data/spec/factories/user.rb +3 -2
  100. data/spec/features/bookmarks_spec.rb +7 -6
  101. data/spec/features/configurable_basemap_spec.rb +12 -11
  102. data/spec/features/data_dictionary_download_spec.rb +11 -10
  103. data/spec/features/download_layer_spec.rb +64 -63
  104. data/spec/features/empty_search_spec.rb +6 -5
  105. data/spec/features/esri_viewer_spec.rb +33 -32
  106. data/spec/features/exports_spec.rb +18 -17
  107. data/spec/features/full_screen_controll_spec.rb +8 -8
  108. data/spec/features/help_text_spec.rb +6 -5
  109. data/spec/features/home_page_spec.rb +30 -29
  110. data/spec/features/iiif_viewer_spec.rb +6 -5
  111. data/spec/features/index_map_spec.rb +17 -16
  112. data/spec/features/layer_inspection_spec.rb +8 -7
  113. data/spec/features/layer_opacity_spec.rb +15 -14
  114. data/spec/features/layer_preview_spec.rb +11 -10
  115. data/spec/features/layer_with_no_references_spec.rb +5 -4
  116. data/spec/features/linkified_attribute_table_spec.rb +8 -7
  117. data/spec/features/metadata_panel_spec.rb +32 -31
  118. data/spec/features/missing_metadata_spec.rb +18 -17
  119. data/spec/features/multiple_downloads_spec.rb +11 -10
  120. data/spec/features/oembed_spec.rb +6 -5
  121. data/spec/features/relations_spec.rb +51 -26
  122. data/spec/features/saved_searches_spec.rb +7 -6
  123. data/spec/features/search_bar_spec.rb +9 -8
  124. data/spec/features/search_results_complex_geometry_spec.rb +12 -11
  125. data/spec/features/search_results_icons_spec.rb +10 -9
  126. data/spec/features/search_results_map_spec.rb +21 -20
  127. data/spec/features/search_results_overlap_ratio_spec.rb +17 -16
  128. data/spec/features/search_spec.rb +19 -18
  129. data/spec/features/show_page_download_spec.rb +15 -14
  130. data/spec/features/show_page_metadata_spec.rb +9 -8
  131. data/spec/features/show_page_sidebar_static_map_spec.rb +21 -0
  132. data/spec/features/sms_spec.rb +12 -11
  133. data/spec/features/split_view.html.erb_spec.rb +56 -55
  134. data/spec/features/suppressed_records_spec.rb +10 -9
  135. data/spec/features/tilejson_spec.rb +9 -8
  136. data/spec/features/tms_spec.rb +6 -5
  137. data/spec/features/web_services_modal_spec.rb +37 -36
  138. data/spec/features/wmts_spec.rb +16 -15
  139. data/spec/features/xyz_spec.rb +6 -5
  140. data/spec/fixtures/solr_documents/actual-papermap1.json +1 -1
  141. data/spec/fixtures/solr_documents/actual-point1.json +1 -1
  142. data/spec/fixtures/solr_documents/actual-polygon1.json +1 -1
  143. data/spec/fixtures/solr_documents/actual-raster1.json +1 -1
  144. data/spec/fixtures/solr_documents/baruch_ancestor1.json +1 -1
  145. data/spec/fixtures/solr_documents/baruch_ancestor2.json +1 -1
  146. data/spec/fixtures/solr_documents/baruch_documentation_download.json +2 -2
  147. data/spec/fixtures/solr_documents/cornell_html_metadata.json +1 -1
  148. data/spec/fixtures/solr_documents/display-note.json +52 -0
  149. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +1 -1
  150. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +1 -1
  151. data/spec/fixtures/solr_documents/esri-feature-layer.json +1 -1
  152. data/spec/fixtures/solr_documents/esri-image-map-layer.json +1 -1
  153. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +1 -1
  154. data/spec/fixtures/solr_documents/esri-wms-layer.json +1 -1
  155. data/spec/fixtures/solr_documents/harvard_raster.json +1 -1
  156. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +1 -1
  157. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +1 -1
  158. data/spec/fixtures/solr_documents/index-map-polygon.json +1 -1
  159. data/spec/fixtures/solr_documents/index-map-stanford.json +1 -1
  160. data/spec/fixtures/solr_documents/index_map_point.json +1 -1
  161. data/spec/fixtures/solr_documents/princeton-parent.json +1 -1
  162. data/spec/fixtures/solr_documents/public_direct_download.json +1 -1
  163. data/spec/fixtures/solr_documents/public_iiif_princeton.json +1 -1
  164. data/spec/fixtures/solr_documents/restricted-line.json +1 -1
  165. data/spec/fixtures/solr_documents/tilejson.json +2 -2
  166. data/spec/fixtures/solr_documents/umn_metro_result1.json +2 -2
  167. data/spec/fixtures/solr_documents/umn_state_result1.json +1 -1
  168. data/spec/fixtures/solr_documents/umn_state_result2.json +1 -1
  169. data/spec/fixtures/solr_documents/uva_slug_colon.json +1 -1
  170. data/spec/fixtures/solr_documents/wmts-multiple.json +1 -1
  171. data/spec/fixtures/solr_documents/wmts-single-layer.json +6 -6
  172. data/spec/fixtures/solr_documents/xyz.json +3 -3
  173. data/spec/helpers/arcgis_helper_spec.rb +8 -7
  174. data/spec/helpers/carto_helper_spec.rb +6 -5
  175. data/spec/helpers/geoblacklight/geoblacklight_helper_behavior_spec.rb +10 -15
  176. data/spec/helpers/geoblacklight_helper_spec.rb +139 -138
  177. data/spec/lib/geoblacklight/bounding_box_spec.rb +14 -13
  178. data/spec/lib/geoblacklight/document_presenter_spec.rb +26 -25
  179. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +8 -7
  180. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +8 -7
  181. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +16 -15
  182. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +9 -8
  183. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +8 -7
  184. data/spec/lib/geoblacklight/download_spec.rb +61 -60
  185. data/spec/lib/geoblacklight/geometry_spec.rb +29 -28
  186. data/spec/lib/geoblacklight/item_viewer_spec.rb +25 -24
  187. data/spec/lib/geoblacklight/metadata/base_spec.rb +44 -43
  188. data/spec/lib/geoblacklight/metadata/html_spec.rb +7 -6
  189. data/spec/lib/geoblacklight/metadata_spec.rb +15 -14
  190. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +13 -12
  191. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +8 -7
  192. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +8 -7
  193. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +15 -14
  194. data/spec/lib/geoblacklight/reference_spec.rb +28 -27
  195. data/spec/lib/geoblacklight/references_spec.rb +89 -76
  196. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +17 -16
  197. data/spec/lib/geoblacklight/relation/descendants_spec.rb +17 -16
  198. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +29 -28
  199. data/spec/lib/geoblacklight/view_helper_override_spec.rb +14 -13
  200. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +19 -18
  201. data/spec/lib/geoblacklight/wms_layer_spec.rb +31 -30
  202. data/spec/models/concerns/geoblacklight/bbox_filter_field_spec.rb +31 -31
  203. data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +32 -32
  204. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +16 -15
  205. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +7 -6
  206. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +16 -17
  207. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +7 -6
  208. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +121 -107
  209. data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +8 -7
  210. data/spec/presenters/geoblacklight/bbox_item_presenter_spec.rb +10 -10
  211. data/spec/routing/catalog_routing_spec.rb +4 -3
  212. data/spec/spec_helper.rb +34 -33
  213. data/spec/support/backport_test_helpers.rb +6 -5
  214. data/spec/support/features/session_helpers.rb +8 -7
  215. data/spec/support/features.rb +2 -1
  216. data/spec/support/fixtures.rb +2 -1
  217. data/spec/tasks/geoblacklight_spec.rb +10 -9
  218. data/spec/test_app_templates/lib/generators/test_app_generator.rb +16 -15
  219. data/spec/views/catalog/_document_split.html.erb_spec.rb +3 -2
  220. data/spec/views/catalog/_index_split.html.erb_spec.rb +3 -2
  221. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +5 -4
  222. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +11 -10
  223. data/spec/views/catalog/_show_tools.html.erb_spec.rb +13 -12
  224. data/template.rb +9 -8
  225. metadata +31 -212
  226. data/.gitmodules +0 -0
  227. data/.rubocop.yml +0 -111
  228. data/.rubocop_todo.yml +0 -418
  229. data/config/initializers/new_gbl_settings_defaults_3_4.yml +0 -6
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ArcgisHelper
3
4
  ##
4
5
  # Generates an ArcGIS.com viewer url with params that can open content
@@ -8,6 +9,6 @@ module ArcgisHelper
8
9
  params = URI.encode_www_form(
9
10
  urls: arcgis_urls
10
11
  )
11
- Settings.ARCGIS_BASE_URL + '?' + params
12
+ Settings.ARCGIS_BASE_URL + "?" + params
12
13
  end
13
14
  end
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module BlacklightHelper
3
4
  include Blacklight::BlacklightHelperBehavior
4
5
  include Geoblacklight::GeoblacklightHelperBehavior
5
6
  include Blacklight::CatalogHelperBehavior
6
7
 
7
8
  def render_document_sidebar_partial(document = @document)
8
- super(document) + (render 'relations_container', document: document)
9
+ super(document) + (render "relations_container", document: document)
9
10
  end
10
11
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module CartoHelper
3
4
  ##
4
5
  # Creates a Carto OneClick link, using the configuration link
@@ -10,14 +11,14 @@ module CartoHelper
10
11
  provider: carto_provider,
11
12
  logo: Settings.APPLICATION_LOGO_URL
12
13
  )
13
- carto_oneclick_host + '?' + params
14
+ carto_oneclick_host + "?" + params
14
15
  end
15
16
 
16
17
  ##
17
18
  # Removes blank space from provider to accomodate Carto OneClick
18
19
  #
19
20
  def carto_provider
20
- application_name.delete(' ')
21
+ application_name.delete(" ")
21
22
  end
22
23
 
23
24
  private
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  ##
3
4
  # Adds helper behavior logic for GeoBlacklight, to used alongside
4
5
  # BlacklightHelperBehavior
@@ -11,7 +12,7 @@ module Geoblacklight
11
12
  # @param [Symbol, String] presenting_method
12
13
  # @return [String]
13
14
  def geoblacklight_present(presenting_method, document = @document)
14
- document_presenter(document).try(presenting_method.to_sym) || ''
15
+ document_presenter(document).try(presenting_method.to_sym) || ""
15
16
  end
16
17
  end
17
18
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module GeoblacklightHelper
3
4
  def document_available?
4
5
  @document.public? || (@document.same_institution? && user_signed_in?)
@@ -9,17 +10,17 @@ module GeoblacklightHelper
9
10
  end
10
11
 
11
12
  def iiif_jpg_url
12
- @document.references.iiif.endpoint.sub! 'info.json', 'full/full/0/default.jpg'
13
+ @document.references.iiif.endpoint.sub! "info.json", "full/full/0/default.jpg"
13
14
  end
14
15
 
15
16
  def download_link_file(label, id, url)
16
17
  link_to(
17
18
  label,
18
19
  url,
19
- 'contentUrl' => url,
20
- data: {
21
- download: 'trigger',
22
- download_type: 'direct',
20
+ "contentUrl" => url,
21
+ :data => {
22
+ download: "trigger",
23
+ download_type: "direct",
23
24
  download_id: id
24
25
  }
25
26
  )
@@ -30,9 +31,9 @@ module GeoblacklightHelper
30
31
  text,
31
32
  download_hgl_path(id: document),
32
33
  data: {
33
- blacklight_modal: 'trigger',
34
- download: 'trigger',
35
- download_type: 'harvard-hgl',
34
+ blacklight_modal: "trigger",
35
+ download: "trigger",
36
+ download_type: "harvard-hgl",
36
37
  download_id: document.id
37
38
  }
38
39
  )
@@ -42,22 +43,22 @@ module GeoblacklightHelper
42
43
  # @return [String]
43
44
  def download_link_iiif
44
45
  link_to(
45
- download_text('JPG'),
46
+ download_text("JPG"),
46
47
  iiif_jpg_url,
47
- 'contentUrl' => iiif_jpg_url,
48
- data: {
49
- download: 'trigger'
48
+ "contentUrl" => iiif_jpg_url,
49
+ :data => {
50
+ download: "trigger"
50
51
  }
51
52
  )
52
53
  end
53
54
 
54
55
  def download_link_generated(download_type, document)
55
56
  link_to(
56
- t('geoblacklight.download.export_link', download_format: export_format_label(download_type)),
57
- '',
57
+ t("geoblacklight.download.export_link", download_format: export_format_label(download_type)),
58
+ "",
58
59
  data: {
59
60
  download_path: download_path(document.id, type: download_type),
60
- download: 'trigger',
61
+ download: "trigger",
61
62
  download_type: download_type,
62
63
  download_id: document.id
63
64
  }
@@ -69,18 +70,18 @@ module GeoblacklightHelper
69
70
  # @param [SolrDocument] args
70
71
  # @return [String]
71
72
  def snippit(args)
72
- truncate(Array(args[:value]).flatten.join(' '), length: 150)
73
+ truncate(Array(args[:value]).flatten.join(" "), length: 150)
73
74
  end
74
75
 
75
76
  ##
76
77
  # Returns an SVG icon or empty HTML span element
77
78
  # @return [SVG or HTML tag]
78
79
  def geoblacklight_icon(name, **args)
79
- icon_name = name ? name.to_s.parameterize : 'none'
80
+ icon_name = name ? name.to_s.parameterize : "none"
80
81
  begin
81
82
  blacklight_icon(icon_name, **args)
82
83
  rescue Blacklight::Exceptions::IconNotFound
83
- tag.span class: 'icon-missing geoblacklight-none'
84
+ tag.span class: "icon-missing geoblacklight-none"
84
85
  end
85
86
  end
86
87
 
@@ -88,12 +89,12 @@ module GeoblacklightHelper
88
89
  # Looks up properly formatted names for formats
89
90
  #
90
91
  def proper_case_format(format)
91
- t("geoblacklight.formats.#{format.to_s.parameterize(separator: '_')}")
92
+ t("geoblacklight.formats.#{format.to_s.parameterize(separator: "_")}")
92
93
  end
93
94
 
94
95
  # Format labels are customized for exports - look up the appropriate key.
95
96
  def export_format_label(format)
96
- t("geoblacklight.download.export_#{format.to_s.parameterize(separator: '_')}_link")
97
+ t("geoblacklight.download.export_#{format.to_s.parameterize(separator: "_")}_link")
97
98
  end
98
99
 
99
100
  ##
@@ -109,7 +110,7 @@ module GeoblacklightHelper
109
110
  #
110
111
  def download_text(format)
111
112
  download_format = proper_case_format(format)
112
- value = t('geoblacklight.download.download_link', download_format: download_format)
113
+ value = t("geoblacklight.download.download_link", download_format: download_format)
113
114
  value.html_safe
114
115
  end
115
116
 
@@ -126,16 +127,23 @@ module GeoblacklightHelper
126
127
  def render_help_text_entry(feature, key)
127
128
  if I18n.exists?("geoblacklight.help_text.#{feature}.#{key}", locale)
128
129
  help_text = I18n.t("geoblacklight.help_text.#{feature}.#{key}")
129
- tag.h3 class: 'help-text viewer_protocol h6' do
130
- tag.a data: { toggle: 'popover', title: help_text[:title], content: help_text[:content] } do
130
+ tag.h3 class: "help-text viewer_protocol h6" do
131
+ tag.a data: {toggle: "popover", title: help_text[:title], content: help_text[:content]} do
131
132
  help_text[:title]
132
133
  end
133
134
  end
134
135
  else
135
- tag.span class: 'help-text translation-missing'
136
+ tag.span class: "help-text translation-missing"
136
137
  end
137
138
  end
138
139
 
140
+ ##
141
+ # Determines if item view should render the sidebar static map
142
+ # @return [Boolean]
143
+ def render_sidebar_map?(document)
144
+ Settings.SIDEBAR_STATIC_MAP&.any? { |vp| document.viewer_protocol == vp }
145
+ end
146
+
139
147
  ##
140
148
  # Deteremines if item view should include attribute table
141
149
  # @return [Boolean]
@@ -149,8 +157,8 @@ module GeoblacklightHelper
149
157
  # get_field_values method
150
158
  # @param [Hash] args from get_field_values
151
159
  def render_value_as_truncate_abstract(args)
152
- tag.div class: 'truncate-abstract' do
153
- Array(args[:value]).flatten.join(' ')
160
+ tag.div class: "truncate-abstract" do
161
+ Array(args[:value]).flatten.join(" ")
154
162
  end
155
163
  end
156
164
 
@@ -158,7 +166,7 @@ module GeoblacklightHelper
158
166
  # Selects the basemap used for map displays
159
167
  # @return [String]
160
168
  def geoblacklight_basemap
161
- blacklight_config.basemap_provider || 'positron'
169
+ blacklight_config.basemap_provider || "positron"
162
170
  end
163
171
 
164
172
  ##
@@ -168,10 +176,10 @@ module GeoblacklightHelper
168
176
  def render_web_services(reference)
169
177
  render(
170
178
  partial: "web_services_#{reference.type}",
171
- locals: { reference: reference }
179
+ locals: {reference: reference}
172
180
  )
173
181
  rescue ActionView::MissingTemplate
174
- render partial: 'web_services_default', locals: { reference: reference }
182
+ render partial: "web_services_default", locals: {reference: reference}
175
183
  end
176
184
 
177
185
  ##
@@ -187,13 +195,13 @@ module GeoblacklightHelper
187
195
  # @param [Geoblacklight::Metadata::Base] metadata the metadata object
188
196
  # @return [String]
189
197
  def render_transformed_metadata(metadata)
190
- render partial: 'catalog/metadata/content', locals: { content: metadata.transform.html_safe }
198
+ render partial: "catalog/metadata/content", locals: {content: metadata.transform.html_safe}
191
199
  rescue Geoblacklight::MetadataTransformer::TransformError => transform_err
192
200
  Geoblacklight.logger.warn transform_err.message
193
- render partial: 'catalog/metadata/markup', locals: { content: metadata.to_xml }
201
+ render partial: "catalog/metadata/markup", locals: {content: metadata.to_xml}
194
202
  rescue => err
195
203
  Geoblacklight.logger.warn err.message
196
- render partial: 'catalog/metadata/missing'
204
+ render partial: "catalog/metadata/missing"
197
205
  end
198
206
 
199
207
  ##
@@ -221,17 +229,17 @@ module GeoblacklightHelper
221
229
  icon_name = document[Settings.FIELDS.GEOM_TYPE] if Settings.USE_GEOM_FOR_RELATIONS_ICON
222
230
  icon_name = icon if icon_name.blank?
223
231
  icon_options = {}
224
- icon_options = { classes: 'svg_tooltip' } if Settings.USE_GEOM_FOR_RELATIONS_ICON
232
+ icon_options = {classes: "svg_tooltip"} if Settings.USE_GEOM_FOR_RELATIONS_ICON
225
233
  geoblacklight_icon(icon_name, **icon_options)
226
234
  end
227
235
 
228
236
  ## Returns the data-map attribute value used as the JS map selector
229
237
  def results_js_map_selector(controller_name)
230
238
  case controller_name
231
- when 'bookmarks'
232
- 'bookmarks'
239
+ when "bookmarks"
240
+ "bookmarks"
233
241
  else
234
- 'index'
242
+ "index"
235
243
  end
236
244
  end
237
245
  end
@@ -38,7 +38,7 @@ module Geoblacklight
38
38
  end
39
39
 
40
40
  def boost
41
- "^#{field_config.within_boost || '10'}"
41
+ "^#{field_config.within_boost || "10"}"
42
42
  end
43
43
 
44
44
  private
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SolrDocument
4
5
  module Arcgis
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SolrDocument
4
5
  ##
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SolrDocument
4
5
  module Citation
@@ -11,8 +12,8 @@ module Geoblacklight
11
12
  fetch(Settings.FIELDS.TITLE, nil),
12
13
  ("[#{format}]" if format),
13
14
  fetch(Settings.FIELDS.PUBLISHER, nil),
14
- I18n.t('geoblacklight.citation.retrieved_from', document_url: solr_document_url)
15
- ].flatten.compact.join('. ')
15
+ I18n.t("geoblacklight.citation.retrieved_from", document_url: solr_document_url)
16
+ ].flatten.compact.join(". ")
16
17
  end
17
18
 
18
19
  private
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SolrDocument
4
5
  ##
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SolrDocument
4
5
  ##
@@ -20,11 +20,11 @@ module Geoblacklight
20
20
  end
21
21
 
22
22
  def public?
23
- rights_field_data.present? && rights_field_data.casecmp('public').zero?
23
+ rights_field_data.present? && rights_field_data.casecmp("public").zero?
24
24
  end
25
25
 
26
26
  def restricted?
27
- rights_field_data.blank? || rights_field_data.casecmp('restricted').zero?
27
+ rights_field_data.blank? || rights_field_data.casecmp("restricted").zero?
28
28
  end
29
29
 
30
30
  def downloadable?
@@ -39,6 +39,10 @@ module Geoblacklight
39
39
  references.download.to_hash if references.download.present?
40
40
  end
41
41
 
42
+ def display_note
43
+ fetch(Settings.FIELDS.DISPLAY_NOTE, "")
44
+ end
45
+
42
46
  def hgl_download
43
47
  references.hgl.to_hash if references.hgl.present?
44
48
  end
@@ -48,7 +52,7 @@ module Geoblacklight
48
52
  end
49
53
 
50
54
  def same_institution?
51
- fetch(Settings.FIELDS.PROVIDER, '').casecmp(Settings.INSTITUTION.downcase).zero?
55
+ fetch(Settings.FIELDS.PROVIDER, "").casecmp(Settings.INSTITUTION.downcase).zero?
52
56
  end
53
57
 
54
58
  def iiif_download
@@ -60,7 +64,7 @@ module Geoblacklight
60
64
  end
61
65
 
62
66
  def external_url
63
- references.url.endpoint if references.url
67
+ references.url&.endpoint
64
68
  end
65
69
 
66
70
  def item_viewer
@@ -68,11 +72,11 @@ module Geoblacklight
68
72
  end
69
73
 
70
74
  def itemtype
71
- 'http://schema.org/Dataset'
75
+ "http://schema.org/Dataset"
72
76
  end
73
77
 
74
78
  def geom_field
75
- fetch(Settings.FIELDS.GEOMETRY, '')
79
+ fetch(Settings.FIELDS.GEOMETRY, "")
76
80
  end
77
81
 
78
82
  def geometry
@@ -80,7 +84,7 @@ module Geoblacklight
80
84
  end
81
85
 
82
86
  def wxs_identifier
83
- fetch(Settings.FIELDS.WXS_IDENTIFIER, '')
87
+ fetch(Settings.FIELDS.WXS_IDENTIFIER, "")
84
88
  end
85
89
 
86
90
  def file_format
@@ -100,15 +104,19 @@ module Geoblacklight
100
104
  private
101
105
 
102
106
  def rights_field_data
103
- fetch(Settings.FIELDS.ACCESS_RIGHTS, '')
107
+ fetch(Settings.FIELDS.ACCESS_RIGHTS, "")
104
108
  end
105
109
 
106
110
  def method_missing(method, *args, &block)
107
111
  if /.*_url$/.match?(method.to_s)
108
- checked_endpoint(method.to_s.gsub('_url', ''))
112
+ checked_endpoint(method.to_s.gsub("_url", ""))
109
113
  else
110
114
  super
111
115
  end
112
116
  end
117
+
118
+ def respond_to_missing?(method, *args, &block)
119
+ /.*_url$/.match?(method.to_s) || super
120
+ end
113
121
  end
114
122
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  module SuppressedRecordsSearchBehavior
4
5
  extend ActiveSupport::Concern
@@ -14,7 +15,7 @@ module Geoblacklight
14
15
  def hide_suppressed_records(solr_params)
15
16
  # Show suppressed records when searching relationships
16
17
  return if blacklight_params.fetch(:f,
17
- {}).keys.any? do |field|
18
+ {}).keys.any? do |field|
18
19
  Settings.RELATIONSHIPS_SHOWN.map do |_key, value|
19
20
  value.field
20
21
  end.include?(field)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Geoblacklight
3
4
  ##
4
5
  # Adds custom functionality for Geoblacklight document presentation
@@ -14,11 +15,11 @@ module Geoblacklight
14
15
  @configuration.index_fields.each do |_field_name, field_config|
15
16
  val = field_value(field_config)
16
17
  if val.present?
17
- val += '.' unless val.end_with?('.')
18
+ val += "." unless val.end_with?(".")
18
19
  fields_values << val
19
20
  end
20
21
  end
21
- safe_join(fields_values, ' ')
22
+ safe_join(fields_values, " ")
22
23
  end
23
24
  end
24
25
  end
@@ -0,0 +1,7 @@
1
+ <% document ||= @document %>
2
+
3
+ <% if document.display_note.present? %>
4
+ <% document.display_note.each do |display_note| %>
5
+ <%= render(Geoblacklight::DisplayNoteComponent.new(display_note: display_note)) %>
6
+ <% end %>
7
+ <% end %>
@@ -1,3 +1,4 @@
1
+ <%= render :partial => 'show_sidebar_static_map' if render_sidebar_map?(@document) %>
1
2
  <%= render :partial => 'show_tools' %>
2
3
 
3
4
  <div class="sidebar-buttons">
@@ -0,0 +1,10 @@
1
+ <div class="card">
2
+ <div class="card-header">
3
+ <%= I18n.t('geoblacklight.location') %>
4
+ </div>
5
+
6
+ <div class="card-body">
7
+ <%= content_tag :div, id: 'static-map', aria: { label: t('geoblacklight.map.label') }, data: { map: 'item', protocol: 'Map', url: @document.viewer_endpoint, 'layer-id' => @document.wxs_identifier, 'map-geom' => @document.geometry.geojson, 'catalog-path'=> blacklight_path, available: document_available?, inspect: show_attribute_table?, basemap: geoblacklight_basemap, leaflet_options: leaflet_options } do %>
8
+ <% end %>
9
+ </div>
10
+ </div>
@@ -3,6 +3,6 @@
3
3
  json.current_doc @relations.search_id
4
4
  json.relations do
5
5
  Settings.RELATIONSHIPS_SHOWN.each do |key, _value|
6
- json.set! key.downcase.to_s, @relations.send(key) unless @relations.send(key)['numFound'].to_i.zero?
6
+ json.set! key.downcase.to_s, @relations.send(key) unless @relations.send(key)["numFound"].to_i.zero?
7
7
  end
8
8
  end
@@ -0,0 +1,104 @@
1
+ # New GeoBlacklight v4.1 Settings
2
+
3
+ # Display Notes to display / Non-prefixed default bootstrap class is alert-secondary
4
+ DISPLAY_NOTES_SHOWN:
5
+ danger:
6
+ bootstrap_alert_class: alert-danger
7
+ icon: fire-solid
8
+ note_prefix: "Danger: "
9
+ info:
10
+ bootstrap_alert_class: alert-info
11
+ icon: circle-info-solid
12
+ note_prefix: "Info: "
13
+ tip:
14
+ bootstrap_alert_class: alert-success
15
+ icon: lightbulb-solid
16
+ note_prefix: "Tip: "
17
+ warning:
18
+ bootstrap_alert_class: alert-warning
19
+ icon: triangle-exclamation-solid
20
+ note_prefix: "Warning: "
21
+
22
+ # Solr field mappings (Added DISPLAY_NOTE)
23
+ FIELDS:
24
+ :DISPLAY_NOTE: 'gbl_displayNote_sm'
25
+
26
+ # Relationships to display
27
+ RELATIONSHIPS_SHOWN:
28
+ MEMBER_OF_ANCESTORS:
29
+ field: pcdm_memberOf_sm
30
+ icon: parent-item
31
+ inverse: :MEMBER_OF_DESCENDANTS
32
+ label: geoblacklight.relations.member_of_ancestors
33
+ query_type: ancestors
34
+ MEMBER_OF_DESCENDANTS:
35
+ field: pcdm_memberOf_sm
36
+ icon: child-item
37
+ inverse: :MEMBER_OF_ANCESTORS
38
+ label: geoblacklight.relations.member_of_descendants
39
+ query_type: descendants
40
+ PART_OF_ANCESTORS:
41
+ field: dct_isPartOf_sm
42
+ icon: parent-item
43
+ inverse: :PART_OF_DESCENDANTS
44
+ label: geoblacklight.relations.part_of_ancestors
45
+ query_type: ancestors
46
+ PART_OF_DESCENDANTS:
47
+ field: dct_isPartOf_sm
48
+ icon: child-item
49
+ inverse: :PART_OF_ANCESTORS
50
+ label: geoblacklight.relations.part_of_descendants
51
+ query_type: descendants
52
+ RELATION_ANCESTORS:
53
+ field: dct_relation_sm
54
+ icon: nil
55
+ inverse: :RELATION_DESCENDANTS
56
+ label: geoblacklight.relations.relation_ancestors
57
+ query_type: ancestors
58
+ RELATION_DESCENDANTS:
59
+ field: dct_relation_sm
60
+ icon: nil
61
+ inverse: :RELATION_ANCESTORS
62
+ label: geoblacklight.relations.relation_descendants
63
+ query_type: descendants
64
+ REPLACES_ANCESTORS:
65
+ field: dct_replaces_sm
66
+ icon: nil
67
+ inverse: :REPLACES_DESCENDANTS
68
+ label: geoblacklight.relations.replaces_ancestors
69
+ query_type: ancestors
70
+ REPLACES_DESCENDANTS:
71
+ field: dct_replaces_sm
72
+ icon: nil
73
+ inverse: :REPLACES_ANCESTORS
74
+ label: geoblacklight.relations.replaces_descendants
75
+ query_type: descendants
76
+ SOURCE_ANCESTORS:
77
+ field: dct_source_sm
78
+ icon: parent-item
79
+ inverse: :SOURCE_DESCENDANTS
80
+ label: geoblacklight.relations.source_ancestors
81
+ query_type: ancestors
82
+ SOURCE_DESCENDANTS:
83
+ field: dct_source_sm
84
+ icon: child-item
85
+ inverse: :SOURCE_ANCESTORS
86
+ label: geoblacklight.relations.source_descendants
87
+ query_type: descendants
88
+ VERSION_OF_ANCESTORS:
89
+ field: dct_isVersionOf_sm
90
+ icon: parent-item
91
+ inverse: :VERSION_OF_DESCENDANTS
92
+ label: geoblacklight.relations.version_of_ancestors
93
+ query_type: ancestors
94
+ VERSION_OF_DESCENDANTS:
95
+ field: dct_isVersionOf_sm
96
+ icon: child-item
97
+ inverse: :VERSION_OF_ANCESTORS
98
+ label: geoblacklight.relations.version_of_descendants
99
+ query_type: descendants
100
+
101
+ # Enable catalog#show sidebar static map for items with the following viewer protocols
102
+ SIDEBAR_STATIC_MAP:
103
+ - 'iiif'
104
+ - 'iiif_manifest'
@@ -1,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  Config.setup do |config|
3
- config.const_name = 'Settings'
4
+ config.const_name = "Settings"
4
5
  end
6
+
7
+ Settings.prepend_source!(File.expand_path("new_gbl_settings_defaults_4_1.yml", __dir__))
8
+ Settings.reload!