caboose-cms 0.5.15 → 0.5.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +9 -9
- data/app/assets/javascripts/caboose/cart2.js +98 -0
- data/app/assets/javascripts/caboose/model/index_table.js +82 -30
- data/app/assets/javascripts/caboose/model/model_binder.js +4 -4
- data/app/assets/stylesheets/caboose/admin.css +1 -0
- data/app/assets/stylesheets/caboose/admin_main.css +0 -42
- data/app/assets/stylesheets/caboose/cart.scss +41 -0
- data/app/assets/stylesheets/caboose/checkout.css.scss +2 -3
- data/app/assets/stylesheets/caboose/message_boxes.scss +49 -0
- data/app/assets/templates/caboose/cart/add_to_cart.jst.ejs +1 -1
- data/app/controllers/caboose/block_types_controller.rb +3 -1
- data/app/controllers/caboose/cart_controller.rb +30 -23
- data/app/controllers/caboose/checkout_controller.rb +11 -1
- data/app/controllers/caboose/products_controller.rb +28 -14
- data/app/controllers/caboose/stackable_groups_controller.rb +107 -0
- data/app/models/caboose/line_item.rb +20 -6
- data/app/models/caboose/order.rb +2 -1
- data/app/models/caboose/order_package.rb +103 -0
- data/app/models/caboose/product.rb +2 -1
- data/app/models/caboose/schema.rb +45 -3
- data/app/models/caboose/shipping_calculator.rb +101 -60
- data/app/models/caboose/shipping_package.rb +80 -0
- data/app/models/caboose/site.rb +3 -1
- data/app/models/caboose/stackable_group.rb +17 -0
- data/app/models/caboose/tax_calculator.rb +1 -2
- data/app/models/caboose/variant.rb +2 -5
- data/app/views/caboose/cart/index.html.erb +19 -6
- data/app/views/caboose/checkout/_cart.html.erb +49 -52
- data/app/views/caboose/checkout/empty.html.erb +9 -2
- data/app/views/caboose/checkout/step_one.html.erb +2 -3
- data/app/views/caboose/checkout/step_three.html.erb +28 -10
- data/app/views/caboose/checkout/step_two.html.erb +2 -4
- data/app/views/caboose/pages/admin_edit_content.html.erb +1 -1
- data/app/views/caboose/products/admin_index.html.erb +12 -11
- data/app/views/caboose/sites/admin_edit.html.erb +33 -6
- data/app/views/caboose/stackable_groups/admin_index.html.erb +43 -0
- data/config/routes.rb +15 -6
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +7 -1
- metadata +36 -14
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDU5MWI2YTUyYzc5NTg3NDYwOTEzYjJlMTYzMDc2ZGIwOTlkMDA2YQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
YWJkNTI4N2Y3YWZjYTYzYzM1NzgxNTYyYTEwZGI5NDU4ODFlNDU5YQ==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGE2YTExNTVkNjI5YTA3N2RmM2NhYTkxNWU0NjVmZWM3MTYzN2Y3ZDE2MDIy
|
10
|
+
OGRlYTg1ZjU4OGI2OGY0N2RjMjQyZTk5YzgzNjBkMTUwMTdjOTBhMGZiNTdm
|
11
|
+
YTIwODI5NWU5NDhlZjA2OWRhNjllMmE2ODViYTcwYmY2YjRlYjE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NWQ2MzJiNjljYzBiYTQzZDc0YjIwYTgzMDcxMzEzMjNhMjY3ODZhNjIwNDU5
|
14
|
+
NzIwMTVmYTdhMDVlN2NlYWIyODRmMTIwMDA2NjI1MjI1NzdjZjRhZmQwODRj
|
15
|
+
NTU4MjBiYmJjMDg0NWU0MzY0ZDMwOThhMTliZjE5NWZlY2FhNmQ=
|
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
Cart = function(params) { this.init(params); };
|
3
|
+
|
4
|
+
Cart.prototype = {
|
5
|
+
|
6
|
+
order: false,
|
7
|
+
|
8
|
+
init: function(params)
|
9
|
+
{
|
10
|
+
for (var i in params)
|
11
|
+
this[i] = params[i];
|
12
|
+
this.refresh();
|
13
|
+
},
|
14
|
+
|
15
|
+
refresh: function()
|
16
|
+
{
|
17
|
+
var that = this;
|
18
|
+
$('#message').html("<p class='loading'>Getting cart...</p>");
|
19
|
+
$.ajax({
|
20
|
+
url: '/cart/items',
|
21
|
+
success: function(resp) {
|
22
|
+
that.order = resp.order;
|
23
|
+
that.print();
|
24
|
+
}
|
25
|
+
});
|
26
|
+
},
|
27
|
+
|
28
|
+
print: function()
|
29
|
+
{
|
30
|
+
var that = this;
|
31
|
+
if (!this.order || !this.order.line_items || this.order.line_items.length == 0)
|
32
|
+
{
|
33
|
+
$('#cart').html("<p class='note'>You don't have any items in your shopping cart. <a href='/products'>Continue shopping.</a></p>");
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
|
37
|
+
var tbody = $('<tbody/>')
|
38
|
+
.append($('<tr/>')
|
39
|
+
.append($('<th/>').html(' '))
|
40
|
+
.append($('<th/>').html('Item'))
|
41
|
+
.append($('<th/>').html('Unit Price'))
|
42
|
+
.append($('<th/>').html('Quantity'))
|
43
|
+
.append($('<th/>').html('Subtotal'))
|
44
|
+
);
|
45
|
+
|
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);
|
50
|
+
img = img ? $('<img/>').attr('src', img.urls.tiny) : ' ';
|
51
|
+
|
52
|
+
tbody.append($('<tr/>')
|
53
|
+
.append($('<td/>').attr('valign', 'top').append(img))
|
54
|
+
.append($('<td/>').attr('valign', 'top')
|
55
|
+
.append(v.title).append('<br/>')
|
56
|
+
.append($('<a/>').attr('href','#').html('Remove').click(function(e) { e.preventDefault(); that.remove_item(li.id); }))
|
57
|
+
)
|
58
|
+
.append($('<td/>').css('text-align', 'right').html('$' + parseFloat(v.price).toFixed(2)))
|
59
|
+
.append($('<td/>').css('text-align', 'right').append($('<div/>').attr('id', 'lineitem_' + li.id + '_quantity')))
|
60
|
+
.append($('<td/>').css('text-align', 'right').html('$' + (v.price * li.quantity).toFixed(2)))
|
61
|
+
);
|
62
|
+
});
|
63
|
+
tbody.append($('<tr/>')
|
64
|
+
.append($('<td/>').css('text-align', 'right').attr('colspan', 4).html('Subtotal'))
|
65
|
+
.append($('<td/>').css('text-align', 'right').html('$' + parseFloat(that.order.subtotal).toFixed(2)))
|
66
|
+
);
|
67
|
+
$('#cart').empty()
|
68
|
+
.append($('<table/>').append(tbody))
|
69
|
+
.append($('<p/>').addClass('controls')
|
70
|
+
.append($('<input/>').attr('type', 'button').val('Continue Shopping').click(function() { window.location = '/products'; }))
|
71
|
+
.append(' ')
|
72
|
+
.append($('<input/>').attr('type', 'button').val('Checkout').click(function() { window.location = '/checkout'; }))
|
73
|
+
);
|
74
|
+
|
75
|
+
$.each(this.order.line_items, function(i, li) {
|
76
|
+
m = new ModelBinder({
|
77
|
+
name: 'LineItem',
|
78
|
+
id: li.id,
|
79
|
+
update_url: '/cart/' + li.id,
|
80
|
+
authenticity_token: that.form_authenticity_token,
|
81
|
+
attributes: [
|
82
|
+
{ name: 'quantity', nice_name: 'Qty', type: 'text', value: li.quantity, width: 50, fixed_placeholder: false, after_update: function() { that.refresh(); } }
|
83
|
+
]
|
84
|
+
});
|
85
|
+
});
|
86
|
+
},
|
87
|
+
|
88
|
+
remove_item: function(li_id)
|
89
|
+
{
|
90
|
+
var that = this;
|
91
|
+
$.ajax({
|
92
|
+
url: '/cart/' + li_id,
|
93
|
+
type: 'delete',
|
94
|
+
success: function(resp) { that.refresh(); }
|
95
|
+
});
|
96
|
+
}
|
97
|
+
|
98
|
+
};
|
@@ -20,6 +20,9 @@ IndexTable.prototype = {
|
|
20
20
|
// Where to send bulk deletes
|
21
21
|
bulk_delete_url: false,
|
22
22
|
|
23
|
+
// When to send bulk import CSV data
|
24
|
+
bulk_import_url: false,
|
25
|
+
|
23
26
|
// Where to post new models
|
24
27
|
add_url: false,
|
25
28
|
|
@@ -73,8 +76,10 @@ IndexTable.prototype = {
|
|
73
76
|
|
74
77
|
allow_bulk_edit: true,
|
75
78
|
allow_bulk_delete: true,
|
76
|
-
|
77
|
-
|
79
|
+
allow_bulk_import: true,
|
80
|
+
allow_duplicate: true,
|
81
|
+
allow_advanced_edit: true,
|
82
|
+
bulk_import_fields: false,
|
78
83
|
no_models_text: "There are no models right now.",
|
79
84
|
new_model_text: 'New',
|
80
85
|
new_model_fields: [{ name: 'name', nice_name: 'Name', type: 'text', width: 400 }],
|
@@ -236,8 +241,9 @@ IndexTable.prototype = {
|
|
236
241
|
var columns = this.column_checkboxes();
|
237
242
|
var controls = $('<p/>');
|
238
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(' ');
|
239
|
-
if (this.allow_bulk_delete ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_bulk_delete').val('
|
240
|
-
if (this.allow_duplicate ) controls.append($('<input/>').attr('type', 'button').attr('id', this.container + '_duplicate' ).val('Duplicate' ).click(function(e) { that.duplicate(); }));
|
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(' ');
|
241
247
|
|
242
248
|
$('#' + that.container).empty()
|
243
249
|
.append($('<p/>')
|
@@ -465,7 +471,7 @@ IndexTable.prototype = {
|
|
465
471
|
var that = this;
|
466
472
|
if (this.model_ids.length == 0)
|
467
473
|
{
|
468
|
-
$('#
|
474
|
+
$('#' + that.container + '_message').html("<p class='note error'>Please select at least one row.</p>");
|
469
475
|
return;
|
470
476
|
}
|
471
477
|
var div = $('<div/>')
|
@@ -475,8 +481,8 @@ IndexTable.prototype = {
|
|
475
481
|
if (field.bulk_edit == true)
|
476
482
|
div.append($('<p/>').append($('<div/>').attr('id', 'bulkmodel_1_' + field.name)));
|
477
483
|
});
|
478
|
-
div.append($('<input/>').attr('type','button').val('Finished').click(function() { $('#
|
479
|
-
$('#
|
484
|
+
div.append($('<input/>').attr('type','button').val('Finished').click(function() { $('#' + that.container + '_message').empty(); }));
|
485
|
+
$('#' + that.container + '_message').empty().append(div);
|
480
486
|
|
481
487
|
var params = this.model_ids.map(function(model_id) { return 'model_ids[]=' + model_id; }).join('&');
|
482
488
|
var attribs = [];
|
@@ -505,16 +511,16 @@ IndexTable.prototype = {
|
|
505
511
|
var that = this;
|
506
512
|
if (this.model_ids.length == 0)
|
507
513
|
{
|
508
|
-
$('#
|
514
|
+
$('#' + that.container + '_message').html("<p class='note error'>Please select at least one row.</p>");
|
509
515
|
return;
|
510
516
|
}
|
511
517
|
if (!confirm)
|
512
518
|
{
|
513
519
|
var p = $('<p/>').addClass('note').addClass('warning')
|
514
520
|
.append('Are you sure you want to delete the selected rows? ')
|
515
|
-
.append($('<input/>').attr('type','button').val('Yes').click(function() { that.bulk_delete(true); }))
|
516
|
-
.append($('<input/>').attr('type','button').val('No').click(function() { $('#
|
517
|
-
$('#
|
521
|
+
.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);
|
518
524
|
return;
|
519
525
|
}
|
520
526
|
var params = this.model_ids.map(function(model_id) { return 'model_ids[]=' + model_id; }).join('&');
|
@@ -526,12 +532,59 @@ IndexTable.prototype = {
|
|
526
532
|
model_ids: that.model_ids
|
527
533
|
},
|
528
534
|
success: function(resp) {
|
529
|
-
$('#
|
535
|
+
$('#' + that.container + '_message').empty();
|
530
536
|
that.refresh();
|
531
537
|
}
|
532
538
|
});
|
533
539
|
},
|
534
540
|
|
541
|
+
bulk_import: function(data, data_url)
|
542
|
+
{
|
543
|
+
var that = this;
|
544
|
+
if (!data && !data_url)
|
545
|
+
{
|
546
|
+
var div = $('<div/>').addClass('note')
|
547
|
+
.append($('<h2/>').html('Bulk Import'))
|
548
|
+
.append($('<p/>').html("Enter either the URL where CSV data can be downloaded or the CSV data.</p>"))
|
549
|
+
.append($('<p/>')
|
550
|
+
.append('CSV Data URL').append('<br />')
|
551
|
+
.append($('<input/>').attr('id', that.container + '_bulk_import_data_url').attr('placeholder', 'CSV Data URL').css('width', '100%'))
|
552
|
+
)
|
553
|
+
.append($('<p/>')
|
554
|
+
.append('CSV Data').append('<br />')
|
555
|
+
.append($('<textarea/>').attr('id', that.container + '_bulk_import_data').attr('placeholder', 'CSV Data').css('width', '100%').css('height', '150px'))
|
556
|
+
)
|
557
|
+
.append($('<p/>')
|
558
|
+
.append($('<input/>').attr('type','button').val('Cancel').click(function() { $('#' + that.container + '_message').empty(); })).append(' ')
|
559
|
+
.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
|
+
);
|
561
|
+
if (that.bulk_import_fields)
|
562
|
+
div.append($('<p/>').css('font-size', '75%').html("Format: " + that.bulk_import_fields.join(', ')));
|
563
|
+
|
564
|
+
$('#' + that.container + '_message').empty().append(div);
|
565
|
+
return;
|
566
|
+
}
|
567
|
+
$('#' + that.container + '_message').empty().append("<p class='loading'>Adding...</p>");
|
568
|
+
$.ajax({
|
569
|
+
url: this.bulk_import_url,
|
570
|
+
type: 'post',
|
571
|
+
data: {
|
572
|
+
csv_data: data,
|
573
|
+
csv_data_url: data_url
|
574
|
+
},
|
575
|
+
success: function(resp) {
|
576
|
+
if (resp.error)
|
577
|
+
$('#' + that.container + '_message').html("<p class='note error'>" + resp.error + "</p>");
|
578
|
+
else
|
579
|
+
{
|
580
|
+
$('#' + that.container + '_message').html("<p class='note success'>Added successfully.</p>");
|
581
|
+
setTimeout(function() { $('#' + that.container + '_message').empty(); }, 3000);
|
582
|
+
that.refresh();
|
583
|
+
}
|
584
|
+
}
|
585
|
+
});
|
586
|
+
},
|
587
|
+
|
535
588
|
model_for_id: function(model_id)
|
536
589
|
{
|
537
590
|
for (var i=0; i<this.models.length; i++)
|
@@ -546,13 +599,13 @@ IndexTable.prototype = {
|
|
546
599
|
if (this.model_ids.length == 0)
|
547
600
|
{
|
548
601
|
var p = $('<p/>').addClass('note error').html("Please select a row.");
|
549
|
-
$('#
|
602
|
+
$('#' + that.container + '_message').empty().append(p);
|
550
603
|
return;
|
551
604
|
}
|
552
605
|
if (this.model_ids.length > 1)
|
553
606
|
{
|
554
607
|
var p = $('<p/>').addClass('note error').html("Please select a single row.");
|
555
|
-
$('#
|
608
|
+
$('#' + that.container + '_message').empty().append(p);
|
556
609
|
return;
|
557
610
|
}
|
558
611
|
if (!count)
|
@@ -561,19 +614,19 @@ IndexTable.prototype = {
|
|
561
614
|
.append('How many times do you want this duplicated?')
|
562
615
|
.append($('<input/>').attr('type', 'text').attr('id', 'count').css('width', '50'))
|
563
616
|
.append('<br />')
|
564
|
-
.append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { $('#
|
617
|
+
.append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { $('#' + that.container + '_message').empty(); })).append(' ')
|
565
618
|
.append($('<input/>').attr('type', 'button').val('Duplicate').click(function(e) { that.duplicate($('#count').val()); return false; }));
|
566
|
-
$('#
|
619
|
+
$('#' + that.container + '_message').empty().append(p);
|
567
620
|
return;
|
568
621
|
}
|
569
|
-
$('#
|
622
|
+
$('#' + that.container + '_message').html("<p class='loading'>Duplicating...</p>");
|
570
623
|
$.ajax({
|
571
624
|
url: that.duplicate_url(that.model_ids[0], that),
|
572
625
|
type: 'post',
|
573
626
|
data: { count: count },
|
574
627
|
success: function(resp) {
|
575
|
-
if (resp.error) $('#
|
576
|
-
if (resp.success) { $('#
|
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(); }
|
577
630
|
}
|
578
631
|
});
|
579
632
|
},
|
@@ -648,8 +701,10 @@ IndexTable.prototype = {
|
|
648
701
|
|
649
702
|
pager_params: function(h)
|
650
703
|
{
|
651
|
-
var that = this;
|
652
|
-
var
|
704
|
+
var that = this;
|
705
|
+
var skip = this.pager.options && this.pager.options.skip ? this.pager.options.skip : [];
|
706
|
+
var p = {};
|
707
|
+
for (var i in this.pager.params) if (skip.indexOf(i) == -1) p[i] = this.pager.params[i];
|
653
708
|
if (this.pager.options)
|
654
709
|
{
|
655
710
|
if (this.pager.options.sort) p.sort = this.pager.options.sort;
|
@@ -657,17 +712,14 @@ IndexTable.prototype = {
|
|
657
712
|
if (this.pager.options.page) p.page = this.pager.options.page;
|
658
713
|
}
|
659
714
|
if (h)
|
660
|
-
{
|
715
|
+
{
|
661
716
|
for (var i in h)
|
662
|
-
{
|
663
|
-
//console.log('' + i + ' = ' + h[i]);
|
664
|
-
//console.log(typeof(h[i]));
|
665
|
-
//console.log('-------------------');
|
717
|
+
{
|
666
718
|
if (typeof(h[i]) == 'boolean')
|
667
719
|
p[i] = h[i] ? 1 : 0;
|
668
720
|
else
|
669
721
|
p[i] = h[i];
|
670
|
-
}
|
722
|
+
}
|
671
723
|
}
|
672
724
|
return p;
|
673
725
|
},
|
@@ -705,7 +757,7 @@ IndexTable.prototype = {
|
|
705
757
|
form.append($('<p/>').append($('<input/>').attr('type', 'text').attr('name', f.name).attr('placeholder', f.nice_name).css('width', '' + f.width + 'px')));
|
706
758
|
});
|
707
759
|
form
|
708
|
-
.append($('<div/>').attr('id', '
|
760
|
+
.append($('<div/>').attr('id', that.container + '_new_message'))
|
709
761
|
.append($('<p>')
|
710
762
|
.append($('<input/>').attr('type', 'button').val('Cancel').click(function(e) { $('#' + that.container + '_new_form_container').empty(); }))
|
711
763
|
.append(' ')
|
@@ -721,13 +773,13 @@ IndexTable.prototype = {
|
|
721
773
|
add_model: function()
|
722
774
|
{
|
723
775
|
var that = this;
|
724
|
-
$('#
|
776
|
+
$('#' + that.container + '_new_message').html("<p class='loading'>Adding...</p>");
|
725
777
|
$.ajax({
|
726
778
|
url: this.add_url,
|
727
779
|
type: 'post',
|
728
780
|
data: $('#new_form').serialize(),
|
729
781
|
success: function(resp) {
|
730
|
-
if (resp.error) $('#
|
782
|
+
if (resp.error) $('#' + that.container + '_new_message').html("<p class='note error'>" + resp.error + "</p>");
|
731
783
|
if (resp.redirect || resp.refresh) that.refresh();
|
732
784
|
}
|
733
785
|
});
|
@@ -126,16 +126,16 @@ ModelBinder.prototype = {
|
|
126
126
|
|
127
127
|
control_with_id: function(id)
|
128
128
|
{
|
129
|
-
|
129
|
+
var control = false
|
130
130
|
var this2 = this;
|
131
|
-
$.each(this.controls, function(i, c) {
|
131
|
+
$.each(this.controls, function(i, c) {
|
132
132
|
if (id == (this2.model.name + "_" + this2.model.id + "_" + c.attribute.name).toLowerCase())
|
133
133
|
{
|
134
|
-
|
134
|
+
control = c;
|
135
135
|
return false;
|
136
136
|
}
|
137
137
|
});
|
138
|
-
return
|
138
|
+
return control;
|
139
139
|
},
|
140
140
|
|
141
141
|
cancel: function()
|
@@ -336,48 +336,6 @@ Modeljs
|
|
336
336
|
line-height: 0;
|
337
337
|
}
|
338
338
|
|
339
|
-
/*******************************************************************************
|
340
|
-
Message boxes
|
341
|
-
*******************************************************************************/
|
342
|
-
|
343
|
-
#content .note {
|
344
|
-
padding: 20px;
|
345
|
-
background: #fef49c;
|
346
|
-
color: #000000;
|
347
|
-
font-weight: bold;
|
348
|
-
font-size: 1.4em;
|
349
|
-
}
|
350
|
-
|
351
|
-
#content .note_small {
|
352
|
-
display: block;
|
353
|
-
padding: 4px 10px;
|
354
|
-
background: #fef49c;
|
355
|
-
color: #000000;
|
356
|
-
font-size: 1em;
|
357
|
-
}
|
358
|
-
|
359
|
-
#content .error {
|
360
|
-
background: #9c171b;
|
361
|
-
color: #ffffff;
|
362
|
-
}
|
363
|
-
|
364
|
-
#content .error a {
|
365
|
-
color: #fff;
|
366
|
-
}
|
367
|
-
|
368
|
-
#content .error a:hover {
|
369
|
-
color: #000;
|
370
|
-
}
|
371
|
-
|
372
|
-
#content .success {
|
373
|
-
background: #009900;
|
374
|
-
color: #ffffff;
|
375
|
-
}
|
376
|
-
|
377
|
-
#content .success a {
|
378
|
-
color: #ffffff;
|
379
|
-
}
|
380
|
-
|
381
339
|
/*******************************************************************************
|
382
340
|
Page Bar Generator
|
383
341
|
*******************************************************************************/
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
#cart {
|
3
|
+
|
4
|
+
margin: 20px 0 10px 0;
|
5
|
+
table { border-collapse: collapse; width: 100%; }
|
6
|
+
table th { font-weight: bold; text-align: center; }
|
7
|
+
table td { border: #ccc 1px solid; padding: 10px; }
|
8
|
+
|
9
|
+
input[type="text"] {
|
10
|
+
border-color: #b9b9b9;
|
11
|
+
border-radius: 0;
|
12
|
+
border-width: 1px;
|
13
|
+
color: #565656;
|
14
|
+
font: 1em "Klinic Slab",serif;
|
15
|
+
padding: 8px 6px 6px;
|
16
|
+
text-align: right !important;
|
17
|
+
}
|
18
|
+
|
19
|
+
input[type="button"] {
|
20
|
+
background-color: #c25454;
|
21
|
+
background-position: 6px center;
|
22
|
+
background-repeat: no-repeat;
|
23
|
+
background-size: 30px auto;
|
24
|
+
border-radius: 0;
|
25
|
+
border-width: 0;
|
26
|
+
color: #fff;
|
27
|
+
cursor: pointer;
|
28
|
+
display: block-inline;
|
29
|
+
font: 20px/1em "Klinic Slab",serif;
|
30
|
+
margin-top: 20px;
|
31
|
+
padding: 8px 15px 6px 15px;
|
32
|
+
text-align: center;
|
33
|
+
text-decoration: none;
|
34
|
+
text-transform: uppercase;
|
35
|
+
}
|
36
|
+
|
37
|
+
p.controls {
|
38
|
+
text-align: right;
|
39
|
+
margin-bottom: 20px;
|
40
|
+
}
|
41
|
+
}
|