caboose-cms 0.3.12 → 0.3.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/caboose/admin_page_edit_content.js +6 -6
  3. data/app/controllers/caboose/page_block_field_values_controller.rb +27 -0
  4. data/app/controllers/caboose/page_block_fields_controller.rb +139 -0
  5. data/app/controllers/caboose/page_block_types_controller.rb +100 -0
  6. data/app/controllers/caboose/page_blocks_controller.rb +49 -36
  7. data/app/controllers/caboose/pages_controller.rb +2 -1
  8. data/app/models/caboose/core_plugin.rb +25 -5
  9. data/app/models/caboose/page.rb +4 -4
  10. data/app/models/caboose/page_block.rb +36 -15
  11. data/app/models/caboose/page_block_field.rb +9 -0
  12. data/app/models/caboose/page_block_field_value.rb +9 -0
  13. data/app/models/caboose/page_block_renderers/h1.rb +5 -0
  14. data/app/models/caboose/page_block_renderers/h2.rb +5 -0
  15. data/app/models/caboose/page_block_renderers/h3.rb +5 -0
  16. data/app/models/caboose/page_block_renderers/h4.rb +5 -0
  17. data/app/models/caboose/page_block_renderers/h5.rb +5 -0
  18. data/app/models/caboose/page_block_renderers/h6.rb +5 -0
  19. data/app/models/caboose/page_block_renderers/p.rb +5 -0
  20. data/app/models/caboose/page_block_renderers/richtext.rb +5 -0
  21. data/app/models/caboose/page_block_type.rb +12 -0
  22. data/app/models/caboose/schema.rb +48 -7
  23. data/app/views/caboose/page_block_fields/admin_edit.html.erb +70 -0
  24. data/app/views/caboose/page_block_fields/admin_new.html.erb +30 -0
  25. data/app/views/caboose/page_block_types/admin_edit.html.erb +77 -0
  26. data/app/views/caboose/page_block_types/admin_index.html.erb +24 -0
  27. data/app/views/caboose/page_block_types/admin_new.html.erb +30 -0
  28. data/app/views/caboose/page_blocks/_heading.html.erb +7 -0
  29. data/app/views/caboose/page_blocks/_richtext.html.erb +8 -0
  30. data/app/views/caboose/page_blocks/admin_edit.html.erb +32 -13
  31. data/app/views/caboose/page_blocks/admin_edit_custom.html.erb +35 -0
  32. data/app/views/caboose/pages/_content.html.erb +3 -0
  33. data/app/views/caboose/pages/admin_edit_content.html.erb +1 -7
  34. data/config/routes.rb +19 -0
  35. data/lib/caboose/engine.rb +1 -1
  36. data/lib/caboose/version.rb +1 -1
  37. metadata +25 -2
@@ -0,0 +1,24 @@
1
+ <h1>Page Block Types</h1>
2
+
3
+ <p><a href='/admin/page-block-types/new'>New Block Type</a></p>
4
+
5
+ <% if (@block_types.count > 0) %>
6
+
7
+ <table class='data'>
8
+ <tr>
9
+ <th>Name</th>
10
+ <th>Description</th>
11
+ </tr>
12
+ <% @block_types.each do |bt| %>
13
+ <tr onclick="window.location='/admin/page-block-types/<%= bt.id %>/edit';">
14
+ <td><%= bt.name %></td>
15
+ <td><%= bt.description %></td>
16
+ </tr>
17
+ <% end %>
18
+ </table>
19
+
20
+ <% else %>
21
+
22
+ <p>There are no block types.</p>
23
+
24
+ <% end %>
@@ -0,0 +1,30 @@
1
+
2
+ <h1>New Block Type</h1>
3
+ <p><input type='text' id='name' name='name' placeholder='Name' /></p>
4
+ <div id='message'></div>
5
+ <p>
6
+ <input type='button' value='< Back' onclick="window.location='/admin/page-block-types';" />
7
+ <input type='button' value='Add Field' onclick="add_block_type();" />
8
+ </p>
9
+
10
+ <% content_for :caboose_js do %>
11
+ <script type='text/javascript'>
12
+
13
+ function add_block_type()
14
+ {
15
+ $('#message').empty().append($('<p/>').addClass('loading').html('Adding block type...'));
16
+ $.ajax({
17
+ url: '/admin/page-block-types',
18
+ type: 'post',
19
+ data: {
20
+ name: $('#name').val()
21
+ },
22
+ success: function(resp) {
23
+ if (resp.error) $('#message').empty().append($('<p/>').addClass('note error').html(resp.error));
24
+ if (resp.redirect) window.location = resp.redirect;
25
+ }
26
+ });
27
+ }
28
+
29
+ </script>
30
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <%
2
+ size = block.field_value('size')
3
+ text = block.field_value('text')
4
+ size = 1 if size.nil?
5
+ text = (empty_text ? empty_text : "") if text.nil? || text == ""
6
+
7
+ %><h<%= size %>><%= raw text %></h<%= size %>>
@@ -0,0 +1,8 @@
1
+ <%
2
+ text = block.field_value('text')
3
+ Caboose.log("text = #{text}")
4
+ if text.nil? || text == ""
5
+ text = (empty_text ? "<p>#{empty_text}</p>" : "")
6
+ end
7
+
8
+ %><%= raw text %>
@@ -1,9 +1,12 @@
1
+ <h2 style='margin-top: 0; padding-top: 0;'>Edit <%= @block.page_block_type.description %></h2>
2
+ <% @block.page_block_type.fields.each do |f| %>
3
+ <% fv = @block.field_value_object(f.name) %>
4
+ <div id='pageblockfieldvalue_<%= fv.id %>_value'></div>
5
+ <% end %>
6
+ <p><input type='button' value='Close' onclick="modal.close();" /></p>
1
7
 
2
- <p>Page block type: <%= @block.block_type %></p>
3
- <div id='pageblock_<%= @block.id %>_value'></div>
4
-
5
- <%= render :partial => 'caboose/pages/admin_footer' %>
6
8
  <% content_for :caboose_js do %>
9
+ <%= javascript_include_tag "caboose/model/all" %>
7
10
  <script type='text/javascript'>
8
11
 
9
12
  var modal = false;
@@ -11,22 +14,38 @@ $(window).load(function() {
11
14
  modal = new CabooseModal(800);
12
15
  });
13
16
 
14
- $(document).ready(function() {
15
- <% @page.blocks.each do |b| %>
17
+ $(document).ready(function() {
18
+ <% use_tinymce = false %>
19
+ <% @block.page_block_type.fields.each do |f| %>
20
+ <% fv = @block.field_value_object(f.name) %>
21
+ <% use_tinymce = true if f.field_type == 'richtext' %>
16
22
  m = new ModelBinder({
17
- name: 'PageBlock',
18
- id: <%= b.id %>,
19
- update_url: '/admin/page-blocks/<%= b.id %>',
23
+ name: 'PageBlockFieldValue',
24
+ id: <%= fv.id %>,
25
+ update_url: '/admin/page-block-field-values/<%= fv.id %>',
20
26
  authenticity_token: '<%= form_authenticity_token %>',
21
- attributes: [
22
- { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(b.name) %>, width: 784 },
23
- { name: 'value', nice_name: 'Content', type: 'richtext', value: <%= raw Caboose.json(b.value) %>, width: 800, height: 300 }
24
- ]
27
+ attributes: [{
28
+ name: 'value',
29
+ type: <%= raw Caboose.json(f.field_type) %>,
30
+ value: <% if f.field_type == 'checkbox' %><%= fv.value ? 'true' : 'false' %><% else %><%= raw Caboose.json(fv.value) %><% end %>,
31
+ <% if f.field_type == 'select' %>text: <%= raw Caboose.json(fv.value) %>,<% end %>
32
+ nice_name: <%= raw Caboose.json(f.nice_name ? f.nice_name : f.name) %>,
33
+ width: <% if f.width %><%= raw Caboose.json(f.width) %><% else %>780<% end %>,
34
+ <% if f.height %>height: <%= raw Caboose.json(f.height) %>,<% end %>
35
+ <% if f.fixed_placeholder %>fixed_placeholder: <%= raw Caboose.json(f.fixed_placeholder) %>,<% end %>
36
+ <% if f.options %>options_url: '/admin/page-block-fields/<%= f.id %>/options',<%
37
+ elsif f.options_url %>options_url: <%= raw Caboose.json(f.options_url) %>,<% end %>
38
+ after_update: function() { parent.controller.render_blocks(); },
39
+ after_cancel: function() { parent.controller.render_blocks(); }
40
+ }]
25
41
  });
26
42
  <% end %>
27
43
  });
28
44
 
29
45
  </script>
46
+ <% if use_tinymce %>
30
47
  <%= tinymce_assets %>
31
48
  <%= tinymce :caboose, width: '800px', height:'300px' %>
32
49
  <% end %>
50
+ <% end %>
51
+
@@ -0,0 +1,35 @@
1
+ <%
2
+ obj = block.value && block.value != "" ? JSON.parse(block.value) : nil
3
+ %>
4
+ <div id='pageblock_<%= @block.id %>_value'></div>
5
+
6
+ <% content_for :caboose_js do %>
7
+ <%= javascript_include_tag "caboose/model/all" %>
8
+ <script type='text/javascript'>
9
+
10
+ var modal = false;
11
+ $(window).load(function() {
12
+ modal = new CabooseModal(800);
13
+ });
14
+
15
+ $(document).ready(function() {
16
+ m = new ModelBinder({
17
+ name: 'PageBlock',
18
+ id: <%= @block.id %>,
19
+ update_url: '/admin/pages/<%= @page.id %>/blocks/<%= @block.id %>',
20
+ authenticity_token: '<%= form_authenticity_token %>',
21
+ attributes: [{
22
+ name: 'value',
23
+ nice_name: 'Content',
24
+ type: 'text',
25
+ value: <%= raw Caboose.json(@block.value) %>,
26
+ width: 800,
27
+ fixed_placeholder: false,
28
+ after_update: function() { parent.controller.render_blocks(); modal.close(); },
29
+ after_cancel: function() { parent.controller.render_blocks(); modal.close(); }
30
+ }]
31
+ });
32
+ });
33
+
34
+ </script>
35
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% page.blocks.each do |b| %>
2
+ <%= render :partial => "caboose/page_blocks/#{b.block_type}", :locals => { :block => b, :empty_text => empty_text } %>
3
+ <% end %>
@@ -5,13 +5,7 @@
5
5
  <div id='new_blocks_container2'>
6
6
  <p class='note'>Drag a new block onto the page:</p>
7
7
  <ul id='new_blocks'>
8
- <li id='new_block_h1'>H1</li>
9
- <li id='new_block_h2'>H2</li>
10
- <li id='new_block_h3'>H3</li>
11
- <li id='new_block_h4'>H4</li>
12
- <li id='new_block_h5'>H5</li>
13
- <li id='new_block_h6'>H6</li>
14
- <li id='new_block_richtext'>Rich Text</li>
8
+ <% @block_types.each do |block_type| %><li id='new_block_<%= block_type.id %>'><%= block_type.description %></li><% end %>
15
9
  </ul>
16
10
  </div>
17
11
  </div>
@@ -80,6 +80,25 @@ Caboose::Engine.routes.draw do
80
80
  put "admin/pages/:page_id/blocks/:id" => "page_blocks#admin_update"
81
81
  delete "admin/pages/:page_id/blocks/:id" => "page_blocks#admin_delete"
82
82
 
83
+ put "admin/page-block-field-values/:id" => "page_block_field_values#admin_update"
84
+
85
+ get "admin/page-block-types/new" => "page_block_types#admin_new"
86
+ get "admin/page-block-types/:id/edit" => "page_block_types#admin_edit"
87
+ get "admin/page-block-types/:id" => "page_block_types#admin_show"
88
+ get "admin/page-block-types" => "page_block_types#admin_index"
89
+ post "admin/page-block-types" => "page_block_types#admin_create"
90
+ put "admin/page-block-types/:id" => "page_block_types#admin_update"
91
+ delete "admin/page-block-types/:id" => "page_block_types#admin_delete"
92
+
93
+ get "admin/page-block-fields/field-type-options" => "page_block_fields#admin_field_type_options"
94
+ get "admin/page-block-fields/:id/options" => "page_block_fields#admin_field_options"
95
+ get "admin/page-block-types/:block_type_id/fields/new" => "page_block_fields#admin_new"
96
+ get "admin/page-block-types/:block_type_id/fields/:id/edit" => "page_block_fields#admin_edit"
97
+ get "admin/page-block-types/:block_type_id/fields/:id" => "page_block_fields#admin_index"
98
+ post "admin/page-block-types/:block_type_id/fields" => "page_block_fields#admin_create"
99
+ put "admin/page-block-types/:block_type_id/fields/:id" => "page_block_fields#admin_update"
100
+ delete "admin/page-block-types/:block_type_id/fields/:id" => "page_block_fields#admin_delete"
101
+
83
102
  get "posts" => "posts#index"
84
103
  get "posts/:id" => "posts#detail"
85
104
  get "admin/posts/category-options" => "posts#admin_category_options"
@@ -35,7 +35,7 @@ module Caboose
35
35
  resp = nil
36
36
  args[0] = args[0].to_sym
37
37
  Caboose.plugins.each do |mod|
38
- #resp = mod.constantize.send(*args)
38
+ #resp = mod.constantize.send(*args)
39
39
  if (mod.constantize.respond_to?(args[0]))
40
40
  resp = mod.constantize.send(*args)
41
41
  end
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.3.12'
2
+ VERSION = '0.3.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-13 00:00:00.000000000 Z
11
+ date: 2014-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -170,6 +170,9 @@ files:
170
170
  - app/controllers/caboose/application_controller.rb
171
171
  - app/controllers/caboose/login_controller.rb
172
172
  - app/controllers/caboose/logout_controller.rb
173
+ - app/controllers/caboose/page_block_field_values_controller.rb
174
+ - app/controllers/caboose/page_block_fields_controller.rb
175
+ - app/controllers/caboose/page_block_types_controller.rb
173
176
  - app/controllers/caboose/page_blocks_controller.rb
174
177
  - app/controllers/caboose/pages_controller.rb
175
178
  - app/controllers/caboose/permissions_controller.rb
@@ -193,6 +196,17 @@ files:
193
196
  - app/models/caboose/page.rb
194
197
  - app/models/caboose/page_bar_generator.rb
195
198
  - app/models/caboose/page_block.rb
199
+ - app/models/caboose/page_block_field.rb
200
+ - app/models/caboose/page_block_field_value.rb
201
+ - app/models/caboose/page_block_renderers/h1.rb
202
+ - app/models/caboose/page_block_renderers/h2.rb
203
+ - app/models/caboose/page_block_renderers/h3.rb
204
+ - app/models/caboose/page_block_renderers/h4.rb
205
+ - app/models/caboose/page_block_renderers/h5.rb
206
+ - app/models/caboose/page_block_renderers/h6.rb
207
+ - app/models/caboose/page_block_renderers/p.rb
208
+ - app/models/caboose/page_block_renderers/richtext.rb
209
+ - app/models/caboose/page_block_type.rb
196
210
  - app/models/caboose/page_permission.rb
197
211
  - app/models/caboose/pager.rb
198
212
  - app/models/caboose/permission.rb
@@ -212,7 +226,15 @@ files:
212
226
  - app/views/caboose/extras/error.html.erb
213
227
  - app/views/caboose/extras/error404.html.erb
214
228
  - app/views/caboose/login/index.html.erb
229
+ - app/views/caboose/page_block_fields/admin_edit.html.erb
230
+ - app/views/caboose/page_block_fields/admin_new.html.erb
231
+ - app/views/caboose/page_block_types/admin_edit.html.erb
232
+ - app/views/caboose/page_block_types/admin_index.html.erb
233
+ - app/views/caboose/page_block_types/admin_new.html.erb
234
+ - app/views/caboose/page_blocks/_heading.html.erb
235
+ - app/views/caboose/page_blocks/_richtext.html.erb
215
236
  - app/views/caboose/page_blocks/admin_edit.html.erb
237
+ - app/views/caboose/page_blocks/admin_edit_custom.html.erb
216
238
  - app/views/caboose/page_blocks/admin_edit_h1.html.erb
217
239
  - app/views/caboose/page_blocks/admin_edit_h2.html.erb
218
240
  - app/views/caboose/page_blocks/admin_edit_h3.html.erb
@@ -222,6 +244,7 @@ files:
222
244
  - app/views/caboose/page_blocks/admin_edit_richtext.html.erb
223
245
  - app/views/caboose/pages/_admin_footer.html.erb
224
246
  - app/views/caboose/pages/_admin_header.html.erb
247
+ - app/views/caboose/pages/_content.html.erb
225
248
  - app/views/caboose/pages/admin_delete_form.html.erb
226
249
  - app/views/caboose/pages/admin_edit_content.html.erb
227
250
  - app/views/caboose/pages/admin_edit_css.html.erb