Skip to content

Commit

Permalink
Merge pull request #2007 from samvera/handle-theming-for-knapsacks
Browse files Browse the repository at this point in the history
♻️ Introduce Hyku::Application.theme_view_path_roots
  • Loading branch information
jeremyf authored Dec 13, 2023
2 parents 6930a86 + 31de0fe commit 95a2228
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 6 deletions.
6 changes: 4 additions & 2 deletions app/controllers/concerns/hyrax/works_controller_behavior.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
6 changes: 4 additions & 2 deletions app/controllers/hyrax/contact_form_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
6 changes: 4 additions & 2 deletions app/controllers/hyrax/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
17 changes: 17 additions & 0 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,30 @@ class Application < Rails::Application
# IiifPrint::SplitPdfs::AdventistPagesToJpgsSplitter
config.autoload_paths.unshift("#{Rails.root}/lib")

##
# @return [Array<String>] 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
#
# @param relative_path [String] lookup the relative paths first in the Knapsack then in Hyku.
#
# @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)
Expand Down

0 comments on commit 95a2228

Please sign in to comment.