arclight 0.3.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +11 -4
  3. data/.github/workflows/ruby.yml +51 -0
  4. data/.gitignore +1 -0
  5. data/.rspec +0 -1
  6. data/.rubocop.yml +498 -21
  7. data/.rubocop_todo.yml +69 -86
  8. data/.solr_wrapper +2 -1
  9. data/CONTRIBUTING.md +5 -5
  10. data/CONTRIBUTORS.md +1 -1
  11. data/Gemfile +15 -10
  12. data/README.md +22 -17
  13. data/app/assets/images/blacklight/bookmark.svg +1 -1
  14. data/app/assets/images/blacklight/collection.svg +1 -1
  15. data/app/assets/images/blacklight/compact.svg +1 -1
  16. data/app/assets/images/blacklight/container.svg +1 -1
  17. data/app/assets/images/blacklight/ead.svg +1 -1
  18. data/app/assets/images/blacklight/file.svg +1 -1
  19. data/app/assets/images/blacklight/folder.svg +1 -1
  20. data/app/assets/images/blacklight/list.svg +1 -1
  21. data/app/assets/images/blacklight/online.svg +1 -1
  22. data/app/assets/images/blacklight/pdf.svg +1 -1
  23. data/app/assets/images/blacklight/repository.svg +1 -1
  24. data/app/assets/javascripts/arclight/arclight.js +4 -8
  25. data/app/assets/javascripts/arclight/oembed_controller.js +58 -0
  26. data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
  27. data/app/assets/stylesheets/arclight/application.scss +3 -5
  28. data/app/assets/stylesheets/arclight/build.scss +4 -0
  29. data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +108 -130
  30. data/app/assets/stylesheets/arclight/modules/icons.scss +20 -0
  31. data/app/assets/stylesheets/arclight/modules/layout.scss +129 -100
  32. data/app/assets/stylesheets/arclight/modules/mastheads.scss +23 -96
  33. data/app/assets/stylesheets/arclight/modules/repositories.scss +2 -2
  34. data/app/assets/stylesheets/arclight/modules/repository_card.scss +4 -48
  35. data/app/assets/stylesheets/arclight/modules/search_form.scss +9 -0
  36. data/app/assets/stylesheets/arclight/modules/search_results.scss +95 -45
  37. data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
  38. data/app/assets/stylesheets/arclight/modules/truncator.scss +58 -0
  39. data/app/assets/stylesheets/arclight/variables.scss +7 -4
  40. data/app/components/arclight/access_component.html.erb +14 -0
  41. data/app/components/arclight/access_component.rb +25 -0
  42. data/app/components/arclight/bookmark_component.html.erb +25 -0
  43. data/app/components/arclight/bookmark_component.rb +9 -0
  44. data/app/components/arclight/breadcrumb_component.rb +50 -0
  45. data/app/components/arclight/breadcrumbs_hierarchy_component.html.erb +34 -0
  46. data/app/components/arclight/breadcrumbs_hierarchy_component.rb +25 -0
  47. data/app/components/arclight/collection_context_component.html.erb +12 -0
  48. data/app/components/arclight/collection_context_component.rb +27 -0
  49. data/app/components/arclight/collection_info_component.html.erb +28 -0
  50. data/app/components/arclight/collection_info_component.rb +26 -0
  51. data/app/components/arclight/collection_sidebar_component.html.erb +15 -0
  52. data/app/components/arclight/collection_sidebar_component.rb +39 -0
  53. data/app/{views/catalog/_search_results_repository.html.erb → components/arclight/constraints_component.html.erb} +2 -1
  54. data/app/components/arclight/constraints_component.rb +17 -0
  55. data/app/components/arclight/document_collection_context_component.html.erb +29 -0
  56. data/app/components/arclight/document_collection_context_component.rb +28 -0
  57. data/app/components/arclight/document_collection_hierarchy_component.html.erb +50 -0
  58. data/app/components/arclight/document_collection_hierarchy_component.rb +62 -0
  59. data/app/components/arclight/document_component.html.erb +39 -0
  60. data/app/components/arclight/document_component.rb +49 -0
  61. data/app/components/arclight/document_components_hierarchy_component.html.erb +20 -0
  62. data/app/components/arclight/document_components_hierarchy_component.rb +34 -0
  63. data/app/components/arclight/document_download_component.html.erb +24 -0
  64. data/app/components/arclight/document_download_component.rb +71 -0
  65. data/app/components/arclight/embed_component.html.erb +10 -0
  66. data/app/components/arclight/embed_component.rb +43 -0
  67. data/app/components/arclight/expand_hierarchy_button_component.html.erb +5 -0
  68. data/app/components/arclight/expand_hierarchy_button_component.rb +16 -0
  69. data/app/components/arclight/group_component.html.erb +34 -0
  70. data/app/components/arclight/group_component.rb +23 -0
  71. data/app/components/arclight/header_component.html.erb +5 -0
  72. data/app/components/arclight/header_component.rb +10 -0
  73. data/app/components/arclight/index_metadata_field_component.html.erb +16 -0
  74. data/app/components/arclight/index_metadata_field_component.rb +20 -0
  75. data/app/components/arclight/masthead_component.html.erb +17 -0
  76. data/app/components/arclight/masthead_component.rb +10 -0
  77. data/app/components/arclight/metadata_section_component.html.erb +13 -0
  78. data/app/components/arclight/metadata_section_component.rb +22 -0
  79. data/app/components/arclight/oembed_viewer_component.html.erb +5 -0
  80. data/app/components/arclight/oembed_viewer_component.rb +16 -0
  81. data/app/components/arclight/online_content_filter_component.html.erb +15 -0
  82. data/app/components/arclight/online_content_filter_component.rb +17 -0
  83. data/app/components/arclight/online_status_indicator_component.rb +19 -0
  84. data/app/components/arclight/repository_breadcrumb_component.html.erb +10 -0
  85. data/app/components/arclight/repository_breadcrumb_component.rb +17 -0
  86. data/app/components/arclight/repository_location_component.html.erb +20 -0
  87. data/app/components/arclight/repository_location_component.rb +10 -0
  88. data/app/components/arclight/search_bar_component.html.erb +27 -0
  89. data/app/components/arclight/search_bar_component.rb +32 -0
  90. data/app/components/arclight/search_result_breadcrumbs_component.html.erb +6 -0
  91. data/app/components/arclight/search_result_breadcrumbs_component.rb +37 -0
  92. data/app/components/arclight/search_result_component.html.erb +20 -0
  93. data/app/components/arclight/search_result_component.rb +18 -0
  94. data/app/components/arclight/search_result_title_component.html.erb +15 -0
  95. data/app/components/arclight/search_result_title_component.rb +15 -0
  96. data/app/components/arclight/sidebar_component.html.erb +9 -0
  97. data/app/components/arclight/sidebar_component.rb +19 -0
  98. data/app/components/arclight/upper_metadata_layout_component.rb +10 -0
  99. data/app/components/blacklight/icons/bookmark_component.rb +12 -0
  100. data/app/components/blacklight/icons/collection_component.rb +14 -0
  101. data/app/components/blacklight/icons/compact_component.rb +12 -0
  102. data/app/components/blacklight/icons/container_component.rb +14 -0
  103. data/app/components/blacklight/icons/ead_component.rb +12 -0
  104. data/app/components/blacklight/icons/file_component.rb +14 -0
  105. data/app/components/blacklight/icons/folder_component.rb +12 -0
  106. data/app/components/blacklight/icons/online_component.rb +15 -0
  107. data/app/components/blacklight/icons/pdf_component.rb +12 -0
  108. data/app/components/blacklight/icons/repository_component.rb +12 -0
  109. data/app/controllers/arclight/repositories_controller.rb +4 -4
  110. data/app/{controllers/concerns → helpers}/arclight/ead_format_helpers.rb +91 -7
  111. data/app/helpers/arclight/field_config_helpers.rb +26 -0
  112. data/app/helpers/arclight_helper.rb +24 -251
  113. data/app/models/arclight/document_downloads.rb +12 -15
  114. data/app/models/arclight/parent.rb +6 -8
  115. data/app/models/arclight/parents.rb +7 -4
  116. data/app/models/arclight/requests/aeon_external_request.rb +1 -1
  117. data/app/models/arclight/requests/aeon_web_ead.rb +8 -3
  118. data/app/models/arclight/requests/google_form.rb +8 -3
  119. data/app/models/concerns/arclight/catalog.rb +25 -15
  120. data/app/models/concerns/arclight/search_behavior.rb +12 -26
  121. data/app/models/concerns/arclight/solr_document.rb +80 -73
  122. data/app/presenters/arclight/show_presenter.rb +34 -7
  123. data/app/views/arclight/_requests.html.erb +2 -2
  124. data/app/views/arclight/repositories/_repository.html.erb +21 -40
  125. data/app/views/arclight/repositories/index.html.erb +3 -1
  126. data/app/views/arclight/repositories/show.html.erb +4 -6
  127. data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +4 -5
  128. data/app/views/arclight/requests/_aeon_web_ead.html.erb +3 -4
  129. data/app/views/arclight/requests/_google_form.html.erb +4 -6
  130. data/app/views/catalog/_document_list.html.erb +8 -0
  131. data/app/views/catalog/_group.html.erb +2 -19
  132. data/app/views/catalog/_group_toggle.html.erb +1 -1
  133. data/app/views/catalog/_search_results_header.html.erb +3 -0
  134. data/app/views/catalog/hierarchy.html.erb +19 -0
  135. data/app/views/catalog/index.html.erb +16 -7
  136. data/app/views/shared/_breadcrumbs.html.erb +2 -14
  137. data/app/views/shared/_main_menu_links.html.erb +1 -1
  138. data/arclight.gemspec +17 -15
  139. data/config/breadcrumbs.rb +24 -0
  140. data/config/i18n-tasks.yml +9 -8
  141. data/config/importmap.rb +3 -0
  142. data/config/locales/arclight.en.yml +31 -30
  143. data/config/routes.rb +1 -1
  144. data/docker-compose.yml +16 -0
  145. data/lib/arclight/digital_object.rb +2 -1
  146. data/lib/arclight/engine.rb +18 -37
  147. data/lib/arclight/exceptions.rb +1 -0
  148. data/lib/arclight/hash_absolute_xpath.rb +2 -1
  149. data/lib/arclight/normalized_date.rb +5 -10
  150. data/lib/arclight/normalized_id.rb +6 -2
  151. data/lib/arclight/normalized_title.rb +2 -0
  152. data/lib/arclight/repository.rb +46 -57
  153. data/lib/arclight/routes/hierarchy.rb +19 -0
  154. data/lib/arclight/routes.rb +8 -0
  155. data/lib/arclight/traject/ead2_component_config.rb +335 -0
  156. data/lib/arclight/traject/ead2_config.rb +120 -298
  157. data/lib/arclight/version.rb +1 -1
  158. data/lib/arclight/year_range.rb +4 -3
  159. data/lib/arclight.rb +6 -1
  160. data/lib/generators/arclight/install_generator.rb +97 -11
  161. data/lib/generators/arclight/templates/arclight.scss +6 -3
  162. data/lib/generators/arclight/templates/catalog_controller.rb +193 -163
  163. data/lib/generators/arclight/templates/config/locales/arclight.en.yml +61 -0
  164. data/lib/generators/arclight/templates/config/repositories.yml +22 -29
  165. data/lib/tasks/index.rake +14 -17
  166. data/package.json +13 -14
  167. data/solr/conf/schema.xml +49 -39
  168. data/solr/conf/solrconfig.xml +78 -58
  169. data/tasks/arclight.rake +17 -9
  170. data/template.rb +6 -7
  171. metadata +159 -127
  172. data/.babelrc +0 -3
  173. data/.travis.yml +0 -28
  174. data/app/assets/javascripts/arclight/collection_navigation.js +0 -100
  175. data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
  176. data/app/assets/javascripts/arclight/context_navigation.js +0 -374
  177. data/app/assets/javascripts/arclight/oembed_viewer.js +0 -46
  178. data/app/assets/javascripts/arclight/truncator.js.erb +0 -29
  179. data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -26
  180. data/app/assets/stylesheets/arclight/modules/context_navigation.scss +0 -75
  181. data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -102
  182. data/app/factories/blacklight_field_configuration_factory.rb +0 -30
  183. data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
  184. data/app/views/arclight/repositories/_repository_contact.html.erb +0 -9
  185. data/app/views/arclight/viewers/_oembed.html.erb +0 -8
  186. data/app/views/catalog/_access_contents.html.erb +0 -15
  187. data/app/views/catalog/_arclight_abstract_or_scope.html.erb +0 -5
  188. data/app/views/catalog/_arclight_bookmark_control.html.erb +0 -38
  189. data/app/views/catalog/_arclight_document_header_icon.html.erb +0 -1
  190. data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
  191. data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
  192. data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
  193. data/app/views/catalog/_arclight_index_compact_default.html.erb +0 -22
  194. data/app/views/catalog/_arclight_index_default.html.erb +0 -45
  195. data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +0 -19
  196. data/app/views/catalog/_arclight_index_group_document_default.html.erb +0 -18
  197. data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -3
  198. data/app/views/catalog/_arclight_rangelimit.html.erb +0 -24
  199. data/app/views/catalog/_arclight_viewer_default.html.erb +0 -1
  200. data/app/views/catalog/_collection_contents.html.erb +0 -4
  201. data/app/views/catalog/_collection_context.html.erb +0 -15
  202. data/app/views/catalog/_collection_context_nav.html.erb +0 -12
  203. data/app/views/catalog/_collection_online_contents.html.erb +0 -17
  204. data/app/views/catalog/_component_context.html.erb +0 -5
  205. data/app/views/catalog/_containers.html.erb +0 -3
  206. data/app/views/catalog/_context_card.html.erb +0 -27
  207. data/app/views/catalog/_context_sidebar.html.erb +0 -8
  208. data/app/views/catalog/_custom_metadata.html.erb +0 -16
  209. data/app/views/catalog/_document_downloads.html.erb +0 -14
  210. data/app/views/catalog/_group_header_compact_default.html.erb +0 -15
  211. data/app/views/catalog/_group_header_default.html.erb +0 -20
  212. data/app/views/catalog/_home.html.erb +0 -1
  213. data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -6
  214. data/app/views/catalog/_index_collection_context_default.html.erb +0 -53
  215. data/app/views/catalog/_index_default.html.erb +0 -17
  216. data/app/views/catalog/_index_header.html.erb +0 -7
  217. data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
  218. data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
  219. data/app/views/catalog/_online_content_label.html.erb +0 -5
  220. data/app/views/catalog/_search_form.html.erb +0 -34
  221. data/app/views/catalog/_search_results.html.erb +0 -28
  222. data/app/views/catalog/_show_actions_box_default.html.erb +0 -27
  223. data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -6
  224. data/app/views/catalog/_show_collection.html.erb +0 -66
  225. data/app/views/catalog/_show_default.html.erb +0 -70
  226. data/app/views/catalog/_show_upper_metadata_collection.html.erb +0 -1
  227. data/app/views/catalog/_show_upper_metadata_default.html.erb +0 -14
  228. data/app/views/catalog/_sort_and_per_page.html.erb +0 -8
  229. data/app/views/catalog/_within_collection_dropdown.html.erb +0 -26
  230. data/app/views/layouts/catalog_result.html.erb +0 -7
  231. data/app/views/shared/_context_sidebar.html.erb +0 -8
  232. data/app/views/shared/_header_navbar.html.erb +0 -61
  233. data/app/views/shared/_show_breadcrumbs.html.erb +0 -27
  234. data/lib/arclight/viewer.rb +0 -45
  235. data/lib/arclight/viewers/oembed.rb +0 -57
  236. data/lib/generators/arclight/templates/arclight.js +0 -2
  237. data/solr/conf/scripts.conf +0 -24
  238. data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
  239. data/vendor/assets/javascripts/stickyfill.js +0 -480
  240. /data/app/assets/images/{blacklight → arclight}/logo.png +0 -0
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Blacklight controller that handles searches and document requests
3
4
  class CatalogController < ApplicationController
4
5
  include Blacklight::Catalog
5
6
  include Arclight::Catalog
6
- include Arclight::FieldConfigHelpers
7
7
 
8
8
  configure_blacklight do |config|
9
9
  ## Class for sending and receiving requests from a search index
@@ -17,49 +17,101 @@ class CatalogController < ApplicationController
17
17
 
18
18
  ## Default parameters to send to solr for all search-like requests. See also SearchBuilder#processed_parameters
19
19
  config.default_solr_params = {
20
- rows: 10
20
+ rows: 10,
21
+ fl: '*,collection:[subquery]',
22
+ 'collection.q': '{!terms f=id v=$row._root_}',
23
+ 'collection.defType': 'lucene',
24
+ 'collection.fl': '*',
25
+ 'collection.rows': 1
21
26
  }
22
27
 
28
+ # Sets the indexed Solr field that will display with highlighted matches
29
+ config.highlight_field = 'text'
30
+
23
31
  # solr path which will be added to solr base url before the other solr params.
24
32
  # config.solr_path = 'select'
25
33
 
26
34
  # items to show per page, each number in the array represent another option to choose from.
27
35
  # config.per_page = [10,20,50,100]
28
36
 
29
- ## Default parameters to send on single-document requests to Solr. These settings are the Blacklight defaults (see SearchHelper#solr_doc_params) or
37
+ ## Default parameters to send on single-document requests to Solr.
38
+ ## These settings are the Blacklight defaults (see SearchHelper#solr_doc_params) or
30
39
  ## parameters included in the Blacklight-jetty document requestHandler.
31
40
  #
32
- # config.default_document_solr_params = {
33
- # qt: 'document',
34
- # ## These are hard-coded in the blacklight 'document' requestHandler
35
- # # fl: '*',
36
- # # rows: 1,
37
- # # q: '{!term f=id v=$id}'
38
- # }
41
+ config.default_document_solr_params = {
42
+ qt: 'document',
43
+ fl: '*,collection:[subquery]',
44
+ 'collection.q': '{!terms f=id v=$row._root_}',
45
+ 'collection.defType': 'lucene',
46
+ 'collection.fl': '*',
47
+ 'collection.rows': 1
48
+ }
49
+
50
+ config.header_component = Arclight::HeaderComponent
51
+ config.add_results_document_tool(:online, component: Arclight::OnlineStatusIndicatorComponent)
52
+ config.add_results_document_tool(:arclight_bookmark_control, component: Arclight::BookmarkComponent)
53
+
54
+ config.add_results_collection_tool(:group_toggle)
55
+ config.add_results_collection_tool(:sort_widget)
56
+ config.add_results_collection_tool(:per_page_widget)
57
+ config.add_results_collection_tool(:view_type_group)
58
+
59
+ config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?)
60
+ config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
39
61
 
40
62
  # solr field configuration for search results/index views
63
+ config.index.partials = %i[arclight_index_default]
41
64
  config.index.title_field = 'normalized_title_ssm'
42
65
  config.index.display_type_field = 'level_ssm'
66
+ config.index.document_component = Arclight::SearchResultComponent
67
+ config.index.group_component = Arclight::GroupComponent
68
+ config.index.constraints_component = Arclight::ConstraintsComponent
69
+ config.index.document_presenter_class = Arclight::IndexPresenter
70
+ config.index.search_bar_component = Arclight::SearchBarComponent
43
71
  # config.index.thumbnail_field = 'thumbnail_path_ss'
44
72
 
45
73
  # solr field configuration for document/show views
46
74
  # config.show.title_field = 'title_display'
75
+ config.show.document_component = Arclight::DocumentComponent
76
+ config.show.sidebar_component = Arclight::SidebarComponent
77
+ config.show.breadcrumb_component = Arclight::BreadcrumbsHierarchyComponent
78
+ config.show.embed_component = Arclight::EmbedComponent
79
+ config.show.access_component = Arclight::AccessComponent
80
+ config.show.online_status_component = Arclight::OnlineStatusIndicatorComponent
81
+ config.show.expand_hierarchy_component = Arclight::ExpandHierarchyButtonComponent
47
82
  config.show.display_type_field = 'level_ssm'
48
83
  # config.show.thumbnail_field = 'thumbnail_path_ss'
84
+ config.show.document_presenter_class = Arclight::ShowPresenter
85
+ config.show.metadata_partials = %i[
86
+ summary_field
87
+ background_field
88
+ related_field
89
+ indexed_terms_field
90
+ access_field
91
+ ]
49
92
 
50
- config.add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
93
+ config.show.collection_access_items = %i[
94
+ terms_field
95
+ cite_field
96
+ in_person_field
97
+ contact_field
98
+ ]
51
99
 
52
- config.add_results_collection_tool(:sort_widget)
53
- config.add_results_collection_tool(:per_page_widget)
54
- config.add_results_collection_tool(:view_type_group)
100
+ config.show.component_metadata_partials = %i[
101
+ component_field
102
+ component_indexed_terms_field
103
+ ]
55
104
 
56
- config.add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
57
- config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params)
58
- config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params)
59
- config.add_show_tools_partial(:citation)
105
+ config.show.component_access_items = %i[
106
+ component_terms_field
107
+ cite_field
108
+ in_person_field
109
+ contact_field
110
+ ]
60
111
 
61
- config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?)
62
- config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
112
+ ##
113
+ # Compact index view
114
+ config.view.compact!
63
115
 
64
116
  # solr fields that will be treated as facets by the blacklight application
65
117
  # The ordering of the field names is the order of the display
@@ -82,19 +134,19 @@ class CatalogController < ApplicationController
82
134
  # facet bar
83
135
  #
84
136
  # set :index_range to true if you want the facet pagination view to have facet prefix-based navigation
85
- # (useful when user clicks "more" on a large facet and wants to navigate alphabetically across a large set of results)
86
- # :index_range can be an array or range of prefixes that will be used to create the navigation (note: It is case sensitive when searching values)
87
-
88
- config.add_facet_field 'collection_sim', label: 'Collection', limit: 10
89
- config.add_facet_field 'creator_ssim', label: 'Creator', limit: 10
90
- config.add_facet_field 'creators_ssim', label: 'Creator', show: false
91
- config.add_facet_field 'date_range_sim', label: 'Date range', range: true
92
- config.add_facet_field 'level_sim', label: 'Level', limit: 10
93
- config.add_facet_field 'names_ssim', label: 'Names', limit: 10
94
- config.add_facet_field 'repository_sim', label: 'Repository', limit: 10
95
- config.add_facet_field 'geogname_sim', label: 'Place', limit: 10
96
- config.add_facet_field 'places_ssim', label: 'Places', show: false
97
- config.add_facet_field 'access_subjects_ssim', label: 'Subject', limit: 10
137
+ # (useful when user clicks "more" on a large facet and wants to navigate alphabetically
138
+ # across a large set of results)
139
+ # :index_range can be an array or range of prefixes that will be used to create the navigation
140
+ # (note: It is case sensitive when searching values)
141
+
142
+ config.add_facet_field 'collection', field: 'collection_ssim', limit: 10
143
+ config.add_facet_field 'creators', field: 'creator_ssim', limit: 10
144
+ config.add_facet_field 'date_range', field: 'date_range_isim', range: true
145
+ config.add_facet_field 'level', field: 'level_ssim', limit: 10
146
+ config.add_facet_field 'names', field: 'names_ssim', limit: 10
147
+ config.add_facet_field 'repository', field: 'repository_ssim', limit: 10
148
+ config.add_facet_field 'places', field: 'geogname_ssim', limit: 10
149
+ config.add_facet_field 'access_subjects', field: 'access_subjects_ssim', limit: 10
98
150
 
99
151
  # Have BL send all facet field names to Solr, which has been the default
100
152
  # previously. Simply remove these lines if you'd rather use Solr request
@@ -103,18 +155,16 @@ class CatalogController < ApplicationController
103
155
 
104
156
  # solr fields to be displayed in the index (search results) view
105
157
  # The ordering of the field names is the order of the display
106
- config.add_index_field 'unitid_ssm', label: 'Unit ID'
107
- config.add_index_field 'repository_ssm', label: 'Repository'
108
- config.add_index_field 'normalized_date_ssm', label: 'Date'
109
- config.add_index_field 'creator_ssm', label: 'Creator'
110
- config.add_index_field 'language_ssm', label: 'Language'
111
- config.add_index_field 'scopecontent_ssm', label: 'Scope Content', helper_method: :render_html_tags
112
- config.add_index_field 'extent_ssm', label: 'Physical Description'
113
- config.add_index_field 'accessrestrict_ssm', label: 'Conditions Governing Access', helper_method: :render_html_tags
114
- config.add_index_field 'collection_ssm', label: 'Collection Title'
115
- config.add_index_field 'geogname_ssm', label: 'Place'
116
-
117
- config.add_facet_field 'has_online_content_ssim', label: 'Access', query: {
158
+ config.add_index_field 'highlight', accessor: 'highlights', separator_options: {
159
+ words_connector: '<br/>',
160
+ two_words_connector: '<br/>',
161
+ last_word_connector: '<br/>'
162
+ }, compact: true, component: Arclight::IndexMetadataFieldComponent
163
+ config.add_index_field 'creator', accessor: true, component: Arclight::IndexMetadataFieldComponent
164
+ config.add_index_field 'abstract_or_scope', accessor: true, truncate: true, repository_context: true, helper_method: :render_html_tags, component: Arclight::IndexMetadataFieldComponent
165
+ config.add_index_field 'breadcrumbs', accessor: :itself, component: Arclight::SearchResultBreadcrumbsComponent, compact: { count: 2 }
166
+
167
+ config.add_facet_field 'access', query: {
118
168
  online: { label: 'Online access', fq: 'has_online_content_ssim:true' }
119
169
  }
120
170
 
@@ -145,7 +195,7 @@ class CatalogController < ApplicationController
145
195
  config.add_search_field 'within_collection' do |field|
146
196
  field.include_in_simple_select = false
147
197
  field.solr_parameters = {
148
- fq: '-level_sim:Collection'
198
+ fq: '-level_ssim:Collection'
149
199
  }
150
200
  end
151
201
 
@@ -182,6 +232,24 @@ class CatalogController < ApplicationController
182
232
  pf: '${pf_title}'
183
233
  }
184
234
  end
235
+ config.add_search_field 'container', label: 'Container' do |field|
236
+ field.qt = 'search'
237
+ field.solr_parameters = {
238
+ qf: '${qf_container}',
239
+ pf: '${pf_container}'
240
+ }
241
+ end
242
+ config.add_search_field 'identifier', label: 'Identifier' do |field|
243
+ field.qt = 'search'
244
+ field.solr_parameters = {
245
+ qf: '${qf_identifier}',
246
+ pf: '${pf_identifier}'
247
+ }
248
+ end
249
+
250
+ # These are the parameters passed through in search_state.params_for_search
251
+ config.search_state_fields += %i[id group hierarchy_context original_document]
252
+ config.search_state_fields << { original_parents: [] }
185
253
 
186
254
  # "sort results by" select (pulldown)
187
255
  # label in pulldown is followed by the name of the SOLR field to sort by and
@@ -203,191 +271,153 @@ class CatalogController < ApplicationController
203
271
  config.autocomplete_enabled = true
204
272
  config.autocomplete_path = 'suggest'
205
273
 
206
- ##
207
- # Arclight Configurations
208
-
209
- config.show.document_presenter_class = Arclight::ShowPresenter
210
- config.index.document_presenter_class = Arclight::IndexPresenter
211
-
212
- ##
213
- # Configuration for partials
214
- config.index.partials = %i[arclight_index_default]
215
-
216
- ##
217
- # Configuration for index actions
218
- config.index.document_actions << :containers
219
- config.index.document_actions << :online_content_label
220
- config.add_results_document_tool :arclight_bookmark_control, partial: 'arclight_bookmark_control'
221
- config.index.document_actions.delete(:bookmark)
222
-
223
- config.show.metadata_partials = %i[
224
- summary_field
225
- access_field
226
- background_field
227
- related_field
228
- indexed_terms_field
229
- ]
230
-
231
- config.show.context_access_tab_items = %i[
232
- terms_field
233
- cite_field
234
- in_person_field
235
- contact_field
236
- ]
237
-
238
- config.show.component_metadata_partials = %i[
239
- component_field
240
- component_indexed_terms_field
241
- ]
242
-
243
- config.show.component_access_tab_items = %i[
244
- component_terms_field
245
- cite_field
246
- in_person_field
247
- contact_field
248
- ]
249
274
 
250
275
  # ===========================
251
276
  # COLLECTION SHOW PAGE FIELDS
252
277
  # ===========================
253
278
 
254
279
  # Collection Show Page - Summary Section
255
- config.add_summary_field 'creators_ssim', label: 'Creator', link_to_facet: true
256
- config.add_summary_field 'abstract_ssm', label: 'Abstract', helper_method: :render_html_tags
257
- config.add_summary_field 'extent_ssm', label: 'Extent'
258
- config.add_summary_field 'language_ssm', label: 'Language'
259
- config.add_summary_field 'prefercite_ssm', label: 'Preferred citation', helper_method: :render_html_tags
280
+ config.add_summary_field 'creators', field: 'creator_ssim', link_to_facet: true
281
+ config.add_summary_field 'abstract', field: 'abstract_html_tesm', helper_method: :render_html_tags
282
+ config.add_summary_field 'extent', field: 'extent_ssm'
283
+ config.add_summary_field 'language', field: 'language_ssim'
284
+ config.add_summary_field 'prefercite', field: 'prefercite_html_tesm', helper_method: :render_html_tags
260
285
 
261
286
  # Collection Show Page - Background Section
262
- config.add_background_field 'scopecontent_ssm', label: 'Scope and Content', helper_method: :render_html_tags
263
- config.add_background_field 'bioghist_ssm', label: 'Biographical / Historical', helper_method: :render_html_tags
264
- config.add_background_field 'acqinfo_ssim', label: 'Acquisition information', helper_method: :render_html_tags
265
- config.add_background_field 'appraisal_ssm', label: 'Appraisal information', helper_method: :render_html_tags
266
- config.add_background_field 'custodhist_ssm', label: 'Custodial history', helper_method: :render_html_tags
267
- config.add_background_field 'processinfo_ssm', label: 'Processing information', helper_method: :render_html_tags
268
- config.add_background_field 'arrangement_ssm', label: 'Arrangement', helper_method: :render_html_tags
269
- config.add_background_field 'accruals_ssm', label: 'Accruals', helper_method: :render_html_tags
270
- config.add_background_field 'phystech_ssm', label: 'Physical / technical requirements', helper_method: :render_html_tags
271
- config.add_background_field 'physloc_ssm', label: 'Physical location', helper_method: :render_html_tags
272
- config.add_background_field 'descrules_ssm', label: 'Rules or conventions', helper_method: :render_html_tags
287
+ config.add_background_field 'scopecontent', field: 'scopecontent_html_tesm', helper_method: :render_html_tags
288
+ config.add_background_field 'bioghist', field: 'bioghist_html_tesm', helper_method: :render_html_tags
289
+ config.add_background_field 'acqinfo', field: 'acqinfo_ssim', helper_method: :render_html_tags
290
+ config.add_background_field 'appraisal', field: 'appraisal_html_tesm', helper_method: :render_html_tags
291
+ config.add_background_field 'custodhist', field: 'custodhist_html_tesm', helper_method: :render_html_tags
292
+ config.add_background_field 'processinfo', field: 'processinfo_html_tesm', helper_method: :render_html_tags
293
+ config.add_background_field 'arrangement', field: 'arrangement_html_tesm', helper_method: :render_html_tags
294
+ config.add_background_field 'accruals', field: 'accruals_html_tesm', helper_method: :render_html_tags
295
+ config.add_background_field 'phystech', field: 'phystech_html_tesm', helper_method: :render_html_tags
296
+ config.add_background_field 'physloc', field: 'physloc_html_tesm', helper_method: :render_html_tags
297
+ config.add_background_field 'physdesc', field: 'physdesc_tesim', helper_method: :render_html_tags
298
+ config.add_background_field 'physfacet', field: 'physfacet_tesim', helper_method: :render_html_tags
299
+ config.add_background_field 'dimensions', field: 'dimensions_tesim', helper_method: :render_html_tags
300
+ config.add_background_field 'materialspec', field: 'materialspec_html_tesm', helper_method: :render_html_tags
301
+ config.add_background_field 'fileplan', field: 'fileplan_html_tesm', helper_method: :render_html_tags
302
+ config.add_background_field 'descrules', field: 'descrules_ssm', helper_method: :render_html_tags
303
+ config.add_background_field 'note', field: 'note_html_tesm', helper_method: :render_html_tags
273
304
 
274
305
  # Collection Show Page - Related Section
275
- config.add_related_field 'relatedmaterial_ssm', label: 'Related material', helper_method: :render_html_tags
276
- config.add_related_field 'separatedmaterial_ssm', label: 'Separated material', helper_method: :render_html_tags
277
- config.add_related_field 'otherfindaid_ssm', label: 'Other finding aids', helper_method: :render_html_tags
278
- config.add_related_field 'altformavail_ssm', label: 'Alternative form available', helper_method: :render_html_tags
279
- config.add_related_field 'originalsloc_ssm', label: 'Location of originals', helper_method: :render_html_tags
306
+ config.add_related_field 'relatedmaterial', field: 'relatedmaterial_html_tesm', helper_method: :render_html_tags
307
+ config.add_related_field 'separatedmaterial', field: 'separatedmaterial_html_tesm', helper_method: :render_html_tags
308
+ config.add_related_field 'otherfindaid', field: 'otherfindaid_html_tesm', helper_method: :render_html_tags
309
+ config.add_related_field 'altformavail', field: 'altformavail_html_tesm', helper_method: :render_html_tags
310
+ config.add_related_field 'originalsloc', field: 'originalsloc_html_tesm', helper_method: :render_html_tags
311
+ config.add_related_field 'odd', field: 'odd_html_tesm', helper_method: :render_html_tags
280
312
 
281
313
  # Collection Show Page - Indexed Terms Section
282
- config.add_indexed_terms_field 'access_subjects_ssim', label: 'Subjects', link_to_facet: true, separator_options: {
314
+ config.add_indexed_terms_field 'access_subjects', field: 'access_subjects_ssim', link_to_facet: true, separator_options: {
283
315
  words_connector: '<br/>',
284
316
  two_words_connector: '<br/>',
285
317
  last_word_connector: '<br/>'
286
318
  }
287
319
 
288
- config.add_indexed_terms_field 'names_coll_ssim', label: 'Names', separator_options: {
320
+ config.add_indexed_terms_field 'names_coll', field: 'names_coll_ssim', separator_options: {
289
321
  words_connector: '<br/>',
290
322
  two_words_connector: '<br/>',
291
323
  last_word_connector: '<br/>'
292
324
  }, helper_method: :link_to_name_facet
293
325
 
294
- config.add_indexed_terms_field 'places_ssim', label: 'Places', link_to_facet: true, separator_options: {
326
+ config.add_indexed_terms_field 'places', field: 'places_ssim', link_to_facet: true, separator_options: {
295
327
  words_connector: '<br/>',
296
328
  two_words_connector: '<br/>',
297
329
  last_word_connector: '<br/>'
298
330
  }
299
331
 
332
+ config.add_indexed_terms_field 'indexes', field: 'indexes_html_tesm',
333
+ helper_method: :render_html_tags
334
+
300
335
  # ==========================
301
336
  # COMPONENT SHOW PAGE FIELDS
302
337
  # ==========================
303
338
 
304
339
  # Component Show Page - Metadata Section
305
- config.add_component_field 'containers', label: 'Containers', accessor: 'containers', separator_options: {
340
+ config.add_component_field 'containers', accessor: 'containers', separator_options: {
306
341
  words_connector: ', ',
307
342
  two_words_connector: ', ',
308
343
  last_word_connector: ', '
309
344
  }, if: lambda { |_context, _field_config, document|
310
345
  document.containers.present?
311
346
  }
312
- config.add_component_field 'abstract_ssm', label: 'Abstract', helper_method: :render_html_tags
313
- config.add_component_field 'extent_ssm', label: 'Extent'
314
- config.add_component_field 'scopecontent_ssm', label: 'Scope and Content', helper_method: :render_html_tags
315
- config.add_component_field 'acqinfo_ssim', label: 'Acquisition information', helper_method: :render_html_tags
316
- config.add_component_field 'appraisal_ssm', label: 'Appraisal information', helper_method: :render_html_tags
317
- config.add_component_field 'custodhist_ssm', label: 'Custodial history', helper_method: :render_html_tags
318
- config.add_component_field 'processinfo_ssm', label: 'Processing information', helper_method: :render_html_tags
319
- config.add_component_field 'arrangement_ssm', label: 'Arrangement', helper_method: :render_html_tags
320
- config.add_component_field 'accruals_ssm', label: 'Accruals', helper_method: :render_html_tags
321
- config.add_component_field 'phystech_ssm', label: 'Physical / technical requirements', helper_method: :render_html_tags
322
- config.add_component_field 'physloc_ssm', label: 'Physical location', helper_method: :render_html_tags
347
+ config.add_component_field 'creators', field: 'creator_ssim', link_to_facet: true
348
+ config.add_component_field 'abstract', field: 'abstract_html_tesm', helper_method: :render_html_tags
349
+ config.add_component_field 'extent', field: 'extent_ssm'
350
+ config.add_component_field 'scopecontent', field: 'scopecontent_html_tesm', helper_method: :render_html_tags
351
+ config.add_component_field 'language', field: 'language_ssim'
352
+ config.add_component_field 'acqinfo', field: 'acqinfo_ssim', helper_method: :render_html_tags
353
+ config.add_component_field 'bioghist', field: 'bioghist_html_tesm', helper_method: :render_html_tags
354
+ config.add_component_field 'appraisal', field: 'appraisal_html_tesm', helper_method: :render_html_tags
355
+ config.add_component_field 'custodhist', field: 'custodhist_html_tesm', helper_method: :render_html_tags
356
+ config.add_component_field 'processinfo', field: 'processinfo_html_tesm', helper_method: :render_html_tags
357
+ config.add_component_field 'arrangement', field: 'arrangement_html_tesm', helper_method: :render_html_tags
358
+ config.add_component_field 'accruals', field: 'accruals_html_tesm', helper_method: :render_html_tags
359
+ config.add_component_field 'phystech', field: 'phystech_html_tesm', helper_method: :render_html_tags
360
+ config.add_component_field 'materialspec', field: 'materialspec_html_tesm', helper_method: :render_html_tags
361
+ config.add_component_field 'physloc', field: 'physloc_html_tesm', helper_method: :render_html_tags
362
+ config.add_component_field 'physdesc', field: 'physdesc_tesim', helper_method: :render_html_tags
363
+ config.add_component_field 'physfacet', field: 'physfacet_tesim', helper_method: :render_html_tags
364
+ config.add_component_field 'dimensions', field: 'dimensions_tesim', helper_method: :render_html_tags
365
+ config.add_component_field 'fileplan', field: 'fileplan_html_tesm', helper_method: :render_html_tags
366
+ config.add_component_field 'altformavail', field: 'altformavail_html_tesm', helper_method: :render_html_tags
367
+ config.add_component_field 'otherfindaid', field: 'otherfindaid_html_tesm', helper_method: :render_html_tags
368
+ config.add_component_field 'odd', field: 'odd_html_tesm', helper_method: :render_html_tags
369
+ config.add_component_field 'relatedmaterial', field: 'relatedmaterial_html_tesm', helper_method: :render_html_tags
370
+ config.add_component_field 'separatedmaterial', field: 'separatedmaterial_html_tesm', helper_method: :render_html_tags
371
+ config.add_component_field 'originalsloc', field: 'originalsloc_html_tesm', helper_method: :render_html_tags
372
+ config.add_component_field 'note', field: 'note_html_tesm', helper_method: :render_html_tags
323
373
 
324
374
  # Component Show Page - Indexed Terms Section
325
- config.add_component_indexed_terms_field 'access_subjects_ssim', label: 'Subjects', link_to_facet: true, separator_options: {
375
+ config.add_component_indexed_terms_field 'access_subjects', field: 'access_subjects_ssim', link_to_facet: true, separator_options: {
326
376
  words_connector: '<br/>',
327
377
  two_words_connector: '<br/>',
328
378
  last_word_connector: '<br/>'
329
379
  }
330
380
 
331
- config.add_component_indexed_terms_field 'names_ssim', label: 'Names', separator_options: {
381
+ config.add_component_indexed_terms_field 'names', field: 'names_ssim', separator_options: {
332
382
  words_connector: '<br/>',
333
383
  two_words_connector: '<br/>',
334
384
  last_word_connector: '<br/>'
335
385
  }, helper_method: :link_to_name_facet
336
386
 
337
- config.add_component_indexed_terms_field 'places_ssim', label: 'Places', link_to_facet: true, separator_options: {
387
+ config.add_component_indexed_terms_field 'places', field: 'places_ssim', link_to_facet: true, separator_options: {
338
388
  words_connector: '<br/>',
339
389
  two_words_connector: '<br/>',
340
390
  last_word_connector: '<br/>'
341
391
  }
342
392
 
393
+ config.add_component_indexed_terms_field 'indexes', field: 'indexes_html_tesm',
394
+ helper_method: :render_html_tags
395
+
343
396
  # =================
344
397
  # ACCESS TAB FIELDS
345
398
  # =================
346
399
 
347
400
  # Collection Show Page Access Tab - Terms and Conditions Section
348
- config.add_terms_field 'accessrestrict_ssm', label: 'Restrictions', helper_method: :render_html_tags
349
- config.add_terms_field 'userestrict_ssm', label: 'Terms of Access', helper_method: :render_html_tags
401
+ config.add_terms_field 'restrictions', field: 'accessrestrict_html_tesm', helper_method: :render_html_tags
402
+ config.add_terms_field 'terms', field: 'userestrict_html_tesm', helper_method: :render_html_tags
350
403
 
351
404
  # Component Show Page Access Tab - Terms and Condition Section
352
- config.add_component_terms_field 'accessrestrict_ssm', label: 'Restrictions', helper_method: :render_html_tags
353
- config.add_component_terms_field 'userestrict_ssm', label: 'Terms of Access', helper_method: :render_html_tags
354
- config.add_component_terms_field 'parent_access_restrict_ssm', label: 'Parent Restrictions', helper_method: :render_html_tags
355
- config.add_component_terms_field 'parent_access_terms_ssm', label: 'Parent Terms of Access', helper_method: :render_html_tags
405
+ config.add_component_terms_field 'restrictions', field: 'accessrestrict_html_tesm', helper_method: :render_html_tags
406
+ config.add_component_terms_field 'terms', field: 'userestrict_html_tesm', helper_method: :render_html_tags
407
+ config.add_component_terms_field 'parent_restrictions', field: 'parent_access_restrict_tesm', helper_method: :render_html_tags
408
+ config.add_component_terms_field 'parent_terms', field: 'parent_access_terms_tesm', helper_method: :render_html_tags
356
409
 
357
410
  # Collection and Component Show Page Access Tab - In Person Section
358
- config.add_in_person_field 'repository_ssm', if: :repository_config_present, label: 'Location of this collection', helper_method: :context_access_tab_repository
359
- config.add_in_person_field 'id', if: :before_you_visit_note_present, label: 'Before you visit', helper_method: :context_access_tab_visit_note # Using ID because we know it will always exist
411
+ config.add_in_person_field 'repository_location', values: ->(_, document, _) { document.repository_config }, component: Arclight::RepositoryLocationComponent
412
+ config.add_in_person_field 'before_you_visit', values: ->(_, document, _) { document.repository_config&.visit_note }
360
413
 
361
414
  # Collection and Component Show Page Access Tab - How to Cite Section
362
- config.add_cite_field 'prefercite_ssm', label: 'Preferred citation', helper_method: :render_html_tags
415
+ config.add_cite_field 'prefercite', field: 'prefercite_html_tesm', helper_method: :render_html_tags
363
416
 
364
417
  # Collection and Component Show Page Access Tab - Contact Section
365
- config.add_contact_field 'repository_ssm', if: :repository_config_present, label: 'Contact', helper_method: :access_repository_contact
366
-
367
- # Remove unused show document actions
368
- %i[citation email sms].each do |action|
369
- config.view_config(:show).document_actions.delete(action)
370
- end
371
-
372
- # Insert the breadcrumbs at the beginning
373
- config.show.partials.unshift(:show_upper_metadata)
374
- config.show.partials.unshift(:show_breadcrumbs)
375
- config.show.partials.delete(:show_header)
418
+ config.add_contact_field 'repository_contact', values: ->(_, document, _) { document.repository_config&.contact }
376
419
 
377
- ##
378
- # Online Contents Index View
379
- config.view.online_contents
380
- config.view.online_contents.display_control = false
381
-
382
- ##
383
- # Collection Context
384
- config.view.collection_context
385
- config.view.collection_context.display_control = false
386
- config.view.collection_context.partials = %i[index_collection_context]
387
-
388
- ##
389
- # Compact index view
390
- config.view.compact
391
- config.view.compact.partials = %i[arclight_index_compact]
420
+ # Group header values
421
+ config.add_group_header_field 'abstract_or_scope', accessor: true, truncate: true, helper_method: :render_html_tags
392
422
  end
393
423
  end
@@ -0,0 +1,61 @@
1
+ en:
2
+ blacklight:
3
+ search:
4
+ fields:
5
+ abstract: Abstract
6
+ creators: Creator
7
+ extent: Extent
8
+ language: Language
9
+ prefercite: Preferred citation
10
+
11
+ scopecontent: Scope and content
12
+ bioghist: Biographical / historical
13
+ acqinfo: Acquisition information
14
+ appraisal: Appraisal information
15
+ custodhist: Custodial history
16
+ processinfo: Processing information
17
+ arrangement: Arrangement
18
+ accruals: Accruals
19
+ phystech: Physical / technical requirements
20
+ physloc: Physical location
21
+ physdesc: Physical description
22
+ physfacet: Physical facet
23
+ dimensions: Dimensions
24
+ indexes: Indexes
25
+ descrules: Rules or conventions
26
+
27
+ relatedmaterial: Related material
28
+ separatedmaterial: Separated material
29
+ otherfindaid: Other finding aids
30
+ altformavail: Alternative form available
31
+ originalsloc: Location of originals
32
+ materialspec: Material specific details
33
+ fileplan: File plan
34
+ odd: Other descriptive data
35
+ note: Note
36
+
37
+ access_subjects: Subjects
38
+ names_coll: Names
39
+ places: Places
40
+
41
+ containers: Containers
42
+ names: Names
43
+
44
+ restrictions: Restrictions
45
+ terms: Terms of access
46
+ parent_restrictions: Parent restrictions
47
+ parent_terms: Parent terms of access
48
+ repository_location: Location of this collection
49
+ before_you_visit: Before you visit
50
+ repository_contact: Contact
51
+
52
+ facet:
53
+ collection: Collection
54
+ creator: Creator
55
+ date_range: Date range
56
+ level: Level
57
+ names: Names
58
+ repository: Repository
59
+ place: Place
60
+ subject: Subject
61
+ access: Access