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
- MjNiMTkxYzhhODU2NWVlMWFhZjIyZjhkYWNmMDNhYmRkZDE3NjY0MA==
4
+ YTliYTBiMjVmMmEwY2NlNTFjYjY1MWI3Y2JmYjk2OWU3NDExMzRiZQ==
5
5
  data.tar.gz: !binary |-
6
- ZjdiYjI3MDBlOTkwNWE2YWIzOTIzYTdjNjJkNGJjNGUxZGU5ODdkYw==
6
+ MjJhYWRjZGUzYWM0ZjcyY2IwYjJmNTAxZDFiOWU4NjllZGQ4MTRjMg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YjViOGZhMjdkNTdlMGJlZWM0MWYwNmY2MmIzMmI5YzI0YTJhODEwYjUyZmQ1
10
- ZTU5OWZmZmIzMzFjMDIxMjQwZTU3MmFlNTYxMGEyZjU2ZWRiZjUyYTg5OTI3
11
- NzBkYWNhZTJmMmVlYzVjN2M4NzEyZjFmNTU1ZjllZTVlMTExMTI=
9
+ OTdjMWMxNjcyMTcwYzAwNzk5MDVjNjZhYTE0NzhhZDFhMzJiNmVhZTAwNjNm
10
+ Zjg1YjljNGUwYzQ2ZDM0MWQyYzJkZGZhMTM5YmFkODkzMGViMzlkZTBkNDlm
11
+ N2M2MDk1MWY5Nzg0OTRhNDE5YmQ0NGNjNjRkOTZlZmRlMDUzNDM=
12
12
  data.tar.gz: !binary |-
13
- YmNkZGNlOTAxNzVhMjk0ODliZTlmNjE5ODA2MDhhZDM5MWY0ZjNlMWFhNjkw
14
- M2IzYWM4ZWVhMDBiZWEzNmNjYWVlYTQ5OTBjMzlkZDI5MzI3NjFhMTQ1OGY4
15
- MDE2MDdlYmU2NTBkMzk3NTAyY2NlMjFmNjFlZTExNWQ3NDMyNjg=
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
- if b.block_type.field_type == 'richtext' && (b.name.nil? || b.name.strip.length == 0)
265
- b = RichTextBlockParser.parse(b, v, request.host_with_port)
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
@@ -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 },
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.4.89'
2
+ VERSION = '0.4.90'
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.89
4
+ version: 0.4.90
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry