arclight 0.4.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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +11 -4
  3. data/.github/workflows/ruby.yml +37 -15
  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 +20 -16
  13. data/app/assets/javascripts/arclight/arclight.js +4 -8
  14. data/app/assets/javascripts/arclight/oembed_controller.js +58 -0
  15. data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
  16. data/app/assets/stylesheets/arclight/application.scss +2 -5
  17. data/app/assets/stylesheets/arclight/build.scss +4 -0
  18. data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +108 -130
  19. data/app/assets/stylesheets/arclight/modules/icons.scss +19 -3
  20. data/app/assets/stylesheets/arclight/modules/layout.scss +129 -99
  21. data/app/assets/stylesheets/arclight/modules/mastheads.scss +23 -96
  22. data/app/assets/stylesheets/arclight/modules/repositories.scss +2 -2
  23. data/app/assets/stylesheets/arclight/modules/repository_card.scss +4 -48
  24. data/app/assets/stylesheets/arclight/modules/search_form.scss +9 -0
  25. data/app/assets/stylesheets/arclight/modules/search_results.scss +95 -45
  26. data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
  27. data/app/assets/stylesheets/arclight/modules/truncator.scss +58 -0
  28. data/app/assets/stylesheets/arclight/variables.scss +7 -4
  29. data/app/components/arclight/access_component.html.erb +14 -0
  30. data/app/components/arclight/access_component.rb +25 -0
  31. data/app/components/arclight/bookmark_component.html.erb +25 -0
  32. data/app/components/arclight/bookmark_component.rb +9 -0
  33. data/app/components/arclight/breadcrumb_component.rb +50 -0
  34. data/app/components/arclight/breadcrumbs_hierarchy_component.html.erb +34 -0
  35. data/app/components/arclight/breadcrumbs_hierarchy_component.rb +25 -0
  36. data/app/components/arclight/collection_context_component.html.erb +12 -0
  37. data/app/components/arclight/collection_context_component.rb +27 -0
  38. data/app/components/arclight/collection_info_component.html.erb +28 -0
  39. data/app/components/arclight/collection_info_component.rb +26 -0
  40. data/app/components/arclight/collection_sidebar_component.html.erb +15 -0
  41. data/app/components/arclight/collection_sidebar_component.rb +39 -0
  42. data/app/{views/catalog/_search_results_repository.html.erb → components/arclight/constraints_component.html.erb} +2 -1
  43. data/app/components/arclight/constraints_component.rb +17 -0
  44. data/app/components/arclight/document_collection_context_component.html.erb +29 -0
  45. data/app/components/arclight/document_collection_context_component.rb +28 -0
  46. data/app/components/arclight/document_collection_hierarchy_component.html.erb +50 -0
  47. data/app/components/arclight/document_collection_hierarchy_component.rb +62 -0
  48. data/app/components/arclight/document_component.html.erb +39 -0
  49. data/app/components/arclight/document_component.rb +49 -0
  50. data/app/components/arclight/document_components_hierarchy_component.html.erb +20 -0
  51. data/app/components/arclight/document_components_hierarchy_component.rb +34 -0
  52. data/app/components/arclight/document_download_component.html.erb +24 -0
  53. data/app/components/arclight/document_download_component.rb +71 -0
  54. data/app/components/arclight/embed_component.html.erb +10 -0
  55. data/app/components/arclight/embed_component.rb +43 -0
  56. data/app/components/arclight/expand_hierarchy_button_component.html.erb +5 -0
  57. data/app/components/arclight/expand_hierarchy_button_component.rb +16 -0
  58. data/app/components/arclight/group_component.html.erb +34 -0
  59. data/app/components/arclight/group_component.rb +23 -0
  60. data/app/components/arclight/header_component.html.erb +5 -0
  61. data/app/components/arclight/header_component.rb +10 -0
  62. data/app/components/arclight/index_metadata_field_component.html.erb +16 -0
  63. data/app/components/arclight/index_metadata_field_component.rb +20 -0
  64. data/app/components/arclight/masthead_component.html.erb +17 -0
  65. data/app/components/arclight/masthead_component.rb +10 -0
  66. data/app/components/arclight/metadata_section_component.html.erb +13 -0
  67. data/app/components/arclight/metadata_section_component.rb +22 -0
  68. data/app/components/arclight/oembed_viewer_component.html.erb +5 -0
  69. data/app/components/arclight/oembed_viewer_component.rb +16 -0
  70. data/app/components/arclight/online_content_filter_component.html.erb +15 -0
  71. data/app/components/arclight/online_content_filter_component.rb +17 -0
  72. data/app/components/arclight/online_status_indicator_component.rb +19 -0
  73. data/app/components/arclight/repository_breadcrumb_component.html.erb +10 -0
  74. data/app/components/arclight/repository_breadcrumb_component.rb +17 -0
  75. data/app/components/arclight/repository_location_component.html.erb +20 -0
  76. data/app/components/arclight/repository_location_component.rb +10 -0
  77. data/app/components/arclight/search_bar_component.html.erb +27 -0
  78. data/app/components/arclight/search_bar_component.rb +32 -0
  79. data/app/components/arclight/search_result_breadcrumbs_component.html.erb +6 -0
  80. data/app/components/arclight/search_result_breadcrumbs_component.rb +37 -0
  81. data/app/components/arclight/search_result_component.html.erb +20 -0
  82. data/app/components/arclight/search_result_component.rb +18 -0
  83. data/app/components/arclight/search_result_title_component.html.erb +15 -0
  84. data/app/components/arclight/search_result_title_component.rb +15 -0
  85. data/app/components/arclight/sidebar_component.html.erb +9 -0
  86. data/app/components/arclight/sidebar_component.rb +19 -0
  87. data/app/components/arclight/upper_metadata_layout_component.rb +10 -0
  88. data/app/components/blacklight/icons/bookmark_component.rb +12 -0
  89. data/app/components/blacklight/icons/collection_component.rb +14 -0
  90. data/app/components/blacklight/icons/compact_component.rb +12 -0
  91. data/app/components/blacklight/icons/container_component.rb +14 -0
  92. data/app/components/blacklight/icons/ead_component.rb +12 -0
  93. data/app/components/blacklight/icons/file_component.rb +14 -0
  94. data/app/components/blacklight/icons/folder_component.rb +12 -0
  95. data/app/components/blacklight/icons/online_component.rb +15 -0
  96. data/app/components/blacklight/icons/pdf_component.rb +12 -0
  97. data/app/components/blacklight/icons/repository_component.rb +12 -0
  98. data/app/controllers/arclight/repositories_controller.rb +4 -4
  99. data/app/{controllers/concerns → helpers}/arclight/ead_format_helpers.rb +91 -7
  100. data/app/helpers/arclight/field_config_helpers.rb +26 -0
  101. data/app/helpers/arclight_helper.rb +24 -251
  102. data/app/models/arclight/document_downloads.rb +12 -15
  103. data/app/models/arclight/parent.rb +6 -8
  104. data/app/models/arclight/parents.rb +7 -4
  105. data/app/models/arclight/requests/aeon_external_request.rb +1 -1
  106. data/app/models/arclight/requests/aeon_web_ead.rb +8 -3
  107. data/app/models/arclight/requests/google_form.rb +8 -3
  108. data/app/models/concerns/arclight/catalog.rb +25 -15
  109. data/app/models/concerns/arclight/search_behavior.rb +12 -26
  110. data/app/models/concerns/arclight/solr_document.rb +80 -73
  111. data/app/presenters/arclight/show_presenter.rb +34 -7
  112. data/app/views/arclight/_requests.html.erb +2 -2
  113. data/app/views/arclight/repositories/_repository.html.erb +21 -40
  114. data/app/views/arclight/repositories/index.html.erb +3 -1
  115. data/app/views/arclight/repositories/show.html.erb +4 -6
  116. data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +4 -5
  117. data/app/views/arclight/requests/_aeon_web_ead.html.erb +3 -4
  118. data/app/views/arclight/requests/_google_form.html.erb +4 -6
  119. data/app/views/catalog/_document_list.html.erb +8 -0
  120. data/app/views/catalog/_group.html.erb +2 -19
  121. data/app/views/catalog/_group_toggle.html.erb +1 -1
  122. data/app/views/catalog/_search_results_header.html.erb +3 -0
  123. data/app/views/catalog/hierarchy.html.erb +19 -0
  124. data/app/views/catalog/index.html.erb +16 -7
  125. data/app/views/shared/_breadcrumbs.html.erb +2 -14
  126. data/app/views/shared/_main_menu_links.html.erb +1 -1
  127. data/arclight.gemspec +16 -14
  128. data/config/breadcrumbs.rb +24 -0
  129. data/config/i18n-tasks.yml +9 -8
  130. data/config/importmap.rb +3 -0
  131. data/config/locales/arclight.en.yml +31 -30
  132. data/config/routes.rb +1 -1
  133. data/docker-compose.yml +16 -0
  134. data/lib/arclight/digital_object.rb +2 -1
  135. data/lib/arclight/engine.rb +18 -37
  136. data/lib/arclight/exceptions.rb +1 -0
  137. data/lib/arclight/hash_absolute_xpath.rb +2 -1
  138. data/lib/arclight/normalized_date.rb +5 -10
  139. data/lib/arclight/normalized_id.rb +6 -2
  140. data/lib/arclight/normalized_title.rb +2 -0
  141. data/lib/arclight/repository.rb +46 -57
  142. data/lib/arclight/routes/hierarchy.rb +19 -0
  143. data/lib/arclight/routes.rb +8 -0
  144. data/lib/arclight/traject/ead2_component_config.rb +335 -0
  145. data/lib/arclight/traject/ead2_config.rb +120 -299
  146. data/lib/arclight/version.rb +1 -1
  147. data/lib/arclight/year_range.rb +4 -3
  148. data/lib/arclight.rb +6 -1
  149. data/lib/generators/arclight/install_generator.rb +94 -21
  150. data/lib/generators/arclight/templates/arclight.scss +6 -3
  151. data/lib/generators/arclight/templates/catalog_controller.rb +193 -165
  152. data/lib/generators/arclight/templates/config/locales/arclight.en.yml +61 -0
  153. data/lib/generators/arclight/templates/config/repositories.yml +22 -29
  154. data/lib/tasks/index.rake +14 -17
  155. data/package.json +13 -14
  156. data/solr/conf/schema.xml +49 -39
  157. data/solr/conf/solrconfig.xml +78 -58
  158. data/tasks/arclight.rake +17 -9
  159. data/template.rb +6 -7
  160. metadata +149 -123
  161. data/.babelrc +0 -3
  162. data/app/assets/javascripts/arclight/collection_navigation.js +0 -100
  163. data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
  164. data/app/assets/javascripts/arclight/context_navigation.js +0 -351
  165. data/app/assets/javascripts/arclight/oembed_viewer.js +0 -46
  166. data/app/assets/javascripts/arclight/truncator.js.erb +0 -29
  167. data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -26
  168. data/app/assets/stylesheets/arclight/modules/context_navigation.scss +0 -75
  169. data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -102
  170. data/app/factories/blacklight_field_configuration_factory.rb +0 -30
  171. data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
  172. data/app/views/arclight/repositories/_repository_contact.html.erb +0 -9
  173. data/app/views/arclight/viewers/_oembed.html.erb +0 -8
  174. data/app/views/catalog/_access_contents.html.erb +0 -15
  175. data/app/views/catalog/_arclight_abstract_or_scope.html.erb +0 -5
  176. data/app/views/catalog/_arclight_bookmark_control.html.erb +0 -38
  177. data/app/views/catalog/_arclight_document_header_icon.html.erb +0 -1
  178. data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
  179. data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
  180. data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
  181. data/app/views/catalog/_arclight_index_compact_default.html.erb +0 -22
  182. data/app/views/catalog/_arclight_index_default.html.erb +0 -45
  183. data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +0 -19
  184. data/app/views/catalog/_arclight_index_group_document_default.html.erb +0 -18
  185. data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -3
  186. data/app/views/catalog/_arclight_rangelimit.html.erb +0 -24
  187. data/app/views/catalog/_arclight_viewer_default.html.erb +0 -1
  188. data/app/views/catalog/_collection_contents.html.erb +0 -4
  189. data/app/views/catalog/_collection_context.html.erb +0 -15
  190. data/app/views/catalog/_collection_context_nav.html.erb +0 -12
  191. data/app/views/catalog/_collection_online_contents.html.erb +0 -17
  192. data/app/views/catalog/_component_context.html.erb +0 -5
  193. data/app/views/catalog/_containers.html.erb +0 -3
  194. data/app/views/catalog/_context_card.html.erb +0 -27
  195. data/app/views/catalog/_context_sidebar.html.erb +0 -8
  196. data/app/views/catalog/_custom_metadata.html.erb +0 -16
  197. data/app/views/catalog/_document_downloads.html.erb +0 -14
  198. data/app/views/catalog/_group_header_compact_default.html.erb +0 -15
  199. data/app/views/catalog/_group_header_default.html.erb +0 -20
  200. data/app/views/catalog/_home.html.erb +0 -1
  201. data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -6
  202. data/app/views/catalog/_index_collection_context_default.html.erb +0 -53
  203. data/app/views/catalog/_index_default.html.erb +0 -17
  204. data/app/views/catalog/_index_header.html.erb +0 -7
  205. data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
  206. data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
  207. data/app/views/catalog/_online_content_label.html.erb +0 -5
  208. data/app/views/catalog/_search_form.html.erb +0 -34
  209. data/app/views/catalog/_search_results.html.erb +0 -28
  210. data/app/views/catalog/_show_actions_box_default.html.erb +0 -27
  211. data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -6
  212. data/app/views/catalog/_show_collection.html.erb +0 -66
  213. data/app/views/catalog/_show_default.html.erb +0 -70
  214. data/app/views/catalog/_show_upper_metadata_collection.html.erb +0 -1
  215. data/app/views/catalog/_show_upper_metadata_default.html.erb +0 -14
  216. data/app/views/catalog/_sort_and_per_page.html.erb +0 -8
  217. data/app/views/catalog/_within_collection_dropdown.html.erb +0 -26
  218. data/app/views/layouts/catalog_result.html.erb +0 -7
  219. data/app/views/shared/_context_sidebar.html.erb +0 -8
  220. data/app/views/shared/_header_navbar.html.erb +0 -61
  221. data/app/views/shared/_show_breadcrumbs.html.erb +0 -27
  222. data/lib/arclight/viewer.rb +0 -45
  223. data/lib/arclight/viewers/oembed.rb +0 -57
  224. data/solr/conf/scripts.conf +0 -24
  225. data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
  226. data/vendor/assets/javascripts/stickyfill.js +0 -480
  227. /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,21 +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
98
- config.add_facet_field 'component_level_isim', show: false
99
- config.add_facet_field 'parent_ssim', show: false
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
100
150
 
101
151
  # Have BL send all facet field names to Solr, which has been the default
102
152
  # previously. Simply remove these lines if you'd rather use Solr request
@@ -105,18 +155,16 @@ class CatalogController < ApplicationController
105
155
 
106
156
  # solr fields to be displayed in the index (search results) view
107
157
  # The ordering of the field names is the order of the display
108
- config.add_index_field 'unitid_ssm', label: 'Unit ID'
109
- config.add_index_field 'repository_ssm', label: 'Repository'
110
- config.add_index_field 'normalized_date_ssm', label: 'Date'
111
- config.add_index_field 'creator_ssm', label: 'Creator'
112
- config.add_index_field 'language_ssm', label: 'Language'
113
- config.add_index_field 'scopecontent_ssm', label: 'Scope Content', helper_method: :render_html_tags
114
- config.add_index_field 'extent_ssm', label: 'Physical Description'
115
- config.add_index_field 'accessrestrict_ssm', label: 'Conditions Governing Access', helper_method: :render_html_tags
116
- config.add_index_field 'collection_ssm', label: 'Collection Title'
117
- config.add_index_field 'geogname_ssm', label: 'Place'
118
-
119
- 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: {
120
168
  online: { label: 'Online access', fq: 'has_online_content_ssim:true' }
121
169
  }
122
170
 
@@ -147,7 +195,7 @@ class CatalogController < ApplicationController
147
195
  config.add_search_field 'within_collection' do |field|
148
196
  field.include_in_simple_select = false
149
197
  field.solr_parameters = {
150
- fq: '-level_sim:Collection'
198
+ fq: '-level_ssim:Collection'
151
199
  }
152
200
  end
153
201
 
@@ -184,6 +232,24 @@ class CatalogController < ApplicationController
184
232
  pf: '${pf_title}'
185
233
  }
186
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: [] }
187
253
 
188
254
  # "sort results by" select (pulldown)
189
255
  # label in pulldown is followed by the name of the SOLR field to sort by and
@@ -205,191 +271,153 @@ class CatalogController < ApplicationController
205
271
  config.autocomplete_enabled = true
206
272
  config.autocomplete_path = 'suggest'
207
273
 
208
- ##
209
- # Arclight Configurations
210
-
211
- config.show.document_presenter_class = Arclight::ShowPresenter
212
- config.index.document_presenter_class = Arclight::IndexPresenter
213
-
214
- ##
215
- # Configuration for partials
216
- config.index.partials = %i[arclight_index_default]
217
-
218
- ##
219
- # Configuration for index actions
220
- config.index.document_actions << :containers
221
- config.index.document_actions << :online_content_label
222
- config.add_results_document_tool :arclight_bookmark_control, partial: 'arclight_bookmark_control'
223
- config.index.document_actions.delete(:bookmark)
224
-
225
- config.show.metadata_partials = %i[
226
- summary_field
227
- access_field
228
- background_field
229
- related_field
230
- indexed_terms_field
231
- ]
232
-
233
- config.show.context_access_tab_items = %i[
234
- terms_field
235
- cite_field
236
- in_person_field
237
- contact_field
238
- ]
239
-
240
- config.show.component_metadata_partials = %i[
241
- component_field
242
- component_indexed_terms_field
243
- ]
244
-
245
- config.show.component_access_tab_items = %i[
246
- component_terms_field
247
- cite_field
248
- in_person_field
249
- contact_field
250
- ]
251
274
 
252
275
  # ===========================
253
276
  # COLLECTION SHOW PAGE FIELDS
254
277
  # ===========================
255
278
 
256
279
  # Collection Show Page - Summary Section
257
- config.add_summary_field 'creators_ssim', label: 'Creator', link_to_facet: true
258
- config.add_summary_field 'abstract_ssm', label: 'Abstract', helper_method: :render_html_tags
259
- config.add_summary_field 'extent_ssm', label: 'Extent'
260
- config.add_summary_field 'language_ssm', label: 'Language'
261
- 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
262
285
 
263
286
  # Collection Show Page - Background Section
264
- config.add_background_field 'scopecontent_ssm', label: 'Scope and Content', helper_method: :render_html_tags
265
- config.add_background_field 'bioghist_ssm', label: 'Biographical / Historical', helper_method: :render_html_tags
266
- config.add_background_field 'acqinfo_ssim', label: 'Acquisition information', helper_method: :render_html_tags
267
- config.add_background_field 'appraisal_ssm', label: 'Appraisal information', helper_method: :render_html_tags
268
- config.add_background_field 'custodhist_ssm', label: 'Custodial history', helper_method: :render_html_tags
269
- config.add_background_field 'processinfo_ssm', label: 'Processing information', helper_method: :render_html_tags
270
- config.add_background_field 'arrangement_ssm', label: 'Arrangement', helper_method: :render_html_tags
271
- config.add_background_field 'accruals_ssm', label: 'Accruals', helper_method: :render_html_tags
272
- config.add_background_field 'phystech_ssm', label: 'Physical / technical requirements', helper_method: :render_html_tags
273
- config.add_background_field 'physloc_ssm', label: 'Physical location', helper_method: :render_html_tags
274
- 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
275
304
 
276
305
  # Collection Show Page - Related Section
277
- config.add_related_field 'relatedmaterial_ssm', label: 'Related material', helper_method: :render_html_tags
278
- config.add_related_field 'separatedmaterial_ssm', label: 'Separated material', helper_method: :render_html_tags
279
- config.add_related_field 'otherfindaid_ssm', label: 'Other finding aids', helper_method: :render_html_tags
280
- config.add_related_field 'altformavail_ssm', label: 'Alternative form available', helper_method: :render_html_tags
281
- 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
282
312
 
283
313
  # Collection Show Page - Indexed Terms Section
284
- 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: {
285
315
  words_connector: '<br/>',
286
316
  two_words_connector: '<br/>',
287
317
  last_word_connector: '<br/>'
288
318
  }
289
319
 
290
- 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: {
291
321
  words_connector: '<br/>',
292
322
  two_words_connector: '<br/>',
293
323
  last_word_connector: '<br/>'
294
324
  }, helper_method: :link_to_name_facet
295
325
 
296
- 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: {
297
327
  words_connector: '<br/>',
298
328
  two_words_connector: '<br/>',
299
329
  last_word_connector: '<br/>'
300
330
  }
301
331
 
332
+ config.add_indexed_terms_field 'indexes', field: 'indexes_html_tesm',
333
+ helper_method: :render_html_tags
334
+
302
335
  # ==========================
303
336
  # COMPONENT SHOW PAGE FIELDS
304
337
  # ==========================
305
338
 
306
339
  # Component Show Page - Metadata Section
307
- config.add_component_field 'containers', label: 'Containers', accessor: 'containers', separator_options: {
340
+ config.add_component_field 'containers', accessor: 'containers', separator_options: {
308
341
  words_connector: ', ',
309
342
  two_words_connector: ', ',
310
343
  last_word_connector: ', '
311
344
  }, if: lambda { |_context, _field_config, document|
312
345
  document.containers.present?
313
346
  }
314
- config.add_component_field 'abstract_ssm', label: 'Abstract', helper_method: :render_html_tags
315
- config.add_component_field 'extent_ssm', label: 'Extent'
316
- config.add_component_field 'scopecontent_ssm', label: 'Scope and Content', helper_method: :render_html_tags
317
- config.add_component_field 'acqinfo_ssim', label: 'Acquisition information', helper_method: :render_html_tags
318
- config.add_component_field 'appraisal_ssm', label: 'Appraisal information', helper_method: :render_html_tags
319
- config.add_component_field 'custodhist_ssm', label: 'Custodial history', helper_method: :render_html_tags
320
- config.add_component_field 'processinfo_ssm', label: 'Processing information', helper_method: :render_html_tags
321
- config.add_component_field 'arrangement_ssm', label: 'Arrangement', helper_method: :render_html_tags
322
- config.add_component_field 'accruals_ssm', label: 'Accruals', helper_method: :render_html_tags
323
- config.add_component_field 'phystech_ssm', label: 'Physical / technical requirements', helper_method: :render_html_tags
324
- 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
325
373
 
326
374
  # Component Show Page - Indexed Terms Section
327
- 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: {
328
376
  words_connector: '<br/>',
329
377
  two_words_connector: '<br/>',
330
378
  last_word_connector: '<br/>'
331
379
  }
332
380
 
333
- 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: {
334
382
  words_connector: '<br/>',
335
383
  two_words_connector: '<br/>',
336
384
  last_word_connector: '<br/>'
337
385
  }, helper_method: :link_to_name_facet
338
386
 
339
- 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: {
340
388
  words_connector: '<br/>',
341
389
  two_words_connector: '<br/>',
342
390
  last_word_connector: '<br/>'
343
391
  }
344
392
 
393
+ config.add_component_indexed_terms_field 'indexes', field: 'indexes_html_tesm',
394
+ helper_method: :render_html_tags
395
+
345
396
  # =================
346
397
  # ACCESS TAB FIELDS
347
398
  # =================
348
399
 
349
400
  # Collection Show Page Access Tab - Terms and Conditions Section
350
- config.add_terms_field 'accessrestrict_ssm', label: 'Restrictions', helper_method: :render_html_tags
351
- 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
352
403
 
353
404
  # Component Show Page Access Tab - Terms and Condition Section
354
- config.add_component_terms_field 'accessrestrict_ssm', label: 'Restrictions', helper_method: :render_html_tags
355
- config.add_component_terms_field 'userestrict_ssm', label: 'Terms of Access', helper_method: :render_html_tags
356
- config.add_component_terms_field 'parent_access_restrict_ssm', label: 'Parent Restrictions', helper_method: :render_html_tags
357
- 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
358
409
 
359
410
  # Collection and Component Show Page Access Tab - In Person Section
360
- config.add_in_person_field 'repository_ssm', if: :repository_config_present, label: 'Location of this collection', helper_method: :context_access_tab_repository
361
- 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 }
362
413
 
363
414
  # Collection and Component Show Page Access Tab - How to Cite Section
364
- 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
365
416
 
366
417
  # Collection and Component Show Page Access Tab - Contact Section
367
- config.add_contact_field 'repository_ssm', if: :repository_config_present, label: 'Contact', helper_method: :access_repository_contact
368
-
369
- # Remove unused show document actions
370
- %i[citation email sms].each do |action|
371
- config.view_config(:show).document_actions.delete(action)
372
- end
373
-
374
- # Insert the breadcrumbs at the beginning
375
- config.show.partials.unshift(:show_upper_metadata)
376
- config.show.partials.unshift(:show_breadcrumbs)
377
- config.show.partials.delete(:show_header)
418
+ config.add_contact_field 'repository_contact', values: ->(_, document, _) { document.repository_config&.contact }
378
419
 
379
- ##
380
- # Online Contents Index View
381
- config.view.online_contents
382
- config.view.online_contents.display_control = false
383
-
384
- ##
385
- # Collection Context
386
- config.view.collection_context
387
- config.view.collection_context.display_control = false
388
- config.view.collection_context.partials = %i[index_collection_context]
389
-
390
- ##
391
- # Compact index view
392
- config.view.compact
393
- 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
394
422
  end
395
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