Changeset 704
- Timestamp:
- 01/28/08 11:31:40 (7 months ago)
- Files:
-
- trunk/extensions/share_layouts/app/models (added)
- trunk/extensions/share_layouts/app/models/rails_page.rb (added)
- trunk/extensions/share_layouts/lib/share_layouts/helper.rb (modified) (3 diffs)
- trunk/extensions/share_layouts/share_layouts_extension.rb (modified) (1 diff)
- trunk/extensions/share_layouts/test/fixtures/pages.yml (added)
- trunk/extensions/share_layouts/test/functional/share_layouts_test.rb (modified) (1 diff)
- trunk/extensions/share_layouts/test/unit/rails_page_test.rb (modified) (2 diffs)
- trunk/extensions/share_layouts/test/unit/share_layouts_helper_test.rb (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/extensions/share_layouts/lib/share_layouts/helper.rb
r586 r704 1 1 module ShareLayouts::Helper 2 class TransactionBreak < StandardError; end3 2 4 3 def radiant_layout(name = @radiant_layout) 5 4 returning String.new do |output| 6 page = ShareLayouts::RailsPage.new(:class_name => "ShareLayouts::RailsPage")5 page = find_page 7 6 assign_attributes!(page, name) 8 7 page.build_parts_from_hash!(extract_captures) … … 13 12 def assign_attributes!(page, name = @radiant_layout) 14 13 page._layout = Layout.find_by_name(name) 15 page.title = @title || @content_for_title || ''16 page.breadcrumbs = @breadcrumbs || @content_for_breadcrumbs || ''14 page.title = @title || @content_for_title || page.title || '' 15 page.breadcrumbs = @breadcrumbs || @content_for_breadcrumbs || page.breadcrumbs || '' 17 16 page.request_uri = request.request_uri 18 17 page.request = request … … 32 31 end 33 32 end 33 34 def find_page 35 page = Page.find_by_url(request.request_uri) rescue nil 36 page.is_a?(RailsPage) ? page : RailsPage.new(:class_name => "RailsPage") 37 end 34 38 end trunk/extensions/share_layouts/share_layouts_extension.rb
r586 r704 3 3 4 4 class ShareLayoutsExtension < Radiant::Extension 5 version "0. 2"5 version "0.3" 6 6 description "Allows Radiant layouts to be used as layouts for standard Rails actions." 7 7 url "http://wiki.radiantcms.org/Thirdparty_Extensions" 8 8 9 9 def activate 10 RailsPage 10 11 ActionController::Base.send :include, ShareLayouts::RadiantLayouts 11 12 ApplicationController.send :helper, ShareLayouts::Helper trunk/extensions/share_layouts/test/functional/share_layouts_test.rb
r586 r704 104 104 get :normal_erb_with_different_erb_layout 105 105 assert_response :success 106 assert_match "Radiant CMS", @response.body107 106 assert_match "#{@erb_content}", @response.body 108 107 end trunk/extensions/share_layouts/test/unit/rails_page_test.rb
r494 r704 4 4 class RailsPageTest < Test::Unit::TestCase 5 5 test_helper :render, :page 6 fixtures :pages 6 7 def setup 7 @page = ShareLayouts::RailsPage.new(page_params(:class_name => "ShareLayouts::RailsPage", :request_uri => "http://example.com/some/page"))8 @page = RailsPage.new(page_params(:class_name => "RailsPage", :request_uri => "http://example.com/some/page")) 8 9 end 9 10 … … 33 34 assert_equal hash.keys.size, @page.parts.size 34 35 end 36 37 def test_should_find_rails_page_for_all_sub_urls 38 assert_equal pages(:rails_page), Page.find_by_url('/app/') 39 assert_equal pages(:other), Page.find_by_url('/other/') 40 assert_equal pages(:rails_page), Page.find_by_url('/app/some-other-url/') 41 assert_equal pages(:rails_page), Page.find_by_url('/app/some-other-url/sub-url/') 42 end 43 44 def test_should_defer_to_default_url_when_not_initialized 45 assert_equal '/app/', pages(:rails_page).url 46 end 35 47 end trunk/extensions/share_layouts/test/unit/share_layouts_helper_test.rb
r586 r704 3 3 class ShareLayoutsHelperTest < Test::Unit::TestCase 4 4 include ShareLayouts::Helper 5 fixtures :layouts 5 fixtures :layouts, :pages 6 6 test_helper :page 7 7 attr_accessor :request, :response … … 19 19 20 20 def setup 21 @page = ShareLayouts::RailsPage.new(page_params(:class_name => "ShareLayouts::RailsPage"))21 @page = RailsPage.new(page_params(:class_name => "RailsPage")) 22 22 @content_for_layout = "something" 23 23 @radiant_layout = layouts(:main).name … … 60 60 end 61 61 62 def test_should_assign_title_from_existing_page_title_when_not_specified 63 assign_attributes!(@page) 64 assert_equal 'New Page', @page.title 65 end 66 62 67 def test_should_assign_empty_title_if_missing 68 @page.title = nil 63 69 assert_nil @title 64 70 assert_nil @content_for_title 71 assert_nil @page.title 65 72 assign_attributes!(@page) 66 73 assert_equal '', @page.title … … 68 75 69 76 def test_should_assign_empty_breadcrumbs_if_missing 77 @page.breadcrumbs = nil 70 78 assert_nil @breadcrumbs 71 79 assert_nil @content_for_breadcrumbs 80 assert_nil @page.breadcrumbs 72 81 assign_attributes!(@page) 73 assert_equal '', @page. title82 assert_equal '', @page.breadcrumbs 74 83 end 75 84 … … 84 93 assert_equal MAIN_RESULT.strip, radiant_layout.strip 85 94 end 95 96 def test_should_find_page 97 @request.request_uri = "/app/something/" 98 assert_equal pages(:rails_page), find_page 99 assert_kind_of RailsPage, find_page 100 @request.request_uri = "/some-other/url/" 101 assert_not_equal pages(:rails_page), find_page 102 assert_kind_of RailsPage, find_page 103 end 86 104 end
