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