comfortable_mexican_sofa 1.6.16 → 1.6.17
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 +1 -1
- data/app/models/cms/site.rb +11 -2
- data/comfortable_mexican_sofa.gemspec +2 -2
- data/config/initializers/comfortable_mexican_sofa.rb +10 -0
- data/config/routes.rb +8 -4
- data/lib/comfortable_mexican_sofa/configuration.rb +12 -0
- data/lib/comfortable_mexican_sofa/form_builder.rb +1 -1
- data/test/functional/cms_content_controller_test.rb +5 -4
- data/test/integration/routing_extensions_test.rb +12 -0
- data/test/test_helper.rb +2 -0
- data/test/unit/configuration_test.rb +2 -1
- data/test/unit/models/site_test.rb +14 -0
- metadata +9 -9
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.6.
|
|
1
|
+
1.6.17
|
|
@@ -14,7 +14,7 @@ class CmsContentController < ApplicationController
|
|
|
14
14
|
def render_html(status = 200)
|
|
15
15
|
if @cms_layout = @cms_page.layout
|
|
16
16
|
app_layout = (@cms_layout.app_layout.blank? || request.xhr?) ? false : @cms_layout.app_layout
|
|
17
|
-
render :inline => @cms_page.content, :layout => app_layout, :status => status
|
|
17
|
+
render :inline => @cms_page.content, :layout => app_layout, :status => status, :content_type => 'text/html'
|
|
18
18
|
else
|
|
19
19
|
render :text => I18n.t('cms.content.layout_not_found'), :status => 404
|
|
20
20
|
end
|
data/app/models/cms/site.rb
CHANGED
|
@@ -37,7 +37,7 @@ class Cms::Site < ActiveRecord::Base
|
|
|
37
37
|
def self.find_site(host, path = nil)
|
|
38
38
|
return Cms::Site.first if Cms::Site.count == 1
|
|
39
39
|
cms_site = nil
|
|
40
|
-
Cms::Site.find_all_by_hostname(host).each do |site|
|
|
40
|
+
Cms::Site.find_all_by_hostname(real_host_from_aliases(host)).each do |site|
|
|
41
41
|
if site.path.blank?
|
|
42
42
|
cms_site = site
|
|
43
43
|
elsif "#{path}/".match /^\/#{Regexp.escape(site.path.to_s)}\//
|
|
@@ -47,8 +47,17 @@ class Cms::Site < ActiveRecord::Base
|
|
|
47
47
|
end
|
|
48
48
|
return cms_site
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
protected
|
|
52
|
+
|
|
53
|
+
def self.real_host_from_aliases(host)
|
|
54
|
+
if aliases = ComfortableMexicanSofa.config.hostname_aliases
|
|
55
|
+
aliases.each do |alias_host, aliases|
|
|
56
|
+
return alias_host if aliases.include?(host)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
host
|
|
60
|
+
end
|
|
52
61
|
|
|
53
62
|
def assign_identifier
|
|
54
63
|
self.identifier = self.identifier.blank?? self.hostname.try(:idify) : self.identifier
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "comfortable_mexican_sofa"
|
|
8
|
-
s.version = "1.6.
|
|
8
|
+
s.version = "1.6.17"
|
|
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 = "2012-03-
|
|
12
|
+
s.date = "2012-03-24"
|
|
13
13
|
s.description = ""
|
|
14
14
|
s.email = "oleg@theworkinggroup.ca"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -26,6 +26,10 @@ ComfortableMexicanSofa.configure do |config|
|
|
|
26
26
|
# If you want to include the routes manually set this to false
|
|
27
27
|
# config.use_default_routes = true
|
|
28
28
|
|
|
29
|
+
# /sitemap.xml that is used by search engines for indexing. It's enabled by
|
|
30
|
+
# default, but you may turn it off.
|
|
31
|
+
# config.enable_sitemap = true
|
|
32
|
+
|
|
29
33
|
# File uploads use Paperclip and can support filesystem or s3 uploads. Override
|
|
30
34
|
# the upload method and appropriate settings based on Paperclip. For S3 see:
|
|
31
35
|
# http://rdoc.info/gems/paperclip/2.3.8/Paperclip/Storage/S3, and for
|
|
@@ -87,6 +91,12 @@ ComfortableMexicanSofa.configure do |config|
|
|
|
87
91
|
# are accessible by default. Empty array will prevent rendering of all partials.
|
|
88
92
|
# config.allowed_partials = nil
|
|
89
93
|
|
|
94
|
+
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
95
|
+
# production env with dev/testing envs.
|
|
96
|
+
# e.g. config.site_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
|
|
97
|
+
# Default is nil (not used)
|
|
98
|
+
# config.hostname_aliases = nil
|
|
99
|
+
|
|
90
100
|
end
|
|
91
101
|
|
|
92
102
|
# Default credentials for ComfortableMexicanSofa::HttpAuth
|
data/config/routes.rb
CHANGED
|
@@ -34,10 +34,14 @@ Rails.application.routes.draw do
|
|
|
34
34
|
scope :controller => :cms_content do
|
|
35
35
|
get 'cms-css/:site_id/:identifier' => :render_css, :as => 'cms_css'
|
|
36
36
|
get 'cms-js/:site_id/:identifier' => :render_js, :as => 'cms_js'
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
|
|
38
|
+
if ComfortableMexicanSofa.config.enable_sitemap
|
|
39
|
+
get '(:cms_path)/sitemap' => :render_sitemap,
|
|
40
|
+
:as => 'cms_sitemap',
|
|
41
|
+
:constraints => {:format => /xml/},
|
|
42
|
+
:format => :xml
|
|
43
|
+
end
|
|
44
|
+
|
|
41
45
|
get '/' => :render_html, :as => 'cms_html', :path => "(*cms_path)"
|
|
42
46
|
end
|
|
43
47
|
|
|
@@ -23,6 +23,10 @@ class ComfortableMexicanSofa::Configuration
|
|
|
23
23
|
# If you want to include the routes manually set this to false
|
|
24
24
|
attr_accessor :use_default_routes
|
|
25
25
|
|
|
26
|
+
# /sitemap.xml that is used by search engines for indexing. It's enabled by
|
|
27
|
+
# default, but you may turn it off.
|
|
28
|
+
attr_accessor :enable_sitemap
|
|
29
|
+
|
|
26
30
|
# Upload settings
|
|
27
31
|
attr_accessor :upload_file_options
|
|
28
32
|
|
|
@@ -64,6 +68,12 @@ class ComfortableMexicanSofa::Configuration
|
|
|
64
68
|
# Whitelist of partials paths that can be used via {{cms:partial}} tag. All partials
|
|
65
69
|
# are accessible by default. Empty array will prevent rendering of all partials.
|
|
66
70
|
attr_accessor :allowed_partials
|
|
71
|
+
|
|
72
|
+
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
73
|
+
# production env with dev/testing envs.
|
|
74
|
+
# e.g. config.site_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
|
|
75
|
+
# Default is nil (not used)
|
|
76
|
+
attr_accessor :hostname_aliases
|
|
67
77
|
|
|
68
78
|
# Configuration defaults
|
|
69
79
|
def initialize
|
|
@@ -74,6 +84,7 @@ class ComfortableMexicanSofa::Configuration
|
|
|
74
84
|
@admin_route_prefix = 'cms-admin'
|
|
75
85
|
@admin_route_redirect = ''
|
|
76
86
|
@use_default_routes = true
|
|
87
|
+
@enable_sitemap = true
|
|
77
88
|
@upload_file_options = { :url => '/system/:class/:id/:attachment/:style/:filename' }
|
|
78
89
|
@enable_fixtures = false
|
|
79
90
|
@fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
|
|
@@ -91,6 +102,7 @@ class ComfortableMexicanSofa::Configuration
|
|
|
91
102
|
@allow_irb = false
|
|
92
103
|
@allowed_helpers = nil
|
|
93
104
|
@allowed_partials = nil
|
|
105
|
+
@hostname_aliases = nil
|
|
94
106
|
end
|
|
95
107
|
|
|
96
108
|
end
|
|
@@ -19,10 +19,11 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
|
19
19
|
default_snippet_content
|
|
20
20
|
layout_content_c'
|
|
21
21
|
), response.body
|
|
22
|
+
assert_equal 'text/html', response.content_type
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
def test_render_page_with_app_layout
|
|
25
|
-
cms_layouts(:default).update_attribute(:app_layout, 'cms_admin
|
|
26
|
+
cms_layouts(:default).update_attribute(:app_layout, 'cms_admin')
|
|
26
27
|
get :render_html, :cms_path => ''
|
|
27
28
|
assert_response :success
|
|
28
29
|
assert assigns(:cms_page)
|
|
@@ -30,7 +31,7 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
def test_render_page_with_xhr
|
|
33
|
-
cms_layouts(:default).update_attribute(:app_layout, 'cms_admin
|
|
34
|
+
cms_layouts(:default).update_attribute(:app_layout, 'cms_admin')
|
|
34
35
|
xhr :get, :render_html, :cms_path => ''
|
|
35
36
|
assert_response :success
|
|
36
37
|
assert assigns(:cms_page)
|
|
@@ -137,7 +138,7 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
|
137
138
|
def test_render_css
|
|
138
139
|
get :render_css, :site_id => cms_sites(:default).id, :identifier => cms_layouts(:default).identifier
|
|
139
140
|
assert_response :success
|
|
140
|
-
assert_match
|
|
141
|
+
assert_match 'text/css', response.content_type
|
|
141
142
|
assert_equal cms_layouts(:default).css, response.body
|
|
142
143
|
end
|
|
143
144
|
|
|
@@ -149,7 +150,7 @@ class CmsContentControllerTest < ActionController::TestCase
|
|
|
149
150
|
def test_render_js
|
|
150
151
|
get :render_js, :site_id => cms_sites(:default).id, :identifier => cms_layouts(:default).identifier
|
|
151
152
|
assert_response :success
|
|
152
|
-
|
|
153
|
+
assert_equal 'text/javascript', response.content_type
|
|
153
154
|
assert_equal cms_layouts(:default).js, response.body
|
|
154
155
|
end
|
|
155
156
|
|
|
@@ -46,4 +46,16 @@ class RoutingExtensionsTest < ActionDispatch::IntegrationTest
|
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
def test_get_sitemap
|
|
50
|
+
get '/sitemap', :format => 'xml'
|
|
51
|
+
assert_response :success
|
|
52
|
+
|
|
53
|
+
ComfortableMexicanSofa.config.enable_sitemap = false
|
|
54
|
+
Rails.application.reload_routes!
|
|
55
|
+
|
|
56
|
+
assert_exception_raised ActionController::RoutingError, 'Page Not Found' do
|
|
57
|
+
get '/sitemap', :format => 'xml'
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
49
61
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -24,6 +24,7 @@ class ActiveSupport::TestCase
|
|
|
24
24
|
config.admin_route_prefix = 'cms-admin'
|
|
25
25
|
config.admin_route_redirect = ''
|
|
26
26
|
config.use_default_routes = true
|
|
27
|
+
config.enable_sitemap = true
|
|
27
28
|
config.enable_fixtures = false
|
|
28
29
|
config.fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
|
|
29
30
|
config.revisions_limit = 25
|
|
@@ -39,6 +40,7 @@ class ActiveSupport::TestCase
|
|
|
39
40
|
config.allow_irb = false
|
|
40
41
|
config.allowed_helpers = nil
|
|
41
42
|
config.allowed_partials = nil
|
|
43
|
+
config.hostname_aliases = nil
|
|
42
44
|
end
|
|
43
45
|
ComfortableMexicanSofa::HttpAuth.username = 'username'
|
|
44
46
|
ComfortableMexicanSofa::HttpAuth.password = 'password'
|
|
@@ -11,8 +11,8 @@ class ConfigurationTest < ActiveSupport::TestCase
|
|
|
11
11
|
assert_equal 'ComfortableMexicanSofa::DummyAuth', config.public_auth
|
|
12
12
|
assert_equal 'cms-admin', config.admin_route_prefix
|
|
13
13
|
assert_equal true, config.use_default_routes
|
|
14
|
+
assert_equal true, config.enable_sitemap
|
|
14
15
|
assert_equal '', config.admin_route_redirect
|
|
15
|
-
|
|
16
16
|
assert_equal false, config.enable_fixtures
|
|
17
17
|
assert_equal File.expand_path('db/cms_fixtures', Rails.root), config.fixtures_path
|
|
18
18
|
assert_equal 25, config.revisions_limit
|
|
@@ -31,6 +31,7 @@ class ConfigurationTest < ActiveSupport::TestCase
|
|
|
31
31
|
assert_equal false, config.allow_irb
|
|
32
32
|
assert_equal nil, config.allowed_helpers
|
|
33
33
|
assert_equal nil, config.allowed_partials
|
|
34
|
+
assert_equal nil, config.hostname_aliases
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
def test_initialization_overrides
|
|
@@ -121,4 +121,18 @@ class CmsSiteTest < ActiveSupport::TestCase
|
|
|
121
121
|
assert_equal site_c, Cms::Site.find_site('test2.host', '/fr/some/path')
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
+
def test_find_site_with_site_alias
|
|
125
|
+
site_a = cms_sites(:default)
|
|
126
|
+
site_b = Cms::Site.create!(:identifier => 'site_b', :hostname => 'test2.host')
|
|
127
|
+
|
|
128
|
+
ComfortableMexicanSofa.config.hostname_aliases = {
|
|
129
|
+
'test.host' => 'alias_a.host',
|
|
130
|
+
'test2.host' => %w(alias_b.host alias_c.host)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
assert_equal site_a, Cms::Site.find_site('alias_a.host')
|
|
134
|
+
assert_equal site_b, Cms::Site.find_site('alias_b.host')
|
|
135
|
+
assert_equal site_b, Cms::Site.find_site('alias_c.host')
|
|
136
|
+
end
|
|
137
|
+
|
|
124
138
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: comfortable_mexican_sofa
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.6.
|
|
4
|
+
version: 1.6.17
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,11 +10,11 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2012-03-
|
|
13
|
+
date: 2012-03-24 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rails
|
|
17
|
-
requirement: &
|
|
17
|
+
requirement: &70157649574360 !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
20
|
- - ! '>='
|
|
@@ -22,10 +22,10 @@ dependencies:
|
|
|
22
22
|
version: 3.0.0
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
|
-
version_requirements: *
|
|
25
|
+
version_requirements: *70157649574360
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: active_link_to
|
|
28
|
-
requirement: &
|
|
28
|
+
requirement: &70157649573440 !ruby/object:Gem::Requirement
|
|
29
29
|
none: false
|
|
30
30
|
requirements:
|
|
31
31
|
- - ~>
|
|
@@ -33,10 +33,10 @@ dependencies:
|
|
|
33
33
|
version: 1.0.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
|
-
version_requirements: *
|
|
36
|
+
version_requirements: *70157649573440
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
38
|
name: paperclip
|
|
39
|
-
requirement: &
|
|
39
|
+
requirement: &70157649572060 !ruby/object:Gem::Requirement
|
|
40
40
|
none: false
|
|
41
41
|
requirements:
|
|
42
42
|
- - ! '>='
|
|
@@ -44,7 +44,7 @@ dependencies:
|
|
|
44
44
|
version: 2.3.0
|
|
45
45
|
type: :runtime
|
|
46
46
|
prerelease: false
|
|
47
|
-
version_requirements: *
|
|
47
|
+
version_requirements: *70157649572060
|
|
48
48
|
description: ''
|
|
49
49
|
email: oleg@theworkinggroup.ca
|
|
50
50
|
executables: []
|
|
@@ -369,7 +369,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
369
369
|
version: '0'
|
|
370
370
|
segments:
|
|
371
371
|
- 0
|
|
372
|
-
hash:
|
|
372
|
+
hash: -1640044306951500333
|
|
373
373
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
374
374
|
none: false
|
|
375
375
|
requirements:
|