All Page to be passed in a :body attribute

This :body attribute will then be used when creating the default body PagePart
This commit is contained in:
Jacques Crocker 2010-08-01 00:00:06 -07:00
parent 36ab2f0066
commit 925c7fff8d
3 changed files with 33 additions and 5 deletions

View File

@ -6,9 +6,11 @@ module Models
extend ActiveSupport::Concern
included do
before_create { |p| p.parts << PagePart.build_body_part if p.parts.empty? }
before_validation do |p|
if p.parts.empty?
p.parts << PagePart.build_body_part(p.try(:body))
end
end
end
module InstanceMethods

View File

@ -24,10 +24,10 @@ class PagePart
"{% capture content_for_#{self.slug} %}#{self.value}{% endcapture %}"
end
def self.build_body_part
def self.build_body_part(body_content = nil)
self.new({
:name => I18n.t('attributes.defaults.page_parts.name'),
:value => I18n.t('attributes.defaults.pages.other.body'),
:value => body_content || I18n.t('attributes.defaults.pages.other.body'),
:slug => 'layout'
})
end

View File

@ -334,6 +334,32 @@ describe Page do
end
describe "creating a new page" do
context "with a body" do
before do
@site = Factory(:site, :subdomain => "somethingweird")
@page = Page.create({
:slug => "some_slug",
:title => "Page Title",
:body => "Page Body",
:published => true,
:site => @site
})
end
it "should be valid" do
@page.should be_valid
end
it "should render the passed in body attribute of the page" do
@page.render(Liquid::Context.new).should == "PageBody"
end
end
end
describe 'templatized extension' do
before(:each) do