spree_backend 4.2.0.rc2 → 4.2.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +0 -1
  3. data/app/assets/javascripts/spree/backend/address_states.js +20 -9
  4. data/app/assets/javascripts/spree/backend/calculator.js +2 -0
  5. data/app/assets/javascripts/spree/backend/checkouts/edit.js +99 -71
  6. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +1 -1
  7. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +31 -37
  8. data/app/assets/javascripts/spree/backend/option_value_picker.js +50 -23
  9. data/app/assets/javascripts/spree/backend/product_picker.js +35 -19
  10. data/app/assets/javascripts/spree/backend/promotions.js +32 -27
  11. data/app/assets/javascripts/spree/backend/shipments.js +28 -37
  12. data/app/assets/javascripts/spree/backend/spree-select2.js +33 -14
  13. data/app/assets/javascripts/spree/backend/stock_transfer.js +32 -13
  14. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +30 -43
  15. data/app/assets/javascripts/spree/backend/taxons.js +60 -47
  16. data/app/assets/javascripts/spree/backend/user_picker.js +16 -18
  17. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +23 -22
  18. data/app/assets/stylesheets/spree/backend/components/_badges.scss +1 -1
  19. data/app/assets/stylesheets/spree/backend/components/_tables.scss +2 -2
  20. data/app/assets/stylesheets/spree/backend/global/_variables.scss +1 -1
  21. data/app/assets/stylesheets/spree/backend/plugins/_select2_custom.scss +11 -0
  22. data/app/assets/stylesheets/spree/backend/plugins/select2_bootstrap4.scss +622 -0
  23. data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +2 -1
  24. data/app/controllers/spree/admin/orders_controller.rb +15 -2
  25. data/app/controllers/spree/admin/products_controller.rb +2 -2
  26. data/app/controllers/spree/admin/states_controller.rb +1 -1
  27. data/app/controllers/spree/admin/taxons_controller.rb +15 -5
  28. data/app/helpers/spree/admin/base_helper.rb +21 -5
  29. data/app/helpers/spree/admin/navigation_helper.rb +11 -1
  30. data/app/helpers/spree/admin/payments_helper.rb +3 -3
  31. data/app/helpers/spree/admin/stock_movements_helper.rb +2 -0
  32. data/app/views/spree/admin/countries/index.html.erb +6 -6
  33. data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +3 -1
  34. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +3 -1
  35. data/app/views/spree/admin/customer_returns/index.html.erb +2 -2
  36. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  37. data/app/views/spree/admin/general_settings/edit.html.erb +25 -2
  38. data/app/views/spree/admin/option_types/index.html.erb +1 -1
  39. data/app/views/spree/admin/orders/_add_line_item.html.erb +1 -1
  40. data/app/views/spree/admin/orders/_add_product.html.erb +1 -1
  41. data/app/views/spree/admin/orders/_channel_form.html.erb +18 -0
  42. data/app/views/spree/admin/orders/_shipment.html.erb +3 -1
  43. data/app/views/spree/admin/orders/channel.html.erb +7 -0
  44. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +35 -12
  45. data/app/views/spree/admin/orders/customer_details/_form.html.erb +2 -2
  46. data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
  47. data/app/views/spree/admin/orders/index.html.erb +10 -11
  48. data/app/views/spree/admin/payment_methods/_form.html.erb +65 -46
  49. data/app/views/spree/admin/payment_methods/index.html.erb +1 -1
  50. data/app/views/spree/admin/products/_form.html.erb +4 -4
  51. data/app/views/spree/admin/products/index.html.erb +2 -1
  52. data/app/views/spree/admin/products/new.html.erb +2 -2
  53. data/app/views/spree/admin/promotion_rules/create.js.erb +1 -1
  54. data/app/views/spree/admin/promotions/_form.html.erb +1 -1
  55. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +1 -1
  56. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +8 -7
  57. data/app/views/spree/admin/promotions/rules/_product.html.erb +1 -1
  58. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +1 -1
  59. data/app/views/spree/admin/promotions/rules/_user.html.erb +1 -1
  60. data/app/views/spree/admin/refunds/new.html.erb +1 -1
  61. data/app/views/spree/admin/reimbursements/edit.html.erb +4 -2
  62. data/app/views/spree/admin/reimbursements/show.html.erb +3 -1
  63. data/app/views/spree/admin/return_authorizations/_form.html.erb +7 -5
  64. data/app/views/spree/admin/return_authorizations/index.html.erb +2 -2
  65. data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
  66. data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
  67. data/app/views/spree/admin/shared/_account_nav.html.erb +1 -1
  68. data/app/views/spree/admin/shared/_address_form.html.erb +7 -7
  69. data/app/views/spree/admin/shared/_head.html.erb +4 -0
  70. data/app/views/spree/admin/shared/_order_summary.html.erb +25 -21
  71. data/app/views/spree/admin/shared/_order_tabs.html.erb +9 -0
  72. data/app/views/spree/admin/shared/_refunds.html.erb +1 -1
  73. data/app/views/spree/admin/shared/_translations.html.erb +1 -0
  74. data/app/views/spree/admin/shared/_update_order_state.js.erb +6 -2
  75. data/app/views/spree/admin/shared/named_types/_index.html.erb +1 -1
  76. data/app/views/spree/admin/shipping_methods/_form.html.erb +2 -2
  77. data/app/views/spree/admin/shipping_methods/index.html.erb +5 -1
  78. data/app/views/spree/admin/stock_locations/_form.html.erb +1 -1
  79. data/app/views/spree/admin/stock_locations/index.html.erb +2 -2
  80. data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +1 -1
  81. data/app/views/spree/admin/stock_transfers/index.html.erb +42 -37
  82. data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
  83. data/app/views/spree/admin/stores/_form.html.erb +64 -11
  84. data/app/views/spree/admin/stores/index.html.erb +11 -6
  85. data/app/views/spree/admin/tax_categories/index.html.erb +1 -1
  86. data/app/views/spree/admin/tax_rates/index.html.erb +2 -2
  87. data/app/views/spree/admin/taxons/_form.html.erb +39 -35
  88. data/app/views/spree/admin/taxons/index.html.erb +1 -1
  89. data/app/views/spree/admin/users/_addresses_form.html.erb +4 -6
  90. data/app/views/spree/admin/variants/_form.html.erb +2 -2
  91. data/app/views/spree/admin/zones/index.html.erb +1 -1
  92. data/config/routes.rb +7 -1
  93. data/spree_backend.gemspec +1 -1
  94. metadata +15 -14
  95. data/app/assets/javascripts/spree/backend/tag_picker.js +0 -52
  96. data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +0 -190
  97. data/app/views/spree/admin/general_settings/_form.html.erb +0 -17
@@ -18,9 +18,10 @@
18
18
  @import 'components/progress';
19
19
  @import 'components/spinner';
20
20
 
21
- @import 'plugins/select2';
22
21
  @import 'plugins/jquery_ui';
23
22
  @import 'plugins/flatpickr';
23
+ @import 'plugins/select2_bootstrap4';
24
+ @import 'plugins/select2_custom';
24
25
 
25
26
  @import 'shared/base';
26
27
  @import 'shared/forms';
@@ -2,7 +2,10 @@ module Spree
2
2
  module Admin
3
3
  class OrdersController < Spree::Admin::BaseController
4
4
  before_action :initialize_order_events
5
- before_action :load_order, only: [:edit, :update, :cancel, :resume, :approve, :resend, :open_adjustments, :close_adjustments, :cart, :store, :set_store]
5
+ before_action :load_order, only: %i[
6
+ edit update cancel resume approve resend open_adjustments
7
+ close_adjustments cart store set_store channel set_channel
8
+ ]
6
9
 
7
10
  respond_to :html
8
11
 
@@ -144,11 +147,21 @@ module Spree
144
147
  redirect_to store_admin_order_url(@order)
145
148
  end
146
149
 
150
+ def set_channel
151
+ if @order.update(order_params)
152
+ flash[:success] = flash_message_for(@order, :successfully_updated)
153
+ else
154
+ flash[:error] = @order.errors.full_messages.join(', ')
155
+ end
156
+
157
+ redirect_to channel_admin_order_url(@order)
158
+ end
159
+
147
160
  private
148
161
 
149
162
  def order_params
150
163
  params[:created_by_id] = try_spree_current_user.try(:id)
151
- params.permit(:created_by_id, :user_id, :store_id)
164
+ params.permit(:created_by_id, :user_id, :store_id, :channel)
152
165
  end
153
166
 
154
167
  def load_order
@@ -20,10 +20,10 @@ module Spree
20
20
 
21
21
  def update
22
22
  if params[:product][:taxon_ids].present?
23
- params[:product][:taxon_ids] = params[:product][:taxon_ids].split(',')
23
+ params[:product][:taxon_ids] = params[:product][:taxon_ids].reject(&:empty?)
24
24
  end
25
25
  if params[:product][:option_type_ids].present?
26
- params[:product][:option_type_ids] = params[:product][:option_type_ids].split(',')
26
+ params[:product][:option_type_ids] = params[:product][:option_type_ids].reject(&:empty?)
27
27
  end
28
28
  invoke_callbacks(:update, :before)
29
29
  if @object.update(permitted_resource_params)
@@ -22,7 +22,7 @@ module Spree
22
22
  end
23
23
 
24
24
  def load_data
25
- @countries = Country.order(:name)
25
+ @countries = Spree::Country.where(states_required: true).order(:name)
26
26
  end
27
27
  end
28
28
  end
@@ -1,8 +1,8 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class TaxonsController < Spree::Admin::BaseController
4
- before_action :load_taxonomy, only: [:create, :edit, :update]
5
- before_action :load_taxon, only: [:edit, :update]
4
+ before_action :load_taxonomy, only: [:create, :edit, :update, :remove_icon]
5
+ before_action :load_taxon, only: [:edit, :update, :remove_icon]
6
6
  before_action :set_permalink_part, only: [:edit, :update]
7
7
  respond_to :html, :js
8
8
 
@@ -62,10 +62,22 @@ module Spree
62
62
  end
63
63
  end
64
64
 
65
+ def remove_icon
66
+ if @taxon.icon.destroy
67
+ flash[:success] = Spree.t('notice_messages.icon_removed')
68
+ redirect_to edit_admin_taxonomy_taxon_url(@taxonomy.id, @taxon.id)
69
+ else
70
+ flash[:error] = Spree.t('errors.messages.cannot_remove_icon')
71
+ render :edit
72
+ end
73
+ end
74
+
65
75
  private
66
76
 
67
77
  def set_permalink_part
68
78
  @permalink_part = @taxon.permalink.split('/').last
79
+ @parent_permalink = @taxon.permalink.split('/')[0...-1].join('/')
80
+ @parent_permalink += '/' unless @parent_permalink.blank?
69
81
  end
70
82
 
71
83
  def taxon_params
@@ -95,9 +107,7 @@ module Spree
95
107
 
96
108
  def set_permalink_params
97
109
  if params.key? 'permalink_part'
98
- parent_permalink = @taxon.permalink.split('/')[0...-1].join('/')
99
- parent_permalink += '/' unless parent_permalink.blank?
100
- params[:taxon][:permalink] = parent_permalink + params[:permalink_part]
110
+ params[:taxon][:permalink] = @parent_permalink + params[:permalink_part]
101
111
  end
102
112
  end
103
113
 
@@ -93,7 +93,9 @@ module Spree
93
93
  class: 'input_integer form-control'
94
94
  }
95
95
  when :boolean
96
- {}
96
+ {
97
+ class: 'form-check-input'
98
+ }
97
99
  when :string
98
100
  {
99
101
  size: 10,
@@ -127,11 +129,25 @@ module Spree
127
129
 
128
130
  fields = object.preferences.keys.map do |key|
129
131
  if object.has_preference?(key)
130
- form.label("preferred_#{key}", Spree.t(key) + ': ') +
131
- preference_field_for(form, "preferred_#{key}", type: object.preference_type(key))
132
+ case key
133
+ when :currency
134
+ content_tag(:div, form.label("preferred_#{key}", Spree.t(key)) +
135
+ (form.select "preferred_#{key}", currency_options(object.preferences[key]), {}, { class: 'form-control select2' }),
136
+ class: 'form-group', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
137
+ else
138
+ if object.preference_type(key) == :boolean
139
+ content_tag(:div, preference_field_for(form, "preferred_#{key}", type: object.preference_type(key)) +
140
+ form.label("preferred_#{key}", Spree.t(key), class: 'form-check-label'),
141
+ class: 'form-group form-check', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
142
+ else
143
+ content_tag(:div, form.label("preferred_#{key}", Spree.t(key)) +
144
+ preference_field_for(form, "preferred_#{key}", type: object.preference_type(key)),
145
+ class: 'form-group', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
146
+ end
147
+ end
132
148
  end
133
149
  end
134
- safe_join(fields, '<br />'.html_safe)
150
+ safe_join(fields)
135
151
  end
136
152
 
137
153
  # renders hidden field and link to remove record using nested_attributes
@@ -163,7 +179,7 @@ module Spree
163
179
  end
164
180
 
165
181
  def required_span_tag
166
- content_tag(:span, ' *', class: 'required')
182
+ content_tag(:span, ' *', class: 'required font-weight-bold text-danger')
167
183
  end
168
184
 
169
185
  def product_preview_link(product)
@@ -130,7 +130,7 @@ module Spree
130
130
 
131
131
  def link_to_clone(resource, options = {})
132
132
  options[:data] = { action: 'clone', 'original-title': Spree.t(:clone) }
133
- options[:class] = 'btn btn-primary btn-sm with-tip'
133
+ options[:class] = 'btn btn-warning btn-sm with-tip'
134
134
  options[:method] = :post
135
135
  options[:icon] = 'clone.svg'
136
136
  button_link_to '', clone_object_url(resource), options
@@ -251,6 +251,16 @@ module Spree
251
251
  end
252
252
  end
253
253
 
254
+ def active_badge(condition, options = {})
255
+ label = options[:label]
256
+ label ||= condition ? Spree.t(:say_yes) : Spree.t(:say_no)
257
+ css_class = condition ? 'badge-active' : 'badge-inactive'
258
+
259
+ content_tag(:strong, class: "badge #{css_class} text-uppercase") do
260
+ label
261
+ end
262
+ end
263
+
254
264
  def main_part_classes
255
265
  if cookies['sidebar-minimized'] == 'true'
256
266
  'col-12 sidebar-collapsed'
@@ -2,9 +2,9 @@ module Spree
2
2
  module Admin
3
3
  module PaymentsHelper
4
4
  def payment_method_name(payment)
5
- # HACK: to allow us to retrieve the name of a "deleted" payment method
6
- id = payment.payment_method_id
7
- Spree::PaymentMethod.find_with_destroyed(id).name
5
+ payment_method = payment.payment_method
6
+
7
+ link_to payment_method.name, spree.edit_admin_payment_method_path(payment_method)
8
8
  end
9
9
  end
10
10
  end
@@ -5,6 +5,8 @@ module Spree
5
5
  if stock_movement.originator.respond_to?(:number)
6
6
  if stock_movement.originator.respond_to?(:order)
7
7
  link_to stock_movement.originator.number, [:edit, :admin, stock_movement.originator.order]
8
+ elsif stock_movement.originator.is_a?(Spree::StockTransfer)
9
+ link_to stock_movement.originator.number, spree.admin_stock_transfer_url(stock_movement.originator)
8
10
  else
9
11
  stock_movement.originator.number
10
12
  end
@@ -10,9 +10,9 @@
10
10
  <thead>
11
11
  <tr data-hook="tax_header">
12
12
  <th><%= Spree.t(:country_name) %></th>
13
- <th><%= Spree.t(:iso3) %></th>
14
- <th><%= Spree.t(:states_required) %></th>
15
- <th><%= Spree.t(:zipcode_required) %></th>
13
+ <th class="text-center"><%= Spree.t(:iso3) %></th>
14
+ <th class="text-center"><%= Spree.t(:states_required) %></th>
15
+ <th class="text-center"><%= Spree.t(:zipcode_required) %></th>
16
16
  <th class="actions"></th>
17
17
  </tr>
18
18
  </thead>
@@ -20,9 +20,9 @@
20
20
  <% @countries.each do |country| %>
21
21
  <tr id="<%= spree_dom_id country %>" data-hook="country_row">
22
22
  <td><%= country.name %></td>
23
- <td><%= country.iso3 %></td>
24
- <td class="text-center"><%= country.states_required? ? Spree.t(:say_yes) : Spree.t(:say_no) %></td>
25
- <td class="text-center"><%= country.zipcode_required? ? Spree.t(:say_yes) : Spree.t(:say_no) %></td>
23
+ <td class="text-center"><%= country.iso3 %></td>
24
+ <td class="text-center"><%= active_badge(country.states_required?) %></td>
25
+ <td class="text-center"><%= active_badge(country.zipcode_required?) %></td>
26
26
  <td class="actions actions-2 text-right">
27
27
  <%= link_to_edit(country, no_text: true) if can? :edit, country %>
28
28
  <%= link_to_delete(country, no_text: true) if can? :delete, country %>
@@ -17,7 +17,9 @@
17
17
  <% return_items.each do |return_item| %>
18
18
  <tr>
19
19
  <td>
20
- <div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
20
+ <div class="variant-name">
21
+ <%= link_to return_item.inventory_unit.variant.name, spree.edit_admin_product_path(return_item.inventory_unit.variant.product) %>
22
+ </div>
21
23
  <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
22
24
  </td>
23
25
  <td>
@@ -25,7 +25,9 @@
25
25
  <%= item_fields.check_box :returned, {checked: false, class: 'add-item', "data-price" => return_item.pre_tax_amount}, '1', '0' %>
26
26
  </td>
27
27
  <td>
28
- <div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
28
+ <div class="variant-name">
29
+ <%= link_to return_item.inventory_unit.variant.name, spree.edit_admin_product_path(return_item.inventory_unit.variant.product) %>
30
+ </div>
29
31
  <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
30
32
  </td>
31
33
  <td>
@@ -32,9 +32,9 @@
32
32
  <td><%= pretty_time(customer_return.created_at) %></td>
33
33
  <td>
34
34
  <% if customer_return.fully_reimbursed? %>
35
- <span class="badge badge-success"><%= Spree.t(:reimbursed) %></span>
35
+ <strong class="badge badge-success text-uppercase"><%= Spree.t(:reimbursed) %></strong>
36
36
  <% else %>
37
- <span class="badge badge-info"><%= Spree.t(:incomplete) %></span>
37
+ <strong class="badge badge-inactive text-uppercase"><%= Spree.t(:incomplete) %></strong>
38
38
  <% end %>
39
39
  </td>
40
40
  <td class='actions actions-1' data-hook="admin_orders_customer_returns_index_row_actions">
@@ -24,7 +24,7 @@
24
24
 
25
25
  <%= f.field_container :stock_location, class: ['form-group'] do %>
26
26
  <%= f.label :stock_location, Spree.t(:stock_location) %> <span class="required">*</span>
27
- <%= f.select :stock_location_id, Spree::StockLocation.order_default.active.to_a.collect{|l|[l.name.humanize, l.id]}, {include_blank: true}, {class: 'select2', "data-placeholder" => Spree.t(:select_a_stock_location)} %>
27
+ <%= f.select :stock_location_id, Spree::StockLocation.order_default.active.to_a.collect{|l|[l.name.humanize, l.id]}, {include_blank: true}, {class: 'select2-clear', "data-placeholder" => Spree.t(:select_a_stock_location)} %>
28
28
  <%= f.error_message_on :stock_location %>
29
29
  <% end %>
30
30
  </div>
@@ -66,11 +66,34 @@
66
66
  </div>
67
67
 
68
68
  <div class="card-body">
69
+ <div class="alert alert-warning col-12">
70
+ This can be overriden by individual Store settings
71
+ </div>
69
72
  <div class="form-group">
70
- <%= label_tag :currency, Spree.t(:choose_currency) %>
73
+ <%= label_tag :currency, Spree.t(:default_currency) %>
71
74
  <%= select_tag :currency, currency_options %>
72
75
  </div>
73
- <%= render partial: 'form' %>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="card mb-3" id="general-settings-stores" data-hook="general_settings_stores">
80
+ <div class="card-header">
81
+ <h1 class="card-title mb-0 h5">
82
+ <%= Spree.t(:multiple_stores)%>
83
+ </h1>
84
+ </div>
85
+ <div class="card-body">
86
+ <div class="alert alert-warning col-12">
87
+ <%= Spree.t('show_store_currency_selector.long') %>
88
+ </div>
89
+ <div class="form-group">
90
+ <div class="checkbox">
91
+ <label>
92
+ <%= check_box('', :show_store_currency_selector, { checked: Spree::Config.show_store_currency_selector }) %>
93
+ <%= Spree.t('show_store_currency_selector.short') %>
94
+ </label>
95
+ </div>
96
+ </div>
74
97
  </div>
75
98
  </div>
76
99
  </div>
@@ -30,7 +30,7 @@
30
30
  </td>
31
31
  <td><%= option_type.name %></td>
32
32
  <td class="presentation"><%= option_type.presentation %></td>
33
- <td><%= option_type.filterable %></td>
33
+ <td><%= active_badge(option_type.filterable) %></td>
34
34
  <td class="actions actions-2 text-right">
35
35
  <%= link_to_edit(option_type, class: 'admin_edit_option_type', no_text: true) if can?(:edit, option_type) %>
36
36
  <%= link_to_delete(option_type, no_text: true) if can?(:delete, option_type) %>
@@ -9,7 +9,7 @@
9
9
  <div class="card-body">
10
10
  <div data-hook="add_product_name" class="form-group">
11
11
  <%= label_tag :add_line_item_variant_id, Spree.t(:name_or_sku) %>
12
- <%= hidden_field_tag :add_line_item_variant_id, "", class: "variant_autocomplete d-block w-100" %>
12
+ <%= select_tag 'add_line_item_variant_id', nil , class: 'variant_autocomplete d-block w-100' %>
13
13
  </div>
14
14
 
15
15
  <div id="stock_details"></div>
@@ -10,7 +10,7 @@
10
10
  <div class="card-body">
11
11
  <div data-hook="add_product_name">
12
12
  <%= label_tag :add_variant_id, Spree.t(:name_or_sku) %>
13
- <%= hidden_field_tag :add_variant_id, "", class: "variant_autocomplete d-block w-100" %>
13
+ <%= select_tag 'variants', nil, id: :add_variant_id, class: 'variant_autocomplete d-block w-100' %>
14
14
  </div>
15
15
 
16
16
  <div id="stock_details"></div>
@@ -0,0 +1,18 @@
1
+ <div data-hook="channel-form-container">
2
+ <%= form_for [:admin, order], method: :put, url: set_channel_admin_order_url do |f| %>
3
+ <fieldset>
4
+ <div data-hook="admin_order_channel_field">
5
+ <%= f.field_container :channel, class: %w[form-group] do %>
6
+ <%= f.label :channel, Spree.t(:channel) %>
7
+ <%= f.text_field :channel, name: 'channel', class: 'form-control' %>
8
+ <%= f.error_message_on :channel %>
9
+ <% end %>
10
+ </div>
11
+ <div class="form-actions" data-hook="buttons">
12
+ <%= button Spree.t('actions.update'), 'refresh', 'submit', { class: 'btn-success', data: { disable_with: "#{ Spree.t(:saving) }..." }} %>
13
+ <span class="or"><%= Spree.t(:or) %></span>
14
+ <%= button_link_to Spree.t('actions.cancel'), edit_admin_order_url(order), icon: 'delete' %>
15
+ </div>
16
+ <fieldset>
17
+ <% end %>
18
+ </div>
@@ -8,7 +8,9 @@
8
8
  -
9
9
  <span class="shipment-state"><%= Spree.t("shipment_states.#{shipment.state}") %></span>
10
10
  <%= Spree.t(:package_from) %>
11
- <strong class="stock-location-name" data-hook="stock-location-name">'<%= shipment.stock_location.name %>'</strong>
11
+ <strong class="stock-location-name" data-hook="stock-location-name">
12
+ <%= link_to shipment.stock_location.name, spree.edit_admin_stock_location_url(shipment.stock_location) %>
13
+ </strong>
12
14
  <% if shipment.ready? and can? :update, shipment %>
13
15
  <%= link_to Spree.t(:ship), 'javascript:;', class: 'ship ml-auto btn btn-success', data: { 'shipment-number' => shipment.number } %>
14
16
  <div class='clearfix'></div>
@@ -0,0 +1,7 @@
1
+ <%= render 'spree/admin/shared/order_tabs', current: :channel %>
2
+
3
+ <div data-hook="admin_order_edit_header">
4
+ <%= render 'spree/admin/shared/error_messages', target: @order %>
5
+ </div>
6
+
7
+ <%= render 'channel_form', order: @order if can?(:update, @order) %>
@@ -1,19 +1,42 @@
1
1
  <script type='text/template' id='customer_autocomplete_template'>
2
- <div class='customer-autocomplete-item'>
3
- <div class='customer-details'>
4
- <h5>{{customer.email}}</h5>
5
- {{#if bill_address.firstname }}
6
- <strong>{{t 'bill_address' }}</strong>
7
- {{bill_address.firstname}} {{bill_address.lastname}}<br>
8
- {{bill_address.address1}}, {{bill_address.address2}}<br>
9
- {{bill_address.city}}<br>
10
- {{#if bill_address.state_id }}
11
- {{bill_address.state.name}}
2
+ <div class='customer-autocomplete-item container'>
3
+ <div class="row">
4
+ <div class="col">
5
+ <h5><strong>Email:</strong> {{customer.email}}</h5>
6
+ </div>
7
+ </div>
8
+
9
+ <div class="row">
10
+ <div class='customer-details col-6'>
11
+ {{#if bill_address.firstname }}
12
+ <strong>{{t 'bill_address' }}</strong><br>
13
+ {{bill_address.firstname}} {{bill_address.lastname}}<br>
14
+ {{bill_address.address1}}, {{bill_address.address2}}<br>
15
+ {{bill_address.city}}<br>
16
+ {{#if bill_address.state_id }}
17
+ {{bill_address.state.name}}
18
+ {{else}}
19
+ {{bill_address.state_name}}
20
+ {{/if}}
21
+ {{bill_address.country.name}}
22
+ {{/if}}
23
+ </div>
24
+
25
+ <div class='customer-details col-6'>
26
+ {{#if ship_address.firstname }}
27
+ <strong>Shipping Address</strong><br>
28
+ {{ship_address.firstname}} {{ship_address.lastname}}<br>
29
+ {{ship_address.address1}}, {{ship_address.address2}}<br>
30
+ {{ship_address.city}}<br>
31
+ {{#if ship_address.state_id }}
32
+ {{ship_address.state.name}}
12
33
  {{else}}
13
- {{bill_address.state_name}}
34
+ {{ship_address.state_name}}
14
35
  {{/if}}
15
- {{bill_address.country.name}}
36
+ {{ship_address.country.name}}
16
37
  {{/if}}
17
38
  </div>
39
+
18
40
  </div>
41
+ </div>
19
42
  </script>