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 | |