camaleon_ecommerce 1.2.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/plugins/ecommerce/switch.png +0 -0
  3. data/app/assets/javascripts/plugins/ecommerce/admin_product.js.coffee +1 -1
  4. data/app/assets/javascripts/plugins/ecommerce/admin_settings.js +16 -0
  5. data/app/assets/javascripts/plugins/ecommerce/cart.js +1 -0
  6. data/app/assets/javascripts/plugins/ecommerce/jquery.multi-select.js +535 -0
  7. data/app/assets/stylesheets/plugins/ecommerce/multi-select.css.scss +94 -0
  8. data/app/controllers/plugins/ecommerce/admin/orders_controller.rb +37 -20
  9. data/app/controllers/plugins/ecommerce/admin/settings_controller.rb +2 -2
  10. data/app/controllers/plugins/ecommerce/front/checkout_controller.rb +16 -15
  11. data/app/decorators/plugins/ecommerce/cart_decorator.rb +19 -0
  12. data/app/decorators/plugins/ecommerce/order_decorator.rb +70 -0
  13. data/app/decorators/plugins/ecommerce/product_decorator.rb +16 -9
  14. data/app/decorators/plugins/ecommerce/product_item_decorator.rb +5 -1
  15. data/app/helpers/plugins/ecommerce/ecommerce_email_helper.rb +60 -59
  16. data/app/helpers/plugins/ecommerce/ecommerce_functions_helper.rb +5 -10
  17. data/app/helpers/plugins/ecommerce/ecommerce_helper.rb +12 -3
  18. data/app/models/plugins/ecommerce/cart.rb +3 -25
  19. data/app/models/plugins/ecommerce/order.rb +0 -21
  20. data/app/models/plugins/ecommerce/payment_method.rb +4 -0
  21. data/app/models/plugins/ecommerce/shipping_method.rb +4 -1
  22. data/app/services/plugins/ecommerce/cart_service.rb +0 -9
  23. data/app/views/plugins/ecommerce/admin/orders/index.html.erb +47 -51
  24. data/app/views/plugins/ecommerce/admin/orders/show.html.erb +1 -1
  25. data/app/views/plugins/ecommerce/admin/payment_methods/form.html.erb +2 -6
  26. data/app/views/plugins/ecommerce/admin/payment_methods/index.html.erb +4 -6
  27. data/app/views/plugins/ecommerce/admin/settings/index.html.erb +60 -20
  28. data/app/views/plugins/ecommerce/admin/shipping_methods/form.html.erb +1 -5
  29. data/app/views/plugins/ecommerce/admin/shipping_methods/index.html.erb +2 -4
  30. data/app/views/plugins/ecommerce/front/checkout/cart_index.html.erb +2 -2
  31. data/app/views/plugins/ecommerce/front/checkout/index.html.erb +1 -1
  32. data/app/views/plugins/ecommerce/front/login.html.erb +1 -1
  33. data/app/views/plugins/ecommerce/front/orders/index.html.erb +2 -2
  34. data/app/views/plugins/ecommerce/front/orders/show.html.erb +13 -14
  35. data/app/views/plugins/ecommerce/partials/checkout/_details.html.erb +1 -1
  36. data/app/views/plugins/ecommerce/partials/checkout/_payments.html.erb +116 -110
  37. data/app/views/plugins/ecommerce/partials/checkout/_products_detail.html.erb +5 -2
  38. data/app/views/plugins/ecommerce/partials/checkout/_user_info.html.erb +0 -1
  39. data/app/views/plugins/ecommerce/partials/email/_billing_address.html.erb +11 -0
  40. data/app/views/plugins/ecommerce/partials/email/_product_table.html.erb +46 -0
  41. data/app/views/plugins/ecommerce/partials/email/_shipping_address.html.erb +11 -0
  42. data/app/views/{plugins/ecommerce/partials → post_types/commerce}/_cart_widget.html.erb +0 -0
  43. data/app/views/post_types/commerce/_product_info.html.erb +30 -32
  44. data/app/views/post_types/commerce/single.html.erb +9 -13
  45. data/config/camaleon_plugin.json +2 -1
  46. data/config/custom_models.rb +43 -0
  47. data/config/locales/en.yml +0 -1
  48. data/config/locales/es.yml +69 -7
  49. data/config/routes.rb +1 -0
  50. data/db/migrate/20161213222142_add_invoice_number.rb +6 -0
  51. data/db/migrate/20161214224919_remove_ecommerce_stock_field.rb +7 -0
  52. data/lib/ecommerce/engine.rb +4 -2
  53. data/lib/ecommerce/version.rb +1 -1
  54. metadata +58 -15
  55. data/app/assets/javascripts/plugins/ecommerce/jquery.creditCardValidator.js +0 -208
  56. data/app/services/plugins/ecommerce/order_service.rb +0 -26
  57. data/app/views/camaleon_cms/html_mailer/order_canceled.html.erb +0 -2
  58. data/app/views/camaleon_cms/html_mailer/order_confirmed.html.erb +0 -2
  59. data/app/views/camaleon_cms/html_mailer/order_received.html.erb +0 -5
  60. data/app/views/camaleon_cms/html_mailer/order_received_admin.html.erb +0 -3
  61. data/app/views/camaleon_cms/html_mailer/order_shipped.html.erb +0 -2
  62. data/app/views/camaleon_cms/html_mailer/recovery_cart.html.erb +0 -4
metadata CHANGED
@@ -1,29 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camaleon_ecommerce
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-08 00:00:00.000000000 Z
11
+ date: 2016-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: camaleon_cms
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
19
+ version: '2.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ransack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.7.0
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '4.1'
40
+ version: 1.7.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: wicked_pdf
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: wkhtmltopdf-binary
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: country_select
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -90,12 +132,15 @@ files:
90
132
  - MIT-LICENSE
91
133
  - README.rdoc
92
134
  - Rakefile
135
+ - app/assets/images/plugins/ecommerce/switch.png
93
136
  - app/assets/javascripts/plugins/ecommerce/admin_product.js.coffee
137
+ - app/assets/javascripts/plugins/ecommerce/admin_settings.js
94
138
  - app/assets/javascripts/plugins/ecommerce/cart.js
95
- - app/assets/javascripts/plugins/ecommerce/jquery.creditCardValidator.js
139
+ - app/assets/javascripts/plugins/ecommerce/jquery.multi-select.js
96
140
  - app/assets/stylesheets/plugins/ecommerce/admin.scss
97
141
  - app/assets/stylesheets/plugins/ecommerce/checkout.css.scss
98
142
  - app/assets/stylesheets/plugins/ecommerce/front.scss
143
+ - app/assets/stylesheets/plugins/ecommerce/multi-select.css.scss
99
144
  - app/controllers/plugins/ecommerce/admin/coupons_controller.rb
100
145
  - app/controllers/plugins/ecommerce/admin/orders_controller.rb
101
146
  - app/controllers/plugins/ecommerce/admin/payment_methods_controller.rb
@@ -128,14 +173,7 @@ files:
128
173
  - app/models/plugins/ecommerce/shipping_method.rb
129
174
  - app/models/plugins/ecommerce/tax_rate.rb
130
175
  - app/services/plugins/ecommerce/cart_service.rb
131
- - app/services/plugins/ecommerce/order_service.rb
132
176
  - app/services/plugins/ecommerce/util_service.rb
133
- - app/views/camaleon_cms/html_mailer/order_canceled.html.erb
134
- - app/views/camaleon_cms/html_mailer/order_confirmed.html.erb
135
- - app/views/camaleon_cms/html_mailer/order_received.html.erb
136
- - app/views/camaleon_cms/html_mailer/order_received_admin.html.erb
137
- - app/views/camaleon_cms/html_mailer/order_shipped.html.erb
138
- - app/views/camaleon_cms/html_mailer/recovery_cart.html.erb
139
177
  - app/views/plugins/ecommerce/admin/coupons/form.html.erb
140
178
  - app/views/plugins/ecommerce/admin/coupons/index.html.erb
141
179
  - app/views/plugins/ecommerce/admin/orders/form.html.erb
@@ -161,11 +199,14 @@ files:
161
199
  - app/views/plugins/ecommerce/front/login.html.erb
162
200
  - app/views/plugins/ecommerce/front/orders/index.html.erb
163
201
  - app/views/plugins/ecommerce/front/orders/show.html.erb
164
- - app/views/plugins/ecommerce/partials/_cart_widget.html.erb
165
202
  - app/views/plugins/ecommerce/partials/checkout/_details.html.erb
166
203
  - app/views/plugins/ecommerce/partials/checkout/_payments.html.erb
167
204
  - app/views/plugins/ecommerce/partials/checkout/_products_detail.html.erb
168
205
  - app/views/plugins/ecommerce/partials/checkout/_user_info.html.erb
206
+ - app/views/plugins/ecommerce/partials/email/_billing_address.html.erb
207
+ - app/views/plugins/ecommerce/partials/email/_product_table.html.erb
208
+ - app/views/plugins/ecommerce/partials/email/_shipping_address.html.erb
209
+ - app/views/post_types/commerce/_cart_widget.html.erb
169
210
  - app/views/post_types/commerce/_post_list_item.html.erb
170
211
  - app/views/post_types/commerce/_product_info.html.erb
171
212
  - app/views/post_types/commerce/single.html.erb
@@ -183,6 +224,8 @@ files:
183
224
  - db/migrate/20160825174848_set_cama_post_decorator_class.rb
184
225
  - db/migrate/20160825232739_migrate_order_data.rb
185
226
  - db/migrate/20161202182552_add_cookie_key_to_cart.rb
227
+ - db/migrate/20161213222142_add_invoice_number.rb
228
+ - db/migrate/20161214224919_remove_ecommerce_stock_field.rb
186
229
  - lib/camaleon_ecommerce.rb
187
230
  - lib/ecommerce.rb
188
231
  - lib/ecommerce/engine.rb
@@ -208,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
251
  version: '0'
209
252
  requirements: []
210
253
  rubyforge_project:
211
- rubygems_version: 2.4.8
254
+ rubygems_version: 2.5.1
212
255
  signing_key:
213
256
  specification_version: 4
214
257
  summary: ": Summary of Ecommerce."
@@ -1,208 +0,0 @@
1
- // Generated by CoffeeScript 1.8.0
2
-
3
- /*
4
- jQuery Credit Card Validator 1.0
5
-
6
- Copyright 2012-2015 Pawel Decowski
7
-
8
- Permission is hereby granted, free of charge, to any person obtaining a copy
9
- of this software and associated documentation files (the "Software"), to deal
10
- in the Software without restriction, including without limitation the rights
11
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- copies of the Software, and to permit persons to whom the Software
13
- is furnished to do so, subject to the following conditions:
14
-
15
- The above copyright notice and this permission notice shall be included
16
- in all copies or substantial portions of the Software.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24
- IN THE SOFTWARE.
25
- */
26
-
27
- (function() {
28
- var $,
29
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
30
-
31
- $ = jQuery;
32
-
33
- $.fn.validateCreditCard = function(callback, options) {
34
- var bind, card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number, _i, _len, _ref;
35
- card_types = [
36
- {
37
- name: 'amex',
38
- pattern: /^3[47]/,
39
- valid_length: [15]
40
- }, {
41
- name: 'diners_club_carte_blanche',
42
- pattern: /^30[0-5]/,
43
- valid_length: [14]
44
- }, {
45
- name: 'diners_club_international',
46
- pattern: /^36/,
47
- valid_length: [14]
48
- }, {
49
- name: 'jcb',
50
- pattern: /^35(2[89]|[3-8][0-9])/,
51
- valid_length: [16]
52
- }, {
53
- name: 'laser',
54
- pattern: /^(6304|670[69]|6771)/,
55
- valid_length: [16, 17, 18, 19]
56
- }, {
57
- name: 'visa_electron',
58
- pattern: /^(4026|417500|4508|4844|491(3|7))/,
59
- valid_length: [16]
60
- }, {
61
- name: 'visa',
62
- pattern: /^4/,
63
- valid_length: [16]
64
- }, {
65
- name: 'mastercard',
66
- pattern: /^5[1-5]/,
67
- valid_length: [16]
68
- }, {
69
- name: 'maestro',
70
- pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
71
- valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
72
- }, {
73
- name: 'discover',
74
- pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
75
- valid_length: [16]
76
- }
77
- ];
78
- bind = false;
79
- if (callback) {
80
- if (typeof callback === 'object') {
81
- options = callback;
82
- bind = false;
83
- callback = null;
84
- } else if (typeof callback === 'function') {
85
- bind = true;
86
- }
87
- }
88
- if (options == null) {
89
- options = {};
90
- }
91
- if (options.accept == null) {
92
- options.accept = (function() {
93
- var _i, _len, _results;
94
- _results = [];
95
- for (_i = 0, _len = card_types.length; _i < _len; _i++) {
96
- card = card_types[_i];
97
- _results.push(card.name);
98
- }
99
- return _results;
100
- })();
101
- }
102
- _ref = options.accept;
103
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
104
- card_type = _ref[_i];
105
- if (__indexOf.call((function() {
106
- var _j, _len1, _results;
107
- _results = [];
108
- for (_j = 0, _len1 = card_types.length; _j < _len1; _j++) {
109
- card = card_types[_j];
110
- _results.push(card.name);
111
- }
112
- return _results;
113
- })(), card_type) < 0) {
114
- throw "Credit card type '" + card_type + "' is not supported";
115
- }
116
- }
117
- get_card_type = function(number) {
118
- var _j, _len1, _ref1;
119
- _ref1 = (function() {
120
- var _k, _len1, _ref1, _results;
121
- _results = [];
122
- for (_k = 0, _len1 = card_types.length; _k < _len1; _k++) {
123
- card = card_types[_k];
124
- if (_ref1 = card.name, __indexOf.call(options.accept, _ref1) >= 0) {
125
- _results.push(card);
126
- }
127
- }
128
- return _results;
129
- })();
130
- for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
131
- card_type = _ref1[_j];
132
- if (number.match(card_type.pattern)) {
133
- return card_type;
134
- }
135
- }
136
- return null;
137
- };
138
- is_valid_luhn = function(number) {
139
- var digit, n, sum, _j, _len1, _ref1;
140
- sum = 0;
141
- _ref1 = number.split('').reverse();
142
- for (n = _j = 0, _len1 = _ref1.length; _j < _len1; n = ++_j) {
143
- digit = _ref1[n];
144
- digit = +digit;
145
- if (n % 2) {
146
- digit *= 2;
147
- if (digit < 10) {
148
- sum += digit;
149
- } else {
150
- sum += digit - 9;
151
- }
152
- } else {
153
- sum += digit;
154
- }
155
- }
156
- return sum % 10 === 0;
157
- };
158
- is_valid_length = function(number, card_type) {
159
- var _ref1;
160
- return _ref1 = number.length, __indexOf.call(card_type.valid_length, _ref1) >= 0;
161
- };
162
- validate_number = (function(_this) {
163
- return function(number) {
164
- var length_valid, luhn_valid;
165
- card_type = get_card_type(number);
166
- luhn_valid = false;
167
- length_valid = false;
168
- if (card_type != null) {
169
- luhn_valid = is_valid_luhn(number);
170
- length_valid = is_valid_length(number, card_type);
171
- }
172
- return {
173
- card_type: card_type,
174
- valid: luhn_valid && length_valid,
175
- luhn_valid: luhn_valid,
176
- length_valid: length_valid
177
- };
178
- };
179
- })(this);
180
- validate = (function(_this) {
181
- return function() {
182
- var number;
183
- number = normalize($(_this).val());
184
- return validate_number(number);
185
- };
186
- })(this);
187
- normalize = function(number) {
188
- return number.replace(/[ -]/g, '');
189
- };
190
- if (!bind) {
191
- return validate();
192
- }
193
- this.on('input.jccv', (function(_this) {
194
- return function() {
195
- $(_this).off('keyup.jccv');
196
- return callback.call(_this, validate());
197
- };
198
- })(this));
199
- this.on('keyup.jccv', (function(_this) {
200
- return function() {
201
- return callback.call(_this, validate());
202
- };
203
- })(this));
204
- callback.call(this, validate());
205
- return this;
206
- };
207
-
208
- }).call(this);
@@ -1,26 +0,0 @@
1
- class Plugins::Ecommerce::OrderService
2
- def initialize(site, order)
3
- @site = site
4
- @order = order
5
- end
6
-
7
- attr_reader :site, :order
8
-
9
- def product_owners
10
- owners = []
11
- order.products.each do |product|
12
- owners << product.owner if product.owner.present?
13
- end
14
- owners.uniq
15
- end
16
-
17
- def product_files
18
- files = []
19
- order.products.each do |product|
20
- files += product.get_fields('ecommerce_files').map do |f|
21
- CamaleonCmsLocalUploader::private_file_path(f, site)
22
- end
23
- end
24
- files.uniq
25
- end
26
- end
@@ -1,2 +0,0 @@
1
- <p><%= t('plugins.ecommerce.mail.dear', default: 'Dear %{name}: ', name: @extra_data[:order].user.fullname) %></p>
2
- <p><%= t('plugins.ecommerce.mail.order_canceled.message', default: 'Your order %{order} has been canceled: %{message}', order: @extra_data[:order].slug, message: @extra_data[:message]) %></p>
@@ -1,2 +0,0 @@
1
- <p><%= t('plugins.ecommerce.mail.dear', default: 'Dear %{name}: ', name: @extra_data[:fullname]) %></p>
2
- <p><%= t('plugins.ecommerce.mail.order_confirmed.message', default: 'We have confirmed your payment by bank transfer for the order #%{order}.\n\n Thanks for your preference.', order: @extra_data[:order_slug]).gsub(/\n/, '<br>').gsub('\n', '<br>') %></p>
@@ -1,5 +0,0 @@
1
- <p><%= t('plugins.ecommerce.mail.order_received.welcome') %> <%= @extra_data[:fullname] %></p>
2
- <p><%= t('plugins.ecommerce.mail.order_received.thanks') %></p>
3
- <%= raw @extra_data[:order_details_html] %>
4
- <p><%= t('plugins.ecommerce.mail.order_received.reference') %> <a href="<%= @extra_data[:order_url] %>"><%= @extra_data[:order_slug] %></a>
5
-
@@ -1,3 +0,0 @@
1
- <p><%= t('plugins.ecommerce.mail.order_received.welcome') %><%= @extra_data[:admin][:fullname] %></p>
2
- <p><%= t('plugins.ecommerce.mail.order_received.boght_by', user: @extra_data[:fullname], default: '%{user} has bought') %></p>
3
- <p><%= t('plugins.ecommerce.mail.order_received.reference') %> <a href="<%= @extra_data[:order_url] %>"><%= @extra_data[:order_slug] %></a>
@@ -1,2 +0,0 @@
1
- <p><%= t('plugins.ecommerce.mail.dear', default: 'Dear %{name}: ', name: @extra_data[:order].user.fullname) %></p>
2
- <p><%= t('plugins.ecommerce.mail.order_shipped.message', default: 'Your order %{order} has been sent.', order: @extra_data[:order].slug) %></p>
@@ -1,4 +0,0 @@
1
- <% order_slug = @extra_data[:order].slug %>
2
- <p><%= t('plugins.ecommerce.mail.order_received.welcome') %><%= @extra_data[:fullname] %></p>
3
- <p><%= t('plugins.ecommerce.mail.recovery_cart.body') %></p>
4
- <p><%= t('plugins.ecommerce.mail.recovery_cart.reference') %> <a href="<%= plugins_ecommerce_order_show_url(order: order_slug) %>"><%= order_slug %></a>