caboose-cms 0.3.12 → 0.3.13

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 (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
@@ -122,8 +122,9 @@ module Caboose
122
122
 
123
123
  # GET /admin/pages/:id/content
124
124
  def admin_edit_content
125
- return unless user_is_allowed('pages', 'edit')
125
+ return unless user_is_allowed('pages', 'edit')
126
126
  @page = Page.find(params[:id])
127
+ @block_types = Caboose::PageBlockType.reorder(:name).all
127
128
  render :layout => 'caboose/admin'
128
129
  end
129
130
 
@@ -21,10 +21,11 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
21
21
  'children' => []
22
22
  }
23
23
 
24
- item['children'] << { 'id' => 'users' , 'text' => 'Users' , 'href' => '/admin/users' , 'modal' => false } if user.is_allowed('users' , 'view')
25
- item['children'] << { 'id' => 'roles' , 'text' => 'Roles' , 'href' => '/admin/roles' , 'modal' => false } if user.is_allowed('roles' , 'view')
26
- item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
27
- item['children'] << { 'id' => 'variables' , 'text' => 'Variables' , 'href' => '/admin/settings' , 'modal' => false } if user.is_allowed('settings' , 'view')
24
+ item['children'] << { 'id' => 'users' , 'text' => 'Users' , 'href' => '/admin/users' , 'modal' => false } if user.is_allowed('users' , 'view')
25
+ item['children'] << { 'id' => 'roles' , 'text' => 'Roles' , 'href' => '/admin/roles' , 'modal' => false } if user.is_allowed('roles' , 'view')
26
+ item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
27
+ item['children'] << { 'id' => 'variables' , 'text' => 'Variables' , 'href' => '/admin/settings' , 'modal' => false } if user.is_allowed('settings' , 'view')
28
+ item['children'] << { 'id' => 'blocktypes' , 'text' => 'Page Block Types' , 'href' => '/admin/page-block-types' , 'modal' => false } if user.is_allowed('pageblocktypes' , 'view')
28
29
 
29
30
  nav << item if item['children'].count > 0
30
31
 
@@ -53,5 +54,24 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
53
54
  # });
54
55
  # });"
55
56
  #end
56
-
57
+
58
+ def self.block_types(block_types)
59
+ block_types << {
60
+ :id => 'heading',
61
+ :name => "Heading",
62
+ :attributes => [
63
+ { name: 'text' , nice_name: 'Text' , type: 'text' , default: '', width: 800, fixed_placeholder: false },
64
+ { name: 'size' , nice_name: 'Size' , type: 'select', default: 1, width: 800, fixed_placeholder: false, options: ["1 - Largest", "2", "3", "4", "5", "6"]}
65
+ ]
66
+ }
67
+ block_types << {
68
+ :id => 'richtext',
69
+ :name => "Rich Text",
70
+ :attributes => [
71
+ { name: 'text' , nice_name: 'Text' , type: 'richtext', default: '', width: 800, height: 400, fixed_placeholder: false }
72
+ ]
73
+ }
74
+ return block_types
75
+ end
76
+
57
77
  end
@@ -43,10 +43,10 @@ class Caboose::Page < ActiveRecord::Base
43
43
  self.page_blocks
44
44
  end
45
45
 
46
- def content
47
- return "" if self.blocks.nil? || self.blocks.count == 0
48
- self.blocks.collect { |b| b.render }.join("\n")
49
- end
46
+ #def content
47
+ # return "" if self.blocks.nil? || self.blocks.count == 0
48
+ # self.blocks.collect { |b| b.render }.join("\n")
49
+ #end
50
50
 
51
51
  def self.find_with_fields(page_id, fields)
52
52
  return self.where(:id => page_id).select(fields).first
@@ -2,22 +2,43 @@
2
2
  class Caboose::PageBlock < ActiveRecord::Base
3
3
  self.table_name = "page_blocks"
4
4
 
5
- belongs_to :page
6
- attr_accessible :id, :page_id, :block_type, :sort_order, :name, :value
5
+ belongs_to :page
6
+ belongs_to :page_block_type
7
+ has_many :page_block_field_values
8
+ attr_accessible :id, :page_id, :page_block_type_id, :sort_order
9
+
10
+ def fields
11
+ return page_block_type.fields
12
+ end
7
13
 
8
- def render(empty_text = nil)
9
- str = self.send("render_#{self.block_type.downcase}", empty_text)
10
- #return empty_text if empty_text && (str.nil? || str.length == 0)
11
- return str
14
+ def field_value(name)
15
+ page_block_field_values.each do |fv|
16
+ return fv.value if fv.page_block_field.name == name
17
+ end
18
+ return nil
12
19
  end
13
20
 
14
- def render_richtext(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<p>#{empty_text}</p>" : self.value end
15
- def render_p(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<p>#{empty_text}</p>" : "<p>#{self.value}</p>" end
16
- def render_h1(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h1>#{empty_text}</h1>" : "<h1>#{self.value}</h1>" end
17
- def render_h2(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h2>#{empty_text}</h2>" : "<h2>#{self.value}</h2>" end
18
- def render_h3(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h3>#{empty_text}</h3>" : "<h3>#{self.value}</h3>" end
19
- def render_h4(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h4>#{empty_text}</h4>" : "<h4>#{self.value}</h4>" end
20
- def render_h5(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h5>#{empty_text}</h5>" : "<h5>#{self.value}</h5>" end
21
- def render_h6(empty_text = nil) return (self.value.nil? || self.value == "") && empty_text ? "<h6>#{empty_text}</h6>" : "<h6>#{self.value}</h6>" end
22
-
21
+ def field_value_object(name)
22
+ page_block_field_values.each do |fv|
23
+ #Caboose.log("fv = #{fv}")
24
+ return fv if fv.page_block_field.name == name
25
+ end
26
+ return nil
27
+ end
28
+
29
+ def self.create_field_values(block_id)
30
+ block = self.find(block_id)
31
+ block.page_block_type.fields.each do |f|
32
+ if block.field_value_object(f.name).nil?
33
+ Caboose::PageBlockFieldValue.create(:page_block_id => block.id, :page_block_field_id => f.id, :value => f.default)
34
+ end
35
+ end
36
+ end
37
+
38
+ def render_from_function(empty_text = nil)
39
+ locals = OpenStruct.new(:block => self, :empty_text => empty_text)
40
+ erb = ERB.new(page_block_type.render_function)
41
+ return erb.result(locals.instance_eval { binding })
42
+ end
43
+
23
44
  end
@@ -0,0 +1,9 @@
1
+
2
+ class Caboose::PageBlockField < ActiveRecord::Base
3
+ self.table_name = "page_block_fields"
4
+
5
+ belongs_to :page_block_type
6
+ has_many :page_block_field_values, :dependent => :destroy
7
+ attr_accessible :id, :page_block_type_id, :name, :field_type, :nice_name, :default, :width, :height, :fixed_placeholder, :options, :options_url
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+
2
+ class Caboose::PageBlockFieldValue < ActiveRecord::Base
3
+ self.table_name = "page_block_field_values"
4
+
5
+ belongs_to :page_block
6
+ belongs_to :page_block_field
7
+ attr_accessible :id, :page_block_id, :page_block_field_id, :value
8
+
9
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H1
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h1>#{empty_text}</h1>" : "<h1>#{block.value}</h1>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H2
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h2>#{empty_text}</h2>" : "<h2>#{block.value}</h2>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H3
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h3>#{empty_text}</h3>" : "<h3>#{block.value}</h3>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H4
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h4>#{empty_text}</h4>" : "<h4>#{block.value}</h4>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H5
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h5>#{empty_text}</h5>" : "<h5>#{block.value}</h5>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::H6
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<h6>#{empty_text}</h6>" : "<h6>#{block.value}</h6>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::P
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<p>#{empty_text}</p>" : block.value
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Caboose::PageBlockRenderers::Richtext
2
+ def self.render(block, empty_text = nil)
3
+ return (block.value.nil? || block.value == "") && empty_text ? "<p>#{empty_text}</p>" : "<p>#{block.value}</p>"
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+
2
+ class Caboose::PageBlockType < ActiveRecord::Base
3
+ self.table_name = "page_block_types"
4
+
5
+ has_many :page_block_fields, :dependent => :destroy
6
+ attr_accessible :id, :name, :description, :use_render_function, :render_function
7
+
8
+ def fields
9
+ return page_block_fields
10
+ end
11
+
12
+ end
@@ -9,6 +9,13 @@ class Caboose::Schema < Caboose::Utilities::Schema
9
9
  }
10
10
  end
11
11
 
12
+ def self.removed_columns
13
+ {
14
+ Caboose::PageBlock => [:block_type, :value, :name],
15
+ Caboose::PageBlockField => [:model_binder_options]
16
+ }
17
+ end
18
+
12
19
  # Any column indexes that need to exist in the database
13
20
  def self.indexes
14
21
  {
@@ -86,11 +93,34 @@ class Caboose::Schema < Caboose::Utilities::Schema
86
93
  [ :gp_description , :string , :limit => 156 ]
87
94
  ],
88
95
  Caboose::PageBlock => [
89
- [ :page_id , :integer ],
90
- [ :block_type , :string , :default => 'p' ],
96
+ [ :page_id , :integer ],
97
+ [ :page_block_type_id , :integer ],
91
98
  [ :sort_order , :integer , :default => 0 ],
92
99
  [ :name , :string ],
93
100
  [ :value , :text ]
101
+ ],
102
+ Caboose::PageBlockType => [
103
+ [ :name , :string ],
104
+ [ :description , :string ],
105
+ [ :use_render_function , :boolean , :default => false ],
106
+ [ :render_function , :text ]
107
+ ],
108
+ Caboose::PageBlockField => [
109
+ [ :page_block_type_id , :integer ],
110
+ [ :name , :string ],
111
+ [ :field_type , :string ],
112
+ [ :nice_name , :string ],
113
+ [ :default , :text ],
114
+ [ :width , :integer ],
115
+ [ :height , :integer ],
116
+ [ :fixed_placeholder , :boolean ],
117
+ [ :options , :text ],
118
+ [ :options_url , :string ]
119
+ ],
120
+ Caboose::PageBlockFieldValue => [
121
+ [ :page_block_id , :integer ],
122
+ [ :page_block_field_id , :integer ],
123
+ [ :value , :text ]
94
124
  ],
95
125
  Caboose::Post => [
96
126
  [ :title , :text ],
@@ -131,11 +161,22 @@ class Caboose::Schema < Caboose::Utilities::Schema
131
161
  def self.load_data
132
162
 
133
163
  c = ActiveRecord::Base.connection
134
- if c.column_exists?(:pages, :content)
135
- Caboose::Page.reorder(:id).all.each do |p|
136
- Caboose::PageBlock.create( :page_id => p.id, :block_type => 'richtext', :value => p.content )
137
- end
138
- c.remove_column(:pages, :content)
164
+ #if c.column_exists?(:pages, :content)
165
+ # Caboose::Page.reorder(:id).all.each do |p|
166
+ # Caboose::PageBlock.create( :page_id => p.id, :block_type => 'richtext', :value => p.content )
167
+ # end
168
+ # c.remove_column(:pages, :content)
169
+ #end
170
+
171
+ if !Caboose::PageBlockType.where(:name => 'heading').exists?
172
+ bt = Caboose::PageBlockType.create(:name => 'heading', :description => 'Heading')
173
+ Caboose::PageBlockField.create(:page_block_type_id => bt.id, :name => 'text', :field_type => 'text', :nice_name => 'Text', :default => '', :width => 800, :fixed_placeholder => false)
174
+ Caboose::PageBlockField.create(:page_block_type_id => bt.id, :name => 'size', :field_type => 'text', :nice_name => 'Size', :default => 1, :width => 800, :fixed_placeholder => false, :options => "1|2|3|4|5|6")
175
+ end
176
+
177
+ if !Caboose::PageBlockType.where(:name => 'richtext').exists?
178
+ bt = Caboose::PageBlockType.create(:name => 'richtext', :description => 'Rich Text')
179
+ Caboose::PageBlockField.create(:page_block_type_id => bt.id, :name => 'text', :field_type => 'richtext', :nice_name => 'Text', :default => '', :width => 800, :height => 400, :fixed_placeholder => false)
139
180
  end
140
181
 
141
182
  admin_user = nil
@@ -0,0 +1,70 @@
1
+ <%
2
+ block_type_id = @field.page_block_type.id
3
+ %>
4
+
5
+ <h1>Edit Page Block Field</h1>
6
+ <div id='pageblockfield_<%= @field.id %>_name'></div>
7
+ <div id='pageblockfield_<%= @field.id %>_nice_name'></div>
8
+ <div id='pageblockfield_<%= @field.id %>_field_type'></div>
9
+ <div id='pageblockfield_<%= @field.id %>_default'></div>
10
+ <div id='pageblockfield_<%= @field.id %>_width'></div>
11
+ <div id='pageblockfield_<%= @field.id %>_height'></div>
12
+ <div id='pageblockfield_<%= @field.id %>_fixed_placeholder'></div>
13
+ <div id='pageblockfield_<%= @field.id %>_options_url'></div>
14
+ <div id='pageblockfield_<%= @field.id %>_options'></div>
15
+ <br />
16
+
17
+ <div id='message'></div>
18
+ <p>
19
+ <input type='button' value='< Back' onclick="window.location='/admin/page-block-types/<%= block_type_id %>/edit';" />
20
+ <input type='button' value='Delete Field' onclick="delete_field(<%= @field.id %>);" />
21
+ </p>
22
+
23
+ <% content_for :caboose_js do %>
24
+ <%= javascript_include_tag "caboose/model/all" %>
25
+ <script type="text/javascript">
26
+
27
+ function delete_field(field_id, confirm)
28
+ {
29
+ if (!confirm)
30
+ {
31
+ var p = $('<p/>').addClass('note warning')
32
+ .append('Are you sure you want to delete the field? ')
33
+ .append($('<input/>').attr('type', 'button').val('Yes').click(function() { delete_field(field_id, true); })).append(" ")
34
+ .append($('<input/>').attr('type', 'button').val('No' ).click(function() { $('#message').empty(); }));
35
+ $('#message').empty().append(p);
36
+ return;
37
+ }
38
+ $('#message').empty().append($('<p/>').addClass('loading').html('Deleting field...'));
39
+ $.ajax({
40
+ url: '/admin/page-block-types/<%= block_type_id %>/fields/' + field_id,
41
+ type: 'delete',
42
+ success: function(resp) {
43
+ if (resp.error) $('#message').empty().append($('<p/>').addClass('note error').html(resp.error));
44
+ if (resp.redirect) window.location = resp.redirect;
45
+ }
46
+ });
47
+ }
48
+
49
+ $(document).ready(function() {
50
+ m = new ModelBinder({
51
+ name: 'PageBlockField',
52
+ id: <%= @field.id %>,
53
+ update_url: '/admin/page-block-types/<%= @field.page_block_type.id %>/fields/<%= @field.id %>',
54
+ authenticity_token: '<%= form_authenticity_token %>',
55
+ attributes: [
56
+ { name: 'name' , nice_name: 'Short name' , type: 'text' , value: <%= raw Caboose.json(@field.name) %>, width: 400 },
57
+ { name: 'nice_name' , nice_name: 'Long name' , type: 'text' , value: <%= raw Caboose.json(@field.nice_name) %>, width: 400 },
58
+ { name: 'field_type' , nice_name: 'Field type' , type: 'select' , value: <%= raw Caboose.json(@field.field_type) %>, text: <%= raw Caboose.json(@field.field_type) %>, width: 400, options_url: '/admin/page-block-fields/field-type-options' },
59
+ { name: 'default' , nice_name: 'Default value' , type: 'text' , value: <%= raw Caboose.json(@field.default) %>, width: 400 },
60
+ { name: 'width' , nice_name: 'Width' , type: 'text' , value: <%= raw Caboose.json(@field.width) %>, width: 400 },
61
+ { name: 'height' , nice_name: 'Height' , type: 'text' , value: <%= raw Caboose.json(@field.height) %>, width: 400 },
62
+ { name: 'fixed_placeholder' , nice_name: 'Fixed placeholder' , type: 'checkbox' , value: <%= raw Caboose.json(@field.fixed_placeholder) %>, width: 400 },
63
+ { name: 'options_url' , nice_name: 'Options URL' , type: 'text' , value: <%= raw Caboose.json(@field.options_url) %>, width: 400 },
64
+ { name: 'options' , nice_name: 'Options' , type: 'textarea' , value: <%= raw Caboose.json(@field.options) %>, width: 400, height: 100 }
65
+ ]
66
+ });
67
+ });
68
+
69
+ </script>
70
+ <% end %>
@@ -0,0 +1,30 @@
1
+
2
+ <h1>New Field</h1>
3
+ <p><input type='text' id='name' name='name' placeholder='Field name' /></p>
4
+ <div id='message'></div>
5
+ <p>
6
+ <input type='button' value='< Back' onclick="window.location='/admin/page-block-types/<%= @block_type.id %>/edit';" />
7
+ <input type='button' value='Add Field' onclick="add_field();" />
8
+ </p>
9
+
10
+ <% content_for :caboose_js do %>
11
+ <script type='text/javascript'>
12
+
13
+ function add_field()
14
+ {
15
+ $('#message').empty().append($('<p/>').addClass('loading').html('Adding field...'));
16
+ $.ajax({
17
+ url: '/admin/page-block-types/<%= @block_type.id %>/fields',
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,77 @@
1
+
2
+ <h1>Edit Page Block Type</h1>
3
+ <div id='pageblocktype_<%= @block_type.id %>_name'></div>
4
+ <div id='pageblocktype_<%= @block_type.id %>_description'></div>
5
+ <div id='pageblocktype_<%= @block_type.id %>_use_render_function'></div>
6
+ <div id='pageblocktype_<%= @block_type.id %>_render_function'></div>
7
+
8
+ <h2>Fields</h2>
9
+ <p><a href='/admin/page-block-types/<%= @block_type.id %>/fields/new'>New Field</a></p>
10
+ <% if @block_type.fields.count > 0 %>
11
+ <table class='data'>
12
+ <tr>
13
+ <th>Short Name</th>
14
+ <th>Long Name</th>
15
+ <th>Field Type</th>
16
+ </tr>
17
+ <% @block_type.fields.each do |f| %>
18
+ <tr onclick="window.location='/admin/page-block-types/<%= @block_type.id %>/fields/<%= f.id %>/edit';">
19
+ <td><%= f.name %></td>
20
+ <td><%= f.nice_name %></td>
21
+ <td><%= f.field_type %></td>
22
+ </tr>
23
+ <% end %>
24
+ </table><br />
25
+ <% else %>
26
+ <p>This type of page block doesn't have any fields.</p>
27
+ <% end %>
28
+
29
+ <div id='message'></div>
30
+ <p>
31
+ <input type='button' value='< Back' onclick="window.location='/admin/page-block-types';" />
32
+ <input type='button' value='Delete Block Type' onclick="delete_block_type(<%= @block_type.id %>);" />
33
+ </p>
34
+
35
+ <% content_for :caboose_js do %>
36
+ <%= javascript_include_tag "caboose/model/all" %>
37
+ <script type="text/javascript">
38
+
39
+ function delete_block_type(block_type_id, confirm)
40
+ {
41
+ if (!confirm)
42
+ {
43
+ var p = $('<p/>').addClass('note warning')
44
+ .append('Are you sure you want to delete the block type? ')
45
+ .append($('<input/>').attr('type', 'button').val('Yes').click(function() { delete_block_type(block_type_id, true); })).append(" ")
46
+ .append($('<input/>').attr('type', 'button').val('No' ).click(function() { $('#message').empty(); }));
47
+ $('#message').empty().append(p);
48
+ return;
49
+ }
50
+ $('#message').empty().append($('<p/>').addClass('loading').html('Deleting block type...'));
51
+ $.ajax({
52
+ url: '/admin/page-block-types/' + block_type_id,
53
+ type: 'delete',
54
+ success: function(resp) {
55
+ if (resp.error) $('#message').empty().append($('<p/>').addClass('note error').html(resp.error));
56
+ if (resp.redirect) window.location = resp.redirect;
57
+ }
58
+ });
59
+ }
60
+
61
+ $(document).ready(function() {
62
+ m = new ModelBinder({
63
+ name: 'PageBlockType',
64
+ id: <%= @block_type.id %>,
65
+ update_url: '/admin/page-block-types/<%= @block_type.id %>',
66
+ authenticity_token: '<%= form_authenticity_token %>',
67
+ attributes: [
68
+ { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@block_type.name) %> , width: 400 },
69
+ { name: 'description' , nice_name: 'Description' , type: 'text' , value: <%= raw Caboose.json(@block_type.description) %> , width: 400 },
70
+ { name: 'use_render_function' , nice_name: 'Use Render Function' , type: 'checkbox' , value: <%= @block_type.use_render_function ? 'true' : 'false' %> , width: 400 },
71
+ { name: 'render_function' , nice_name: 'Render Function' , type: 'textarea' , value: <%= raw Caboose.json(@block_type.render_function) %> , width: 800, height: 200 }
72
+ ]
73
+ });
74
+ });
75
+
76
+ </script>
77
+ <% end %>