comable-frontend 0.6.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 +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +97 -0
- data/app/assets/images/comable/frontend/home-one.jpg +0 -0
- data/app/assets/images/comable/frontend/home-top.jpg +0 -0
- data/app/assets/javascripts/comable/frontend/application.coffee +5 -0
- data/app/assets/stylesheets/comable/frontend/application.scss +527 -0
- data/app/assets/stylesheets/comable/frontend/products.scss +0 -0
- data/app/assets/stylesheets/comable/products.scss +0 -0
- data/app/controllers/comable/application_controller.rb +12 -0
- data/app/controllers/comable/carts_controller.rb +66 -0
- data/app/controllers/comable/home_controller.rb +14 -0
- data/app/controllers/comable/orders_controller.rb +97 -0
- data/app/controllers/comable/pages_controller.rb +19 -0
- data/app/controllers/comable/products_controller.rb +25 -0
- data/app/controllers/comable/users_controller.rb +29 -0
- data/app/controllers/concerns/comable/payment_action.rb +17 -0
- data/app/controllers/concerns/comable/shipment_action.rb +17 -0
- data/app/controllers/concerns/comable/signin_action.rb +55 -0
- data/app/views/comable/carts/show.slim +67 -0
- data/app/views/comable/home/show.slim +24 -0
- data/app/views/comable/orders/confirm.slim +83 -0
- data/app/views/comable/orders/create.slim +7 -0
- data/app/views/comable/orders/delivery.slim +48 -0
- data/app/views/comable/orders/orderer.slim +64 -0
- data/app/views/comable/orders/payment.slim +15 -0
- data/app/views/comable/orders/shipment.slim +15 -0
- data/app/views/comable/orders/signin.slim +22 -0
- data/app/views/comable/pages/show.slim +7 -0
- data/app/views/comable/products/index.slim +20 -0
- data/app/views/comable/products/show.slim +89 -0
- data/app/views/comable/shared/_address.slim +13 -0
- data/app/views/comable/shared/_address_form.slim +39 -0
- data/app/views/comable/shared/_footer.slim +39 -0
- data/app/views/comable/shared/_header.slim +74 -0
- data/app/views/comable/shared/_header_for_checkout.slim +18 -0
- data/app/views/comable/shared/_products.slim +23 -0
- data/app/views/comable/shared/_tracker.slim +2 -0
- data/app/views/comable/users/_address.slim +14 -0
- data/app/views/comable/users/addresses.slim +54 -0
- data/app/views/comable/users/show.slim +60 -0
- data/app/views/kaminari/comable_frontend/_gap.html.slim +2 -0
- data/app/views/kaminari/comable_frontend/_next_page.html.slim +7 -0
- data/app/views/kaminari/comable_frontend/_page.html.slim +3 -0
- data/app/views/kaminari/comable_frontend/_paginator.html.slim +11 -0
- data/app/views/kaminari/comable_frontend/_prev_page.html.slim +7 -0
- data/app/views/layouts/comable/application.slim +35 -0
- data/config/routes.rb +34 -0
- data/lib/comable/frontend/engine.rb +29 -0
- data/lib/comable/frontend.rb +1 -0
- data/lib/tasks/comable_backend_tasks.rake +4 -0
- metadata +295 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
module Comable
|
2
|
+
class CartsController < Comable::ApplicationController
|
3
|
+
before_filter :set_cart_item, only: [:add, :update]
|
4
|
+
before_filter :ensure_found_cart_item, only: [:add, :update]
|
5
|
+
|
6
|
+
def add
|
7
|
+
if current_comable_user.add_cart_item(@cart_item, cart_item_options)
|
8
|
+
redirect_to comable.cart_path, notice: Comable.t('carts.added')
|
9
|
+
else
|
10
|
+
flash.now[:alert] = Comable.t('carts.invalid')
|
11
|
+
render :show
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def update
|
16
|
+
if current_comable_user.reset_cart_item(@cart_item, cart_item_options)
|
17
|
+
redirect_to comable.cart_path, notice: Comable.t('carts.updated')
|
18
|
+
else
|
19
|
+
flash.now[:alert] = Comable.t('carts.invalid')
|
20
|
+
render :show
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def destroy
|
25
|
+
cart_item = find_cart_item
|
26
|
+
return redirect_by_product_not_found unless cart_item
|
27
|
+
|
28
|
+
if current_comable_user.reset_cart_item(cart_item)
|
29
|
+
redirect_to comable.cart_path, notice: Comable.t('carts.updated')
|
30
|
+
else
|
31
|
+
flash.now[:alert] = Comable.t('carts.invalid')
|
32
|
+
render :show
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def checkout
|
37
|
+
current_order.next_state if current_order.state?(:cart)
|
38
|
+
redirect_to comable.next_order_path(state: :confirm)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def set_cart_item
|
44
|
+
@cart_item = find_cart_item
|
45
|
+
end
|
46
|
+
|
47
|
+
def ensure_found_cart_item
|
48
|
+
return if @cart_item
|
49
|
+
redirect_to :back, alert: Comable.t('errors.messages.products_not_found')
|
50
|
+
end
|
51
|
+
|
52
|
+
def find_cart_item
|
53
|
+
cart_item = Comable::Stock.where(id: params[:stock_id]).first
|
54
|
+
cart_item ||= Comable::Product.where(id: params[:product_id]).first
|
55
|
+
return unless cart_item
|
56
|
+
return if cart_item.is_a?(Comable::Product) && cart_item.sku?
|
57
|
+
cart_item
|
58
|
+
end
|
59
|
+
|
60
|
+
def cart_item_options
|
61
|
+
options = {}
|
62
|
+
options.update(quantity: params[:quantity].to_i) if params[:quantity]
|
63
|
+
options
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Comable
|
2
|
+
class OrdersController < Comable::ApplicationController
|
3
|
+
# TODO: Change the method name to load_order_with_params
|
4
|
+
before_filter :load_order
|
5
|
+
before_filter :ensure_cart_not_empty
|
6
|
+
before_filter :ensure_saleable_stocks
|
7
|
+
before_filter :ensure_correct_flow, only: :create
|
8
|
+
|
9
|
+
prepend Comable::SigninAction
|
10
|
+
prepend Comable::ShipmentAction
|
11
|
+
prepend Comable::PaymentAction
|
12
|
+
include Comable::PermittedAttributes
|
13
|
+
|
14
|
+
def edit
|
15
|
+
if @order.state?(params[:state]) || @order.stated?(params[:state])
|
16
|
+
render params[:state]
|
17
|
+
else
|
18
|
+
redirect_to next_order_path
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def update
|
23
|
+
if @order.stated?(params[:state]) ? @order.save : @order.next_state
|
24
|
+
redirect_to next_order_path
|
25
|
+
else
|
26
|
+
render @order.state
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def create
|
31
|
+
@order.next_state!
|
32
|
+
|
33
|
+
flash.now[:notice] = Comable.t('orders.success')
|
34
|
+
send_order_complete_mail
|
35
|
+
rescue ActiveRecord::RecordInvalid
|
36
|
+
flash[:alert] = @order.errors.full_messages.join
|
37
|
+
redirect_to next_order_path
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def send_order_complete_mail
|
43
|
+
return unless current_store.can_send_mail?
|
44
|
+
if Rails.version =~ /^4.2./
|
45
|
+
Comable::OrderMailer.complete(@order).deliver_now
|
46
|
+
else
|
47
|
+
Comable::OrderMailer.complete(@order).deliver
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def ensure_cart_not_empty
|
52
|
+
return if current_comable_user.cart.any?
|
53
|
+
flash[:alert] = Comable.t('carts.empty')
|
54
|
+
redirect_to comable.cart_path
|
55
|
+
end
|
56
|
+
|
57
|
+
def ensure_saleable_stocks
|
58
|
+
return if current_order.stocked_items.empty?
|
59
|
+
flash[:alert] = Comable.t('errors.messages.out_of_stocks')
|
60
|
+
redirect_to comable.cart_path
|
61
|
+
end
|
62
|
+
|
63
|
+
def ensure_correct_flow
|
64
|
+
return if @order.state?(:confirm)
|
65
|
+
redirect_to next_order_path
|
66
|
+
end
|
67
|
+
|
68
|
+
def load_order
|
69
|
+
@order = current_order
|
70
|
+
@order.attributes = order_params if order_params
|
71
|
+
end
|
72
|
+
|
73
|
+
def order_params
|
74
|
+
return unless params[:order]
|
75
|
+
return unless params[:state]
|
76
|
+
case params[:state].to_sym
|
77
|
+
when :orderer
|
78
|
+
order_params_for_orderer
|
79
|
+
when :delivery
|
80
|
+
order_params_for_delivery
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def order_params_for_orderer
|
85
|
+
params.require(:order).permit(
|
86
|
+
:email,
|
87
|
+
bill_address_attributes: permitted_address_attributes
|
88
|
+
)
|
89
|
+
end
|
90
|
+
|
91
|
+
def order_params_for_delivery
|
92
|
+
params.require(:order).permit(
|
93
|
+
ship_address_attributes: permitted_address_attributes
|
94
|
+
)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Comable
|
2
|
+
class PagesController < Comable::ApplicationController
|
3
|
+
def show
|
4
|
+
if Rails::VERSION::MAJOR == 3
|
5
|
+
@page = Comable::Page.find(params[:id])
|
6
|
+
else
|
7
|
+
@page = Comable::Page.friendly.find(params[:id])
|
8
|
+
end
|
9
|
+
fail ActiveRecord::RecordNotFound unless @page && (@page.published? || preview?)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def preview?
|
15
|
+
session[Comable::Page::PREVIEW_SESSION_KEY] ||= {}
|
16
|
+
session[Comable::Page::PREVIEW_SESSION_KEY][@page.slug]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Comable
|
2
|
+
class ProductsController < Comable::ApplicationController
|
3
|
+
before_filter :load_category_and_products, only: :index
|
4
|
+
|
5
|
+
def index
|
6
|
+
@products = @products.page(params[:page]).per(Comable::Config.products_per_page)
|
7
|
+
end
|
8
|
+
|
9
|
+
def show
|
10
|
+
@product = Comable::Product.find(params[:id])
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def load_category_and_products
|
16
|
+
@category = Comable::Category.where(id: params[:category_id]).first
|
17
|
+
if @category
|
18
|
+
subtree_of_category = Comable::Category.subtree_of(@category)
|
19
|
+
@products = Comable::Product.eager_load(:categories).merge(subtree_of_category)
|
20
|
+
else
|
21
|
+
@products = Comable::Product.search(params[:q])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Comable
|
2
|
+
class UsersController < Comable::ApplicationController
|
3
|
+
include Comable::PermittedAttributes
|
4
|
+
|
5
|
+
before_filter :authenticate_user!
|
6
|
+
|
7
|
+
def show
|
8
|
+
@orders = current_comable_user.orders.page(params[:page]).per(Comable::Config.orders_per_page)
|
9
|
+
end
|
10
|
+
|
11
|
+
def update_addresses
|
12
|
+
current_comable_user.attributes = user_params
|
13
|
+
if current_comable_user.save
|
14
|
+
flash.now[:notice] = Comable.t('successful')
|
15
|
+
else
|
16
|
+
flash.now[:alert] = Comable.t('failure')
|
17
|
+
end
|
18
|
+
render :addresses
|
19
|
+
end
|
20
|
+
|
21
|
+
def user_params
|
22
|
+
params.require(:user).permit(
|
23
|
+
:bill_address_id,
|
24
|
+
:ship_address_id,
|
25
|
+
addresses_attributes: permitted_address_attributes
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Comable
|
2
|
+
module PaymentAction
|
3
|
+
private
|
4
|
+
|
5
|
+
# orderride OrdersController#order_params
|
6
|
+
def order_params
|
7
|
+
return super unless params[:state] == 'payment'
|
8
|
+
order_params_for_payment
|
9
|
+
end
|
10
|
+
|
11
|
+
def order_params_for_payment
|
12
|
+
params.fetch(:order, {}).permit(
|
13
|
+
payment_attributes: [:payment_method_id]
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Comable
|
2
|
+
module ShipmentAction
|
3
|
+
private
|
4
|
+
|
5
|
+
# orderride OrdersController#order_params
|
6
|
+
def order_params
|
7
|
+
return super unless params[:state] == 'shipment'
|
8
|
+
order_params_for_shipment
|
9
|
+
end
|
10
|
+
|
11
|
+
def order_params_for_shipment
|
12
|
+
params.fetch(:order, {}).permit(
|
13
|
+
shipment_attributes: [:shipment_method_id]
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Comable
|
2
|
+
module SigninAction
|
3
|
+
class << self
|
4
|
+
def prepended(base)
|
5
|
+
base.instance_eval do
|
6
|
+
before_filter :ensure_signed_in_or_guest, except: [:signin, :guest]
|
7
|
+
|
8
|
+
helper_method :resource
|
9
|
+
helper_method :resource_name
|
10
|
+
helper_method :devise_mapping
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def guest
|
16
|
+
if @order.state?(:cart) ? @order.next_state : @order.save
|
17
|
+
redirect_to next_order_path
|
18
|
+
else
|
19
|
+
render :signin
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def ensure_signed_in_or_guest
|
26
|
+
return if @order.email
|
27
|
+
store_location
|
28
|
+
redirect_to comable.signin_order_path
|
29
|
+
end
|
30
|
+
|
31
|
+
def resource
|
32
|
+
current_comable_user
|
33
|
+
end
|
34
|
+
|
35
|
+
def resource_name
|
36
|
+
:user
|
37
|
+
end
|
38
|
+
|
39
|
+
def devise_mapping
|
40
|
+
Devise.mappings[resource_name]
|
41
|
+
end
|
42
|
+
|
43
|
+
# orderride OrdersController#order_params
|
44
|
+
def order_params
|
45
|
+
return super unless action_name.in? %w( signin guest )
|
46
|
+
order_params_for_signin
|
47
|
+
end
|
48
|
+
|
49
|
+
def order_params_for_signin
|
50
|
+
params.fetch(:order, {}).permit(
|
51
|
+
:email
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#carts
|
2
|
+
section.cart.col-sm-8
|
3
|
+
h1
|
4
|
+
= Comable.t('shopping_cart')
|
5
|
+
|
6
|
+
- if current_comable_user.cart.errors.any?
|
7
|
+
.errors
|
8
|
+
ul
|
9
|
+
- current_comable_user.cart.errors.full_messages.each do |message|
|
10
|
+
li = message
|
11
|
+
|
12
|
+
- if current_comable_user.cart.empty?
|
13
|
+
= Comable.t('carts.empty')
|
14
|
+
- else
|
15
|
+
table
|
16
|
+
thead
|
17
|
+
tr
|
18
|
+
th
|
19
|
+
th
|
20
|
+
= Comable.t('price')
|
21
|
+
th
|
22
|
+
= Comable.t('quantity')
|
23
|
+
th
|
24
|
+
|
25
|
+
tbody
|
26
|
+
- current_comable_user.cart.each do |cart_item|
|
27
|
+
- stock = cart_item.stock
|
28
|
+
- product = stock.product
|
29
|
+
tr
|
30
|
+
td
|
31
|
+
.name
|
32
|
+
= link_to stock.name_with_sku, comable.product_path(product)
|
33
|
+
.caption
|
34
|
+
= product.caption
|
35
|
+
- if cart_item.unstocked?
|
36
|
+
.error.soldout = Comable.t('soldout')
|
37
|
+
td.price
|
38
|
+
= number_to_currency product.price
|
39
|
+
td.quantity
|
40
|
+
= form_tag comable.cart_path, method: :put do
|
41
|
+
.form-inline.form-group
|
42
|
+
- selected = cart_item.quantity
|
43
|
+
= select_tag :quantity, options_for_select(1.upto([10, selected].max).to_a, selected)
|
44
|
+
= hidden_field_tag :stock_id, stock.id
|
45
|
+
= submit_tag Comable.t('actions.update'), class: 'btn-default'
|
46
|
+
td
|
47
|
+
= link_to Comable.t('actions.destroy'), comable.cart_path(stock_id: stock.id), method: :delete
|
48
|
+
|
49
|
+
- if current_comable_user.cart.any?
|
50
|
+
section.order.col-sm-4
|
51
|
+
table
|
52
|
+
thead
|
53
|
+
tr
|
54
|
+
th colspan="2"
|
55
|
+
= form_for current_order, as: :order, url: comable.checkout_cart_path, method: :put do |f|
|
56
|
+
= f.submit Comable.t('checkout'), class: 'btn btn-primary btn-lg btn-block'
|
57
|
+
tbody
|
58
|
+
tr.price
|
59
|
+
th.text-right
|
60
|
+
= Comable.t('item_total_price')
|
61
|
+
td
|
62
|
+
= number_to_currency current_comable_user.cart.price
|
63
|
+
tr.count
|
64
|
+
th.text-right
|
65
|
+
= Comable.t('item_total_quantity')
|
66
|
+
td
|
67
|
+
= number_with_delimiter current_comable_user.cart.count
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#comable-home
|
2
|
+
section.comable-home-top
|
3
|
+
= image_tag 'comable/frontend/home-top.jpg'
|
4
|
+
|
5
|
+
section#comable-product
|
6
|
+
.container
|
7
|
+
.products
|
8
|
+
= render 'comable/shared/products'
|
9
|
+
|
10
|
+
section.comable-home-one
|
11
|
+
h2
|
12
|
+
= Comable.t('sample_header')
|
13
|
+
h3
|
14
|
+
= Comable.t('sample_subheader')
|
15
|
+
p
|
16
|
+
= Comable.t('sample_text')
|
17
|
+
|
18
|
+
section.comable-home-two
|
19
|
+
h2
|
20
|
+
= Comable.t('sample_header')
|
21
|
+
h3
|
22
|
+
= Comable.t('sample_subheader')
|
23
|
+
p
|
24
|
+
= Comable.t('sample_text')
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#comable-order
|
2
|
+
h1
|
3
|
+
= @order.class.human_state_name(:confirm)
|
4
|
+
|
5
|
+
section.col-sm-8
|
6
|
+
.row
|
7
|
+
.col-sm-4.comable-bill_address
|
8
|
+
h2
|
9
|
+
= @order.class.human_attribute_name(:bill_address)
|
10
|
+
.comable-email
|
11
|
+
= @order.email
|
12
|
+
= render 'comable/shared/address', address: @order.bill_address
|
13
|
+
|
14
|
+
.col-sm-4.comable-ship_address
|
15
|
+
h2
|
16
|
+
= @order.class.human_attribute_name(:ship_address)
|
17
|
+
= render 'comable/shared/address', address: @order.ship_address
|
18
|
+
|
19
|
+
- if @order.payment
|
20
|
+
.col-sm-4.comable-payment_method
|
21
|
+
h2
|
22
|
+
= @order.class.human_attribute_name(:payment_method)
|
23
|
+
= @order.payment.name
|
24
|
+
|
25
|
+
- if @order.shipment
|
26
|
+
.row
|
27
|
+
.col-sm-12.comable-shipment
|
28
|
+
h2
|
29
|
+
= @order.class.human_attribute_name(:shipment_method)
|
30
|
+
= @order.shipment.name
|
31
|
+
|
32
|
+
.row
|
33
|
+
.col-sm-12.comable-order_items
|
34
|
+
table
|
35
|
+
thead
|
36
|
+
tr
|
37
|
+
th
|
38
|
+
th
|
39
|
+
= @order.order_items.human_attribute_name(:price)
|
40
|
+
th
|
41
|
+
= @order.order_items.human_attribute_name(:quantity)
|
42
|
+
|
43
|
+
tbody
|
44
|
+
- @order.order_items.each do |order_item|
|
45
|
+
tr
|
46
|
+
td
|
47
|
+
.name
|
48
|
+
= order_item.name_with_sku
|
49
|
+
.caption
|
50
|
+
= order_item.product.caption
|
51
|
+
td.price
|
52
|
+
= number_to_currency order_item.price
|
53
|
+
td.quantity
|
54
|
+
= number_with_delimiter order_item.quantity
|
55
|
+
|
56
|
+
aside.col-sm-4
|
57
|
+
table
|
58
|
+
thead
|
59
|
+
tr
|
60
|
+
th colspan="2"
|
61
|
+
= form_for @order, as: :order, url: comable.order_path, method: :post do |f|
|
62
|
+
= f.submit Comable.t('complete_order')
|
63
|
+
tbody
|
64
|
+
tr
|
65
|
+
th.text-right
|
66
|
+
= @order.class.human_attribute_name(:item_total_price)
|
67
|
+
td
|
68
|
+
= number_to_currency @order.current_item_total_price
|
69
|
+
tr
|
70
|
+
th.text-right
|
71
|
+
= @order.class.human_attribute_name(:payment_fee)
|
72
|
+
td
|
73
|
+
= number_to_currency @order.current_payment_fee
|
74
|
+
tr
|
75
|
+
th.text-right
|
76
|
+
= @order.class.human_attribute_name(:shipment_fee)
|
77
|
+
td
|
78
|
+
= number_to_currency @order.current_shipment_fee
|
79
|
+
tr
|
80
|
+
th.text-right
|
81
|
+
= @order.class.human_attribute_name(:total_price)
|
82
|
+
td
|
83
|
+
= number_to_currency @order.current_total_price
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#comable-order
|
2
|
+
.comable-ship_address
|
3
|
+
h1
|
4
|
+
= @order.class.human_state_name(:delivery)
|
5
|
+
|
6
|
+
- if @order.ship_address.try(:persisted?)
|
7
|
+
= render 'comable/shared/address', address: @order.ship_address
|
8
|
+
= link_to Comable.t('next_step'), next_order_path
|
9
|
+
|
10
|
+
.edit.row
|
11
|
+
h2
|
12
|
+
= Comable.t('edit_shipping_address')
|
13
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
14
|
+
= f.fields_for :ship_address do |ff|
|
15
|
+
= render 'comable/shared/address_form', address: ff
|
16
|
+
= f.submit Comable.t('next_step')
|
17
|
+
|
18
|
+
- if current_comable_user.other_addresses.any?
|
19
|
+
.other_addresses.row
|
20
|
+
h2
|
21
|
+
= Comable.t('other_addresses')
|
22
|
+
ul.list-unstyled
|
23
|
+
- current_comable_user.addresses.each do |address|
|
24
|
+
- next if @order.ship_address.same_as? address
|
25
|
+
li.col-sm-4
|
26
|
+
= render 'comable/shared/address', address: address
|
27
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
28
|
+
.hidden
|
29
|
+
= f.fields_for :ship_address, address.clone do |ff|
|
30
|
+
= render 'comable/shared/address_form', address: ff
|
31
|
+
= f.submit Comable.t('use_this_address'), class: 'btn btn-default'
|
32
|
+
|
33
|
+
- else
|
34
|
+
/ TODO: Standardize
|
35
|
+
- if @order.errors.any?
|
36
|
+
.error_messages
|
37
|
+
ul
|
38
|
+
- @order.errors.full_messages.each do |full_message|
|
39
|
+
li = full_message
|
40
|
+
|
41
|
+
.new
|
42
|
+
h2
|
43
|
+
= Comable.t('new_shipping_address')
|
44
|
+
- @order.ship_address ||= @order.build_ship_address
|
45
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
46
|
+
= f.fields_for :ship_address do |ff|
|
47
|
+
= render 'comable/shared/address_form', address: ff
|
48
|
+
= f.submit Comable.t('next_step')
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#comable-order
|
2
|
+
.comable-bill_address
|
3
|
+
h1
|
4
|
+
= @order.class.human_state_name(:orderer)
|
5
|
+
|
6
|
+
- if @order.bill_address.try(:persisted?)
|
7
|
+
.comable-email
|
8
|
+
= @order.email
|
9
|
+
= render 'comable/shared/address', address: @order.bill_address
|
10
|
+
= link_to Comable.t('next_step'), next_order_path
|
11
|
+
|
12
|
+
.edit.row
|
13
|
+
h2
|
14
|
+
= Comable.t('edit_billing_address')
|
15
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
16
|
+
.form-group
|
17
|
+
.col-sm-2.control-label
|
18
|
+
= f.label :email
|
19
|
+
.col-sm-10
|
20
|
+
= f.email_field :email, placeholder: @order.class.human_attribute_name(:email)
|
21
|
+
|
22
|
+
= f.fields_for :bill_address do |ff|
|
23
|
+
= render 'comable/shared/address_form', address: ff
|
24
|
+
|
25
|
+
= f.submit Comable.t('next_step')
|
26
|
+
|
27
|
+
- if current_comable_user.other_addresses.any?
|
28
|
+
.other_addresses.row
|
29
|
+
h2
|
30
|
+
= Comable.t('other_addresses')
|
31
|
+
ul.list-unstyled
|
32
|
+
- current_comable_user.addresses.each do |address|
|
33
|
+
- next if @order.bill_address.same_as? address
|
34
|
+
li.col-sm-4
|
35
|
+
= render 'comable/shared/address', address: address
|
36
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
37
|
+
.hidden
|
38
|
+
= f.fields_for :bill_address, address.clone do |ff|
|
39
|
+
= render 'comable/shared/address_form', address: ff
|
40
|
+
= f.submit Comable.t('use_this_address'), class: 'btn btn-default'
|
41
|
+
|
42
|
+
- else
|
43
|
+
/ TODO: Standardize
|
44
|
+
- if @order.errors.any?
|
45
|
+
.error_messages
|
46
|
+
ul
|
47
|
+
- @order.errors.full_messages.each do |full_message|
|
48
|
+
li = full_message
|
49
|
+
|
50
|
+
.new
|
51
|
+
h2
|
52
|
+
= Comable.t('new_billing_address')
|
53
|
+
- @order.bill_address ||= @order.build_bill_address
|
54
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
55
|
+
.form-group
|
56
|
+
.col-sm-2.control-label
|
57
|
+
= f.label :email
|
58
|
+
.col-sm-10
|
59
|
+
= f.email_field :email, placeholder: @order.class.human_attribute_name(:email)
|
60
|
+
|
61
|
+
= f.fields_for :bill_address do |ff|
|
62
|
+
= render 'comable/shared/address_form', address: ff
|
63
|
+
|
64
|
+
= f.submit Comable.t('next_step')
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#comable-order
|
2
|
+
.comable-payment
|
3
|
+
h1
|
4
|
+
= @order.class.human_state_name(:payment)
|
5
|
+
|
6
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
7
|
+
- payment = @order.payment || @order.build_payment
|
8
|
+
= f.fields_for :payment, payment do |ff|
|
9
|
+
ul
|
10
|
+
- Comable::PaymentMethod.all.each.with_index do |payment_method, index|
|
11
|
+
li
|
12
|
+
- checked_flag = payment.payment_method ? (payment.payment_method == payment_method) : index.zero?
|
13
|
+
= ff.radio_button :payment_method_id, payment_method.id, checked: checked_flag
|
14
|
+
= ff.label :payment_method_id, payment_method.name, value: payment_method.id
|
15
|
+
= f.submit Comable.t('next_step')
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#comable-order
|
2
|
+
.comable-shipment
|
3
|
+
h1
|
4
|
+
= @order.class.human_state_name(:shipment)
|
5
|
+
|
6
|
+
= form_for @order, as: :order, url: update_order_path, method: :put do |f|
|
7
|
+
- shipment = @order.shipment || @order.build_shipment
|
8
|
+
= f.fields_for :shipment, shipment do |ff|
|
9
|
+
ul
|
10
|
+
- Comable::ShipmentMethod.activated.each.with_index do |shipment_method, index|
|
11
|
+
li
|
12
|
+
- checked_flag = shipment.shipment_method ? (shipment.shipment_method == shipment_method) : index.zero?
|
13
|
+
= ff.radio_button :shipment_method_id, shipment_method.id, checked: checked_flag
|
14
|
+
= ff.label :shipment_method_id, shipment_method.name, value: shipment_method.id
|
15
|
+
= f.submit Comable.t('next_step')
|