effective_orders 6.31.1 → 6.32.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7c62c3eb38a3780a63ad16a9aac9f9f1f37aa58663f778e3df35bf9e83ca648
4
- data.tar.gz: f5d65649c5ff1eb7b24a8586e4b8f0730f973d93b6476b6517217b8d4a2f0ae0
3
+ metadata.gz: 97d5089149494797ab6704bc03da3919a04619ceffe9e51c2f81de5343c6d525
4
+ data.tar.gz: d4dc29472beac39508adf8bf61c991380b5626a0ad2227b55897b51c500221c0
5
5
  SHA512:
6
- metadata.gz: e946fa94430f0272e8cd9a21b8bfd6b63813915f6984b5bed85fabe2f3839c5f919efc8899a20d057a43bd83d96e06fb5c1330c3795fedb6dcd059f75ab8ed42
7
- data.tar.gz: 9e4d1879e0dadb6fb5a3ea505219aeb87f1d310c609c154a73355c6d5e2603225e28dc30960757a73800c1251355305d6526d4e0973e3544c18ea7aa8c936385
6
+ metadata.gz: 8508e2cdc5ea25f4d5400f5f1cd8a3b7933179114cfca1005a67ec985094e05091b429223dc215e75286f05ee7abb1bdf815b3be637aa3e218b8e7e722325702
7
+ data.tar.gz: 31b5c5a272bf5431012f65390a898f8ca6cab6a8d304a023e4829aaa9ca04e686dc5645808141f05a680489691973cc9d8315099c433d8a35b461c75971bc639
@@ -24,8 +24,10 @@ module Effective
24
24
  layout(config.kind_of?(Hash) ? (config[:orders] || config[:application]) : config)
25
25
  end
26
26
 
27
+ rate_limit to: 5, within: 1.hour, by: -> { current_user&.id }, only: :checkout
28
+
27
29
  before_action :authenticate_user!, except: [:free, :paypal_postback, :moneris_postback, :pretend]
28
- before_action :set_page_title, except: [:show, :edit]
30
+ before_action :set_page_title, except: [:show, :edit, :checkout]
29
31
 
30
32
  before_action :verify_recaptcha_checkout!, only: [
31
33
  :cheque, :deluxe, :deluxe_delayed, :etransfer, :free, :helcim, :mark_as_paid, :moneris_checkout, :phone, :pretend, :refund, :stripe
@@ -57,25 +59,30 @@ module Effective
57
59
  @order.assign_attributes(checkout_params)
58
60
 
59
61
  if (@order.confirm! rescue false)
60
- redirect_to(effective_orders.order_path(@order))
62
+ redirect_to(effective_orders.checkout_order_path(@order))
61
63
  else
62
64
  flash.now[:danger] = "Unable to proceed: #{flash_errors(@order)}. Please try again."
63
65
  render :new
64
66
  end
65
67
  end
66
68
 
67
- # If you want to use the order = Effective::Order.new(@thing); order.save! flow
68
- # Add one or more items to the order.
69
- # redirect_to effective_orders.order_path(order), which is here
70
- # This is the entry point for an existing order.
71
- # Might render step1 or step2
69
+ # Displays the order summary.
70
+ # For unpurchased orders, shows a Checkout button.
71
+ # For purchased orders, shows a Continue button.
72
72
  def show
73
73
  @order ||= Effective::Order.deep.find(params[:id])
74
- @page_title ||= view_context.order_page_title(@order)
74
+ @page_title ||= @order.to_s
75
75
 
76
76
  EffectiveResources.authorize!(self, :show, @order)
77
77
  end
78
78
 
79
+ def checkout
80
+ @order ||= Effective::Order.deep.was_not_purchased.find(params[:id])
81
+ @page_title ||= 'Checkout'
82
+
83
+ EffectiveResources.authorize!(self, :checkout, @order)
84
+ end
85
+
79
86
  # Always step1
80
87
  def edit
81
88
  @order ||= Effective::Order.deep.was_not_purchased.find(params[:id])
@@ -92,7 +99,7 @@ module Effective
92
99
  @order.assign_attributes(checkout_params)
93
100
 
94
101
  if (@order.confirm! rescue false)
95
- redirect_to(effective_orders.order_path(@order))
102
+ redirect_to(effective_orders.checkout_order_path(@order))
96
103
  else
97
104
  flash.now[:danger] = "Unable to proceed: #{flash_errors(@order)}. Please try again."
98
105
  render :edit
@@ -154,7 +161,7 @@ module Effective
154
161
  @order = Effective::Order.not_purchased.find(params[:id])
155
162
  EffectiveResources.authorize!(self, :update, @order)
156
163
 
157
- redirect_url = params[:redirect_url].presence || effective_orders.order_path(@order)
164
+ redirect_url = params[:redirect_url].presence || effective_orders.checkout_order_path(@order)
158
165
 
159
166
  if verify_recaptcha(secret_key: EffectiveOrders.recaptcha_secret_key)
160
167
  session[:recaptcha_verified_order_id] = @order.id
@@ -187,7 +194,7 @@ module Effective
187
194
 
188
195
  unless session[:recaptcha_verified_order_id].to_s == params[:id].to_s
189
196
  flash[:danger] = 'Please complete the verification to proceed with payment.'
190
- redirect_back(fallback_location: effective_orders.order_path(params[:id]))
197
+ redirect_back(fallback_location: effective_orders.checkout_order_path(params[:id]))
191
198
  end
192
199
  end
193
200
 
@@ -86,15 +86,7 @@ module EffectiveOrdersHelper
86
86
  def order_page_title(order)
87
87
  raise 'expected an order' unless order.kind_of?(Effective::Order)
88
88
 
89
- authorized = EffectiveResources.authorized?(self, :update, order)
90
-
91
- if order.purchased? || order.declined?
92
- order.to_s
93
- elsif authorized && (controller.action_name == 'edit')
94
- 'Order Review'
95
- elsif authorized && (order.confirmed? || order.deferred?) && order.errors.blank?
96
- 'Checkout'
97
- elsif authorized && order.pending?
89
+ if controller.action_name == 'edit'
98
90
  'Order Review'
99
91
  else
100
92
  order.to_s
@@ -13,7 +13,7 @@
13
13
 
14
14
  - else
15
15
  - # Show this if I'm on the effective orders checkout screen. But not on a rendered order.
16
- - if order.persisted? && order.user == current_user && request.path.to_s.start_with?(effective_orders.order_path(order))
16
+ - if order.persisted? && order.user == current_user && (request.path.to_s.start_with?(effective_orders.order_path(order)) || request.path.to_s.start_with?(effective_orders.checkout_order_path(order)))
17
17
  .effective-order-change-items
18
18
  = link_to 'Change Addresses', effective_orders.edit_order_path(order), rel: :nofollow
19
19
 
@@ -1,6 +1,6 @@
1
1
  = dropdown(variation: :dropleft) do
2
2
  - if EffectiveResources.authorized?(controller, :checkout, order)
3
- = dropdown_link_to 'Checkout', effective_orders.order_path(order), 'data-turbolinks': false
3
+ = dropdown_link_to 'Checkout', effective_orders.checkout_order_path(order), 'data-turbolinks': false
4
4
  - else
5
5
  = dropdown_link_to 'Show', effective_orders.order_path(order)
6
6
 
@@ -0,0 +1,3 @@
1
+ = render 'layout' do
2
+ %h1.effective-heading= @page_title
3
+ = render_checkout(@order)
@@ -8,4 +8,4 @@
8
8
  Please try again.
9
9
 
10
10
  %p.text-center
11
- = link_to 'Continue', root_path, class: 'btn btn-primary'
11
+ = link_to 'Continue', effective_orders.checkout_order_path(@order), class: 'btn btn-primary'
@@ -1,10 +1,10 @@
1
1
  = render 'layout' do
2
2
  %h1.effective-heading= @page_title
3
+ = render(@order)
3
4
 
4
5
  - if EffectiveResources.authorized?(self, :checkout, @order)
5
- = render_checkout(@order)
6
+ %p.text-center
7
+ = link_to 'Checkout', effective_orders.checkout_order_path(@order), class: 'btn btn-primary'
6
8
  - else
7
- = render(@order)
8
-
9
9
  %p.text-center
10
10
  = link_to 'Continue', effective_orders.orders_path, class: 'btn btn-primary'
data/config/routes.rb CHANGED
@@ -4,6 +4,7 @@ EffectiveOrders::Engine.routes.draw do
4
4
  scope module: 'effective' do
5
5
  resources :orders, except: [:destroy] do
6
6
  member do
7
+ get :checkout
7
8
  get :purchased
8
9
  get :deferred
9
10
  get :declined
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '6.31.1'.freeze
2
+ VERSION = '6.32.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_orders
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.31.1
4
+ version: 6.32.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 7.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 7.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coffee-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -316,6 +316,7 @@ files:
316
316
  - app/views/effective/orders/_order_shipping.html.haml
317
317
  - app/views/effective/orders/_orders_table.html.haml
318
318
  - app/views/effective/orders/_purchasables.html.haml
319
+ - app/views/effective/orders/checkout.html.haml
319
320
  - app/views/effective/orders/cheque/_form.html.haml
320
321
  - app/views/effective/orders/declined.html.haml
321
322
  - app/views/effective/orders/deferred.html.haml