piggybak 0.6.34 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -14
  3. data/Gemfile.lock +18 -149
  4. data/README.md +6 -0
  5. data/app/assets/javascripts/piggybak/piggybak.js +18 -15
  6. data/app/assets/javascripts/piggybak/piggybak.states.js +7 -4
  7. data/app/assets/javascripts/rails_admin/custom/ui.js.erb +33 -28
  8. data/app/controllers/piggybak/orders_controller.rb +15 -3
  9. data/app/models/piggybak/address.rb +8 -11
  10. data/app/models/piggybak/country.rb +3 -4
  11. data/app/models/piggybak/line_item.rb +3 -3
  12. data/app/models/piggybak/order.rb +11 -6
  13. data/app/models/piggybak/order_note.rb +2 -3
  14. data/app/models/piggybak/payment.rb +4 -7
  15. data/app/models/piggybak/payment_method.rb +2 -4
  16. data/app/models/piggybak/payment_method_value.rb +2 -4
  17. data/app/models/piggybak/sellable.rb +4 -7
  18. data/app/models/piggybak/shipment.rb +2 -4
  19. data/app/models/piggybak/shipping_calculator/flat_rate.rb +1 -1
  20. data/app/models/piggybak/shipping_calculator/range.rb +1 -1
  21. data/app/models/piggybak/shipping_method +0 -0
  22. data/app/models/piggybak/shipping_method.rb +3 -6
  23. data/app/models/piggybak/shipping_method_value.rb +2 -3
  24. data/app/models/piggybak/state.rb +0 -1
  25. data/app/models/piggybak/tax_calculator/percent.rb +6 -10
  26. data/app/models/piggybak/tax_method.rb +5 -6
  27. data/app/models/piggybak/tax_method_value.rb +2 -3
  28. data/app/views/piggybak/orders/_user_details.html.erb +2 -2
  29. data/app/views/rails_admin/main/{_copy_from_billing.html.haml → _copy_from_billing.html.erb} +0 -0
  30. data/app/views/rails_admin/main/_location_select.html.haml +2 -4
  31. data/app/views/rails_admin/main/_polymorphic_nested.html.haml +1 -25
  32. data/config/routes.rb +17 -19
  33. data/db/migrate/20140325133841_upgrade_piggybak_tables.rb +19 -0
  34. data/lib/piggybak.rb +1 -477
  35. data/lib/piggybak/config.rb +2 -0
  36. data/lib/piggybak/engine.rb +481 -0
  37. data/lib/piggybak/version.rb +1 -1
  38. metadata +6 -46
  39. data/lib/currency.rb +0 -5
@@ -1,24 +1,22 @@
1
1
  Piggybak::Engine.routes.draw do
2
- scope :module => "piggybak" do
3
- # cart actions
4
- match "/cart" => "cart#show", :as => :cart
5
- match "/cart/add" => "cart#add", :via => :post, :as => :cart_add
6
- match "/cart/update" => "cart#update", :via => :post, :as => :cart_update
7
- match "/cart/remove/:item" => "cart#remove", :via => :delete, :as => :remove_item
2
+ # cart actions
3
+ get '/cart' => 'cart#show'
4
+ post '/cart/add' => 'cart#add', as: :cart_add
5
+ post '/cart/update' => 'cart#update', as: :cart_update
6
+ delete '/cart/remove/:item' => 'cart#remove', as: :remove_item
8
7
 
9
- # order actions
10
- root :to => 'orders#submit', :as => :orders, :via => [:get, :post]
11
- match "/receipt" => "orders#receipt", :as => :receipt
12
- match "/orders/shipping" => "orders#shipping", :as => :orders_shipping
13
- match "/orders/tax" => "orders#tax", :as => :orders_tax
14
- match "/orders/geodata" => "orders#geodata", :as => :orders_geodata
8
+ # order actions
9
+ root 'orders#submit', as: :orders, via: [:get, :post]
10
+ get '/receipt' => 'orders#receipt', as: :receipt
11
+ get '/orders/shipping' => 'orders#shipping', as: :orders_shipping
12
+ get '/orders/tax' => 'orders#tax', as: :orders_tax
13
+ get '/orders/geodata' => 'orders#geodata', as: :orders_geodata
15
14
 
16
- # list orders
17
- match "/orders" => "orders#list", :as => :orders_list
15
+ # list orders
16
+ get '/orders' => 'orders#list', as: :orders_list
18
17
 
19
- # admin actions
20
- match "/admin/orders/:id/email" => "orders#email", :as => :email_order
21
- match "/admin/orders/:id/download" => "orders#download", :as => :download_order, :format => "txt"
22
- match "/admin/orders/:id/cancel" => "orders#cancel", :as => :cancel_order
23
- end
18
+ # admin actions
19
+ get '/admin/orders/:id/email' => 'orders#email', as: :email_order
20
+ get '/admin/orders/:id/download' => 'orders#download', as: :download_order, :format => 'txt'
21
+ get '/admin/orders/:id/cancel' => 'orders#cancel', as: :cancel_order
24
22
  end
@@ -0,0 +1,19 @@
1
+ class UpgradePiggybakTables < ActiveRecord::Migration
2
+ def change
3
+ rename_table :orders, :piggybak_orders
4
+ rename_table :addresses, :piggybak_addresses
5
+ rename_table :line_items, :piggybak_line_items
6
+ rename_table :shipping_methods, :piggybak_shipping_methods
7
+ rename_table :payment_methods, :piggybak_payment_methods
8
+ rename_table :payments, :piggybak_payments
9
+ rename_table :shipments, :piggybak_shipments
10
+ rename_table :shipping_method_values, :piggybak_shipping_method_values
11
+ rename_table :payment_method_values, :piggybak_payment_method_values
12
+ rename_table :tax_methods, :piggybak_tax_methods
13
+ rename_table :countries, :piggybak_countries
14
+ rename_table :states, :piggybak_states
15
+ rename_table :tax_method_values, :piggybak_tax_method_values
16
+ rename_table :order_notes, :piggybak_order_notes
17
+ rename_table :sellables, :piggybak_sellables
18
+ end
19
+ end
@@ -1,10 +1,10 @@
1
+ require 'piggybak/engine'
1
2
  require 'piggybak/config'
2
3
  require 'acts_as_sellable'
3
4
  require 'acts_as_orderer'
4
5
  require 'acts_as_changer'
5
6
  require 'active_merchant'
6
7
  require 'formatted_changes'
7
- require 'currency'
8
8
  require 'mask_submissions'
9
9
  require 'rack-ssl-enforcer'
10
10
 
@@ -23,480 +23,4 @@ module Piggybak
23
23
  def self.reset
24
24
  Piggybak::Config.reset
25
25
  end
26
-
27
- class Engine < Rails::Engine
28
- initializer "piggybak.ssl_enforcer" do |app|
29
- # Note: If your main application also uses rack-ssl-enforcer,
30
- # append to Piggyak.config.extra_secure_paths
31
- # inside a before_initialize block
32
- if Piggybak.config.secure_checkout
33
- paths = [/^#{Piggybak.config.secure_prefix}\/checkout\/$/,
34
- "#{Piggybak.config.secure_prefix}/checkout/orders/tax",
35
- "#{Piggybak.config.secure_prefix}/checkout/orders/shipping",
36
- "#{Piggybak.config.secure_prefix}/checkout/orders/geodata",
37
- /^\/users$/,
38
- "/users/sign_in",
39
- "/users/sign_out",
40
- "/users/sign_up"]
41
- Piggybak.config.extra_secure_paths.each do |extra_path|
42
- paths << [/^#{Piggybak.config.secure_prefix}#{extra_path}/]
43
- end
44
- app.config.middleware.use Rack::SslEnforcer,
45
- :only => paths,
46
- :strict => true
47
- end
48
- end
49
-
50
- initializer "piggybak.add_helper" do |app|
51
- ApplicationController.class_eval do
52
- helper :piggybak
53
- end
54
- end
55
-
56
- initializer "piggybak.precompile_hook", :group => :all do |app|
57
- app.config.assets.precompile += ['piggybak/piggybak-application.js']
58
- end
59
-
60
- # Needed for development
61
- config.to_prepare do
62
- Piggybak.config.line_item_types.each do |k, v|
63
- plural_k = k.to_s.pluralize.to_sym
64
- if v[:nested_attrs]
65
- Piggybak::LineItem.class_eval do
66
- # TODO: dependent destroy destroys all line items. Fix and remove after_destroy on line items
67
- has_one k, :class_name => v[:class_name] #, :dependent => :destroy
68
- accepts_nested_attributes_for k
69
- attr_accessible "#{k}_attributes".to_sym
70
- end
71
- end
72
- Piggybak::Order.class_eval do
73
- define_method "#{k}_charge" do
74
- self.line_items.send(plural_k).map(&:price).reduce(:+) || 0
75
- end
76
- end
77
- end
78
- Piggybak::Order.class_eval do
79
- has_many :line_items, :inverse_of => :order do
80
- Piggybak.config.line_item_types.each do |k, v|
81
- # Define proxy association method for line items
82
- # e.g. self.line_items.sellables
83
- # e.g. self.line_items.taxes
84
- define_method "#{k.to_s.pluralize}" do
85
- proxy_association.proxy.select { |li| li.line_item_type == "#{k}" && !li.marked_for_destruction? }
86
- end
87
- end
88
- end
89
- # Define method subtotal on order, alias to sellable_charge
90
- alias :subtotal :sellable_charge
91
- end
92
- end
93
-
94
- initializer "piggybak.rails_admin_config" do |app|
95
- Piggybak.config.line_item_types.each do |k, v|
96
- plural_k = k.to_s.pluralize.to_sym
97
- if v[:nested_attrs]
98
- Piggybak::LineItem.class_eval do
99
- # TODO: See above
100
- has_one k, :class_name => v[:class_name]
101
- accepts_nested_attributes_for k
102
- attr_accessible "#{k}_attributes".to_sym
103
- end
104
- end
105
- end
106
- RailsAdmin::Config.reset_model(Piggybak::LineItem)
107
-
108
- RailsAdmin.config do |config|
109
- config.label_methods << :admin_label
110
-
111
- config.model Piggybak::LineItem do
112
- label "Line Item"
113
- visible false
114
-
115
- edit do
116
- field :line_item_type do
117
- label "Line Item Type"
118
- partial "polymorphic_nested"
119
- help ""
120
- end
121
- Piggybak.config.line_item_types.each do |k, v|
122
- if v[:nested_attrs]
123
- field k do
124
- active true
125
- end
126
- end
127
- end
128
- field :sellable_id, :enum do
129
- label "Sellable"
130
- help "Required"
131
- end
132
- field :price
133
- field :quantity
134
- field :description
135
- end
136
- end
137
-
138
- config.model Piggybak::Sellable do
139
- label "Sellable"
140
- visible false
141
- edit do
142
- field :sku
143
- field :description
144
- field :price
145
- field :active
146
- field :quantity
147
- field :unlimited_inventory do
148
- help "If true, backorders on this variant will be allowed, regardless of quantity on hand."
149
- end
150
- end
151
- end
152
-
153
- config.model Piggybak::Order do
154
- label "Order"
155
- navigation_label "Orders"
156
- weight 1
157
- object_label_method :admin_label
158
-
159
- show do
160
- field :status
161
- field :total do
162
- formatted_value do
163
- "$%.2f" % value
164
- end
165
- end
166
- field :total_due do
167
- formatted_value do
168
- "$%.2f" % value
169
- end
170
- end
171
- field :created_at
172
- field :email
173
- field :phone
174
-
175
- field :user if defined?(User)
176
-
177
- field :line_items
178
- field :billing_address
179
- field :shipping_address
180
- field :order_notes do
181
- pretty_value do
182
- value.inject([]) { |arr, o| arr << o.details }.join("<br /><br />").html_safe
183
- end
184
- end
185
- field :ip_address
186
- field :user_agent
187
- end
188
- list do
189
- field :id
190
- field :billing_address do
191
- label "Billing Name"
192
- pretty_value do
193
- "#{value.lastname}, #{value.firstname}"
194
- end
195
- searchable [:firstname, :lastname]
196
- sortable false
197
- end
198
- field :total do
199
- formatted_value do
200
- "$%.2f" % value
201
- end
202
- end
203
- field :created_at do
204
- strftime_format "%d-%m-%Y"
205
- end
206
- field :status
207
- end
208
- edit do
209
- field :recorded_changer, :hidden do
210
- partial "recorded_changer"
211
- end
212
- field :status do
213
- visible do
214
- !bindings[:object].new_record?
215
- end
216
- read_only do
217
- !bindings[:object].new_record?
218
- end
219
- end
220
-
221
- field :details do
222
- partial "order_details"
223
- help ""
224
- visible do
225
- !bindings[:object].new_record?
226
- end
227
- end
228
-
229
- field :user if defined?(User)
230
- field :email
231
- field :phone
232
- field :ip_address do
233
- partial "ip_address"
234
- end
235
- field :user_agent do
236
- read_only true
237
- end
238
- field :billing_address do
239
- active true
240
- help "Required"
241
- end
242
- field :shipping_address do
243
- active true
244
- help "Required"
245
- end
246
- field :line_items do
247
- active true
248
- help ""
249
- end
250
- field :order_notes do
251
- active true
252
- end
253
- end
254
- end
255
-
256
- config.model Piggybak::OrderNote do
257
- visible false
258
- list do
259
- field :user if defined?(User)
260
- field :note
261
- field :created_at
262
- end
263
- edit do
264
- field :details do
265
- label "Order Note"
266
- help ""
267
- visible do
268
- !bindings[:object].new_record?
269
- end
270
- read_only do
271
- !bindings[:object].new_record?
272
- end
273
- end
274
- field :user_id, :hidden do
275
- default_value do
276
- bindings[:view]._current_user.id
277
- end
278
- end
279
- field :note do
280
- visible do
281
- bindings[:object].new_record?
282
- end
283
- end
284
- end
285
- end
286
-
287
- config.model Piggybak::Address do
288
- label "Address"
289
- visible false
290
-
291
- edit do
292
- field :copy_from_billing do
293
- visible do
294
- bindings[:object].respond_to?(:is_shipping) && bindings[:object].is_shipping
295
- end
296
- partial "copy_from_billing"
297
- label "Help"
298
- help "Copies address from billing to shipping."
299
- end
300
- field :firstname
301
- field :lastname
302
- field :address1
303
- field :address2
304
- field :city
305
- field :zip
306
- field :location do
307
- partial "location_select"
308
- help "Required"
309
- label "Country & State"
310
- end
311
- end
312
- end
313
-
314
- config.model Piggybak::Shipment do
315
- visible false
316
-
317
- edit do
318
- field :shipping_method do
319
- read_only do
320
- bindings[:object].status == "shipped"
321
- end
322
- end
323
- field :status do
324
- label "Shipping Status"
325
- end
326
- end
327
- end
328
-
329
- config.model Piggybak::Adjustment do
330
- visible false
331
- end
332
-
333
- config.model Piggybak::Payment do
334
- visible false
335
-
336
- edit do
337
- field :payment_method do
338
- read_only do
339
- !bindings[:object].new_record?
340
- end
341
- end
342
- field :masked_number do
343
- help "Required"
344
- label "Number"
345
- visible do
346
- !bindings[:object].new_record?
347
- end
348
- read_only do
349
- !bindings[:object].new_record?
350
- end
351
- end
352
- field :number do
353
- help "Required"
354
- visible do
355
- bindings[:object].new_record?
356
- end
357
- end
358
- field :verification_value do
359
- help "Required"
360
- visible do
361
- bindings[:object].new_record?
362
- end
363
- end
364
- field :month do
365
- label "Exp. Month"
366
- read_only do
367
- !bindings[:object].new_record?
368
- end
369
- end
370
- field :year do
371
- label "Exp. Year"
372
- read_only do
373
- !bindings[:object].new_record?
374
- end
375
- end
376
- end
377
- end
378
-
379
- config.model Piggybak::PaymentMethod do
380
- navigation_label "Configuration"
381
- weight 2
382
- list do
383
- field :description
384
- field :active
385
- end
386
- edit do
387
- field :description do
388
- help "This is the label the user sees."
389
- end
390
- field :klass do
391
- label "Calculator"
392
- end
393
- field :active
394
- field :payment_method_values do
395
- label "Metadata"
396
- end
397
- end
398
- end
399
-
400
- config.model Piggybak::PaymentMethodValue do
401
- visible false
402
- edit do
403
- include_all_fields
404
- field :payment_method do
405
- visible false
406
- end
407
- end
408
- end
409
-
410
- config.model Piggybak::ShippingMethod do
411
- navigation_label "Configuration"
412
- edit do
413
- field :description do
414
- help "This is the label the user sees."
415
- end
416
- field :klass do
417
- label "Calculator"
418
- end
419
- field :active
420
- field :shipping_method_values do
421
- label "Metadata"
422
- end
423
- end
424
- list do
425
- field :description
426
- field :active
427
- end
428
- end
429
-
430
- config.model Piggybak::ShippingMethodValue do
431
- visible false
432
- edit do
433
- include_all_fields
434
- field :shipping_method do
435
- visible false
436
- end
437
- end
438
- end
439
-
440
- config.model Piggybak::TaxMethod do
441
- navigation_label "Configuration"
442
- edit do
443
- field :description
444
- field :klass do
445
- label "Calculator"
446
- end
447
- field :active
448
- field :tax_method_values do
449
- label "Metadata"
450
- end
451
- end
452
- list do
453
- field :description
454
- field :active
455
- end
456
- end
457
-
458
- config.model Piggybak::TaxMethodValue do
459
- visible false
460
- edit do
461
- include_all_fields
462
- field :tax_method do
463
- visible false
464
- end
465
- end
466
- end
467
-
468
- config.model Piggybak::Country do
469
- label "Countries"
470
- navigation_label "Geodata"
471
- weight 3
472
- list do
473
- sort_by :name
474
- field :name
475
- field :abbr
476
- end
477
- edit do
478
- field :name
479
- field :abbr
480
- field :active_shipping
481
- field :active_billing
482
- end
483
- end
484
-
485
- config.model Piggybak::State do
486
- navigation_label "Geodata"
487
- label "States"
488
- list do
489
- field :name
490
- field :abbr
491
- field :country
492
- end
493
- edit do
494
- field :name
495
- field :abbr
496
- field :country
497
- end
498
- end
499
- end
500
- end
501
- end
502
26
  end