caboose-cms 0.3.129 → 0.4.1

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.
Files changed (72) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/caboose/admin_block_edit.js +267 -0
  3. data/app/assets/javascripts/caboose/admin_page_edit_content.js +71 -45
  4. data/app/assets/javascripts/caboose/admin_page_edit_content_bak.js +164 -0
  5. data/app/assets/javascripts/caboose/admin_page_new_blocks.js +4 -4
  6. data/app/assets/stylesheets/caboose/admin_page_edit_content.css +37 -16
  7. data/app/controllers/caboose/block_types_controller.rb +162 -0
  8. data/app/controllers/caboose/blocks_controller.rb +293 -0
  9. data/app/controllers/caboose/edit_controller.rb +33 -0
  10. data/app/controllers/caboose/pages_controller.rb +4 -3
  11. data/app/controllers/caboose/posts_controller.rb +1 -1
  12. data/app/models/caboose/block.rb +222 -0
  13. data/app/models/caboose/block_type.rb +28 -0
  14. data/app/models/caboose/core_plugin.rb +6 -6
  15. data/app/models/caboose/page.rb +8 -4
  16. data/app/models/caboose/schema.rb +90 -59
  17. data/app/models/caboose/utilities/schema.rb +3 -3
  18. data/app/views/caboose/block_types/admin_edit.html.erb +111 -0
  19. data/app/views/caboose/{page_block_types → block_types}/admin_index.html.erb +2 -2
  20. data/app/views/caboose/{page_block_types → block_types}/admin_new.html.erb +9 -6
  21. data/app/views/caboose/blocks/_block.html.erb +8 -0
  22. data/app/views/caboose/blocks/_heading.html.erb +7 -0
  23. data/app/views/caboose/blocks/_html.html.erb +7 -0
  24. data/app/views/caboose/blocks/_image.html.erb +0 -0
  25. data/app/views/caboose/blocks/_layout_default.html.erb +33 -0
  26. data/app/views/caboose/blocks/_layout_default_content.html.erb +16 -0
  27. data/app/views/caboose/blocks/_layout_default_footer.html.erb +20 -0
  28. data/app/views/caboose/blocks/_layout_default_header.html.erb +32 -0
  29. data/app/views/caboose/blocks/_richtext.html.erb +7 -0
  30. data/app/views/caboose/{page_blocks/_richtext.html.erb → blocks/_text.html.erb} +1 -2
  31. data/app/views/caboose/blocks/admin_edit.html.erb +106 -0
  32. data/app/views/caboose/{page_blocks → blocks}/admin_edit_custom.html.erb +0 -0
  33. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h1.html.erb +0 -0
  34. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h2.html.erb +0 -0
  35. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h3.html.erb +0 -0
  36. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h4.html.erb +0 -0
  37. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h5.html.erb +0 -0
  38. data/app/views/caboose/{page_blocks → blocks}/admin_edit_h6.html.erb +0 -0
  39. data/app/views/caboose/{page_blocks → blocks}/admin_edit_richtext.html.erb +0 -0
  40. data/app/views/caboose/blocks/admin_new.html.erb +55 -0
  41. data/app/views/caboose/pages/_admin_header.html.erb +1 -1
  42. data/app/views/caboose/pages/_content.html.erb +1 -1
  43. data/app/views/caboose/pages/_new_block_header.html.erb +13 -0
  44. data/app/views/caboose/pages/admin_edit_content.html.erb +24 -20
  45. data/app/views/caboose/pages/show.html.erb +13 -30
  46. data/app/views/layouts/caboose/application.html.erb +26 -14
  47. data/config/routes.rb +38 -30
  48. data/lib/caboose/engine.rb +2 -2
  49. data/lib/caboose/version.rb +1 -1
  50. metadata +33 -35
  51. data/app/controllers/caboose/page_block_field_values_controller.rb +0 -55
  52. data/app/controllers/caboose/page_block_fields_controller.rb +0 -123
  53. data/app/controllers/caboose/page_block_types_controller.rb +0 -100
  54. data/app/controllers/caboose/page_blocks_controller.rb +0 -165
  55. data/app/models/caboose/page_block.rb +0 -49
  56. data/app/models/caboose/page_block_field.rb +0 -21
  57. data/app/models/caboose/page_block_field_value.rb +0 -39
  58. data/app/models/caboose/page_block_renderers/h1.rb +0 -5
  59. data/app/models/caboose/page_block_renderers/h2.rb +0 -5
  60. data/app/models/caboose/page_block_renderers/h3.rb +0 -5
  61. data/app/models/caboose/page_block_renderers/h4.rb +0 -5
  62. data/app/models/caboose/page_block_renderers/h5.rb +0 -5
  63. data/app/models/caboose/page_block_renderers/h6.rb +0 -5
  64. data/app/models/caboose/page_block_renderers/p.rb +0 -5
  65. data/app/models/caboose/page_block_renderers/richtext.rb +0 -5
  66. data/app/models/caboose/page_block_type.rb +0 -12
  67. data/app/views/caboose/page_block_fields/admin_edit.html.erb +0 -77
  68. data/app/views/caboose/page_block_fields/admin_new.html.erb +0 -30
  69. data/app/views/caboose/page_block_types/admin_edit.html.erb +0 -82
  70. data/app/views/caboose/page_blocks/_heading.html.erb +0 -7
  71. data/app/views/caboose/page_blocks/_partial.html.erb +0 -11
  72. data/app/views/caboose/page_blocks/admin_edit.html.erb +0 -69
@@ -40,7 +40,8 @@ class Caboose::Utilities::Schema
40
40
  return if self.schema.nil?
41
41
 
42
42
  rename_tables
43
- rename_columns
43
+ rename_columns
44
+ remove_columns
44
45
 
45
46
  c = ActiveRecord::Base.connection
46
47
  self.schema.each do |model, columns|
@@ -74,8 +75,7 @@ class Caboose::Utilities::Schema
74
75
  end
75
76
  end
76
77
  end
77
-
78
- remove_columns
78
+
79
79
  create_indexes
80
80
 
81
81
  self.schema.each do |model, columns|
@@ -0,0 +1,111 @@
1
+ <%
2
+ bt = @block_type
3
+ %>
4
+
5
+ <h1>Edit Block Type</h1>
6
+ <p><div id='blocktype_<%= bt.id %>_parent_id'></div></p>
7
+ <p><div id='blocktype_<%= bt.id %>_name'></div></p>
8
+ <p><div id='blocktype_<%= bt.id %>_description'></div></p>
9
+ <p><div id='blocktype_<%= bt.id %>_field_type'></div></p>
10
+
11
+
12
+ <p><div id='blocktype_<%= bt.id %>_default'></div></p>
13
+ <p><div id='blocktype_<%= bt.id %>_width'></div></p>
14
+ <p><div id='blocktype_<%= bt.id %>_height'></div></p>
15
+ <p><div id='blocktype_<%= bt.id %>_fixed_placeholder'></div></p>
16
+ <p><div id='blocktype_<%= bt.id %>_options_url'></div></p>
17
+ <p><div id='blocktype_<%= bt.id %>_options'></div></p>
18
+
19
+ <p><div id='blocktype_<%= bt.id %>_use_render_function'></div></p>
20
+ <p><div id='blocktype_<%= bt.id %>_use_render_function_for_layout'></div></p>
21
+ <p><div id='blocktype_<%= bt.id %>_allow_child_blocks'></div></p>
22
+ <p><div id='blocktype_<%= bt.id %>_render_function'></div></p>
23
+ <p><div id='blocktype_<%= bt.id %>_options_function'></div></p>
24
+
25
+ <h2>Children</h2>
26
+ <p><a href='/admin/block-types/<%= @block_type.id %>/new'>New Child Block</a></p>
27
+ <% if @block_type.children.count > 0 %>
28
+ <table class='data'>
29
+ <tr>
30
+ <th>Short Name</th>
31
+ <th>Long Name</th>
32
+ <th>Field Type</th>
33
+ </tr>
34
+ <% bt.children.each do |bt2| %>
35
+ <tr onclick="window.location='/admin/block-types/<%= bt2.id %>/edit';">
36
+ <td><%= bt2.name %></td>
37
+ <td><%= bt2.description %></td>
38
+ <td><%= bt2.field_type %></td>
39
+ </tr>
40
+ <% end %>
41
+ </table><br />
42
+ <% else %>
43
+ <p>This type of page block doesn't have any fields.</p>
44
+ <% end %>
45
+
46
+ <div id='message'></div>
47
+ <p>
48
+ <input type='button' value='< Back' onclick="window.location='/admin/block-types<%= bt.parent_id && bt.parent_id > 0 ? "/#{bt.parent_id}/edit" : '' %>';" />
49
+ <input type='button' value='Delete Block Type' onclick="delete_block_type(<%= @block_type.id %>);" />
50
+ </p>
51
+
52
+ <% content_for :caboose_css do %>
53
+ <style type='text/css'>
54
+ #blocktype_<%= bt.id %>_render_function { font-family: Courier; font-size: 80%; width: 100%; }
55
+ #blocktype_<%= bt.id %>_options_function { font-family: Courier; font-size: 80%; width: 100%; }
56
+ </style>
57
+ <% end %>
58
+ <% content_for :caboose_js do %>
59
+ <%= javascript_include_tag "caboose/model/all" %>
60
+ <script type="text/javascript">
61
+
62
+ function delete_block_type(block_type_id, confirm)
63
+ {
64
+ if (!confirm)
65
+ {
66
+ var p = $('<p/>').addClass('note warning')
67
+ .append('Are you sure you want to delete the block type? ')
68
+ .append($('<input/>').attr('type', 'button').val('Yes').click(function() { delete_block_type(block_type_id, true); })).append(" ")
69
+ .append($('<input/>').attr('type', 'button').val('No' ).click(function() { $('#message').empty(); }));
70
+ $('#message').empty().append(p);
71
+ return;
72
+ }
73
+ $('#message').empty().append($('<p/>').addClass('loading').html('Deleting block type...'));
74
+ $.ajax({
75
+ url: '/admin/block-types/' + block_type_id,
76
+ type: 'delete',
77
+ success: function(resp) {
78
+ if (resp.error) $('#message').empty().append($('<p/>').addClass('note error').html(resp.error));
79
+ if (resp.redirect) window.location = resp.redirect;
80
+ }
81
+ });
82
+ }
83
+
84
+ $(document).ready(function() {
85
+ m = new ModelBinder({
86
+ name: 'BlockType',
87
+ id: <%= @block_type.id %>,
88
+ update_url: '/admin/block-types/<%= @block_type.id %>',
89
+ authenticity_token: '<%= form_authenticity_token %>',
90
+ attributes: [
91
+ { name: 'parent_id' , nice_name: 'Parent' , type: 'select' , value: <%= raw Caboose.json(bt.parent_id) %>, width: 400, options_url: '/admin/block-types/tree-options' },
92
+ { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(bt.name) %>, width: 400 },
93
+ { name: 'description' , nice_name: 'Description' , type: 'text' , value: <%= raw Caboose.json(bt.description) %>, width: 400 },
94
+ { name: 'use_render_function' , nice_name: 'Use Render Function' , type: 'checkbox' , value: <%= bt.use_render_function ? 'true' : 'false' %>, width: 400 },
95
+ { name: 'use_render_function_for_layout' , nice_name: 'Use Render Function for Layout' , type: 'checkbox' , value: <%= bt.use_render_function_for_layout ? 'true' : 'false' %>, width: 400 },
96
+ { name: 'allow_child_blocks' , nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: <%= bt.allow_child_blocks ? 'true' : 'false' %>, width: 400 },
97
+ { name: 'render_function' , nice_name: 'Render Function' , type: 'textarea' , value: <%= raw Caboose.json(bt.render_function) %>, width: 800, height: 200 },
98
+ { name: 'field_type' , nice_name: 'Field type' , type: 'select' , value: <%= raw Caboose.json(bt.field_type) %>, text: <%= raw Caboose.json(bt.field_type) %>, width: 400, options_url: '/admin/block-types/field-type-options' },
99
+ { name: 'default' , nice_name: 'Default value' , type: 'text' , value: <%= raw Caboose.json(bt.default) %>, width: 400 },
100
+ { name: 'width' , nice_name: 'Width' , type: 'text' , value: <%= raw Caboose.json(bt.width) %>, width: 400 },
101
+ { name: 'height' , nice_name: 'Height' , type: 'text' , value: <%= raw Caboose.json(bt.height) %>, width: 400 },
102
+ { name: 'fixed_placeholder' , nice_name: 'Fixed placeholder' , type: 'checkbox' , value: <%= raw Caboose.json(bt.fixed_placeholder) %>, width: 400 },
103
+ { name: 'options_url' , nice_name: 'Options URL' , type: 'text' , value: <%= raw Caboose.json(bt.options_url) %>, width: 400 },
104
+ { name: 'options_function' , nice_name: 'Options Function' , type: 'textarea' , value: <%= raw Caboose.json(bt.options_function) %>, width: 400, height: 100 },
105
+ { name: 'options' , nice_name: 'Options' , type: 'textarea' , value: <%= raw Caboose.json(bt.options) %>, width: 400, height: 100 }
106
+ ]
107
+ });
108
+ });
109
+
110
+ </script>
111
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <h1>Page Block Types</h1>
2
2
 
3
- <p><a href='/admin/page-block-types/new'>New Block Type</a></p>
3
+ <p><a href='/admin/block-types/new'>New Block Type</a></p>
4
4
 
5
5
  <% if (@block_types.count > 0) %>
6
6
 
@@ -10,7 +10,7 @@
10
10
  <th>Description</th>
11
11
  </tr>
12
12
  <% @block_types.each do |bt| %>
13
- <tr onclick="window.location='/admin/page-block-types/<%= bt.id %>/edit';">
13
+ <tr onclick="window.location='/admin/block-types/<%= bt.id %>/edit';">
14
14
  <td><%= bt.name %></td>
15
15
  <td><%= bt.description %></td>
16
16
  </tr>
@@ -1,11 +1,16 @@
1
1
 
2
2
  <h1>New Block Type</h1>
3
+ <form action='/admin/block-types' method='post' id='new_block_type_form'>
4
+ <input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>' />
5
+ <input type='hidden' name='parent_id' value='<%= @parent_id %>' />
6
+ <input type='hidden' name='field_type' value='block' />
3
7
  <p><input type='text' id='name' name='name' placeholder='Name' /></p>
4
8
  <div id='message'></div>
5
9
  <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();" />
10
+ <input type='button' value='< Back' onclick="window.location='/admin/block-types';" />
11
+ <input type='button' value='Add Block Type' onclick="add_block_type();" />
8
12
  </p>
13
+ </form>
9
14
 
10
15
  <% content_for :caboose_js do %>
11
16
  <script type='text/javascript'>
@@ -14,11 +19,9 @@ function add_block_type()
14
19
  {
15
20
  $('#message').empty().append($('<p/>').addClass('loading').html('Adding block type...'));
16
21
  $.ajax({
17
- url: '/admin/page-block-types',
22
+ url: '/admin/block-types',
18
23
  type: 'post',
19
- data: {
20
- name: $('#name').val()
21
- },
24
+ data: $('#new_block_type_form').serialize(),
22
25
  success: function(resp) {
23
26
  if (resp.error) $('#message').empty().append($('<p/>').addClass('note error').html(resp.error));
24
27
  if (resp.redirect) window.location = resp.redirect;
@@ -0,0 +1,8 @@
1
+ <div id='block_<%= block.id %>'>
2
+ <% if block.children.count > 0 %>
3
+ <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4
+ <% elsif editing %>
5
+ <%= raw empty_text %>
6
+ <% end %>
7
+ <% if editing && !modal %><%= raw block.child_block_link %><% end %>
8
+ </div>
@@ -0,0 +1,7 @@
1
+ <%
2
+ size = block.child('size').value
3
+ text = block.child('text').value
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,7 @@
1
+ <%
2
+ html = block.value
3
+ if html.nil? || html == ""
4
+ html = (empty_text ? "<p>#{empty_text}</p>" : "")
5
+ end
6
+
7
+ %><%= raw html %>
@@ -0,0 +1,33 @@
1
+ <%
2
+ page = block.page
3
+ %><!DOCTYPE html>
4
+ <!--[if lt IE 7]><html class="no-js ie lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
5
+ <!--[if IE 7]><html class="no-js ie ie7 lt-ie9 lt-ie8" lang="en"><![endif]-->
6
+ <!--[if IE 8]><html class="no-js ie ie8 lt-ie9" lang="en"><![endif]-->
7
+ <!--[if IE 9]><html class="no-js ie ie9" lang="en"><![endif]-->
8
+ <!--[if !IE]><!--> <html class="no-js" lang="en"><!--<![endif]-->
9
+ <head>
10
+ <meta charset="utf-8" />
11
+ <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
12
+ <title><%= !page.title.nil? && page.title.strip.length > 0 ? "#{page.title} | " : "" %>Truesouth</title>
13
+ <meta name="description" content="" />
14
+ <meta name="viewport" content="width=device-width" />
15
+ <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAzhmPHU-MEhWXbpvAdZRjd0-ZmVy-KYA8&sensor=false"></script>
16
+ <%= raw css %>
17
+ <%= stylesheet_link_tag 'print', :media => 'print' %>
18
+ <%
19
+ #= csrf_meta_tags
20
+ %>
21
+ </head>
22
+ <body>
23
+ <div class="container" id='block_<%= block.id %>'>
24
+ <!--[if lt IE 7]>
25
+ <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
26
+ <![endif]-->
27
+ <%= raw block.render('layout_default_header' , local_assigns) %>
28
+ <%= raw block.render('layout_default_content', local_assigns) %>
29
+ <%= raw block.render('layout_default_footer' , local_assigns) %>
30
+ </div>
31
+ <%= raw js %>
32
+ </body>
33
+ </html>
@@ -0,0 +1,16 @@
1
+ <div class="page_wrap" id='block_<%= block.id %>'>
2
+ <div class="page_body">
3
+ <div class="page_content">
4
+ <div class="icons-social">
5
+ <ul>
6
+ <li><a class="icon-twitter" href="https://twitter.com/truesouthprop"></a></li>
7
+ <li><a class="icon-facebook" href="https://www.facebook.com/pages/TrueSouth-Properties/144790345550944"></a></li>
8
+ </ul>
9
+ </div>
10
+ <% if block.children.count > 0 %>
11
+ <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
12
+ <% end %>
13
+ <% if editing %><%= raw block.child_block_link %><% end %>
14
+ </div>
15
+ </div>
16
+ </div>
@@ -0,0 +1,20 @@
1
+ <div class="footer" id='block_<%= block.id %>'>
2
+ <div class="constrain">
3
+ <div class="nav">
4
+ <ul>
5
+ <li><a href="/">Home</a></li>
6
+ <li><a href="/about">About</a></li>
7
+ <li><a href="/services">Services</a></li>
8
+ <li><a href="/properties/category/land">Land</a></li>
9
+ <li><a href="/properties/category/commercial">Commercial</a></li>
10
+ <li><a href="/properties/category/residential">Residential</a></li>
11
+ <li><a href="/properties/category/rural">Rural</a></li>
12
+ <li><a href="/contact/montgomery">Contact</a></li>
13
+ </ul>
14
+ </div>
15
+ <div class="nine">
16
+ <span>site designed, built and loved by:</span>
17
+ <a href="http://www.nine.is" target="_blank"><div class="logo"></div></a>
18
+ </div>
19
+ </div>
20
+ </div>
@@ -0,0 +1,32 @@
1
+ <div class="header" id="block_<%= block.id %>">
2
+ <div class="constrain">
3
+ <a href="/"><div class="logo" style="width: <%= block.child('logo_size').value %>;"></div></a>
4
+ <a href="/"><div class="mobile_logo"></div></a>
5
+ <div class='register'><a href='/newsletter'>Sign up for our newsletter</a></div>
6
+ <div class="nav">
7
+ <ul>
8
+ <li><a href="/">Home</a></li>
9
+ <li><a href="/about">About</a></li>
10
+ <li><a href="/properties/category/land">Land</a></li>
11
+ <li><a href="/properties/category/commercial">Commercial</a></li>
12
+ <li><a href="/properties/category/rural">Rural</a></li>
13
+ <li><a href="/properties/category/residential">Residential</a></li>
14
+ <li><a href="/services">Services</a></li>
15
+ <li><a href="/contact/montgomery">Contact Us</a></li>
16
+ </ul>
17
+ </div>
18
+ <a id="show_menu" href="#sidr"><img src="//d323vxen8l6os.cloudfront.net/assets/icons/sidr.png"></a>
19
+ <div id="sidr" style="display:none;">
20
+ <ul>
21
+ <li><a href="/">Home</a></li>
22
+ <li><a href="/about">About</a></li>
23
+ <li><a href="/services">Services</a></li>
24
+ <li><a href="/properties/category/land">Land</a></li>
25
+ <li><a href="/properties/category/commercial">Commercial</a></li>
26
+ <li><a href="/properties/category/residential">Residential</a></li>
27
+ <li><a href="/properties/category/rural">Rural</a></li>
28
+ <li><a href="/contact/montgomery">Contact</a></li>
29
+ </ul>
30
+ </div>
31
+ </div>
32
+ </div>
@@ -0,0 +1,7 @@
1
+ <%
2
+ text = block.value
3
+ if text.nil? || text == ""
4
+ text = (empty_text ? "<p>#{empty_text}</p>" : "")
5
+ end
6
+
7
+ %><div id='block_<%= block.id %>'><%= raw text %></div>
@@ -1,6 +1,5 @@
1
1
  <%
2
- text = block.field_value('text')
3
- Caboose.log("text = #{text}")
2
+ text = block.value
4
3
  if text.nil? || text == ""
5
4
  text = (empty_text ? "<p>#{empty_text}</p>" : "")
6
5
  end
@@ -0,0 +1,106 @@
1
+ <%
2
+ update_on_close = false
3
+ @block.block_type.children.each do |bt|
4
+ update_on_close = true if bt.field_type == 'image' || bt.field_type == 'file'
5
+ end
6
+
7
+ crumbs = []
8
+ b = @block
9
+ while b
10
+ href = b.id == @block.id ? "#" : "/admin/pages/#{b.page_id}/blocks/#{b.id}/edit"
11
+ onclick = b.id == @block.id ? " onclick=\"$('#block_#{@block.id}_block_type_id_container').slideToggle(100, function() { modal.autosize(); });\"" : ''
12
+ text = b.name ? "#{b.block_type.description} (#{b.name})" : b.block_type.description
13
+ crumbs << "<a href=\"#{href}\"#{onclick}>#{text}</a>"
14
+ b = b.parent
15
+ end
16
+
17
+ %>
18
+ <!--<h2 style='margin-top: 0; padding-top: 0;'>Edit <%= @block.name ? @block.name : @block.block_type.description %></h2>-->
19
+ <h2 style='margin-top: 0; padding-top: 0;'><%= raw crumbs.reverse.join(' > ') %></h2>
20
+ <p id='block_type_container'><div id='block_<%= @block.id %>_block_type_id'></div></p>
21
+
22
+ <% if @block.block_type.use_render_function_for_layout %>
23
+ <!-- Start -->
24
+ <%= raw @block.render(@block, {
25
+ :modal => true,
26
+ :empty_text => '[Empty, click to edit]',
27
+ :editing => true
28
+ }) %>
29
+ <!-- Stop -->
30
+ <% elsif @block.block_type.field_type != 'block' %>
31
+ <p><div id='block_<%= @block.id %>_value'></div></p>
32
+ <% else %>
33
+ <% if @block.children.count > 0 %>
34
+ <% @block.children.each do |b| %>
35
+ <% if b.block_type.field_type != 'block' && b.block_type.field_type != 'richtext' %>
36
+ <p><div id='block_<%= b.id %>_value'></div></p>
37
+ <% else %>
38
+ <%= raw @block.render(b, {
39
+ :modal => true,
40
+ :empty_text => '[Empty, click to edit]',
41
+ :editing => true
42
+ }) %>
43
+ <% end %>
44
+ <% end %>
45
+ <% else %>
46
+ <p>This block doesn't have any content yet.
47
+ <% if @block.block_type.allow_child_blocks %>
48
+ <a href='/admin/pages/<%= @block.page_id %>/blocks/<%= @block.id %>/new'>Add a child block!</a>
49
+ <% end %>
50
+ </p>
51
+ <% end %>
52
+ <% end %>
53
+ <div id='message'></div>
54
+ <p>
55
+ <input type='button' value='Close' onclick="<% if update_on_close %>parent.controller.render_blocks();<% end %>modal.close();" />
56
+ <% if @block.name.nil? %>
57
+ <input type='button' value='Delete Block' onclick="controller.delete_block();" />
58
+ <% end %>
59
+ <input type='button' value='Move Up' onclick="controller.move_up();" />
60
+ <input type='button' value='Move Down' onclick="controller.move_down();" />
61
+ </p>
62
+
63
+ <% content_for :caboose_css do %>
64
+ <style type='text/css'>
65
+ .block { border: #ccc 1px dotted; }
66
+ #block_<%= @block.id %>_block_type_id_container { }
67
+ </style>
68
+ <% end %>
69
+ <% content_for :caboose_js do %>
70
+ <%= javascript_include_tag "caboose/model/all" %>
71
+ <%= javascript_include_tag "caboose/admin_block_edit" %>
72
+ <script type='text/javascript'>
73
+
74
+ var modal = false;
75
+ $(window).load(function() {
76
+ modal = new CabooseModal(800);
77
+ });
78
+
79
+ <%
80
+ #b = @block, nil, {
81
+ # :include => [
82
+ # :block_type,
83
+ # :children => { :include => :block_type }
84
+ # ]
85
+ #})
86
+ #b.image
87
+ %>
88
+
89
+ var controller = false;
90
+ $(document).ready(function() {
91
+ controller = new BlockController({
92
+ block: <%= raw Caboose.json(@block.js_hash) %>,
93
+ authenticity_token: '<%= form_authenticity_token %>'
94
+ });
95
+ });
96
+
97
+ </script>
98
+ <% if @block.block_type.field_type == 'richtext' %>
99
+ <%= tinymce_assets %>
100
+ <script type='textjavascript'>
101
+ document.domain = "<%= Rails.application.config.action_controller.asset_host %>";
102
+ </script>
103
+ <%= tinymce :caboose, width: '800px', height:'300px' %>
104
+ <% end %>
105
+
106
+ <% end %>