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.
- checksums.yaml +8 -8
- data/app/assets/javascripts/caboose/admin_page_edit_content.js +6 -6
- data/app/controllers/caboose/page_block_field_values_controller.rb +27 -0
- data/app/controllers/caboose/page_block_fields_controller.rb +139 -0
- data/app/controllers/caboose/page_block_types_controller.rb +100 -0
- data/app/controllers/caboose/page_blocks_controller.rb +49 -36
- data/app/controllers/caboose/pages_controller.rb +2 -1
- data/app/models/caboose/core_plugin.rb +25 -5
- data/app/models/caboose/page.rb +4 -4
- data/app/models/caboose/page_block.rb +36 -15
- data/app/models/caboose/page_block_field.rb +9 -0
- data/app/models/caboose/page_block_field_value.rb +9 -0
- data/app/models/caboose/page_block_renderers/h1.rb +5 -0
- data/app/models/caboose/page_block_renderers/h2.rb +5 -0
- data/app/models/caboose/page_block_renderers/h3.rb +5 -0
- data/app/models/caboose/page_block_renderers/h4.rb +5 -0
- data/app/models/caboose/page_block_renderers/h5.rb +5 -0
- data/app/models/caboose/page_block_renderers/h6.rb +5 -0
- data/app/models/caboose/page_block_renderers/p.rb +5 -0
- data/app/models/caboose/page_block_renderers/richtext.rb +5 -0
- data/app/models/caboose/page_block_type.rb +12 -0
- data/app/models/caboose/schema.rb +48 -7
- data/app/views/caboose/page_block_fields/admin_edit.html.erb +70 -0
- data/app/views/caboose/page_block_fields/admin_new.html.erb +30 -0
- data/app/views/caboose/page_block_types/admin_edit.html.erb +77 -0
- data/app/views/caboose/page_block_types/admin_index.html.erb +24 -0
- data/app/views/caboose/page_block_types/admin_new.html.erb +30 -0
- data/app/views/caboose/page_blocks/_heading.html.erb +7 -0
- data/app/views/caboose/page_blocks/_richtext.html.erb +8 -0
- data/app/views/caboose/page_blocks/admin_edit.html.erb +32 -13
- data/app/views/caboose/page_blocks/admin_edit_custom.html.erb +35 -0
- data/app/views/caboose/pages/_content.html.erb +3 -0
- data/app/views/caboose/pages/admin_edit_content.html.erb +1 -7
- data/config/routes.rb +19 -0
- data/lib/caboose/engine.rb +1 -1
- data/lib/caboose/version.rb +1 -1
- 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'
|
25
|
-
item['children'] << { 'id' => 'roles' , 'text' => 'Roles'
|
26
|
-
item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions'
|
27
|
-
item['children'] << { 'id' => 'variables' , 'text' => 'Variables'
|
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
|
data/app/models/caboose/page.rb
CHANGED
@@ -43,10 +43,10 @@ class Caboose::Page < ActiveRecord::Base
|
|
43
43
|
self.page_blocks
|
44
44
|
end
|
45
45
|
|
46
|
-
def content
|
47
|
-
|
48
|
-
|
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
|
-
|
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
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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,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
|
-
[ :
|
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
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
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 %>
|