caboose-cms 0.4.145 → 0.4.146

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- M2VjNzUxMTk0ZmYxNGUwMzMyNjI2MGQ4YTgyMzVkNjM5NWU1NmRlNg==
4
+ Njk0NzdjZDhiNWUwNzk3MzE5MzFiYjk2M2Q2MmQxNGI4MDYzN2ZkZA==
5
5
  data.tar.gz: !binary |-
6
- MWRjZjczNGU2NmUxMDA2OTM0OTI4NTdjNTMwMmEyN2MxOTI1ZjY3MA==
6
+ ZjY5NjcxNGViZWE3YzI1MTE0NWFhM2M4NjY4NGU2OTgyNTJlNGU4Mg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- OTFhNjIwYWVmMjllMWQyODNkMGE3ZjVjY2U5YWVjOTM5YzEzOGZkZGJiZGNl
10
- ZDBiMWI4OWZhNDU5MDUzY2VjMzQyZDBhNmUzMjY4NmMxNzliNDBlNTc4YzU3
11
- M2QyYzNlN2NlMWI4MWNmMTUzMTg4ZTk5MmEzM2I2ZjZhYWI4ZTY=
9
+ YmM2OGMyYjIyMWE1ZDllYjVhZDllZjIyZWQxNWMxZTdlODAyM2I1MTFlNWI0
10
+ ZWJiOWMxNGY2NWRiNTNkNjA3MzVjNDYzODgxNmYyNTkzYzhjY2JkOTlhZjYz
11
+ NDRjNzI4MjUyZDljMzI0NzgzMmQ2NTYzZDRiZGVjYjVkMTZmY2E=
12
12
  data.tar.gz: !binary |-
13
- YmVmYjQxNjRjYmIwNzIxNGQ1ZWFhOWIxODZjNGRjNDAwYzRkZWUxOWMxOWI0
14
- ODdkOTA2YTY3MTYxNDhhZTRlNDdiYjgxODQ4MzVlMGU5ZDlkZWVlZmMzNzc1
15
- ODViZGExMjZkMGY5M2E4Y2MzOWI2NjdiYWUxZjJiNzVhODQ0ODA=
13
+ Yzc2ZjZkODM5M2VhOWM5ZGFiZTllMGU5MWQ2ZTViOGNiNzIwYzNmZWM4Mzk1
14
+ YzM4NDAxMmE4Y2U4YTI2YjIyM2ExYTc2ZTFmNjU5YzcwOTg4OGY2ZmZlNDJl
15
+ NTA3ZjA4ZDUxNjRkYTE0NTA0ZTk2Yzc4YTBiMDIyMjUxYTE3YzA=
@@ -18,7 +18,7 @@ module Caboose
18
18
  render :layout => 'caboose/admin'
19
19
  end
20
20
 
21
- # GET /admin/block-type-sources/:id/edit
21
+ # GET /admin/block-type-sources/:id
22
22
  def admin_edit
23
23
  return unless user_is_allowed('blocktypesources', 'edit')
24
24
  @block_type_source = BlockTypeSource.find(params[:id])
@@ -40,7 +40,7 @@ module Caboose
40
40
  bts.save
41
41
 
42
42
  # Send back the response
43
- resp.redirect = "/admin/block-types/store/sources/#{bts.id}/edit"
43
+ resp.redirect = "/admin/block-types/store/sources/#{bts.id}"
44
44
  render :json => resp
45
45
  end
46
46
 
@@ -13,8 +13,32 @@ module Caboose
13
13
  render :layout => 'caboose/admin'
14
14
  end
15
15
 
16
- # GET /admin/block-types/:id
17
- def admin_show
16
+ # GET /admin/block-types/json
17
+ def admin_json
18
+ h = {
19
+ 'name' => '',
20
+ 'description' => '',
21
+ }
22
+ if params[:parent_id]
23
+ h['parent_id'] = ''
24
+ else
25
+ h['parent_id_null'] = true
26
+ end
27
+ pager = Caboose::Pager.new(params, h, {
28
+ 'model' => 'Caboose::BlockType',
29
+ 'sort' => 'description',
30
+ 'desc' => 'false',
31
+ 'base_url' => "/admin/block-types",
32
+ 'items_per_page' => 100
33
+ })
34
+ render :json => {
35
+ :pager => pager,
36
+ :models => pager.items.as_json(:include => :sites)
37
+ }
38
+ end
39
+
40
+ # GET /admin/block-types/:id/json
41
+ def admin_json_single
18
42
  return if !user_is_allowed('pages', 'view')
19
43
  block_type = BlockType.find(params[:id])
20
44
  render :json => block_type
@@ -29,7 +53,7 @@ module Caboose
29
53
  render :layout => 'caboose/admin'
30
54
  end
31
55
 
32
- # GET /admin/block-types/:id/edit
56
+ # GET /admin/block-types/:id
33
57
  def admin_edit
34
58
  return unless user_is_allowed('pages', 'edit')
35
59
  @block_type = BlockType.find(params[:id])
@@ -62,7 +86,7 @@ module Caboose
62
86
  bt.save
63
87
 
64
88
  # Send back the response
65
- resp.redirect = "/admin/block-types/#{bt.id}/edit"
89
+ resp.redirect = "/admin/block-types/#{bt.id}"
66
90
  render :json => resp
67
91
  end
68
92
 
@@ -75,8 +99,7 @@ module Caboose
75
99
  save = true
76
100
 
77
101
  params.each do |k,v|
78
- case k
79
- when 'site_id' then bt.site_id = v
102
+ case k
80
103
  when 'parent_id' then bt.parent_id = v
81
104
  when 'name' then bt.name = v
82
105
  when 'description' then bt.description = v
@@ -96,7 +119,8 @@ module Caboose
96
119
  when 'fixed_placeholder' then bt.fixed_placeholder = v
97
120
  when 'options' then bt.options = v
98
121
  when 'options_function' then bt.options_function = v
99
- when 'options_url' then bt.options_url = v
122
+ when 'options_url' then bt.options_url = v
123
+ when 'site_id' then bt.toggle_site(v[0], v[1])
100
124
  end
101
125
  end
102
126
 
@@ -134,13 +158,12 @@ module Caboose
134
158
  # GET /admin/block-types/site-options
135
159
  def admin_site_options
136
160
  return unless user_is_allowed('pages', 'edit')
137
- options = [{ 'value' => -1, 'text' => 'Global'}]
138
- Site.reorder("description, name").all.each do |s|
139
- options << {
161
+ options = Site.reorder("description, name").all.collect do |s|
162
+ {
140
163
  'value' => s.id,
141
164
  'text' => s.description && s.description.strip.length > 0 ? s.description : s.name
142
165
  }
143
- end
166
+ end
144
167
  render :json => options
145
168
  end
146
169
 
@@ -175,21 +175,27 @@ class Caboose::Block < ActiveRecord::Base
175
175
  begin
176
176
  str = view.render(:partial => "../../sites/#{site.name}/blocks/#{full_name}", :locals => options2)
177
177
  rescue ActionView::MissingTemplate => ex
178
+ #Caboose.log("Can't find partial: ../../sites/#{site.name}/blocks/#{full_name}")
178
179
  begin
179
180
  str = view.render(:partial => "../../sites/#{site.name}/blocks/#{block.block_type.name}", :locals => options2)
180
181
  rescue ActionView::MissingTemplate => ex
182
+ #Caboose.log("Can't find partial: ../../sites/#{site.name}/blocks/#{block.block_type.name}")
181
183
  begin
182
184
  str = view.render(:partial => "../../sites/#{site.name}/blocks/#{block.block_type.field_type}", :locals => options2)
183
185
  rescue ActionView::MissingTemplate
186
+ #Caboose.log("Can't find partial: ../../sites/#{site.name}/blocks/#{block.block_type.field_type}")
184
187
  begin
185
188
  str = view.render(:partial => "caboose/blocks/#{full_name}", :locals => options2)
186
189
  rescue ActionView::MissingTemplate
190
+ #Caboose.log("Can't find partial: caboose/blocks/#{full_name}")
187
191
  begin
188
192
  str = view.render(:partial => "caboose/blocks/#{block.block_type.name}", :locals => options2)
189
193
  rescue ActionView::MissingTemplate
194
+ #Caboose.log("Can't find partial: caboose/blocks/#{block.block_type.name}")
190
195
  begin
191
196
  str = view.render(:partial => "caboose/blocks/#{block.block_type.field_type}", :locals => options2)
192
197
  rescue Exception => ex
198
+ #Caboose.log("Can't find partial: caboose/blocks/#{block.block_type.field_type}")
193
199
  str = "<p class='note error'>#{self.block_message(block, ex)}</p>"
194
200
  end
195
201
  rescue Exception => ex
@@ -1,14 +1,14 @@
1
1
 
2
2
  class Caboose::BlockType < ActiveRecord::Base
3
3
  self.table_name = "block_types"
4
-
5
- belongs_to :site, :class_name => 'Caboose::Site'
4
+
6
5
  belongs_to :default_child_block_type, :foreign_key => 'default_child_block_type_id', :class_name => 'Caboose::BlockType'
7
6
  belongs_to :block_type_category
8
7
  belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType'
9
- has_many :children, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType', :dependent => :destroy
10
- attr_accessible :id,
11
- :site_id,
8
+ has_many :children, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType', :dependent => :destroy
9
+ has_many :sites, :through => :block_type_site_memberships
10
+ has_many :block_type_site_memberships
11
+ attr_accessible :id,
12
12
  :parent_id,
13
13
  :name,
14
14
  :description,
@@ -106,4 +106,33 @@ class Caboose::BlockType < ActiveRecord::Base
106
106
  end
107
107
 
108
108
  end
109
+
110
+ def toggle_site(site_id, value)
111
+ if value.to_i > 0
112
+ self.add_to_site(site_id)
113
+ else
114
+ self.remove_from_site(site_id)
115
+ end
116
+ end
117
+
118
+ def add_to_site(site_id)
119
+ if site_id == 'all'
120
+ Caboose::BlockTypeSiteMembership.where(:block_type_id => self.id).destroy_all
121
+ Caboose::Site.reorder(:name).all.each do |site|
122
+ Caboose::BlockTypeSiteMembership.create(:block_type_id => self.id, :site_id => site.id)
123
+ end
124
+ else
125
+ if !Caboose::BlockTypeSiteMembership.where(:block_type_id => self.id, :site_id => site_id.to_i).exists?
126
+ Caboose::BlockTypeSiteMembership.create(:block_type_id => self.id, :site_id => site_id.to_i)
127
+ end
128
+ end
129
+ end
130
+
131
+ def remove_from_site(site_id)
132
+ if site_id == 'all'
133
+ Caboose::BlockTypeSiteMembership.where(:block_type_id => self.id).destroy_all
134
+ else
135
+ Caboose::BlockTypeSiteMembership.where(:block_type_id => self.id, :site_id => site_id.to_i).destroy_all
136
+ end
137
+ end
109
138
  end
@@ -0,0 +1,6 @@
1
+ class Caboose::BlockTypeSiteMembership < ActiveRecord::Base
2
+ self.table_name = "block_type_site_memberships"
3
+ belongs_to :site
4
+ belongs_to :block_type
5
+ attr_accessible :id, :site_id, :block_type_id
6
+ end
@@ -103,8 +103,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
103
103
  [ :file , :attachment ],
104
104
  [ :image , :attachment ]
105
105
  ],
106
- Caboose::BlockType => [
107
- [ :site_id , :integer ],
106
+ Caboose::BlockType => [
108
107
  [ :parent_id , :integer ],
109
108
  [ :name , :string ],
110
109
  [ :description , :string ],
@@ -127,6 +126,10 @@ class Caboose::Schema < Caboose::Utilities::Schema
127
126
  [ :share , :boolean , { :default => true }],
128
127
  [ :downloaded , :boolean , { :default => false }]
129
128
  ],
129
+ Caboose::BlockTypeSiteMembership => [
130
+ [ :site_id , :integer ],
131
+ [ :block_type_id , :integer ]
132
+ ],
130
133
  Caboose::BlockTypeCategory => [
131
134
  [ :parent_id , :integer ],
132
135
  [ :name , :string ]
@@ -7,8 +7,15 @@ bt = @block_type
7
7
  </div>
8
8
 
9
9
  <h1>Edit Block Type</h1>
10
- <p><div id='blocktype_<%= bt.id %>_description' ></div></p>
10
+
11
11
  <p><div id='blocktype_<%= bt.id %>_name' ></div></p>
12
+ <p><div id='blocktype_<%= bt.id %>_description' ></div></p>
13
+
14
+ <h2>Children</h2>
15
+ <p><a href='/admin/block-types/<%= @block_type.id %>/new'>New Child Block</a></p>
16
+ <div id='block_types'></div>
17
+
18
+ <h2>Advanced</h2>
12
19
  <p><div id='blocktype_<%= bt.id %>_site_id' ></div></p>
13
20
  <p><div id='blocktype_<%= bt.id %>_parent_id' ></div></p>
14
21
  <p><div id='blocktype_<%= bt.id %>_block_type_category_id' ></div></p>
@@ -27,27 +34,6 @@ bt = @block_type
27
34
  <p><div id='blocktype_<%= bt.id %>_render_function' ></div></p>
28
35
  <p><div id='blocktype_<%= bt.id %>_options_function' ></div></p>
29
36
 
30
- <h2>Children</h2>
31
- <p><a href='/admin/block-types/<%= @block_type.id %>/new'>New Child Block</a></p>
32
- <% if @block_type.children.count > 0 %>
33
- <table class='data'>
34
- <tr>
35
- <th>Short Name</th>
36
- <th>Long Name</th>
37
- <th>Field Type</th>
38
- </tr>
39
- <% bt.children.each do |bt2| %>
40
- <tr onclick="window.location='/admin/block-types/<%= bt2.id %>/edit';">
41
- <td><%= bt2.name %></td>
42
- <td><%= bt2.description %></td>
43
- <td><%= bt2.field_type %></td>
44
- </tr>
45
- <% end %>
46
- </table><br />
47
- <% else %>
48
- <p>This type of page block doesn't have any fields.</p>
49
- <% end %>
50
-
51
37
  <div id='message'></div>
52
38
  <p>
53
39
  <input type='button' value='< Back' onclick="window.location='/admin/block-types<%= bt.parent_id && bt.parent_id > 0 ? "/#{bt.parent_id}/edit" : '' %>';" />
@@ -89,23 +75,36 @@ function delete_block_type(block_type_id, confirm)
89
75
  });
90
76
  }
91
77
 
92
- function select_icon(icon)
93
- {
94
- $.ajax({
95
- url: '/admin/block-types/<%= @block_type.id %>',
96
- type: 'put',
97
- data: { icon: icon },
98
- success: function(resp) {
99
- $('div.icons a.selected').removeClass('selected');
100
- $('#icon_' + icon).addClass('selected');
101
- }
102
- });
103
- }
104
-
105
78
  $(document).ready(function() {
106
- $('div.icons a').click(function(e) {
107
- e.preventDefault();
108
- select_icon($(this).attr('id').substr(5));
79
+
80
+ var table = new IndexTable({
81
+ form_authenticity_token: '<%= form_authenticity_token %>',
82
+ container: 'block_types',
83
+ base_url: '/admin/block-types',
84
+ refresh_url: '/admin/block-types/json?parent_id=<%= @block_type.id %>',
85
+ allow_bulk_edit: false,
86
+ allow_bulk_delete: false,
87
+ allow_duplicate: false,
88
+ fields: [
89
+ { name: 'parent_id' , sort: 'parent_id' , show: false , bulk_edit: false, nice_name: 'Parent' , type: 'select' , value: function(bt) { return bt.parent_id; }, width: 400, options_url: '/admin/block-types/tree-options' },
90
+ { name: 'name' , sort: 'name' , show: true , bulk_edit: false, nice_name: 'Name' , type: 'text' , value: function(bt) { return bt.name; }, width: 400 },
91
+ { name: 'description' , sort: 'description' , show: true , bulk_edit: false, nice_name: 'Description' , type: 'text' , value: function(bt) { return bt.description; }, width: 400 },
92
+ { name: 'block_type_category_id' , sort: 'block_type_category_id' , show: false , bulk_edit: false, nice_name: 'Category' , type: 'select' , value: function(bt) { return bt.block_type_category_id; }, width: 400, options_url: '/admin/block-type-categories/tree-options' },
93
+ { name: 'is_global' , sort: 'is_global' , show: false , bulk_edit: false, nice_name: 'Global' , type: 'checkbox' , value: function(bt) { return bt.is_global; }, width: 400 },
94
+ { name: 'use_render_function' , sort: 'use_render_function' , show: false , bulk_edit: false, nice_name: 'Use Render Function' , type: 'checkbox' , value: function(bt) { return bt.use_render_function; }, width: 400 },
95
+ { name: 'use_render_function_for_layout' , sort: 'use_render_function_for_layout' , show: false , bulk_edit: false, nice_name: 'Use Render Function for Layout' , type: 'checkbox' , value: function(bt) { return bt.use_render_function_for_layout; }, width: 400 },
96
+ { name: 'allow_child_blocks' , sort: 'allow_child_blocks' , show: false , bulk_edit: false, nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: function(bt) { return bt.allow_child_blocks; }, width: 400 },
97
+ { name: 'default_child_block_type_id' , sort: 'default_child_block_type_id' , show: false , bulk_edit: false, nice_name: 'Default Child Block Type' , type: 'select' , value: function(bt) { return bt.default_child_block_type_id; }, width: 400, options_url: '/admin/block-types/options' },
98
+ { name: 'render_function' , sort: 'render_function' , show: false , bulk_edit: false, nice_name: 'Render Function' , type: 'textarea' , value: function(bt) { return bt.render_function; }, width: 800, height: 200 },
99
+ { name: 'field_type' , sort: 'field_type' , show: false , bulk_edit: false, nice_name: 'Field type' , type: 'select' , value: function(bt) { return bt.field_type; }, width: 400, options_url: '/admin/block-types/field-type-options' },
100
+ { name: 'default' , sort: 'default' , show: false , bulk_edit: false, nice_name: 'Default value' , type: 'text' , value: function(bt) { return bt.default; }, width: 400 },
101
+ { name: 'width' , sort: 'width' , show: false , bulk_edit: false, nice_name: 'Width' , type: 'text' , value: function(bt) { return bt.width; }, width: 400 },
102
+ { name: 'height' , sort: 'height' , show: false , bulk_edit: false, nice_name: 'Height' , type: 'text' , value: function(bt) { return bt.height; }, width: 400 },
103
+ { name: 'fixed_placeholder' , sort: 'fixed_placeholder' , show: false , bulk_edit: false, nice_name: 'Fixed placeholder' , type: 'checkbox' , value: function(bt) { return bt.fixed_placeholder; }, width: 400 },
104
+ { name: 'options_url' , sort: 'options_url' , show: false , bulk_edit: false, nice_name: 'Options URL' , type: 'text' , value: function(bt) { return bt.options_url; }, width: 400 },
105
+ { name: 'options_function' , sort: 'options_function' , show: false , bulk_edit: false, nice_name: 'Options Function' , type: 'textarea' , value: function(bt) { return bt.options_function; }, width: 400, height: 100 },
106
+ { name: 'options' , sort: 'options' , show: false , bulk_edit: false, nice_name: 'Options' , type: 'textarea' , value: function(bt) { return bt.options; }, width: 400, height: 100 }
107
+ ]
109
108
  });
110
109
 
111
110
  m = new ModelBinder({
@@ -113,8 +112,7 @@ $(document).ready(function() {
113
112
  id: <%= @block_type.id %>,
114
113
  update_url: '/admin/block-types/<%= @block_type.id %>',
115
114
  authenticity_token: '<%= form_authenticity_token %>',
116
- attributes: [
117
- { name: 'site_id' , nice_name: 'Site' , type: 'select' , value: <%= raw Caboose.json(bt.site_id ? bt.site_id : -1) %>, width: 400, options_url: '/admin/block-types/site-options' },
115
+ attributes: [
118
116
  { name: 'parent_id' , nice_name: 'Parent' , type: 'select' , value: <%= raw Caboose.json(bt.parent_id) %>, width: 400, options_url: '/admin/block-types/tree-options' },
119
117
  { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(bt.name) %>, width: 400 },
120
118
  { name: 'description' , nice_name: 'Description' , type: 'text' , value: <%= raw Caboose.json(bt.description) %>, width: 400 },
@@ -9,26 +9,41 @@
9
9
  <a href='/admin/block-types/store'>Block Type Store</a> |
10
10
  <a href='/admin/block-types/new'>New Block Type</a>
11
11
  </p>
12
+ <div id='block_types'></div>
12
13
 
13
- <% if (@block_types.count > 0) %>
14
-
15
- <table class='data'>
16
- <tr>
17
- <th>Site</th>
18
- <th>Name</th>
19
- <th>Description</th>
20
- </tr>
21
- <% @block_types.each do |bt| %>
22
- <tr onclick="window.location='/admin/block-types/<%= bt.id %>/edit';">
23
- <td><%= bt.site_id ? (bt.site.description && bt.site.description.strip.length > 0 ? bt.site.description : bt.site.name) : 'Global' %></td>
24
- <td><%= bt.name %></td>
25
- <td><%= bt.description %></td>
26
- </tr>
27
- <% end %>
28
- </table>
29
-
30
- <% else %>
31
-
32
- <p>There are no block types.</p>
14
+ <% content_for :caboose_js do %>
15
+ <%= javascript_include_tag 'caboose/model/all' %>
16
+ <script type='text/javascript'>
33
17
 
18
+ $(document).ready(function() {
19
+ var that = this;
20
+ var table = new IndexTable({
21
+ form_authenticity_token: '<%= form_authenticity_token %>',
22
+ container: 'block_types',
23
+ base_url: '/admin/block-types',
24
+ fields: [
25
+ { name: 'parent_id' , sort: 'parent_id' , show: false , bulk_edit: false, nice_name: 'Parent' , type: 'select' , value: function(bt) { return bt.parent_id; }, width: 400, options_url: '/admin/block-types/tree-options' },
26
+ { name: 'name' , sort: 'name' , show: true , bulk_edit: false, nice_name: 'Name' , type: 'text' , value: function(bt) { return bt.name; }, width: 400 },
27
+ { name: 'description' , sort: 'description' , show: true , bulk_edit: false, nice_name: 'Description' , type: 'text' , value: function(bt) { return bt.description; }, width: 400 },
28
+ { name: 'site_id' , sort: 'site_id' , show: true , bulk_edit: false, nice_name: 'Site' , type: 'checkbox-multiple' , value: function(bt) { return bt.sites ? bt.sites.map(function(s) { return s.id }) : []; }, text: function(bt) { return bt.sites ? bt.sites.map(function(s) { return s.description }).join(', ') : ''; }, width: 400, height: 200, options_url: '/admin/block-types/site-options' },
29
+ { name: 'block_type_category_id' , sort: 'block_type_category_id' , show: false , bulk_edit: false, nice_name: 'Category' , type: 'select' , value: function(bt) { return bt.block_type_category_id; }, width: 400, options_url: '/admin/block-type-categories/tree-options' },
30
+ { name: 'is_global' , sort: 'is_global' , show: false , bulk_edit: false, nice_name: 'Global' , type: 'checkbox' , value: function(bt) { return bt.is_global; }, width: 400 },
31
+ { name: 'use_render_function' , sort: 'use_render_function' , show: false , bulk_edit: false, nice_name: 'Use Render Function' , type: 'checkbox' , value: function(bt) { return bt.use_render_function; }, width: 400 },
32
+ { name: 'use_render_function_for_layout' , sort: 'use_render_function_for_layout' , show: false , bulk_edit: false, nice_name: 'Use Render Function for Layout' , type: 'checkbox' , value: function(bt) { return bt.use_render_function_for_layout; }, width: 400 },
33
+ { name: 'allow_child_blocks' , sort: 'allow_child_blocks' , show: false , bulk_edit: false, nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: function(bt) { return bt.allow_child_blocks; }, width: 400 },
34
+ { name: 'default_child_block_type_id' , sort: 'default_child_block_type_id' , show: false , bulk_edit: false, nice_name: 'Default Child Block Type' , type: 'select' , value: function(bt) { return bt.default_child_block_type_id; }, width: 400, options_url: '/admin/block-types/options' },
35
+ { name: 'render_function' , sort: 'render_function' , show: false , bulk_edit: false, nice_name: 'Render Function' , type: 'textarea' , value: function(bt) { return bt.render_function; }, width: 800, height: 200 },
36
+ { name: 'field_type' , sort: 'field_type' , show: false , bulk_edit: false, nice_name: 'Field type' , type: 'select' , value: function(bt) { return bt.field_type; }, width: 400, options_url: '/admin/block-types/field-type-options' },
37
+ { name: 'default' , sort: 'default' , show: false , bulk_edit: false, nice_name: 'Default value' , type: 'text' , value: function(bt) { return bt.default; }, width: 400 },
38
+ { name: 'width' , sort: 'width' , show: false , bulk_edit: false, nice_name: 'Width' , type: 'text' , value: function(bt) { return bt.width; }, width: 400 },
39
+ { name: 'height' , sort: 'height' , show: false , bulk_edit: false, nice_name: 'Height' , type: 'text' , value: function(bt) { return bt.height; }, width: 400 },
40
+ { name: 'fixed_placeholder' , sort: 'fixed_placeholder' , show: false , bulk_edit: false, nice_name: 'Fixed placeholder' , type: 'checkbox' , value: function(bt) { return bt.fixed_placeholder; }, width: 400 },
41
+ { name: 'options_url' , sort: 'options_url' , show: false , bulk_edit: false, nice_name: 'Options URL' , type: 'text' , value: function(bt) { return bt.options_url; }, width: 400 },
42
+ { name: 'options_function' , sort: 'options_function' , show: false , bulk_edit: false, nice_name: 'Options Function' , type: 'textarea' , value: function(bt) { return bt.options_function; }, width: 400, height: 100 },
43
+ { name: 'options' , sort: 'options' , show: false , bulk_edit: false, nice_name: 'Options' , type: 'textarea' , value: function(bt) { return bt.options; }, width: 400, height: 100 }
44
+ ]
45
+ });
46
+ });
47
+
48
+ </script>
34
49
  <% end %>
@@ -1,7 +1,12 @@
1
1
  <%
2
2
  text = block.value
3
- if text.nil? || text == ""
4
- text = (empty_text ? "<p>#{empty_text}</p>" : "")
3
+ if text.nil? || text.strip.length == 0
4
+ text = empty_text ? "<p>#{empty_text}</p>" : ""
5
5
  end
6
6
 
7
- %><%= raw text %>
7
+ %>
8
+ <% if editing %>
9
+ <div id='block_<%= block.id %>'><%= raw text %></div>
10
+ <% else %>
11
+ <%= raw text %>
12
+ <% end %>
@@ -46,9 +46,14 @@ end
46
46
  <% if @block.children.count > 0 %>
47
47
  <% @block.children.each do |b| %>
48
48
  <% if b.block_type.field_type != 'block' && b.block_type.field_type != 'richtext' %>
49
- <p><div id='block_<%= b.id %>_value'></div></p>
49
+ <div style='margin-bottom: 10px;'><div id='block_<%= b.id %>_value'></div></div>
50
50
  <% else %>
51
51
  <%
52
+ Caboose.log(b.value)
53
+ Caboose.log(b.name)
54
+ Caboose.log(b.block_type.full_name)
55
+ Caboose.log(b.block_type.name)
56
+ Caboose.log(b.block_type.field_type)
52
57
  str = @block.render(b, {
53
58
  :modal => true,
54
59
  :empty_text => '[Empty, click to edit]',
data/config/routes.rb CHANGED
@@ -181,16 +181,17 @@ Caboose::Engine.routes.draw do
181
181
  get "admin/block-types/field-type-options" => "block_types#admin_field_type_options"
182
182
  get "admin/block-types/tree-options" => "block_types#admin_tree_options"
183
183
  get "admin/block-types/options" => "block_types#admin_options"
184
- get "admin/block-types/new" => "block_types#admin_new"
185
- get "admin/block-types/:id/new" => "block_types#admin_new"
184
+ get "admin/block-types/new" => "block_types#admin_new"
185
+ get "admin/block-types/json" => "block_types#admin_json"
186
+ get "admin/block-types/:id/json" => "block_types#admin_json_single"
187
+ get "admin/block-types/:id/new" => "block_types#admin_new"
186
188
  get "admin/block-types/:id/options" => "block_types#admin_value_options"
187
189
  get "admin/block-types/:id/icon" => "block_types#admin_edit_icon"
188
- get "admin/block-types/:id/edit" => "block_types#admin_edit"
189
- get "admin/block-types/:id" => "block_types#admin_show"
190
- get "admin/block-types" => "block_types#admin_index"
191
- post "admin/block-types" => "block_types#admin_create"
190
+ get "admin/block-types/:id" => "block_types#admin_edit"
192
191
  put "admin/block-types/:id" => "block_types#admin_update"
193
192
  delete "admin/block-types/:id" => "block_types#admin_delete"
193
+ get "admin/block-types" => "block_types#admin_index"
194
+ post "admin/block-types" => "block_types#admin_create"
194
195
 
195
196
  get "admin/block-type-categories/tree-options" => "block_type_categories#admin_tree_options"
196
197
 
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.4.145'
2
+ VERSION = '0.4.146'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.145
4
+ version: 0.4.146
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
@@ -306,6 +306,7 @@ files:
306
306
  - app/models/caboose/block_type.rb
307
307
  - app/models/caboose/block_type_category.rb
308
308
  - app/models/caboose/block_type_icons.rb
309
+ - app/models/caboose/block_type_site_membership.rb
309
310
  - app/models/caboose/block_type_source.rb
310
311
  - app/models/caboose/block_type_summary.rb
311
312
  - app/models/caboose/caboose_plugin.rb