sites are in. more tests needed though
Oleg
committed Oct 15, 2010
commit 06650cb006944dd9955e7ba9ec6b238fa38e6d19
Showing 15
changed files with
62 additions
and 48 deletions
app/controllers/cms_admin/layouts_controller.rb
+3
-2
| @@ | @@ -4,7 +4,7 @@ class CmsAdmin::LayoutsController < CmsAdmin::BaseController |
| before_filter :load_cms_layout, :only => [:edit, :update, :destroy] | |
| def index | |
| - | @cms_layouts = CmsLayout.roots |
| + | @cms_layouts = @cms_site.cms_layouts.roots |
| end | |
| def new | |
| @@ | @@ -44,10 +44,11 @@ protected |
| def build_cms_layout | |
| @cms_layout = CmsLayout.new(params[:cms_layout]) | |
| @cms_layout.parent ||= CmsLayout.find_by_id(params[:parent_id]) | |
| + | @cms_layout.cms_site = @cms_site |
| end | |
| def load_cms_layout | |
| - | @cms_layout = CmsLayout.find(params[:id]) |
| + | @cms_layout = @cms_site.cms_layouts.find(params[:id]) |
| rescue ActiveRecord::RecordNotFound | |
| flash[:error] = 'Layout not found' | |
| redirect_to :action => :index | |
app/controllers/cms_admin/pages_controller.rb
+8
-7
| @@ | @@ -4,7 +4,7 @@ class CmsAdmin::PagesController < CmsAdmin::BaseController |
| before_filter :load_cms_page, :only => [:edit, :update, :destroy] | |
| def index | |
| - | @cms_pages = [CmsPage.root].compact |
| + | @cms_pages = [@cms_site.cms_pages.root].compact |
| end | |
| def new | |
| @@ | @@ -40,21 +40,22 @@ class CmsAdmin::PagesController < CmsAdmin::BaseController |
| end | |
| def form_blocks | |
| - | @cms_page = CmsPage.find_by_id(params[:id]) || CmsPage.new |
| - | @cms_page.cms_layout = CmsLayout.find_by_id(params[:layout_id]) |
| + | @cms_page = @cms_site.cms_pages.find_by_id(params[:id]) || CmsPage.new |
| + | @cms_page.cms_layout = @cms_site.cms_layouts.find_by_id(params[:layout_id]) |
| end | |
| protected | |
| def build_cms_page | |
| @cms_page = CmsPage.new(params[:cms_page]) | |
| - | @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) |
| + | @cms_page.parent ||= (CmsPage.find_by_id(params[:parent_id]) || @cms_site.cms_pages.root) |
| + | @cms_page.cms_layout ||= (@cms_page.parent && @cms_page.parent.cms_layout || @cms_site.cms_layouts.first) |
| + | @cms_page.cms_site = @cms_site |
| end | |
| def load_cms_page | |
| - | @cms_page = CmsPage.find(params[:id]) |
| - | @cms_page.cms_layout ||= (@cms_page.parent && @cms_page.parent.cms_layout || CmsLayout.first) |
| + | @cms_page = @cms_site.cms_pages.find(params[:id]) |
| + | @cms_page.cms_layout ||= (@cms_page.parent && @cms_page.parent.cms_layout || @cms_site.cms_layouts.first) |
| rescue ActiveRecord::RecordNotFound | |
| flash[:error] = 'Page not found' | |
| redirect_to :action => :index | |
app/controllers/cms_admin/snippets_controller.rb
+3
-3
| @@ | @@ -4,7 +4,7 @@ class CmsAdmin::SnippetsController < CmsAdmin::BaseController |
| before_filter :load_cms_snippet, :only => [:edit, :update, :destroy] | |
| def index | |
| - | @cms_snippets = CmsSnippet.all(:order => 'label') |
| + | @cms_snippets = @cms_site.cms_snippets.all(:order => 'label') |
| end | |
| def new | |
| @@ | @@ -42,11 +42,11 @@ class CmsAdmin::SnippetsController < CmsAdmin::BaseController |
| protected | |
| def build_cms_snippet | |
| - | @cms_snippet = CmsSnippet.new(params[:cms_snippet]) |
| + | @cms_snippet = @cms_site.cms_snippets.new(params[:cms_snippet]) |
| end | |
| def load_cms_snippet | |
| - | @cms_snippet = CmsSnippet.find(params[:id]) |
| + | @cms_snippet = @cms_site.cms_snippets.find(params[:id]) |
| rescue ActiveRecord::RecordNotFound | |
| flash[:error] = 'Snippet not found' | |
| redirect_to :action => :index | |
app/controllers/cms_admin/uploads_controller.rb
+7
-5
| @@ | @@ -1,12 +1,13 @@ |
| class CmsAdmin::UploadsController < CmsAdmin::BaseController | |
| - | before_filter :load_cms_upload, |
| - | :only => :destroy |
| + | |
| + | before_filter :load_cms_upload, :only => :destroy |
| def index | |
| + | render |
| end | |
| def create | |
| - | @cms_upload = CmsUpload.new(:uploaded_file => params[:file]) |
| + | @cms_upload = @cms_site.cms_uploads.new(:uploaded_file => params[:file]) |
| if @cms_upload.save | |
| render(:partial => 'cms_admin/uploads/upload', :object => @cms_upload) | |
| else | |
| @@ | @@ -17,10 +18,11 @@ class CmsAdmin::UploadsController < CmsAdmin::BaseController |
| def destroy | |
| @cms_upload.destroy | |
| end | |
| - | |
| + | |
| protected | |
| + | |
| def load_cms_upload | |
| - | @cms_upload = CmsUpload.find(params[:id]) |
| + | @cms_upload = @cms_site.cms_uploads.find(params[:id]) |
| rescue ActiveRecord::RecordNotFound | |
| render :nothing => true | |
| end | |
app/controllers/cms_content_controller.rb
+10
-3
| @@ | @@ -1,5 +1,6 @@ |
| class CmsContentController < ApplicationController | |
| + | before_filter :load_cms_site |
| before_filter :load_cms_page, :only => :render_html | |
| before_filter :load_cms_layout, :only => [:render_css, :render_js] | |
| @@ | @@ -18,10 +19,16 @@ class CmsContentController < ApplicationController |
| protected | |
| + | def load_cms_site |
| + | @cms_site = CmsSite.find_by_hostname!(request.host.downcase) |
| + | rescue ActiveRecord::RecordNotFound |
| + | render :text => 'Site is not found', :status => 404 |
| + | end |
| + | |
| def load_cms_page | |
| - | @cms_page = CmsPage.find_by_full_path!("/#{params[:cms_path]}") |
| + | @cms_page = @cms_site.cms_pages.find_by_full_path!("/#{params[:cms_path]}") |
| rescue ActiveRecord::RecordNotFound | |
| - | if @cms_page = CmsPage.find_by_full_path('/404') |
| + | if @cms_page = @cms_site.cms_pages.find_by_full_path('/404') |
| render_html(404) | |
| else | |
| render :text => 'Page not found', :status => 404 | |
| @@ | @@ -29,7 +36,7 @@ protected |
| end | |
| def load_cms_layout | |
| - | @cms_layout = CmsLayout.find(params[:id]) |
| + | @cms_layout = @cms_site.cms_layouts.find(params[:id]) |
| rescue ActiveRecord::RecordNotFound | |
| render :nothing => true, :status => 404 | |
| end | |
app/models/cms_layout.rb
+3
-4
| @@ | @@ -7,10 +7,9 @@ class CmsLayout < ActiveRecord::Base |
| has_many :cms_pages, :dependent => :nullify | |
| # -- Validations ---------------------------------------------------------- | |
| - | validates :label, |
| - | :presence => true |
| - | validates :content, |
| - | :presence => true |
| + | validates :cms_site_id, :presence => true |
| + | validates :label, :presence => true |
| + | validates :content, :presence => true |
| # -- Class Methods -------------------------------------------------------- | |
| # Tree-like structure for layouts | |
app/models/cms_page.rb
+3
-1
| @@ | @@ -17,6 +17,8 @@ class CmsPage < ActiveRecord::Base |
| after_save :sync_child_pages | |
| # -- Validations ---------------------------------------------------------- | |
| + | validates :cms_site_id, |
| + | :presence => true |
| validates :label, | |
| :presence => true | |
| validates :slug, | |
| @@ | @@ -27,7 +29,7 @@ class CmsPage < ActiveRecord::Base |
| :presence => true | |
| validates :full_path, | |
| :presence => true, | |
| - | :uniqueness => true |
| + | :uniqueness => { :scope => :cms_site_id } |
| # -- Class Methods -------------------------------------------------------- | |
| # Tree-like structure for pages | |
app/models/cms_snippet.rb
+7
-5
| @@ | @@ -4,11 +4,13 @@ class CmsSnippet < ActiveRecord::Base |
| belongs_to :cms_site | |
| # -- Validations ---------------------------------------------------------- | |
| + | validates :cms_site_id, |
| + | :presence => true |
| validates :label, | |
| - | :presence => true, |
| - | :uniqueness => true, |
| - | :format => { :with => /^\w[a-z0-9_-]*$/i } |
| - | |
| + | :presence => true, |
| + | :uniqueness => { :scope => :cms_site_id }, |
| + | :format => { :with => /^\w[a-z0-9_-]*$/i } |
| + | |
| # -- Class Methods -------------------------------------------------------- | |
| def self.content_for(label) | |
| (s = find_by_label(label)) ? s.content : '' | |
| @@ | @@ -17,5 +19,5 @@ class CmsSnippet < ActiveRecord::Base |
| def self.initialize_or_find(cms_page, label) | |
| find_by_label(label) || new(:label => label) | |
| end | |
| - | |
| + | |
| end | |
test/fixtures/cms_layouts.yml
+0
-1
| @@ | @@ -1,6 +1,5 @@ |
| default: | |
| cms_site: default | |
| - | id: 1 |
| label: Default Layout | |
| parent: | |
| content: |- | |
test/fixtures/cms_pages.yml
+2
-2
| @@ | @@ -1,7 +1,7 @@ |
| default: | |
| cms_site: default | |
| parent: | |
| - | cms_layout_id: 1 |
| + | cms_layout: default |
| label: Default Page | |
| slug: | |
| full_path: '/' | |
| @@ | @@ -11,7 +11,7 @@ default: |
| child: | |
| cms_site: default | |
| parent: default | |
| - | cms_layout_id: 1 |
| + | cms_layout: default |
| label: Child Page | |
| slug: 'child-page' | |
| full_path: '/child-page' | |
test/functional/cms_admin/pages_controller_test.rb
+1
-1
| @@ | @@ -113,7 +113,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase |
| get :edit, :id => page | |
| assert_response :success | |
| assert assigns(:cms_page) | |
| - | assert_equal cms_layouts(:default), assigns(:cms_page).cms_layout |
| + | assert assigns(:cms_page).cms_layout |
| end | |
| def test_creation | |
test/functional/cms_content_controller_test.rb
+1
-1
| @@ | @@ -31,7 +31,7 @@ class CmsContentControllerTest < ActionController::TestCase |
| end | |
| def test_render_page_not_found_with_custom_404 | |
| - | CmsPage.create!( |
| + | cms_sites(:default).cms_pages.create!( |
| :label => '404', | |
| :slug => '404', | |
| :parent_id => cms_pages(:default).id, | |
test/integration/admin_sites_test.rb
+4
-4
| @@ | @@ -2,22 +2,22 @@ require File.dirname(__FILE__) + '/../test_helper' |
| class AdminSitesTest < ActionDispatch::IntegrationTest | |
| - | def test_get_pages_index |
| + | def test_get_admin_pages_index |
| http_auth :get, cms_admin_pages_path | |
| assert_response :success | |
| end | |
| - | def test_get_pages_index_with_no_site |
| + | def test_get_admin_pages_index_with_no_site |
| CmsSite.delete_all | |
| http_auth :get, cms_admin_pages_path | |
| assert_response :redirect | |
| assert_redirected_to new_cms_admin_site_path | |
| end | |
| - | def test_get_sites_index_with_no_site |
| + | def test_get_admin_sites_index_with_no_site |
| CmsSite.delete_all | |
| http_auth :get, cms_admin_sites_path | |
| assert_response :success | |
| end | |
| - | |
| + | |
| end | |
| \ No newline at end of file | |
test/unit/cms_block_test.rb
+1
-0
| @@ | @@ -23,6 +23,7 @@ class CmsBlockTest < ActiveSupport::TestCase |
| def test_new_with_cast_via_page_nested_attributes | |
| assert_difference ['CmsPage.count', 'CmsBlock.count'] do | |
| page = CmsPage.create!( | |
| + | :cms_site => cms_sites(:default), |
| :cms_layout => cms_layouts(:default), | |
| :label => 'test page', | |
| :slug => 'test_page', | |
test/unit/cms_page_test.rb
+9
-9
| @@ | @@ -29,28 +29,28 @@ class CmsPageTest < ActiveSupport::TestCase |
| def test_initialization_of_full_path | |
| page = CmsPage.new(new_params) | |
| assert page.invalid? | |
| - | assert_has_errors_on page, :full_path |
| + | assert_has_errors_on page, :cms_site_id |
| - | page = CmsPage.new(new_params(:parent => cms_pages(:default))) |
| + | page = cms_sites(:default).cms_pages.new(new_params(:parent => cms_pages(:default))) |
| assert page.valid? | |
| assert_equal '/test-page', page.full_path | |
| - | page = CmsPage.new(new_params(:parent => cms_pages(:child))) |
| + | page = cms_sites(:default).cms_pages.new(new_params(:parent => cms_pages(:child))) |
| assert page.valid? | |
| assert_equal '/child-page/test-page', page.full_path | |
| CmsPage.destroy_all | |
| - | page = CmsPage.new(new_params) |
| + | page = cms_sites(:default).cms_pages.new(new_params) |
| assert page.valid? | |
| assert_equal '/', page.full_path | |
| end | |
| def test_sync_child_pages | |
| page = cms_pages(:child) | |
| - | page_1 = CmsPage.create!(new_params(:parent => page, :slug => 'test-page-1')) |
| - | page_2 = CmsPage.create!(new_params(:parent => page, :slug => 'test-page-2')) |
| - | page_3 = CmsPage.create!(new_params(:parent => page_2, :slug => 'test-page-3')) |
| - | page_4 = CmsPage.create!(new_params(:parent => page_1, :slug => 'test-page-4')) |
| + | page_1 = cms_sites(:default).cms_pages.create!(new_params(:parent => page, :slug => 'test-page-1')) |
| + | page_2 = cms_sites(:default).cms_pages.create!(new_params(:parent => page, :slug => 'test-page-2')) |
| + | page_3 = cms_sites(:default).cms_pages.create!(new_params(:parent => page_2, :slug => 'test-page-3')) |
| + | page_4 = cms_sites(:default).cms_pages.create!(new_params(:parent => page_1, :slug => 'test-page-4')) |
| assert_equal '/child-page/test-page-1', page_1.full_path | |
| assert_equal '/child-page/test-page-2', page_2.full_path | |
| assert_equal '/child-page/test-page-2/test-page-3', page_3.full_path | |
| @@ | @@ -78,7 +78,7 @@ class CmsPageTest < ActiveSupport::TestCase |
| assert_equal 1, page_1.children_count | |
| assert_equal 0, page_2.children_count | |
| - | page_3 = CmsPage.create!(new_params(:parent => page_2)) |
| + | page_3 = cms_sites(:default).cms_pages.create!(new_params(:parent => page_2)) |
| page_1.reload; page_2.reload | |
| assert_equal 1, page_1.children_count | |
| assert_equal 1, page_2.children_count | |