spree_admin 5.0.4 → 5.0.5
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/orders_controller.rb +1 -1
- data/app/controllers/spree/admin/products_controller.rb +4 -4
- data/app/helpers/spree/admin/orders_filters_helper.rb +1 -1
- data/app/helpers/spree/admin/payments_helper.rb +0 -5
- data/app/javascript/spree/admin/controllers/active_storage_upload_controller.js +2 -11
- data/app/javascript/spree/admin/controllers/multi_tom_select_controller.js +3 -2
- data/app/javascript/spree/admin/controllers/variants_form_controller.js +22 -16
- data/app/javascript/spree/admin/helpers/uppy_active_storage.js +15 -3
- data/app/views/active_storage/_upload_form.html.erb +2 -2
- data/app/views/spree/admin/orders/_return_authorizations.html.erb +3 -1
- data/app/views/spree/admin/page_sections/forms/_featured_posts.html.erb +0 -5
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +1 -1
- data/app/views/spree/admin/preferences/_password_field.html.erb +2 -2
- data/app/views/spree/admin/products/_form.html.erb +2 -1
- data/app/views/spree/admin/products/form/_tax.html.erb +12 -0
- data/app/views/spree/admin/translations/edit.html.erb +1 -1
- data/app/views/spree/admin/variants/_variant.html.erb +2 -2
- data/app/views/spree/admin/variants/form/_basic.html.erb +4 -4
- data/config/locales/en.yml +0 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 274d9668ae1ea544815eb385842f5556570acb9c999fe65ab07a6b639bb42b06
|
4
|
+
data.tar.gz: 706699d5694ae8d8e2ea3df88b4b1a27c7196474efdf9928ebbbb27fba3b1828
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 227638a7b026550f3cdfb9b0549798c91ae1a4feeefe7b97c7984d4005c74b1fc1a1d180707ebe2037af02d90b912bd7508d74fd291b5c29c520cbfe62f28691
|
7
|
+
data.tar.gz: f1ef07a89426530a25d0db9a50bed68eebd9af552a9d639f0b5bc138201deca3ae626d01032fa147f167bc82ebb714a71c470dadabbccac66dfe9eb02dff2716
|
@@ -70,7 +70,7 @@ module Spree
|
|
70
70
|
@payments = @order.payments.includes(:payment_method, :source).order(:created_at)
|
71
71
|
@refunds = @order.refunds
|
72
72
|
|
73
|
-
@return_authorizations = @order.return_authorizations
|
73
|
+
@return_authorizations = @order.return_authorizations.includes(:return_items)
|
74
74
|
@customer_returns = @order.customer_returns.distinct
|
75
75
|
end
|
76
76
|
|
@@ -151,7 +151,7 @@ module Spree
|
|
151
151
|
protected
|
152
152
|
|
153
153
|
def find_resource
|
154
|
-
current_store.products.accessible_by(current_ability, :manage).
|
154
|
+
current_store.products.accessible_by(current_ability, :manage).friendly.find(params[:id])
|
155
155
|
end
|
156
156
|
|
157
157
|
def load_data
|
@@ -179,10 +179,10 @@ module Spree
|
|
179
179
|
@product_options[option_type.id.to_s] = {
|
180
180
|
name: option_type.presentation,
|
181
181
|
position: index + 1,
|
182
|
-
values: option_values.pluck(:presentation).uniq
|
182
|
+
values: option_values.pluck(:name, :presentation).uniq.map { |name, presentation| { value: name, text: presentation } }
|
183
183
|
}
|
184
184
|
|
185
|
-
@product_available_options[option_type.id.to_s] = option_type.option_values.
|
185
|
+
@product_available_options[option_type.id.to_s] = option_type.option_values.pluck(:name, :presentation).uniq.map { |name, presentation| { id: name, name: presentation } }
|
186
186
|
end
|
187
187
|
|
188
188
|
@product_stock = {}
|
@@ -273,7 +273,7 @@ module Spree
|
|
273
273
|
for_ordering_with_translations(model_class, :name).
|
274
274
|
includes(product_includes).
|
275
275
|
page(params[:page]).
|
276
|
-
per(params[:per_page] ||
|
276
|
+
per(params[:per_page] || Spree::Admin::RuntimeConfig.admin_products_per_page)
|
277
277
|
|
278
278
|
@collection
|
279
279
|
end
|
@@ -57,7 +57,7 @@ module Spree
|
|
57
57
|
# lazy loading other models here (via includes) may result in an invalid query
|
58
58
|
# e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
|
59
59
|
# see https://github.com/spree/spree/pull/3919
|
60
|
-
@orders = @search.result(distinct: true).page(params[:page]).per(params[:per_page])
|
60
|
+
@orders = @search.result(distinct: true).page(params[:page]).per(params[:per_page] || Spree::Admin::RuntimeConfig.admin_orders_per_page)
|
61
61
|
end
|
62
62
|
|
63
63
|
def load_user
|
@@ -11,11 +11,6 @@ module Spree
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def payment_method_icon_tag(payment_method, opts = {})
|
15
|
-
image_tag "payment_icons/#{payment_method}.svg", opts
|
16
|
-
rescue Sprockets::Rails::Helper::AssetNotFound
|
17
|
-
end
|
18
|
-
|
19
14
|
def available_payment_methods
|
20
15
|
@available_payment_methods ||= Spree::PaymentMethod.providers.map { |provider| provider.name.constantize.new }.delete_if { |payment_method| !payment_method.show_in_admin? || current_store.payment_methods.pluck(:type).include?(payment_method.type) }.sort_by(&:name)
|
21
16
|
end
|
@@ -29,7 +29,8 @@ export default class extends Controller {
|
|
29
29
|
})
|
30
30
|
|
31
31
|
this.uppy.use(ActiveStorageUpload, {
|
32
|
-
directUploadUrl: document.querySelector("meta[name='direct-upload-url']").getAttribute('content')
|
32
|
+
directUploadUrl: document.querySelector("meta[name='direct-upload-url']").getAttribute('content'),
|
33
|
+
crop: this.cropValue
|
33
34
|
})
|
34
35
|
|
35
36
|
let dashboardOptions = {}
|
@@ -55,16 +56,6 @@ export default class extends Controller {
|
|
55
56
|
|
56
57
|
this.uppy.on('file-editor:complete', (updatedFile) => {
|
57
58
|
console.log('File editing complete:', updatedFile)
|
58
|
-
// Remove the old file from Uppy's file list
|
59
|
-
this.uppy.removeFile(updatedFile.id)
|
60
|
-
// Add the updated file to Uppy
|
61
|
-
this.uppy.addFile({
|
62
|
-
name: updatedFile.name,
|
63
|
-
type: updatedFile.type,
|
64
|
-
data: updatedFile.data,
|
65
|
-
source: 'local',
|
66
|
-
isRemote: false
|
67
|
-
})
|
68
59
|
|
69
60
|
this.handleUI(updatedFile)
|
70
61
|
|
@@ -26,8 +26,9 @@ export default class extends Controller {
|
|
26
26
|
values() {
|
27
27
|
return this.selectTargets
|
28
28
|
.map((selectTarget) => selectTarget.querySelector('select'))
|
29
|
-
.map((select) => select.options[select.selectedIndex]
|
30
|
-
.filter((
|
29
|
+
.map((select) => select.options[select.selectedIndex])
|
30
|
+
.filter((option) => option.value.length > 0)
|
31
|
+
.map((option) => ({ text: option.text, value: option.value}))
|
31
32
|
}
|
32
33
|
|
33
34
|
setValues() {
|
@@ -129,7 +129,7 @@ export default class extends CheckboxSelectAll {
|
|
129
129
|
const nestingLevel = internalName.split('/').length
|
130
130
|
if (nestingLevel === 1) {
|
131
131
|
const firstOptionKey = Object.keys(this.optionsValue)[0]
|
132
|
-
const newOptionValues = this.optionsValue[firstOptionKey].values.filter((value) => value !== internalName)
|
132
|
+
const newOptionValues = this.optionsValue[firstOptionKey].values.filter((value) => value.text !== internalName)
|
133
133
|
if (newOptionValues.length === 0) {
|
134
134
|
const newOptionsValue = this.optionsValue
|
135
135
|
delete newOptionsValue[firstOptionKey]
|
@@ -265,12 +265,12 @@ export default class extends CheckboxSelectAll {
|
|
265
265
|
let name = ''
|
266
266
|
let internalName = name
|
267
267
|
if (i === 0) {
|
268
|
-
name = variant[keys[i]]
|
268
|
+
name = variant[keys[i]].text
|
269
269
|
internalName = name
|
270
270
|
} else {
|
271
|
-
const namesPath = keys.slice(1, keys.length).map((key) => variant[key])
|
271
|
+
const namesPath = keys.slice(1, keys.length).map((key) => variant[key].text)
|
272
272
|
name = namesPath.join(' / ')
|
273
|
-
internalName = `${variant[keys[0]]}/${namesPath.join('/')}`
|
273
|
+
internalName = `${variant[keys[0]].text}/${namesPath.join('/')}`
|
274
274
|
}
|
275
275
|
|
276
276
|
return { name, internalName }
|
@@ -572,12 +572,12 @@ export default class extends CheckboxSelectAll {
|
|
572
572
|
refreshParentInputs() {
|
573
573
|
const firstOption = Object.values(this.optionsValue)[0]
|
574
574
|
if (firstOption) {
|
575
|
-
firstOption.values.forEach((
|
575
|
+
firstOption.values.forEach((option) => {
|
576
576
|
this.currenciesValue.forEach((currency) => {
|
577
|
-
this.updateParentPriceRange(
|
577
|
+
this.updateParentPriceRange(option.text, currency)
|
578
578
|
})
|
579
579
|
this.stockLocationsValue.forEach((stockLocationId) => {
|
580
|
-
this.updateParentStockSum(
|
580
|
+
this.updateParentStockSum(option.text, stockLocationId)
|
581
581
|
})
|
582
582
|
this.updateShopLocationCountOnHand()
|
583
583
|
})
|
@@ -615,11 +615,17 @@ export default class extends CheckboxSelectAll {
|
|
615
615
|
.find((option) => option.name === key).position
|
616
616
|
inputs.push(positionInput)
|
617
617
|
|
618
|
-
const
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
inputs.push(
|
618
|
+
const optionNameInput = document.createElement('input')
|
619
|
+
optionNameInput.type = 'hidden'
|
620
|
+
optionNameInput.name = `product[variants_attributes][${i}][options][][option_value_name]`
|
621
|
+
optionNameInput.value = variant[key].value
|
622
|
+
inputs.push(optionNameInput)
|
623
|
+
|
624
|
+
const optionIdInput = document.createElement('input')
|
625
|
+
optionIdInput.type = 'hidden'
|
626
|
+
optionIdInput.name = `product[variants_attributes][${i}][options][][option_value_presentation]`
|
627
|
+
optionIdInput.value = variant[key].text
|
628
|
+
inputs.push(optionIdInput)
|
623
629
|
})
|
624
630
|
|
625
631
|
return inputs
|
@@ -924,8 +930,8 @@ export default class extends CheckboxSelectAll {
|
|
924
930
|
const optionValuesSelectContainer = template.querySelector('[data-slot="optionValuesSelectContainer"]')
|
925
931
|
const tomSelectOptionValues = optionValues.map((optionValue) => {
|
926
932
|
return {
|
927
|
-
id:
|
928
|
-
name: optionValue
|
933
|
+
id: optionValue.value,
|
934
|
+
name: optionValue.text,
|
929
935
|
}
|
930
936
|
})
|
931
937
|
|
@@ -948,8 +954,8 @@ export default class extends CheckboxSelectAll {
|
|
948
954
|
values.forEach((value) => {
|
949
955
|
const template = this.optionValueTemplateTarget.content.cloneNode(true)
|
950
956
|
const optionValueNameEl = template.querySelector('[data-slot="optionValueName"]')
|
951
|
-
optionValueNameEl.textContent = value
|
952
|
-
optionValueNameEl.dataset.name = value
|
957
|
+
optionValueNameEl.textContent = value.text
|
958
|
+
optionValueNameEl.dataset.name = value.text
|
953
959
|
|
954
960
|
templates.push(template)
|
955
961
|
})
|
@@ -20,7 +20,8 @@ export default class ActiveStorageUpload extends BasePlugin {
|
|
20
20
|
limit: 0,
|
21
21
|
timeout: 30 * 1000,
|
22
22
|
directUploadUrl: null,
|
23
|
-
headers: {}
|
23
|
+
headers: {},
|
24
|
+
crop: false
|
24
25
|
}
|
25
26
|
|
26
27
|
this.opts = Object.assign({}, defaultOptions, opts)
|
@@ -37,10 +38,19 @@ export default class ActiveStorageUpload extends BasePlugin {
|
|
37
38
|
|
38
39
|
install() {
|
39
40
|
this.uppy.addUploader(this.handleUpload)
|
41
|
+
this.uppy.on('file-editor:complete', this.onEditorComplete)
|
40
42
|
}
|
41
43
|
|
42
44
|
uninstall() {
|
43
45
|
this.uppy.removeUploader(this.handleUpload)
|
46
|
+
this.uppy.off('file-editor:complete', this.onEditorComplete)
|
47
|
+
}
|
48
|
+
|
49
|
+
onEditorComplete = (updatedFile) => {
|
50
|
+
this.handleUpload([updatedFile.id])
|
51
|
+
|
52
|
+
// call directly upload method after editing image
|
53
|
+
return this.uploadFiles([updatedFile])
|
44
54
|
}
|
45
55
|
|
46
56
|
handleUpload(fileIDs) {
|
@@ -48,6 +58,10 @@ export default class ActiveStorageUpload extends BasePlugin {
|
|
48
58
|
this.uppy.log("[ActiveStorage] No files to upload!")
|
49
59
|
return Promise.resolve()
|
50
60
|
}
|
61
|
+
// do not upload before editing is done
|
62
|
+
if (this.opts.crop) {
|
63
|
+
return Promise.resolve()
|
64
|
+
}
|
51
65
|
|
52
66
|
this.uppy.log("[ActiveStorage] Uploading...")
|
53
67
|
const files = fileIDs.map(fileID => this.uppy.getFile(fileID))
|
@@ -115,8 +129,6 @@ export default class ActiveStorageUpload extends BasePlugin {
|
|
115
129
|
directUploadSignedId: blob.signed_id,
|
116
130
|
}
|
117
131
|
|
118
|
-
this.uppy.setFileState(file.id, { response })
|
119
|
-
|
120
132
|
this.uppy.emit("upload-success", file, blob)
|
121
133
|
|
122
134
|
return resolve(file)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% height ||= 300 %>
|
3
3
|
<% crop ||= false unless defined?(crop) %>
|
4
4
|
<% auto_submit ||= false %>
|
5
|
-
<%
|
5
|
+
<% show_delete_button = defined?(can_delete) ? can_delete : true %>
|
6
6
|
<% css ||= '' %>
|
7
7
|
|
8
8
|
<% if field_name && form %>
|
@@ -48,7 +48,7 @@
|
|
48
48
|
<%= Spree.t('actions.select_file') %>
|
49
49
|
</button>
|
50
50
|
|
51
|
-
<% if
|
51
|
+
<% if show_delete_button %>
|
52
52
|
<button type="button" class="btn btn-danger ml-auto" data-action="active-storage-upload#remove" data-turbo-confirm="<%= Spree.t(:are_you_sure) %>">
|
53
53
|
<%= icon('trash') %>
|
54
54
|
|
@@ -17,7 +17,9 @@
|
|
17
17
|
</tr>
|
18
18
|
</thead>
|
19
19
|
<tbody>
|
20
|
-
<%= render partial:
|
20
|
+
<%= render partial: "spree/admin/orders/return_authorizations/return_authorization",
|
21
|
+
collection: @return_authorizations,
|
22
|
+
cached: ->(r) { [spree_base_cache_key, r.cache_key_with_version, r.return_items.maximum(:updated_at)] } %>
|
21
23
|
</tbody>
|
22
24
|
</table>
|
23
25
|
</div>
|
@@ -21,11 +21,6 @@
|
|
21
21
|
<%= f.select :preferred_description_alignment, options_for_select([ ["Left", "left"], ["Center", "center"], ["Right", "right"] ], @page_section.preferred_description_alignment ), {}, data: { action: 'auto-submit#submit' }, class: "custom-select" %>
|
22
22
|
</div>
|
23
23
|
|
24
|
-
<div class="form-group">
|
25
|
-
<%= f.label :preferred_posts_to_show, Spree.t('admin.page_builder.posts_to_show') %>
|
26
|
-
<%= f.select :preferred_posts_to_show, options_for_select([["Newest", "newest"], ["Most popular", "most_popular"]], @page_section.preferred_posts_to_show), {}, data: { action: 'auto-submit#submit' }, class: "custom-select" %>
|
27
|
-
</div>
|
28
|
-
|
29
24
|
<div class="form-group">
|
30
25
|
<div data-controller="better-slider">
|
31
26
|
<label><%= Spree.t('admin.page_builder.maximum_posts_to_show') %>: <span data-better-slider-target="currentValueLabel"></span></label>
|
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
<div class="form-group col-6">
|
46
46
|
<%= label_tag "card_expiry#{payment_method.id}", raw(Spree.t(:expiration) + required_span_tag) %><br>
|
47
|
-
<%= text_field_tag "#{param_prefix}[expiry]", '', id: "card_expiry#{payment_method.id}", class: "required cardExpiry form-control", placeholder:
|
47
|
+
<%= text_field_tag "#{param_prefix}[expiry]", '', id: "card_expiry#{payment_method.id}", class: "required cardExpiry form-control", placeholder: Spree.t(:card_expiration_placeholder) %>
|
48
48
|
</div>
|
49
49
|
|
50
50
|
<div class="form-group col-6">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div data-replace-target="from">
|
4
4
|
<div readonly class="form-control d-flex align-items-center justify-content-between pr-1">
|
5
5
|
<span class="text-muted">
|
6
|
-
...<%= form.object.send(field)
|
6
|
+
...<%= form.object.send(field)&.last(4) %>
|
7
7
|
</span>
|
8
8
|
<button class="btn btn-sm btn-light" type="button" data-action="click->replace#replace">
|
9
9
|
<%= icon 'edit', class: 'mr-2' %>
|
@@ -23,4 +23,4 @@
|
|
23
23
|
<% else %>
|
24
24
|
<%= form.password_field(field, preference_field_options(options)) %>
|
25
25
|
<% end %>
|
26
|
-
</div>
|
26
|
+
</div>
|
@@ -7,13 +7,14 @@
|
|
7
7
|
<% end unless @product.has_variants? %>
|
8
8
|
<%= render 'spree/admin/products/form/variants', f: f %>
|
9
9
|
<%= render 'spree/admin/products/form/inventory', f: f unless @product.has_variants? %>
|
10
|
-
<%= render 'spree/admin/products/form/shipping', f: f %>
|
11
10
|
<%= render 'spree/admin/products/form/properties', f: f %>
|
12
11
|
<%= render_admin_partials(:product_form_partials, f: f, product: @product) %>
|
13
12
|
</div>
|
14
13
|
<div class="col-md-4">
|
15
14
|
<%= render 'spree/admin/products/form/status', f: f %>
|
16
15
|
<%= render 'spree/admin/products/form/categorization', f: f %>
|
16
|
+
<%= render 'spree/admin/products/form/shipping', f: f %>
|
17
|
+
<%= render 'spree/admin/products/form/tax', f: f %>
|
17
18
|
<%= render 'spree/admin/products/form/stores', f: f if available_stores.count > 1 %>
|
18
19
|
<%= render_admin_partials(:product_form_sidebar_partials, f: f, product: @product) %>
|
19
20
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="card mb-4">
|
2
|
+
<div class="card-header">
|
3
|
+
<h5 class="card-title"><%= Spree.t(:tax) %></h5>
|
4
|
+
</div>
|
5
|
+
<div class="card-body">
|
6
|
+
<div class="form-group">
|
7
|
+
<%= f.label :tax_category_id, Spree.t(:tax_category) %>
|
8
|
+
<%= f.select(:tax_category_id, @tax_categories.pluck(:name, :id), { include_blank: false }, { class: 'custom-select' }) %>
|
9
|
+
<%= f.error_message_on :tax_category %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<thead class="text-muted">
|
19
19
|
<tr>
|
20
20
|
<th scope="col" class="text-center"><%= Spree.t(:field) %></th>
|
21
|
-
<th scope="col" class="text-center" style="width: 40%;"><%= Spree.t('i18n.this_file_language', locale:
|
21
|
+
<th scope="col" class="text-center" style="width: 40%;"><%= Spree.t('i18n.this_file_language', locale: @default_locale) %> (<%= Spree.t(:default) %>)</th>
|
22
22
|
<th scope="col" class="text-center"><%= Spree.t('i18n.this_file_language', locale: @selected_translation_locale) %></th>
|
23
23
|
</tr>
|
24
24
|
</thead>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<% cache variant do %>
|
2
|
-
<% if variant.is_master? %>
|
2
|
+
<% if variant.is_master? || variant.product.deleted? %>
|
3
3
|
<% variant_url = spree.edit_admin_product_path(variant.product) %>
|
4
4
|
<% else %>
|
5
5
|
<% variant_url = spree.edit_admin_product_variant_path(variant.product, variant) %>
|
6
6
|
<% end %>
|
7
7
|
|
8
8
|
<%= link_to variant_url, id: spree_dom_id(variant), data: { turbo_permanent: true, turbo_frame: :_top }, class: 'd-flex align-items-center justify-content-start text-decoration-none' do %>
|
9
|
-
<%= render
|
9
|
+
<%= render "spree/admin/shared/product_image", object: variant %>
|
10
10
|
<div class="ml-3">
|
11
11
|
<strong><%= variant.name %></strong>
|
12
12
|
<% if variant.options_text.present? %>
|
@@ -5,22 +5,22 @@
|
|
5
5
|
</h5>
|
6
6
|
</div>
|
7
7
|
<div class="card-body">
|
8
|
-
<div class="form-group"
|
8
|
+
<div class="form-group">
|
9
9
|
<%= f.label :sku, Spree.t(:sku) %>
|
10
10
|
<%= f.text_field :sku, class: 'form-control' %>
|
11
11
|
</div>
|
12
12
|
|
13
|
-
<div class="form-group"
|
13
|
+
<div class="form-group">
|
14
14
|
<%= f.label :barcode, Spree.t(:barcode) %>
|
15
15
|
<%= f.text_field :barcode, class: 'form-control' %>
|
16
16
|
</div>
|
17
17
|
|
18
|
-
<div class="form-group"
|
18
|
+
<div class="form-group">
|
19
19
|
<%= f.label :tax_category_id, Spree.t(:tax_category) %>
|
20
20
|
<%= f.collection_select(:tax_category_id, @tax_categories, :id, :name, { include_blank: Spree.t('match_choices.none') }, { data: { controller: 'autocomplete-select' } }) %>
|
21
21
|
</div>
|
22
22
|
|
23
|
-
<div class="form-group"
|
23
|
+
<div class="form-group">
|
24
24
|
<%= f.label :discontinue_on, Spree.t(:discontinue_on) %>
|
25
25
|
<%= f.error_message_on :discontinue_on %>
|
26
26
|
<%= f.date_field :discontinue_on, class: 'form-control' %>
|
data/config/locales/en.yml
CHANGED
@@ -138,7 +138,6 @@ en:
|
|
138
138
|
maximum_products_to_show: Maximum products to show
|
139
139
|
nav_centered: Nav centered
|
140
140
|
not_set: Not set
|
141
|
-
posts_to_show: Posts to show
|
142
141
|
separated: Separated
|
143
142
|
show_more_button: Show explore category button
|
144
143
|
show_taxon_image: Show taxon image
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vendo Connect Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.0.
|
19
|
+
version: 5.0.5
|
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: 5.0.
|
26
|
+
version: 5.0.5
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_api
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 5.0.
|
33
|
+
version: 5.0.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 5.0.
|
40
|
+
version: 5.0.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: active_link_to
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -746,6 +746,7 @@ files:
|
|
746
746
|
- app/views/spree/admin/products/form/_shipping.html.erb
|
747
747
|
- app/views/spree/admin/products/form/_status.html.erb
|
748
748
|
- app/views/spree/admin/products/form/_stores.html.erb
|
749
|
+
- app/views/spree/admin/products/form/_tax.html.erb
|
749
750
|
- app/views/spree/admin/products/form/_variants.html.erb
|
750
751
|
- app/views/spree/admin/products/form/variants/_option_template.html.erb
|
751
752
|
- app/views/spree/admin/products/form/variants/_variant_template.html.erb
|
@@ -1058,9 +1059,9 @@ licenses:
|
|
1058
1059
|
- AGPL-3.0-or-later
|
1059
1060
|
metadata:
|
1060
1061
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
1061
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.0.
|
1062
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.0.5
|
1062
1063
|
documentation_uri: https://docs.spreecommerce.org/
|
1063
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.0.
|
1064
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.0.5
|
1064
1065
|
post_install_message:
|
1065
1066
|
rdoc_options: []
|
1066
1067
|
require_paths:
|