adjusting layout css/js rendering

Oleg committed Oct 01, 2010
commit 0a78f42735a541dd145d1062b2c23ea69158c747
Showing 6 changed files with 26 additions and 47 deletions
app/controllers/cms_content_controller.rb +13 -9
@@ @@ -1,21 +1,19 @@
class CmsContentController < ApplicationController
- before_filter :load_cms_page
+
+ before_filter :load_cms_page, :only => :render_html
+ before_filter :load_cms_layout, :only => [:render_css, :render_js]
- def render_page
+ def render_html
# TODO
- render :text => 'found'
+ render :inline => @cms_page.content
end
def render_css
- send_data @cms_page.cms_layout.merged_css,
- :filename => 'styles.css',
- :type => 'text/css'
+ render :text => @cms_layout.merged_css, :content_type => 'text/css'
end
def render_js
- send_data @cms_page.cms_layout.merged_js,
- :filename => 'jscript.js',
- :type => 'text/javascript'
+ render :text => @cms_layout.merged_js, :content_type => 'text/javascript'
end
protected
@@ @@ -26,4 +24,10 @@ protected
render :text => 'Page not found', :status => 404
end
+ def load_cms_layout
+ @cms_layout = CmsLayout.find(params[:id])
+ rescue ActiveRecord::RecordNotFound
+ render :nothing => true, :status => 404
+ end
+
end
app/models/cms_layout.rb +2 -4
@@ @@ -39,13 +39,11 @@ class CmsLayout < ActiveRecord::Base
end
def merged_css
- delimeter = '\n/* -------------------- */\n'
- self.ancestors.inject([self.css]){|result, l| result << l.css}.join(delimeter)
+ self.parent ? self.parent.merged_css + self.css : self.css.to_s
end
def merged_js
- delimeter = '\n// --------------------\n'
- self.ancestors.inject([self.js]){|result, l| result << l.js}.join(delimeter)
+ self.parent ? self.parent.merged_js + self.js : self.js.to_s
end
end
config/routes.rb +4 -4
@@ @@ -11,10 +11,10 @@ Rails.application.routes.draw do
resources :uploads
end
- scope :controller => :cms_content, :path => '(*cms_path)' do
- get '/styles.css' => :render_css
- get '/jscript.js' => :render_js
- get '/' => :render_page
+ scope :controller => :cms_content do
+ get '/cms-css/:id' => :render_css, :format => 'css'
+ get '/cms-js/:id' => :render_js, :format => 'js'
+ get '/' => :render_html, :path => '(*cms_path)'
end
end
test/fixtures/cms_pages.yml +0 -9
@@ @@ -14,13 +14,4 @@ child:
slug: 'child-page'
full_path: '/child-page'
children_count: 0
- position: 0
-
- with_nested_layout:
- parent: default
- cms_layout: child
- label: Page with nested layout
- slug: 'with-nested_layout'
- full_path: '/with-nested_layout'
- children_count: 0
position: 0
\ No newline at end of file
test/functional/cms_content_controller_test.rb +5 -19
@@ @@ -3,43 +3,29 @@ require File.dirname(__FILE__) + '/../test_helper'
class CmsContentControllerTest < ActionController::TestCase
def test_render_page
- get :render_page, :cms_path => ''
+ get :render_html, :cms_path => ''
assert_equal assigns(:cms_page), cms_pages(:default)
assert_response :success
end
def test_render_css
- get :render_css, :cms_path => ''
+ get :render_css, :id => cms_layouts(:default)
assert_response :success
assert_match %r{text\/css}, @response.headers["Content-Type"]
assert_equal cms_layouts(:default).css, @response.body
end
- def test_render_nested_css
- get :render_css, :cms_path => 'with-nested_layout'
- assert_response :success
- assert_match %r{text\/css}, @response.headers["Content-Type"]
- assert_equal assigns(:cms_page).cms_layout.merged_css, @response.body
- end
-
def test_render_js
- get :render_js, :cms_path => ''
+ get :render_js, :id => cms_layouts(:default)
assert_response :success
assert_match %r{text\/javascript}, @response.headers["Content-Type"]
assert_equal cms_layouts(:default).js, @response.body
end
- def test_render_nested_js
- get :render_js, :cms_path => 'with-nested_layout'
- assert_response :success
- assert_match %r{text\/javascript}, @response.headers["Content-Type"]
- assert_equal assigns(:cms_page).cms_layout.merged_js, @response.body
- end
-
def test_render_css_and_js_for_nonexistent_layout
- get :render_css, :cms_path => 'bogus'
+ get :render_css, :id => 'bogus'
assert_response 404
- get :render_js, :cms_path => 'bogus'
+ get :render_js, :id => 'bogus'
assert_response 404
end
test/unit/cms_layout_test.rb +2 -2
@@ @@ -32,12 +32,12 @@ class CmsLayoutTest < ActiveSupport::TestCase
end
def test_merged_css
- merged_css = [cms_layouts(:child).css, cms_layouts(:nested).css].join('\n/* -------------------- */\n')
+ merged_css = cms_layouts(:nested).css + cms_layouts(:child).css
assert_equal merged_css, cms_layouts(:child).merged_css
end
def test_merged_js
- merged_js = [cms_layouts(:child).js, cms_layouts(:nested).js].join('\n// --------------------\n')
+ merged_js = cms_layouts(:nested).js + cms_layouts(:child).js
assert_equal merged_js, cms_layouts(:child).merged_js
end