arclight 0.2.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/.all-contributorsrc +450 -0
- data/.codeclimate.yml +5 -0
- data/.eslintrc +14 -4
- data/.github/workflows/ruby.yml +51 -0
- data/.gitignore +1 -0
- data/.rspec +0 -1
- data/.rubocop.yml +504 -8
- data/.rubocop_todo.yml +62 -199
- data/.solr_wrapper +2 -1
- data/CONTRIBUTING.md +5 -5
- data/CONTRIBUTORS.md +79 -0
- data/Gemfile +15 -10
- data/README.md +36 -34
- data/Rakefile +0 -1
- data/app/assets/images/blacklight/bookmark.svg +1 -0
- data/app/assets/images/blacklight/collection.svg +5 -0
- data/app/assets/images/blacklight/compact.svg +1 -25
- data/app/assets/images/blacklight/container.svg +5 -0
- data/app/assets/images/blacklight/ead.svg +1 -0
- data/app/assets/images/blacklight/file.svg +5 -0
- data/app/assets/images/blacklight/folder.svg +1 -0
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/minus.svg +1 -0
- data/app/assets/images/blacklight/online.svg +5 -0
- data/app/assets/images/blacklight/pdf.svg +1 -0
- data/app/assets/images/blacklight/plus.svg +1 -0
- data/app/assets/images/blacklight/repository.svg +1 -0
- data/app/assets/javascripts/arclight/arclight.js +4 -10
- 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 +4 -4
- data/app/assets/stylesheets/arclight/build.scss +4 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +117 -146
- data/app/assets/stylesheets/arclight/modules/highlights.scss +2 -1
- data/app/assets/stylesheets/arclight/modules/icons.scss +20 -0
- data/app/assets/stylesheets/arclight/modules/layout.scss +183 -40
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +24 -75
- data/app/assets/stylesheets/arclight/modules/repositories.scss +3 -7
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +5 -50
- data/app/assets/stylesheets/arclight/modules/search_form.scss +9 -0
- data/app/assets/stylesheets/arclight/modules/search_results.scss +197 -26
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +21 -69
- data/app/assets/stylesheets/arclight/modules/truncator.scss +58 -0
- data/app/assets/stylesheets/arclight/responsive.scss +13 -0
- data/app/assets/stylesheets/arclight/variables.scss +25 -2
- 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/helpers/arclight/ead_format_helpers.rb +309 -0
- data/app/helpers/arclight/field_config_helpers.rb +26 -0
- data/app/helpers/arclight_helper.rb +55 -120
- data/app/models/arclight/document_downloads.rb +122 -0
- data/app/models/arclight/parent.rb +9 -9
- data/app/models/arclight/parents.rb +9 -4
- data/app/models/arclight/requests/aeon_external_request.rb +42 -0
- data/app/models/arclight/requests/aeon_web_ead.rb +52 -0
- data/app/models/arclight/requests/google_form.rb +8 -3
- data/app/models/concerns/arclight/catalog.rb +33 -11
- data/app/models/concerns/arclight/search_behavior.rb +22 -21
- data/app/models/concerns/arclight/solr_document.rb +88 -59
- data/app/presenters/arclight/show_presenter.rb +34 -7
- data/app/views/arclight/_requests.html.erb +7 -0
- data/app/views/arclight/repositories/_repository.html.erb +22 -41
- data/app/views/arclight/repositories/index.html.erb +5 -0
- data/app/views/arclight/repositories/show.html.erb +7 -8
- data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +8 -0
- data/app/views/arclight/requests/_aeon_web_ead.html.erb +6 -0
- data/app/views/arclight/requests/_google_form.html.erb +4 -5
- data/app/views/catalog/_document_list.html.erb +8 -0
- data/app/views/catalog/_group.html.erb +4 -0
- data/app/views/catalog/_group_toggle.html.erb +10 -0
- 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 +3 -15
- data/app/views/shared/_main_menu_links.html.erb +1 -1
- data/arclight.gemspec +18 -17
- data/config/breadcrumbs.rb +24 -0
- data/config/i18n-tasks.yml +11 -9
- data/config/importmap.rb +3 -0
- data/config/locales/arclight.en.yml +68 -34
- 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 +22 -31
- data/lib/arclight/exceptions.rb +1 -0
- data/lib/arclight/hash_absolute_xpath.rb +13 -8
- data/lib/arclight/level_label.rb +46 -0
- data/lib/arclight/normalized_date.rb +5 -10
- data/lib/arclight/normalized_id.rb +7 -2
- data/lib/arclight/normalized_title.rb +3 -0
- data/lib/arclight/repository.rb +70 -28
- 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 +172 -331
- data/lib/arclight/traject/nokogiri_namespaceless_reader.rb +22 -0
- data/lib/arclight/version.rb +1 -1
- data/lib/arclight/year_range.rb +13 -4
- data/lib/arclight.rb +6 -1
- data/lib/generators/arclight/install_generator.rb +100 -10
- data/lib/generators/arclight/templates/arclight.scss +6 -3
- data/lib/generators/arclight/templates/catalog_controller.rb +237 -179
- data/lib/generators/arclight/templates/config/downloads.yml +12 -0
- data/lib/generators/arclight/templates/config/locales/arclight.en.yml +61 -0
- data/lib/generators/arclight/templates/config/repositories.yml +42 -31
- data/lib/generators/arclight/update_generator.rb +1 -1
- data/lib/tasks/index.rake +25 -30
- data/package.json +15 -9
- data/solr/conf/schema.xml +97 -328
- data/solr/conf/solrconfig.xml +99 -164
- data/tasks/arclight.rake +18 -9
- data/template.rb +6 -7
- metadata +188 -129
- data/.travis.yml +0 -28
- data/app/assets/javascripts/arclight/collection_context.js +0 -18
- data/app/assets/javascripts/arclight/collection_navigation.js +0 -117
- data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
- data/app/assets/javascripts/arclight/component_ancestors.js +0 -56
- data/app/assets/javascripts/arclight/oembed_viewer.js +0 -46
- data/app/assets/javascripts/arclight/search_results.js +0 -15
- data/app/assets/javascripts/arclight/truncator.js.erb +0 -23
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -3
- data/app/assets/stylesheets/arclight/modules/sidebar.scss +0 -21
- data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -86
- data/app/factories/blacklight_field_configuration_factory.rb +0 -29
- data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
- data/app/views/arclight/viewers/_oembed.html.erb +0 -7
- data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
- 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 -15
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -5
- 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 -12
- data/app/views/catalog/_collection_count.html.erb +0 -7
- data/app/views/catalog/_collection_downloads.html.erb +0 -15
- data/app/views/catalog/_collection_online_contents.html.erb +0 -17
- data/app/views/catalog/_collection_overview.html.erb +0 -7
- data/app/views/catalog/_component_contents.html.erb +0 -16
- data/app/views/catalog/_component_overview.html.erb +0 -40
- 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/_home.html.erb +0 -1
- data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -3
- 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_hierarchy_default.html.erb +0 -42
- data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
- data/app/views/catalog/_index_hierarchy_default.html.erb +0 -28
- data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
- data/app/views/catalog/_results_histogram.html.erb +0 -15
- data/app/views/catalog/_search_results.html.erb +0 -31
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -21
- data/app/views/catalog/_show_collection.html.erb +0 -48
- data/app/views/catalog/_show_component_sidebar.html.erb +0 -12
- data/app/views/catalog/_show_default.html.erb +0 -42
- data/app/views/catalog/_show_sidebar.html.erb +0 -22
- 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/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 -65
- data/lib/arclight/custom_component.rb +0 -99
- data/lib/arclight/custom_document.rb +0 -93
- data/lib/arclight/indexer.rb +0 -9
- data/lib/arclight/shared_indexing_behavior.rb +0 -97
- data/lib/arclight/shared_terminology_behavior.rb +0 -65
- data/lib/arclight/solr_ead_indexer_ext.rb +0 -155
- data/lib/arclight/viewer.rb +0 -45
- data/lib/arclight/viewers/oembed.rb +0 -56
- 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
- /data/{app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb → config/repositories.yml} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Arclight
|
|
4
|
+
module Traject
|
|
5
|
+
# Provides a Traject Reader for XML Documents which removes the namespaces
|
|
6
|
+
class NokogiriNamespacelessReader < ::Traject::NokogiriReader
|
|
7
|
+
# Overrides the #each method (which is used for iterating through each Document)
|
|
8
|
+
# @param args
|
|
9
|
+
# @see ::Traject::NokogiriReader#each
|
|
10
|
+
# @see Enumerable#each
|
|
11
|
+
def each(*args)
|
|
12
|
+
return to_enum(:each, *args) unless block_given?
|
|
13
|
+
|
|
14
|
+
super do |doc|
|
|
15
|
+
new_doc = doc.dup
|
|
16
|
+
new_doc.remove_namespaces!
|
|
17
|
+
yield new_doc
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/arclight/version.rb
CHANGED
data/lib/arclight/year_range.rb
CHANGED
|
@@ -18,19 +18,20 @@ module Arclight
|
|
|
18
18
|
def initialize(dates = nil)
|
|
19
19
|
@years = []
|
|
20
20
|
self << parse_ranges(dates) if dates.present?
|
|
21
|
-
self
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
# @return [String] a concise, human-readable version of the year range, including gaps
|
|
25
24
|
def to_s
|
|
26
25
|
return if years.empty?
|
|
27
26
|
return to_s_for_streak(years) unless gaps?
|
|
27
|
+
|
|
28
28
|
to_s_with_gaps
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
# @param [Array<Integer>] `other` the set of years to add
|
|
32
32
|
def <<(other)
|
|
33
33
|
return self if other.blank?
|
|
34
|
+
|
|
34
35
|
@years |= other # will remove duplicates
|
|
35
36
|
@years.sort!
|
|
36
37
|
self
|
|
@@ -40,10 +41,12 @@ module Arclight
|
|
|
40
41
|
# @return [Array<Integer>] the set of years in the given range
|
|
41
42
|
def parse_range(dates)
|
|
42
43
|
return if dates.blank?
|
|
44
|
+
|
|
43
45
|
start_year, end_year = dates.split('/').map { |date| to_year_from_iso8601(date) }
|
|
44
46
|
return [start_year] if end_year.blank?
|
|
45
47
|
raise ArgumentError, "Range is too large: #{dates}" if (end_year - start_year) > 1000
|
|
46
48
|
raise ArgumentError, "Range is inverted: #{dates}" unless start_year <= end_year
|
|
49
|
+
|
|
47
50
|
(start_year..end_year).to_a
|
|
48
51
|
end
|
|
49
52
|
|
|
@@ -57,12 +60,14 @@ module Arclight
|
|
|
57
60
|
# YYYY, YYYY-MM, YYYY-MM-DD, and YYYYMMDD
|
|
58
61
|
def to_year_from_iso8601(date)
|
|
59
62
|
return if date.blank?
|
|
63
|
+
|
|
60
64
|
date.split('-').first[0..3].to_i # Time.parse doesn't work here
|
|
61
65
|
end
|
|
62
66
|
|
|
63
67
|
# @return [Boolean] are there gaps between the years, such as 1999, 2000, 2002?
|
|
64
68
|
def gaps?
|
|
65
69
|
return false if years.blank?
|
|
70
|
+
|
|
66
71
|
(years.min..years.max).to_a != years
|
|
67
72
|
end
|
|
68
73
|
|
|
@@ -71,12 +76,14 @@ module Arclight
|
|
|
71
76
|
# Deals with making a human-readable range for years with 1 or more gaps.
|
|
72
77
|
# It involves detection of streaks between the gaps.
|
|
73
78
|
# @return [String] 1999-2000, 2002 for 1999, 2000, 2002
|
|
74
|
-
|
|
79
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
80
|
+
def to_s_with_gaps
|
|
75
81
|
raise ArgumentError if years.blank? || years.length < 2
|
|
82
|
+
|
|
76
83
|
results = []
|
|
77
84
|
streak = [years[0]]
|
|
78
85
|
i = streak.first
|
|
79
|
-
years[1
|
|
86
|
+
years[1..].each do |j|
|
|
80
87
|
i += 1
|
|
81
88
|
if i == j
|
|
82
89
|
streak << j
|
|
@@ -93,10 +100,12 @@ module Arclight
|
|
|
93
100
|
results << to_s_for_streak(streak)
|
|
94
101
|
results.join(', ')
|
|
95
102
|
end
|
|
103
|
+
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
96
104
|
|
|
97
105
|
def to_s_for_streak(streak)
|
|
98
106
|
return streak.min.to_s if streak.min == streak.max
|
|
99
|
-
|
|
107
|
+
|
|
108
|
+
streak.minmax.map(&:to_s).join('-')
|
|
100
109
|
end
|
|
101
110
|
end
|
|
102
111
|
end
|
data/lib/arclight.rb
CHANGED
|
@@ -5,6 +5,11 @@ require 'arclight/engine'
|
|
|
5
5
|
require 'arclight/repository'
|
|
6
6
|
require 'arclight/year_range'
|
|
7
7
|
|
|
8
|
+
# :nodoc:
|
|
8
9
|
module Arclight
|
|
9
|
-
|
|
10
|
+
autoload :Routes, 'arclight/routes'
|
|
11
|
+
|
|
12
|
+
def self.deprecation
|
|
13
|
+
@deprecation ||= ActiveSupport::Deprecation.new('2.0', 'Arclight')
|
|
14
|
+
end
|
|
10
15
|
end
|
|
@@ -5,8 +5,10 @@ require 'rails/generators'
|
|
|
5
5
|
module Arclight
|
|
6
6
|
##
|
|
7
7
|
# Arclight install generator
|
|
8
|
-
class Install < Rails::Generators::Base
|
|
9
|
-
source_root File.expand_path('
|
|
8
|
+
class Install < Rails::Generators::Base # rubocop:disable Metrics/ClassLength
|
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
|
10
|
+
|
|
11
|
+
class_option :test, type: :boolean, default: false, aliases: '-t', desc: 'Indicates that app will be installed in a test environment'
|
|
10
12
|
|
|
11
13
|
def create_blacklight_catalog
|
|
12
14
|
remove_file 'app/controllers/catalog_controller.rb'
|
|
@@ -22,7 +24,7 @@ module Arclight
|
|
|
22
24
|
def install_blacklight_locale_picker
|
|
23
25
|
gem 'blacklight-locale_picker'
|
|
24
26
|
|
|
25
|
-
Bundler.
|
|
27
|
+
Bundler.with_unbundled_env do
|
|
26
28
|
run 'bundle install'
|
|
27
29
|
end
|
|
28
30
|
|
|
@@ -33,19 +35,39 @@ module Arclight
|
|
|
33
35
|
end
|
|
34
36
|
end
|
|
35
37
|
|
|
36
|
-
def install_blacklight_range_limit
|
|
37
|
-
generate 'blacklight_range_limit:install'
|
|
38
|
-
end
|
|
39
|
-
|
|
40
38
|
def add_custom_routes
|
|
41
39
|
inject_into_file 'config/routes.rb', after: "mount Blacklight::Engine => '/'" do
|
|
42
|
-
"\n
|
|
40
|
+
"\n mount Arclight::Engine => '/'\n"
|
|
43
41
|
end
|
|
42
|
+
|
|
43
|
+
gsub_file 'config/routes.rb', 'root to: "catalog#index"', 'root to: "arclight/repositories#index"'
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def
|
|
46
|
+
def add_frontend
|
|
47
|
+
if ENV['CI']
|
|
48
|
+
run "yarn add file:#{Arclight::Engine.root}"
|
|
49
|
+
elsif options[:test]
|
|
50
|
+
run 'yarn link arclight'
|
|
51
|
+
|
|
52
|
+
# If a branch was specified (e.g. you are running a template.rb build
|
|
53
|
+
# against a test branch), use the latest version available on npm
|
|
54
|
+
elsif ENV['BRANCH']
|
|
55
|
+
run 'yarn add arclight@latest'
|
|
56
|
+
|
|
57
|
+
# Otherwise, pick the version from npm that matches the Arclight
|
|
58
|
+
# gem version
|
|
59
|
+
else
|
|
60
|
+
run "yarn add arclight@#{arclight_yarn_version}"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def add_stylesheets
|
|
47
65
|
copy_file 'arclight.scss', 'app/assets/stylesheets/arclight.scss'
|
|
48
|
-
|
|
66
|
+
append_to_file 'app/assets/stylesheets/application.bootstrap.scss' do
|
|
67
|
+
<<~CONTENT
|
|
68
|
+
@import "arclight";
|
|
69
|
+
CONTENT
|
|
70
|
+
end
|
|
49
71
|
end
|
|
50
72
|
|
|
51
73
|
def add_arclight_search_behavior
|
|
@@ -66,8 +88,76 @@ module Arclight
|
|
|
66
88
|
copy_file 'config/downloads.yml' unless File.exist?('config/downloads.yml')
|
|
67
89
|
end
|
|
68
90
|
|
|
91
|
+
def add_i18n_config
|
|
92
|
+
copy_file 'config/locales/arclight.en.yml'
|
|
93
|
+
end
|
|
94
|
+
|
|
69
95
|
def modify_blacklight_yml
|
|
70
96
|
gsub_file 'config/locales/blacklight.en.yml', "application_name: 'Blacklight'", "application_name: 'Arclight'"
|
|
71
97
|
end
|
|
98
|
+
|
|
99
|
+
def assets
|
|
100
|
+
if using_importmap?
|
|
101
|
+
pin_javascript_dependencies
|
|
102
|
+
import_arclight_javascript
|
|
103
|
+
else
|
|
104
|
+
install_javascript_dependencies
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def inject_arclight_routes
|
|
109
|
+
inject_into_file 'config/routes.rb',
|
|
110
|
+
" concern :hierarchy, Arclight::Routes::Hierarchy.new\n",
|
|
111
|
+
after: /concern :exportable.*\n/
|
|
112
|
+
inject_into_file 'config/routes.rb',
|
|
113
|
+
" concerns :hierarchy\n",
|
|
114
|
+
after: /resources :solr_documents.*\n/
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
private
|
|
118
|
+
|
|
119
|
+
def root
|
|
120
|
+
@root ||= Pathname(destination_root)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def using_importmap?
|
|
124
|
+
@using_importmap ||= root.join('config/importmap.rb').exist?
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# This is the last step because any failure here wouldn't prevent the other steps from running
|
|
128
|
+
def install_javascript_dependencies
|
|
129
|
+
inject_into_file 'app/assets/javascripts/application.js', after: '//= require blacklight/blacklight' do
|
|
130
|
+
"\n// Required by Arclight" \
|
|
131
|
+
"\n//= require arclight/arclight"
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def pin_javascript_dependencies
|
|
136
|
+
say 'Arclight Importmap asset generation'
|
|
137
|
+
|
|
138
|
+
append_to_file 'config/importmap.rb', <<~RUBY
|
|
139
|
+
pin "arclight", to: "arclight/arclight.js"
|
|
140
|
+
# TODO: We may be able to move these to a single importmap for arclight.
|
|
141
|
+
pin "arclight/oembed_controller", to: "arclight/oembed_controller.js"
|
|
142
|
+
pin "arclight/truncate_controller", to: "arclight/truncate_controller.js"
|
|
143
|
+
RUBY
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def import_arclight_javascript
|
|
147
|
+
append_to_file 'app/javascript/application.js', "\nimport \"arclight\""
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def package_yarn_version(package_name, requested_version)
|
|
151
|
+
versions = JSON.parse(`yarn info #{package_name} versions --json`)['data']
|
|
152
|
+
exact_match = versions.find { |v| v == requested_version }
|
|
153
|
+
return exact_match if exact_match
|
|
154
|
+
|
|
155
|
+
major_version = Gem::Version.new(requested_version).segments.first
|
|
156
|
+
"^#{major_version}"
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def arclight_yarn_version
|
|
160
|
+
package_yarn_version('arclight', Arclight::VERSION)
|
|
161
|
+
end
|
|
72
162
|
end
|
|
73
163
|
end
|