changing how cms-css and cms-js served content works

Oleg committed Jul 21, 2011
commit 2cae94f5cf697a97f6b91ed19ac1ccbdcef7930b
Showing 5 changed files with 27 additions and 23 deletions
app/controllers/cms_content_controller.rb +14 -10
@@ @@ -30,15 +30,19 @@ protected
end
def load_cms_site
- @cms_site ||= Cms::Site.first if Cms::Site.count == 1
- Cms::Site.find_all_by_hostname(request.host.downcase).each do |site|
- if site.path.blank?
- @cms_site = site
- elsif "#{request.fullpath}/".match /^\/#{Regexp.escape(site.path.to_s)}\//
- @cms_site = site
- break
- end
- end unless @cms_site
+ if params[:site_id]
+ @cms_site ||= Cms::Site.find_by_id(params[:site_id])
+ else
+ @cms_site ||= Cms::Site.first if Cms::Site.count == 1
+ Cms::Site.find_all_by_hostname(request.host.downcase).each do |site|
+ if site.path.blank?
+ @cms_site = site
+ elsif "#{request.fullpath}/".match /^\/#{Regexp.escape(site.path.to_s)}\//
+ @cms_site = site
+ break
+ end
+ end unless @cms_site
+ end
if @cms_site
params[:cms_path].to_s.gsub!(/^#{@cms_site.path}/, '').gsub!(/^\//, '')
@@ @@ -67,7 +71,7 @@ protected
end
def load_cms_layout
- @cms_layout = @cms_site.layouts.find_by_slug!(params[:id])
+ @cms_layout = @cms_site.layouts.find_by_slug!(params[:layout_slug])
rescue ActiveRecord::RecordNotFound
render :nothing => true, :status => 404
end
config/routes.rb +3 -3
@@ @@ -30,9 +30,9 @@ Rails.application.routes.draw do
end unless ComfortableMexicanSofa.config.admin_route_prefix.blank?
scope :controller => :cms_content do
- get 'cms-css/:id' => :render_css, :as => 'cms_css'
- get 'cms-js/:id' => :render_js, :as => 'cms_js'
- get '/' => :render_html, :as => 'cms_html', :path => "(*cms_path)"
+ get 'cms-css/:site_id/:layout_slug' => :render_css, :as => 'cms_css'
+ get 'cms-js/:site_id/:layout_slug' => :render_js, :as => 'cms_js'
+ get '/' => :render_html, :as => 'cms_html', :path => "(*cms_path)"
end
end
comfortable_mexican_sofa/tags/asset.rb b/lib/comfortable_mexican_sofa/tags/asset.rb +2 -2
@@ @@ -13,11 +13,11 @@ class ComfortableMexicanSofa::Tag::Asset
case type
when 'css'
- out = "#{page.site.path}/cms-css/#{label}.css"
+ out = "/cms-css/#{page.site.id}/#{label}.css"
out = "<link href='#{out}' media='screen' rel='stylesheet' type='text/css' />" if format == 'html_tag'
out
when 'js'
- out = "#{page.site.path}/cms-js/#{label}.js"
+ out = "/cms-js/#{page.site.id}/#{label}.js"
out = "<script src='#{out}' type='text/javascript'></script>" if format == 'html_tag'
out
end
test/functional/cms_content_controller_test.rb +4 -4
@@ @@ -122,26 +122,26 @@ class CmsContentControllerTest < ActionController::TestCase
end
def test_render_css
- get :render_css, :id => cms_layouts(:default).slug
+ get :render_css, :site_id => cms_sites(:default).id, :layout_slug => cms_layouts(:default).slug
assert_response :success
assert_match %r{text\/css}, response.headers["Content-Type"]
assert_equal cms_layouts(:default).css, response.body
end
def test_render_css_not_found
- get :render_css, :id => 'bogus'
+ get :render_css, :site_id => cms_sites(:default).id, :layout_slug => 'bogus'
assert_response 404
end
def test_render_js
- get :render_js, :id => cms_layouts(:default).slug
+ get :render_js, :site_id => cms_sites(:default).id, :layout_slug => cms_layouts(:default).slug
assert_response :success
assert_match %r{text\/javascript}, response.headers["Content-Type"]
assert_equal cms_layouts(:default).js, response.body
end
def test_render_js_not_found
- get :render_js, :id => 'bogus'
+ get :render_js, :site_id => cms_sites(:default).id, :layout_slug => 'bogus'
assert_response 404
end
test/unit/tags/asset_test.rb +4 -4
@@ @@ -33,24 +33,24 @@ class AssetTest < ActiveSupport::TestCase
tag = ComfortableMexicanSofa::Tag::Asset.initialize_tag(
cms_pages(:default), '{{ cms:asset:default:css }}'
)
- assert_equal '/cms-css/default.css', tag.render
+ assert_equal "/cms-css/#{cms_sites(:default).id}/default.css", tag.render
tag = ComfortableMexicanSofa::Tag::Asset.initialize_tag(
cms_pages(:default), '{{ cms:asset:default:css:html_tag }}'
)
- assert_equal "<link href='/cms-css/default.css' media='screen' rel='stylesheet' type='text/css' />", tag.render
+ assert_equal "<link href='/cms-css/#{cms_sites(:default).id}/default.css' media='screen' rel='stylesheet' type='text/css' />", tag.render
end
def test_render_for_js
tag = ComfortableMexicanSofa::Tag::Asset.initialize_tag(
cms_pages(:default), '{{ cms:asset:default:js }}'
)
- assert_equal '/cms-js/default.js', tag.render
+ assert_equal "/cms-js/#{cms_sites(:default).id}/default.js", tag.render
tag = ComfortableMexicanSofa::Tag::Asset.initialize_tag(
cms_pages(:default), '{{ cms:asset:default:js:html_tag }}'
)
- assert_equal "<script src='/cms-js/default.js' type='text/javascript'></script>", tag.render
+ assert_equal "<script src='/cms-js/#{cms_sites(:default).id}/default.js' type='text/javascript'></script>", tag.render
end
end
\ No newline at end of file