caboose-cms 0.4.59 → 0.4.60

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmNhY2I4YjdjYzk4Nzg3MGM4MWVjMTM3YzFmMjE2Nzc2MThkNWI0Yg==
4
+ ZDc1OWUzYTQ0YTY3MmNhNDAwODJjNTRhM2VjMTBiNTlkOGYxN2M2Nw==
5
5
  data.tar.gz: !binary |-
6
- MjZkOWVlNjAwZTgyY2I4YTUxODBhNjgwMjkxMzQ2NGY0NzQ3MjU0YQ==
6
+ ODNjNmFlNjYxODhjMzJhODVjYjExYmVlYWJiMzA4MGExOGZmYzI4Zg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTEzYzUwODYxZWMyZmM0MDY0YzIwY2Y0MmMxYTgwZDUwODlkMzNjNjdlZDQx
10
- MzUzNDA3MWNiYTQ0ZDQ5ZTljMWRmNDRlMDk0NGIxNzRkMTdlNGZlN2Y1OTM1
11
- YTk0ZWNiZWI4YjRjY2ExNjU4NWM3NjVjZjM2OWUyOTY3NTFlYTM=
9
+ M2E4ZjgzNjg3MjJkNDYwMTY2ZDVjYmI1YjY2M2FhNGNhZGE3M2NlZjJkOGY5
10
+ MTNjNTI0ZWJiMTg3ODk1MzRjMWE2MTEzMmJhYmVlNTk2OWYzNzc3MDQ0ZjQ5
11
+ MjhhNzAzZmMxNjhiMGZkMjFlNGEwZTEyMTcyMjUxNTJiZWViNzQ=
12
12
  data.tar.gz: !binary |-
13
- MTAyZDA4ZGI4MWRmMThiMTIzZjRmYzc0ZmZkNjk0ODdhNmU3M2YzZWUzMTY5
14
- ODQxZTJmNDVhMzRmOTU0NzJlZTQ1YWI4NGI3YmJkM2YwY2Q1NjNjMTM4Njhk
15
- YzQ1YWEzMjcxZjM4Njg4MjhlZDhkOTY3NmQ5NWU3ZGRkM2FjNDE=
13
+ NGMzYzVkZmQ1OTFmNmQ1OWZjOWI0NzJjMmE2MmViZDE1MzI1MDhmZDI5Yzkx
14
+ YmI3ZjhkZDM3MjdkNTEwOTc5NDVlZTQ5MDIzNzQwYzU2YmY3YTkwOTRmM2Jl
15
+ ODRjYmZiNWE4MjJlMjZhOTdmMmViZDNkYmI0ZGQ4MjFhN2UzMDI=
@@ -14,7 +14,7 @@ BlockController.prototype = {
14
14
  for (var thing in options)
15
15
  this[thing] = options[thing];
16
16
 
17
- this.set_block_type_editable();
17
+ //this.set_block_type_editable();
18
18
  this.set_block_value_editable(this.block);
19
19
  this.set_child_blocks_editable();
20
20
  this.set_clickable();
@@ -77,31 +77,43 @@ BlockController.prototype = {
77
77
 
78
78
  /****************************************************************************/
79
79
 
80
- set_block_type_editable: function()
81
- {
82
- var that = this;
83
- var b = this.block;
84
- m = new ModelBinder({
85
- name: 'Block',
86
- id: b.id,
87
- update_url: '/admin/pages/' + b.page_id + '/blocks/' + b.id,
88
- authenticity_token: that.authenticity_token,
89
- attributes: [{
90
- name: 'block_type_id',
91
- nice_name: 'Block type',
92
- type: 'select',
93
- value: b.block_type_id,
94
- text: b.block_type.name,
95
- width: 200,
96
- fixed_placeholder: true,
97
- options_url: '/admin/block-types/options',
98
- after_update: function() { parent.controller.render_blocks(); window.location.reload(true); },
99
- after_cancel: function() { parent.controller.render_blocks(); window.location.reload(true); },
100
- on_load: function() { that.modal.autosize(); }
101
- }]
102
- });
103
- $('#block_' + b.id + '_block_type_id_container').hide();
104
- },
80
+ //set_block_type_editable: function()
81
+ //{
82
+ // var that = this;
83
+ // var b = this.block;
84
+ // m = new ModelBinder({
85
+ // name: 'Block',
86
+ // id: b.id,
87
+ // update_url: '/admin/pages/' + b.page_id + '/blocks/' + b.id,
88
+ // authenticity_token: that.authenticity_token,
89
+ // attributes: [{
90
+ // name: 'block_type_id',
91
+ // nice_name: 'Block type',
92
+ // type: 'select',
93
+ // value: b.block_type_id,
94
+ // text: b.block_type.name,
95
+ // width: 400,
96
+ // fixed_placeholder: true,
97
+ // options_url: '/admin/block-types/options',
98
+ // after_update: function() { parent.controller.render_blocks(); window.location.reload(true); },
99
+ // after_cancel: function() { parent.controller.render_blocks(); window.location.reload(true); },
100
+ // on_load: function() { that.modal.autosize(); }
101
+ // },{
102
+ // name: 'parent_id',
103
+ // nice_name: 'Parent ID',
104
+ // type: 'select',
105
+ // value: b.parent_id,
106
+ // text: b.parent_title,
107
+ // width: 400,
108
+ // fixed_placeholder: true,
109
+ // options_url: '/admin/pages/' + b.page_id + '/block-options',
110
+ // after_update: function() { parent.controller.render_blocks(); },
111
+ // after_cancel: function() { parent.controller.render_blocks(); },
112
+ // on_load: function() { that.modal.autosize(); }
113
+ // }]
114
+ // });
115
+ // $('#advanced').hide();
116
+ //},
105
117
 
106
118
  set_block_value_editable: function(b)
107
119
  {
@@ -77,6 +77,7 @@ module Caboose
77
77
  when 'use_render_function' then bt.use_render_function = v
78
78
  when 'use_render_function_for_layout' then bt.use_render_function_for_layout = v
79
79
  when 'allow_child_blocks' then bt.allow_child_blocks = v
80
+ when 'default_child_block_type_id' then bt.default_child_block_type_id = v
80
81
  when 'name' then bt.name = v
81
82
  when 'field_type' then bt.field_type = v
82
83
  when 'default' then bt.default = v
@@ -18,11 +18,28 @@ module Caboose
18
18
  # GET /admin/pages/:page_id/blocks/new
19
19
  def admin_new
20
20
  return unless user_is_allowed('pages', 'add')
21
+
22
+ if params[:id]
23
+ block_type_id = params[:block_type_id]
24
+ block_type_id = Block.find(params[:id]).block_type.default_child_block_type_id if block_type_id.nil?
25
+ if block_type_id
26
+ b = Block.new
27
+ b.page_id = params[:page_id].to_i
28
+ b.parent_id = params[:id]
29
+ b.block_type_id = block_type_id
30
+ b.sort_order = Block.where(:parent_id => params[:id]).count
31
+ b.save
32
+ b.create_children
33
+ redirect_to "/admin/pages/#{b.page_id}/blocks/#{b.id}/edit"
34
+ return
35
+ end
36
+ end
37
+
21
38
  @page = Page.find(params[:page_id])
22
39
  @block = params[:id] ? Block.find(params[:id]) : Block.new(:page_id => params[:page_id])
23
40
  @after_id = params[:after_id] ? params[:after_id] : nil
24
41
  @before_id = params[:before_id] ? params[:before_id] : nil
25
- render :layout => 'caboose/modal'
42
+ render :layout => 'caboose/modal'
26
43
  end
27
44
 
28
45
  # GET /admin/pages/:page_id/blocks/:id
@@ -149,6 +166,15 @@ module Caboose
149
166
  end
150
167
  end
151
168
 
169
+ # GET /admin/pages/:page_id/blocks/:id/advanced
170
+ def admin_edit_advanced
171
+ return unless user_is_allowed('pages', 'edit')
172
+ @page = Page.find(params[:page_id])
173
+ @block = Block.find(params[:id])
174
+ @block.create_children
175
+ render :layout => 'caboose/modal'
176
+ end
177
+
152
178
  # POST /admin/pages/:page_id/blocks
153
179
  # POST /admin/pages/:page_id/blocks/:id
154
180
  def admin_create
@@ -223,7 +249,9 @@ module Caboose
223
249
  params.each do |k,v|
224
250
  case k
225
251
  #when 'page_id' then b.page_id = v
226
- when 'parent_id' then b.parent_id = v
252
+ when 'parent_id' then
253
+ b.parent_id = v
254
+ b.sort_order = Block.where(:parent_id => v).count
227
255
  when 'block_type_id' then b.block_type_id = v
228
256
  when 'sort_order' then b.sort_order = v
229
257
  when 'name' then b.name = v
@@ -304,10 +332,21 @@ module Caboose
304
332
  if b.sort_order == 0
305
333
  resp.error = "The block is already at the top."
306
334
  else
307
- b2 = Block.where("parent_id = ? and sort_order = ?", b.parent_id, b.sort_order - 1).first
308
- b2.sort_order = b.sort_order
309
- b2.save
310
- b.sort_order = b.sort_order - 1
335
+ b2 = nil
336
+
337
+ new_sort_order = b.sort_order - 1
338
+ while new_sort_order > 0 do
339
+ b2 = Block.where("parent_id = ? and sort_order = ?", b.parent_id, new_sort_order).first
340
+ break if b2
341
+ new_sort_order = new_sort_order - 1
342
+ end
343
+ if b2
344
+ b2.sort_order = new_sort_order + 1
345
+ b2.save
346
+ else
347
+ new_sort_order = 1
348
+ end
349
+ b.sort_order = new_sort_order
311
350
  b.save
312
351
  resp.success = "The block has been moved up successfully."
313
352
  end
@@ -331,7 +331,7 @@ module Caboose
331
331
  page[name.to_sym] = value
332
332
 
333
333
  when 'title', 'menu_title', 'hide', 'layout', 'redirect_url',
334
- 'seo_title', 'meta_description', 'fb_description', 'gp_description', 'canonical_url'
334
+ 'seo_title', 'meta_keywords', 'meta_description', 'fb_description', 'gp_description', 'canonical_url'
335
335
  page[name.to_sym] = value
336
336
 
337
337
  when 'linked_resources'
@@ -482,5 +482,23 @@ module Caboose
482
482
  render :json => { 'uri' => p.uri }
483
483
  end
484
484
 
485
+ # GET /admin/pages/:id/block-options
486
+ def admin_block_options
487
+ return unless user_is_allowed('pages', 'edit')
488
+
489
+ options = []
490
+ Block.where("parent_id is null and page_id = ?", params[:id]).reorder(:sort_order).all.each do |b|
491
+ admin_block_options_helper(options, b, "")
492
+ end
493
+ render :json => options
494
+ end
495
+
496
+ def admin_block_options_helper(options, b, prefix)
497
+ options << { 'value' => b.id, 'text' => "#{prefix}#{b.title}" }
498
+ b.children.each do |b2|
499
+ admin_block_options_helper(options, b2, "#{prefix} - ")
500
+ end
501
+ end
502
+
485
503
  end
486
504
  end
@@ -52,8 +52,8 @@ class Caboose::Block < ActiveRecord::Base
52
52
  end
53
53
 
54
54
  def full_name
55
- return name if parent_id.nil?
56
- return "#{parent.full_name}_#{name}"
55
+ return self.name if parent_id.nil?
56
+ return "#{parent.full_name}_#{self.name}"
57
57
  end
58
58
 
59
59
  def child_value(name)
@@ -161,8 +161,8 @@ class Caboose::Block < ActiveRecord::Base
161
161
  #view = ActionView::Base.new(ActionController::Base.view_paths, options2, )
162
162
  #view = ActionView::Base.new(options2[:view].view_renderer, {}, options2[:view].controller)
163
163
  begin
164
- full_name = block.full_name
165
- full_name = "lksdjflskfjslkfjlskdfjlkjsdf" if full_name.nil? || full_name.length == 0
164
+ full_name = block.block_type.full_name
165
+ full_name = "lksdjflskfjslkfjlskdfjlkjsdf" if full_name.nil? || full_name.length == 0
166
166
  str = view.render(:partial => "caboose/blocks/#{full_name}", :locals => options2)
167
167
  rescue ActionView::MissingTemplate
168
168
  begin
@@ -225,13 +225,22 @@ class Caboose::Block < ActiveRecord::Base
225
225
  return "<div class='new_block_after' id='new_block_after_#{self.id}'>New Block</div>"
226
226
  end
227
227
 
228
+ def title
229
+ str = "#{self.block_type.name}"
230
+ if self.name && self.name.strip.length > 0
231
+ str << " (#{self.name})"
232
+ end
233
+ return str
234
+ end
235
+
228
236
  def js_hash
229
237
  kids = self.children.collect { |b| b.js_hash }
230
- bt = self.block_type
238
+ bt = self.block_type
231
239
  return {
232
240
  'id' => self.id,
233
241
  'page_id' => self.page_id,
234
- 'parent_id' => self.parent_id,
242
+ 'parent_id' => self.parent_id,
243
+ 'parent_title' => self.parent ? self.parent.title : '',
235
244
  'block_type_id' => self.block_type_id,
236
245
  'sort_order' => self.sort_order,
237
246
  'name' => self.name,
@@ -2,6 +2,7 @@
2
2
  class Caboose::BlockType < ActiveRecord::Base
3
3
  self.table_name = "block_types"
4
4
 
5
+ belongs_to :default_child_block_type, :foreign_key => 'default_child_block_type_id', :class_name => 'Caboose::BlockType'
5
6
  belongs_to :block_type_category
6
7
  belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType'
7
8
  has_many :children, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType', :dependent => :destroy
@@ -13,6 +14,7 @@ class Caboose::BlockType < ActiveRecord::Base
13
14
  :use_render_function,
14
15
  :use_render_function_for_layout,
15
16
  :allow_child_blocks,
17
+ :default_child_block_type_id,
16
18
  :render_function,
17
19
  :field_type,
18
20
  :default,
@@ -25,6 +25,7 @@ class Caboose::Page < ActiveRecord::Base
25
25
  :linked_resources,
26
26
  :layout,
27
27
  :seo_title, # 70 chars
28
+ :meta_keywords,
28
29
  :meta_description, # 156 chars
29
30
  :meta_robots, # Multi-select options: none, noindex, nofollow, nosnippet, noodp, noarchive
30
31
  :canonical_url,
@@ -89,6 +89,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
89
89
  [ :use_render_function , :boolean , { :default => false }],
90
90
  [ :use_render_function_for_layout , :boolean , { :default => false }],
91
91
  [ :allow_child_blocks , :boolean , { :default => false }],
92
+ [ :default_child_block_type_id , :integer ],
92
93
  [ :field_type , :string ],
93
94
  [ :default , :text ],
94
95
  [ :width , :integer ],
@@ -160,6 +161,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
160
161
  [ :sort_order , :integer , { :default => 0 }],
161
162
  [ :custom_sort_children , :boolean , { :default => false }],
162
163
  [ :seo_title , :string , { :limit => 70 }],
164
+ [ :meta_keywords , :text ],
163
165
  [ :meta_description , :string , { :limit => 156 }],
164
166
  [ :meta_robots , :string , { :default => 'index, follow' }],
165
167
  [ :canonical_url , :string ],
@@ -7,24 +7,23 @@ 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>
11
- <p><div id='blocktype_<%= bt.id %>_name'></div></p>
12
- <p><div id='blocktype_<%= bt.id %>_parent_id'></div></p>
13
- <p><div id='blocktype_<%= bt.id %>_block_type_category_id'></div></p>
14
- <p><div id='blocktype_<%= bt.id %>_field_type'></div></p>
15
-
16
- <p><div id='blocktype_<%= bt.id %>_default'></div></p>
17
- <p><div id='blocktype_<%= bt.id %>_width'></div></p>
18
- <p><div id='blocktype_<%= bt.id %>_height'></div></p>
19
- <p><div id='blocktype_<%= bt.id %>_fixed_placeholder'></div></p>
20
- <p><div id='blocktype_<%= bt.id %>_options_url'></div></p>
21
- <p><div id='blocktype_<%= bt.id %>_options'></div></p>
22
-
23
- <p><div id='blocktype_<%= bt.id %>_use_render_function'></div></p>
24
- <p><div id='blocktype_<%= bt.id %>_use_render_function_for_layout'></div></p>
25
- <p><div id='blocktype_<%= bt.id %>_allow_child_blocks'></div></p>
26
- <p><div id='blocktype_<%= bt.id %>_render_function'></div></p>
27
- <p><div id='blocktype_<%= bt.id %>_options_function'></div></p>
10
+ <p><div id='blocktype_<%= bt.id %>_description' ></div></p>
11
+ <p><div id='blocktype_<%= bt.id %>_name' ></div></p>
12
+ <p><div id='blocktype_<%= bt.id %>_parent_id' ></div></p>
13
+ <p><div id='blocktype_<%= bt.id %>_block_type_category_id' ></div></p>
14
+ <p><div id='blocktype_<%= bt.id %>_field_type' ></div></p>
15
+ <p><div id='blocktype_<%= bt.id %>_default' ></div></p>
16
+ <p><div id='blocktype_<%= bt.id %>_width' ></div></p>
17
+ <p><div id='blocktype_<%= bt.id %>_height' ></div></p>
18
+ <p><div id='blocktype_<%= bt.id %>_fixed_placeholder' ></div></p>
19
+ <p><div id='blocktype_<%= bt.id %>_options_url' ></div></p>
20
+ <p><div id='blocktype_<%= bt.id %>_options' ></div></p>
21
+ <p><div id='blocktype_<%= bt.id %>_use_render_function' ></div></p>
22
+ <p><div id='blocktype_<%= bt.id %>_use_render_function_for_layout' ></div></p>
23
+ <p><div id='blocktype_<%= bt.id %>_allow_child_blocks' ></div></p>
24
+ <p><div id='blocktype_<%= bt.id %>_default_child_block_type_id' ></div></p>
25
+ <p><div id='blocktype_<%= bt.id %>_render_function' ></div></p>
26
+ <p><div id='blocktype_<%= bt.id %>_options_function' ></div></p>
28
27
 
29
28
  <h2>Children</h2>
30
29
  <p><a href='/admin/block-types/<%= @block_type.id %>/new'>New Child Block</a></p>
@@ -99,6 +98,7 @@ $(document).ready(function() {
99
98
  { name: 'use_render_function' , nice_name: 'Use Render Function' , type: 'checkbox' , value: <%= bt.use_render_function ? 'true' : 'false' %>, width: 400 },
100
99
  { 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 },
101
100
  { name: 'allow_child_blocks' , nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: <%= bt.allow_child_blocks ? 'true' : 'false' %>, width: 400 },
101
+ { name: 'default_child_block_type_id' , nice_name: 'Default Child Block Type' , type: 'select' , value: <%= raw Caboose.json(bt.default_child_block_type_id) %>, text: <%= raw Caboose.json(bt.default_child_block_type) %>, width: 400, options_url: '/admin/block-types/options' },
102
102
  { name: 'render_function' , nice_name: 'Render Function' , type: 'textarea' , value: <%= raw Caboose.json(bt.render_function) %>, width: 800, height: 200 },
103
103
  { name: 'field_type' , nice_name: 'Field type' , type: 'select' , value: <%= raw Caboose.json(bt.field_type) %>, text: <%= raw Caboose.json(bt.field_type) %>, width: 400, options_url: '/admin/block-types/field-type-options' },
104
104
  { name: 'default' , nice_name: 'Default value' , type: 'text' , value: <%= raw Caboose.json(bt.default) %>, width: 400 },
@@ -1,11 +1,11 @@
1
1
  <%
2
- file = block.child('file')
3
- text = block.child('text').value
2
+ file = block.child_value('file')
3
+ text = block.child_value('text')
4
4
 
5
- if editing && file && file.file && file.file.url.include?('missing.png')
5
+ if editing && file && file.url.include?('missing.png')
6
6
  %><div id='block_<%= block.id %>'><p>Please upload a file.</p></div><%
7
- elsif file && file.file
8
- %><p><a href="<%= raw file.file.url %>"><%= raw text %></p><%
7
+ elsif file
8
+ %><div id='block_<%= block.id %>'><p><a href="<%= raw file.url %>"><%= raw text %></a></p></div><%
9
9
  end
10
10
 
11
11
  %>
@@ -0,0 +1,11 @@
1
+ <div id='block_<%= block.id %>'>
2
+ <% if block.children.count > 0 %>
3
+ <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4
+ <% elsif editing %>
5
+ <%= raw empty_text %>
6
+ <% end %>
7
+ <% if editing && modal %>
8
+ <br style='clear: both;' />
9
+ <p><a href='/admin/pages/<%= block.page_id %>/blocks/<%= block.id %>/new'>Add a child block!</a></p>
10
+ <% end %>
11
+ </div>
@@ -0,0 +1,11 @@
1
+ <div id='block_<%= block.id %>'>
2
+ <% if block.children.count > 0 %>
3
+ <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4
+ <% elsif editing %>
5
+ <%= raw empty_text %>
6
+ <% end %>
7
+ <% if editing && modal %>
8
+ <br style='clear: both;' />
9
+ <p><a href='/admin/pages/<%= block.page_id %>/blocks/<%= block.id %>/new'>Add a child block!</a></p>
10
+ <% end %>
11
+ </div>
@@ -0,0 +1,11 @@
1
+ <div id='block_<%= block.id %>'>
2
+ <% if block.children.count > 0 %>
3
+ <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4
+ <% elsif editing %>
5
+ <%= raw empty_text %>
6
+ <% end %>
7
+ <% if editing && modal %>
8
+ <br style='clear: both;' />
9
+ <p><a href='/admin/pages/<%= block.page_id %>/blocks/<%= block.id %>/new'>Add a child block!</a></p>
10
+ <% end %>
11
+ </div>
@@ -8,16 +8,16 @@ crumbs = []
8
8
  b = @block
9
9
  while b
10
10
  href = b.id == @block.id ? "#" : "/admin/pages/#{b.page_id}/blocks/#{b.id}/edit"
11
- onclick = b.id == @block.id ? " onclick=\"$('#block_#{@block.id}_block_type_id_container').slideToggle(100, function() { modal.autosize(); });\"" : ''
11
+ #onclick = b.id == @block.id ? " onclick=\"$('#advanced').slideToggle(100, function() { modal.autosize(); });\"" : ''
12
12
  text = b.name ? "#{b.block_type.description} (#{b.name})" : b.block_type.description
13
- crumbs << "<a href=\"#{href}\"#{onclick}>#{text}</a>"
13
+ #crumbs << "<a href=\"#{href}\"#{onclick}>#{text}</a>"
14
+ crumbs << "<a href=\"#{href}\">#{text}</a>"
14
15
  b = b.parent
15
16
  end
16
17
 
17
18
  %>
18
19
  <!--<h2 style='margin-top: 0; padding-top: 0;'>Edit <%= @block.name ? @block.name : @block.block_type.description %></h2>-->
19
20
  <h2 style='margin-top: 0; padding-top: 0;'><%= raw crumbs.reverse.join(' > ') %></h2>
20
- <p id='block_type_container'><div id='block_<%= @block.id %>_block_type_id'></div></p>
21
21
 
22
22
  <% if @block.block_type.use_render_function_for_layout %>
23
23
  <!-- Start -->
@@ -57,6 +57,7 @@ end
57
57
  <% end %>
58
58
  <input type='button' value='Move Up' onclick="controller.move_up();" />
59
59
  <input type='button' value='Move Down' onclick="controller.move_down();" />
60
+ <input type='button' value='Advanced' onclick="window.location='/admin/pages/<%= @block.page_id %>/blocks/<%= @block.id %>/advanced';" />
60
61
  </p>
61
62
 
62
63
  <% content_for :caboose_css do %>
@@ -86,7 +87,7 @@ $(window).load(function() {
86
87
  %>
87
88
 
88
89
  var controller = false;
89
- $(document).ready(function() {
90
+ $(document).ready(function() {
90
91
  modal = new CabooseModal(800);
91
92
  controller = new BlockController({
92
93
  block: <%= raw Caboose.json(@block.js_hash) %>,
@@ -0,0 +1,78 @@
1
+ <%
2
+ update_on_close = false
3
+ @block.block_type.children.each do |bt|
4
+ update_on_close = true if bt.field_type == 'image' || bt.field_type == 'file'
5
+ end
6
+
7
+ crumbs = []
8
+ b = @block
9
+ while b
10
+ href = b.id == @block.id ? "#" : "/admin/pages/#{b.page_id}/blocks/#{b.id}/edit"
11
+ onclick = b.id == @block.id ? " onclick=\"$('#advanced').slideToggle(100, function() { modal.autosize(); });\"" : ''
12
+ text = b.name ? "#{b.block_type.description} (#{b.name})" : b.block_type.description
13
+ crumbs << "<a href=\"#{href}\"#{onclick}>#{text}</a>"
14
+ b = b.parent
15
+ end
16
+
17
+ %>
18
+ <!--<h2 style='margin-top: 0; padding-top: 0;'>Edit <%= @block.name ? @block.name : @block.block_type.description %></h2>-->
19
+ <h2 style='margin-top: 0; padding-top: 0;'><%= raw crumbs.reverse.join(' > ') %></h2>
20
+ <div id='advanced'>
21
+ <p><div id='block_<%= @block.id %>_block_type_id' ></div></p>
22
+ <p><div id='block_<%= @block.id %>_parent_id' ></div></p>
23
+ </div>
24
+ <div id='message'></div>
25
+ <p>
26
+ <input type='button' value='< Back' onclick="window.location='/admin/pages/<%= @block.page_id %>/blocks/<%= @block.id %>/edit';" />
27
+ <input type='button' value='Close' onclick="<% if update_on_close %>parent.controller.render_blocks();<% end %>modal.close();" />
28
+ </p>
29
+
30
+ <% content_for :caboose_js do %>
31
+ <%= javascript_include_tag "caboose/model/all" %>
32
+ <%= javascript_include_tag "caboose/admin_block_edit" %>
33
+ <script type='text/javascript'>
34
+
35
+ var modal = false;
36
+ $(window).load(function() {
37
+ modal = new CabooseModal(800);
38
+ });
39
+
40
+ var controller = false;
41
+ <% b = @block %>
42
+ $(document).ready(function() {
43
+ modal = new CabooseModal(800);
44
+ m = new ModelBinder({
45
+ name: 'Block',
46
+ id: <%= b.id %>,
47
+ update_url: '/admin/pages/<%= b.page_id %>/blocks/<%= b.id %>',
48
+ authenticity_token: '<%= form_authenticity_token %>',
49
+ attributes: [{
50
+ name: 'block_type_id',
51
+ nice_name: 'Block type',
52
+ type: 'select',
53
+ value: <%= raw Caboose.json(b.block_type_id) %>,
54
+ text: <%= raw Caboose.json(b.block_type.name) %>,
55
+ width: 400,
56
+ fixed_placeholder: true,
57
+ options_url: '/admin/block-types/options',
58
+ after_update: function() { parent.controller.render_blocks(); },
59
+ after_cancel: function() { parent.controller.render_blocks(); },
60
+ on_load: function() { that.modal.autosize(); }
61
+ },{
62
+ name: 'parent_id',
63
+ nice_name: 'Parent ID',
64
+ type: 'select',
65
+ value: <%= raw Caboose.json(b.parent_id) %>,
66
+ text: <%= raw Caboose.json(b.parent ? b.parent.title : '') %>,
67
+ width: 400,
68
+ fixed_placeholder: true,
69
+ options_url: '/admin/pages/<%= b.page_id %>/block-options',
70
+ after_update: function() { parent.controller.render_blocks(); },
71
+ after_cancel: function() { parent.controller.render_blocks(); },
72
+ on_load: function() { that.modal.autosize(); }
73
+ }]
74
+ });
75
+ });
76
+
77
+ </script>
78
+ <% end %>
@@ -2,6 +2,7 @@
2
2
  <%= render :partial => 'caboose/pages/admin_header' %>
3
3
 
4
4
  <p><div id='page_<%= @page.id %>_seo_title'></div></p>
5
+ <p><div id='page_<%= @page.id %>_meta_keywords'></div></p>
5
6
  <p><div id='page_<%= @page.id %>_meta_description'></div></p>
6
7
  <p><div id='page_<%= @page.id %>_meta_robots'></div></p>
7
8
  <p><div id='page_<%= @page.id %>_canonical_url'></div></p>
@@ -24,6 +25,7 @@ $(document).ready(function() {
24
25
  { name: 'seo_title' , nice_name: 'SEO Title' , type: 'text' , value: <%= raw Caboose.json(@page.seo_title) %>, width: 580 },
25
26
  { name: 'meta_robots' , nice_name: 'Meta Robots' , type: 'text' , value: <%= raw Caboose.json(@page.meta_robots) %>, width: 580 },
26
27
  { name: 'canonical_url' , nice_name: 'Canonical URL' , type: 'text' , value: <%= raw Caboose.json(@page.canonical_url) %>, width: 580 },
28
+ { name: 'meta_keywords' , nice_name: 'Meta Keywords' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_keywords) %>, width: 580, height: 80 },
27
29
  { name: 'meta_description' , nice_name: 'Meta Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_description) %>, width: 580, height: 80 },
28
30
  { name: 'fb_description' , nice_name: 'Facebook Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.fb_description) %>, width: 580, height: 80 },
29
31
  { name: 'gp_description' , nice_name: 'Google+ Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.gp_description) %>, width: 580, height: 80 }
data/config/routes.rb CHANGED
@@ -92,11 +92,12 @@ Caboose::Engine.routes.draw do
92
92
 
93
93
  #get "pages" => "pages#index"
94
94
  get "pages/:id" => "pages#show"
95
- get "pages/:id/redirect" => "pages#redirect"
95
+ get "pages/:id/redirect" => "pages#redirect"
96
96
  get "admin/pages/sitemap-options" => "pages#admin_sitemap_options"
97
97
  get "admin/pages/robots-options" => "pages#admin_robots_options"
98
98
  get "admin/pages/format-options" => "pages#admin_content_format_options"
99
99
  get "admin/pages/new" => "pages#admin_new"
100
+ get "admin/pages/:id/block-options" => "pages#admin_block_options"
100
101
  get "admin/pages/:id/uri" => "pages#admin_page_uri"
101
102
  get "admin/pages/:id/delete" => "pages#admin_delete_form"
102
103
  get "admin/pages/:id/sitemap" => "pages#admin_sitemap"
@@ -132,6 +133,7 @@ Caboose::Engine.routes.draw do
132
133
  get "admin/pages/:page_id/blocks/:id/tree" => "blocks#admin_tree"
133
134
  get "admin/pages/:page_id/blocks/:id/render" => "blocks#admin_render"
134
135
  get "admin/pages/:page_id/blocks/:id/edit" => "blocks#admin_edit"
136
+ get "admin/pages/:page_id/blocks/:id/advanced" => "blocks#admin_edit_advanced"
135
137
  put "admin/pages/:page_id/blocks/:id/move-up" => "blocks#admin_move_up"
136
138
  put "admin/pages/:page_id/blocks/:id/move-down" => "blocks#admin_move_down"
137
139
  get "admin/pages/:page_id/blocks/:id" => "blocks#admin_show"
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.4.59'
2
+ VERSION = '0.4.60'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.59
4
+ version: 0.4.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-29 00:00:00.000000000 Z
11
+ date: 2014-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -353,8 +353,12 @@ files:
353
353
  - app/views/caboose/blocks/_layout_right_sidebar_sidebar.html.erb
354
354
  - app/views/caboose/blocks/_render_function.html.erb
355
355
  - app/views/caboose/blocks/_richtext.html.erb
356
+ - app/views/caboose/blocks/_selector_switch_one.html.erb
357
+ - app/views/caboose/blocks/_selector_switch_three.html.erb
358
+ - app/views/caboose/blocks/_selector_switch_two.html.erb
356
359
  - app/views/caboose/blocks/_text.html.erb
357
360
  - app/views/caboose/blocks/admin_edit.html.erb
361
+ - app/views/caboose/blocks/admin_edit_advanced.html.erb
358
362
  - app/views/caboose/blocks/admin_edit_custom.html.erb
359
363
  - app/views/caboose/blocks/admin_edit_h1.html.erb
360
364
  - app/views/caboose/blocks/admin_edit_h2.html.erb