diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index d384ed4f6..de7b88110 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -18,6 +18,11 @@ jobs: additional_engine_cart_rails_options: ["-j importmap"] additional_name: [""] include: + - rails_version: "~> 8.0" + ruby: "3.4" + blacklight_version: "~> 9.0.0.beta7" + additional_engine_cart_rails_options: "-j importmap" + additional_name: Blacklight 9 beta - rails_version: "~> 7.2" ruby: "3.3" blacklight_version: "~> 8.0" diff --git a/app/controllers/concerns/spotlight/search_helper.rb b/app/controllers/concerns/spotlight/search_helper.rb index 45dc8c185..f449168e3 100644 --- a/app/controllers/concerns/spotlight/search_helper.rb +++ b/app/controllers/concerns/spotlight/search_helper.rb @@ -3,10 +3,15 @@ module Spotlight # ... module SearchHelper + # @param [Hash] user_params the query parameters used to reconstitute the search state + # from saved searches. If not provided, will use the search_state from the view context + # or an empty hash if that is not available. + # @return [Object] An instance of the configured search service def search_service(user_params = respond_to?(:search_state, true) ? search_state.to_h : {}) + state = Blacklight::SearchState.new(user_params, blacklight_config) klass = respond_to?(:search_service_class) ? search_service_class : Blacklight::SearchService - klass.new(config: blacklight_config, user_params:, **search_service_context) + klass.new(config: blacklight_config, search_state: state, **search_service_context) end # @return [Hash] a hash of context information to pass through to the search service diff --git a/app/controllers/spotlight/pages_controller.rb b/app/controllers/spotlight/pages_controller.rb index 9556892f8..a1a323186 100644 --- a/app/controllers/spotlight/pages_controller.rb +++ b/app/controllers/spotlight/pages_controller.rb @@ -121,7 +121,7 @@ def _prefixes # @param [Hash] the query parameters # @return [Object] the search results object from the configured search service def search_results(user_params) - search_service(user_params).search_results + search_service(search_state: Blacklight::SearchState.new(user_params, blacklight_config)).search_results end def undo_link diff --git a/blacklight-spotlight.gemspec b/blacklight-spotlight.gemspec index aa1839a00..437daa022 100644 --- a/blacklight-spotlight.gemspec +++ b/blacklight-spotlight.gemspec @@ -22,7 +22,7 @@ these collections.) s.add_dependency 'activejob-status' s.add_dependency 'acts-as-taggable-on', '>= 5.0', '< 14' - s.add_dependency 'blacklight', '>= 8.7.0', '< 9' + s.add_dependency 'blacklight', '>= 8.7.0', '< 10' s.add_dependency 'blacklight-gallery', '>= 3.0', '< 7' s.add_dependency 'bootstrap_form', '>= 5.4', '< 6' s.add_dependency 'cancancan' diff --git a/lib/generators/spotlight/assets/importmap_generator.rb b/lib/generators/spotlight/assets/importmap_generator.rb index 740f99585..ae77ff0ad 100644 --- a/lib/generators/spotlight/assets/importmap_generator.rb +++ b/lib/generators/spotlight/assets/importmap_generator.rb @@ -23,6 +23,8 @@ class ImportmapGenerator < Rails::Generators::Base - Configures cssbundling-rails to build the styles - Javascript from gems such as Blacklight and Spotlight are delivered via importmap/the asset pipeline without the need for bundling + - Jquery (which was added by the blacklight-gallery gem) is removed from the importmap + because it is loaded in the head of the HTML as a global. DESCRIPTION def add_stylesheet_dependencies @@ -64,6 +66,8 @@ def add_javascript }); CONTENT end + + gsub_file 'app/javascript/application.js', /import\s+'jquery'.*\n/, '' end def add_stylesheets diff --git a/lib/generators/spotlight/assets_generator.rb b/lib/generators/spotlight/assets_generator.rb index bf0178e20..507a62eed 100644 --- a/lib/generators/spotlight/assets_generator.rb +++ b/lib/generators/spotlight/assets_generator.rb @@ -18,5 +18,12 @@ def run_asset_pipeline_specific_generator generate generator, generated_options end + + def add_openseadragon_images + append_file 'config/initializers/assets.rb', <<~RUBY + + Rails.application.config.assets.paths << Rails.root.join('node_modules/openseadragon/build/openseadragon/images') + RUBY + end end end diff --git a/lib/generators/spotlight/install_generator.rb b/lib/generators/spotlight/install_generator.rb index cf4760ba2..82dd7da8b 100644 --- a/lib/generators/spotlight/install_generator.rb +++ b/lib/generators/spotlight/install_generator.rb @@ -113,7 +113,7 @@ def add_example_catalog_controller def add_osd_viewer unless Bundler.locked_gems.dependencies.key? 'blacklight-gallery' - gem 'blacklight-gallery', '~> 4.0' + gem 'blacklight-gallery' bundle_install end generate 'blacklight_gallery:install' @@ -121,7 +121,7 @@ def add_osd_viewer def add_oembed unless Bundler.locked_gems.dependencies.key? 'blacklight-oembed' - gem 'blacklight-oembed', '~> 1.0' + gem 'blacklight-oembed', '~> 1.4' bundle_install end generate 'blacklight_oembed:install' diff --git a/spec/test_app_templates/lib/generators/test_app_generator.rb b/spec/test_app_templates/lib/generators/test_app_generator.rb index 773d9d7bb..124c1b326 100644 --- a/spec/test_app_templates/lib/generators/test_app_generator.rb +++ b/spec/test_app_templates/lib/generators/test_app_generator.rb @@ -29,7 +29,7 @@ def use_capybara3 def add_gems gem 'blacklight', ENV['BLACKLIGHT_VERSION'] || '~> 8.0' unless Bundler.locked_gems.dependencies.key? 'blacklight' - gem 'blacklight-gallery', '~> 4.5' unless Bundler.locked_gems.dependencies.key? 'blacklight-gallery' + gem 'blacklight-gallery' unless Bundler.locked_gems.dependencies.key? 'blacklight-gallery' gem 'bootstrap_form' unless Bundler.locked_gems.dependencies.key? 'bootstrap_form' Bundler.with_unbundled_env do