Add #prepend_view_path and #append_view_path instance methods on ActionController::Base for consistency with the class methods. [rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8214 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1af084ecda
commit
87e506da53
|
@ -1,5 +1,7 @@
|
||||||
*SVN*
|
*SVN*
|
||||||
|
|
||||||
|
* Add #prepend_view_path and #append_view_path instance methods on ActionController::Base for consistency with the class methods. [rick]
|
||||||
|
|
||||||
* Refactor sanitizer helpers into HTML classes and make it easy to swap them out with custom implementations. Closes #10129. [rick]
|
* Refactor sanitizer helpers into HTML classes and make it easy to swap them out with custom implementations. Closes #10129. [rick]
|
||||||
|
|
||||||
* Add deprecation for old subtemplate syntax for ActionMailer templates, use render :partial [rick]
|
* Add deprecation for old subtemplate syntax for ActionMailer templates, use render :partial [rick]
|
||||||
|
|
|
@ -430,7 +430,7 @@ module ActionController #:nodoc:
|
||||||
|
|
||||||
# Adds a view_path to the front of the view_paths array.
|
# Adds a view_path to the front of the view_paths array.
|
||||||
# If the current class has no view paths, copy them from
|
# If the current class has no view paths, copy them from
|
||||||
# the superclass
|
# the superclass. This change will be visible for all future requests.
|
||||||
#
|
#
|
||||||
# ArticleController.prepend_view_path("views/default")
|
# ArticleController.prepend_view_path("views/default")
|
||||||
# ArticleController.prepend_view_path(["views/default", "views/custom"])
|
# ArticleController.prepend_view_path(["views/default", "views/custom"])
|
||||||
|
@ -442,7 +442,7 @@ module ActionController #:nodoc:
|
||||||
|
|
||||||
# Adds a view_path to the end of the view_paths array.
|
# Adds a view_path to the end of the view_paths array.
|
||||||
# If the current class has no view paths, copy them from
|
# If the current class has no view paths, copy them from
|
||||||
# the superclass
|
# the superclass. This change will be visible for all future requests.
|
||||||
#
|
#
|
||||||
# ArticleController.append_view_path("views/default")
|
# ArticleController.append_view_path("views/default")
|
||||||
# ArticleController.append_view_path(["views/default", "views/custom"])
|
# ArticleController.append_view_path(["views/default", "views/custom"])
|
||||||
|
@ -636,7 +636,6 @@ module ActionController #:nodoc:
|
||||||
request.session_options && request.session_options[:disabled] != false
|
request.session_options && request.session_options[:disabled] != false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
self.view_paths = []
|
self.view_paths = []
|
||||||
|
|
||||||
# View load paths for controller.
|
# View load paths for controller.
|
||||||
|
@ -647,7 +646,27 @@ module ActionController #:nodoc:
|
||||||
def view_paths=(value)
|
def view_paths=(value)
|
||||||
(@template || self.class).view_paths = value
|
(@template || self.class).view_paths = value
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Adds a view_path to the front of the view_paths array.
|
||||||
|
# This change affects the current request only.
|
||||||
|
#
|
||||||
|
# self.prepend_view_path("views/default")
|
||||||
|
# self.prepend_view_path(["views/default", "views/custom"])
|
||||||
|
#
|
||||||
|
def prepend_view_path(path)
|
||||||
|
(@template || self.class).prepend_view_path(path)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Adds a view_path to the end of the view_paths array.
|
||||||
|
# This change affects the current request only.
|
||||||
|
#
|
||||||
|
# self.append_view_path("views/default")
|
||||||
|
# self.append_view_path(["views/default", "views/custom"])
|
||||||
|
#
|
||||||
|
def append_view_path(path)
|
||||||
|
(@template || self.class).append_view_path(path)
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
# Renders the content that will be returned to the browser as the response body.
|
# Renders the content that will be returned to the browser as the response body.
|
||||||
#
|
#
|
||||||
|
|
|
@ -265,7 +265,7 @@ module ActionView #:nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize(view_paths = [], assigns_for_first_render = {}, controller = nil)#:nodoc:
|
def initialize(view_paths = [], assigns_for_first_render = {}, controller = nil)#:nodoc:
|
||||||
@view_paths = view_paths.respond_to?(:find) ? view_paths : [*view_paths].compact
|
@view_paths = view_paths.respond_to?(:find) ? view_paths.dup : [*view_paths].compact
|
||||||
@assigns = assigns_for_first_render
|
@assigns = assigns_for_first_render
|
||||||
@assigns_added = nil
|
@assigns_added = nil
|
||||||
@controller = controller
|
@controller = controller
|
||||||
|
@ -472,6 +472,26 @@ If you are rendering a subtemplate, you must now use controller-like partial syn
|
||||||
TEMPLATE_HANDLER_PREFERENCES[template_format] || DEFAULT_TEMPLATE_HANDLER_PREFERENCE
|
TEMPLATE_HANDLER_PREFERENCES[template_format] || DEFAULT_TEMPLATE_HANDLER_PREFERENCE
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Adds a view_path to the front of the view_paths array.
|
||||||
|
# This change affects the current request only.
|
||||||
|
#
|
||||||
|
# @template.prepend_view_path("views/default")
|
||||||
|
# @template.prepend_view_path(["views/default", "views/custom"])
|
||||||
|
#
|
||||||
|
def prepend_view_path(path)
|
||||||
|
@view_paths.unshift(*path)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Adds a view_path to the end of the view_paths array.
|
||||||
|
# This change affects the current request only.
|
||||||
|
#
|
||||||
|
# @template.append_view_path("views/default")
|
||||||
|
# @template.append_view_path(["views/default", "views/custom"])
|
||||||
|
#
|
||||||
|
def append_view_path(path)
|
||||||
|
@view_paths.push(*path)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_full_template_path(template_path, extension)
|
def find_full_template_path(template_path, extension)
|
||||||
file_name = "#{template_path}.#{extension}"
|
file_name = "#{template_path}.#{extension}"
|
||||||
|
|
|
@ -47,7 +47,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
||||||
assert_equal [ LOAD_PATH_ROOT ], @controller.view_paths
|
assert_equal [ LOAD_PATH_ROOT ], @controller.view_paths
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_template_appends_path_correctly
|
def test_controller_appends_view_path_correctly
|
||||||
TestController.append_view_path 'foo'
|
TestController.append_view_path 'foo'
|
||||||
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths
|
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
||||||
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
|
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_template_prepends_path_correctly
|
def test_controller_prepends_view_path_correctly
|
||||||
TestController.prepend_view_path 'baz'
|
TestController.prepend_view_path 'baz'
|
||||||
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths
|
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||||
|
|
||||||
|
@ -63,6 +63,30 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
||||||
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
|
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_template_appends_view_path_correctly
|
||||||
|
@controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
|
||||||
|
class_view_paths = TestController.view_paths
|
||||||
|
|
||||||
|
@controller.append_view_path 'foo'
|
||||||
|
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths
|
||||||
|
|
||||||
|
@controller.append_view_path(%w(bar baz))
|
||||||
|
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
|
||||||
|
assert_equal class_view_paths, TestController.view_paths
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_template_prepends_view_path_correctly
|
||||||
|
@controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
|
||||||
|
class_view_paths = TestController.view_paths
|
||||||
|
|
||||||
|
@controller.prepend_view_path 'baz'
|
||||||
|
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||||
|
|
||||||
|
@controller.prepend_view_path(%w(foo bar))
|
||||||
|
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||||
|
assert_equal class_view_paths, TestController.view_paths
|
||||||
|
end
|
||||||
|
|
||||||
def test_view_paths
|
def test_view_paths
|
||||||
get :hello_world
|
get :hello_world
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
|
Loading…
Reference in New Issue