spree_backend 4.2.0.rc2 → 4.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend.js +1 -2
- data/app/assets/javascripts/spree/backend/address_states.js +20 -9
- data/app/assets/javascripts/spree/backend/admin.js +9 -15
- data/app/assets/javascripts/spree/backend/calculator.js +2 -0
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +99 -71
- data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +1 -1
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +31 -37
- data/app/assets/javascripts/spree/backend/option_value_picker.js +50 -23
- data/app/assets/javascripts/spree/backend/product_picker.js +35 -19
- data/app/assets/javascripts/spree/backend/promotions.js +32 -27
- data/app/assets/javascripts/spree/backend/shipments.js +28 -37
- data/app/assets/javascripts/spree/backend/spree-select2.js +33 -14
- data/app/assets/javascripts/spree/backend/stock_transfer.js +32 -13
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +30 -43
- data/app/assets/javascripts/spree/backend/taxons.js +60 -47
- data/app/assets/javascripts/spree/backend/user_picker.js +16 -18
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js +23 -22
- data/app/assets/stylesheets/spree/backend/components/_badges.scss +1 -1
- data/app/assets/stylesheets/spree/backend/components/_tables.scss +2 -2
- data/app/assets/stylesheets/spree/backend/global/_mixins.scss +19 -0
- data/app/assets/stylesheets/spree/backend/global/_variables.scss +1 -1
- data/app/assets/stylesheets/spree/backend/plugins/_flatpickr.scss +94 -76
- data/app/assets/stylesheets/spree/backend/plugins/_select2_custom.scss +11 -0
- data/app/assets/stylesheets/spree/backend/plugins/select2_bootstrap4.scss +622 -0
- data/app/assets/stylesheets/spree/backend/shared/_base.scss +4 -0
- data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +3 -1
- data/app/controllers/spree/admin/base_controller.rb +2 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
- data/app/controllers/spree/admin/images_controller.rb +3 -3
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -1
- data/app/controllers/spree/admin/orders_controller.rb +15 -2
- data/app/controllers/spree/admin/prices_controller.rb +0 -13
- data/app/controllers/spree/admin/products_controller.rb +2 -2
- data/app/controllers/spree/admin/states_controller.rb +1 -1
- data/app/controllers/spree/admin/stores_controller.rb +7 -14
- data/app/controllers/spree/admin/taxons_controller.rb +15 -5
- data/app/helpers/spree/admin/base_helper.rb +68 -6
- data/app/helpers/spree/admin/navigation_helper.rb +11 -1
- data/app/helpers/spree/admin/payments_helper.rb +3 -3
- data/app/helpers/spree/admin/stock_movements_helper.rb +2 -0
- data/app/views/kaminari/admin-twitter-bootstrap-4/_first_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_gap.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_last_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_next_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_paginator.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_prev_page.html.erb +2 -2
- data/app/views/spree/admin/adjustments/index.html.erb +2 -2
- data/app/views/spree/admin/countries/index.html.erb +6 -6
- data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +48 -46
- data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +3 -1
- data/app/views/spree/admin/customer_returns/edit.html.erb +1 -1
- data/app/views/spree/admin/customer_returns/index.html.erb +2 -2
- data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
- data/app/views/spree/admin/general_settings/edit.html.erb +27 -4
- data/app/views/spree/admin/images/edit.html.erb +1 -1
- data/app/views/spree/admin/log_entries/index.html.erb +1 -1
- data/app/views/spree/admin/option_types/index.html.erb +2 -2
- data/app/views/spree/admin/orders/_add_line_item.html.erb +1 -1
- data/app/views/spree/admin/orders/_add_product.html.erb +1 -1
- data/app/views/spree/admin/orders/_adjustments.html.erb +2 -2
- data/app/views/spree/admin/orders/_channel_form.html.erb +18 -0
- data/app/views/spree/admin/orders/_form.html.erb +6 -10
- data/app/views/spree/admin/orders/_line_items.html.erb +1 -1
- data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +5 -8
- data/app/views/spree/admin/orders/_order_actions.html.erb +1 -2
- data/app/views/spree/admin/orders/_risk_analysis.html.erb +3 -3
- data/app/views/spree/admin/orders/_shipment.html.erb +3 -2
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +1 -1
- data/app/views/spree/admin/orders/cart.html.erb +1 -1
- data/app/views/spree/admin/orders/channel.html.erb +7 -0
- data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +35 -12
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +3 -3
- data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
- data/app/views/spree/admin/orders/edit.html.erb +1 -1
- data/app/views/spree/admin/orders/index.html.erb +12 -11
- data/app/views/spree/admin/payment_methods/_form.html.erb +65 -46
- data/app/views/spree/admin/payment_methods/index.html.erb +2 -2
- data/app/views/spree/admin/payments/_form.html.erb +2 -3
- data/app/views/spree/admin/payments/show.html.erb +1 -2
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +3 -4
- data/app/views/spree/admin/payments/source_views/_gateway.html.erb +1 -1
- data/app/views/spree/admin/prices/_variant_prices.html.erb +5 -5
- data/app/views/spree/admin/prices/index.html.erb +2 -2
- data/app/views/spree/admin/product_properties/index.html.erb +3 -4
- data/app/views/spree/admin/products/_form.html.erb +8 -9
- data/app/views/spree/admin/products/index.html.erb +2 -1
- data/app/views/spree/admin/products/new.html.erb +5 -3
- data/app/views/spree/admin/products/stock.html.erb +2 -2
- data/app/views/spree/admin/promotion_rules/create.js.erb +1 -1
- data/app/views/spree/admin/promotions/_actions.html.erb +2 -3
- data/app/views/spree/admin/promotions/_form.html.erb +10 -11
- data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +1 -1
- data/app/views/spree/admin/promotions/index.html.erb +7 -5
- data/app/views/spree/admin/promotions/rules/_option_value.html.erb +8 -7
- data/app/views/spree/admin/promotions/rules/_product.html.erb +1 -1
- data/app/views/spree/admin/promotions/rules/_taxon.html.erb +2 -2
- data/app/views/spree/admin/promotions/rules/_user.html.erb +1 -1
- data/app/views/spree/admin/prototypes/_form.html.erb +1 -1
- data/app/views/spree/admin/prototypes/show.html.erb +1 -1
- data/app/views/spree/admin/refunds/edit.html.erb +2 -2
- data/app/views/spree/admin/refunds/new.html.erb +3 -3
- data/app/views/spree/admin/reimbursements/edit.html.erb +5 -4
- data/app/views/spree/admin/reimbursements/show.html.erb +3 -1
- data/app/views/spree/admin/return_authorizations/_form.html.erb +7 -5
- data/app/views/spree/admin/return_authorizations/index.html.erb +2 -2
- data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
- data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
- data/app/views/spree/admin/roles/index.html.erb +1 -1
- data/app/views/spree/admin/shared/_account_nav.html.erb +3 -3
- data/app/views/spree/admin/shared/_address_form.html.erb +9 -9
- data/app/views/spree/admin/shared/_error_messages.html.erb +1 -1
- data/app/views/spree/admin/shared/_head.html.erb +6 -2
- data/app/views/spree/admin/shared/_header.html.erb +0 -2
- data/app/views/spree/admin/shared/_main_menu.html.erb +1 -1
- data/app/views/spree/admin/shared/_order_summary.html.erb +25 -21
- data/app/views/spree/admin/shared/_order_tabs.html.erb +9 -0
- data/app/views/spree/admin/shared/_refunds.html.erb +2 -2
- data/app/views/spree/admin/shared/_report_order_criteria.html.erb +4 -2
- data/app/views/spree/admin/shared/_translations.html.erb +9 -38
- data/app/views/spree/admin/shared/_update_order_state.js.erb +6 -2
- data/app/views/spree/admin/shared/named_types/_index.html.erb +1 -1
- data/app/views/spree/admin/shipping_categories/index.html.erb +2 -2
- data/app/views/spree/admin/shipping_methods/_form.html.erb +2 -2
- data/app/views/spree/admin/shipping_methods/index.html.erb +7 -3
- data/app/views/spree/admin/states/index.html.erb +2 -2
- data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
- data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +1 -1
- data/app/views/spree/admin/stock_locations/index.html.erb +6 -6
- data/app/views/spree/admin/stock_movements/_form.html.erb +1 -1
- data/app/views/spree/admin/stock_movements/index.html.erb +2 -2
- data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/index.html.erb +42 -37
- data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/show.html.erb +0 -1
- data/app/views/spree/admin/stores/_form.html.erb +83 -25
- data/app/views/spree/admin/stores/index.html.erb +15 -8
- data/app/views/spree/admin/tax_categories/index.html.erb +3 -3
- data/app/views/spree/admin/tax_rates/index.html.erb +8 -8
- data/app/views/spree/admin/taxonomies/_js_head.html.erb +1 -2
- data/app/views/spree/admin/taxonomies/_list.html.erb +1 -1
- data/app/views/spree/admin/taxons/_form.html.erb +38 -35
- data/app/views/spree/admin/taxons/_taxon_table.html.erb +2 -2
- data/app/views/spree/admin/taxons/index.html.erb +1 -1
- data/app/views/spree/admin/users/_addresses_form.html.erb +4 -6
- data/app/views/spree/admin/users/_form.html.erb +0 -1
- data/app/views/spree/admin/users/edit.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +2 -2
- data/app/views/spree/admin/users/items.html.erb +1 -1
- data/app/views/spree/admin/variants/_form.html.erb +5 -3
- data/app/views/spree/admin/zones/_country_members.html.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +2 -2
- data/app/views/spree/admin/zones/index.html.erb +1 -1
- data/app/views/spree/admin/zones/new.html.erb +1 -1
- data/app/views/spree/layouts/admin.html.erb +2 -3
- data/config/initializers/assets.rb +1 -1
- data/config/routes.rb +7 -1
- data/spree_backend.gemspec +2 -2
- metadata +20 -20
- data/app/assets/javascripts/spree/backend/flatpickr_locals.js +0 -37
- data/app/assets/javascripts/spree/backend/tag_picker.js +0 -52
- data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +0 -190
- data/app/helpers/spree/admin/currency_helper.rb +0 -14
- data/app/views/spree/admin/general_settings/_form.html.erb +0 -17
@@ -2,11 +2,11 @@
|
|
2
2
|
<div id="variant_prices-table-wrapper">
|
3
3
|
<table class="table sortable">
|
4
4
|
<colgroup>
|
5
|
-
<col style="width: 15%"
|
6
|
-
<col style="width: 30%"
|
7
|
-
<col style="width: 15%"
|
8
|
-
<col style="width: 20%"
|
9
|
-
<col style="width: 20%"
|
5
|
+
<col style="width: 15%">
|
6
|
+
<col style="width: 30%">
|
7
|
+
<col style="width: 15%">
|
8
|
+
<col style="width: 20%">
|
9
|
+
<col style="width: 20%">
|
10
10
|
</colgroup>
|
11
11
|
<thead>
|
12
12
|
<tr data-hook="variant_prices_header">
|
@@ -6,11 +6,11 @@
|
|
6
6
|
<% end %>
|
7
7
|
|
8
8
|
<form>
|
9
|
-
<input class="form-control" placeholder="<%= Spree.t('variant_prices_search_placeholder') %>" type="text" id="variant-price-search"
|
9
|
+
<input class="form-control" placeholder="<%= Spree.t('variant_prices_search_placeholder') %>" type="text" id="variant-price-search">
|
10
10
|
</form>
|
11
11
|
|
12
12
|
<%= form_tag nil, { class: 'form-horizontal' } do %>
|
13
|
-
<div class="
|
13
|
+
<div class="my-3">
|
14
14
|
<%= render 'variant_prices', variant: @product.master %>
|
15
15
|
</div>
|
16
16
|
<div class="form-actions" data-hook="buttons">
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<%= form_for @product, url: spree.admin_product_url(@product), method: :put do |f| %>
|
20
20
|
<fieldset>
|
21
21
|
<div id="prototypes" data-hook></div>
|
22
|
-
<div class=" table-responsive">
|
22
|
+
<div class=" table-responsive mb-3">
|
23
23
|
<table id="product_properties" class="table sortable" data-hook data-sortable-link="<%= update_positions_admin_product_product_properties_url %>">
|
24
24
|
<thead>
|
25
25
|
<tr data-hook="product_properties_header">
|
@@ -41,7 +41,7 @@
|
|
41
41
|
</fieldset>
|
42
42
|
<% end %>
|
43
43
|
|
44
|
-
|
44
|
+
<script>
|
45
45
|
var properties = <%= raw(@properties.to_json) %>;
|
46
46
|
$('#product_properties').on('keydown', 'input.autocomplete', function() {
|
47
47
|
already_auto_completed = $(this).is('ac_input');
|
@@ -50,8 +50,7 @@
|
|
50
50
|
$(this).focus();
|
51
51
|
}
|
52
52
|
});
|
53
|
-
|
54
|
-
|
53
|
+
</script>
|
55
54
|
|
56
55
|
<style>
|
57
56
|
div.ui-helper-hidden-accessible {display:none;}
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
1
|
<div data-hook="admin_product_form_fields">
|
3
|
-
|
4
2
|
<div class="row">
|
5
3
|
|
6
4
|
<div class="col-12 col-md-8" data-hook="admin_product_form_left">
|
@@ -56,7 +54,7 @@
|
|
56
54
|
<div data-hook="admin_product_form_cost_currency" class="omega two columns">
|
57
55
|
<%= f.field_container :cost_currency, class: ['form-group'] do %>
|
58
56
|
<%= f.label :cost_currency, Spree.t(:cost_currency) %>
|
59
|
-
<%= f.
|
57
|
+
<%= f.select :cost_currency, currency_options(@product.cost_currency), {}, { class: 'select2' } %>
|
60
58
|
<%= f.error_message_on :cost_currency %>
|
61
59
|
<% end %>
|
62
60
|
</div>
|
@@ -68,7 +66,8 @@
|
|
68
66
|
|
69
67
|
<div class="input-group datePickerFrom"
|
70
68
|
data-wrap="true"
|
71
|
-
data-
|
69
|
+
data-alt-format="<%= Spree.t(:fpr_human_friendly_date_format, scope: 'date_picker', default: 'M j, Y') %>"
|
70
|
+
data-max-date="<%= @product.discontinue_on %>">
|
72
71
|
|
73
72
|
<%= f.text_field :available_on,
|
74
73
|
value: datepicker_field_value(@product.available_on),
|
@@ -81,7 +80,6 @@
|
|
81
80
|
<% end %>
|
82
81
|
</div>
|
83
82
|
|
84
|
-
|
85
83
|
<div data-hook="admin_product_form_discontinue_on">
|
86
84
|
<%= f.field_container :discontinue_on, class: ['form-group'] do %>
|
87
85
|
<%= f.label :discontinue_on, Spree.t(:discontinue_on) %>
|
@@ -89,7 +87,8 @@
|
|
89
87
|
|
90
88
|
<div class="input-group datePickerTo"
|
91
89
|
data-wrap="true"
|
92
|
-
data-
|
90
|
+
data-alt-format="<%= Spree.t(:fpr_human_friendly_date_format, scope: 'date_picker', default: 'M j, Y') %>"
|
91
|
+
data-min-date="<%= @product.available_on %>">
|
93
92
|
|
94
93
|
<%= f.text_field :discontinue_on,
|
95
94
|
value: datepicker_field_value(@product.discontinue_on),
|
@@ -195,7 +194,7 @@
|
|
195
194
|
<%= f.label :taxon_ids, Spree.t(:taxons) %>
|
196
195
|
|
197
196
|
<% if can? :modify, Spree::Classification %>
|
198
|
-
<%= f.
|
197
|
+
<%= f.select :taxon_ids, options_from_collection_for_select(@product.taxons, :id, :pretty_name, @product.taxons.pluck(:id)), { include_hidden: true }, multiple: true, class: 'select2-hidden-accessible' %>
|
199
198
|
<% elsif @product.taxons.any? %>
|
200
199
|
<ul class="text_list">
|
201
200
|
<% @product.taxons.each do |taxon| %>
|
@@ -214,7 +213,7 @@
|
|
214
213
|
<%= f.label :option_type_ids, Spree.t(:option_types) %>
|
215
214
|
|
216
215
|
<% if can? :modify, Spree::ProductOptionType %>
|
217
|
-
<%= f.
|
216
|
+
<%= f.select :option_type_ids, options_from_collection_for_select(Spree::OptionType.all, :id, :name, @product.option_types.pluck(:id)), { include_hidden: true }, multiple: true, class: 'select2-hidden-accessible' %>
|
218
217
|
<% elsif @product.option_types.any? %>
|
219
218
|
<ul class="text_list">
|
220
219
|
<% @product.option_types.each do |type| %>
|
@@ -246,7 +245,7 @@
|
|
246
245
|
<div data-hook="admin_product_form_meta_description">
|
247
246
|
<%= f.field_container :meta_description, class: ['form-group'] do %>
|
248
247
|
<%= f.label :meta_description, Spree.t(:meta_description) %>
|
249
|
-
<%= f.
|
248
|
+
<%= f.text_area :meta_description, class: 'form-control' %>
|
250
249
|
<% end %>
|
251
250
|
</div>
|
252
251
|
|
@@ -64,6 +64,7 @@
|
|
64
64
|
</thead>
|
65
65
|
<tbody>
|
66
66
|
<% @collection.each do |product| %>
|
67
|
+
<% available_status = available_status(product) %>
|
67
68
|
<tr <%== "style='color: red;'" if product.deleted? %> id="<%= spree_dom_id product %>" data-hook="admin_products_index_rows" class="<%= cycle('odd', 'even') %>">
|
68
69
|
<td scope="row" class="image">
|
69
70
|
<%= link_to edit_admin_product_path(product) do %>
|
@@ -72,7 +73,7 @@
|
|
72
73
|
</td>
|
73
74
|
<td><%= link_to product.try(:name), edit_admin_product_path(product) %></td>
|
74
75
|
<td class="sku"><%= product.sku rescue '' %></td>
|
75
|
-
<td class="status"><%= available_status(
|
76
|
+
<td class="status"><%= active_badge(available_status == Spree.t(:available), label: available_status) %></td>
|
76
77
|
<td class="text-center"><%= display_price(product) %></td>
|
77
78
|
<td class="actions " data-hook="admin_products_index_row_actions">
|
78
79
|
<span class="d-flex justify-content-end">
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<div data-hook="new_product_prototype" class="col-12 col-md-4">
|
28
28
|
<%= f.field_container :prototype, class: ['form-group'] do %>
|
29
29
|
<%= f.label :prototype_id, Spree.t(:prototype) %>
|
30
|
-
<%= f.collection_select :prototype_id, Spree::Prototype.all, :id, :name, {include_blank: true}, {class: 'select2'} %>
|
30
|
+
<%= f.collection_select :prototype_id, Spree::Prototype.all, :id, :name, { include_blank: true }, { class: 'select2-clear w-100' } %>
|
31
31
|
<% end %>
|
32
32
|
</div>
|
33
33
|
|
@@ -44,7 +44,9 @@
|
|
44
44
|
<%= f.label :available_on, Spree.t(:available_on) %>
|
45
45
|
<%= f.error_message_on :available_on %>
|
46
46
|
|
47
|
-
<div class="input-group datepicker"
|
47
|
+
<div class="input-group datepicker"
|
48
|
+
data-wrap="true"
|
49
|
+
data-alt-format="<%= Spree.t(:fpr_human_friendly_date_format, scope: 'date_picker', default: 'M j, Y') %>">
|
48
50
|
<%= f.text_field :available_on,
|
49
51
|
value: datepicker_field_value(@product.available_on),
|
50
52
|
placeholder: Spree.t(:select_a_date),
|
@@ -59,7 +61,7 @@
|
|
59
61
|
<div data-hook="new_product_shipping_category" class="col-12 col-md-4">
|
60
62
|
<%= f.field_container :shipping_category, class: ['form-group'] do %>
|
61
63
|
<%= f.label :shipping_category_id, Spree.t(:shipping_categories) %><span class="required">*</span>
|
62
|
-
<%= f.collection_select(:shipping_category_id, @shipping_categories, :id, :name, { include_blank: Spree.t('match_choices.none') }, { class: 'select2' }) %>
|
64
|
+
<%= f.collection_select(:shipping_category_id, @shipping_categories, :id, :name, { include_blank: Spree.t('match_choices.none') }, { class: 'select2 w-100' }) %>
|
63
65
|
<%= f.error_message_on :shipping_category_id %>
|
64
66
|
<% end %>
|
65
67
|
</div>
|
@@ -33,8 +33,8 @@
|
|
33
33
|
class: 'track_inventory_checkbox', id: "track_inventory_#{ variant.id }" %>
|
34
34
|
<%= Spree.t(:track_inventory) %>
|
35
35
|
<%= hidden_field_tag 'variant[track_inventory]', variant.track_inventory?,
|
36
|
-
|
37
|
-
|
36
|
+
class: 'variant_track_inventory',
|
37
|
+
id: "variant_track_inventory_#{variant.id}" %>
|
38
38
|
<% end %>
|
39
39
|
</div>
|
40
40
|
<% end if can?(:update, @product) && can?(:update, variant) %>
|
@@ -7,4 +7,4 @@ $('.user_picker').userAutocomplete();
|
|
7
7
|
$('#promotion_rule_type').html('<%= escape_javascript options_for_promotion_rule_types(@promotion) %>');
|
8
8
|
$('#promotion_rule_type').select2();
|
9
9
|
|
10
|
-
|
10
|
+
$('#product_taxon_ids').taxonAutocomplete()
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<% options = options_for_select( Rails.application.config.spree.promotions.actions.map(&:name).map {|name| [ Spree.t("promotion_action_types.#{name.demodulize.underscore}.name"), name] } ) %>
|
9
9
|
|
10
10
|
<div class="form-group">
|
11
|
-
<%= label_tag :action_type, Spree.t(:add_action_of_type)%>
|
11
|
+
<%= label_tag :action_type, Spree.t(:add_action_of_type) %>
|
12
12
|
<%= select_tag 'action_type', options, class: 'select2' %>
|
13
13
|
</div>
|
14
14
|
<div class="form-actions">
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<% end %>
|
19
19
|
|
20
20
|
<%= form_for @promotion, url: spree.admin_promotion_path(@promotion), method: :put do |f| %>
|
21
|
-
<div id="actions" class="filter_list
|
21
|
+
<div id="actions" class="filter_list mt-3">
|
22
22
|
<% if @promotion.actions.any? %>
|
23
23
|
<%= render partial: 'promotion_action', collection: @promotion.actions %>
|
24
24
|
<% else %>
|
@@ -31,5 +31,4 @@
|
|
31
31
|
<%= button Spree.t('actions.update'), 'save.svg' %>
|
32
32
|
</div>
|
33
33
|
<% end %>
|
34
|
-
|
35
34
|
</div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= render partial: 'spree/admin/shared/error_messages', locals: { target: @promotion } %>
|
2
2
|
|
3
|
-
<div class="row" id="general_fields"
|
4
|
-
<div class="col-12 col-
|
3
|
+
<div class="row" id="general_fields">
|
4
|
+
<div class="col-12 col-lg-4">
|
5
5
|
<%= f.field_container :name, class: ['form-group'] do %>
|
6
6
|
<%= f.label :name %>
|
7
7
|
<%= f.text_field :name, class: 'form-control' %>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
<% end %>
|
36
36
|
</div>
|
37
37
|
|
38
|
-
<div class="col-12 col-
|
38
|
+
<div class="col-12 col-lg-4">
|
39
39
|
<%= f.field_container :description, class: ['form-group'] do %>
|
40
40
|
<%= f.label :description %>
|
41
41
|
<%= f.text_area :description, rows: 7, class: 'form-control' %>
|
@@ -43,11 +43,11 @@
|
|
43
43
|
|
44
44
|
<%= f.field_container :category, class: ['form-group'] do %>
|
45
45
|
<%= f.label :promotion_category %>
|
46
|
-
<%= f.collection_select(:promotion_category_id, @promotion_categories, :id, :name, { include_blank: Spree.t('match_choices.none') }, { class: 'select2' }) %>
|
46
|
+
<%= f.collection_select(:promotion_category_id, @promotion_categories, :id, :name, { include_blank: Spree.t('match_choices.none') }, { class: 'select2 w-100' }) %>
|
47
47
|
<% end %>
|
48
48
|
</div>
|
49
49
|
|
50
|
-
<div id="expiry_fields" class="col-12 col-
|
50
|
+
<div id="expiry_fields" class="col-12 col-lg-4">
|
51
51
|
<div class="form-group">
|
52
52
|
<%= f.field_container :usage_limit do %>
|
53
53
|
<%= f.label :usage_limit, Spree.t('limit_usage_to') %>
|
@@ -57,14 +57,13 @@
|
|
57
57
|
<%= Spree.t(:current_promotion_usage, count: @promotion.credits_count) %>
|
58
58
|
</small>
|
59
59
|
</div>
|
60
|
-
|
61
60
|
<div id="starts_at_field" class="form-group">
|
62
61
|
<%= f.label :starts_at %>
|
63
62
|
<div class="input-group datePickerFrom"
|
64
63
|
data-wrap="true"
|
65
64
|
data-enable-time="true"
|
66
|
-
data-
|
67
|
-
data-max-date="<%= @promotion.expires_at %>"
|
65
|
+
data-alt-format="<%= Spree.t(:fpr_human_friendly_date_time_format, scope: 'date_picker', default: 'M j, Y H:i') %>"
|
66
|
+
data-max-date="<%= @promotion.expires_at %>">
|
68
67
|
<%= f.datetime_field :starts_at,
|
69
68
|
class: 'form-control shadow-none',
|
70
69
|
placeholder: Spree.t('starting_from'),
|
@@ -78,9 +77,9 @@
|
|
78
77
|
<%= f.label :expires_at %>
|
79
78
|
<div class="input-group datePickerTo"
|
80
79
|
data-wrap="true"
|
81
|
-
data-enable-time=
|
82
|
-
data-
|
83
|
-
data-min-date="<%= @promotion.starts_at %>"
|
80
|
+
data-enable-time='true'
|
81
|
+
data-alt-format="<%= Spree.t(:fpr_human_friendly_date_time_format, scope: 'date_picker', default: 'M j, Y H:i') %>"
|
82
|
+
data-min-date="<%= @promotion.starts_at %>">
|
84
83
|
<%= f.datetime_field :expires_at,
|
85
84
|
placeholder:Spree.t('ends_at'),
|
86
85
|
class: 'form-control shadow-none',
|
@@ -23,7 +23,7 @@
|
|
23
23
|
<% end %>
|
24
24
|
</div>
|
25
25
|
<% if promotion_action.calculator.respond_to?(:preferences) %>
|
26
|
-
<div class="alert alert-info js-warning
|
26
|
+
<div class="alert alert-info js-warning mt-3 mb-0">
|
27
27
|
<%= Spree.t(:calculator_settings_warning) %>
|
28
28
|
</div>
|
29
29
|
<% end %>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<% end %>
|
22
22
|
</div>
|
23
23
|
<% if promotion_action.calculator.respond_to?(:preferences) %>
|
24
|
-
<div class="alert alert-info js-warning
|
24
|
+
<div class="alert alert-info js-warning mt-3 mb-0">
|
25
25
|
<%= Spree.t(:calculator_settings_warning) %>
|
26
26
|
</div>
|
27
27
|
<% end %>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<% line_item_prefix = "#{param_prefix}[promotion_action_line_items_attributes][#{index}]" %>
|
16
16
|
<div class="form-group">
|
17
17
|
<%= label_tag "#{line_item_prefix}_variant_id", Spree.t(:variant) %>
|
18
|
-
<%=
|
18
|
+
<%= select_tag "#{line_item_prefix}[variant_id]", line_item.variant_id, class: 'variant_autocomplete d-block w-100' %>
|
19
19
|
</div>
|
20
20
|
<div class="form-group mb-0">
|
21
21
|
<%= label_tag "#{line_item_prefix}_quantity", Spree.t(:quantity) %>
|
@@ -64,13 +64,15 @@
|
|
64
64
|
<td><%= link_to promotion.name, edit_admin_promotion_path(promotion) %></td>
|
65
65
|
<td><%= promotion.code %></td>
|
66
66
|
<td><%= promotion.description %></td>
|
67
|
-
<td><%= promotion.usage_limit.nil? ? "∞" : promotion.usage_limit
|
67
|
+
<td><%= promotion.usage_limit.nil? ? "∞" : promotion.usage_limit %></td>
|
68
68
|
<td><%= Spree.t(:current_promotion_usage, count: promotion.credits_count) %></td>
|
69
69
|
<td><%= promotion.expires_at.to_date.to_s(:short_date) if promotion.expires_at %></td>
|
70
|
-
<td class="actions
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
<td class="actions" data-hook="admin_promotions_index_row_actions">
|
71
|
+
<span class="d-flex justify-content-end">
|
72
|
+
<%= link_to_edit promotion, no_text: true if can?(:edit, promotion) %>
|
73
|
+
<%= link_to_clone_promotion promotion, no_text: true if can?(:clone, promotion) %>
|
74
|
+
<%= link_to_delete promotion, no_text: true if can?(:delete, promotion) %>
|
75
|
+
</span>
|
74
76
|
</td>
|
75
77
|
</tr>
|
76
78
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="card-body">
|
2
2
|
<div class="promo-rule-option-values">
|
3
|
-
<div class="js-promo-rule-option-values"></div>
|
3
|
+
<div class="js-promo-rule-option-values"></div> <!-- display div for option value select -->
|
4
4
|
<button class="btn btn-primary btn-success js-add-promo-rule-option-value">
|
5
5
|
<%= svg_icon name: "add.svg", width: '16', height: '16' %>
|
6
6
|
<%= Spree.t(:add) %>
|
@@ -12,11 +12,11 @@
|
|
12
12
|
data: { :'original-option-values' => promotion_rule.preferred_eligible_values } %>
|
13
13
|
|
14
14
|
<script type="text/x-handlebars-template" id="promo-rule-option-value-option-values-select-name-template">
|
15
|
-
<%= param_prefix %>[preferred_eligible_values][{{productId}}]
|
15
|
+
<%= param_prefix %>[preferred_eligible_values][{{productId}}][]
|
16
16
|
</script>
|
17
17
|
|
18
18
|
<script type="text/x-handlebars-template" id="promo-rule-option-value-template">
|
19
|
-
<div class="promo-rule-option-value panel card mb-3">
|
19
|
+
<div class="promo-rule-option-value panel card mb-3" id="promo-rule-option-value-{{productId}}">
|
20
20
|
<div class="card-header d-flex justify-content-between">
|
21
21
|
<label><%= Spree.t(:product) %> <%= Spree.t(:option_values) %></label>
|
22
22
|
<a class="js-remove-promo-rule-option-value delete pull-right">
|
@@ -24,12 +24,13 @@
|
|
24
24
|
</a>
|
25
25
|
</div>
|
26
26
|
<div class="card-body row p-3">
|
27
|
-
<div class="col-12 col-md-6">
|
28
|
-
|
27
|
+
<div class="col-12 col-md-6 product-select">
|
28
|
+
<%= select_tag "product", nil, class: 'js-promo-rule-option-value-product-select d-block w-100', id: "promo-rule-option-value-product-select-{{productId}}" %>
|
29
29
|
</div>
|
30
|
-
<div class="col-12 col-md-6">
|
31
|
-
|
30
|
+
<div class="col-12 col-md-6 option-value-select">
|
31
|
+
<%= select_tag "#{param_prefix}[preferred_eligible_values][{{ productId }}][]", nil, multiple: true, disabled: true, class: 'js-promo-rule-option-value-option-values-select d-none w-100', id: "promo-rule-option-value-option-values-select-{{productId}}" %>
|
32
32
|
</div>
|
33
33
|
</div>
|
34
34
|
</div>
|
35
35
|
</script>
|
36
|
+
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="card-body">
|
2
2
|
<div class="form-group products_rule_products">
|
3
3
|
<%= label_tag "#{param_prefix}_product_ids_string", Spree.t('product_rule.choose_products') %>
|
4
|
-
<%=
|
4
|
+
<%= select "#{param_prefix}", 'product_ids_string', options_from_collection_for_select(promotion_rule.products, :id, :name, promotion_rule.products.pluck(:id)), { include_hidden: true }, multiple: true, class: 'product_picker d-block w-100' %>
|
5
5
|
</div>
|
6
6
|
<div class="form-group mb-0">
|
7
7
|
<%= label_tag Spree.t('product_rule.label') %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="card-body">
|
2
2
|
<div class="form-group taxons_rule_taxons">
|
3
|
-
<%= label_tag "#{param_prefix}
|
4
|
-
<%=
|
3
|
+
<%= label_tag "#{param_prefix}_taxon_ids", Spree.t('taxon_rule.choose_taxons') %>
|
4
|
+
<%= select_tag "#{param_prefix}[taxon_ids]", options_from_collection_for_select(promotion_rule.taxons, :id, :pretty_name, promotion_rule.taxon_ids), class: 'taxon_picker d-block w-100', multiple: true, id: :product_taxon_ids %>
|
5
5
|
</div>
|
6
6
|
<div class="form-group mb-0">
|
7
7
|
<%= label_tag Spree.t('taxon_rule.label') %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="card-body">
|
2
2
|
<div class="form-group mb-0">
|
3
3
|
<%= label_tag Spree.t('user_rule.choose_users') %>
|
4
|
-
|
4
|
+
<%= select "#{param_prefix}", 'user_ids_string', options_from_collection_for_select(promotion_rule.users, :id, :email, promotion_rule.users.pluck(:id)), { include_hidden: true }, multiple: true, class: 'user_picker d-block w-100' %>
|
5
5
|
</div>
|
6
6
|
</div>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div data-hook="admin_prototype_form_fields">
|
2
2
|
<%= f.field_container :name, class: ['form-group'] do %>
|
3
|
-
<%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br
|
3
|
+
<%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br>
|
4
4
|
<%= f.text_field :name, class: 'form-control' %>
|
5
5
|
<%= f.error_message_on :name %>
|
6
6
|
<% end %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<% ot.option_values.each do |ov| %>
|
14
14
|
<li>
|
15
15
|
<%= label_tag "option_value_#{ov.id}" do %>
|
16
|
-
<%= check_box_tag "product[option_values_hash[#{ot.id}]][]", ov.id, params[:product] && (params[:product][:option_values_hash] || {}).values.flatten.include?(ov.id.to_s), id: "option_value_#{ov.id}", class: "option-value"
|
16
|
+
<%= check_box_tag "product[option_values_hash[#{ot.id}]][]", ov.id, params[:product] && (params[:product][:option_values_hash] || {}).values.flatten.include?(ov.id.to_s), id: "option_value_#{ov.id}", class: "option-value" %>
|
17
17
|
<div class="option-value__color" style="--presentation: <%= ov.presentation %>"></div>
|
18
18
|
<% end %>
|
19
19
|
</li>
|
@@ -11,11 +11,11 @@
|
|
11
11
|
<fieldset>
|
12
12
|
<div data-hook="admin_refund_form_fields">
|
13
13
|
<div class="form-group">
|
14
|
-
<%= f.label :amount, Spree.t(:amount) %><br
|
14
|
+
<%= f.label :amount, Spree.t(:amount) %><br>
|
15
15
|
<%= @refund.amount %>
|
16
16
|
</div>
|
17
17
|
<div class="form-group">
|
18
|
-
<%= f.label :refund_reason_id, Spree.t(:reason) %><br
|
18
|
+
<%= f.label :refund_reason_id, Spree.t(:reason) %><br>
|
19
19
|
<%= f.collection_select(:refund_reason_id, refund_reasons, :id, :name, {}, {class: 'select2'}) %>
|
20
20
|
</div>
|
21
21
|
</div>
|