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