lato_cms 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f9ff4673b5fb6fd0cf73a6cb74878abb42d06e060e54df3f21a969e875afc26
4
- data.tar.gz: 5825b755ceef65a720e190d31373a209a43d7620666117faa74d446df7a7668a
3
+ metadata.gz: 33e3be18772b49e7523f66ee62e85d74ca3cbdaf6e6b0f9f39e0abeeb48dbea4
4
+ data.tar.gz: e32a97e06e949782083f87f951cba818c9372f17169703eec90cbb741cabba94
5
5
  SHA512:
6
- metadata.gz: 735617a5f9e02a8f661bb784d4f958bfc7f720837387e6046586738228957d585bdd67ae11481e2613d845aebfc14c7adf8576d94d0f50b98ad113eae4816ecb
7
- data.tar.gz: 56fb22fef815efe46da9774ecf9795413543b737264d470d384beac492308692e5ddc836c0f98e4ead2848a199c32e48e1568b918a5a7321d71b219f6dfb9934
6
+ metadata.gz: f7ec56fd1e21c2ac94d1c4fee8cac7575f1f09eddc045f64c3f39aa603ad72d07f9f4ed0799edec2b1cc734d8dc690e389f8e374eae4d50436521cd4fd5ad4ac
7
+ data.tar.gz: 217698bd6d223e2abfee2c937cffb2e380b5340b5f60c548600a624bb0ad8d92c689f1e14b188c71c2fd754088c5db4bb568921efa98b7ff9ef33efb7270a182
@@ -75,8 +75,12 @@ export default class extends Controller {
75
75
  afterSave (event) {
76
76
  if (!event.detail.success) return
77
77
 
78
+ // Matched on the persisted id only: inside a repeater every item shares the
79
+ // same `field_id` ("poster"), so falling back to it made each item find the
80
+ // first one and repaint itself — hidden input included — with that item's
81
+ // media. The next save then stored it for real.
78
82
  const field = (event.detail.data?.fields || []).find(
79
- f => f.persisted_field_id === this.fieldIdValue || f.field_id === this.fieldIdValue
83
+ f => f.persisted_field_id === this.fieldIdValue
80
84
  )
81
85
  if (!field) return
82
86
 
@@ -101,13 +101,19 @@ module LatoCms
101
101
  end
102
102
  end
103
103
 
104
- def lato_cms_render_field(field_id:, field_config:, page_field:, input_name_prefix: nil, dom_id_prefix: nil)
104
+ # `persisted_field_id` is the id the field is stored under — the same as
105
+ # `field_id` outside a repeater, `"<item_id>.<field_id>"` inside one. Media
106
+ # fields need it to recognize their own entry in the save response: matching on
107
+ # `field_id` alone would make every item of a repeater find the first one.
108
+ def lato_cms_render_field(field_id:, field_config:, page_field:, input_name_prefix: nil, dom_id_prefix: nil,
109
+ persisted_field_id: nil)
105
110
  render resolve_lato_cms_field_partial(field_config),
106
111
  field_id: field_id,
107
112
  field_config: field_config,
108
113
  page_field: page_field,
109
114
  input_name_prefix: input_name_prefix,
110
- dom_id_prefix: dom_id_prefix
115
+ dom_id_prefix: dom_id_prefix,
116
+ persisted_field_id: persisted_field_id.presence || field_id
111
117
  rescue ActionView::MissingTemplate => e
112
118
  content_tag(:div, class: 'alert alert-danger mb-0') do
113
119
  "Field '#{field_id}' render error: #{e.message}"
@@ -31,7 +31,8 @@
31
31
  field_config: field_config,
32
32
  page_field: page_field,
33
33
  input_name_prefix: input_name_prefix,
34
- dom_id_prefix: dom_id_prefix
34
+ dom_id_prefix: dom_id_prefix,
35
+ persisted_field_id: "#{item_id}.#{field_id}"
35
36
  ) %>
36
37
  </div>
37
38
  <% end %>
@@ -1,5 +1,5 @@
1
1
  <% settings = field_config['settings'] || {} %>
2
2
  <%= render partial: 'lato_cms/pages/fields/media_field', locals: {
3
3
  field_id: field_id, field_config: field_config, page_field: page_field, kind: 'file', multiple: settings['multiple'] == true,
4
- input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix]
4
+ input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix], persisted_field_id: local_assigns[:persisted_field_id]
5
5
  } %>
@@ -1,4 +1,4 @@
1
1
  <%= render partial: 'lato_cms/pages/fields/media_field', locals: {
2
2
  field_id: field_id, field_config: field_config, page_field: page_field, kind: 'image', multiple: true,
3
- input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix]
3
+ input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix], persisted_field_id: local_assigns[:persisted_field_id]
4
4
  } %>
@@ -1,4 +1,4 @@
1
1
  <%= render partial: 'lato_cms/pages/fields/media_field', locals: {
2
2
  field_id: field_id, field_config: field_config, page_field: page_field, kind: 'image', multiple: false,
3
- input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix]
3
+ input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix], persisted_field_id: local_assigns[:persisted_field_id]
4
4
  } %>
@@ -21,7 +21,7 @@
21
21
  data-lato-cms-media-field-multiple-value="<%= multiple %>"
22
22
  data-lato-cms-media-field-frame-id-value="<%= frame_id %>"
23
23
  data-lato-cms-media-field-hidden-name-value="<%= hidden_name %>"
24
- data-lato-cms-media-field-field-id-value="<%= field_id %>"
24
+ data-lato-cms-media-field-field-id-value="<%= local_assigns[:persisted_field_id].presence || field_id %>"
25
25
  data-field-required="<%= required %>">
26
26
 
27
27
  <div class="lato-cms-media-field__grid mb-2"
@@ -1,4 +1,4 @@
1
1
  <%= render partial: 'lato_cms/pages/fields/media_field', locals: {
2
2
  field_id: field_id, field_config: field_config, page_field: page_field, kind: 'video', multiple: false,
3
- input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix]
3
+ input_name_prefix: local_assigns[:input_name_prefix], dom_id_prefix: local_assigns[:dom_id_prefix], persisted_field_id: local_assigns[:persisted_field_id]
4
4
  } %>
@@ -1,3 +1,3 @@
1
1
  module LatoCms
2
- VERSION = "3.2.0"
2
+ VERSION = "3.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lato_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregorio Galante