a bunch of adjustments

Oleg committed Sep 24, 2010
commit 8481cfcc5a3a17a80d7ad09bf1ecacff0549e894
Showing 10 changed files with 36 additions and 10 deletions
app/controllers/cms_admin/pages_controller.rb +2 -2
@@ @@ -46,8 +46,8 @@ protected
def build_cms_page
@cms_page = CmsPage.new(params[:cms_page])
- @cms_page.parent ||= CmsPage.find_by_id(params[:parent_id])
- @cms_page.cms_layout ||= CmsLayout.first
+ @cms_page.parent ||= (CmsPage.find_by_id(params[:parent_id]) || CmsPage.root)
+ @cms_page.cms_layout ||= (@cms_page.parent && @cms_page.parent.cms_layout || CmsLayout.first)
end
def load_cms_page
app/helpers/cms_helper.rb +1 -1
@@ @@ -32,7 +32,7 @@ module CmsHelper
#{hidden_field_tag('cms_page[cms_blocks_attributes][][id]', tag.id) unless tag.new_record?}
</div>
</div>
- ).html_safe
+ ).html_safe if form_method
end
end
app/models/cms_page.rb +8 -1
@@ @@ -45,7 +45,8 @@ class CmsPage < ActiveRecord::Base
end
# -- Instance Methods -----------------------------------------------------
- # Processing content will return rendered content and all tags that were used.
+ # Processing content will return rendered content and will populate
+ # self.cms_tags with instances of CmsTag
def content
cms_layout ? CmsTag.process_content(self, cms_layout.content.dup) : ''
end
@@ @@ -54,6 +55,12 @@ class CmsPage < ActiveRecord::Base
@cms_tags ||= []
end
+ # A subset of cms_tags for form rendering
+ def block_cms_tags
+ self.content if cms_tags.blank?
+ cms_tags.select{ |t| t.class.superclass == CmsBlock }.uniq
+ end
+
protected
def assign_full_path
app/views/cms_admin/pages/_form.html.erb +5 -2
@@ @@ -4,5 +4,8 @@
<%= render :partial => 'form_blocks' %>
- <h2>Uploads</h2>
- <%= render :partial => 'cms_admin/uploads/index' %>
\ No newline at end of file
+
+ <% content_for :right_column do %>
+ <h2>Uploads</h2>
+ <%= render :partial => 'cms_admin/uploads/index' %>
+ <% end %>
\ No newline at end of file
app/views/cms_admin/pages/_form_blocks.html.erb +1 -1
@@ @@ -1,5 +1,5 @@
<div id='form_blocks'>
- <% @cms_page.cms_tags.each do |tag| %>
+ <% @cms_page.block_cms_tags.each do |tag| %>
<%= cms_tag_field(tag) %>
<% end %>
</div>
\ No newline at end of file
app/views/layouts/cms_admin.html.erb +3 -0
@@ @@ -11,6 +11,9 @@
<body>
<div class='body_wrapper'>
<div class='left_column'>
+ <%= active_link_to 'Layouts', cms_admin_layouts_path %>
+ <%= active_link_to 'Pages', cms_admin_pages_path %>
+ <%= active_link_to 'Snippets', cms_admin_snippets_path %>
<%= yield :left_column %>
</div>
<div class='center_column'>
test/fixtures/cms_layouts.yml +1 -0
@@ @@ -1,4 +1,5 @@
default:
+ id: 1
label: Default Layout
parent:
content: |-
test/fixtures/cms_pages.yml +2 -2
@@ @@ -1,6 +1,6 @@
default:
parent:
- cms_layout: default
+ cms_layout_id: 1
label: Default Page
slug:
full_path: '/'
@@ @@ -9,7 +9,7 @@ default:
child:
parent: default
- cms_layout: default
+ cms_layout_id: 1
label: Child Page
slug: 'child-page'
full_path: '/child-page'
test/functional/cms_admin/pages_controller_test.rb +5 -1
@@ @@ -13,9 +13,13 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
get :new
assert_response :success
assert assigns(:cms_page)
- assert_equal 3, assigns(:cms_page).cms_blocks.size
+ assert_equal cms_layouts(:default), assigns(:cms_page).cms_layout
+ assert_equal 2, assigns(:cms_page).block_cms_tags.size
+
assert_template :new
assert_select 'form[action=/cms-admin/pages]'
+ # assert_select "input[name='cms_page[cms_blocks_attributes][][label]']", 2
+ # assert_select "input[name='cms_page[cms_blocks_attributes][][type]']", 2
end
def test_get_new_as_child_page
test/unit/cms_page_test.rb +8 -0
@@ @@ -110,6 +110,14 @@ class CmsPageTest < ActiveSupport::TestCase
assert_equal ['Default Page', '. . Child Page'], CmsPage.options_for_select(page).collect{|t| t.first }
end
+ def test_block_cms_tags
+ page = cms_pages(:default)
+ assert_equal 2, page.block_cms_tags.size
+ assert_equal 'cms_tag/field_text_default_field_text', page.block_cms_tags[0].identifier
+ assert_equal 'cms_tag/page_text_default_page_text', page.block_cms_tags[1].identifier
+ assert_equal 4, page.cms_tags.size
+ end
+
protected
def new_params(options = {})