caboose-cms 0.5.64 → 0.5.66

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.
Files changed (63) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/caboose/admin.js +1 -1
  3. data/app/assets/javascripts/caboose/admin_edit_order.js +724 -0
  4. data/app/assets/javascripts/caboose/cart2.js +4 -4
  5. data/app/assets/javascripts/caboose/model/index_table.js +122 -80
  6. data/app/assets/stylesheets/caboose/admin_main.css +8 -0
  7. data/app/controllers/caboose/application_controller.rb +1 -1
  8. data/app/controllers/caboose/block_type_sources_controller.rb +1 -1
  9. data/app/controllers/caboose/block_types_controller.rb +1 -1
  10. data/app/controllers/caboose/calendars_controller.rb +1 -1
  11. data/app/controllers/caboose/cart_controller.rb +8 -1
  12. data/app/controllers/caboose/checkout_controller.rb +17 -9
  13. data/app/controllers/caboose/line_items_controller.rb +135 -0
  14. data/app/controllers/caboose/order_packages_controller.rb +304 -0
  15. data/app/controllers/caboose/orders_controller.rb +31 -74
  16. data/app/controllers/caboose/pages_controller.rb +2 -1
  17. data/app/controllers/caboose/product_images_controller.rb +11 -0
  18. data/app/controllers/caboose/products_controller.rb +25 -8
  19. data/app/controllers/caboose/shipping_addresses_controller.rb +46 -0
  20. data/app/controllers/caboose/shipping_packages_controller.rb +125 -54
  21. data/app/controllers/caboose/sites_controller.rb +2 -79
  22. data/app/controllers/caboose/smtp_controller.rb +52 -0
  23. data/app/controllers/caboose/store_controller.rb +94 -0
  24. data/app/controllers/caboose/vendors_controller.rb +25 -4
  25. data/app/models/caboose/address.rb +1 -3
  26. data/app/models/caboose/caboose_plugin.rb +1 -1
  27. data/app/models/caboose/category.rb +18 -0
  28. data/app/models/caboose/core_plugin.rb +21 -19
  29. data/app/models/caboose/order.rb +12 -7
  30. data/app/models/caboose/order_package.rb +5 -2
  31. data/app/models/caboose/order_transaction.rb +25 -0
  32. data/app/models/caboose/page.rb +1 -1
  33. data/app/models/caboose/schema.rb +50 -22
  34. data/app/models/caboose/shipping_calculator.rb +26 -30
  35. data/app/models/caboose/shipping_package.rb +45 -5
  36. data/app/models/caboose/store_config.rb +18 -6
  37. data/app/models/caboose/tax_calculator.rb +6 -5
  38. data/app/views/caboose/blocks/admin_edit.html.erb +1 -1
  39. data/app/views/caboose/line_items/admin_new.html.erb +100 -0
  40. data/app/views/caboose/orders/admin_edit.html.erb +21 -247
  41. data/app/views/caboose/orders/admin_edit_old.html.erb +155 -0
  42. data/app/views/caboose/orders/admin_new.html.erb +8 -23
  43. data/app/views/caboose/products/#Untitled-1# +0 -0
  44. data/app/views/caboose/products/admin_edit_images.html.erb +20 -4
  45. data/app/views/caboose/products/admin_index.html.erb +9 -3
  46. data/app/views/caboose/products/admin_sort.html.erb +138 -142
  47. data/app/views/caboose/roles/index.html.erb +1 -1
  48. data/app/views/caboose/shipping_packages/admin_edit.html.erb +52 -137
  49. data/app/views/caboose/shipping_packages/admin_index.html.erb +56 -19
  50. data/app/views/caboose/sites/_admin_header.html.erb +3 -5
  51. data/app/views/caboose/sites/admin_edit.html.erb +5 -3
  52. data/app/views/caboose/smtp/admin_edit.html.erb +41 -0
  53. data/app/views/caboose/station/index.html.erb +1 -1
  54. data/app/views/caboose/store/admin_edit.html.erb +96 -0
  55. data/app/views/caboose/vendors/admin_edit.html.erb +7 -3
  56. data/app/views/layouts/caboose/_station.html.erb +1 -1
  57. data/config/routes.rb +67 -25
  58. data/lib/caboose/engine.rb +1 -1
  59. data/lib/caboose/version.rb +1 -1
  60. metadata +28 -5
  61. data/app/views/caboose/shipping_packages/admin_new.html.erb +0 -33
  62. data/app/views/caboose/sites/admin_edit_smtp_config.html.erb +0 -51
  63. data/app/views/caboose/sites/admin_edit_store_config.html.erb +0 -77
@@ -19,7 +19,7 @@ Cart.prototype = {
19
19
  $.ajax({
20
20
  url: '/cart/items',
21
21
  success: function(resp) {
22
- that.order = resp.order;
22
+ that.order = resp;
23
23
  that.print();
24
24
  }
25
25
  });
@@ -44,9 +44,9 @@ Cart.prototype = {
44
44
  );
45
45
 
46
46
  $.each(this.order.line_items, function(i, li) {
47
- var v = li.variant;
48
- var img = v.images ? v.images[0] : (p.featured_image ? p.featured_image : false);
49
- console.log(img);
47
+ var v = li.variant;
48
+ var p = v.product;
49
+ var img = v.images ? v.images[0] : (p.featured_image ? p.featured_image : false);
50
50
  img = img ? $('<img/>').attr('src', img.urls.tiny) : '&nbsp;';
51
51
 
52
52
  tbody.append($('<tr/>')
@@ -170,7 +170,7 @@ IndexTable.prototype = {
170
170
  this.parse_querystring();
171
171
 
172
172
  var that = this;
173
- var $el = $('#' + this.container + '_columns').length > 0 ? $('#' + this.container + '_table_container') : $('#' + this.container);
173
+ var $el = $('#' + this.container + '_table_container').length > 0 ? $('#' + this.container + '_table_container') : $('#' + this.container);
174
174
  $el.html("<p class='loading'>Refreshing...</p>");
175
175
  $.ajax({
176
176
  url: that.refresh_url,
@@ -214,52 +214,66 @@ IndexTable.prototype = {
214
214
  {
215
215
  var that = this;
216
216
 
217
- if (that.models == null || that.models.length == 0)
217
+ //if (that.models == null || that.models.length == 0)
218
+ //{
219
+ // $('#' + that.container).empty()
220
+ // .append($('<p/>').append(that.new_model_link()))
221
+ // .append($('<div/>').attr('id', that.container + '_new_form_container'))
222
+ // .append($('<p/>').append(that.no_models_text));
223
+ // return;
224
+ //}
225
+
226
+ var model_count = that.models ? that.models.length : 0;
227
+ var table = that.no_models_text;
228
+ var pager_div = '';
229
+
230
+ if (model_count > 0)
218
231
  {
219
- $('#' + that.container).empty()
220
- .append($('<p/>').append(that.new_model_link()))
221
- .append($('<div/>').attr('id', that.container + '_new_form_container'))
222
- .append($('<p/>').append(that.no_models_text));
223
- return;
232
+ var tbody = $('<tbody/>').append(this.table_headers());
233
+ $.each(that.models, function(i, m) {
234
+ tbody.append(that.table_row(m));
235
+ });
236
+ table = $('<table/>').addClass('data').css('margin-bottom', '10px').append(tbody);
237
+ pager_div = this.pager_div();
224
238
  }
225
-
226
- var tbody = $('<tbody/>').append(this.table_headers());
227
- $.each(that.models, function(i, m) {
228
- tbody.append(that.table_row(m));
229
- });
230
- var table = $('<table/>').addClass('data').css('margin-bottom', '10px').append(tbody);
231
- var pager_div = this.pager_div();
232
239
 
233
- if ($('#' + this.container + '_columns').length > 0)
240
+ if ($('#' + this.container + '_table_container').length > 0)
234
241
  {
235
- $('#' + this.container + '_table_container').empty().append(table);
236
- $('#' + this.container + '_pager').empty().append(pager_div);
237
- $('#' + this.container + '_new_form_container').empty();
242
+ $('#' + this.container + '_table_container' ).empty().append(table);
243
+ $('#' + this.container + '_pager' ).empty().append(pager_div);
244
+ $('#' + this.container + '_toggle_columns' ).show();
245
+ $('#' + this.container + '_bulk_delete' ).show();
246
+ $('#' + this.container + '_bulk_edit' ).show();
247
+ $('#' + this.container + '_duplicate' ).show();
238
248
  }
239
249
  else
240
250
  {
241
- var columns = this.column_checkboxes();
242
251
  var controls = $('<p/>');
243
- if (this.allow_bulk_edit ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_edit' ).val('Bulk Edit' ).click(function(e) { that.bulk_edit(); })).append(' ');
244
- if (this.allow_bulk_delete ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_delete').val('Delete' ).click(function(e) { that.bulk_delete(); })).append(' ');
245
- if (this.allow_duplicate ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_duplicate' ).val('Duplicate' ).click(function(e) { that.duplicate(); })).append(' ');
246
- if (this.allow_bulk_import ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_import').val('Bulk Import').click(function(e) { that.bulk_import(); })).append(' ');
247
-
248
- $('#' + that.container).empty()
249
- .append($('<p/>')
250
- .append(that.new_model_link()).append(' | ')
251
- .append($('<a/>').attr('href', '#').html('Show/Hide Columns').click(function(e) { e.preventDefault(); $('#' + that.container + '_columns').slideToggle(); }))
252
- )
253
- .append($('<div/>').attr('id', that.container + '_new_form_container'))
254
- .append($('<div/>').attr('id', that.container + '_columns').append(columns))
255
- .append($('<div/>').attr('id', that.container + '_table_container').append(table))
256
- .append($('<div/>').attr('id', that.container + '_pager').append(pager_div))
252
+ controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_new' ).val(that.new_model_text ).click(function(e) { that.new_form(); })).append(' ');
253
+ controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_toggle_columns' ).val('Show/Hide Columns' ).click(function(e) { that.toggle_columns(); })).append(' ');
254
+ if (this.allow_bulk_edit ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_edit' ).val('Bulk Edit' ).click(function(e) { that.bulk_edit(); })).append(' ');
255
+ if (this.allow_bulk_import ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_import' ).val('Import' ).click(function(e) { that.bulk_import(); })).append(' ');
256
+ if (this.allow_duplicate ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_duplicate' ).val('Duplicate' ).click(function(e) { that.duplicate(); })).append(' ');
257
+ if (this.allow_bulk_delete ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_delete' ).val('Delete' ).click(function(e) { that.bulk_delete(); })).append(' ');
258
+
259
+ var c = $('#' + that.container);
260
+ c.empty()
261
+ .append($('<div/>').attr('id', that.container + '_controls').append(controls))
257
262
  .append($('<div/>').attr('id', that.container + '_message'))
258
- .append(controls);
259
- $('#' + that.container + '_columns').hide();
263
+ .append($('<div/>').attr('id', that.container + '_table_container').append(table))
264
+ .append($('<div/>').attr('id', that.container + '_pager').append(pager_div));
265
+
266
+ if (model_count == 0)
267
+ {
268
+ $('#' + that.container + '_toggle_columns').hide();
269
+ $('#' + that.container + '_bulk_edit' ).hide();
270
+ $('#' + that.container + '_duplicate' ).hide();
271
+ $('#' + that.container + '_bulk_delete' ).hide();
272
+ $('#' + that.container + '_pager' ).hide();
273
+ }
260
274
  }
261
275
 
262
- if (that.quick_edit_model_id)
276
+ if (model_count > 0 && that.quick_edit_model_id)
263
277
  {
264
278
  var m = that.model_for_id(that.quick_edit_model_id);
265
279
  $.each(that.fields, function(j, field) {
@@ -408,7 +422,7 @@ IndexTable.prototype = {
408
422
  column_checkboxes: function()
409
423
  {
410
424
  var that = this;
411
- var div = $('<div/>').attr('id', that.container + '_columns');
425
+ var div = $('<div/>').attr('id', that.container + '_columns').addClass('note');
412
426
  $.each(this.fields, function(i, field) {
413
427
  var input = $('<input/>')
414
428
  .attr('type', 'checkbox')
@@ -465,24 +479,31 @@ IndexTable.prototype = {
465
479
  cols[col] = checked;
466
480
  localStorage.setItem(this.container + '_cols', JSON.stringify(cols));
467
481
  },
482
+
483
+ toggle_columns: function()
484
+ {
485
+ var that = this;
486
+ var columns = that.column_checkboxes();
487
+ that.show_message(columns, 'toggle_columns');
488
+ },
468
489
 
469
490
  bulk_edit: function()
470
491
  {
471
492
  var that = this;
472
493
  if (this.model_ids.length == 0)
473
- {
474
- $('#' + that.container + '_message').html("<p class='note error'>Please select at least one row.</p>");
494
+ {
495
+ that.show_message("<p class='note error'>Please select at least one row.</p>", 'bulk_edit_select_row');
475
496
  return;
476
497
  }
477
- var div = $('<div/>')
498
+ var div = $('<div/>').addClass('note')
478
499
  .append($('<h2/>').html('Bulk Edit Jobs'))
479
500
  .append($('<p/>').html('Any change you make the fields below will apply to all the selected rows.'));
480
501
  $.each(this.fields, function(i, field) {
481
502
  if (field.bulk_edit == true)
482
503
  div.append($('<p/>').append($('<div/>').attr('id', 'bulkmodel_1_' + field.name)));
483
504
  });
484
- div.append($('<input/>').attr('type','button').val('Finished').click(function() { $('#' + that.container + '_message').empty(); }));
485
- $('#' + that.container + '_message').empty().append(div);
505
+ div.append($('<p/>').append($('<input/>').attr('type','button').val('Finished').click(function() { that.hide_message(); })));
506
+ that.show_message(div, 'bulk_edit_form');
486
507
 
487
508
  var params = this.model_ids.map(function(model_id) { return 'model_ids[]=' + model_id; }).join('&');
488
509
  var attribs = [];
@@ -511,7 +532,7 @@ IndexTable.prototype = {
511
532
  var that = this;
512
533
  if (this.model_ids.length == 0)
513
534
  {
514
- $('#' + that.container + '_message').html("<p class='note error'>Please select at least one row.</p>");
535
+ that.show_message("<p class='note error'>Please select at least one row.</p>", 'bulk_delete_select_row');
515
536
  return;
516
537
  }
517
538
  if (!confirm)
@@ -519,8 +540,8 @@ IndexTable.prototype = {
519
540
  var p = $('<p/>').addClass('note').addClass('warning')
520
541
  .append('Are you sure you want to delete the selected rows? ')
521
542
  .append($('<input/>').attr('type','button').val('Yes').click(function() { that.bulk_delete(true); })).append(' ')
522
- .append($('<input/>').attr('type','button').val('No').click(function() { $('#' + that.container + '_message').empty(); }));
523
- $('#' + that.container + '_message').empty().append(p);
543
+ .append($('<input/>').attr('type','button').val('No').click(function() { that.hide_message(); }));
544
+ that.show_message(p, 'bulk_delete_confirm');
524
545
  return;
525
546
  }
526
547
  var params = this.model_ids.map(function(model_id) { return 'model_ids[]=' + model_id; }).join('&');
@@ -532,7 +553,7 @@ IndexTable.prototype = {
532
553
  model_ids: that.model_ids
533
554
  },
534
555
  success: function(resp) {
535
- $('#' + that.container + '_message').empty();
556
+ that.hide_message();
536
557
  that.refresh();
537
558
  }
538
559
  });
@@ -555,16 +576,16 @@ IndexTable.prototype = {
555
576
  .append($('<textarea/>').attr('id', that.container + '_bulk_import_data').attr('placeholder', 'CSV Data').css('width', '100%').css('height', '150px'))
556
577
  )
557
578
  .append($('<p/>')
558
- .append($('<input/>').attr('type','button').val('Cancel').click(function() { $('#' + that.container + '_message').empty(); })).append(' ')
579
+ .append($('<input/>').attr('type','button').val('Cancel').click(function() { that.hide_message(); })).append(' ')
559
580
  .append($('<input/>').attr('type','button').val('Add').click(function() { that.bulk_import($('#' + that.container + '_bulk_import_data').val(), $('#' + that.container + '_bulk_import_data_url').val()); }))
560
581
  );
561
582
  if (that.bulk_import_fields)
562
583
  div.append($('<p/>').css('font-size', '75%').html("Format: " + that.bulk_import_fields.join(', ')));
563
584
 
564
- $('#' + that.container + '_message').empty().append(div);
585
+ that.show_message(div, 'bulk_import_form');
565
586
  return;
566
587
  }
567
- $('#' + that.container + '_message').empty().append("<p class='loading'>Adding...</p>");
588
+ that.show_message("<p class='loading'>Adding...</p>", 'bulk_import_loading');
568
589
  $.ajax({
569
590
  url: this.bulk_import_url,
570
591
  type: 'post',
@@ -574,11 +595,11 @@ IndexTable.prototype = {
574
595
  },
575
596
  success: function(resp) {
576
597
  if (resp.error)
577
- $('#' + that.container + '_message').html("<p class='note error'>" + resp.error + "</p>");
598
+ that.show_message("<p class='note error'>" + resp.error + "</p>", 'bulk_import_error');
578
599
  else
579
600
  {
580
- $('#' + that.container + '_message').html("<p class='note success'>Added successfully.</p>");
581
- setTimeout(function() { $('#' + that.container + '_message').empty(); }, 3000);
601
+ that.show_message("<p class='note success'>Added successfully.</p>", 'bulk_import_success');
602
+ setTimeout(function() { that.hide_message(); }, 3000);
582
603
  that.refresh();
583
604
  }
584
605
  }
@@ -599,13 +620,13 @@ IndexTable.prototype = {
599
620
  if (this.model_ids.length == 0)
600
621
  {
601
622
  var p = $('<p/>').addClass('note error').html("Please select a row.");
602
- $('#' + that.container + '_message').empty().append(p);
623
+ that.show_message(p, 'duplicate_select_row');
603
624
  return;
604
625
  }
605
626
  if (this.model_ids.length > 1)
606
627
  {
607
628
  var p = $('<p/>').addClass('note error').html("Please select a single row.");
608
- $('#' + that.container + '_message').empty().append(p);
629
+ that.show_message(p, 'duplicate_select_single_row');
609
630
  return;
610
631
  }
611
632
  if (!count)
@@ -614,19 +635,19 @@ IndexTable.prototype = {
614
635
  .append('How many times do you want this duplicated?')
615
636
  .append($('<input/>').attr('type', 'text').attr('id', 'count').css('width', '50'))
616
637
  .append('<br />')
617
- .append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { $('#' + that.container + '_message').empty(); })).append(' ')
638
+ .append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { that.hide_message(); })).append(' ')
618
639
  .append($('<input/>').attr('type', 'button').val('Duplicate').click(function(e) { that.duplicate($('#count').val()); return false; }));
619
- $('#' + that.container + '_message').empty().append(p);
640
+ that.show_message(p, 'duplicate_form');
620
641
  return;
621
642
  }
622
- $('#' + that.container + '_message').html("<p class='loading'>Duplicating...</p>");
643
+ that.show_message("<p class='loading'>Duplicating...</p>", 'duplicate_loading');
623
644
  $.ajax({
624
645
  url: that.duplicate_url(that.model_ids[0], that),
625
646
  type: 'post',
626
647
  data: { count: count },
627
648
  success: function(resp) {
628
- if (resp.error) $('#' + that.container + '_message').html("<p class='note error'>" + resp.error + "</p>");
629
- if (resp.success) { $('#' + that.container + '_message').empty(); that.refresh(); }
649
+ if (resp.error) that.show_message("<p class='note error'>" + resp.error + "</p>", 'duplicate_error');
650
+ if (resp.success) { that.hide_message(); that.refresh(); }
630
651
  }
631
652
  });
632
653
  },
@@ -740,34 +761,51 @@ IndexTable.prototype = {
740
761
  return $('<a/>').attr('href', '#').html(that.new_model_text).click(function(e) { e.preventDefault(); that.new_form(); });
741
762
  },
742
763
 
743
- new_form: function()
744
- {
764
+ hide_message: function() {
765
+ var that = this;
766
+ $('#' + that.container + '_message').slideUp(function() { $('#' + that.container + '_message').empty().css('margin-bottom', 0); });
767
+ that.current_message = false
768
+ },
769
+
770
+ current_message: false,
771
+ show_message: function(el, name) {
745
772
  var that = this;
746
- if (!$('#' + that.container + '_new_form_container').is(':empty'))
773
+ if (that.current_message == name)
747
774
  {
748
- $('#' + that.container + '_new_form_container').slideUp(function() {
749
- $('#' + that.container + '_new_form_container').empty();
750
- });
775
+ $('#' + that.container + '_message').slideUp(function() { $('#' + that.container + '_message').empty().css('margin-bottom', 0); });
776
+ that.current_message = false;
751
777
  return;
752
- }
753
-
778
+ }
779
+ if (!$('#' + that.container + '_message').is(':empty'))
780
+ {
781
+ $('#' + that.container + '_message').slideUp(function() { $('#' + that.container + '_message').empty().append(el).css('margin-bottom', '10px').slideDown(); });
782
+ that.current_message = name;
783
+ return;
784
+ }
785
+ else
786
+ {
787
+ $('#' + that.container + '_message').hide().empty().append(el).css('margin-bottom', '10px').slideDown();
788
+ that.current_message = name;
789
+ }
790
+ },
791
+
792
+ new_form: function()
793
+ {
794
+ var that = this;
754
795
  var form = $('<form/>').attr('id', 'new_form')
755
796
  .append($('<input/>').attr('type', 'hidden').attr('name', 'authenticity_token').val(that.form_authenticity_token));
756
797
  $.each(this.new_model_fields, function(i, f) {
757
798
  form.append($('<p/>').append($('<input/>').attr('type', 'text').attr('name', f.name).attr('placeholder', f.nice_name).css('width', '' + f.width + 'px')));
758
799
  });
759
- form
760
- .append($('<div/>').attr('id', that.container + '_new_message'))
761
- .append($('<p>')
762
- .append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { $('#' + that.container + '_new_form_container').empty(); }))
763
- .append(' ')
764
- .append($('<input/>').attr('type', 'submit').val('Add').click(function(e) { that.add_model(); return false; }))
765
- );
766
- $('#' + that.container + '_new_form_container').hide().empty().append(
767
- $('<div/>').addClass('note').css('margin-bottom', '10px')
768
- .append($('<h2/>').css('margin-top', 0).css('padding-top', 0).html(that.new_model_text))
769
- .append(form)
770
- ).slideDown();
800
+ form.append($('<div/>').attr('id', that.container + '_new_message'));
801
+ form.append($('<p>')
802
+ .append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { that.hide_message(); })).append(' ')
803
+ .append($('<input/>').attr('type', 'submit').val('Add').click(function(e) { that.add_model(); return false; }))
804
+ );
805
+ var div = $('<div/>').addClass('note')
806
+ .append($('<h2/>').css('margin-top', 0).css('padding-top', 0).html(that.new_model_text))
807
+ .append(form);
808
+ that.show_message(div);
771
809
  },
772
810
 
773
811
  add_model: function()
@@ -780,7 +818,11 @@ IndexTable.prototype = {
780
818
  data: $('#new_form').serialize(),
781
819
  success: function(resp) {
782
820
  if (resp.error) $('#' + that.container + '_new_message').html("<p class='note error'>" + resp.error + "</p>");
783
- if (resp.redirect || resp.refresh || resp.success) that.refresh();
821
+ if (resp.redirect || resp.refresh || resp.success)
822
+ {
823
+ that.hide_message();
824
+ that.refresh();
825
+ }
784
826
  }
785
827
  });
786
828
  },
@@ -433,3 +433,11 @@ Page Bar Generator
433
433
  #crumbtrail a {
434
434
  color: #fff;
435
435
  }
436
+
437
+ .clearfix:after {
438
+ content: ".";
439
+ visibility: hidden;
440
+ display: block;
441
+ height: 0;
442
+ clear: both;
443
+ }
@@ -47,7 +47,7 @@ module Caboose
47
47
  @logged_in_user = logged_in_user
48
48
 
49
49
  # Initialize the card
50
- init_cart #if Caboose::use_store
50
+ init_cart if @site.use_store
51
51
 
52
52
  before_action
53
53
  end
@@ -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}"
43
+ resp.redirect = "/admin/block-types/store/sources/#{bts.id}/edit"
44
44
  render :json => resp
45
45
  end
46
46
 
@@ -27,7 +27,7 @@ module Caboose
27
27
  end
28
28
  pager = Caboose::Pager.new(params, h, {
29
29
  'model' => 'Caboose::BlockType',
30
- 'sort' => 'description',
30
+ 'sort' => 'name',
31
31
  'desc' => 'false',
32
32
  'base_url' => "/admin/block-types",
33
33
  'items_per_page' => 10,
@@ -13,7 +13,7 @@ module Caboose
13
13
  return if !user_is_allowed('calendars', 'view')
14
14
  render :file => 'caboose/extras/error_invalid_site' and return if @site.nil?
15
15
 
16
- @calendars = Calendar.reorder(:name).all
16
+ @calendars = Calendar.where(:site_id => @site.id).reorder(:name).all
17
17
  render :layout => 'caboose/admin'
18
18
  end
19
19
 
@@ -7,7 +7,14 @@ module Caboose
7
7
 
8
8
  # GET /cart/items
9
9
  def list
10
- render :json => { :order => @order }
10
+ render :json => @order.as_json(:include => [
11
+ { :line_items => { :include => { :variant => { :include => :product }}}},
12
+ { :order_packages => { :include => [:shipping_package, :shipping_method] }},
13
+ :customer,
14
+ :shipping_address,
15
+ :billing_address,
16
+ :order_transactions
17
+ ])
11
18
  end
12
19
 
13
20
  # GET /cart/item-count
@@ -237,15 +237,23 @@ module Caboose
237
237
  def authnet_relay
238
238
  Caboose.log("Authorize.net relay, order #{params[:x_invoice_id]}")
239
239
 
240
- order = Caboose::Order.find(params[:x_invoice_num])
241
- order.transaction_id = params[:x_trans_id] if params[:x_trans_id]
242
- success = params[:x_response_code] && params[:x_response_code] == '1'
240
+ order = Caboose::Order.find(params[:x_invoice_num])
241
+ ot = Caboose::OrderTransaction.new(
242
+ :order_id => order.id,
243
+ :date_processed => DateTime.now.utc,
244
+ :transaction_type => Caboose::OrderTransaction::TYPE_AUTHORIZE
245
+ )
246
+ ot.success = params[:x_response_code] && params[:x_response_code] == '1'
247
+ ot.transaction_id = params[:x_trans_id] if params[:x_trans_id]
248
+ ot.auth_code = params[:x_auth_code] if params[:x_auth_code]
249
+ ot.response_code = params[:x_response_code] if params[:x_response_code]
250
+ ot.amount = order.total
251
+ ot.save
243
252
 
244
- if success
253
+ error = nil
254
+ if ot.success
245
255
  order.financial_status = 'authorized'
246
256
  order.status = 'pending'
247
- order.date_authorized = DateTime.now
248
- order.auth_amount = order.total
249
257
 
250
258
  # Send out emails
251
259
  OrdersMailer.customer_new_order(order).deliver
@@ -254,14 +262,14 @@ module Caboose
254
262
  # Emit order event
255
263
  Caboose.plugin_hook('order_authorized', order)
256
264
  else
257
- order.financial_status = 'unauthorized'
265
+ order.financial_status = 'unauthorized'
258
266
  error = "There was a problem processing your payment."
259
267
  end
260
-
268
+
261
269
  order.save
262
270
 
263
271
  @url = params[:x_after_relay]
264
- @url << (success ? "?success=1" : "?error=#{error}")
272
+ @url << (ot.success ? "?success=1" : "?error=#{error}")
265
273
 
266
274
  render :layout => false
267
275
  end