comfortable_mexican_sofa 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|