comfortable_mexican_sofa 1.0.13 → 1.0.14
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/controllers/cms_content_controller.rb +7 -11
- data/app/models/cms_layout.rb +19 -2
- data/app/models/cms_page.rb +20 -3
- data/comfortable_mexican_sofa.gemspec +2 -2
- data/test/cms_seeds/test.host/layouts/default.yml +1 -0
- data/test/cms_seeds/test.host/layouts/nested.yml +1 -0
- data/test/functional/cms_content_controller_test.rb +2 -2
- data/test/integration/render_cms_seed_test.rb +18 -0
- data/test/integration/render_cms_test.rb +0 -9
- data/test/test_helper.rb +1 -0
- data/test/unit/cms_layout_test.rb +25 -0
- data/test/unit/cms_page_test.rb +25 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.14
|
@@ -10,13 +10,13 @@ class CmsContentController < ApplicationController
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def render_css
|
13
|
-
render :text => @cms_layout.
|
13
|
+
render :text => @cms_layout.css, :content_type => 'text/css'
|
14
14
|
end
|
15
15
|
|
16
16
|
def render_js
|
17
|
-
render :text => @cms_layout.
|
17
|
+
render :text => @cms_layout.js, :content_type => 'text/javascript'
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
protected
|
21
21
|
|
22
22
|
def load_cms_site
|
@@ -26,15 +26,11 @@ protected
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def load_cms_page
|
29
|
-
|
30
|
-
if ComfortableMexicanSofa.configuration.seed_data_path
|
31
|
-
@cms_page = CmsPage.load_from_file(@cms_site, "/#{params[:cms_path]}")
|
32
|
-
end
|
33
|
-
|
34
|
-
@cms_page ||= @cms_site.cms_pages.find_by_full_path!("/#{params[:cms_path]}")
|
29
|
+
@cms_page = CmsPage.load_for_full_path!(@cms_site, "/#{params[:cms_path]}")
|
35
30
|
return redirect_to(@cms_page.target_page.full_path) if @cms_page.target_page
|
31
|
+
|
36
32
|
rescue ActiveRecord::RecordNotFound
|
37
|
-
if @cms_page = @cms_site
|
33
|
+
if @cms_page = CmsPage.load_for_full_path(@cms_site, '/404')
|
38
34
|
render_html(404)
|
39
35
|
else
|
40
36
|
render :text => 'Page Not Found', :status => 404
|
@@ -42,7 +38,7 @@ protected
|
|
42
38
|
end
|
43
39
|
|
44
40
|
def load_cms_layout
|
45
|
-
@cms_layout = @cms_site
|
41
|
+
@cms_layout = CmsLayout.load_for_slug!(@cms_site, params[:id])
|
46
42
|
rescue ActiveRecord::RecordNotFound
|
47
43
|
render :nothing => true, :status => 404
|
48
44
|
end
|
data/app/models/cms_layout.rb
CHANGED
@@ -44,9 +44,9 @@ class CmsLayout < ActiveRecord::Base
|
|
44
44
|
end
|
45
45
|
|
46
46
|
# Attempting to initialize layout object from yaml file that is found in config.seed_data_path
|
47
|
-
def self.load_from_file(site,
|
47
|
+
def self.load_from_file(site, slug)
|
48
48
|
return nil if ComfortableMexicanSofa.config.seed_data_path.blank?
|
49
|
-
file_path = "#{ComfortableMexicanSofa.config.seed_data_path}/#{site.hostname}/layouts/#{
|
49
|
+
file_path = "#{ComfortableMexicanSofa.config.seed_data_path}/#{site.hostname}/layouts/#{slug}.yml"
|
50
50
|
return nil unless File.exists?(file_path)
|
51
51
|
attributes = YAML.load_file(file_path).symbolize_keys!
|
52
52
|
attributes[:parent] = CmsLayout.load_from_file(site, attributes[:parent])
|
@@ -54,6 +54,23 @@ class CmsLayout < ActiveRecord::Base
|
|
54
54
|
new(attributes)
|
55
55
|
end
|
56
56
|
|
57
|
+
# Wrapper around load_from_file and find_by_slug
|
58
|
+
# returns layout object if loaded / found
|
59
|
+
def self.load_for_slug!(site, slug)
|
60
|
+
if ComfortableMexicanSofa.configuration.seed_data_path
|
61
|
+
load_from_file(site, slug)
|
62
|
+
else
|
63
|
+
site.cms_layouts.find_by_slug(slug)
|
64
|
+
end || raise(ActiveRecord::RecordNotFound, "CmsLayout with slug: #{slug} cannot be found")
|
65
|
+
end
|
66
|
+
|
67
|
+
# Non-blowing-up version of the method above
|
68
|
+
def self.load_for_slug(site, slug)
|
69
|
+
load_for_slug!(site, slug)
|
70
|
+
rescue ActiveRecord::RecordNotFound
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
57
74
|
# -- Instance Methods -----------------------------------------------------
|
58
75
|
# magical merging tag is {cms:page:content} If parent layout has this tag
|
59
76
|
# defined its content will be merged. If no such tag found, parent content
|
data/app/models/cms_page.rb
CHANGED
@@ -48,10 +48,10 @@ class CmsPage < ActiveRecord::Base
|
|
48
48
|
|
49
49
|
# Attempting to initialize page object from yaml file that is found in config.seed_data_path
|
50
50
|
# This file defines all attributes of the page plus all the block information
|
51
|
-
def self.load_from_file(site,
|
51
|
+
def self.load_from_file(site, path)
|
52
52
|
return nil if ComfortableMexicanSofa.config.seed_data_path.blank?
|
53
|
-
|
54
|
-
file_path = "#{ComfortableMexicanSofa.config.seed_data_path}/#{site.hostname}/pages#{
|
53
|
+
path = (path == '/')? '/index' : path.to_s.chomp('/')
|
54
|
+
file_path = "#{ComfortableMexicanSofa.config.seed_data_path}/#{site.hostname}/pages#{path}.yml"
|
55
55
|
return nil unless File.exists?(file_path)
|
56
56
|
attributes = YAML.load_file(file_path).symbolize_keys!
|
57
57
|
attributes[:cms_layout] = CmsLayout.load_from_file(site, attributes[:cms_layout])
|
@@ -60,6 +60,23 @@ class CmsPage < ActiveRecord::Base
|
|
60
60
|
new(attributes)
|
61
61
|
end
|
62
62
|
|
63
|
+
# Wrapper around load_from_file and find_by_full_path
|
64
|
+
# returns page object if loaded / found
|
65
|
+
def self.load_for_full_path!(site, path)
|
66
|
+
if ComfortableMexicanSofa.configuration.seed_data_path
|
67
|
+
load_from_file(site, path)
|
68
|
+
else
|
69
|
+
site.cms_pages.find_by_full_path(path)
|
70
|
+
end || raise(ActiveRecord::RecordNotFound, "CmsPage with path: #{path} cannot be found")
|
71
|
+
end
|
72
|
+
|
73
|
+
# Non-blowing-up version of the method above
|
74
|
+
def self.load_for_full_path(site, path)
|
75
|
+
load_for_full_path!(site, path)
|
76
|
+
rescue ActiveRecord::RecordNotFound
|
77
|
+
nil
|
78
|
+
end
|
79
|
+
|
63
80
|
# -- Instance Methods -----------------------------------------------------
|
64
81
|
# Processing content will return rendered content and will populate
|
65
82
|
# self.cms_tags with instances of CmsTag
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{comfortable_mexican_sofa}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.14"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Oleg Khabarov", "The Working Group Inc"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-05}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{oleg@theworkinggroup.ca}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -58,7 +58,7 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_render_css
|
61
|
-
get :render_css, :id => cms_layouts(:default)
|
61
|
+
get :render_css, :id => cms_layouts(:default).slug
|
62
62
|
assert_response :success
|
63
63
|
assert_match %r{text\/css}, response.headers["Content-Type"]
|
64
64
|
assert_equal cms_layouts(:default).css, response.body
|
@@ -70,7 +70,7 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_render_js
|
73
|
-
get :render_js, :id => cms_layouts(:default)
|
73
|
+
get :render_js, :id => cms_layouts(:default).slug
|
74
74
|
assert_response :success
|
75
75
|
assert_match %r{text\/javascript}, response.headers["Content-Type"]
|
76
76
|
assert_equal cms_layouts(:default).js, response.body
|
@@ -13,4 +13,22 @@ class RenderCmsSeedTest < ActionDispatch::IntegrationTest
|
|
13
13
|
assert_equal '<html><div>Sub Child Page Content Content for Default Snippet</div></html>', response.body
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_get_seed_data_page
|
17
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
18
|
+
|
19
|
+
get '/'
|
20
|
+
assert_response :success
|
21
|
+
assert assigns(:cms_page)
|
22
|
+
assert assigns(:cms_page).new_record?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_get_seed_data_css
|
26
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
27
|
+
|
28
|
+
get '/cms-css/default'
|
29
|
+
assert_response :success
|
30
|
+
assert assigns(:cms_layout)
|
31
|
+
assert assigns(:cms_layout).new_record?
|
32
|
+
end
|
33
|
+
|
16
34
|
end
|
@@ -58,13 +58,4 @@ class RenderCmsTest < ActionDispatch::IntegrationTest
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
def test_get_seed_data_page
|
62
|
-
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
63
|
-
|
64
|
-
get '/seed_data_page'
|
65
|
-
assert_response :success
|
66
|
-
assert assigns(:cms_page)
|
67
|
-
assert assigns(:cms_page).new_record?
|
68
|
-
end
|
69
|
-
|
70
61
|
end
|
data/test/test_helper.rb
CHANGED
@@ -85,4 +85,29 @@ class CmsLayoutTest < ActiveSupport::TestCase
|
|
85
85
|
assert_equal '<html><div>{{cms:page:content}}</div></html>', layout.merged_content
|
86
86
|
end
|
87
87
|
|
88
|
+
def test_load_for_slug
|
89
|
+
assert layout = CmsLayout.load_for_slug!(cms_sites(:default), 'default')
|
90
|
+
assert !layout.new_record?
|
91
|
+
db_content = layout.content
|
92
|
+
|
93
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
94
|
+
assert layout = CmsLayout.load_for_slug!(cms_sites(:default), 'default')
|
95
|
+
assert layout.new_record?
|
96
|
+
file_content = layout.content
|
97
|
+
assert_not_equal db_content, file_content
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_load_for_slug_exceptions
|
101
|
+
assert_exception_raised ActiveRecord::RecordNotFound, 'CmsLayout with slug: not_found cannot be found' do
|
102
|
+
CmsLayout.load_for_slug!(cms_sites(:default), 'not_found')
|
103
|
+
end
|
104
|
+
assert !CmsLayout.load_for_slug(cms_sites(:default), 'not_found')
|
105
|
+
|
106
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
107
|
+
assert_exception_raised ActiveRecord::RecordNotFound, 'CmsLayout with slug: not_found cannot be found' do
|
108
|
+
CmsLayout.load_for_slug!(cms_sites(:default), 'not_found')
|
109
|
+
end
|
110
|
+
assert !CmsLayout.load_for_slug(cms_sites(:default), 'not_found')
|
111
|
+
end
|
112
|
+
|
88
113
|
end
|
data/test/unit/cms_page_test.rb
CHANGED
@@ -149,6 +149,31 @@ class CmsPageTest < ActiveSupport::TestCase
|
|
149
149
|
assert_equal '<html><div>Sub Child Page Content Content for Default Snippet</div></html>', page.content
|
150
150
|
end
|
151
151
|
|
152
|
+
def test_load_for_full_path
|
153
|
+
assert page = CmsPage.load_for_full_path!(cms_sites(:default), '/')
|
154
|
+
assert !page.new_record?
|
155
|
+
db_content = page.content
|
156
|
+
|
157
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
158
|
+
assert page = CmsPage.load_for_full_path!(cms_sites(:default), '/')
|
159
|
+
assert page.new_record?
|
160
|
+
file_content = page.content
|
161
|
+
assert_not_equal db_content, file_content
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_load_for_full_path_exceptions
|
165
|
+
assert_exception_raised ActiveRecord::RecordNotFound, 'CmsPage with path: /invalid_page cannot be found' do
|
166
|
+
CmsPage.load_for_full_path!(cms_sites(:default), '/invalid_page')
|
167
|
+
end
|
168
|
+
assert !CmsPage.load_for_full_path(cms_sites(:default), '/invalid_page')
|
169
|
+
|
170
|
+
ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
|
171
|
+
assert_exception_raised ActiveRecord::RecordNotFound, 'CmsPage with path: /invalid_page cannot be found' do
|
172
|
+
CmsPage.load_for_full_path!(cms_sites(:default), '/invalid_page')
|
173
|
+
end
|
174
|
+
assert !CmsPage.load_for_full_path(cms_sites(:default), '/invalid_page')
|
175
|
+
end
|
176
|
+
|
152
177
|
protected
|
153
178
|
|
154
179
|
def new_params(options = {})
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comfortable_mexican_sofa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 14
|
10
|
+
version: 1.0.14
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Oleg Khabarov
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-05 00:00:00 -04:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|