require 'fileutils'
module ::ActionView
class Base
private
def full_template_path(template_path, extension)
unless Engines.disable_app_views_loading
# If the template exists in the normal application directory,
# return that path
default_template = "#{@base_path}/#{template_path}.#{extension}"
return default_template if File.exist?(default_template)
end
# Otherwise, check in the engines to see if the template can be found there.
# Load this in order so that more recently started Engines will take priority.
Engines.each(:precidence_order) do |engine|
site_specific_path = File.join(engine.root, 'app', 'views',
template_path.to_s + '.' + extension.to_s)
return site_specific_path if File.exist?(site_specific_path)
end
# If it cannot be found anywhere, return the default path, where the
# user *should* have put it.
return "#{@base_path}/#{template_path}.#{extension}"
end
end
# add methods to handle including javascripts and stylesheets
module Helpers
module AssetTagHelper
# Returns a stylesheet link tag to the named stylesheet(s) for the given
# engine. A stylesheet with the same name as the engine is included automatically.
# If other names are supplied, those stylesheets from within the same engine
# will be linked too.
#
# engine_stylesheet "my_engine" =>
#
#
# engine_stylesheet "my_engine", "another_file", "one_more" =>
#
#
#
#
# Any options supplied as a Hash as the last argument will be processed as in
# stylesheet_link_tag.
#
def engine_stylesheet(engine_name, *sources)
stylesheet_link_tag(*convert_public_sources(engine_name, :stylesheet, sources))
end
# Returns a javascript link tag to the named stylesheet(s) for the given
# engine. A javascript file with the same name as the engine is included automatically.
# If other names are supplied, those javascript from within the same engine
# will be linked too.
#
# engine_javascript "my_engine" =>
#
#
# engine_javascript "my_engine", "another_file", "one_more" =>
#
#
#
#
# Any options supplied as a Hash as the last argument will be processed as in
# javascript_include_tag.
#
def engine_javascript(engine_name, *sources)
javascript_include_tag(*convert_public_sources(engine_name, :javascript, sources))
end
# Returns a image tag based on the parameters passed to it
# Required option is option[:engine] in order to correctly idenfity the correct engine location
#
# engine_image 'rails-engines.png', :engine => 'my_engine', :alt => 'My Engine' =>
#