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
@@ -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 %>