spree_admin 5.0.3 → 5.0.4
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 +4 -4
- data/app/controllers/spree/admin/dashboard_controller.rb +11 -12
- data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +32 -13
- data/app/helpers/spree/admin/base_helper.rb +1 -1
- data/app/helpers/spree/admin/navigation_helper.rb +1 -1
- data/app/helpers/spree/admin/orders_helper.rb +3 -1
- data/app/javascript/spree/admin/application.js +0 -2
- data/app/javascript/spree/admin/controllers/asset_uploader_controller.js +3 -2
- data/app/javascript/spree/admin/controllers/variants_form_controller.js +3 -2
- data/app/javascript/spree/admin/helpers/trix/video_embed.js +2 -2
- data/app/views/spree/admin/dashboard/_top_products.html.erb +1 -1
- data/app/views/spree/admin/orders/_filters.html.erb +11 -1
- data/app/views/spree/admin/orders/_summary.html.erb +1 -1
- data/app/views/spree/admin/page_blocks/forms/_image.html.erb +9 -0
- data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +10 -9
- data/app/views/spree/admin/page_builder/_sidebar_sections_toolbar.html.erb +152 -39
- data/app/views/spree/admin/payment_methods/_form.html.erb +1 -1
- data/app/views/spree/admin/products/form/_variants.html.erb +1 -0
- data/app/views/spree/admin/shared/_head.html.erb +6 -1
- data/app/views/spree/admin/shared/_tax_nav.html.erb +1 -0
- data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +3 -2
- data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +2 -0
- data/app/views/spree/admin/stores/form/_basic.html.erb +1 -1
- data/app/views/spree/admin/users/_form.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +3 -3
- data/app/views/spree/admin/variants/form/_media.html.erb +1 -0
- data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +37 -19
- data/app/views/spree/admin/webhooks_subscribers/_webhooks_subscriber.html.erb +12 -6
- data/app/views/spree/admin/webhooks_subscribers/edit.html.erb +2 -2
- data/app/views/spree/admin/webhooks_subscribers/show.html.erb +58 -47
- data/config/importmap.rb +2 -2
- data/lib/spree/admin/engine.rb +9 -1
- data/vendor/javascript/bootstrap--dist--js--bootstrap.bundle.min.js.js +4 -4
- data/vendor/javascript/dompurify.js +24 -24
- metadata +8 -9
- data/app/javascript/spree/admin/controllers/webhook_subscriber_events_controller.js +0 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 896d26ce5c5cefb448bf77753fbb39af32b548d26aad748b20eae32ac51f1972
|
|
4
|
+
data.tar.gz: c51934c9b3763132ad0978789d770645819016286aa505a065e0257a1bbb517d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3e4045b8196f7e9d3464942a40d5d8875ee37b0511df0e41a91876f83f052ea84ac94623ead5f91eff08fb1be514cb268894af96cd1b678045fb2f21ab6d26b6
|
|
7
|
+
data.tar.gz: 2845718bc86d3007d26c8482fe14b566d72a51b5b0159557969ce53c42cc2ddba9abd853da9458ee3914901cdce1341212babe1010e7b8dab81109d6cc0cf090
|
|
@@ -111,9 +111,11 @@ module Spree
|
|
|
111
111
|
@audience_growth_rate = calc_growth_rate(@audience_total, previous_audience_total)
|
|
112
112
|
|
|
113
113
|
@audience = if same_day?
|
|
114
|
-
@audience_scope.group_by_hour(:created_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
114
|
+
@audience_scope.group_by_hour(:created_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
115
|
+
default_value: 0)
|
|
115
116
|
else
|
|
116
|
-
@audience_scope.group_by_day(:created_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
117
|
+
@audience_scope.group_by_day(:created_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
118
|
+
default_value: 0)
|
|
117
119
|
end
|
|
118
120
|
|
|
119
121
|
return unless defined?(Ahoy)
|
|
@@ -123,25 +125,22 @@ module Spree
|
|
|
123
125
|
previous_visits_total = Ahoy::Visit.where(started_at: previous_analytics_time_range).count
|
|
124
126
|
@visits_growth_rate = calc_growth_rate(@visits_total, previous_visits_total)
|
|
125
127
|
|
|
126
|
-
@visits_scope = Ahoy::Visit.where(started_at: analytics_time_range)
|
|
127
|
-
@visits_total = @visits_scope.count
|
|
128
|
-
previous_visits_total = Ahoy::Visit.where(started_at: previous_analytics_time_range).count
|
|
129
|
-
@visits_growth_rate = calc_growth_rate(@visits_total, previous_visits_total)
|
|
130
|
-
|
|
131
128
|
@visits = if same_day?
|
|
132
|
-
@visits_scope.group_by_hour(:started_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
129
|
+
@visits_scope.group_by_hour(:started_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
130
|
+
default_value: 0)
|
|
133
131
|
else
|
|
134
|
-
@visits_scope.group_by_day(:started_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
132
|
+
@visits_scope.group_by_day(:started_at, range: analytics_time_range, time_zone: current_store.preferred_timezone,
|
|
133
|
+
default_value: 0)
|
|
135
134
|
end
|
|
136
135
|
|
|
137
|
-
@top_landing_pages = @visits_scope.where.not(
|
|
136
|
+
@top_landing_pages = @visits_scope.where.not(landing_page: [nil, '']).top(:landing_page, 10)
|
|
138
137
|
@top_referrers = @visits_scope.where.not(referring_domain: current_store.custom_domains.pluck(:url) << current_store.url).top(
|
|
139
138
|
:referring_domain, 10
|
|
140
139
|
)
|
|
141
140
|
@top_locations = @visits_scope.top(:country, 10)
|
|
142
141
|
@top_devices = @visits_scope.group(:device_type).count.transform_keys do |device|
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
device.nil? ? 'N/A' : device
|
|
143
|
+
end.map { |series| [series.first, (series.second.to_f / @visits_scope.count) * 100] }
|
|
145
144
|
end
|
|
146
145
|
end
|
|
147
146
|
end
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Admin
|
|
3
3
|
class WebhooksSubscribersController < ResourceController
|
|
4
|
+
before_action :set_supported_events, except: [:index, :show]
|
|
5
|
+
|
|
4
6
|
create.before :process_subscriptions
|
|
5
7
|
update.before :process_subscriptions
|
|
6
8
|
|
|
7
|
-
def index
|
|
8
|
-
params[:q] ||= {}
|
|
9
|
-
params[:q][:s] ||= 'created_at desc'
|
|
10
|
-
|
|
11
|
-
search = Webhooks::Subscriber.accessible_by(current_ability).ransack(params[:q])
|
|
12
|
-
@webhooks_subscribers = search.result.
|
|
13
|
-
includes(:events).
|
|
14
|
-
page(params[:page]).
|
|
15
|
-
per(params[:per_page])
|
|
16
|
-
end
|
|
17
|
-
|
|
18
9
|
def show
|
|
19
10
|
@webhooks_subscriber = Webhooks::Subscriber.find(params[:id])
|
|
20
11
|
@events = @webhooks_subscriber.events.order(created_at: :desc).page(params[:page]).per(params[:per_page])
|
|
@@ -26,7 +17,19 @@ module Spree
|
|
|
26
17
|
@resource ||= Spree::Admin::Resource.new 'spree/admin/webhooks/subscribers', 'subscribers', nil
|
|
27
18
|
end
|
|
28
19
|
|
|
20
|
+
def collection
|
|
21
|
+
params[:q] ||= {}
|
|
22
|
+
params[:q][:s] ||= 'created_at desc'
|
|
23
|
+
|
|
24
|
+
@search = Webhooks::Subscriber.accessible_by(current_ability).ransack(params[:q])
|
|
25
|
+
@collection = @search.result.
|
|
26
|
+
page(params[:page]).
|
|
27
|
+
per(params[:per_page])
|
|
28
|
+
end
|
|
29
|
+
|
|
29
30
|
def process_subscriptions
|
|
31
|
+
return if params[:webhooks_subscriber].blank?
|
|
32
|
+
|
|
30
33
|
params[:webhooks_subscriber][:subscriptions] = if params[:subscribe_to_all_events] == 'true'
|
|
31
34
|
['*']
|
|
32
35
|
else
|
|
@@ -37,12 +40,28 @@ module Spree
|
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
def selected_events
|
|
40
|
-
supported_events.select { |resource, _events| params[:webhooks_subscriber][resource] == 'true' }.values.flatten
|
|
43
|
+
@supported_events.select { |resource, _events| params[:webhooks_subscriber][resource] == 'true' }.values.flatten
|
|
41
44
|
end
|
|
42
45
|
|
|
43
|
-
def
|
|
46
|
+
def set_supported_events
|
|
44
47
|
@supported_events ||= Spree::Webhooks::Subscriber.supported_events
|
|
45
48
|
end
|
|
49
|
+
|
|
50
|
+
def supported_events
|
|
51
|
+
@supported_events
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def permitted_resource_params
|
|
55
|
+
params.require(:webhooks_subscriber).permit(:url, :active, subscriptions: [])
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def location_after_create
|
|
59
|
+
location_after_save
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def location_after_save
|
|
63
|
+
spree.admin_webhooks_subscriber_path(@object)
|
|
64
|
+
end
|
|
46
65
|
end
|
|
47
66
|
end
|
|
48
67
|
end
|
|
@@ -190,7 +190,7 @@ module Spree
|
|
|
190
190
|
# @return [String] the badge with the icon
|
|
191
191
|
def active_badge(condition, options = {})
|
|
192
192
|
label = options[:label]
|
|
193
|
-
label ||= condition ? Spree.t(:say_yes) : Spree.t(:say_no)
|
|
193
|
+
label ||= condition ? Spree.t(:say_yes).to_s : Spree.t(:say_no).to_s
|
|
194
194
|
label = icon('check') + label if condition
|
|
195
195
|
|
|
196
196
|
css_class = condition ? 'badge-active' : 'badge-inactive'
|
|
@@ -25,8 +25,10 @@ module Spree
|
|
|
25
25
|
icon('credit-card-refund') + Spree.t('payment_states.refunded')
|
|
26
26
|
elsif order.partially_refunded?
|
|
27
27
|
icon('credit-card-refund') + Spree.t('payment_states.partially_refunded')
|
|
28
|
-
elsif order.payment_state == 'failed'
|
|
28
|
+
elsif order.payment_state == 'failed'
|
|
29
29
|
icon('cancel') + Spree.t('payment_states.failed')
|
|
30
|
+
elsif order.payment_state == 'void'
|
|
31
|
+
icon('cancel') + Spree.t('payment_states.void')
|
|
30
32
|
elsif order.payment_state == 'paid'
|
|
31
33
|
icon('check') + Spree.t('payment_states.paid')
|
|
32
34
|
else
|
|
@@ -78,7 +78,6 @@ import StockTransferController from 'spree/admin/controllers/stock_transfer_cont
|
|
|
78
78
|
import StoreFormController from 'spree/admin/controllers/store_form_controller'
|
|
79
79
|
import UnitSystemController from 'spree/admin/controllers/unit_system_controller'
|
|
80
80
|
import VariantsFormController from 'spree/admin/controllers/variants_form_controller'
|
|
81
|
-
import WebhooksSubscriberEventsController from 'spree/admin/controllers/webhook_subscriber_events_controller'
|
|
82
81
|
import AddressAutocompleteController from 'spree/core/controllers/address_autocomplete_controller'
|
|
83
82
|
import AddressFormController from 'spree/core/controllers/address_form_controller'
|
|
84
83
|
import EnableButtonController from 'spree/core/controllers/enable_button_controller'
|
|
@@ -131,7 +130,6 @@ application.register('tabs', Tabs)
|
|
|
131
130
|
application.register('textarea-autogrow', TextareaAutogrow)
|
|
132
131
|
application.register('unit-system', UnitSystemController)
|
|
133
132
|
application.register('variants-form', VariantsFormController)
|
|
134
|
-
application.register('webhooks-subscriber-events', WebhooksSubscriberEventsController)
|
|
135
133
|
|
|
136
134
|
LocalTime.start()
|
|
137
135
|
|
|
@@ -11,7 +11,8 @@ export default class extends Controller {
|
|
|
11
11
|
viewableType: String,
|
|
12
12
|
multiple: { type: Boolean, default: false },
|
|
13
13
|
type: { type: String, default: 'image' },
|
|
14
|
-
allowedFileTypes: { type: Array, default: [] }
|
|
14
|
+
allowedFileTypes: { type: Array, default: [] },
|
|
15
|
+
adminAssetsPath: String
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
connect() {
|
|
@@ -43,7 +44,7 @@ export default class extends Controller {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
handleSuccessResult(response) {
|
|
46
|
-
post(
|
|
47
|
+
post(this.adminAssetsPathValue, {
|
|
47
48
|
body: JSON.stringify({
|
|
48
49
|
asset: {
|
|
49
50
|
type: this.assetClassValue,
|
|
@@ -37,7 +37,8 @@ export default class extends CheckboxSelectAll {
|
|
|
37
37
|
currentStockLocationId: String,
|
|
38
38
|
stockLocations: Array,
|
|
39
39
|
optionValuesSelectOptions: Array,
|
|
40
|
-
locale: String
|
|
40
|
+
locale: String,
|
|
41
|
+
adminPath: String
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
connect() {
|
|
@@ -724,7 +725,7 @@ export default class extends CheckboxSelectAll {
|
|
|
724
725
|
this.lastOptionNameId = targetInput.value
|
|
725
726
|
|
|
726
727
|
if (this.lastOptionNameId) {
|
|
727
|
-
const response = await get(
|
|
728
|
+
const response = await get(`${this.adminPathValue}/option_types/${this.lastOptionNameId}/option_values/select_options`)
|
|
728
729
|
|
|
729
730
|
if (response.ok) {
|
|
730
731
|
this.currentOptionValues[this.lastOptionNameId] = await response.json
|
|
@@ -90,7 +90,7 @@ document.addEventListener("trix-attachment-remove", async function(event) {
|
|
|
90
90
|
const { attachment } = event
|
|
91
91
|
const { sgid } = attachment.attachment.attributes.values
|
|
92
92
|
|
|
93
|
-
destroy(
|
|
93
|
+
destroy(`${Spree.adminPath}/action_text/video_embeds/${sgid}`, { responseKind: 'json' })
|
|
94
94
|
})
|
|
95
95
|
|
|
96
96
|
function initializeTrixEditor(editor) {
|
|
@@ -129,7 +129,7 @@ function initializeTrixEditor(editor) {
|
|
|
129
129
|
|
|
130
130
|
errorMessage.innerHTML = ''
|
|
131
131
|
|
|
132
|
-
const response = await post(
|
|
132
|
+
const response = await post(`${Spree.adminPath}/action_text/video_embeds`, { body: JSON.stringify({ url: input.value }), responseKind: 'json' })
|
|
133
133
|
|
|
134
134
|
if (response.ok) {
|
|
135
135
|
const { sgid, content } = await response.json
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
<% frame_name ||= nil %>
|
|
2
2
|
|
|
3
|
+
<% search_form_path = if @user.present?
|
|
4
|
+
spree.admin_user_orders_path(@user)
|
|
5
|
+
elsif @vendor.present? && spree.respond_to?(:admin_vendor_orders_path)
|
|
6
|
+
spree.admin_vendor_orders_path(@vendor)
|
|
7
|
+
elsif controller_name == 'checkouts'
|
|
8
|
+
spree.admin_checkouts_path
|
|
9
|
+
else
|
|
10
|
+
spree.admin_orders_path
|
|
11
|
+
end %>
|
|
12
|
+
|
|
3
13
|
<%= search_form_for [:admin, @vendor || @user, @search],
|
|
4
|
-
url:
|
|
14
|
+
url: search_form_path,
|
|
5
15
|
class: "filter-wrap",
|
|
6
16
|
data: {
|
|
7
17
|
controller: "filters reveal",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
<%= render 'tax_lines', tax_lines: tax_lines, id: 'tax-lines-additional' %>
|
|
75
75
|
</li>
|
|
76
76
|
|
|
77
|
-
<%= render_admin_partials(:
|
|
77
|
+
<%= render_admin_partials(:order_page_summary_partials, order: @order) %>
|
|
78
78
|
|
|
79
79
|
<li class="list-group-item d-flex justify-content-between align-items-center border-0">
|
|
80
80
|
<span data-hook='admin_order_tab_total_title'><%= Spree.t(:total) %></span>
|
|
@@ -1 +1,10 @@
|
|
|
1
1
|
<%= render 'active_storage/upload_form', form: f, field_name: :asset, width: 512, height: 512, auto_submit: true %>
|
|
2
|
+
|
|
3
|
+
<% content_for(:design_tab) do %>
|
|
4
|
+
<%= render 'spree/admin/page_builder/labeled_range_input',
|
|
5
|
+
f: f, field: :preferred_height, min: 1, max: 1024, unit: 'px', _label: 'Max image height on desktop'
|
|
6
|
+
%>
|
|
7
|
+
<%= render 'spree/admin/page_builder/labeled_range_input',
|
|
8
|
+
f: f, field: :preferred_mobile_height, min: 1, max: 512, unit: 'px', _label: 'Max image height on mobile'
|
|
9
|
+
%>
|
|
10
|
+
<% end %>
|
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
} do %>
|
|
8
8
|
<div class="d-flex align-items-center justify-content-between sidebar-block-title p-1 rounded-sm">
|
|
9
9
|
<div class="d-flex align-items-center flex-fill">
|
|
10
|
-
<%=
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
<%= link_to(edit_admin_page_section_block_path(block.section, block),
|
|
11
|
+
class: 'block-edit-link flex-fill text-dark',
|
|
12
|
+
data: {
|
|
13
|
+
turbo_frame: :page_sidebar,
|
|
14
|
+
action: 'click->page-builder#makeOverlayActive',
|
|
15
|
+
page_builder_editor_id_param: "block-#{block.id}"
|
|
16
|
+
}) do %>
|
|
17
|
+
<%= icon "#{block.icon_name}", class: 'mr-2' if block.icon_name.present? %>
|
|
18
|
+
<%= block.display_name %>
|
|
19
|
+
<% end %>
|
|
19
20
|
</div>
|
|
20
21
|
<div class="d-flex align-items-center d-none">
|
|
21
22
|
<% if block.section.can_sort_blocks? %>
|
|
@@ -1,64 +1,177 @@
|
|
|
1
1
|
<%= turbo_frame_tag :page_sidebar_toolbar do %>
|
|
2
2
|
<div class="d-none">
|
|
3
|
-
<%
|
|
3
|
+
<% sections =
|
|
4
|
+
@page_preview.sections.includes(:blocks).map { |s| [@page_preview, s] } %>
|
|
5
|
+
|
|
6
|
+
<% sections +=
|
|
7
|
+
@theme_preview.sections.includes(:blocks).map { |s| [@theme_preview, s] } %>
|
|
8
|
+
|
|
9
|
+
<% sections.each do |parent, section| %>
|
|
4
10
|
<% next if section.new_record? %>
|
|
5
11
|
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
<% unless parent.is_a?(Spree::Theme) %>
|
|
13
|
+
<div id="editor-toolbar-section-<%= section.id %>">
|
|
14
|
+
<button class="editor-toolbar-lower">
|
|
15
|
+
<svg
|
|
16
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
17
|
+
width="16"
|
|
18
|
+
height="16"
|
|
19
|
+
fill="currentColor"
|
|
20
|
+
class="bi bi-arrow-down"
|
|
21
|
+
viewBox="0 0 16 16"
|
|
22
|
+
>
|
|
23
|
+
<path
|
|
24
|
+
fill-rule="evenodd"
|
|
25
|
+
d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z"
|
|
26
|
+
/>
|
|
27
|
+
</svg>
|
|
28
|
+
</button>
|
|
29
|
+
<button class="editor-toolbar-higher">
|
|
30
|
+
<svg
|
|
31
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
32
|
+
width="16"
|
|
33
|
+
height="16"
|
|
34
|
+
fill="currentColor"
|
|
35
|
+
class="bi bi-arrow-up"
|
|
36
|
+
viewBox="0 0 16 16"
|
|
37
|
+
>
|
|
38
|
+
<path
|
|
39
|
+
fill-rule="evenodd"
|
|
40
|
+
d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z"
|
|
41
|
+
/>
|
|
42
|
+
</svg>
|
|
43
|
+
</button>
|
|
44
|
+
<button class="editor-toolbar-edit">
|
|
45
|
+
<svg
|
|
46
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
47
|
+
width="16"
|
|
48
|
+
height="16"
|
|
49
|
+
fill="currentColor"
|
|
50
|
+
class="bi bi-pencil"
|
|
51
|
+
viewBox="0 0 16 16"
|
|
52
|
+
>
|
|
53
|
+
<path
|
|
54
|
+
d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"
|
|
55
|
+
/>
|
|
56
|
+
</svg>
|
|
57
|
+
</button>
|
|
58
|
+
<button class="editor-toolbar-delete">
|
|
59
|
+
<svg
|
|
60
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
61
|
+
width="16"
|
|
62
|
+
height="16"
|
|
63
|
+
fill="currentColor"
|
|
64
|
+
class="bi bi-trash"
|
|
65
|
+
viewBox="0 0 16 16"
|
|
66
|
+
>
|
|
67
|
+
<path
|
|
68
|
+
d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z"
|
|
69
|
+
/>
|
|
70
|
+
<path
|
|
71
|
+
d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"
|
|
72
|
+
/>
|
|
73
|
+
</svg>
|
|
74
|
+
</button>
|
|
75
|
+
</div>
|
|
29
76
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
77
|
+
<%= button_to Spree.t(:move_up),
|
|
78
|
+
spree.move_higher_admin_page_section_path(parent, section),
|
|
79
|
+
method: :patch,
|
|
80
|
+
id: "editor-toolbar-higher-section-#{section.id}" %>
|
|
81
|
+
<%= button_to Spree.t(:move_down),
|
|
82
|
+
spree.move_lower_admin_page_section_path(parent, section),
|
|
83
|
+
method: :patch,
|
|
84
|
+
id: "editor-toolbar-lower-section-#{section.id}" %>
|
|
85
|
+
<%= link_to Spree.t(:destroy),
|
|
86
|
+
spree.admin_page_section_path(section),
|
|
87
|
+
data: {
|
|
88
|
+
turbo_confirm: Spree.t(:are_you_sure),
|
|
89
|
+
turbo_method: :delete,
|
|
90
|
+
},
|
|
91
|
+
id: "editor-toolbar-delete-section-#{section.id}" %>
|
|
92
|
+
|
|
93
|
+
<% end %>
|
|
33
94
|
|
|
34
95
|
<% section.blocks.each do |block| %>
|
|
35
96
|
<div id="editor-toolbar-block-<%= block.id %>">
|
|
36
97
|
<button class="editor-toolbar-lower">
|
|
37
|
-
<svg
|
|
38
|
-
|
|
98
|
+
<svg
|
|
99
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
100
|
+
width="16"
|
|
101
|
+
height="16"
|
|
102
|
+
fill="currentColor"
|
|
103
|
+
class="bi bi-arrow-down"
|
|
104
|
+
viewBox="0 0 16 16"
|
|
105
|
+
>
|
|
106
|
+
<path
|
|
107
|
+
fill-rule="evenodd"
|
|
108
|
+
d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z"
|
|
109
|
+
/>
|
|
39
110
|
</svg>
|
|
40
111
|
</button>
|
|
41
112
|
<button class="editor-toolbar-higher">
|
|
42
|
-
<svg
|
|
43
|
-
|
|
113
|
+
<svg
|
|
114
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
115
|
+
width="16"
|
|
116
|
+
height="16"
|
|
117
|
+
fill="currentColor"
|
|
118
|
+
class="bi bi-arrow-up"
|
|
119
|
+
viewBox="0 0 16 16"
|
|
120
|
+
>
|
|
121
|
+
<path
|
|
122
|
+
fill-rule="evenodd"
|
|
123
|
+
d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z"
|
|
124
|
+
/>
|
|
44
125
|
</svg>
|
|
45
126
|
</button>
|
|
46
127
|
<button class="editor-toolbar-edit">
|
|
47
|
-
<svg
|
|
48
|
-
|
|
128
|
+
<svg
|
|
129
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
130
|
+
width="16"
|
|
131
|
+
height="16"
|
|
132
|
+
fill="currentColor"
|
|
133
|
+
class="bi bi-pencil"
|
|
134
|
+
viewBox="0 0 16 16"
|
|
135
|
+
>
|
|
136
|
+
<path
|
|
137
|
+
d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"
|
|
138
|
+
/>
|
|
49
139
|
</svg>
|
|
50
140
|
</button>
|
|
51
141
|
<button class="editor-toolbar-delete">
|
|
52
|
-
<svg
|
|
53
|
-
|
|
54
|
-
|
|
142
|
+
<svg
|
|
143
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
144
|
+
width="16"
|
|
145
|
+
height="16"
|
|
146
|
+
fill="currentColor"
|
|
147
|
+
class="bi bi-trash"
|
|
148
|
+
viewBox="0 0 16 16"
|
|
149
|
+
>
|
|
150
|
+
<path
|
|
151
|
+
d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z"
|
|
152
|
+
/>
|
|
153
|
+
<path
|
|
154
|
+
d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"
|
|
155
|
+
/>
|
|
55
156
|
</svg>
|
|
56
157
|
</button>
|
|
57
158
|
</div>
|
|
58
159
|
|
|
59
|
-
<%= button_to Spree.t(:move_up),
|
|
60
|
-
|
|
61
|
-
|
|
160
|
+
<%= button_to Spree.t(:move_up),
|
|
161
|
+
spree.move_higher_admin_page_section_block_path(section, block),
|
|
162
|
+
method: :patch,
|
|
163
|
+
id: "editor-toolbar-higher-block-#{block.id}" %>
|
|
164
|
+
<%= button_to Spree.t(:move_down),
|
|
165
|
+
spree.move_lower_admin_page_section_block_path(section, block),
|
|
166
|
+
method: :patch,
|
|
167
|
+
id: "editor-toolbar-lower-block-#{block.id}" %>
|
|
168
|
+
<%= link_to Spree.t(:destroy),
|
|
169
|
+
spree.admin_page_section_block_path(section, block),
|
|
170
|
+
data: {
|
|
171
|
+
turbo_confirm: Spree.t(:are_you_sure),
|
|
172
|
+
turbo_method: :delete,
|
|
173
|
+
},
|
|
174
|
+
id: "editor-toolbar-delete-block-#{block.id}" %>
|
|
62
175
|
<% end %>
|
|
63
176
|
<% end %>
|
|
64
177
|
</div>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
<div class="form-group">
|
|
57
57
|
<%= label_tag :payment_method_auto_capture, Spree.t(:auto_capture) %>
|
|
58
|
-
<%= select(:payment_method, :auto_capture, [["#{Spree.t(:use_app_default)} (#{Spree::Config[:auto_capture]})", ''], [Spree.t(:say_yes), true], [Spree.t(:say_no), false]], {}, {class: 'custom-select'}) %>
|
|
58
|
+
<%= select(:payment_method, :auto_capture, [["#{Spree.t(:use_app_default)} (#{Spree::Config[:auto_capture]})", ''], [Spree.t(:say_yes).to_s, true], [Spree.t(:say_no).to_s, false]], {}, {class: 'custom-select'}) %>
|
|
59
59
|
</div>
|
|
60
60
|
|
|
61
61
|
<div class="form-group">
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
data-variants-form-currencies-value="<%= supported_currencies.map(&:to_s).to_json %>"
|
|
16
16
|
data-variants-form-current-stock-location-id-value="<%= default_stock_location_for_product(@product).id %>"
|
|
17
17
|
data-variants-form-stock-locations-value="<%= available_stock_locations_for_product(@product).ids.map(&:to_s).to_json %>"
|
|
18
|
+
data-variants-form-admin-path-value="<%= spree.admin_path %>"
|
|
18
19
|
<% if @product_options.present? %> data-variants-form-options-value="<%= @product_options.to_json %>" <% end %>
|
|
19
20
|
<% if @product_available_options.present? %> data-variants-form-available-options-value="<%= @product_available_options.to_json %>" <% end %>
|
|
20
21
|
<% if @product_stock.present? %> data-variants-form-stock-value="<%= @product_stock.to_json %>" <% end %>
|
|
@@ -51,4 +51,9 @@
|
|
|
51
51
|
|
|
52
52
|
<%= render 'spree/shared/google_places_api_loader' %>
|
|
53
53
|
|
|
54
|
-
<%= render_admin_partials(:head_partials) %>
|
|
54
|
+
<%= render_admin_partials(:head_partials) %>
|
|
55
|
+
|
|
56
|
+
<script>
|
|
57
|
+
window.Spree = window.Spree || {}
|
|
58
|
+
Spree.adminPath = '<%= spree.admin_path %>'
|
|
59
|
+
</script>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<%= content_for(:page_tabs) do %>
|
|
2
2
|
<%= nav_item(Spree.t(:tax_rates), spree.admin_tax_rates_path) if can?(:manage, Spree::TaxRate) %>
|
|
3
3
|
<%= nav_item(Spree.t(:tax_categories), spree.admin_tax_categories_path) if can?(:manage, Spree::TaxCategory) %>
|
|
4
|
+
<%= render_admin_partials(:tax_nav_partials) %>
|
|
4
5
|
<% end %>
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
<%= nav_item(Spree.t(:emails), spree.edit_admin_store_path(section: 'emails'), icon: 'send', active: params[:section] == 'emails') %>
|
|
18
18
|
<%= nav_item(Spree.t(:policies), spree.edit_admin_store_path(section: 'policies'), icon: 'list-check', active: params[:section] == 'policies') %>
|
|
19
19
|
<%= nav_item(Spree.t(:checkout), spree.edit_admin_store_path(section: 'checkout'), icon: 'shopping-cart', active: params[:section] == 'checkout') %>
|
|
20
|
+
<%= render_admin_partials(:store_settings_nav_partials) %>
|
|
20
21
|
<% end %>
|
|
21
22
|
|
|
22
23
|
<% if can?(:manage, Spree::CustomDomain) %>
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
<% end %>
|
|
49
50
|
|
|
50
51
|
<% if can?(:manage, Spree::Store) %>
|
|
51
|
-
<% if
|
|
52
|
+
<% if spree.respond_to?(:admin_audits_path) %>
|
|
52
53
|
<%= nav_item(Spree.t('admin.audit_log'), spree.admin_audits_path, icon: 'history', active: %w[audits exports imports].include?(controller_name)) %>
|
|
53
54
|
<% else %>
|
|
54
55
|
<li class="nav-item">
|
|
@@ -66,7 +67,7 @@
|
|
|
66
67
|
<%= nav_item(Spree.t(:developers), spree.admin_oauth_applications_path, icon: 'terminal', active: %w[oauth_applications webhooks_subscribers].include?(controller_name)) %>
|
|
67
68
|
<% end %>
|
|
68
69
|
|
|
69
|
-
<%= render_admin_partials(:
|
|
70
|
+
<%= render_admin_partials(:settings_nav_partials) %>
|
|
70
71
|
</ul>
|
|
71
72
|
<% else %>
|
|
72
73
|
<%= render 'spree/admin/shared/sidebar/store_dropdown' %>
|