arclight 0.4.0 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +11 -4
  3. data/.github/workflows/ruby.yml +24 -8
  4. data/.rspec +0 -1
  5. data/.rubocop.yml +289 -3
  6. data/.rubocop_todo.yml +64 -76
  7. data/CONTRIBUTING.md +5 -5
  8. data/Gemfile +15 -10
  9. data/README.md +18 -12
  10. data/app/assets/javascripts/arclight/arclight.js +3 -7
  11. data/app/assets/javascripts/arclight/oembed_viewer.js +64 -39
  12. data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
  13. data/app/assets/stylesheets/arclight/application.scss +1 -5
  14. data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +104 -130
  15. data/app/assets/stylesheets/arclight/modules/icons.scss +14 -3
  16. data/app/assets/stylesheets/arclight/modules/layout.scss +121 -100
  17. data/app/assets/stylesheets/arclight/modules/mastheads.scss +15 -57
  18. data/app/assets/stylesheets/arclight/modules/repositories.scss +2 -2
  19. data/app/assets/stylesheets/arclight/modules/repository_card.scss +4 -48
  20. data/app/assets/stylesheets/arclight/modules/search_results.scss +86 -35
  21. data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
  22. data/app/assets/stylesheets/arclight/modules/truncator.scss +56 -0
  23. data/app/assets/stylesheets/arclight/variables.scss +7 -4
  24. data/app/components/arclight/access_component.html.erb +14 -0
  25. data/app/components/arclight/access_component.rb +25 -0
  26. data/app/components/arclight/bookmark_component.html.erb +25 -0
  27. data/app/components/arclight/bookmark_component.rb +9 -0
  28. data/app/components/arclight/breadcrumb_component.rb +40 -0
  29. data/app/components/arclight/breadcrumbs_hierarchy_component.html.erb +34 -0
  30. data/app/components/arclight/breadcrumbs_hierarchy_component.rb +25 -0
  31. data/app/components/arclight/collection_context_component.html.erb +12 -0
  32. data/app/components/arclight/collection_context_component.rb +27 -0
  33. data/app/components/arclight/collection_info_component.html.erb +28 -0
  34. data/app/components/arclight/collection_info_component.rb +26 -0
  35. data/app/components/arclight/collection_sidebar_component.html.erb +15 -0
  36. data/app/components/arclight/collection_sidebar_component.rb +41 -0
  37. data/app/{views/catalog/_search_results_repository.html.erb → components/arclight/constraints_component.html.erb} +2 -1
  38. data/app/components/arclight/constraints_component.rb +17 -0
  39. data/app/components/arclight/document_collection_context_component.html.erb +29 -0
  40. data/app/components/arclight/document_collection_context_component.rb +28 -0
  41. data/app/components/arclight/document_collection_hierarchy_component.html.erb +46 -0
  42. data/app/components/arclight/document_collection_hierarchy_component.rb +62 -0
  43. data/app/components/arclight/document_component.html.erb +39 -0
  44. data/app/components/arclight/document_component.rb +49 -0
  45. data/app/components/arclight/document_components_hierarchy_component.html.erb +32 -0
  46. data/app/components/arclight/document_components_hierarchy_component.rb +28 -0
  47. data/app/components/arclight/document_download_component.html.erb +24 -0
  48. data/app/components/arclight/document_download_component.rb +71 -0
  49. data/app/components/arclight/embed_component.html.erb +10 -0
  50. data/app/components/arclight/embed_component.rb +43 -0
  51. data/app/components/arclight/group_component.html.erb +30 -0
  52. data/app/components/arclight/group_component.rb +23 -0
  53. data/app/components/arclight/header_component.html.erb +5 -0
  54. data/app/components/arclight/header_component.rb +10 -0
  55. data/app/components/arclight/index_metadata_field_component.html.erb +17 -0
  56. data/app/components/arclight/index_metadata_field_component.rb +20 -0
  57. data/app/components/arclight/masthead_component.html.erb +15 -0
  58. data/app/components/arclight/masthead_component.rb +10 -0
  59. data/app/components/arclight/metadata_section_component.html.erb +13 -0
  60. data/app/components/arclight/metadata_section_component.rb +22 -0
  61. data/app/components/arclight/oembed_viewer_component.html.erb +5 -0
  62. data/app/components/arclight/oembed_viewer_component.rb +16 -0
  63. data/app/components/arclight/online_content_filter_component.html.erb +15 -0
  64. data/app/components/arclight/online_content_filter_component.rb +19 -0
  65. data/app/components/arclight/online_status_indicator_component.rb +19 -0
  66. data/app/components/arclight/repository_breadcrumb_component.html.erb +10 -0
  67. data/app/components/arclight/repository_breadcrumb_component.rb +17 -0
  68. data/app/components/arclight/repository_location_component.html.erb +20 -0
  69. data/app/components/arclight/repository_location_component.rb +10 -0
  70. data/app/components/arclight/search_bar_component.html.erb +25 -0
  71. data/app/components/arclight/search_bar_component.rb +32 -0
  72. data/app/components/arclight/search_result_breadcrumbs_component.html.erb +3 -0
  73. data/app/components/arclight/search_result_breadcrumbs_component.rb +37 -0
  74. data/app/components/arclight/search_result_component.html.erb +20 -0
  75. data/app/components/arclight/search_result_component.rb +24 -0
  76. data/app/components/arclight/search_result_title_component.html.erb +13 -0
  77. data/app/components/arclight/search_result_title_component.rb +15 -0
  78. data/app/components/arclight/sidebar_component.html.erb +9 -0
  79. data/app/components/arclight/sidebar_component.rb +19 -0
  80. data/app/components/arclight/upper_metadata_layout_component.rb +10 -0
  81. data/app/components/blacklight/icons/bookmark_component.rb +12 -0
  82. data/app/components/blacklight/icons/collection_component.rb +14 -0
  83. data/app/components/blacklight/icons/compact_component.rb +12 -0
  84. data/app/components/blacklight/icons/container_component.rb +14 -0
  85. data/app/components/blacklight/icons/ead_component.rb +12 -0
  86. data/app/components/blacklight/icons/file_component.rb +14 -0
  87. data/app/components/blacklight/icons/folder_component.rb +12 -0
  88. data/app/components/blacklight/icons/online_component.rb +15 -0
  89. data/app/components/blacklight/icons/pdf_component.rb +12 -0
  90. data/app/components/blacklight/icons/repository_component.rb +12 -0
  91. data/app/controllers/arclight/repositories_controller.rb +4 -4
  92. data/app/{controllers/concerns → helpers}/arclight/ead_format_helpers.rb +4 -7
  93. data/app/helpers/arclight/field_config_helpers.rb +26 -0
  94. data/app/helpers/arclight_helper.rb +16 -254
  95. data/app/models/arclight/document_downloads.rb +12 -15
  96. data/app/models/arclight/parent.rb +5 -0
  97. data/app/models/arclight/parents.rb +2 -1
  98. data/app/models/arclight/requests/aeon_external_request.rb +1 -1
  99. data/app/models/arclight/requests/aeon_web_ead.rb +8 -3
  100. data/app/models/arclight/requests/google_form.rb +8 -3
  101. data/app/models/concerns/arclight/catalog.rb +25 -15
  102. data/app/models/concerns/arclight/search_behavior.rb +12 -26
  103. data/app/models/concerns/arclight/solr_document.rb +70 -73
  104. data/app/presenters/arclight/show_presenter.rb +34 -7
  105. data/app/views/arclight/_requests.html.erb +2 -2
  106. data/app/views/arclight/repositories/_repository.html.erb +21 -40
  107. data/app/views/arclight/repositories/index.html.erb +3 -1
  108. data/app/views/arclight/repositories/show.html.erb +4 -6
  109. data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +4 -5
  110. data/app/views/arclight/requests/_aeon_web_ead.html.erb +3 -4
  111. data/app/views/arclight/requests/_google_form.html.erb +4 -6
  112. data/app/views/catalog/_group.html.erb +1 -18
  113. data/app/views/catalog/_group_toggle.html.erb +1 -1
  114. data/app/views/catalog/_search_results_header.html.erb +3 -0
  115. data/app/views/catalog/hierarchy.html.erb +19 -0
  116. data/app/views/catalog/index.html.erb +16 -7
  117. data/app/views/shared/_breadcrumbs.html.erb +2 -14
  118. data/app/views/shared/_main_menu_links.html.erb +1 -1
  119. data/arclight.gemspec +13 -11
  120. data/config/breadcrumbs.rb +24 -0
  121. data/config/i18n-tasks.yml +9 -8
  122. data/config/importmap.rb +3 -0
  123. data/config/locales/arclight.en.yml +31 -30
  124. data/config/routes.rb +1 -1
  125. data/docker-compose.yml +16 -0
  126. data/lib/arclight/digital_object.rb +2 -1
  127. data/lib/arclight/engine.rb +18 -37
  128. data/lib/arclight/exceptions.rb +1 -0
  129. data/lib/arclight/hash_absolute_xpath.rb +2 -1
  130. data/lib/arclight/normalized_id.rb +2 -0
  131. data/lib/arclight/normalized_title.rb +2 -0
  132. data/lib/arclight/repository.rb +45 -56
  133. data/lib/arclight/routes/hierarchy.rb +19 -0
  134. data/lib/arclight/routes.rb +8 -0
  135. data/lib/arclight/traject/ead2_component_config.rb +292 -0
  136. data/lib/arclight/traject/ead2_config.rb +66 -287
  137. data/lib/arclight/version.rb +1 -1
  138. data/lib/arclight/year_range.rb +4 -3
  139. data/lib/arclight.rb +6 -1
  140. data/lib/generators/arclight/install_generator.rb +59 -21
  141. data/lib/generators/arclight/templates/arclight.scss +4 -3
  142. data/lib/generators/arclight/templates/catalog_controller.rb +150 -165
  143. data/lib/generators/arclight/templates/config/locales/arclight.en.yml +53 -0
  144. data/lib/generators/arclight/templates/config/repositories.yml +20 -27
  145. data/lib/tasks/index.rake +14 -17
  146. data/package.json +11 -13
  147. data/solr/conf/schema.xml +42 -38
  148. data/solr/conf/solrconfig.xml +34 -31
  149. data/tasks/arclight.rake +8 -7
  150. data/template.rb +1 -2
  151. metadata +147 -120
  152. data/.babelrc +0 -3
  153. data/app/assets/javascripts/arclight/collection_navigation.js +0 -100
  154. data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
  155. data/app/assets/javascripts/arclight/context_navigation.js +0 -351
  156. data/app/assets/javascripts/arclight/truncator.js.erb +0 -29
  157. data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -26
  158. data/app/assets/stylesheets/arclight/modules/context_navigation.scss +0 -75
  159. data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -102
  160. data/app/factories/blacklight_field_configuration_factory.rb +0 -30
  161. data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
  162. data/app/views/arclight/repositories/_repository_contact.html.erb +0 -9
  163. data/app/views/arclight/viewers/_oembed.html.erb +0 -8
  164. data/app/views/catalog/_access_contents.html.erb +0 -15
  165. data/app/views/catalog/_arclight_abstract_or_scope.html.erb +0 -5
  166. data/app/views/catalog/_arclight_bookmark_control.html.erb +0 -38
  167. data/app/views/catalog/_arclight_document_header_icon.html.erb +0 -1
  168. data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
  169. data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
  170. data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
  171. data/app/views/catalog/_arclight_index_compact_default.html.erb +0 -22
  172. data/app/views/catalog/_arclight_index_default.html.erb +0 -45
  173. data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +0 -19
  174. data/app/views/catalog/_arclight_index_group_document_default.html.erb +0 -18
  175. data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -3
  176. data/app/views/catalog/_arclight_rangelimit.html.erb +0 -24
  177. data/app/views/catalog/_arclight_viewer_default.html.erb +0 -1
  178. data/app/views/catalog/_collection_contents.html.erb +0 -4
  179. data/app/views/catalog/_collection_context.html.erb +0 -15
  180. data/app/views/catalog/_collection_context_nav.html.erb +0 -12
  181. data/app/views/catalog/_collection_online_contents.html.erb +0 -17
  182. data/app/views/catalog/_component_context.html.erb +0 -5
  183. data/app/views/catalog/_containers.html.erb +0 -3
  184. data/app/views/catalog/_context_card.html.erb +0 -27
  185. data/app/views/catalog/_context_sidebar.html.erb +0 -8
  186. data/app/views/catalog/_custom_metadata.html.erb +0 -16
  187. data/app/views/catalog/_document_downloads.html.erb +0 -14
  188. data/app/views/catalog/_group_header_compact_default.html.erb +0 -15
  189. data/app/views/catalog/_group_header_default.html.erb +0 -20
  190. data/app/views/catalog/_home.html.erb +0 -1
  191. data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -6
  192. data/app/views/catalog/_index_collection_context_default.html.erb +0 -53
  193. data/app/views/catalog/_index_default.html.erb +0 -17
  194. data/app/views/catalog/_index_header.html.erb +0 -7
  195. data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
  196. data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
  197. data/app/views/catalog/_online_content_label.html.erb +0 -5
  198. data/app/views/catalog/_search_form.html.erb +0 -34
  199. data/app/views/catalog/_search_results.html.erb +0 -28
  200. data/app/views/catalog/_show_actions_box_default.html.erb +0 -27
  201. data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -6
  202. data/app/views/catalog/_show_collection.html.erb +0 -66
  203. data/app/views/catalog/_show_default.html.erb +0 -70
  204. data/app/views/catalog/_show_upper_metadata_collection.html.erb +0 -1
  205. data/app/views/catalog/_show_upper_metadata_default.html.erb +0 -14
  206. data/app/views/catalog/_sort_and_per_page.html.erb +0 -8
  207. data/app/views/catalog/_within_collection_dropdown.html.erb +0 -26
  208. data/app/views/layouts/catalog_result.html.erb +0 -7
  209. data/app/views/shared/_context_sidebar.html.erb +0 -8
  210. data/app/views/shared/_header_navbar.html.erb +0 -61
  211. data/app/views/shared/_show_breadcrumbs.html.erb +0 -27
  212. data/lib/arclight/viewer.rb +0 -45
  213. data/lib/arclight/viewers/oembed.rb +0 -57
  214. data/solr/conf/scripts.conf +0 -24
  215. data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
  216. data/vendor/assets/javascripts/stickyfill.js +0 -480
@@ -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,100 @@ 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
47
81
  config.show.display_type_field = 'level_ssm'
48
82
  # config.show.thumbnail_field = 'thumbnail_path_ss'
83
+ config.show.document_presenter_class = Arclight::ShowPresenter
84
+ config.show.metadata_partials = %i[
85
+ summary_field
86
+ background_field
87
+ related_field
88
+ indexed_terms_field
89
+ access_field
90
+ ]
49
91
 
50
- config.add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
92
+ config.show.collection_access_items = %i[
93
+ terms_field
94
+ cite_field
95
+ in_person_field
96
+ contact_field
97
+ ]
51
98
 
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)
99
+ config.show.component_metadata_partials = %i[
100
+ component_field
101
+ component_indexed_terms_field
102
+ ]
55
103
 
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)
104
+ config.show.component_access_items = %i[
105
+ component_terms_field
106
+ cite_field
107
+ in_person_field
108
+ contact_field
109
+ ]
60
110
 
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')
111
+ ##
112
+ # Compact index view
113
+ config.view.compact!
63
114
 
64
115
  # solr fields that will be treated as facets by the blacklight application
65
116
  # The ordering of the field names is the order of the display
@@ -82,21 +133,19 @@ class CatalogController < ApplicationController
82
133
  # facet bar
83
134
  #
84
135
  # 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
136
+ # (useful when user clicks "more" on a large facet and wants to navigate alphabetically
137
+ # across a large set of results)
138
+ # :index_range can be an array or range of prefixes that will be used to create the navigation
139
+ # (note: It is case sensitive when searching values)
140
+
141
+ config.add_facet_field 'collection', field: 'collection_ssim', limit: 10
142
+ config.add_facet_field 'creator', field: 'creator_ssim', limit: 10
143
+ config.add_facet_field 'date_range', field: 'date_range_ssim', range: true
144
+ config.add_facet_field 'level', field: 'level_ssim', limit: 10
145
+ config.add_facet_field 'names', field: 'names_ssim', limit: 10
146
+ config.add_facet_field 'repository', field: 'repository_ssim', limit: 10
147
+ config.add_facet_field 'place', field: 'geogname_ssim', limit: 10
148
+ config.add_facet_field 'subject', field: 'access_subjects_ssim', limit: 10
100
149
 
101
150
  # Have BL send all facet field names to Solr, which has been the default
102
151
  # previously. Simply remove these lines if you'd rather use Solr request
@@ -105,18 +154,16 @@ class CatalogController < ApplicationController
105
154
 
106
155
  # solr fields to be displayed in the index (search results) view
107
156
  # 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: {
157
+ config.add_index_field 'highlight', accessor: 'highlights', separator_options: {
158
+ words_connector: '<br/>',
159
+ two_words_connector: '<br/>',
160
+ last_word_connector: '<br/>'
161
+ }, compact: true, component: Arclight::IndexMetadataFieldComponent
162
+ config.add_index_field 'creator', accessor: true, component: Arclight::IndexMetadataFieldComponent
163
+ config.add_index_field 'abstract_or_scope', accessor: true, truncate: true, repository_context: true, helper_method: :render_html_tags, component: Arclight::IndexMetadataFieldComponent
164
+ config.add_index_field 'breadcrumbs', accessor: :itself, component: Arclight::SearchResultBreadcrumbsComponent, compact: { count: 2 }
165
+
166
+ config.add_facet_field 'access', query: {
120
167
  online: { label: 'Online access', fq: 'has_online_content_ssim:true' }
121
168
  }
122
169
 
@@ -147,7 +194,7 @@ class CatalogController < ApplicationController
147
194
  config.add_search_field 'within_collection' do |field|
148
195
  field.include_in_simple_select = false
149
196
  field.solr_parameters = {
150
- fq: '-level_sim:Collection'
197
+ fq: '-level_ssim:Collection'
151
198
  }
152
199
  end
153
200
 
@@ -185,6 +232,10 @@ class CatalogController < ApplicationController
185
232
  }
186
233
  end
187
234
 
235
+ # These are the parameters passed through in search_state.params_for_search
236
+ config.search_state_fields += %i[id group hierarchy_context original_document]
237
+ config.search_state_fields << { original_parents: [] }
238
+
188
239
  # "sort results by" select (pulldown)
189
240
  # label in pulldown is followed by the name of the SOLR field to sort by and
190
241
  # whether the sort is ascending or descending (it must be asc or desc
@@ -205,95 +256,52 @@ class CatalogController < ApplicationController
205
256
  config.autocomplete_enabled = true
206
257
  config.autocomplete_path = 'suggest'
207
258
 
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
259
 
252
260
  # ===========================
253
261
  # COLLECTION SHOW PAGE FIELDS
254
262
  # ===========================
255
263
 
256
264
  # 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
265
+ config.add_summary_field 'creators', field: 'creators_ssim', link_to_facet: true
266
+ config.add_summary_field 'abstract', field: 'abstract_html_tesm', helper_method: :render_html_tags
267
+ config.add_summary_field 'extent', field: 'extent_ssm'
268
+ config.add_summary_field 'language', field: 'language_ssim'
269
+ config.add_summary_field 'prefercite', field: 'prefercite_html_tesm', helper_method: :render_html_tags
262
270
 
263
271
  # 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
272
+ config.add_background_field 'scopecontent', field: 'scopecontent_html_tesm', helper_method: :render_html_tags
273
+ config.add_background_field 'bioghist', field: 'bioghist_html_tesm', helper_method: :render_html_tags
274
+ config.add_background_field 'acqinfo', field: 'acqinfo_ssim', helper_method: :render_html_tags
275
+ config.add_background_field 'appraisal', field: 'appraisal_html_tesm', helper_method: :render_html_tags
276
+ config.add_background_field 'custodhist', field: 'custodhist_html_tesm', helper_method: :render_html_tags
277
+ config.add_background_field 'processinfo', field: 'processinfo_html_tesm', helper_method: :render_html_tags
278
+ config.add_background_field 'arrangement', field: 'arrangement_html_tesm', helper_method: :render_html_tags
279
+ config.add_background_field 'accruals', field: 'accruals_html_tesm', helper_method: :render_html_tags
280
+ config.add_background_field 'phystech', field: 'phystech_html_tesm', helper_method: :render_html_tags
281
+ config.add_background_field 'physloc', field: 'physloc_html_tesm', helper_method: :render_html_tags
282
+ config.add_background_field 'descrules', field: 'descrules_ssm', helper_method: :render_html_tags
275
283
 
276
284
  # 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
285
+ config.add_related_field 'relatedmaterial', field: 'relatedmaterial_html_tesm', helper_method: :render_html_tags
286
+ config.add_related_field 'separatedmaterial', field: 'separatedmaterial_html_tesm', helper_method: :render_html_tags
287
+ config.add_related_field 'otherfindaid', field: 'otherfindaid_html_tesm', helper_method: :render_html_tags
288
+ config.add_related_field 'altformavail', field: 'altformavail_html_tesm', helper_method: :render_html_tags
289
+ config.add_related_field 'originalsloc', field: 'originalsloc_html_tesm', helper_method: :render_html_tags
282
290
 
283
291
  # Collection Show Page - Indexed Terms Section
284
- config.add_indexed_terms_field 'access_subjects_ssim', label: 'Subjects', link_to_facet: true, separator_options: {
292
+ config.add_indexed_terms_field 'access_subjects', field: 'access_subjects_ssim', link_to_facet: true, separator_options: {
285
293
  words_connector: '<br/>',
286
294
  two_words_connector: '<br/>',
287
295
  last_word_connector: '<br/>'
288
296
  }
289
297
 
290
- config.add_indexed_terms_field 'names_coll_ssim', label: 'Names', separator_options: {
298
+ config.add_indexed_terms_field 'names_coll', field: 'names_coll_ssim', separator_options: {
291
299
  words_connector: '<br/>',
292
300
  two_words_connector: '<br/>',
293
301
  last_word_connector: '<br/>'
294
302
  }, helper_method: :link_to_name_facet
295
303
 
296
- config.add_indexed_terms_field 'places_ssim', label: 'Places', link_to_facet: true, separator_options: {
304
+ config.add_indexed_terms_field 'places', field: 'places_ssim', link_to_facet: true, separator_options: {
297
305
  words_connector: '<br/>',
298
306
  two_words_connector: '<br/>',
299
307
  last_word_connector: '<br/>'
@@ -304,39 +312,39 @@ class CatalogController < ApplicationController
304
312
  # ==========================
305
313
 
306
314
  # Component Show Page - Metadata Section
307
- config.add_component_field 'containers', label: 'Containers', accessor: 'containers', separator_options: {
315
+ config.add_component_field 'containers', accessor: 'containers', separator_options: {
308
316
  words_connector: ', ',
309
317
  two_words_connector: ', ',
310
318
  last_word_connector: ', '
311
319
  }, if: lambda { |_context, _field_config, document|
312
320
  document.containers.present?
313
321
  }
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
322
+ config.add_component_field 'abstract', field: 'abstract_html_tesm', helper_method: :render_html_tags
323
+ config.add_component_field 'extent', field: 'extent_ssm'
324
+ config.add_component_field 'scopecontent', field: 'scopecontent_html_tesm', helper_method: :render_html_tags
325
+ config.add_component_field 'acqinfo', field: 'acqinfo_ssim', helper_method: :render_html_tags
326
+ config.add_component_field 'appraisal', field: 'appraisal_html_tesm', helper_method: :render_html_tags
327
+ config.add_component_field 'custodhist', field: 'custodhist_html_tesm', helper_method: :render_html_tags
328
+ config.add_component_field 'processinfo', field: 'processinfo_html_tesm', helper_method: :render_html_tags
329
+ config.add_component_field 'arrangement', field: 'arrangement_html_tesm', helper_method: :render_html_tags
330
+ config.add_component_field 'accruals', field: 'accruals_html_tesm', helper_method: :render_html_tags
331
+ config.add_component_field 'phystech', field: 'phystech_html_tesm', helper_method: :render_html_tags
332
+ config.add_component_field 'physloc', field: 'physloc_html_tesm', helper_method: :render_html_tags
325
333
 
326
334
  # Component Show Page - Indexed Terms Section
327
- config.add_component_indexed_terms_field 'access_subjects_ssim', label: 'Subjects', link_to_facet: true, separator_options: {
335
+ config.add_component_indexed_terms_field 'access_subjects', field: 'access_subjects_ssim', link_to_facet: true, separator_options: {
328
336
  words_connector: '<br/>',
329
337
  two_words_connector: '<br/>',
330
338
  last_word_connector: '<br/>'
331
339
  }
332
340
 
333
- config.add_component_indexed_terms_field 'names_ssim', label: 'Names', separator_options: {
341
+ config.add_component_indexed_terms_field 'names', field: 'names_ssim', separator_options: {
334
342
  words_connector: '<br/>',
335
343
  two_words_connector: '<br/>',
336
344
  last_word_connector: '<br/>'
337
345
  }, helper_method: :link_to_name_facet
338
346
 
339
- config.add_component_indexed_terms_field 'places_ssim', label: 'Places', link_to_facet: true, separator_options: {
347
+ config.add_component_indexed_terms_field 'places', field: 'places_ssim', link_to_facet: true, separator_options: {
340
348
  words_connector: '<br/>',
341
349
  two_words_connector: '<br/>',
342
350
  last_word_connector: '<br/>'
@@ -347,49 +355,26 @@ class CatalogController < ApplicationController
347
355
  # =================
348
356
 
349
357
  # 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
358
+ config.add_terms_field 'restrictions', field: 'accessrestrict_html_tesm', helper_method: :render_html_tags
359
+ config.add_terms_field 'terms', field: 'userestrict_html_tesm', helper_method: :render_html_tags
352
360
 
353
361
  # 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
362
+ config.add_component_terms_field 'restrictions', field: 'accessrestrict_html_tesm', helper_method: :render_html_tags
363
+ config.add_component_terms_field 'terms', field: 'userestrict_html_tesm', helper_method: :render_html_tags
364
+ config.add_component_terms_field 'parent_restrictions', field: 'parent_access_restrict_tesm', helper_method: :render_html_tags
365
+ config.add_component_terms_field 'parent_terms', field: 'parent_access_terms_tesm', helper_method: :render_html_tags
358
366
 
359
367
  # 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
368
+ config.add_in_person_field 'repository_location', values: ->(_, document, _) { document.repository_config }, component: Arclight::RepositoryLocationComponent
369
+ config.add_in_person_field 'before_you_visit', values: ->(_, document, _) { document.repository_config&.visit_note }
362
370
 
363
371
  # 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
372
+ config.add_cite_field 'prefercite', field: 'prefercite_html_tesm', helper_method: :render_html_tags
365
373
 
366
374
  # 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)
375
+ config.add_contact_field 'repository_contact', values: ->(_, document, _) { document.repository_config&.contact }
378
376
 
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]
377
+ # Group header values
378
+ config.add_group_header_field 'abstract_or_scope', accessor: true, truncate: true, helper_method: :render_html_tags
394
379
  end
395
380
  end
@@ -0,0 +1,53 @@
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
+ descrules: Rules or conventions
22
+
23
+ relatedmaterial: Related material
24
+ separatedmaterial: Separated material
25
+ otherfindaid: Other finding aids
26
+ altformavail: Alternative form available
27
+ originalsloc: Location of originals
28
+
29
+ access_subjects: Subjects
30
+ names_coll: Names
31
+ places: Places
32
+
33
+ containers: Containers
34
+ names: Names
35
+
36
+ restrictions: Restrictions
37
+ terms: Terms of access
38
+ parent_restrictions: Parent restrictions
39
+ parent_terms: Parent terms of access
40
+ repository_location: Location of this collection
41
+ before_you_visit: Before you visit
42
+ repository_contact: Contact
43
+
44
+ facet:
45
+ collection: Collection
46
+ creator: Creator
47
+ date_range: Date range
48
+ level: Level
49
+ names: Names
50
+ repository: Repository
51
+ place: Place
52
+ subject: Subject
53
+ access: Access
@@ -1,50 +1,43 @@
1
1
  nlm:
2
2
  name: 'National Library of Medicine. History of Medicine Division'
3
3
  description: 'NLM’s History of Medicine Division collects, preserves, makes available, and interprets for diverse audiences one of the world’s richest collections of historical material related to human health and disease.'
4
- building: 'Building 38, Room 1E-21'
5
- address1: '8600 Rockville Pike'
6
- address2: ''
7
- city: 'Bethesda'
8
- state: 'MD'
9
- zip: '20894'
10
- country: 'USA'
11
- phone: ''
12
- contact_info: 'hmdref@nlm.nih.gov'
4
+ contact_html: |
5
+ <div class="al-repository-contact-info"><a href="mailto:hmdref@nlm.nih.gov">hmdref@nlm.nih.gov</a></div>
6
+ location_html: |
7
+ <div class="al-repository-street-address-building">Building 38, Room 1E-21</div>
8
+ <div class="al-repository-street-address-address1">8600 Rockville Pike</div>
9
+ <div class="al-repository-street-address-city_state_zip_country">Bethesda, MD 20894, USA</div>
13
10
  thumbnail_url: "https://collections.nlm.nih.gov/pageturnerserver/ajaxp?theurl=http://localhost:8080/fedora/get/nlm:nlmuid-101421040-img/THUMB"
14
11
  request_types:
15
12
  google_form:
16
13
  request_url: 'https://docs.google.com/a/stanford.edu/forms/d/e/1FAIpQLSeOamhY_IcFw4sPnz0ddwWWkrPaHbM5wp7JVbOLOL_mIusEyw/viewform'
17
14
  request_mappings: "document_url=entry.1980510262&collection_name=entry.619150170&collection_creator=entry.14428541&eadid=entry.996397105&containers=entry.1125277048&title=entry.862815208"
15
+
18
16
  sul-spec:
19
17
  name: 'Stanford University Libraries. Special Collections and University Archives'
20
18
  visit_note: 'Special Collections and University Archives materials are stored offsite and must be paged 36 hours in advance.'
21
19
  description: 'The Special Collections and University Archives Department of Stanford University Libraries is committed to acquiring, preserving, and providing access to primary source materials that support the research needs of the Stanford community and beyond. There are three distinct divisions in our department: Manuscripts, Rare Books and University Archives. We welcome all students, scholars and members of the general public to the Field Reading Room. Learn more about using and accessing our collections.'
22
- building: 'Green Library'
23
- address1: '557 Escondido Mall'
24
- address2: ''
25
- city: 'Stanford'
26
- state: 'CA'
27
- zip: '94305'
28
- country: 'USA'
29
- phone: '(650) 725-1022'
30
- contact_info: 'specialcollections@stanford.edu'
20
+ contact_html: |
21
+ <div class="al-repository-contact-phone">(650) 725-1022</div>
22
+ <div class="al-repository-contact-info"><a href="mailto:specialcollections@stanford.edu">specialcollections@stanford.edu</a></div>
23
+ location_html: |
24
+ <div class="al-repository-street-address-building">Green Library</div>
25
+ <div class="al-repository-street-address-address1">557 Escondido Mall</div>
26
+ <div class="al-repository-street-address-city_state_zip_country">Stanford, CA 94305, USA</div>
31
27
  thumbnail_url: 'https://library.stanford.edu/sites/default/files/styles/150x150/public/collection/image/Collections-Super-Enlight.jpg'
32
28
  request_types:
33
29
  aeon_web_ead:
34
30
  request_url: 'https://sample.request.com'
35
31
  request_mappings: 'Action=10&Form=31&Value=ead_url'
32
+
36
33
  umich-bhl:
37
34
  name: 'University of Michigan. Bentley Historical Library'
38
35
  description: 'The Bentley Historical Library collects the materials for and promotes the study of the histories of two great, intertwined institutions, the State of Michigan and the University of Michigan. The Library is open without fee to the public, and we welcome researchers regardless of academic or professional affiliation.'
39
- building: ''
40
- address1: '1150 Beal Ave'
41
- address2: ''
42
- city: 'Ann Arbor'
43
- state: 'MI'
44
- zip: '48109-2113'
45
- country: 'USA'
46
- phone: ''
47
- contact_info: 'bentley.ref@umich.edu'
36
+ contact_html: |
37
+ <div class="al-repository-contact-info"><a href="mailto:bentley.ref@umich.edu">bentley.ref@umich.edu</a></div>
38
+ location_html: |
39
+ <div class="al-repository-street-address-address1">1150 Beal Ave</div>
40
+ <div class="al-repository-street-address-city_state_zip_country">Ann Arbor, MI 48109-2113, USA</div>
48
41
  thumbnail_url: 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Bhlexterior.jpg/150px-Bhlexterior.jpg'
49
42
  request_types:
50
43
  aeon_external_request_endpoint: