caboose-cms 0.9.208 → 0.9.209

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c38ca1dd899315b1bb4ea1ef3473b6eff70b26d3a7d1c59665aa61012fcf4c2f
4
- data.tar.gz: 60baa129bba6f0cab07bb699fc727a5b6944e0b0d6abe8fae7ea1c2e7dfe2736
3
+ metadata.gz: 3f240b8f7e43d86233a5fbe560e9ee1050f991d30982dbad188412742619969d
4
+ data.tar.gz: 676146fb8424d3236d64a0373002ea0bf0bba9a84a6d407cfeac607a67b283cb
5
5
  SHA512:
6
- metadata.gz: 991ff197c5e0b4b30f883dab98c71cbada05c2407b0904c97b726182afac86564b16b83ba62624edbb0b4d8e4aad81d343a7bad249dfe76c5f1705841384853a
7
- data.tar.gz: 122b91f53f3899eea5ecffebb57229393540ab427fa305ea9dfb91392c0955b51191e138ff8ade4d60ede8724893bcf4e947dd177624efc2e176dac0a36c346e
6
+ metadata.gz: faf13344ea43cb3262b6b915048c8b8a196e52b33a2bafc9ce62dbbe46f4451e1fa0f628d43d0e01654a19828088d1faff8166eeb5175cda9c60ca0a9475543c
7
+ data.tar.gz: '09efeee1d9f86edb50d910fab362d518a82dd8a124500385f14d520543469dbf232b4e48a70a32e8f2f1eeb1eaf762a4813dc0c34dc61b132d513a288944a167'
@@ -144,7 +144,7 @@ BlockContentController.prototype = {
144
144
 
145
145
  render_block: function(block_id) {
146
146
  var that = this;
147
- // console.log("rendering block " + block_id + "...");
147
+ // console.log("rendering block " + block_id + "...");
148
148
  var url = that.base_url() + '/' + block_id + '/render';
149
149
  that.is_modified();
150
150
  $.ajax({
@@ -88,7 +88,6 @@ var BlockModalController = ModalController.extend({
88
88
  {
89
89
  var separate_children = that.block.block_type.allow_child_blocks && that.block.block_type.default_child_block_type_id;
90
90
  var separate_child_id = separate_children ? that.block.block_type.default_child_block_type_id : false;
91
-
92
91
  $.each(that.block.children, function(i, b) {
93
92
  if (separate_children && b.block_type.id == separate_child_id) return;
94
93
  var div_id = 'block_' + b.id + (that.complex_field_types.indexOf(b.block_type.field_type) == -1 ? '_value' : '');
@@ -127,14 +126,14 @@ var BlockModalController = ModalController.extend({
127
126
  {
128
127
  var that = this;
129
128
  var p = $('<p/>').css('clear', 'both')
130
- .append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Close').click(function() { that.close(); that.parent_controller.render_blocks(); })).append(' ');
131
- if (!that.block.name)
129
+ .append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('close').val('Close').click(function() { that.close(); /* that.parent_controller.render_blocks(); */ })).append(' ');
130
+ if (!that.block.name && that.block.block_type.name.indexOf('_header') < 0)
132
131
  {
133
- p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Delete Block').click(function() { that.delete_block(); })).append(' ');
134
- p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Duplicate Block').click(function() { that.duplicate_block(); })).append(' ');
135
- }
136
- p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Move Up' ).click(function() { that.move_up(); })).append(' ');
137
- p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Move Down' ).click(function() { that.move_down(); })).append(' ');
132
+ p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('delete').val('Delete Block').click(function() { that.delete_block(); })).append(' ');
133
+ p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('duplicate').val('Duplicate Block').click(function() { that.duplicate_block(); })).append(' ');
134
+ p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('moveup').val('Move Up' ).click(function() { that.move_up(); })).append(' ');
135
+ p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('movedown').val('Move Down' ).click(function() { that.move_down(); })).append(' ');
136
+ }
138
137
  //p.append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Advanced' ).attr('id', 'btn_advanced').click(function() { that.print_advanced(); }));
139
138
  $('#modal_controls').empty().append(p);
140
139
  },
@@ -208,7 +207,12 @@ var BlockModalController = ModalController.extend({
208
207
  var that = this;
209
208
  if (that.block.block_type.field_type != 'block' && that.block.children.length == 0)
210
209
  return;
211
- $.each(that.block.children, function(i, b) { if ( b.name != null || that.block.block_type.default_child_block_type_id == b.block_type.id ) { that.render_child_block(b); } });
210
+ $.each(that.block.children, function(i, b) {
211
+ if ( b.name != null || that.block.block_type.default_child_block_type_id == b.block_type.id )
212
+ that.render_child_block(b);
213
+ else
214
+ $("#modal_content #block_" + b.id).remove();
215
+ });
212
216
  },
213
217
 
214
218
  render_child_block: function(b)
@@ -417,7 +421,7 @@ var BlockModalController = ModalController.extend({
417
421
  that.modal(div, 780);
418
422
  return;
419
423
  }
420
- that.autosize("<p class='loading'>Adding block...</p>");
424
+ that.autosize("<p class='note loading'>Adding block...</p>");
421
425
 
422
426
  bt = false;
423
427
  $.ajax({
@@ -463,7 +467,7 @@ var BlockModalController = ModalController.extend({
463
467
  that.autosize(p);
464
468
  return;
465
469
  }
466
- that.autosize("<p class='loading'>Deleting block...</p>");
470
+ that.autosize("<p class='note loading'>Deleting block...</p>");
467
471
  that.parent_controller.delete_block(that.block.id, true);
468
472
  that.close();
469
473
  },
@@ -471,7 +475,7 @@ var BlockModalController = ModalController.extend({
471
475
  duplicate_block: function()
472
476
  {
473
477
  var that = this;
474
- that.autosize("<p class='loading'>Duplicating...</p>");
478
+ that.autosize("<p class='note loading'>Duplicating...</p>");
475
479
  that.parent_controller.duplicate_block(that.block.id);
476
480
  that.autosize("<p class='note success'>Duplicated block.</p>");
477
481
  },
@@ -479,7 +483,7 @@ var BlockModalController = ModalController.extend({
479
483
  move_up: function()
480
484
  {
481
485
  var that = this;
482
- that.autosize("<p class='loading'>Moving up...</p>");
486
+ that.autosize("<p class='note loading'>Moving up...</p>");
483
487
  $.ajax({
484
488
  url: that.block_url(that.block) + '/move-up',
485
489
  type: 'put',
@@ -497,7 +501,7 @@ var BlockModalController = ModalController.extend({
497
501
  move_down: function()
498
502
  {
499
503
  var that = this;
500
- that.autosize("<p class='loading'>Moving down...</p>");
504
+ that.autosize("<p class='note loading'>Moving down...</p>");
501
505
  $.ajax({
502
506
  url: that.block_url(that.block) + '/move-down',
503
507
  type: 'put',
@@ -381,7 +381,7 @@ var BlockModalController = ModalController.extend({
381
381
  that.modal(div, 780);
382
382
  return;
383
383
  }
384
- that.autosize("<p class='loading'>Adding block...</p>");
384
+ that.autosize("<p class='note loading'>Adding block...</p>");
385
385
 
386
386
  bt = false;
387
387
  $.ajax({
@@ -429,7 +429,7 @@ var BlockModalController = ModalController.extend({
429
429
  that.autosize(p);
430
430
  return;
431
431
  }
432
- that.autosize("<p class='loading'>Deleting block...</p>");
432
+ that.autosize("<p class='note loading'>Deleting block...</p>");
433
433
  $.ajax({
434
434
  url: that.block_url(that.block),
435
435
  type: 'delete',
@@ -448,7 +448,7 @@ var BlockModalController = ModalController.extend({
448
448
  duplicate_block: function()
449
449
  {
450
450
  var that = this;
451
- that.autosize("<p class='loading'>Duplicating...</p>");
451
+ that.autosize("<p class='note loading'>Duplicating...</p>");
452
452
  $.ajax({
453
453
  url: that.block_url(that.block) + '/duplicate',
454
454
  type: 'put',
@@ -465,7 +465,7 @@ var BlockModalController = ModalController.extend({
465
465
  move_up: function()
466
466
  {
467
467
  var that = this;
468
- that.autosize("<p class='loading'>Moving up...</p>");
468
+ that.autosize("<p class='note loading'>Moving up...</p>");
469
469
  $.ajax({
470
470
  url: that.block_url(that.block) + '/move-up',
471
471
  type: 'put',
@@ -484,7 +484,7 @@ var BlockModalController = ModalController.extend({
484
484
  move_down: function()
485
485
  {
486
486
  var that = this;
487
- that.autosize("<p class='loading'>Moving down...</p>");
487
+ that.autosize("<p class='note loading'>Moving down...</p>");
488
488
  $.ajax({
489
489
  url: that.block_url(that.block) + '/move-down',
490
490
  type: 'put',
@@ -207,8 +207,10 @@ var MediaModalController = BlockModalController.extend({
207
207
  else if (m.original_name) {
208
208
  var ext = m.original_name.match(/\.[0-9a-z]+$/i);
209
209
  li.addClass('empty');
210
- if (ext && ext.length > 0)
210
+ if (ext && ext.length > 0) {
211
+ li.addClass(ext[0].replace(".","").toLowerCase());
211
212
  li.append($('<img/>').attr('src', that.assets_path + 'caboose/file_types/' + ext[0].replace(".","").toLowerCase() + '.png').addClass('file-icon').attr("width","80").attr("height","80"));
213
+ }
212
214
  }
213
215
 
214
216
  //if (that.selected_media.indexOf(m.id) > -1)
@@ -251,7 +253,7 @@ var MediaModalController = BlockModalController.extend({
251
253
  var d = Date.parse(resp['last_upload_processed']);
252
254
  if (d > that.last_upload_processed) {
253
255
  console.log("new processed image, refreshing");
254
- that.refresh_media();
256
+ that.refresh_media(function() { that.print_media(); });
255
257
  }
256
258
  else {
257
259
  console.log("no new processed images, waiting");
@@ -286,7 +288,7 @@ var MediaModalController = BlockModalController.extend({
286
288
  // }
287
289
 
288
290
  $('#top_controls').empty();
289
- var img_tag = m.media_type == 'image' ? ($('<img/>').attr('id', 'detail_image').attr('src', m.image_urls ? m.image_urls.thumb_url : 'https://cabooseit.s3.amazonaws.com/assets/select_image.png')) : ( $('<p/>').text(m.original_name) );
291
+ var img_tag = m.media_type == 'image' ? ($('<img/>').attr('id', 'detail_image').attr('src', m.image_urls ? m.image_urls.thumb_url : 'https://cabooseit.s3.amazonaws.com/assets/select_image.png')) : ( $('<p/>').addClass("filename").text(m.original_name) );
290
292
  $('#the_modal #media').empty()
291
293
  .append( $("<div />").addClass("img-wrap").append(img_tag) );
292
294
  // .append($('<p/>').append($('<div/>').attr('id', 'media_' + media_id + '_media_category_id' )))
@@ -296,13 +298,13 @@ var MediaModalController = BlockModalController.extend({
296
298
  var select_text = m.media_type == 'image' ? 'Select this Image' : 'Select this File';
297
299
  $('#modal_controls').empty()
298
300
  .append($('<p/>').css('clear', 'both')
299
- .append($('<input/>').attr('type', 'button').addClass('caboose-btn').val(select_text ).click(function(e) { that.select_media(media_id) }))
300
- .append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Back' ).click(function(e) {
301
+ .append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('select').val(select_text ).click(function(e) { that.select_media(media_id) }))
302
+ .append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('back').val('Back' ).click(function(e) {
301
303
  that.print_top_controls();
302
304
  that.print_media();
303
305
  that.print_controls();
304
306
  }))
305
- .append($('<input/>').attr('type', 'button').addClass('caboose-btn').val('Close' ).click(function(e) { that.parent_controller.render_blocks(); that.close(); }))
307
+ // .append($('<input/>').attr('type', 'button').addClass('caboose-btn').addClass('close').val('Close' ).click(function(e) { that.parent_controller.render_blocks(); that.close(); }))
306
308
  );
307
309
 
308
310
  // var m = new ModelBinder({
@@ -36,7 +36,7 @@ var ModalController = Class.extend({
36
36
  var that = this;
37
37
  if (that.before_close) that.before_close();
38
38
  $("#caboose_sidebar_holder").removeClass("visible");
39
- setTimeout(function(){ $("#caboose_sidebar_holder").html("") }, 500);
39
+ setTimeout(function(){ $("#caboose_sidebar_holder").html("") }, 500);
40
40
  },
41
41
 
42
42
  /*****************************************************************************
@@ -145,6 +145,7 @@
145
145
  border: #b5b5b5 1px solid;
146
146
  border-radius: 2px;
147
147
  cursor: pointer;
148
+ overflow: hidden;
148
149
  img {
149
150
  display: none;
150
151
  }
@@ -179,6 +179,7 @@ body.editing .footer-wrapper #footer-msg {
179
179
  display: block;
180
180
  width: 100%;
181
181
  text-align: center;
182
+ padding: 10px;
182
183
  }
183
184
  }
184
185
  h1, h2, h3, h4, h5, h6 {
@@ -187,6 +188,12 @@ body.editing .footer-wrapper #footer-msg {
187
188
  margin-bottom: 5px;
188
189
  color: #252525;
189
190
  }
191
+ h6 { font-size: 14px; }
192
+ h5 { font-size: 15px; }
193
+ h4 { font-size: 16px; }
194
+ h3 { font-size: 17px; }
195
+ h2 { font-size: 18px; }
196
+ h1 { font-size: 19px; }
190
197
  #modal_content {
191
198
  & > div {
192
199
  margin-bottom: 8px;
@@ -232,6 +239,21 @@ body.editing .footer-wrapper #footer-msg {
232
239
  }
233
240
  }
234
241
  }
242
+ .caboose-btn.remove {
243
+ background-size: 11px;
244
+ background-repeat: no-repeat;
245
+ background-position: 8px 7px;
246
+ background-image: url('/assets/caboose/icons/delete.png');
247
+ background-color: #6f3030;
248
+ &:hover { background-color: shade(#6f3030, 20%); }
249
+ }
250
+ .filename {
251
+ background: #ecebe8;
252
+ margin: 0;
253
+ padding: 5px;
254
+ width: 190px;
255
+ display: block;
256
+ }
235
257
  }
236
258
  .mb_container {
237
259
  padding-top: 18px;
@@ -266,22 +288,30 @@ body.editing .footer-wrapper #footer-msg {
266
288
  min-height: 80px;
267
289
  }
268
290
  .mb_bound_textarea_controls {
269
- top: 18px !important;
291
+ top: 0 !important;
270
292
  left: auto !important;
271
- right: 0;
272
- width: 148px;
293
+ right: -2px;
294
+ width: 128px !important;
295
+ & > div {
296
+ width: 128px !important;
297
+ }
273
298
  a {
274
- height: 30px;
299
+ height: 22px;
275
300
  background: #ecebe8;
276
301
  border: 1px solid #c5c5c5;
277
- padding: 6px 0 0 0;
302
+ padding: 0;
278
303
  margin: 0 0 0 3px;
279
- width: 70px;
304
+ width: 60px !important;
305
+ font-size: 12px;
306
+ line-height: 20px;
307
+ &:hover {
308
+ background: #d8d7d6;
309
+ }
280
310
  }
281
311
  }
282
312
  select.mb_fake {
283
313
  top: 18px;
284
- height: 30px !important;
314
+ height: 27px !important;
285
315
  border: 0;
286
316
  width: 100% !important;
287
317
  font-family: 'Roboto' !important;
@@ -351,6 +381,11 @@ body.editing .footer-wrapper #footer-msg {
351
381
  &:hover span.name {
352
382
  opacity: 1;
353
383
  }
384
+ &.pdf, &.doc, &.docx {
385
+ span.name {
386
+ opacity: 1;
387
+ }
388
+ }
354
389
  }
355
390
  }
356
391
  }
@@ -435,6 +470,44 @@ body.editing .footer-wrapper #footer-msg {
435
470
  p {
436
471
  .caboose-btn {
437
472
  margin: 0 0 4px 0;
473
+ background-size: 11px;
474
+ background-repeat: no-repeat;
475
+ background-position: 8px 7px;
476
+ &.select {
477
+ background-image: url('/assets/caboose/icons/right.png');
478
+ background-color: #2f562f;
479
+ &:hover { background-color: shade(#2f562f, 20%); }
480
+ }
481
+ &.back {
482
+ background-image: url('/assets/caboose/icons/left.png');
483
+ background-color: #484848;
484
+ &:hover { background-color: shade(#484848, 20%); }
485
+ }
486
+ &.close {
487
+ background-image: url('/assets/caboose/icons/left.png');
488
+ background-color: #3e3e71;
489
+ &:hover { background-color: shade(#3e3e71, 20%); }
490
+ }
491
+ &.delete {
492
+ background-image: url('/assets/caboose/icons/delete.png');
493
+ background-color: #6f3030;
494
+ &:hover { background-color: shade(#6f3030, 20%); }
495
+ }
496
+ &.duplicate {
497
+ background-image: url('/assets/caboose/icons/copy.png');
498
+ background-color: #2f562f;
499
+ &:hover { background-color: shade(#2f562f, 20%); }
500
+ }
501
+ &.moveup {
502
+ background-image: url('/assets/caboose/icons/up.png');
503
+ background-color: #7d673d;
504
+ &:hover { background-color: shade(#7d673d, 20%); }
505
+ }
506
+ &.movedown {
507
+ background-image: url('/assets/caboose/icons/down.png');
508
+ background-color: #7d673d;
509
+ &:hover { background-color: shade(#7d673d, 20%); }
510
+ }
438
511
  }
439
512
  }
440
513
  }
@@ -130,8 +130,8 @@
130
130
  display: block;
131
131
  overflow: hidden;
132
132
  text-align: center;
133
- // padding: 8px;
134
133
  border: 1px solid #dadada;
134
+ opacity: 1;
135
135
  &.png {
136
136
  background-image: url('/assets/caboose/grid.png');
137
137
  background-size: 16px;
@@ -14,6 +14,30 @@ module Caboose
14
14
  render :json => BlockTypeCategory.tree
15
15
  end
16
16
 
17
+ # @route GET /admin/block-type-categories/new
18
+ def admin_new
19
+ render :layout => 'caboose/admin'
20
+ end
21
+
22
+ # @route POST /admin/block-type-categories
23
+ def admin_create
24
+ render :json => false and return if !logged_in_user.is_super_admin?
25
+ resp = StdClass.new
26
+ if params[:name].blank?
27
+ resp.error = "Name is required."
28
+ else
29
+ par = BlockTypeCategory.where(:name => 'Content').first
30
+ max = BlockTypeCategory.where(:parent_id => par.id).maximum(:sort_order) if par
31
+ btc = BlockTypeCategory.new
32
+ btc.name = params[:name]
33
+ btc.parent_id = par.id if par
34
+ btc.sort_order = max + 1 if max
35
+ btc.save
36
+ resp.redirect = "/admin/block-type-categories/#{btc.id}"
37
+ end
38
+ render :json => resp
39
+ end
40
+
17
41
  # @route GET /admin/block-type-categories/:id
18
42
  def admin_edit
19
43
  redirect_to '/admin' and return if !logged_in_user.is_super_admin?
@@ -32,7 +32,7 @@ $(document).ready(function() {
32
32
  authenticity_token: '<%= form_authenticity_token %>',
33
33
  attributes: [
34
34
  { name: 'name' , nice_name: 'Name', type: 'text' , value: <%= raw Caboose.json(@btc.name) %>, width: 400 },
35
- { name: 'parent_id' , nice_name: 'Parent', type: 'text' , value: <%= raw Caboose.json(@btc.parent_id) %>, width: 400 },
35
+ { name: 'parent_id' , nice_name: 'Parent', type: 'select' , value: <%= raw Caboose.json(@btc.parent_id) %>, options_url: '/admin/block-type-categories/tree-options', width: 400 },
36
36
  { name: 'sort_order' , nice_name: 'Sort Order', type: 'text' , value: <%= raw Caboose.json(@btc.sort_order) %>, width: 400 },
37
37
  { name: 'show_in_sidebar' , nice_name: 'Show in Sidebar', type: 'checkbox' , value: <%= raw Caboose.json(@btc.show_in_sidebar) %>, width: 400 }
38
38
  ]
@@ -20,4 +20,6 @@
20
20
  </ul>
21
21
  </li>
22
22
  <% end %>
23
- </ul>
23
+ </ul>
24
+ <br /><br />
25
+ <a href="/admin/block-type-categories/new" class="caboose-btn">New Category</a>
@@ -0,0 +1,32 @@
1
+
2
+ <h1>New Block Type Category</h1>
3
+
4
+ <p><input type='text' id='name' name='name' placeholder='Name' style="width: 400px;" /></p>
5
+ <div id='message'></div>
6
+ <p><input type='submit' value='Add Block Type Category' onclick='add_btc();' /></p>
7
+
8
+ <% content_for :caboose_js do %>
9
+ <%= javascript_include_tag "caboose/model/all" %>
10
+ <script type='text/javascript'>
11
+
12
+ function add_btc()
13
+ {
14
+ $("#message").html("<p class='note loading'>Adding block type category...</p>");
15
+ $.ajax({
16
+ url: '/admin/block-type-categories',
17
+ type: 'post',
18
+ data: {
19
+ authenticity_token: "<%= form_authenticity_token %>",
20
+ name: $('#name').val(),
21
+ },
22
+ success: function(resp) {
23
+ if (resp.error)
24
+ $("#message").html("<p class='note error'>" + resp.error + "</p>");
25
+ if (resp.redirect)
26
+ window.location = resp.redirect
27
+ }
28
+ });
29
+ }
30
+
31
+ </script>
32
+ <% end %>
@@ -1,7 +1,7 @@
1
1
  <%
2
- btsm = Caboose::BlockTypeSiteMembership.where(:site_id => @site.id).pluq(:block_type_id)
2
+ cats = Caboose::BlockTypeCategory.where(:show_in_sidebar => true).order(:sort_order).all
3
3
  grid = Caboose::BlockType.where(:name => 'flex_grid').first
4
- @block_types = Caboose::BlockType.where(:parent_id => nil, :block_type_category_id => 2).where(:id => btsm).order(:description)
4
+ seen_btids = [0]
5
5
  %>
6
6
 
7
7
  <div class='icons' id='new_blocks_container2'>
@@ -27,12 +27,27 @@ grid = Caboose::BlockType.where(:name => 'flex_grid').first
27
27
  <span class='bname'>5 Column Row</span>
28
28
  </li>
29
29
  <% end %>
30
- <li class='title'><span>Content</span></li>
31
- <% @block_types.each do |block_type| %>
32
- <li class='blocktype bt' id='new_block_<%= block_type.id %>' data-btid='<%= block_type.id %>'>
33
- <span class='icon icon-<%= block_type.icon %>'></span>
34
- <span class='bname'><%= block_type.description %></span>
35
- </li>
30
+ <% cats.each do |cat| %>
31
+ <% block_types = Caboose::BlockType.joins(:sites).where(:parent_id => nil, :block_type_category_id => cat.id).where("sites.id = ?", @site.id).order(:description) %>
32
+ <% next if block_types.count == 0 %>
33
+ <li class='title'><span><%= cat.name %></span></li>
34
+ <% block_types.each do |block_type| %>
35
+ <li class='blocktype bt' id='new_block_<%= block_type.id %>' data-btid='<%= block_type.id %>'>
36
+ <span class='icon icon-<%= block_type.icon %>'></span>
37
+ <span class='bname'><%= block_type.description %></span>
38
+ </li>
39
+ <% seen_btids << block_type.id %>
40
+ <% end %>
41
+ <% end %>
42
+ <% all_bts = Caboose::BlockType.joins(:sites).where(:parent_id => nil, :block_type_category_id => 2).where("sites.id = ?", @site.id).where("block_types.id not in (?)", seen_btids).order(:description) %>
43
+ <% if all_bts.count > 0 %>
44
+ <li class='title'><span>All Blocks</span></li>
45
+ <% all_bts.each do |block_type| %>
46
+ <li class='blocktype bt' id='new_block_<%= block_type.id %>' data-btid='<%= block_type.id %>'>
47
+ <span class='icon icon-<%= block_type.icon %>'></span>
48
+ <span class='bname'><%= block_type.description %></span>
49
+ </li>
50
+ <% end %>
36
51
  <% end %>
37
52
  </ul>
38
53
  </div>
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.9.208'
2
+ VERSION = '0.9.209'
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.9.208
4
+ version: 0.9.209
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -502,6 +502,12 @@ files:
502
502
  - app/assets/images/caboose/file_types/xlsx.png
503
503
  - app/assets/images/caboose/file_types/zip.png
504
504
  - app/assets/images/caboose/grid.png
505
+ - app/assets/images/caboose/icons/copy.png
506
+ - app/assets/images/caboose/icons/delete.png
507
+ - app/assets/images/caboose/icons/down.png
508
+ - app/assets/images/caboose/icons/left.png
509
+ - app/assets/images/caboose/icons/right.png
510
+ - app/assets/images/caboose/icons/up.png
505
511
  - app/assets/images/caboose/loading2.gif
506
512
  - app/assets/images/caboose/loading_black_on_white.gif
507
513
  - app/assets/images/caboose/loading_black_on_yellow.gif