提交 751b6be4 编写于 作者: M Marcel Molina

Allow auto-discovery of third party template library layouts.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3397 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 7ff73dfe
*SVN*
* Allow auto-discovery of third party template library layouts. [Marcel Molina Jr.]
* Have the form builder output radio button, not check box, when calling the radio button helper. #3331 [LouisStAmour@gmail.com]
* Added assignment of the Autocompleter object created by JavaScriptMacroHelper#auto_complete_field to a local javascript variables [DHH]
......
......@@ -174,11 +174,11 @@ def layout_conditions #:nodoc:
private
def inherited(child)
inherited_without_layout(child)
child.layout(child.controller_name) unless layout_list.grep(/^#{child.controller_name}\.r(?:x|ht)ml$/).empty?
child.layout(child.controller_name) unless layout_list.grep(/^#{child.controller_name}\.[a-z][0-9a-z]*$/).empty?
end
def layout_list
Dir.glob("#{template_root}/layouts/*.r{x,ht}ml").map { |layout| File.basename(layout) }
Dir.glob("#{template_root}/layouts/*.*").map { |layout| File.basename(layout) }
end
def add_layout_conditions(conditions)
......
require File.dirname(__FILE__) + '/../abstract_unit'
# The template_root must be set on Base and not LayoutTest so that LayoutTest's inherited method has access to
# the template_root when looking for a layout
ActionController::Base.template_root = File.dirname(__FILE__) + '/../fixtures/layout_tests/'
class LayoutTest < ActionController::Base
def self.controller_path; 'views' end
end
# Restore template root to be unset
ActionController::Base.template_root = nil
class ProductController < LayoutTest
end
class ItemController < LayoutTest
end
class ThirdPartyTemplateLibraryController < LayoutTest
end
class MabView
def initialize(view)
end
def render(text, locals = {})
text
end
end
ActionView::Base::register_template_handler :mab, MabView
class LayoutAutoDiscoveryTest < Test::Unit::TestCase
def setup
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@request.host = "www.nextangle.com"
end
def test_application_layout_is_default_when_no_controller_match
@controller = ProductController.new
get :hello
assert_equal 'layout_test.rhtml hello.rhtml', @response.body
end
def test_controller_name_layout_name_match
@controller = ItemController.new
get :hello
assert_equal 'item.rhtml hello.rhtml', @response.body
end
def test_third_party_template_library_auto_discovers_layout
@controller = ThirdPartyTemplateLibraryController.new
get :hello
assert_equal 'layouts/third_party_template_library', @controller.active_layout
assert_equal 'Mab', @response.body
end
end
\ No newline at end of file
item.rhtml <%= yield %>
\ No newline at end of file
layout_test.rhtml <%= yield %>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册