arclight 0.3.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.eslintrc +11 -4
- data/.github/workflows/ruby.yml +51 -0
- data/.gitignore +1 -0
- data/.rspec +0 -1
- data/.rubocop.yml +498 -21
- data/.rubocop_todo.yml +69 -86
- data/.solr_wrapper +2 -1
- data/CONTRIBUTING.md +5 -5
- data/CONTRIBUTORS.md +1 -1
- data/Gemfile +15 -10
- data/README.md +22 -17
- data/app/assets/images/blacklight/bookmark.svg +1 -1
- data/app/assets/images/blacklight/collection.svg +1 -1
- data/app/assets/images/blacklight/compact.svg +1 -1
- data/app/assets/images/blacklight/container.svg +1 -1
- data/app/assets/images/blacklight/ead.svg +1 -1
- data/app/assets/images/blacklight/file.svg +1 -1
- data/app/assets/images/blacklight/folder.svg +1 -1
- data/app/assets/images/blacklight/list.svg +1 -1
- data/app/assets/images/blacklight/online.svg +1 -1
- data/app/assets/images/blacklight/pdf.svg +1 -1
- data/app/assets/images/blacklight/repository.svg +1 -1
- data/app/assets/javascripts/arclight/arclight.js +4 -8
- data/app/assets/javascripts/arclight/oembed_controller.js +58 -0
- data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
- data/app/assets/stylesheets/arclight/application.scss +3 -5
- data/app/assets/stylesheets/arclight/build.scss +4 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +108 -130
- data/app/assets/stylesheets/arclight/modules/icons.scss +20 -0
- data/app/assets/stylesheets/arclight/modules/layout.scss +129 -100
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +23 -96
- 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_form.scss +9 -0
- data/app/assets/stylesheets/arclight/modules/search_results.scss +95 -45
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
- data/app/assets/stylesheets/arclight/modules/truncator.scss +58 -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 +50 -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 +39 -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 +50 -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 +20 -0
- data/app/components/arclight/document_components_hierarchy_component.rb +34 -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/expand_hierarchy_button_component.html.erb +5 -0
- data/app/components/arclight/expand_hierarchy_button_component.rb +16 -0
- data/app/components/arclight/group_component.html.erb +34 -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 +16 -0
- data/app/components/arclight/index_metadata_field_component.rb +20 -0
- data/app/components/arclight/masthead_component.html.erb +17 -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 +17 -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 +27 -0
- data/app/components/arclight/search_bar_component.rb +32 -0
- data/app/components/arclight/search_result_breadcrumbs_component.html.erb +6 -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 +18 -0
- data/app/components/arclight/search_result_title_component.html.erb +15 -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 +91 -7
- data/app/helpers/arclight/field_config_helpers.rb +26 -0
- data/app/helpers/arclight_helper.rb +24 -251
- data/app/models/arclight/document_downloads.rb +12 -15
- data/app/models/arclight/parent.rb +6 -8
- data/app/models/arclight/parents.rb +7 -4
- 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 +80 -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/_document_list.html.erb +8 -0
- data/app/views/catalog/_group.html.erb +2 -19
- 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 +17 -15
- 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_date.rb +5 -10
- data/lib/arclight/normalized_id.rb +6 -2
- data/lib/arclight/normalized_title.rb +2 -0
- data/lib/arclight/repository.rb +46 -57
- data/lib/arclight/routes/hierarchy.rb +19 -0
- data/lib/arclight/routes.rb +8 -0
- data/lib/arclight/traject/ead2_component_config.rb +335 -0
- data/lib/arclight/traject/ead2_config.rb +120 -298
- 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 +97 -11
- data/lib/generators/arclight/templates/arclight.scss +6 -3
- data/lib/generators/arclight/templates/catalog_controller.rb +193 -163
- data/lib/generators/arclight/templates/config/locales/arclight.en.yml +61 -0
- data/lib/generators/arclight/templates/config/repositories.yml +22 -29
- data/lib/tasks/index.rake +14 -17
- data/package.json +13 -14
- data/solr/conf/schema.xml +49 -39
- data/solr/conf/solrconfig.xml +78 -58
- data/tasks/arclight.rake +17 -9
- data/template.rb +6 -7
- metadata +159 -127
- data/.babelrc +0 -3
- data/.travis.yml +0 -28
- 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 -374
- data/app/assets/javascripts/arclight/oembed_viewer.js +0 -46
- 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/lib/generators/arclight/templates/arclight.js +0 -2
- data/solr/conf/scripts.conf +0 -24
- data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
- data/vendor/assets/javascripts/stickyfill.js +0 -480
- /data/app/assets/images/{blacklight → arclight}/logo.png +0 -0
|
@@ -4,8 +4,34 @@ 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 :collection_id, :string, '_root_'
|
|
11
|
+
Arclight.deprecation.deprecate_methods(self, collection_id: 'Use `root` instead')
|
|
12
|
+
attribute :parent_ids, :array, 'parent_ids_ssim'
|
|
13
|
+
attribute :legacy_parent_ids, :array, 'parent_ssim'
|
|
14
|
+
Arclight.deprecation.deprecate_methods(self, legacy_parent_ids: 'Use `parent_ids` instead')
|
|
15
|
+
attribute :parent_labels, :array, 'parent_unittitles_ssm'
|
|
16
|
+
attribute :parent_levels, :array, 'parent_levels_ssm'
|
|
17
|
+
attribute :unitid, :string, 'unitid_ssm'
|
|
18
|
+
attribute :extent, :array, 'extent_ssm'
|
|
19
|
+
attribute :abstract, :string, 'abstract_html_tesm'
|
|
20
|
+
attribute :scope, :string, 'scopecontent_html_tesm'
|
|
21
|
+
attribute :creator, :string, 'creator_ssm'
|
|
22
|
+
attribute :level, :string, 'level_ssm'
|
|
23
|
+
attribute :terms, :string, 'userestrict_html_tesm'
|
|
24
|
+
# Restrictions for component sidebar
|
|
25
|
+
attribute :parent_restrictions, :string, 'parent_access_restrict_tesm'
|
|
26
|
+
# Terms for component sidebar
|
|
27
|
+
attribute :parent_terms, :string, 'parent_access_terms_tesm'
|
|
28
|
+
attribute :reference, :string, 'ref_ssm'
|
|
29
|
+
attribute :normalized_title, :string, 'normalized_title_ssm'
|
|
30
|
+
attribute :normalized_date, :string, 'normalized_date_ssm'
|
|
31
|
+
attribute :total_component_count, :string, 'total_component_count_is'
|
|
32
|
+
attribute :online_item_count, :string, 'online_item_count_is'
|
|
33
|
+
attribute :last_indexed, :date, 'timestamp'
|
|
34
|
+
end
|
|
9
35
|
|
|
10
36
|
def repository_config
|
|
11
37
|
return unless repository
|
|
@@ -13,61 +39,51 @@ module Arclight
|
|
|
13
39
|
@repository_config ||= Arclight::Repository.find_by(name: repository)
|
|
14
40
|
end
|
|
15
41
|
|
|
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
|
|
42
|
+
def parents
|
|
43
|
+
@parents ||= Arclight::Parents.from_solr_document(self).as_parents
|
|
30
44
|
end
|
|
31
45
|
|
|
46
|
+
# Get this document's EAD ID, or fall back to the collection (especially
|
|
47
|
+
# for components that may not have their own.
|
|
32
48
|
def eadid
|
|
33
|
-
|
|
49
|
+
first('ead_ssi')&.strip || collection&.first('ead_ssi')&.strip
|
|
34
50
|
end
|
|
35
51
|
|
|
36
|
-
def
|
|
37
|
-
|
|
52
|
+
def normalized_eadid
|
|
53
|
+
Arclight::NormalizedId.new(eadid).to_s
|
|
38
54
|
end
|
|
55
|
+
Arclight.deprecation.deprecate_methods(self, normalized_eadid: 'Use `root` instead')
|
|
39
56
|
|
|
40
57
|
def repository
|
|
41
|
-
first('repository_ssm')
|
|
58
|
+
first('repository_ssm') || collection&.first('repository_ssm')
|
|
42
59
|
end
|
|
43
60
|
|
|
44
61
|
def repository_and_unitid
|
|
45
62
|
[repository, unitid].compact.join(': ')
|
|
46
63
|
end
|
|
47
64
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
# @return [SolrDocument] a SolrDocument representing the EAD collection
|
|
66
|
+
# that this document belongs to
|
|
67
|
+
def collection
|
|
68
|
+
return self if collection?
|
|
51
69
|
|
|
52
|
-
|
|
53
|
-
first('collection_unitid_ssm')
|
|
70
|
+
@collection ||= self.class.new(self['collection']&.dig('docs', 0), @response)
|
|
54
71
|
end
|
|
55
72
|
|
|
56
|
-
def
|
|
57
|
-
|
|
73
|
+
def collection_name
|
|
74
|
+
collection&.normalized_title
|
|
58
75
|
end
|
|
59
76
|
|
|
60
|
-
def
|
|
61
|
-
|
|
62
|
-
render_html_tags(value: [value]) if value.present?
|
|
77
|
+
def collection_unitid
|
|
78
|
+
collection&.unitid
|
|
63
79
|
end
|
|
64
80
|
|
|
65
|
-
def
|
|
66
|
-
|
|
81
|
+
def abstract_or_scope
|
|
82
|
+
abstract || scope
|
|
67
83
|
end
|
|
68
84
|
|
|
69
85
|
def collection_creator
|
|
70
|
-
|
|
86
|
+
collection&.creator
|
|
71
87
|
end
|
|
72
88
|
|
|
73
89
|
def online_content?
|
|
@@ -75,41 +91,19 @@ module Arclight
|
|
|
75
91
|
end
|
|
76
92
|
|
|
77
93
|
def number_of_children
|
|
78
|
-
first('
|
|
94
|
+
first('child_component_count_isi') || 0
|
|
79
95
|
end
|
|
80
96
|
|
|
81
97
|
def children?
|
|
82
98
|
number_of_children.positive?
|
|
83
99
|
end
|
|
84
100
|
|
|
85
|
-
def reference
|
|
86
|
-
first('ref_ssm')
|
|
87
|
-
end
|
|
88
|
-
|
|
89
101
|
def component_level
|
|
90
102
|
first('component_level_isim')
|
|
91
103
|
end
|
|
92
104
|
|
|
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')])
|
|
105
|
+
def collection?
|
|
106
|
+
level&.parameterize == 'collection'
|
|
113
107
|
end
|
|
114
108
|
|
|
115
109
|
def digital_objects
|
|
@@ -122,26 +116,18 @@ module Arclight
|
|
|
122
116
|
end
|
|
123
117
|
|
|
124
118
|
def containers
|
|
125
|
-
#
|
|
126
|
-
fetch('containers_ssim', []).
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
def normalized_title
|
|
130
|
-
first('normalized_title_ssm')
|
|
131
|
-
end
|
|
119
|
+
# NOTE: Keep uppercase characters if present, but upcase the first if not already
|
|
120
|
+
containers_field = fetch('containers_ssim', []).reject(&:empty?)
|
|
121
|
+
return [] if containers_field.blank?
|
|
132
122
|
|
|
133
|
-
|
|
134
|
-
|
|
123
|
+
containers_field.map do |container|
|
|
124
|
+
container.dup.sub!(/\A./, &:upcase)
|
|
125
|
+
end
|
|
135
126
|
end
|
|
136
127
|
|
|
137
128
|
# @return [Array<String>] with embedded highlights using <em>...</em>
|
|
138
129
|
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]
|
|
130
|
+
highlight_field(CatalogController.blacklight_config.highlight_field)
|
|
145
131
|
end
|
|
146
132
|
|
|
147
133
|
# Factory method for constructing the Object modeling downloads
|
|
@@ -149,5 +135,26 @@ module Arclight
|
|
|
149
135
|
def downloads
|
|
150
136
|
@downloads ||= DocumentDownloads.new(self)
|
|
151
137
|
end
|
|
138
|
+
|
|
139
|
+
def ead_file
|
|
140
|
+
@ead_file ||= begin
|
|
141
|
+
files = Arclight::DocumentDownloads.new(self, collection_unitid).files
|
|
142
|
+
files.find do |file|
|
|
143
|
+
file.type == 'ead'
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def nest_path
|
|
149
|
+
self['_nest_path_']
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def root
|
|
153
|
+
self['_root_'] || self['id']
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def requestable?
|
|
157
|
+
repository_config&.request_types&.any?
|
|
158
|
+
end
|
|
152
159
|
end
|
|
153
160
|
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 %>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<% # Override to conditionally add id="documents" on div. When documents are grouped it causes duplicate id issues %>
|
|
2
|
+
<% # https://github.com/projectblacklight/blacklight/blob/v8.1.0/app/views/catalog/_document_list.html.erb %>
|
|
3
|
+
<% # container for all documents in index list view -%>
|
|
4
|
+
<% view_config = local_assigns[:view_config] || blacklight_config&.view_config(document_index_view_type) %>
|
|
5
|
+
<div <%= 'id="documents"'.html_safe unless grouped? %> class="al-document-listings documents-<%= view_config&.key || document_index_view_type %>">
|
|
6
|
+
<% document_presenters = documents.map { |doc| document_presenter(doc) } -%>
|
|
7
|
+
<%= render view_config.document_component.with_collection(document_presenters, partials: view_config.partials, counter_offset: @response&.start || 0) %>
|
|
8
|
+
</div>
|
|
@@ -1,21 +1,4 @@
|
|
|
1
1
|
<% # container for all groups in index view -%>
|
|
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 %>
|
|
2
|
+
<div id="documents" class='al-grouped-results'>
|
|
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
|
|
4
|
+
<li class="nav-item 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
|
@@ -10,35 +10,37 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.authors = ['Darren Hardy', 'Jessie Keck', 'Gordon Leacock', 'Jack Reed']
|
|
11
11
|
spec.email = ['drh@stanford.edu', 'jessie.keck@gmail.com', 'gordonl@umich.edu', 'phillipjreed@gmail.com']
|
|
12
12
|
|
|
13
|
-
spec.summary = ''
|
|
13
|
+
spec.summary = 'A Blacklight-based environment to support discovery and delivery for archives and special collections'
|
|
14
14
|
spec.description = ''
|
|
15
|
-
spec.homepage = 'https://
|
|
16
|
-
spec.
|
|
15
|
+
spec.homepage = 'https://library.stanford.edu/projects/arclight'
|
|
16
|
+
spec.metadata = { 'source_code_uri' => 'https://github.com/projectblacklight/arclight' }
|
|
17
|
+
spec.license = 'Apache-2.0'
|
|
17
18
|
|
|
18
|
-
spec.
|
|
19
|
+
spec.required_ruby_version = '>= 3.0.0'
|
|
20
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
19
21
|
f.match(%r{^(test|spec|features)/})
|
|
20
22
|
end
|
|
21
23
|
spec.bindir = 'exe'
|
|
22
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
23
25
|
spec.require_paths = ['lib']
|
|
24
26
|
|
|
25
|
-
spec.add_dependency 'blacklight', '
|
|
26
|
-
spec.add_dependency '
|
|
27
|
-
spec.add_dependency 'rails', '
|
|
28
|
-
spec.add_dependency 'sprockets-bumble_d'
|
|
27
|
+
spec.add_dependency 'blacklight', '>= 8.0.0', '< 9'
|
|
28
|
+
spec.add_dependency 'gretel'
|
|
29
|
+
spec.add_dependency 'rails', '>= 7.1', '< 9'
|
|
29
30
|
spec.add_dependency 'traject', '~> 3.0'
|
|
30
|
-
spec.add_dependency 'traject_plus', '~>
|
|
31
|
+
spec.add_dependency 'traject_plus', '~> 2.0'
|
|
31
32
|
|
|
32
|
-
spec.add_development_dependency 'bundler'
|
|
33
|
+
spec.add_development_dependency 'bundler'
|
|
33
34
|
spec.add_development_dependency 'capybara'
|
|
34
35
|
spec.add_development_dependency 'engine_cart'
|
|
35
36
|
spec.add_development_dependency 'i18n-tasks'
|
|
36
|
-
spec.add_development_dependency 'rake', '
|
|
37
|
-
spec.add_development_dependency 'rspec-rails'
|
|
38
|
-
spec.add_development_dependency 'rubocop', '~>
|
|
39
|
-
spec.add_development_dependency 'rubocop-
|
|
37
|
+
spec.add_development_dependency 'rake', '>= 12.0'
|
|
38
|
+
spec.add_development_dependency 'rspec-rails'
|
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 1.8'
|
|
40
|
+
spec.add_development_dependency 'rubocop-rails', '~> 2.8'
|
|
41
|
+
spec.add_development_dependency 'rubocop-rake'
|
|
42
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.3'
|
|
40
43
|
spec.add_development_dependency 'selenium-webdriver'
|
|
41
44
|
spec.add_development_dependency 'simplecov'
|
|
42
45
|
spec.add_development_dependency 'solr_wrapper'
|
|
43
|
-
spec.add_development_dependency 'webdrivers'
|
|
44
46
|
end
|