caboose-cms 0.5.64 → 0.5.66

Sign up to get free protection for your applications and to get access to all the features.
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