caboose-cms 0.4.89 → 0.4.90
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
|
-
|
4
|
+
YTliYTBiMjVmMmEwY2NlNTFjYjY1MWI3Y2JmYjk2OWU3NDExMzRiZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjJhYWRjZGUzYWM0ZjcyY2IwYjJmNTAxZDFiOWU4NjllZGQ4MTRjMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTdjMWMxNjcyMTcwYzAwNzk5MDVjNjZhYTE0NzhhZDFhMzJiNmVhZTAwNjNm
|
10
|
+
Zjg1YjljNGUwYzQ2ZDM0MWQyYzJkZGZhMTM5YmFkODkzMGViMzlkZTBkNDlm
|
11
|
+
N2M2MDk1MWY5Nzg0OTRhNDE5YmQ0NGNjNjRkOTZlZmRlMDUzNDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZThjNTdmZTYyNjg1M2FhMjkzNTkzNTA2MmUyZWQwYjliMGVjZTY2NmRlOGVm
|
14
|
+
ODc0MjU0OTIwNjRjMTY1MGY1NmJiYWNkZGE1M2FkMDg4ZWYwZTE1ZTI0ZDE3
|
15
|
+
ZGE5Y2ViOTZkMGIwMjBhMGVmMTA4OWExODY5NDBkZjJkOWM3Mzg=
|
@@ -72,6 +72,7 @@ module Caboose
|
|
72
72
|
when 'parent_id' then bt.parent_id = v
|
73
73
|
when 'name' then bt.name = v
|
74
74
|
when 'description' then bt.description = v
|
75
|
+
when 'is_global' then bt.is_global = v
|
75
76
|
when 'icon' then bt.icon = v
|
76
77
|
when 'block_type_category_id' then bt.block_type_category_id = v
|
77
78
|
when 'render_function' then bt.render_function = v
|
@@ -193,8 +193,8 @@ module Caboose
|
|
193
193
|
b = Block.new
|
194
194
|
b.page_id = params[:page_id].to_i
|
195
195
|
b.parent_id = params[:id] ? params[:id] : nil
|
196
|
-
b.block_type_id = params[:block_type_id]
|
197
|
-
|
196
|
+
b.block_type_id = params[:block_type_id]
|
197
|
+
|
198
198
|
if !params[:index].nil?
|
199
199
|
b.sort_order = params[:index].to_i
|
200
200
|
|
@@ -236,6 +236,11 @@ module Caboose
|
|
236
236
|
|
237
237
|
# Ensure that all the children are created for the block
|
238
238
|
b.create_children
|
239
|
+
|
240
|
+
# Set the global values if necessary
|
241
|
+
if b.block_type.is_global
|
242
|
+
b.get_global_value(@site.id)
|
243
|
+
end
|
239
244
|
|
240
245
|
# Send back the response
|
241
246
|
#resp.block = b
|
@@ -261,10 +266,16 @@ module Caboose
|
|
261
266
|
when 'sort_order' then b.sort_order = v
|
262
267
|
when 'name' then b.name = v
|
263
268
|
when 'value' then
|
264
|
-
|
265
|
-
|
266
|
-
else
|
269
|
+
|
270
|
+
if b.block_type.is_global
|
267
271
|
b.value = v
|
272
|
+
b.update_global_value(v, @site.id)
|
273
|
+
else
|
274
|
+
if b.block_type.field_type == 'richtext' && (b.name.nil? || b.name.strip.length == 0)
|
275
|
+
b = RichTextBlockParser.parse(b, v, request.host_with_port)
|
276
|
+
else
|
277
|
+
b.value = v
|
278
|
+
end
|
268
279
|
end
|
269
280
|
end
|
270
281
|
end
|
data/app/models/caboose/block.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
class Caboose::Block < ActiveRecord::Base
|
3
3
|
self.table_name = "blocks"
|
4
4
|
|
5
|
+
#after_find :get_master_value
|
6
|
+
|
5
7
|
belongs_to :page
|
6
8
|
belongs_to :block_type
|
7
9
|
belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Caboose::Block'
|
@@ -313,5 +315,30 @@ class Caboose::Block < ActiveRecord::Base
|
|
313
315
|
b.log_helper("#{prefix}-")
|
314
316
|
end
|
315
317
|
end
|
318
|
+
|
319
|
+
# Returns the master block for this global block
|
320
|
+
def get_global_value(site_id)
|
321
|
+
return if !self.block_type.is_global
|
322
|
+
return if !Caboose::Block.includes(:page).where("blocks.id <> ? and block_type_id = ? and pages.site_id = ?", self.id, self.block_type_id, site_id).exists?
|
323
|
+
b = Caboose::Block.includes(:page).where("blocks.id <> ? and block_type_id = ? and pages.site_id = ?", self.id, self.block_type_id, site_id).reorder("blocks.id").first
|
324
|
+
self.value = b.value
|
325
|
+
self.save
|
326
|
+
|
327
|
+
self.children.each do |b2|
|
328
|
+
b2.get_global_value(site_id) if b2.block_type.is_global
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
# Updates all the global blocks for the given site
|
333
|
+
def update_global_value(value, site_id)
|
334
|
+
return if !self.block_type.is_global
|
335
|
+
return if !Caboose::Block.includes(:page).where("blocks.id <> ? and block_type_id = ? and pages.site_id = ?", self.id, self.block_type_id, site_id).exists?
|
336
|
+
|
337
|
+
sql = ["update blocks set value = ? where id in (
|
338
|
+
select B.id from blocks B left join pages P on B.page_id = P.id
|
339
|
+
where B.id <> ? and B.block_type_id = ? and P.site_id = ?
|
340
|
+
)", value, self.id, self.block_type_id, site_id]
|
341
|
+
ActiveRecord::Base.connection.execute(ActiveRecord::Base.send(:sanitize_sql_array, sql))
|
342
|
+
end
|
316
343
|
|
317
344
|
end
|
@@ -18,6 +18,7 @@ bt = @block_type
|
|
18
18
|
<p><div id='blocktype_<%= bt.id %>_fixed_placeholder' ></div></p>
|
19
19
|
<p><div id='blocktype_<%= bt.id %>_options_url' ></div></p>
|
20
20
|
<p><div id='blocktype_<%= bt.id %>_options' ></div></p>
|
21
|
+
<p><div id='blocktype_<%= bt.id %>_is_global' ></div></p>
|
21
22
|
<p><div id='blocktype_<%= bt.id %>_use_render_function' ></div></p>
|
22
23
|
<p><div id='blocktype_<%= bt.id %>_use_render_function_for_layout' ></div></p>
|
23
24
|
<p><div id='blocktype_<%= bt.id %>_allow_child_blocks' ></div></p>
|
@@ -127,6 +128,7 @@ $(document).ready(function() {
|
|
127
128
|
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(bt.name) %>, width: 400 },
|
128
129
|
{ name: 'description' , nice_name: 'Description' , type: 'text' , value: <%= raw Caboose.json(bt.description) %>, width: 400 },
|
129
130
|
{ name: 'block_type_category_id' , nice_name: 'Category' , type: 'select' , value: <%= raw Caboose.json(bt.block_type_category_id) %>, width: 400, options_url: '/admin/block-type-categories/tree-options' },
|
131
|
+
{ name: 'is_global' , nice_name: 'Global' , type: 'checkbox' , value: <%= bt.is_global ? 'true' : 'false' %>, width: 400 },
|
130
132
|
{ name: 'use_render_function' , nice_name: 'Use Render Function' , type: 'checkbox' , value: <%= bt.use_render_function ? 'true' : 'false' %>, width: 400 },
|
131
133
|
{ name: 'use_render_function_for_layout' , nice_name: 'Use Render Function for Layout' , type: 'checkbox' , value: <%= bt.use_render_function_for_layout ? 'true' : 'false' %>, width: 400 },
|
132
134
|
{ name: 'allow_child_blocks' , nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: <%= bt.allow_child_blocks ? 'true' : 'false' %>, width: 400 },
|
data/lib/caboose/version.rb
CHANGED