comable_frontend 0.2.2 → 0.2.3

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
  SHA1:
3
- metadata.gz: ca2beaee12b666d7de3aeb8c5ba9c884b325fac9
4
- data.tar.gz: b359b988a3320bf139e1cc3b9fea8925ffa733bf
3
+ metadata.gz: 32dbeca21c4c86948b916e807e6aaa2ed9bc0bcf
4
+ data.tar.gz: a54136ef96d2c802dbcd42b400877d1a1d93abea
5
5
  SHA512:
6
- metadata.gz: 6ca78ddf6ef0ec1b15b64fba72eea53f2691a7ced2a389a54142c5c4708a53c59262161ce45f8020f593208220ec34f49129222b173671be9a81b04a7dfada30
7
- data.tar.gz: f2f7f1a40860083fe4a0bdd0153458db2e0c38326af59076924189fb96a2c021b72e077ab46a65d96bf857142a4580c4385ab73be28ce0ae975d7a68746092b9
6
+ metadata.gz: 8c5bf6ff78e805fc86083aea2d7165d96ede22ef59bedd72f937a7c18bcd06a45f46970a866f9973eaf70088d21b3d3b3ac13bd8f6ca1bed19d551d18abe0515
7
+ data.tar.gz: 327fa0e0ae8e74745ecdceaaccd77fa998246c6f2389ec933bf7219303c0a7d53aba68f42fea3906d50ed21c4926c12ce7a1cc65e471bd7ab0e1029d10709015
@@ -1,8 +1,29 @@
1
1
  module Comable
2
2
  class CustomersController < Comable::ApplicationController
3
+ include Comable::PermittedAttributes
4
+
3
5
  before_filter :authenticate_customer!
4
6
 
5
7
  def show
6
8
  end
9
+
10
+ def addresses
11
+ return unless request.put?
12
+
13
+ current_customer.attributes = customer_params
14
+ if current_customer.save
15
+ flash.now[:notice] = 'Success'
16
+ else
17
+ flash.now[:alert] = 'Error'
18
+ end
19
+ end
20
+
21
+ def customer_params
22
+ params.require(:customer).permit(
23
+ :bill_address_id,
24
+ :ship_address_id,
25
+ addresses_attributes: permitted_address_attributes
26
+ )
27
+ end
7
28
  end
8
29
  end
@@ -2,24 +2,33 @@ module Comable
2
2
  class OrdersController < Comable::ApplicationController
3
3
  prepend Comable::ShipmentAction
4
4
  prepend Comable::PaymentAction
5
+ include Comable::PermittedAttributes
5
6
 
7
+ helper_method :next_order_path
8
+
9
+ # TODO: Change the method name to load_order_with_params
6
10
  before_filter :load_order
7
11
  before_filter :verify
12
+ # TODO: Remove
8
13
  after_filter :save_order, except: :create
9
14
 
10
15
  rescue_from Comable::InvalidOrder, with: :order_invalid
11
16
 
17
+ def new
18
+ redirect_to next_order_path unless agreement_required?
19
+ end
20
+
12
21
  def orderer
13
22
  case request.method_symbol
14
23
  when :post
15
- redirect_to comable.delivery_order_path
24
+ redirect_to next_order_path if @order.save
16
25
  end
17
26
  end
18
27
 
19
28
  def delivery
20
29
  case request.method_symbol
21
30
  when :post
22
- redirect_to next_order_path
31
+ redirect_to next_order_path if @order.save
23
32
  end
24
33
  end
25
34
 
@@ -40,8 +49,14 @@ module Comable
40
49
  Comable::OrderMailer.complete(@order).deliver if current_store.email_activate?
41
50
  end
42
51
 
52
+ # TODO: Switch to state_machine
53
+ # rubocop:disable all
43
54
  def next_order_path(target_action_name = nil)
44
55
  case (target_action_name || action_name).to_sym
56
+ when :new
57
+ orderer_required? ? comable.orderer_order_path : next_order_path(:orderer)
58
+ when :orderer
59
+ delivery_required? ? comable.delivery_order_path : next_order_path(:delivery)
45
60
  when :delivery
46
61
  shipment_required? ? comable.shipment_order_path : next_order_path(:shipment)
47
62
  when :shipment
@@ -50,6 +65,19 @@ module Comable
50
65
  comable.confirm_order_path
51
66
  end
52
67
  end
68
+ # rubocop:enable all
69
+
70
+ def agreement_required?
71
+ @order.customer.nil?
72
+ end
73
+
74
+ def orderer_required?
75
+ @order.bill_address.nil?
76
+ end
77
+
78
+ def delivery_required?
79
+ @order.ship_address.nil?
80
+ end
53
81
 
54
82
  def verify
55
83
  return if current_customer.cart.any?
@@ -77,19 +105,16 @@ module Comable
77
105
 
78
106
  def order_params_for_orderer
79
107
  params.require(:order).permit(
80
- :family_name,
81
- :first_name,
82
- :email
108
+ :family_name, # TODO: Remove
109
+ :first_name, # TODO: Remove
110
+ :email,
111
+ bill_address_attributes: permitted_address_attributes
83
112
  )
84
113
  end
85
114
 
86
115
  def order_params_for_delivery
87
116
  params.require(:order).permit(
88
- order_deliveries_attributes: [
89
- :id,
90
- :family_name,
91
- :first_name
92
- ]
117
+ ship_address_attributes: permitted_address_attributes
93
118
  )
94
119
  end
95
120
 
@@ -0,0 +1,15 @@
1
+ module Comable
2
+ module PermittedAttributes
3
+ def permitted_address_attributes
4
+ [
5
+ :family_name,
6
+ :first_name,
7
+ :zip_code,
8
+ :state_name,
9
+ :city,
10
+ :detail,
11
+ :phone_number
12
+ ]
13
+ end
14
+ end
15
+ end
@@ -19,6 +19,4 @@ ul.cart
19
19
  = submit_tag '変更'
20
20
 
21
21
  .order
22
- - next_path = comable.delivery_order_path if current_customer.signed_in?
23
- - next_path ||= comable.new_order_path
24
- = link_to '注文', next_path
22
+ = link_to '注文', comable.new_order_path
@@ -0,0 +1,14 @@
1
+ = render 'comable/shared/address', address: address
2
+
3
+ .buttons
4
+ .use_bill_address
5
+ - if address != address.customer.bill_address
6
+ = form_for current_customer, as: :customer, url: comable.addresses_customer_url, method: :put do |f|
7
+ = f.hidden_field :bill_address_id, value: address.id
8
+ = f.submit 'use as billing address'
9
+
10
+ .use_ship_address
11
+ - if address != address.customer.ship_address
12
+ = form_for current_customer, as: :customer, url: comable.addresses_customer_url, method: :put do |f|
13
+ = f.hidden_field :ship_address_id, value: address.id
14
+ = f.submit 'use as shipping address'
@@ -0,0 +1,52 @@
1
+ .customer
2
+ .addresses
3
+ h1
4
+ | Addresses
5
+
6
+ - if current_customer.errors.any?
7
+ .errors
8
+ ul
9
+ - current_customer.errors.full_messages.each do |full_message|
10
+ li = full_message
11
+
12
+ - if current_customer.addresses.empty?
13
+ .not_found
14
+ p
15
+ | Not found.
16
+ - else
17
+ .bill_address
18
+ h2
19
+ | Bill address
20
+ - if current_customer.bill_address
21
+ = render 'address', address: current_customer.bill_address
22
+ - else
23
+ .not_found
24
+ p
25
+ | Not found.
26
+
27
+ .ship_address
28
+ h2
29
+ | Ship address
30
+ - if current_customer.ship_address
31
+ = render 'address', address: current_customer.ship_address
32
+ - else
33
+ .not_found
34
+ p
35
+ | Not found.
36
+
37
+ .other_addresses
38
+ h2
39
+ | Other addresses
40
+ ul
41
+ - current_customer.other_addresses.each do |address|
42
+ li
43
+ = render 'address', address: address
44
+
45
+ .new_address
46
+ h2
47
+ | New Address
48
+ = form_for current_customer, as: :customer, url: comable.addresses_customer_url, method: :put do |f|
49
+ = f.fields_for :addresses, current_customer.addresses.build do |ff|
50
+ = render 'comable/shared/address_form', address: ff
51
+ .submit
52
+ = f.submit
@@ -1,37 +1,35 @@
1
1
  h1 注文情報確認
2
2
 
3
3
  .order
4
- .orderer
5
- h2 注文者
6
- .family_name
7
- = @order.family_name
8
- .first_name
9
- = @order.first_name
4
+ .bill_address
5
+ h2
6
+ | Billing address
7
+ = render 'comable/shared/address', address: @order.bill_address if @order.bill_address
10
8
 
11
- .deliveries
12
- - @order.order_deliveries.each.with_index(1) do |order_delivery, index|
13
- h2 = "配送先[#{index}]"
14
- .first_name
15
- = order_delivery.family_name
16
- .first_name
17
- = order_delivery.first_name
18
- .details
19
- - order_delivery.order_details.each do |order_detail|
20
- .name
21
- = order_detail.product.name
22
- .price
23
- = order_detail.price
24
- .quantity
25
- = order_detail.quantity
9
+ .ship_address
10
+ h2
11
+ | Shipping address
12
+ = render 'comable/shared/address', address: @order.ship_address if @order.ship_address
13
+
14
+ .details
15
+ h2
16
+ | Order details
17
+ - @order.order_deliveries.first.order_details.each do |order_detail|
18
+ .name
19
+ = order_detail.stock.name
20
+ .price
21
+ = order_detail.price
22
+ .quantity
23
+ = order_detail.quantity
26
24
 
27
25
  .total
28
26
  h2 お会計
29
27
  .item_total_price
30
- = @order.current_item_total_price
28
+ = number_to_currency @order.current_item_total_price
31
29
  .shipment_fee
32
- = @order.current_shipment_fee
30
+ = number_to_currency @order.current_shipment_fee
33
31
  .total_price
34
- = @order.current_total_price
32
+ = number_to_currency @order.current_total_price
35
33
 
36
34
  = form_for @order, as: :order, url: comable.order_path, method: :post do |f|
37
35
  = f.submit
@@ -1,8 +1,39 @@
1
- h1 配送先情報入力
2
-
3
- .orderer
4
- = form_for @order, as: :order, url: comable.delivery_order_path, method: :put do |f|
5
- = f.fields_for :order_deliveries do |order_delivery|
6
- = order_delivery.text_field :family_name, placeholder: '姓'
7
- = order_delivery.text_field :first_name, placeholder: '名'
8
- = f.submit
1
+ .order
2
+ .ship_address
3
+ h1
4
+ | Shipping address
5
+
6
+ - if @order.ship_address
7
+ = render 'comable/shared/address', address: @order.ship_address
8
+ = link_to 'Next step', next_order_path
9
+
10
+ - if current_customer.other_addresses.any?
11
+ .other_addresses
12
+ h2
13
+ | Other addresses
14
+ ul
15
+ - current_customer.addresses.each do |address|
16
+ - next if @order.ship_address.same_as? address
17
+ li
18
+ = render 'comable/shared/address', address: address
19
+ = form_for @order, as: :order, url: comable.delivery_order_path, method: :put do |f|
20
+ .hidden
21
+ = f.fields_for :ship_address, address.clone do |ff|
22
+ = render 'comable/shared/address_form', address: ff
23
+ = f.submit 'Use this'
24
+
25
+ - else
26
+ / TODO: Standardize
27
+ - if @order.errors.any?
28
+ .error_messages
29
+ ul
30
+ - @order.errors.full_messages.each do |full_message|
31
+ li = full_message
32
+
33
+ .new
34
+ h2
35
+ | New shipping address
36
+ = form_for @order, as: :order, url: comable.delivery_order_path, method: :put do |f|
37
+ = f.fields_for :ship_address do |ff|
38
+ = render 'comable/shared/address_form', address: ff
39
+ = f.submit
@@ -1,4 +1,4 @@
1
1
  h1 注文
2
2
 
3
3
  .order
4
- = link_to '規約に同意して注文', comable.orderer_order_path
4
+ = link_to '規約に同意して注文', next_order_path
@@ -1,8 +1,46 @@
1
- h1 注文者情報入力
2
-
3
- .orderer
4
- = form_for @order, as: :order, url: comable.orderer_order_path, method: :put do |f|
5
- = f.text_field :family_name, placeholder: '姓'
6
- = f.text_field :first_name, placeholder: '名'
7
- = f.email_field :email, placeholder: @order.class.human_attribute_name(:email)
8
- = f.submit
1
+ .order
2
+ .bill_address
3
+ h1
4
+ | Billing address
5
+
6
+ - if @order.bill_address
7
+ = render 'comable/shared/address', address: @order.bill_address
8
+ = link_to 'Next step', next_order_path
9
+
10
+ - if current_customer.other_addresses.any?
11
+ .other_addresses
12
+ h2
13
+ | Other addresses
14
+ ul
15
+ - current_customer.addresses.each do |address|
16
+ - next if @order.bill_address.same_as? address
17
+ li
18
+ = render 'comable/shared/address', address: address
19
+ = form_for @order, as: :order, url: comable.orderer_order_path, method: :put do |f|
20
+ .hidden
21
+ = f.fields_for :bill_address, address.clone do |ff|
22
+ = render 'comable/shared/address_form', address: ff
23
+ = f.submit 'Use this'
24
+
25
+ - else
26
+ / TODO: Standardize
27
+ - if @order.errors.any?
28
+ .error_messages
29
+ ul
30
+ - @order.errors.full_messages.each do |full_message|
31
+ li = full_message
32
+
33
+ .new
34
+ h2
35
+ | New billing address
36
+ = form_for @order, as: :order, url: comable.orderer_order_path, method: :put do |f|
37
+ = f.email_field :email, placeholder: @order.class.human_attribute_name(:email)
38
+ = f.fields_for :bill_address do |ff|
39
+ = render 'comable/shared/address_form', address: ff
40
+ = f.submit
41
+
42
+ / for old spec
43
+ / TODO: Remove
44
+ .hidden
45
+ = f.text_field :family_name, placeholder: '姓'
46
+ = f.text_field :first_name, placeholder: '名'
@@ -0,0 +1,20 @@
1
+ dl
2
+ .name
3
+ dt = address.class.human_attribute_name(:family_name)
4
+ dd = address.family_name
5
+ dt = address.class.human_attribute_name(:first_name)
6
+ dd = address.first_name
7
+ .address
8
+ .state
9
+ dt = address.class.human_attribute_name(:state_name)
10
+ dd = address.state_name
11
+ .zip_code
12
+ dt = address.class.human_attribute_name(:zip_code)
13
+ dd = address.zip_code
14
+ .city
15
+ dt = address.class.human_attribute_name(:city)
16
+ dd = address.city
17
+ .other
18
+ .phone_number
19
+ dt = address.class.human_attribute_name(:phone_number)
20
+ dd = address.phone_number
@@ -0,0 +1,21 @@
1
+ .name
2
+ = address.label :family_name
3
+ = address.text_field :family_name
4
+ = address.label :first_name
5
+ = address.text_field :first_name
6
+
7
+ .address
8
+ .state
9
+ = address.label :state_name
10
+ = address.text_field :state_name
11
+ .zip_code
12
+ = address.label :zip_code
13
+ = address.text_field :zip_code, max_length: 8
14
+ .city
15
+ = address.label :city
16
+ = address.text_field :city
17
+
18
+ .other
19
+ .phone_number
20
+ = address.label :phone_number
21
+ = address.text_field :phone_number, max_length: 18
@@ -13,6 +13,9 @@ html
13
13
  = javascript_include_tag "comable/application"
14
14
  = csrf_meta_tags
15
15
 
16
+ css:
17
+ .hidden { display: none; }
18
+
16
19
  body
17
20
  - flash.each do |name, msg|
18
21
  = content_tag(:div, msg, id: "flash_#{name}")
data/config/routes.rb CHANGED
@@ -25,5 +25,10 @@ Comable::Core::Engine.routes.draw do
25
25
 
26
26
  devise_for :customer, path: :member, class_name: Comable::Customer.name, module: :devise
27
27
 
28
- resource :customer, path: :member
28
+ resource :customer, path: :member do
29
+ member do
30
+ get :addresses
31
+ put :addresses
32
+ end
33
+ end
29
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comable_frontend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - YOSHIDA Hiroki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-04 00:00:00.000000000 Z
11
+ date: 2014-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: comable_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.2
19
+ version: 0.2.3
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: 0.2.2
26
+ version: 0.2.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,8 +81,11 @@ files:
81
81
  - app/controllers/comable/orders_controller.rb
82
82
  - app/controllers/comable/products_controller.rb
83
83
  - app/controllers/concerns/comable/payment_action.rb
84
+ - app/controllers/concerns/comable/permitted_attributes.rb
84
85
  - app/controllers/concerns/comable/shipment_action.rb
85
86
  - app/views/comable/carts/show.slim
87
+ - app/views/comable/customers/_address.slim
88
+ - app/views/comable/customers/addresses.slim
86
89
  - app/views/comable/customers/show.slim
87
90
  - app/views/comable/orders/confirm.slim
88
91
  - app/views/comable/orders/create.slim
@@ -93,6 +96,8 @@ files:
93
96
  - app/views/comable/orders/shipment.slim
94
97
  - app/views/comable/products/index.slim
95
98
  - app/views/comable/products/show.slim
99
+ - app/views/comable/shared/_address.slim
100
+ - app/views/comable/shared/_address_form.slim
96
101
  - app/views/layouts/comable/application.slim
97
102
  - config/routes.rb
98
103
  - lib/comable/frontend/engine.rb