diff --git a/app/controllers/concerns/hyrax/works_controller_behavior.rb b/app/controllers/concerns/hyrax/works_controller_behavior.rb index f5b51f64f..91f005843 100644 --- a/app/controllers/concerns/hyrax/works_controller_behavior.rb +++ b/app/controllers/concerns/hyrax/works_controller_behavior.rb @@ -505,8 +505,10 @@ def available_admin_sets def inject_show_theme_views if show_page_theme && show_page_theme != 'default_show' original_paths = view_paths - show_theme_view_path = Rails.root.join('app', 'views', "themes", show_page_theme.to_s) - prepend_view_path(show_theme_view_path) + Hyku::Application.theme_view_path_roots.each do |root| + show_theme_view_path = File.join(root, 'app', 'views', "themes", show_page_theme.to_s) + prepend_view_path(show_theme_view_path) + end yield # rubocop:disable Lint/UselessAssignment, Layout/SpaceAroundOperators, Style/RedundantParentheses # Do NOT change this line. This is calling the Rails view_paths=(paths) method and not a variable assignment. diff --git a/app/controllers/hyrax/contact_form_controller.rb b/app/controllers/hyrax/contact_form_controller.rb index a420f82d4..c941ee191 100644 --- a/app/controllers/hyrax/contact_form_controller.rb +++ b/app/controllers/hyrax/contact_form_controller.rb @@ -102,8 +102,10 @@ def collections(rows: 6) def inject_theme_views if home_page_theme && home_page_theme != 'default_home' original_paths = view_paths - home_theme_view_path = Rails.root.join('app', 'views', "themes", home_page_theme.to_s) - prepend_view_path(home_theme_view_path) + Hyku::Application.theme_view_path_roots.each do |root| + home_theme_view_path = File.join(root, 'app', 'views', "themes", home_page_theme.to_s) + prepend_view_path(home_theme_view_path) + end yield # rubocop:disable Lint/UselessAssignment, Layout/SpaceAroundOperators, Style/RedundantParentheses # Do NOT change this line. This is calling the Rails view_paths=(paths) method and not a variable assignment. diff --git a/app/controllers/hyrax/pages_controller.rb b/app/controllers/hyrax/pages_controller.rb index cdfd8d0a7..b47e19856 100644 --- a/app/controllers/hyrax/pages_controller.rb +++ b/app/controllers/hyrax/pages_controller.rb @@ -101,8 +101,10 @@ def collections(rows: 6) def inject_theme_views if home_page_theme && home_page_theme != 'default_home' original_paths = view_paths - home_theme_view_path = Rails.root.join('app', 'views', "themes", home_page_theme.to_s) - prepend_view_path(home_theme_view_path) + Hyku::Application.theme_view_path_roots.each do |root| + home_theme_view_path = File.join(root, 'app', 'views', "themes", home_page_theme.to_s) + prepend_view_path(home_theme_view_path) + end yield # rubocop:disable Lint/UselessAssignment, Layout/SpaceAroundOperators, Style/RedundantParentheses # Do NOT change this method. This is an override of the view_paths= method and not a variable assignment. diff --git a/config/application.rb b/config/application.rb index 3af68f13f..616515c97 100644 --- a/config/application.rb +++ b/config/application.rb @@ -62,6 +62,22 @@ class Application < Rails::Application # IiifPrint::SplitPdfs::AdventistPagesToJpgsSplitter config.autoload_paths.unshift("#{Rails.root}/lib") + ## + # @return [Array] an array of strings in which we should be looking for theme view + # candidates. + # @see Hyrax::WorksControllerBehavior + # @see Hyrax::ContactFormController + # @see Hyrax::PagesController + # @see https://api.rubyonrails.org/classes/ActionView/ViewPaths.html#method-i-prepend_view_path + # + # @see .path_for + # @see + def self.theme_view_path_roots + returning_value = [Rails.root.to_s] + returning_value.push HykuKnapsack::Engine.root.to_s if defined?(HykuKnapsack) + returning_value + end + ## # @api public # @@ -69,6 +85,7 @@ class Application < Rails::Application # # @return [String] the path to the file, favoring those found in the knapsack but falling back # to those in the Rails.root. + # @see .theme_view_path_roots def self.path_for(relative_path) if defined?(HykuKnapsack) engine_path = HykuKnapsack::Engine.root.join(relative_path)