comfortable_mexican_sofa 1.9.1 → 1.9.2
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/README.md +8 -4
- data/app/controllers/cms_admin/base_controller.rb +1 -1
- data/app/controllers/cms_admin/snippets_controller.rb +1 -1
- data/config/initializers/comfortable_mexican_sofa.rb +21 -18
- data/lib/comfortable_mexican_sofa/configuration.rb +9 -0
- data/lib/comfortable_mexican_sofa/fixture/page.rb +2 -2
- data/lib/comfortable_mexican_sofa/tags/template.rb +22 -0
- data/lib/comfortable_mexican_sofa/version.rb +1 -1
- data/lib/comfortable_mexican_sofa/view_methods.rb +43 -11
- data/test/controllers/cms_admin/snippets_controller_test.rb +8 -0
- data/test/models/configuration_test.rb +1 -0
- data/test/models/tags/template_test.rb +56 -0
- data/test/models/view_methods_test.rb +58 -9
- metadata +4 -2
data/README.md
CHANGED
|
@@ -18,8 +18,10 @@ Installation
|
|
|
18
18
|
------------
|
|
19
19
|
Add gem definition to your Gemfile:
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
```ruby
|
|
22
|
+
gem 'comfortable_mexican_sofa', '~> 1.9.0'
|
|
23
|
+
```
|
|
24
|
+
|
|
23
25
|
Then from the Rails project's root run:
|
|
24
26
|
|
|
25
27
|
bundle install
|
|
@@ -39,8 +41,10 @@ Installation for Rails 3
|
|
|
39
41
|
------------------------
|
|
40
42
|
For Rails 3 apps feel free to use [1.8 release](https://github.com/comfy/comfortable-mexican-sofa/tree/1.8)
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
```ruby
|
|
45
|
+
gem 'comfortable_mexican_sofa', '~> 1.8.0'
|
|
46
|
+
```
|
|
47
|
+
|
|
44
48
|
Quick Start Guide
|
|
45
49
|
-----------------
|
|
46
50
|
After finishing installation you should be able to navigate to http://yoursite/cms-admin
|
|
@@ -4,35 +4,38 @@ ComfortableMexicanSofa.configure do |config|
|
|
|
4
4
|
# Title of the admin area
|
|
5
5
|
# config.cms_title = 'ComfortableMexicanSofa CMS Engine'
|
|
6
6
|
|
|
7
|
+
# Controller that is inherited from CmsAdmin::BaseController
|
|
8
|
+
# config.base_controller = 'ApplicationController'
|
|
9
|
+
|
|
7
10
|
# Module responsible for authentication. You can replace it with your own.
|
|
8
11
|
# It simply needs to have #authenticate method. See http_auth.rb for reference.
|
|
9
12
|
# config.admin_auth = 'ComfortableMexicanSofa::HttpAuth'
|
|
10
|
-
|
|
13
|
+
|
|
11
14
|
# Module responsible for public authentication. Similar to the above. You also
|
|
12
15
|
# will have access to @cms_site, @cms_layout, @cms_page so you can use them in
|
|
13
16
|
# your logic. Default module doesn't do anything.
|
|
14
17
|
# config.public_auth = 'ComfortableMexicanSofa::DummyAuth'
|
|
15
|
-
|
|
18
|
+
|
|
16
19
|
# When arriving at /cms-admin you may chose to redirect to arbirtary path,
|
|
17
20
|
# for example '/cms-admin/users'
|
|
18
21
|
# config.admin_route_redirect = ''
|
|
19
|
-
|
|
22
|
+
|
|
20
23
|
# File uploads use Paperclip and can support filesystem or s3 uploads. Override
|
|
21
24
|
# the upload method and appropriate settings based on Paperclip. For S3 see:
|
|
22
|
-
# http://rdoc.info/gems/paperclip/2.3.8/Paperclip/Storage/S3, and for
|
|
25
|
+
# http://rdoc.info/gems/paperclip/2.3.8/Paperclip/Storage/S3, and for
|
|
23
26
|
# filesystem see: http://rdoc.info/gems/paperclip/2.3.8/Paperclip/Storage/Filesystem
|
|
24
27
|
# If you are using S3 and HTTPS, pass :s3_protocol => '' to have URLs that use the protocol of the page
|
|
25
28
|
# config.upload_file_options = {:url => '/system/:class/:id/:attachment/:style/:filename'}
|
|
26
|
-
|
|
29
|
+
|
|
27
30
|
# Sofa allows you to setup entire site from files. Database is updated with each
|
|
28
31
|
# request (if necessary). Please note that database entries are destroyed if there's
|
|
29
32
|
# no corresponding file. Fixtures are disabled by default.
|
|
30
33
|
# config.enable_fixtures = false
|
|
31
|
-
|
|
34
|
+
|
|
32
35
|
# Path where fixtures can be located.
|
|
33
36
|
# config.fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
|
|
34
|
-
|
|
35
|
-
# Importing fixtures into Database
|
|
37
|
+
|
|
38
|
+
# Importing fixtures into Database
|
|
36
39
|
# To load fixtures into the database just run this rake task:
|
|
37
40
|
# local: $ rake comfortable_mexican_sofa:fixtures:import FROM=example.local TO=localhost
|
|
38
41
|
# Heroku: $ heroku run rake comfortable_mexican_sofa:fixtures:import FROM=example.local TO=yourapp.herokuapp.com
|
|
@@ -43,16 +46,16 @@ ComfortableMexicanSofa.configure do |config|
|
|
|
43
46
|
# local: $ rake comfortable_mexican_sofa:fixtures:export FROM=localhost TO=example.local
|
|
44
47
|
# Heroku: $ heroku run rake comfortable_mexican_sofa:fixtures:export FROM=yourapp.herokuapp.com TO=example.local
|
|
45
48
|
# This will create example.local folder and dump all content from example.com Site.
|
|
46
|
-
|
|
49
|
+
|
|
47
50
|
# Content for Layouts, Pages and Snippets has a revision history. You can revert
|
|
48
51
|
# a previous version using this system. You can control how many revisions per
|
|
49
52
|
# object you want to keep. Set it to 0 if you wish to turn this feature off.
|
|
50
53
|
# config.revisions_limit = 25
|
|
51
|
-
|
|
54
|
+
|
|
52
55
|
# Locale definitions. If you want to define your own locale merge
|
|
53
56
|
# {:locale => 'Locale Title'} with this.
|
|
54
57
|
# config.locales = {:en => 'English', :es => 'Español'}
|
|
55
|
-
|
|
58
|
+
|
|
56
59
|
# Admin interface will respect the locale of the site being managed. However you can
|
|
57
60
|
# force it to English by setting this to `:en`
|
|
58
61
|
# config.admin_locale = nil
|
|
@@ -61,30 +64,30 @@ ComfortableMexicanSofa.configure do |config|
|
|
|
61
64
|
# add a database_config. For example, setting it to 'cms' will look for a cms_#{Rails.env}
|
|
62
65
|
# definition in your database.yml file
|
|
63
66
|
# config.database_config = nil
|
|
64
|
-
|
|
67
|
+
|
|
65
68
|
# A class that is included as a sweeper to admin base controller if it's set
|
|
66
69
|
# config.admin_cache_sweeper = nil
|
|
67
|
-
|
|
70
|
+
|
|
68
71
|
# By default you cannot have irb code inside your layouts/pages/snippets.
|
|
69
72
|
# Generally this is to prevent putting something like this:
|
|
70
73
|
# <% User.delete_all %> but if you really want to allow it...
|
|
71
74
|
# config.allow_irb = false
|
|
72
|
-
|
|
75
|
+
|
|
73
76
|
# Whitelist of all helper methods that can be used via {{cms:helper}} tag. By default
|
|
74
77
|
# all helpers are allowed except `eval`, `send`, `call` and few others. Empty array
|
|
75
78
|
# will prevent rendering of all helpers.
|
|
76
79
|
# config.allowed_helpers = nil
|
|
77
|
-
|
|
80
|
+
|
|
78
81
|
# Whitelist of partials paths that can be used via {{cms:partial}} tag. All partials
|
|
79
82
|
# are accessible by default. Empty array will prevent rendering of all partials.
|
|
80
83
|
# config.allowed_partials = nil
|
|
81
|
-
|
|
82
|
-
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
84
|
+
|
|
85
|
+
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
83
86
|
# production env with dev/testing envs.
|
|
84
87
|
# e.g. config.hostname_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
|
|
85
88
|
# Default is nil (not used)
|
|
86
89
|
# config.hostname_aliases = nil
|
|
87
|
-
|
|
90
|
+
|
|
88
91
|
end
|
|
89
92
|
|
|
90
93
|
# Default credentials for ComfortableMexicanSofa::HttpAuth
|
|
@@ -4,6 +4,10 @@ class ComfortableMexicanSofa::Configuration
|
|
|
4
4
|
|
|
5
5
|
# Don't like ComfortableMexicanSofa? Set it to whatever you like. :(
|
|
6
6
|
attr_accessor :cms_title
|
|
7
|
+
|
|
8
|
+
# Controller that is inherited from CmsAdmin::BaseController
|
|
9
|
+
# 'ApplicationController' is the default
|
|
10
|
+
attr_accessor :base_controller
|
|
7
11
|
|
|
8
12
|
# Module that will handle authentication to access cms-admin area
|
|
9
13
|
attr_accessor :admin_auth
|
|
@@ -57,6 +61,10 @@ class ComfortableMexicanSofa::Configuration
|
|
|
57
61
|
# are accessible by default. Empty array will prevent rendering of all partials.
|
|
58
62
|
attr_accessor :allowed_partials
|
|
59
63
|
|
|
64
|
+
# Whitelist of template paths that can be used via {{cms:template}} tag. All templates
|
|
65
|
+
# are accessible by default. Empty array will prevent rendering of all templates.
|
|
66
|
+
attr_accessor :allowed_templates
|
|
67
|
+
|
|
60
68
|
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
61
69
|
# production env with dev/testing envs.
|
|
62
70
|
# e.g. config.site_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
|
|
@@ -66,6 +74,7 @@ class ComfortableMexicanSofa::Configuration
|
|
|
66
74
|
# Configuration defaults
|
|
67
75
|
def initialize
|
|
68
76
|
@cms_title = 'ComfortableMexicanSofa CMS Engine'
|
|
77
|
+
@base_controller = 'ApplicationController'
|
|
69
78
|
@admin_auth = 'ComfortableMexicanSofa::HttpAuth'
|
|
70
79
|
@public_auth = 'ComfortableMexicanSofa::DummyAuth'
|
|
71
80
|
@seed_data_path = nil
|
|
@@ -57,7 +57,7 @@ module ComfortableMexicanSofa::Fixture::Page
|
|
|
57
57
|
page.blocks_attributes = blocks_attributes if blocks_attributes.present?
|
|
58
58
|
|
|
59
59
|
# saving
|
|
60
|
-
if page.changed? || self.force_import
|
|
60
|
+
if page.changed? || page.blocks_attributes_changed || self.force_import
|
|
61
61
|
if page.save
|
|
62
62
|
save_categorizations!(page, categories)
|
|
63
63
|
ComfortableMexicanSofa.logger.warn("[FIXTURES] Imported Page \t #{page.full_path}")
|
|
@@ -119,4 +119,4 @@ module ComfortableMexicanSofa::Fixture::Page
|
|
|
119
119
|
end
|
|
120
120
|
end
|
|
121
121
|
end
|
|
122
|
-
end
|
|
122
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class ComfortableMexicanSofa::Tag::Template
|
|
2
|
+
include ComfortableMexicanSofa::Tag
|
|
3
|
+
|
|
4
|
+
def self.regex_tag_signature(identifier = nil)
|
|
5
|
+
identifier ||= /[\w\/\-]+/
|
|
6
|
+
/\{\{\s*cms:template:(#{identifier})\s*\}\}/
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def content
|
|
10
|
+
"<%= render :template => '#{identifier}' %>"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render
|
|
14
|
+
whitelist = ComfortableMexicanSofa.config.allowed_templates
|
|
15
|
+
if whitelist.is_a?(Array)
|
|
16
|
+
content if whitelist.member?(identifier)
|
|
17
|
+
else
|
|
18
|
+
content
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -1,34 +1,66 @@
|
|
|
1
1
|
module ComfortableMexicanSofa::ViewMethods
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
# Wrapper around ComfortableMexicanSofa::FormBuilder
|
|
4
4
|
def comfy_form_for(record, options = {}, &proc)
|
|
5
5
|
options[:builder] = ComfortableMexicanSofa::FormBuilder
|
|
6
6
|
options[:type] ||= :horizontal
|
|
7
7
|
formatted_form_for(record, options, &proc)
|
|
8
8
|
end
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
# Injects some content somewhere inside cms admin area
|
|
11
11
|
def cms_hook(name, options = {})
|
|
12
12
|
ComfortableMexicanSofa::ViewHooks.render(name, self, options)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# Content of a snippet.
|
|
15
|
+
# Content of a snippet. Examples:
|
|
16
16
|
# cms_snippet_content(:my_snippet)
|
|
17
|
-
|
|
17
|
+
# <%= cms_snippet_content(:my_snippet) do %>
|
|
18
|
+
# Default content can go here.
|
|
19
|
+
# <% end %>
|
|
20
|
+
def cms_snippet_content(identifier, cms_site = nil, &block)
|
|
18
21
|
unless cms_site
|
|
19
22
|
host, path = request.host.downcase, request.fullpath if respond_to?(:request) && request
|
|
20
23
|
cms_site ||= (@cms_site || Cms::Site.find_site(host, path))
|
|
21
24
|
end
|
|
22
|
-
return '' unless cms_site
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
return '' unless cms_site && identifier.present?
|
|
26
|
+
snippet = cms_site.snippets.find_by_identifier(identifier)
|
|
27
|
+
|
|
28
|
+
if !snippet && block_given?
|
|
29
|
+
snippet = cms_site.snippets.create(
|
|
30
|
+
:identifier => identifier,
|
|
31
|
+
:label => identifier.to_s.titleize,
|
|
32
|
+
:content => capture(&block)
|
|
33
|
+
)
|
|
28
34
|
end
|
|
29
35
|
render :inline => ComfortableMexicanSofa::Tag.process_content(cms_site.pages.build, snippet.content)
|
|
30
36
|
end
|
|
31
|
-
|
|
37
|
+
|
|
38
|
+
# Content of a text based page block. This is the typical method for retrieving content from
|
|
39
|
+
# page:field. Note: This method will be faster than the more generic cms_page_content.
|
|
40
|
+
#
|
|
41
|
+
# Example:
|
|
42
|
+
# cms_page_block_content(:left_column, CmsPage.first)
|
|
43
|
+
# cms_page_block_content(:left_column) if @cms_page is present
|
|
44
|
+
def cms_page_block_content(identifier, page = nil)
|
|
45
|
+
return '' unless page ||= @cms_page
|
|
46
|
+
return '' unless block = page.blocks.find_by_identifier(identifier)
|
|
47
|
+
|
|
48
|
+
ComfortableMexicanSofa::Tag.process_content(page, block.content)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Fetch files from a page:field. Will return a list of files, regardless of how many files are present.
|
|
52
|
+
# Note: This method will be faster than the more generic cms_page_content.
|
|
53
|
+
#
|
|
54
|
+
# Example:
|
|
55
|
+
# cms_page_block_content(:open_graph_image, CmsPage.first)
|
|
56
|
+
# cms_page_block_content(:attachments, CmsPage.first)
|
|
57
|
+
def cms_page_files(identifier, page = nil)
|
|
58
|
+
return nil unless page ||= @cms_page
|
|
59
|
+
return nil unless block = page.blocks.find_by_identifier(identifier)
|
|
60
|
+
|
|
61
|
+
block.files
|
|
62
|
+
end
|
|
63
|
+
|
|
32
64
|
# Content of a page block. This is how you get content from page:field
|
|
33
65
|
# Example:
|
|
34
66
|
# cms_page_content(:left_column, CmsPage.first)
|
|
@@ -52,6 +52,14 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase
|
|
|
52
52
|
assert_template :edit
|
|
53
53
|
assert_select "form[action=/cms-admin/sites/#{snippet.site.id}/snippets/#{snippet.id}]"
|
|
54
54
|
end
|
|
55
|
+
|
|
56
|
+
def test_get_edit_with_params
|
|
57
|
+
snippet = cms_snippets(:default)
|
|
58
|
+
get :edit, :site_id => snippet.site, :id => snippet, :snippet => {:label => 'New Label'}
|
|
59
|
+
assert_response :success
|
|
60
|
+
assert assigns(:snippet)
|
|
61
|
+
assert_equal 'New Label', assigns(:snippet).label
|
|
62
|
+
end
|
|
55
63
|
|
|
56
64
|
def test_get_edit_failure
|
|
57
65
|
get :edit, :site_id => cms_sites(:default), :id => 'not_found'
|
|
@@ -7,6 +7,7 @@ class ConfigurationTest < ActiveSupport::TestCase
|
|
|
7
7
|
def test_configuration_presence
|
|
8
8
|
assert config = ComfortableMexicanSofa.configuration
|
|
9
9
|
assert_equal 'ComfortableMexicanSofa CMS Engine', config.cms_title
|
|
10
|
+
assert_equal 'ApplicationController', config.base_controller
|
|
10
11
|
assert_equal 'ComfortableMexicanSofa::HttpAuth', config.admin_auth
|
|
11
12
|
assert_equal 'ComfortableMexicanSofa::DummyAuth', config.public_auth
|
|
12
13
|
assert_equal '', config.admin_route_redirect
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require_relative '../../test_helper'
|
|
2
|
+
|
|
3
|
+
class TemplateTagTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
def test_initialize_tag
|
|
6
|
+
assert tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
7
|
+
cms_pages(:default), '{{ cms:template:template_name }}'
|
|
8
|
+
)
|
|
9
|
+
assert_equal 'template_name', tag.identifier
|
|
10
|
+
assert tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
11
|
+
cms_pages(:default), '{{cms:template:path/to/template}}'
|
|
12
|
+
)
|
|
13
|
+
assert_equal 'path/to/template', tag.identifier
|
|
14
|
+
assert tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
15
|
+
cms_pages(:default), '{{cms:template:path/to/dashed-template}}'
|
|
16
|
+
)
|
|
17
|
+
assert_equal 'path/to/dashed-template', tag.identifier
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_initialize_tag_failure
|
|
21
|
+
[
|
|
22
|
+
'{{cms:template}}',
|
|
23
|
+
'{{cms:not_template:label}}',
|
|
24
|
+
'{not_a_tag}'
|
|
25
|
+
].each do |tag_signature|
|
|
26
|
+
assert_nil ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
27
|
+
cms_pages(:default), tag_signature
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_content_and_render
|
|
33
|
+
tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
34
|
+
cms_pages(:default), '{{cms:template:path/to/template}}'
|
|
35
|
+
)
|
|
36
|
+
assert_equal "<%= render :template => 'path/to/template' %>", tag.content
|
|
37
|
+
assert_equal "<%= render :template => 'path/to/template' %>", tag.render
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_whitelisted_paths
|
|
41
|
+
ComfortableMexicanSofa.config.allowed_templates = ['safe/path']
|
|
42
|
+
|
|
43
|
+
tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
44
|
+
cms_pages(:default), '{{cms:template:safe/path}}'
|
|
45
|
+
)
|
|
46
|
+
assert_equal "<%= render :template => 'safe/path' %>", tag.content
|
|
47
|
+
assert_equal "<%= render :template => 'safe/path' %>", tag.render
|
|
48
|
+
|
|
49
|
+
tag = ComfortableMexicanSofa::Tag::Template.initialize_tag(
|
|
50
|
+
cms_pages(:default), '{{cms:template:unsafe/path}}'
|
|
51
|
+
)
|
|
52
|
+
assert_equal "<%= render :template => 'unsafe/path' %>", tag.content
|
|
53
|
+
assert_equal nil, tag.render
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
require_relative '../test_helper'
|
|
2
2
|
|
|
3
3
|
class ViewMethodsTest < ActionView::TestCase
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
include ComfortableMexicanSofa::ViewMethods
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
class ::HelpersTestController < ActionController::Base
|
|
8
8
|
helper { def hello; 'hello' end }
|
|
9
9
|
|
|
@@ -11,6 +11,17 @@ class ViewMethodsTest < ActionView::TestCase
|
|
|
11
11
|
render :inline => '<%= cms_snippet_content(:default) %>'
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def test_cms_page_block_content
|
|
15
|
+
@cms_page = Cms::Page.root
|
|
16
|
+
render :inline => '<%= cms_page_block_content(:default_field_text) %>'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_cms_snippet_with_default_content_block
|
|
20
|
+
render :inline => '<%= cms_snippet_content(:nonexistent_snippet) do %>
|
|
21
|
+
Some content <b>here</b>.
|
|
22
|
+
<% end %>'
|
|
23
|
+
end
|
|
24
|
+
|
|
14
25
|
def test_cms_page_content
|
|
15
26
|
@cms_page = Cms::Page.root
|
|
16
27
|
render :inline => '<%= cms_page_content(:default_field_text) %>'
|
|
@@ -24,7 +35,7 @@ class ViewMethodsTest < ActionView::TestCase
|
|
|
24
35
|
end
|
|
25
36
|
end
|
|
26
37
|
end
|
|
27
|
-
|
|
38
|
+
|
|
28
39
|
# Simulating a call and getting resulting output
|
|
29
40
|
def action_result(action)
|
|
30
41
|
HelpersTestController.action(action).call(ActionController::TestRequest.new.env).last.body
|
|
@@ -41,26 +52,64 @@ class ViewMethodsTest < ActionView::TestCase
|
|
|
41
52
|
def test_cms_snippet_content
|
|
42
53
|
assert_equal 'default_snippet_content', action_result('test_cms_snippet_content')
|
|
43
54
|
end
|
|
44
|
-
|
|
55
|
+
|
|
45
56
|
def test_cms_snippet_content_with_tags
|
|
46
57
|
cms_snippets(:default).update_columns(:content => '{{cms:helper:hello}}')
|
|
47
58
|
assert_equal 'hello', action_result('test_cms_snippet_content')
|
|
48
59
|
end
|
|
49
|
-
|
|
60
|
+
|
|
50
61
|
def test_cms_snippet_content_with_file_tag
|
|
51
62
|
cms_snippets(:default).update_column(:content, '{{cms:file:sample.jpg}}')
|
|
52
63
|
assert_equal cms_files(:default).file.url, action_result('test_cms_snippet_content')
|
|
53
64
|
end
|
|
65
|
+
|
|
66
|
+
def test_cms_page_block_content
|
|
67
|
+
assert_equal 'default_field_text_content', action_result('test_cms_page_block_content')
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_cms_page_files
|
|
71
|
+
page = cms_pages(:default)
|
|
72
|
+
page.layout.update_column(:content, '{{cms:page_files:files}}')
|
|
73
|
+
page.update_attributes!(
|
|
74
|
+
:blocks_attributes => [
|
|
75
|
+
{
|
|
76
|
+
:identifier => 'files',
|
|
77
|
+
:content => [
|
|
78
|
+
fixture_file_upload('files/image.jpg', "image/jpeg"),
|
|
79
|
+
fixture_file_upload('files/image.gif', "image/gif")
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
)
|
|
84
|
+
assert_equal page.blocks.find_by_identifier('files').files, cms_page_files(:files, page)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def test_cms_snippet_with_default_content_block_displays_content
|
|
88
|
+
assert_equal 'Some content <b>here</b>.',
|
|
89
|
+
action_result('test_cms_snippet_with_default_content_block').strip
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_cms_snippet_with_default_content_creates_snippet
|
|
93
|
+
assert_nil Cms::Snippet.find_by_identifier('nonexistent_snippet')
|
|
94
|
+
action_result('test_cms_snippet_with_default_content_block')
|
|
95
|
+
assert_not_nil Cms::Snippet.find_by_identifier('nonexistent_snippet')
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_cms_snippet_with_default_content_shows_stored_snippet_if_present
|
|
99
|
+
cms_snippets(:default).update_attribute(:identifier, 'nonexistent_snippet')
|
|
100
|
+
assert_equal 'default_snippet_content',
|
|
101
|
+
action_result('test_cms_snippet_with_default_content_block')
|
|
102
|
+
end
|
|
54
103
|
|
|
55
104
|
def test_cms_page_content
|
|
56
105
|
assert_equal 'default_field_text_content', action_result('test_cms_page_content')
|
|
57
106
|
end
|
|
58
|
-
|
|
107
|
+
|
|
59
108
|
def test_cms_page_content_with_tags
|
|
60
109
|
cms_blocks(:default_field_text).update_column(:content, '{{cms:helper:hello}}')
|
|
61
110
|
assert_equal 'hello', action_result('test_cms_page_content')
|
|
62
111
|
end
|
|
63
|
-
|
|
112
|
+
|
|
64
113
|
def test_cms_page_content_with_files
|
|
65
114
|
page = cms_pages(:default)
|
|
66
115
|
page.layout.update_column(:content, '{{cms:page_file:file}} {{cms:page_files:files}}')
|
|
@@ -76,5 +125,5 @@ class ViewMethodsTest < ActionView::TestCase
|
|
|
76
125
|
assert_equal page.blocks.find_by_identifier('file').files.first, cms_page_content(:file, page)
|
|
77
126
|
assert_equal page.blocks.find_by_identifier('files').files, cms_page_content(:files, page)
|
|
78
127
|
end
|
|
79
|
-
|
|
80
|
-
end
|
|
128
|
+
|
|
129
|
+
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.9.
|
|
4
|
+
version: 1.9.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-
|
|
13
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rails
|
|
@@ -375,6 +375,7 @@ files:
|
|
|
375
375
|
- lib/comfortable_mexican_sofa/tags/page_text.rb
|
|
376
376
|
- lib/comfortable_mexican_sofa/tags/partial.rb
|
|
377
377
|
- lib/comfortable_mexican_sofa/tags/snippet.rb
|
|
378
|
+
- lib/comfortable_mexican_sofa/tags/template.rb
|
|
378
379
|
- lib/comfortable_mexican_sofa/version.rb
|
|
379
380
|
- lib/comfortable_mexican_sofa/view_hooks.rb
|
|
380
381
|
- lib/comfortable_mexican_sofa/view_methods.rb
|
|
@@ -453,6 +454,7 @@ files:
|
|
|
453
454
|
- test/models/tags/page_text_test.rb
|
|
454
455
|
- test/models/tags/partial_test.rb
|
|
455
456
|
- test/models/tags/snippet_test.rb
|
|
457
|
+
- test/models/tags/template_test.rb
|
|
456
458
|
- test/models/view_methods_test.rb
|
|
457
459
|
- test/test_helper.rb
|
|
458
460
|
homepage: http://github.com/comfy/comfortable-mexican-sofa
|