arclight 0.4.0 → 1.0.0.beta1
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.
- checksums.yaml +4 -4
- data/.eslintrc +11 -4
- data/.github/workflows/ruby.yml +24 -8
- data/.rspec +0 -1
- data/.rubocop.yml +289 -3
- data/.rubocop_todo.yml +64 -76
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +15 -10
- data/README.md +18 -12
- data/app/assets/javascripts/arclight/arclight.js +3 -7
- data/app/assets/javascripts/arclight/oembed_viewer.js +64 -39
- data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
- data/app/assets/stylesheets/arclight/application.scss +1 -5
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +104 -130
- data/app/assets/stylesheets/arclight/modules/icons.scss +14 -3
- data/app/assets/stylesheets/arclight/modules/layout.scss +121 -100
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +15 -57
- data/app/assets/stylesheets/arclight/modules/repositories.scss +2 -2
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +4 -48
- data/app/assets/stylesheets/arclight/modules/search_results.scss +86 -35
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
- data/app/assets/stylesheets/arclight/modules/truncator.scss +56 -0
- data/app/assets/stylesheets/arclight/variables.scss +7 -4
- data/app/components/arclight/access_component.html.erb +14 -0
- data/app/components/arclight/access_component.rb +25 -0
- data/app/components/arclight/bookmark_component.html.erb +25 -0
- data/app/components/arclight/bookmark_component.rb +9 -0
- data/app/components/arclight/breadcrumb_component.rb +40 -0
- data/app/components/arclight/breadcrumbs_hierarchy_component.html.erb +34 -0
- data/app/components/arclight/breadcrumbs_hierarchy_component.rb +25 -0
- data/app/components/arclight/collection_context_component.html.erb +12 -0
- data/app/components/arclight/collection_context_component.rb +27 -0
- data/app/components/arclight/collection_info_component.html.erb +28 -0
- data/app/components/arclight/collection_info_component.rb +26 -0
- data/app/components/arclight/collection_sidebar_component.html.erb +15 -0
- data/app/components/arclight/collection_sidebar_component.rb +41 -0
- data/app/{views/catalog/_search_results_repository.html.erb → components/arclight/constraints_component.html.erb} +2 -1
- data/app/components/arclight/constraints_component.rb +17 -0
- data/app/components/arclight/document_collection_context_component.html.erb +29 -0
- data/app/components/arclight/document_collection_context_component.rb +28 -0
- data/app/components/arclight/document_collection_hierarchy_component.html.erb +46 -0
- data/app/components/arclight/document_collection_hierarchy_component.rb +62 -0
- data/app/components/arclight/document_component.html.erb +39 -0
- data/app/components/arclight/document_component.rb +49 -0
- data/app/components/arclight/document_components_hierarchy_component.html.erb +32 -0
- data/app/components/arclight/document_components_hierarchy_component.rb +28 -0
- data/app/components/arclight/document_download_component.html.erb +24 -0
- data/app/components/arclight/document_download_component.rb +71 -0
- data/app/components/arclight/embed_component.html.erb +10 -0
- data/app/components/arclight/embed_component.rb +43 -0
- data/app/components/arclight/group_component.html.erb +30 -0
- data/app/components/arclight/group_component.rb +23 -0
- data/app/components/arclight/header_component.html.erb +5 -0
- data/app/components/arclight/header_component.rb +10 -0
- data/app/components/arclight/index_metadata_field_component.html.erb +17 -0
- data/app/components/arclight/index_metadata_field_component.rb +20 -0
- data/app/components/arclight/masthead_component.html.erb +15 -0
- data/app/components/arclight/masthead_component.rb +10 -0
- data/app/components/arclight/metadata_section_component.html.erb +13 -0
- data/app/components/arclight/metadata_section_component.rb +22 -0
- data/app/components/arclight/oembed_viewer_component.html.erb +5 -0
- data/app/components/arclight/oembed_viewer_component.rb +16 -0
- data/app/components/arclight/online_content_filter_component.html.erb +15 -0
- data/app/components/arclight/online_content_filter_component.rb +19 -0
- data/app/components/arclight/online_status_indicator_component.rb +19 -0
- data/app/components/arclight/repository_breadcrumb_component.html.erb +10 -0
- data/app/components/arclight/repository_breadcrumb_component.rb +17 -0
- data/app/components/arclight/repository_location_component.html.erb +20 -0
- data/app/components/arclight/repository_location_component.rb +10 -0
- data/app/components/arclight/search_bar_component.html.erb +25 -0
- data/app/components/arclight/search_bar_component.rb +32 -0
- data/app/components/arclight/search_result_breadcrumbs_component.html.erb +3 -0
- data/app/components/arclight/search_result_breadcrumbs_component.rb +37 -0
- data/app/components/arclight/search_result_component.html.erb +20 -0
- data/app/components/arclight/search_result_component.rb +24 -0
- data/app/components/arclight/search_result_title_component.html.erb +13 -0
- data/app/components/arclight/search_result_title_component.rb +15 -0
- data/app/components/arclight/sidebar_component.html.erb +9 -0
- data/app/components/arclight/sidebar_component.rb +19 -0
- data/app/components/arclight/upper_metadata_layout_component.rb +10 -0
- data/app/components/blacklight/icons/bookmark_component.rb +12 -0
- data/app/components/blacklight/icons/collection_component.rb +14 -0
- data/app/components/blacklight/icons/compact_component.rb +12 -0
- data/app/components/blacklight/icons/container_component.rb +14 -0
- data/app/components/blacklight/icons/ead_component.rb +12 -0
- data/app/components/blacklight/icons/file_component.rb +14 -0
- data/app/components/blacklight/icons/folder_component.rb +12 -0
- data/app/components/blacklight/icons/online_component.rb +15 -0
- data/app/components/blacklight/icons/pdf_component.rb +12 -0
- data/app/components/blacklight/icons/repository_component.rb +12 -0
- data/app/controllers/arclight/repositories_controller.rb +4 -4
- data/app/{controllers/concerns → helpers}/arclight/ead_format_helpers.rb +4 -7
- data/app/helpers/arclight/field_config_helpers.rb +26 -0
- data/app/helpers/arclight_helper.rb +16 -254
- data/app/models/arclight/document_downloads.rb +12 -15
- data/app/models/arclight/parent.rb +5 -0
- data/app/models/arclight/parents.rb +2 -1
- data/app/models/arclight/requests/aeon_external_request.rb +1 -1
- data/app/models/arclight/requests/aeon_web_ead.rb +8 -3
- data/app/models/arclight/requests/google_form.rb +8 -3
- data/app/models/concerns/arclight/catalog.rb +25 -15
- data/app/models/concerns/arclight/search_behavior.rb +12 -26
- data/app/models/concerns/arclight/solr_document.rb +70 -73
- data/app/presenters/arclight/show_presenter.rb +34 -7
- data/app/views/arclight/_requests.html.erb +2 -2
- data/app/views/arclight/repositories/_repository.html.erb +21 -40
- data/app/views/arclight/repositories/index.html.erb +3 -1
- data/app/views/arclight/repositories/show.html.erb +4 -6
- data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +4 -5
- data/app/views/arclight/requests/_aeon_web_ead.html.erb +3 -4
- data/app/views/arclight/requests/_google_form.html.erb +4 -6
- data/app/views/catalog/_group.html.erb +1 -18
- data/app/views/catalog/_group_toggle.html.erb +1 -1
- data/app/views/catalog/_search_results_header.html.erb +3 -0
- data/app/views/catalog/hierarchy.html.erb +19 -0
- data/app/views/catalog/index.html.erb +16 -7
- data/app/views/shared/_breadcrumbs.html.erb +2 -14
- data/app/views/shared/_main_menu_links.html.erb +1 -1
- data/arclight.gemspec +13 -11
- data/config/breadcrumbs.rb +24 -0
- data/config/i18n-tasks.yml +9 -8
- data/config/importmap.rb +3 -0
- data/config/locales/arclight.en.yml +31 -30
- data/config/routes.rb +1 -1
- data/docker-compose.yml +16 -0
- data/lib/arclight/digital_object.rb +2 -1
- data/lib/arclight/engine.rb +18 -37
- data/lib/arclight/exceptions.rb +1 -0
- data/lib/arclight/hash_absolute_xpath.rb +2 -1
- data/lib/arclight/normalized_id.rb +2 -0
- data/lib/arclight/normalized_title.rb +2 -0
- data/lib/arclight/repository.rb +45 -56
- data/lib/arclight/routes/hierarchy.rb +19 -0
- data/lib/arclight/routes.rb +8 -0
- data/lib/arclight/traject/ead2_component_config.rb +292 -0
- data/lib/arclight/traject/ead2_config.rb +66 -287
- data/lib/arclight/version.rb +1 -1
- data/lib/arclight/year_range.rb +4 -3
- data/lib/arclight.rb +6 -1
- data/lib/generators/arclight/install_generator.rb +59 -21
- data/lib/generators/arclight/templates/arclight.scss +4 -3
- data/lib/generators/arclight/templates/catalog_controller.rb +150 -165
- data/lib/generators/arclight/templates/config/locales/arclight.en.yml +53 -0
- data/lib/generators/arclight/templates/config/repositories.yml +20 -27
- data/lib/tasks/index.rake +14 -17
- data/package.json +11 -13
- data/solr/conf/schema.xml +42 -38
- data/solr/conf/solrconfig.xml +34 -31
- data/tasks/arclight.rake +8 -7
- data/template.rb +1 -2
- metadata +147 -120
- data/.babelrc +0 -3
- data/app/assets/javascripts/arclight/collection_navigation.js +0 -100
- data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
- data/app/assets/javascripts/arclight/context_navigation.js +0 -351
- data/app/assets/javascripts/arclight/truncator.js.erb +0 -29
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -26
- data/app/assets/stylesheets/arclight/modules/context_navigation.scss +0 -75
- data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -102
- data/app/factories/blacklight_field_configuration_factory.rb +0 -30
- data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
- data/app/views/arclight/repositories/_repository_contact.html.erb +0 -9
- data/app/views/arclight/viewers/_oembed.html.erb +0 -8
- data/app/views/catalog/_access_contents.html.erb +0 -15
- data/app/views/catalog/_arclight_abstract_or_scope.html.erb +0 -5
- data/app/views/catalog/_arclight_bookmark_control.html.erb +0 -38
- data/app/views/catalog/_arclight_document_header_icon.html.erb +0 -1
- data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
- data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
- data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
- data/app/views/catalog/_arclight_index_compact_default.html.erb +0 -22
- data/app/views/catalog/_arclight_index_default.html.erb +0 -45
- data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +0 -19
- data/app/views/catalog/_arclight_index_group_document_default.html.erb +0 -18
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -3
- data/app/views/catalog/_arclight_rangelimit.html.erb +0 -24
- data/app/views/catalog/_arclight_viewer_default.html.erb +0 -1
- data/app/views/catalog/_collection_contents.html.erb +0 -4
- data/app/views/catalog/_collection_context.html.erb +0 -15
- data/app/views/catalog/_collection_context_nav.html.erb +0 -12
- data/app/views/catalog/_collection_online_contents.html.erb +0 -17
- data/app/views/catalog/_component_context.html.erb +0 -5
- data/app/views/catalog/_containers.html.erb +0 -3
- data/app/views/catalog/_context_card.html.erb +0 -27
- data/app/views/catalog/_context_sidebar.html.erb +0 -8
- data/app/views/catalog/_custom_metadata.html.erb +0 -16
- data/app/views/catalog/_document_downloads.html.erb +0 -14
- data/app/views/catalog/_group_header_compact_default.html.erb +0 -15
- data/app/views/catalog/_group_header_default.html.erb +0 -20
- data/app/views/catalog/_home.html.erb +0 -1
- data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -6
- data/app/views/catalog/_index_collection_context_default.html.erb +0 -53
- data/app/views/catalog/_index_default.html.erb +0 -17
- data/app/views/catalog/_index_header.html.erb +0 -7
- data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
- data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
- data/app/views/catalog/_online_content_label.html.erb +0 -5
- data/app/views/catalog/_search_form.html.erb +0 -34
- data/app/views/catalog/_search_results.html.erb +0 -28
- data/app/views/catalog/_show_actions_box_default.html.erb +0 -27
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -6
- data/app/views/catalog/_show_collection.html.erb +0 -66
- data/app/views/catalog/_show_default.html.erb +0 -70
- data/app/views/catalog/_show_upper_metadata_collection.html.erb +0 -1
- data/app/views/catalog/_show_upper_metadata_default.html.erb +0 -14
- data/app/views/catalog/_sort_and_per_page.html.erb +0 -8
- data/app/views/catalog/_within_collection_dropdown.html.erb +0 -26
- data/app/views/layouts/catalog_result.html.erb +0 -7
- data/app/views/shared/_context_sidebar.html.erb +0 -8
- data/app/views/shared/_header_navbar.html.erb +0 -61
- data/app/views/shared/_show_breadcrumbs.html.erb +0 -27
- data/lib/arclight/viewer.rb +0 -45
- data/lib/arclight/viewers/oembed.rb +0 -57
- data/solr/conf/scripts.conf +0 -24
- data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
- data/vendor/assets/javascripts/stickyfill.js +0 -480
@@ -4,8 +4,30 @@ module Arclight
|
|
4
4
|
##
|
5
5
|
# Extends Blacklight::Solr::Document to provide Arclight specific behavior
|
6
6
|
module SolrDocument
|
7
|
-
extend
|
8
|
-
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
attribute :parent_ids, :array, 'parent_ssim'
|
11
|
+
attribute :parent_labels, :array, 'parent_unittitles_ssm'
|
12
|
+
attribute :parent_levels, :array, 'parent_levels_ssm'
|
13
|
+
attribute :unitid, :string, 'unitid_ssm'
|
14
|
+
attribute :extent, :string, 'extent_ssm'
|
15
|
+
attribute :abstract, :string, 'abstract_html_tesm'
|
16
|
+
attribute :scope, :string, 'scopecontent_html_tesm'
|
17
|
+
attribute :creator, :string, 'creator_ssm'
|
18
|
+
attribute :level, :string, 'level_ssm'
|
19
|
+
attribute :terms, :string, 'userestrict_html_tesm'
|
20
|
+
# Restrictions for component sidebar
|
21
|
+
attribute :parent_restrictions, :string, 'parent_access_restrict_tesm'
|
22
|
+
# Terms for component sidebar
|
23
|
+
attribute :parent_terms, :string, 'parent_access_terms_tesm'
|
24
|
+
attribute :reference, :string, 'ref_ssm'
|
25
|
+
attribute :normalized_title, :string, 'normalized_title_ssm'
|
26
|
+
attribute :normalized_date, :string, 'normalized_date_ssm'
|
27
|
+
attribute :total_component_count, :string, 'total_component_count_is'
|
28
|
+
attribute :online_item_count, :string, 'online_item_count_is'
|
29
|
+
attribute :last_indexed, :date, 'timestamp'
|
30
|
+
end
|
9
31
|
|
10
32
|
def repository_config
|
11
33
|
return unless repository
|
@@ -13,61 +35,50 @@ module Arclight
|
|
13
35
|
@repository_config ||= Arclight::Repository.find_by(name: repository)
|
14
36
|
end
|
15
37
|
|
16
|
-
def
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def parent_labels
|
21
|
-
fetch('parent_unittitles_ssm', [])
|
22
|
-
end
|
23
|
-
|
24
|
-
def parent_levels
|
25
|
-
fetch('parent_levels_ssm', [])
|
26
|
-
end
|
27
|
-
|
28
|
-
def parent_document
|
29
|
-
self.class.new fetch('parent').fetch('docs', []).first
|
38
|
+
def parents
|
39
|
+
@parents ||= Arclight::Parents.from_solr_document(self).as_parents
|
30
40
|
end
|
31
41
|
|
42
|
+
# Get this document's EAD ID, or fall back to the collection (especially
|
43
|
+
# for components that may not have their own.
|
32
44
|
def eadid
|
33
|
-
|
45
|
+
first('ead_ssi')&.strip || collection&.first('ead_ssi')&.strip
|
34
46
|
end
|
35
47
|
|
36
|
-
def
|
37
|
-
|
48
|
+
def normalized_eadid
|
49
|
+
Arclight::NormalizedId.new(eadid).to_s
|
38
50
|
end
|
39
51
|
|
40
52
|
def repository
|
41
|
-
first('repository_ssm')
|
53
|
+
first('repository_ssm') || collection&.first('repository_ssm')
|
42
54
|
end
|
43
55
|
|
44
56
|
def repository_and_unitid
|
45
57
|
[repository, unitid].compact.join(': ')
|
46
58
|
end
|
47
59
|
|
48
|
-
|
49
|
-
|
50
|
-
|
60
|
+
# @return [SolrDocument] a SolrDocument representing the EAD collection
|
61
|
+
# that this document belongs to
|
62
|
+
def collection
|
63
|
+
return self if collection?
|
51
64
|
|
52
|
-
|
53
|
-
first('collection_unitid_ssm')
|
65
|
+
@collection ||= self.class.new(self['collection']&.dig('docs', 0), @response)
|
54
66
|
end
|
55
67
|
|
56
|
-
def
|
57
|
-
|
68
|
+
def collection_name
|
69
|
+
collection&.normalized_title
|
58
70
|
end
|
59
71
|
|
60
|
-
def
|
61
|
-
|
62
|
-
render_html_tags(value: [value]) if value.present?
|
72
|
+
def collection_unitid
|
73
|
+
collection&.unitid
|
63
74
|
end
|
64
75
|
|
65
|
-
def
|
66
|
-
|
76
|
+
def abstract_or_scope
|
77
|
+
abstract || scope
|
67
78
|
end
|
68
79
|
|
69
80
|
def collection_creator
|
70
|
-
|
81
|
+
collection&.creator
|
71
82
|
end
|
72
83
|
|
73
84
|
def online_content?
|
@@ -75,41 +86,19 @@ module Arclight
|
|
75
86
|
end
|
76
87
|
|
77
88
|
def number_of_children
|
78
|
-
first('
|
89
|
+
first('child_component_count_isi') || 0
|
79
90
|
end
|
80
91
|
|
81
92
|
def children?
|
82
93
|
number_of_children.positive?
|
83
94
|
end
|
84
95
|
|
85
|
-
def reference
|
86
|
-
first('ref_ssm')
|
87
|
-
end
|
88
|
-
|
89
96
|
def component_level
|
90
97
|
first('component_level_isim')
|
91
98
|
end
|
92
99
|
|
93
|
-
def
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
def digital_object_viewer
|
98
|
-
@digital_object_viewer ||= Arclight::Viewer.render(self)
|
99
|
-
end
|
100
|
-
|
101
|
-
def terms
|
102
|
-
render_html_tags(value: [first('userestrict_ssm')])
|
103
|
-
end
|
104
|
-
|
105
|
-
# Restrictions for component sidebar
|
106
|
-
def parent_restrictions
|
107
|
-
render_html_tags(value: [first('parent_access_restrict_ssm')])
|
108
|
-
end
|
109
|
-
|
110
|
-
# Terms for component sidebar
|
111
|
-
def parent_terms
|
112
|
-
render_html_tags(value: [first('parent_access_terms_ssm')])
|
100
|
+
def collection?
|
101
|
+
level&.parameterize == 'collection'
|
113
102
|
end
|
114
103
|
|
115
104
|
def digital_objects
|
@@ -122,26 +111,13 @@ module Arclight
|
|
122
111
|
end
|
123
112
|
|
124
113
|
def containers
|
125
|
-
#
|
114
|
+
# NOTE: that .titlecase strips punctuation, like hyphens, we want to keep
|
126
115
|
fetch('containers_ssim', []).map(&:capitalize)
|
127
116
|
end
|
128
117
|
|
129
|
-
def normalized_title
|
130
|
-
first('normalized_title_ssm')
|
131
|
-
end
|
132
|
-
|
133
|
-
def normalized_date
|
134
|
-
first('normalized_date_ssm')
|
135
|
-
end
|
136
|
-
|
137
118
|
# @return [Array<String>] with embedded highlights using <em>...</em>
|
138
119
|
def highlights
|
139
|
-
|
140
|
-
return if highlight_response.blank? ||
|
141
|
-
highlight_response[id].blank? ||
|
142
|
-
highlight_response[id][:text].blank?
|
143
|
-
|
144
|
-
highlight_response[id][:text]
|
120
|
+
highlight_field(CatalogController.blacklight_config.highlight_field)
|
145
121
|
end
|
146
122
|
|
147
123
|
# Factory method for constructing the Object modeling downloads
|
@@ -149,5 +125,26 @@ module Arclight
|
|
149
125
|
def downloads
|
150
126
|
@downloads ||= DocumentDownloads.new(self)
|
151
127
|
end
|
128
|
+
|
129
|
+
def ead_file
|
130
|
+
@ead_file ||= begin
|
131
|
+
files = Arclight::DocumentDownloads.new(self, collection_unitid).files
|
132
|
+
files.find do |file|
|
133
|
+
file.type == 'ead'
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def nest_path
|
139
|
+
self['_nest_path_']
|
140
|
+
end
|
141
|
+
|
142
|
+
def root
|
143
|
+
self['_root_'] || self['id']
|
144
|
+
end
|
145
|
+
|
146
|
+
def requestable?
|
147
|
+
repository_config&.request_types&.any?
|
148
|
+
end
|
152
149
|
end
|
153
150
|
end
|
@@ -3,25 +3,52 @@
|
|
3
3
|
module Arclight
|
4
4
|
# Custom presentation methods for show partial
|
5
5
|
class ShowPresenter < Blacklight::ShowPresenter
|
6
|
+
attr_accessor :field_group
|
7
|
+
|
8
|
+
delegate :collection?, to: :document
|
9
|
+
|
6
10
|
def heading
|
7
11
|
document.normalized_title
|
8
12
|
end
|
9
13
|
|
10
14
|
def with_field_group(group)
|
11
|
-
|
12
|
-
|
15
|
+
if block_given?
|
16
|
+
old_group = field_group
|
17
|
+
|
18
|
+
begin
|
19
|
+
self.field_group = group
|
20
|
+
yield(self)
|
21
|
+
ensure
|
22
|
+
self.field_group = old_group if block_given?
|
23
|
+
end
|
24
|
+
else
|
25
|
+
dup.tap { |x| x.field_group = group }
|
26
|
+
end
|
13
27
|
end
|
14
28
|
|
15
29
|
private
|
16
30
|
|
17
|
-
|
18
|
-
|
31
|
+
# @return [Hash<String,Configuration::Field>] all the fields for this index view
|
32
|
+
def fields
|
33
|
+
if field_group
|
34
|
+
configuration["#{field_group}s"] || []
|
35
|
+
else
|
36
|
+
super
|
37
|
+
end
|
19
38
|
end
|
20
39
|
|
21
|
-
attr_writer :field_group
|
22
|
-
|
23
40
|
def field_config(field)
|
24
|
-
|
41
|
+
return super unless field_group
|
42
|
+
|
43
|
+
fields.fetch(field) do
|
44
|
+
if defined?(Blacklight::Configuration::NullDisplayField)
|
45
|
+
# For Blacklight 8:
|
46
|
+
Blacklight::Configuration::NullDisplayField.new(field)
|
47
|
+
else
|
48
|
+
# Blacklight 7
|
49
|
+
Blacklight::Configuration::NullField.new(field)
|
50
|
+
end
|
51
|
+
end
|
25
52
|
end
|
26
53
|
end
|
27
54
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<% if
|
2
|
-
<div class='
|
1
|
+
<% if document.requestable? %>
|
2
|
+
<div class='al-request'>
|
3
3
|
<% document.repository_config.available_request_types.each do |request_type| %>
|
4
4
|
<%= render partial: "arclight/requests/#{request_type}", locals: { document: document } %>
|
5
5
|
<% end %>
|
@@ -1,59 +1,40 @@
|
|
1
|
-
<div class="al-repository">
|
1
|
+
<div class="mb-3 mx-auto al-repository">
|
2
2
|
<div class="container">
|
3
3
|
<div class='row'>
|
4
|
-
<div class='col-2 align-self-center al-repository-thumbnail
|
5
|
-
<%= image_tag repository.thumbnail_url, alt: repository.name, class: 'img-fluid' %>
|
4
|
+
<div class='col-2 align-self-center d-none d-lg-block al-repository-thumbnail'>
|
5
|
+
<%= image_tag repository.thumbnail_url, alt: repository.name, class: 'img-fluid d-block mx-auto' %>
|
6
6
|
</div>
|
7
7
|
|
8
|
-
<div class="col-sm-12 col-lg-10 al-repository-information">
|
9
|
-
<%= content_tag(params[:id] == repository.slug ? :h1 : :h2, class: 'h5 repo-name') do %>
|
10
|
-
|
8
|
+
<div class="col-sm-12 col-lg-10 py-3 al-repository-information">
|
9
|
+
<%= content_tag(params[:id] == repository.slug ? :h1 : :h2, class: 'h5 mb-3 repo-name') do %>
|
10
|
+
<%= link_to_unless(params[:id] == repository.slug, repository.name, arclight_engine.repository_path(repository.slug)) %>
|
11
11
|
<% end %>
|
12
|
-
<div class='row no-gutters justify-content-
|
13
|
-
<div class='col-4 col-md-3 al-repository-contact'>
|
14
|
-
<address>
|
15
|
-
<div class="al-repository-street-address">
|
16
|
-
|
17
|
-
|
18
|
-
<div class='al-repository-street-address-<%= f %>'>
|
19
|
-
<%= repository.send(f) %>
|
20
|
-
</div>
|
21
|
-
<% end %>
|
22
|
-
<% end %>
|
23
|
-
</div>
|
12
|
+
<div class='row no-gutters justify-content-center'>
|
13
|
+
<div class='col-12 col-sm-4 col-md-3 fw-light al-repository-contact'>
|
14
|
+
<address class="text-break">
|
15
|
+
<div class="mb-3 al-repository-street-address">
|
16
|
+
<%= repository.location %>
|
17
|
+
</div>
|
24
18
|
|
25
19
|
<div class="al-repository-contact-info">
|
26
|
-
|
27
|
-
<div class='al-repository-contact-info-phone'>
|
28
|
-
<%= repository.phone %>
|
29
|
-
</div>
|
30
|
-
<% end %>
|
31
|
-
<% if repository.contact_info.present? %>
|
32
|
-
<div class='al-repository-contact-info-contact_info'>
|
33
|
-
<% if repository.contact_info.include?('@') %>
|
34
|
-
<%= mail_to repository.contact_info %>
|
35
|
-
<% else %>
|
36
|
-
<%= repository.contact_info %>
|
37
|
-
<% end %>
|
38
|
-
</div>
|
39
|
-
<% end %>
|
20
|
+
<%= repository.contact %>
|
40
21
|
</div>
|
41
22
|
</address>
|
42
23
|
</div>
|
43
24
|
|
44
|
-
<div class='col al-repository-description'>
|
25
|
+
<div class='col-12 col-sm mt-3 mt-sm-0 al-repository-description'>
|
45
26
|
<%= repository.description %>
|
46
27
|
</div>
|
47
28
|
|
48
29
|
<% if on_repositories_index? %>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
<%= t(:'arclight.views.repositories.number_of_collections', count: repository.collection_count) %>
|
53
|
-
</span>
|
54
|
-
</div>
|
55
|
-
<%= link_to(t(:'arclight.views.repositories.view_more'), arclight_engine.repository_path(repository.slug), class: 'btn btn-secondary btn-sm') %>
|
30
|
+
<div class='col-12 col-lg-2 mt-3 mt-lg-0 text-center al-repository-extra'>
|
31
|
+
<div class='mb-1 fst-italic fw-bold'>
|
32
|
+
<%= t(:'arclight.views.repositories.number_of_collections', count: repository.collection_count) %>
|
56
33
|
</div>
|
34
|
+
<% if repository.collection_count&.positive? %>
|
35
|
+
<%= link_to(t(:'arclight.views.repositories.view_more'), arclight_engine.repository_path(repository.slug), class: 'btn btn-secondary btn-sm') %>
|
36
|
+
<% end %>
|
37
|
+
</div>
|
57
38
|
<% end %>
|
58
39
|
</div>
|
59
40
|
</div>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<% @page_title = t(:'arclight.views.repositories.show', name: @repository.name) %>
|
2
|
+
<% breadcrumb :repository, @repository %>
|
2
3
|
<%= render 'shared/breadcrumbs' %>
|
3
4
|
<%= render @repository %>
|
4
5
|
<div class="row al-repository-show-header">
|
@@ -16,16 +17,13 @@
|
|
16
17
|
|
17
18
|
<div class="row">
|
18
19
|
<% @collections.each do |document| %>
|
20
|
+
<% doc_presenter = Arclight::IndexPresenter.new(document, self, CatalogController.blacklight_config) %>
|
19
21
|
<div class="col-md-12">
|
20
22
|
<div class='al-document-title-bar'>
|
21
23
|
<div class='row'>
|
22
24
|
<div class='col-md-10 col-lg-9'>
|
23
|
-
<h3 class="h5"><%= link_to
|
24
|
-
<%=
|
25
|
-
<%= content_tag('div', 'data-arclight-truncate' => true) do %>
|
26
|
-
<%= document.abstract_or_scope %>
|
27
|
-
<% end %>
|
28
|
-
<% end if document.abstract_or_scope %>
|
25
|
+
<h3 class="h5"><%= link_to doc_presenter.label, solr_document_path(document.id) %></h3>
|
26
|
+
<%= render Arclight::IndexMetadataFieldComponent.with_collection(doc_presenter.field_presenters.select { |p| p.field_config.repository_context }) %>
|
29
27
|
</div>
|
30
28
|
<% if document.unitid %>
|
31
29
|
<div class='col text-right al-collection-id'>
|
@@ -1,9 +1,8 @@
|
|
1
|
-
<%
|
2
|
-
<% aeon_external_request ||= Arclight::Requests::AeonExternalRequest.new(document, show_presenter(document)) %>
|
1
|
+
<% aeon_external_request ||= Arclight::Requests::AeonExternalRequest.new(document, document_presenter(document)) %>
|
3
2
|
|
4
|
-
<%= form_tag aeon_external_request.url, method: :post, class: 'al-request-form' do |f| %>
|
5
|
-
<%=
|
6
|
-
<button type='submit' class='al-request-button btn-
|
3
|
+
<%= form_tag aeon_external_request.url, method: :post, class: 'd-inline-block al-request-form' do |f| %>
|
4
|
+
<%= render(Blacklight::HiddenSearchStateComponent.new(params: aeon_external_request.form_mapping)) %>
|
5
|
+
<button type='submit' class='al-request-button btn btn-primary btn-sm me-1'>
|
7
6
|
<%= t('arclight.request.container') %>
|
8
7
|
</button>
|
9
8
|
<% end %>
|
@@ -1,7 +1,6 @@
|
|
1
|
-
<%
|
2
|
-
<% if parsed_files = ead_files(document) %>
|
1
|
+
<% if parsed_files = document.ead_file %>
|
3
2
|
<% aeon_web_ead ||= Arclight::Requests::AeonWebEad.new(document, parsed_files.href) %>
|
4
|
-
<% aeon_web_ead_url = aeon_web_ead
|
3
|
+
<% aeon_web_ead_url = aeon_web_ead&.url %>
|
5
4
|
|
6
|
-
<%= link_to 'Request', aeon_web_ead_url, class: 'btn btn-
|
5
|
+
<%= link_to 'Request', aeon_web_ead_url, class: 'al-request-button btn btn-primary btn-sm me-1' %>
|
7
6
|
<% end %>
|
@@ -1,12 +1,10 @@
|
|
1
|
-
<%
|
2
|
-
<% google_form ||= Arclight::Requests::GoogleForm.new(document, show_presenter(document), solr_document_path(document)) %>
|
1
|
+
<% google_form ||= Arclight::Requests::GoogleForm.new(document, document_presenter(document), solr_document_path(document)) %>
|
3
2
|
|
4
|
-
<%= form_tag google_form.url, method: :get, class: 'al-request-form' do |f| %>
|
3
|
+
<%= form_tag google_form.url, method: :get, class: 'd-inline-block al-request-form' do |f| %>
|
5
4
|
<% google_form.form_mapping.each do |key, value| %>
|
6
|
-
<%= hidden_field_tag value, google_form.
|
5
|
+
<%= hidden_field_tag value, google_form.public_send(key) %>
|
7
6
|
<% end %>
|
8
|
-
|
9
|
-
<button type='submit' class='btn btn-secondary btn-sm'>
|
7
|
+
<button type='submit' class='al-request-button btn btn-primary btn-sm me-1'>
|
10
8
|
<%= t('arclight.request.container') %>
|
11
9
|
</button>
|
12
10
|
<% end %>
|
@@ -1,21 +1,4 @@
|
|
1
1
|
<% # container for all groups in index view -%>
|
2
2
|
<div class='al-grouped-results'>
|
3
|
-
|
4
|
-
<% parent_document = g.docs.first.parent_document %>
|
5
|
-
<%= render_document_partial(parent_document, :group_header) %>
|
6
|
-
<div class="grouped-documents">
|
7
|
-
<div class="al-grouped-more">
|
8
|
-
<% if g.total > 3 %>
|
9
|
-
<%= t('arclight.views.index.top_group_results', count: 3) %>
|
10
|
-
<%= link_to(
|
11
|
-
t('arclight.views.index.all_group_results', count: g.total),
|
12
|
-
search_catalog_path(search_within_collection(parent_document.collection_name, search_without_group)))
|
13
|
-
%>
|
14
|
-
<% else %>
|
15
|
-
<%= t('arclight.views.index.group_results_count', count: g.total) %>
|
16
|
-
<% end %>
|
17
|
-
</div>
|
18
|
-
<%= render_grouped_documents(g.docs) %>
|
19
|
-
</div>
|
20
|
-
<% end %>
|
3
|
+
<%= render (blacklight_config.view_config(document_index_view_type).group_component || Arclight::GroupComponent).with_collection(@response.groups) %>
|
21
4
|
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<div class="result-type-group
|
1
|
+
<div class="result-type-group btn-group" role="group" aria-label="<%= t('arclight.views.index.group_results') %>">
|
2
2
|
<%= link_to t('arclight.views.index.all_results'),
|
3
3
|
search_catalog_path(search_without_group),
|
4
4
|
class: "btn btn-outline-secondary #{'active' unless grouped?}"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<p><%= params[:id] %></p>
|
2
|
+
<%= turbo_frame_tag "al-hierarchy-#{params[:id]}#{params[:key]}" do %>
|
3
|
+
<%= render partial: "paginate_compact", object: @response if show_pagination? && params[:paginate] %>
|
4
|
+
<% presenters = @response.documents.map{ | document | document_presenter(document) } %>
|
5
|
+
<% if params[:hierarchy].present? %>
|
6
|
+
<ul class="documents">
|
7
|
+
<%= render Arclight::DocumentCollectionHierarchyComponent.with_collection(presenters,
|
8
|
+
blacklight_config: blacklight_config,
|
9
|
+
nest_path: params[:nest_path]) %>
|
10
|
+
</ul>
|
11
|
+
<% else %>
|
12
|
+
<table class="table table-striped">
|
13
|
+
<%= render Arclight::DocumentCollectionContextComponent.with_collection(presenters,
|
14
|
+
blacklight_config: blacklight_config) %>
|
15
|
+
</table>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<%= render 'results_pagination' if params[:paginate] %>
|
19
|
+
<% end %>
|
@@ -1,8 +1,17 @@
|
|
1
|
-
<%
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
<% content_for(:sidebar) do %>
|
2
|
+
<% conf = blacklight_config.view_config(document_index_view_type) %>
|
3
|
+
<%= render conf.sidebar_component.new(blacklight_config: blacklight_config,
|
4
|
+
response: @response,
|
5
|
+
view_config: conf) %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<% breadcrumb :search_results, search_state %>
|
9
|
+
|
10
|
+
<%= render 'search_results' %>
|
11
|
+
|
12
|
+
<%# override upstream to override the search results header, similar to https://github.com/projectblacklight/blacklight/pull/2831 %>
|
13
|
+
<%# This section can be omitted in Blacklight 8 %>
|
14
|
+
<% content_for(:container_header, flush: true) do -%>
|
15
|
+
<%= render 'search_results_header' %>
|
16
|
+
<%= render 'constraints' %>
|
8
17
|
<% end %>
|
@@ -1,15 +1,3 @@
|
|
1
|
-
<nav class='al-search-breadcrumb' role='navigation' aria-label
|
2
|
-
<%=
|
3
|
-
<span aria-hidden="true"><%= t('arclight.breadcrumb_separator') %></span>
|
4
|
-
<% if collection_active? %>
|
5
|
-
<%= t('arclight.routes.collections') %>
|
6
|
-
<% elsif on_repositories_index? %>
|
7
|
-
<%= t('arclight.routes.repositories') %>
|
8
|
-
<% elsif on_repositories_show? %>
|
9
|
-
<%= link_to t('arclight.routes.repositories'), arclight_engine.repositories_path %>
|
10
|
-
<span aria-hidden="true"><%= t('arclight.breadcrumb_separator') %></span>
|
11
|
-
<%= @repository.name %>
|
12
|
-
<% else %>
|
13
|
-
<%= t('arclight.routes.search_results') %>
|
14
|
-
<% end %>
|
1
|
+
<nav class='al-search-breadcrumb' role='navigation' aria-label="<%= t('arclight.breadcrumbs.aria_label') %>">
|
2
|
+
<%= breadcrumbs style: :bootstrap5, aria_current: 'page', autoroot: true %>
|
15
3
|
</nav>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<li class="nav-item <%= repositories_active_class %>">
|
2
2
|
<%= link_to t('arclight.routes.repositories'), arclight_engine.repositories_path, class: 'nav-link' %>
|
3
3
|
</li>
|
4
|
-
<li class="nav-item ml-3 <%= collection_active_class %>">
|
4
|
+
<li class="nav-item ml-3 ms-3 <%= collection_active_class %>">
|
5
5
|
<%= link_to t('arclight.routes.collections'), arclight_engine.collections_path, class: 'nav-link' %>
|
6
6
|
</li>
|
data/arclight.gemspec
CHANGED
@@ -12,31 +12,33 @@ Gem::Specification.new do |spec|
|
|
12
12
|
|
13
13
|
spec.summary = ''
|
14
14
|
spec.description = ''
|
15
|
-
spec.homepage = 'https://github.com/
|
15
|
+
spec.homepage = 'https://github.com/projectblacklight/arclight'
|
16
16
|
spec.license = 'Apache-2.0'
|
17
17
|
|
18
|
-
spec.
|
18
|
+
spec.required_ruby_version = '>= 3.0.0'
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
20
|
f.match(%r{^(test|spec|features)/})
|
20
21
|
end
|
21
22
|
spec.bindir = 'exe'
|
22
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
24
|
spec.require_paths = ['lib']
|
24
25
|
|
25
|
-
spec.add_dependency 'blacklight', '
|
26
|
-
spec.add_dependency '
|
27
|
-
spec.add_dependency 'rails', '
|
28
|
-
spec.add_dependency 'sprockets-bumble_d'
|
26
|
+
spec.add_dependency 'blacklight', '>= 8.0.0.beta', '< 9'
|
27
|
+
spec.add_dependency 'gretel'
|
28
|
+
spec.add_dependency 'rails', '~> 7.0'
|
29
29
|
spec.add_dependency 'traject', '~> 3.0'
|
30
|
-
spec.add_dependency 'traject_plus', '~>
|
30
|
+
spec.add_dependency 'traject_plus', '~> 2.0'
|
31
31
|
|
32
|
-
spec.add_development_dependency 'bundler'
|
32
|
+
spec.add_development_dependency 'bundler'
|
33
33
|
spec.add_development_dependency 'capybara'
|
34
34
|
spec.add_development_dependency 'engine_cart'
|
35
35
|
spec.add_development_dependency 'i18n-tasks'
|
36
|
-
spec.add_development_dependency 'rake', '
|
36
|
+
spec.add_development_dependency 'rake', '>= 12.0'
|
37
37
|
spec.add_development_dependency 'rspec-rails'
|
38
|
-
spec.add_development_dependency 'rubocop', '~>
|
39
|
-
spec.add_development_dependency 'rubocop-
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 1.8'
|
39
|
+
spec.add_development_dependency 'rubocop-rails', '~> 2.8'
|
40
|
+
spec.add_development_dependency 'rubocop-rake'
|
41
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.3'
|
40
42
|
spec.add_development_dependency 'selenium-webdriver'
|
41
43
|
spec.add_development_dependency 'simplecov'
|
42
44
|
spec.add_development_dependency 'solr_wrapper'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Root crumb
|
4
|
+
crumb :root do
|
5
|
+
link t('arclight.routes.home'), root_path
|
6
|
+
end
|
7
|
+
|
8
|
+
crumb :repositories do
|
9
|
+
link t('arclight.routes.repositories'), arclight_engine.repositories_path
|
10
|
+
end
|
11
|
+
|
12
|
+
crumb :repository do |repository|
|
13
|
+
link repository.name, arclight_engine.repository_path(repository.slug)
|
14
|
+
|
15
|
+
parent :repositories
|
16
|
+
end
|
17
|
+
|
18
|
+
crumb :search_results do |search_state|
|
19
|
+
if search_state.filter('level').values == ['Collection']
|
20
|
+
link t('arclight.routes.collections')
|
21
|
+
else
|
22
|
+
link t('arclight.routes.search_results')
|
23
|
+
end
|
24
|
+
end
|
data/config/i18n-tasks.yml
CHANGED
@@ -53,16 +53,17 @@ data:
|
|
53
53
|
# Find translate calls
|
54
54
|
search:
|
55
55
|
## Paths or `File.find` patterns to search in:
|
56
|
-
|
57
|
-
|
56
|
+
paths:
|
57
|
+
- app/
|
58
|
+
- config/breadcrumbs.rb
|
58
59
|
|
59
60
|
## Root directories for relative keys resolution.
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
relative_roots:
|
62
|
+
- app/components
|
63
|
+
- app/controllers
|
64
|
+
- app/helpers
|
65
|
+
- app/presenters
|
66
|
+
- app/views
|
66
67
|
|
67
68
|
## Files or `File.fnmatch` patterns to exclude from search. Some files are always excluded regardless of this setting:
|
68
69
|
## %w(*.jpg *.png *.gif *.svg *.ico *.eot *.otf *.ttf *.woff *.woff2 *.pdf *.css *.sass *.scss *.less *.yml *.json)
|