comfortable_mexican_sofa 1.7.3 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/.gitignore +2 -1
  2. data/Gemfile +2 -9
  3. data/README.md +17 -9
  4. data/app/assets/javascripts/comfortable_mexican_sofa/admin/application.js +1 -0
  5. data/app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee +147 -0
  6. data/app/assets/javascripts/comfortable_mexican_sofa/lib/codemirror.js +7 -7
  7. data/app/assets/stylesheets/comfortable_mexican_sofa/admin/application.css +1 -0
  8. data/app/assets/stylesheets/comfortable_mexican_sofa/application.css.sass +0 -1
  9. data/app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass +1 -1
  10. data/app/assets/stylesheets/comfortable_mexican_sofa/bootstrap_overrides.css.sass +2 -0
  11. data/app/views/cms_admin/pages/_index_branch.html.haml +1 -1
  12. data/app/views/cms_admin/pages/form_blocks.js.erb +1 -1
  13. data/app/views/cms_admin/pages/toggle_branch.js.erb +2 -2
  14. data/app/views/layouts/cms_admin/_body.html.haml +1 -3
  15. data/app/views/layouts/cms_admin/_footer.html.haml +7 -0
  16. data/app/views/layouts/cms_admin/_head.html.haml +2 -3
  17. data/config/initializers/comfortable_mexican_sofa.rb +0 -13
  18. data/config/routes.rb +4 -48
  19. data/lib/comfortable_mexican_sofa.rb +1 -0
  20. data/lib/comfortable_mexican_sofa/configuration.rb +1 -15
  21. data/lib/comfortable_mexican_sofa/routing.rb +59 -0
  22. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  23. data/lib/generators/comfy/cms/cms_generator.rb +8 -0
  24. data/test/gemfiles/Gemfile.rails.3.1 +1 -0
  25. data/test/gemfiles/Gemfile.rails.3.2 +1 -0
  26. data/test/gemfiles/Gemfile.rails.4.0 +1 -0
  27. data/test/integration/render_cms_test.rb +2 -2
  28. data/test/test_helper.rb +3 -3
  29. data/test/unit/configuration_test.rb +1 -4
  30. metadata +7 -5
  31. data/app/assets/javascripts/comfortable_mexican_sofa/application.js +0 -194
  32. data/app/assets/stylesheets/comfortable_mexican_sofa/base_overrides.css.sass +0 -6
  33. data/test/integration/routing_extensions_test.rb +0 -61
@@ -0,0 +1,59 @@
1
+ module ComfortableMexicanSofa::Routing
2
+
3
+ def self.admin(options = {})
4
+ options[:path] ||= 'cms-admin'
5
+
6
+ Rails.application.routes.draw do
7
+ namespace :cms_admin, :path => options[:path], :except => :show do
8
+ get '/', :to => 'base#jump'
9
+ resources :sites do
10
+ resources :pages do
11
+ get :form_blocks, :on => :member
12
+ get :toggle_branch, :on => :member
13
+ put :reorder, :on => :collection
14
+ resources :revisions, :only => [:index, :show, :revert] do
15
+ put :revert, :on => :member
16
+ end
17
+ end
18
+ resources :files do
19
+ put :reorder, :on => :collection
20
+ end
21
+ resources :layouts do
22
+ put :reorder, :on => :collection
23
+ resources :revisions, :only => [:index, :show, :revert] do
24
+ put :revert, :on => :member
25
+ end
26
+ end
27
+ resources :snippets do
28
+ put :reorder, :on => :collection
29
+ resources :revisions, :only => [:index, :show, :revert] do
30
+ put :revert, :on => :member
31
+ end
32
+ end
33
+ resources :categories
34
+ get 'dialog/:type' => 'dialogs#show', :as => 'dialog'
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.content(options = {})
41
+
42
+ Rails.application.routes.draw do
43
+ namespace :cms_content, :path => options[:path] do
44
+ get 'cms-css/:site_id/:identifier' => :render_css, :as => 'css'
45
+ get 'cms-js/:site_id/:identifier' => :render_js, :as => 'js'
46
+
47
+ if options[:sitemap]
48
+ get '(:cms_path)/sitemap' => :render_sitemap,
49
+ :as => 'sitemap',
50
+ :constraints => {:format => /xml/},
51
+ :format => :xml
52
+ end
53
+
54
+ get '/' => :render_html, :as => 'html', :path => "(*cms_path)"
55
+ end
56
+ end
57
+ end
58
+
59
+ end
@@ -1,3 +1,3 @@
1
1
  module ComfortableMexicanSofa
2
- VERSION = "1.7.3"
2
+ VERSION = "1.8.0"
3
3
  end
@@ -25,6 +25,14 @@ module Comfy
25
25
  'config/initializers/comfortable_mexican_sofa.rb'
26
26
  end
27
27
 
28
+ def generate_routing
29
+ route "
30
+ ComfortableMexicanSofa::Routing.admin(:path => '/cms-admin')
31
+
32
+ # Make sure this routeset is defined last
33
+ ComfortableMexicanSofa::Routing.content(:path => '/', :sitemap => false)"
34
+ end
35
+
28
36
  def generate_cms_seeds
29
37
  directory 'db/cms_fixtures', 'db/cms_fixtures'
30
38
  end
@@ -12,4 +12,5 @@ gem 'coffee-rails', '>= 3.1.0'
12
12
 
13
13
  group :test do
14
14
  gem 'sqlite3'
15
+ gem 'coveralls', :require => false
15
16
  end
@@ -12,4 +12,5 @@ gem 'coffee-rails', '>= 3.1.0'
12
12
 
13
13
  group :test do
14
14
  gem 'sqlite3'
15
+ gem 'coveralls', :require => false
15
16
  end
@@ -12,4 +12,5 @@ gem 'coffee-rails', '~> 4.0.0.beta1'
12
12
 
13
13
  group :test do
14
14
  gem 'sqlite3'
15
+ gem 'coveralls', :require => false
15
16
  end
@@ -3,6 +3,7 @@ require File.expand_path('../test_helper', File.dirname(__FILE__))
3
3
  class RenderCmsTest < ActionDispatch::IntegrationTest
4
4
 
5
5
  def setup
6
+ super
6
7
  Rails.application.routes.draw do
7
8
  get '/render-basic' => 'render_test#render_basic'
8
9
  get '/render-page' => 'render_test#render_page'
@@ -12,11 +13,10 @@ class RenderCmsTest < ActionDispatch::IntegrationTest
12
13
  cms_pages(:child).update_attributes(:blocks_attributes => [
13
14
  { :identifier => 'content', :content => 'TestBlockContent' }
14
15
  ])
15
- super
16
16
  end
17
17
 
18
18
  def teardown
19
- load(File.expand_path('config/routes.rb', Rails.root))
19
+ Rails.application.reload_routes!
20
20
  end
21
21
 
22
22
  def create_site_b
@@ -1,5 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'coveralls'
4
+ Coveralls.wear!('rails')
5
+
3
6
  ENV['RAILS_ENV'] = 'test'
4
7
  require File.expand_path('../../config/environment', __FILE__)
5
8
  require 'rails/test_help'
@@ -21,10 +24,7 @@ class ActiveSupport::TestCase
21
24
  config.cms_title = 'ComfortableMexicanSofa CMS Engine'
22
25
  config.admin_auth = 'ComfortableMexicanSofa::HttpAuth'
23
26
  config.public_auth = 'ComfortableMexicanSofa::DummyAuth'
24
- config.admin_route_prefix = 'cms-admin'
25
27
  config.admin_route_redirect = ''
26
- config.use_default_routes = true
27
- config.enable_sitemap = true
28
28
  config.enable_fixtures = false
29
29
  config.fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
30
30
  config.revisions_limit = 25
@@ -4,14 +4,11 @@ require File.expand_path('../test_helper', File.dirname(__FILE__))
4
4
 
5
5
  class ConfigurationTest < ActiveSupport::TestCase
6
6
 
7
- def test_configuration_presense
7
+ def test_configuration_presence
8
8
  assert config = ComfortableMexicanSofa.configuration
9
9
  assert_equal 'ComfortableMexicanSofa CMS Engine', config.cms_title
10
10
  assert_equal 'ComfortableMexicanSofa::HttpAuth', config.admin_auth
11
11
  assert_equal 'ComfortableMexicanSofa::DummyAuth', config.public_auth
12
- assert_equal 'cms-admin', config.admin_route_prefix
13
- assert_equal true, config.use_default_routes
14
- assert_equal true, config.enable_sitemap
15
12
  assert_equal '', config.admin_route_redirect
16
13
  assert_equal false, config.enable_fixtures
17
14
  assert_equal File.expand_path('db/cms_fixtures', Rails.root), config.fixtures_path
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.7.3
4
+ version: 1.8.0
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-03-27 00:00:00.000000000 Z
13
+ date: 2013-03-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -182,15 +182,16 @@ files:
182
182
  - app/assets/images/comfortable_mexican_sofa/icon_site.gif
183
183
  - app/assets/images/comfortable_mexican_sofa/icon_snippet.gif
184
184
  - app/assets/images/comfortable_mexican_sofa/nav_arrow.png
185
- - app/assets/javascripts/comfortable_mexican_sofa/application.js
185
+ - app/assets/javascripts/comfortable_mexican_sofa/admin/application.js
186
+ - app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee
186
187
  - app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap-datetimepicker.js
187
188
  - app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap-wysihtml5.js
188
189
  - app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap.js
189
190
  - app/assets/javascripts/comfortable_mexican_sofa/lib/codemirror.js
190
191
  - app/assets/javascripts/comfortable_mexican_sofa/lib/wysihtml5.js
192
+ - app/assets/stylesheets/comfortable_mexican_sofa/admin/application.css
191
193
  - app/assets/stylesheets/comfortable_mexican_sofa/application.css.sass
192
194
  - app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass
193
- - app/assets/stylesheets/comfortable_mexican_sofa/base_overrides.css.sass
194
195
  - app/assets/stylesheets/comfortable_mexican_sofa/bootstrap_overrides.css.sass
195
196
  - app/assets/stylesheets/comfortable_mexican_sofa/codemirror_overrides.css.sass
196
197
  - app/assets/stylesheets/comfortable_mexican_sofa/lib/bootstrap-datetimepicker.css
@@ -262,6 +263,7 @@ files:
262
263
  - app/views/layouts/cms_admin.html.haml
263
264
  - app/views/layouts/cms_admin/_body.html.haml
264
265
  - app/views/layouts/cms_admin/_center.html.haml
266
+ - app/views/layouts/cms_admin/_footer.html.haml
265
267
  - app/views/layouts/cms_admin/_head.html.haml
266
268
  - app/views/layouts/cms_admin/_left.html.haml
267
269
  - app/views/layouts/cms_admin/_right.html.haml
@@ -326,6 +328,7 @@ files:
326
328
  - lib/comfortable_mexican_sofa/fixtures.rb
327
329
  - lib/comfortable_mexican_sofa/form_builder.rb
328
330
  - lib/comfortable_mexican_sofa/render_methods.rb
331
+ - lib/comfortable_mexican_sofa/routing.rb
329
332
  - lib/comfortable_mexican_sofa/sitemap.rb
330
333
  - lib/comfortable_mexican_sofa/tag.rb
331
334
  - lib/comfortable_mexican_sofa/tags/asset.rb
@@ -388,7 +391,6 @@ files:
388
391
  - test/integration/fixtures_test.rb
389
392
  - test/integration/mirrors_test.rb
390
393
  - test/integration/render_cms_test.rb
391
- - test/integration/routing_extensions_test.rb
392
394
  - test/integration/sites_test.rb
393
395
  - test/integration/view_hooks_test.rb
394
396
  - test/test_helper.rb
@@ -1,194 +0,0 @@
1
- //= require jquery
2
- //= require jquery_ujs
3
- //= require jquery-ui
4
- //= require comfortable_mexican_sofa/lib/bootstrap
5
- //= require comfortable_mexican_sofa/lib/codemirror
6
- //= require comfortable_mexican_sofa/lib/wysihtml5
7
- //= require comfortable_mexican_sofa/lib/bootstrap-wysihtml5
8
- //= require comfortable_mexican_sofa/lib/bootstrap-datetimepicker
9
-
10
- $.CMS = function(){
11
-
12
- var current_path = window.location.pathname;
13
- var admin_path_prefix = $('meta[name="cms-admin-path"]').attr('content');
14
-
15
- $(function(){
16
- $.CMS.slugify();
17
- $.CMS.tree_methods();
18
- $.CMS.load_page_blocks();
19
- $.CMS.enable_rich_text();
20
- $.CMS.enable_codemirror();
21
- $.CMS.enable_date_picker();
22
- $.CMS.enable_sortable_list();
23
- if($('#page_new, #page_edit, #new_page, #edit_page').length) $.CMS.enable_page_form();
24
- if($('#mirrors').length) $.CMS.enable_mirrors_widget();
25
- if($('#form-save').length) $.CMS.enable_form_save_widget();
26
- if($('.file-uploader').length) $.CMS.enable_uploader();
27
- if($('.categories-widget').length) $.CMS.enable_categories_widget();
28
- });
29
-
30
- return {
31
-
32
- enable_sortable_list: function(){
33
- $('.sortable, ul.sortable ul').sortable({
34
- handle: '.dragger',
35
- axis: 'y',
36
- update: function(){
37
- $.post(current_path + '/reorder', '_method=put&'+$(this).sortable('serialize'));
38
- }
39
- })
40
- },
41
-
42
- slugify: function(){
43
- $('input[data-slugify=true]').bind('keyup.cms', function() {
44
- $('input[data-slug=true]').val(slugify($(this).val()));
45
- });
46
-
47
- function slugify(str){
48
- str = str.replace(/^\s+|\s+$/g, '');
49
- var from = "ÀÁÄÂÃÈÉËÊÌÍÏÎÒÓÖÔÕÙÚÜÛàáäâãèéëêìíïîòóöôõùúüûÑñÇç";
50
- var to = "aaaaaeeeeiiiiooooouuuuaaaaaeeeeiiiiooooouuuunncc";
51
- for (var i = 0, l = from.length; i < l; i++){
52
- str = str.replace(new RegExp(from[i], "g"), to[i]);
53
- }
54
- var chars_to_replace_with_delimiter = new RegExp('[·/,:;_]', 'g');
55
- str = str.replace(chars_to_replace_with_delimiter, '-');
56
- var chars_to_remove = new RegExp('[^a-zA-Z0-9 -]', 'g');
57
- str = str.replace(chars_to_remove, '').replace(/\s+/g, '-').toLowerCase();
58
- return str;
59
- }
60
- },
61
-
62
- // Load Page Blocks on layout change
63
- load_page_blocks: function(){
64
- $('select#page_layout_id').bind('change.cms', function() {
65
- $.ajax({
66
- url: $(this).data('url'),
67
- data: ({
68
- layout_id: $(this).val()
69
- }),
70
- complete: function(){
71
- $.CMS.enable_rich_text();
72
- $.CMS.enable_date_picker();
73
- }
74
- })
75
- });
76
- },
77
-
78
- enable_rich_text: function(){
79
- $('textarea[data-rich-text]').each(function(i, element){
80
- $(element).wysihtml5({
81
- 'html': true,
82
- 'color': false,
83
- 'stylesheets': []
84
- });
85
- });
86
- },
87
-
88
- enable_codemirror: function(){
89
- $('textarea[data-cm-mode]').each(function(i, element){
90
- CodeMirror.fromTextArea(element, {
91
- mode: $(element).data('cm-mode'),
92
- lineWrapping: true,
93
- autoCloseTags: true,
94
- lineNumbers: true
95
- });
96
- });
97
- },
98
-
99
- enable_date_picker: function(){
100
- $('input[type=text][data-datetime]').datetimepicker({
101
- format: 'yyyy-mm-dd hh:ii',
102
- minView: 'day',
103
- autoclose: true
104
- });
105
- $('input[type=text][data-date]').datetimepicker({
106
- format: 'yyyy-mm-dd',
107
- minView: 'minute',
108
- autoclose: true
109
- });
110
- },
111
-
112
- tree_methods: function(){
113
- $('a.tree_toggle').bind('click.cms', function() {
114
- $(this).siblings('ul').toggle();
115
- $(this).toggleClass('closed');
116
- // object_id are set in the helper (check cms_helper.rb)
117
- $.ajax({url: [current_path, object_id, 'toggle'].join('/')});
118
- });
119
-
120
- $('ul.sortable').each(function(){
121
- $(this).sortable({
122
- handle: 'div.dragger',
123
- axis: 'y',
124
- update: function() {
125
- $.post(current_path + '/reorder', '_method=put&'+$(this).sortable('serialize'));
126
- }
127
- })
128
- });
129
- },
130
-
131
- enable_mirrors_widget: function(){
132
- $('#mirrors select').change(function(){
133
- window.location = $(this).val();
134
- })
135
- },
136
-
137
- enable_form_save_widget : function(){
138
- var widget = $('#form-save');
139
- $('input', widget).prop('checked', $('input#page_is_published').is(':checked'));
140
- $('button', widget).html($('input[name=commit]').val());
141
-
142
- $('input', widget).click(function(){
143
- $('input#page_is_published').prop('checked', $(this).is(':checked'));
144
- });
145
- $('input#page_is_published').click(function(){
146
- $('input', widget).prop('checked', $(this).is(':checked'));
147
- });
148
- $('button', widget).click(function(){
149
- $('input[name=commit]').click();
150
- });
151
- },
152
-
153
- enable_page_form : function(){
154
- $('input[name=commit]').click(function() {
155
- $(this).parents('form').attr('target', '');
156
- });
157
- $('input[name=preview]').click(function() {
158
- $(this).parents('form').attr('target', '_blank');
159
- });
160
- },
161
-
162
- enable_uploader : function(){
163
- var action = $('.file-uploader form').attr('action');
164
- $('.file-uploader input[type=file]').change(function(){
165
- var files = $($(this).get(0).files);
166
- files.each(function(i, file){
167
- var xhr = new XMLHttpRequest();
168
- xhr.onreadystatechange = function(e){
169
- if (xhr.readyState == 4 && xhr.status == 200) {
170
- eval(xhr.responseText);
171
- }
172
- }
173
- xhr.open('POST', action, true);
174
- xhr.setRequestHeader('Accept', 'application/javascript');
175
- xhr.setRequestHeader('X-CSRF-Token', $('meta[name=csrf-token]').attr('content'));
176
- xhr.setRequestHeader('Content-Type', file.content_type || file.type);
177
- xhr.setRequestHeader('X-File-Name', file.name);
178
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
179
- xhr.send(file);
180
- });
181
- });
182
- },
183
-
184
- enable_categories_widget : function(){
185
- $('a', '.categories-widget .action-links').click(function(){
186
- $('.categories.read', '.categories-widget').toggle();
187
- $('.categories.editable', '.categories-widget').toggle();
188
- $('.edit', '.categories-widget').toggle();
189
- $('.done', '.categories-widget').toggle();
190
- return false;
191
- });
192
- }
193
- }
194
- }();
@@ -1,6 +0,0 @@
1
- // Within parent application it's possible to create
2
- // assets/stylesheets/comfortable_mexican_sofa/base_overrides.css
3
- // to add more css that's required in the admin area
4
-
5
- // #body.comfy
6
- // color: red
@@ -1,61 +0,0 @@
1
- require File.expand_path('../test_helper', File.dirname(__FILE__))
2
-
3
- class RoutingExtensionsTest < ActionDispatch::IntegrationTest
4
-
5
- def teardown
6
- reset_config
7
- Rails.application.reload_routes!
8
- end
9
-
10
- def test_get_admin_with_admin_route_prefix
11
- ComfortableMexicanSofa.config.admin_route_prefix = 'custom-admin'
12
- Rails.application.reload_routes!
13
-
14
- assert_exception_raised ActionController::RoutingError, 'Page Not Found' do
15
- http_auth :get, '/cms-admin/sites'
16
- end
17
-
18
- http_auth :get, '/custom-admin/sites'
19
- assert_response :success
20
- end
21
-
22
- def test_get_admin_with_admin_route_redirect
23
- ComfortableMexicanSofa.config.admin_route_redirect = '/cms-admin/sites'
24
- Rails.application.reload_routes!
25
-
26
- http_auth :get, '/cms-admin'
27
- assert_response :redirect
28
- assert_redirected_to cms_admin_sites_path
29
- end
30
-
31
- def test_get_admin_with_admin_route_prefix_disabled
32
- ComfortableMexicanSofa.config.admin_route_prefix = ''
33
- Rails.application.reload_routes!
34
-
35
- assert_exception_raised ActionController::RoutingError, 'Page Not Found' do
36
- http_auth :get, '/cms-admin'
37
- end
38
- end
39
-
40
- def test_get_admin_with_all_routes_disabled
41
- ComfortableMexicanSofa.config.use_default_routes = false
42
- Rails.application.reload_routes!
43
-
44
- assert_exception_raised ActionController::RoutingError do
45
- http_auth :get, '/'
46
- end
47
- end
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
-
61
- end