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 = {}) | |