nested app layouts are available now

Oleg committed Aug 12, 2011
commit 9e67fe55e02869f613ad2daa574898c8e8948b48
Showing 2 changed files with 13 additions and 6 deletions
app/models/cms/layout.rb +4 -5
@@ @@ -41,11 +41,10 @@ class Cms::Layout < ActiveRecord::Base
# List of available application layouts
def self.app_layouts_for_select
- Dir.glob(File.expand_path('app/views/layouts/*.html.*', Rails.root)).collect do |filename|
- match = filename.match(/\w*.html.\w*$/)
- app_layout = match && match[0]
- app_layout.to_s[0...1] == '_' ? nil : app_layout
- end.compact
+ Dir.glob(File.expand_path('app/views/layouts/**/*.html.*', Rails.root)).collect do |filename|
+ filename.gsub!("#{File.expand_path('app/views/layouts', Rails.root)}/", '')
+ filename.split('/').last[0...1] == '_' ? nil : filename
+ end.compact.sort
end
# -- Instance Methods -----------------------------------------------------
test/unit/models/layout_test.rb +9 -1
@@ @@ -47,7 +47,15 @@ class CmsLayoutTest < ActiveSupport::TestCase
end
def test_app_layouts_for_select
- assert_equal ['cms_admin.html.erb'], Cms::Layout.app_layouts_for_select
+ FileUtils.touch(File.expand_path('app/views/layouts/cms_admin/nested.html.erb', Rails.root))
+ FileUtils.touch(File.expand_path('app/views/layouts/_partial.html.erb', Rails.root))
+ FileUtils.touch(File.expand_path('app/views/layouts/not_a_layout.erb', Rails.root))
+
+ assert_equal ['cms_admin.html.erb', 'cms_admin/nested.html.erb'], Cms::Layout.app_layouts_for_select
+
+ FileUtils.rm(File.expand_path('app/views/layouts/cms_admin/nested.html.erb', Rails.root))
+ FileUtils.rm(File.expand_path('app/views/layouts/_partial.html.erb', Rails.root))
+ FileUtils.rm(File.expand_path('app/views/layouts/not_a_layout.erb', Rails.root))
end
def test_merged_content_with_same_child_content