lato_cms 3.0.0 → 3.0.2
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/assets/javascripts/lato_cms/controllers/lato_cms_component_form_controller.js +4 -0
- data/app/assets/javascripts/lato_cms/controllers/lato_cms_file_field_controller.js +203 -0
- data/app/assets/javascripts/lato_cms/controllers/lato_cms_gallery_field_controller.js +36 -4
- data/app/assets/javascripts/lato_cms/controllers/lato_cms_image_field_controller.js +135 -6
- data/app/assets/javascripts/lato_cms/controllers/lato_cms_repeater_controller.js +33 -0
- data/app/assets/stylesheets/lato_cms/application.scss +107 -3
- data/app/controllers/lato_cms/pages_controller.rb +120 -49
- data/app/helpers/lato_cms/pages_helper.rb +15 -2
- data/app/models/lato_cms/page.rb +35 -4
- data/app/models/lato_cms/page_field.rb +27 -3
- data/app/models/lato_cms/template_manager.rb +2 -0
- data/app/views/lato_cms/pages/_component_accordion.html.erb +13 -9
- data/app/views/lato_cms/pages/_repeater.html.erb +22 -0
- data/app/views/lato_cms/pages/_repeater_item.html.erb +28 -0
- data/app/views/lato_cms/pages/fields/_boolean.html.erb +6 -4
- data/app/views/lato_cms/pages/fields/_color.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_date.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_datetime.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_file.html.erb +40 -15
- data/app/views/lato_cms/pages/fields/_gallery.html.erb +3 -2
- data/app/views/lato_cms/pages/fields/_image.html.erb +42 -14
- data/app/views/lato_cms/pages/fields/_json.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_multiselect.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_number.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_select.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_string.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_text.html.erb +5 -3
- data/app/views/lato_cms/pages/fields/_textarea.html.erb +5 -3
- data/config/locales/en.yml +6 -0
- data/config/locales/it.yml +6 -0
- data/lib/lato_cms/version.rb +1 -1
- metadata +5 -1
|
@@ -3,35 +3,63 @@
|
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% accept = settings['accept'] || 'image/*' %>
|
|
5
5
|
<% current_file = page_field&.files&.attached? ? page_field.files.first : nil %>
|
|
6
|
+
<% files_input_name = lato_cms_field_input_name(field_id, 'files', input_name_prefix: local_assigns[:input_name_prefix], multiple: true) %>
|
|
7
|
+
<% remove_input_name = lato_cms_field_input_name(field_id, 'remove_file_ids', input_name_prefix: local_assigns[:input_name_prefix], multiple: true) %>
|
|
8
|
+
<% input_id = lato_cms_field_dom_id(field_id, 'files', dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
6
9
|
|
|
7
10
|
<label class="form-label">
|
|
8
11
|
<%= label %><%= ' *' if required %>
|
|
9
12
|
</label>
|
|
10
13
|
|
|
11
|
-
<div data-controller="lato-cms-image-field"
|
|
14
|
+
<div data-controller="lato-cms-image-field"
|
|
15
|
+
data-field-id="<%= field_id %>"
|
|
16
|
+
data-new-badge-label="<%= t('lato_cms.field_image_new_badge') %>"
|
|
17
|
+
data-remove-label="<%= t('lato_cms.field_image_remove') %>"
|
|
18
|
+
data-remove-pending-label="<%= t('lato_cms.field_image_remove_pending') %>"
|
|
19
|
+
data-undo-label="<%= t('lato_cms.field_file_remove_undo') %>">
|
|
12
20
|
<% if current_file %>
|
|
13
|
-
<div class="
|
|
14
|
-
<div class="
|
|
15
|
-
<img src="<%= lato_cms_attachment_path(current_file) %>" class="
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
<div class="lato-cms-file-field__item lato-cms-image-field__item" data-lato-cms-image-field-target="currentContainer" data-attachment-id="<%= current_file.id %>">
|
|
22
|
+
<div class="lato-cms-image-field__preview">
|
|
23
|
+
<img src="<%= lato_cms_attachment_path(current_file) %>" class="lato-cms-image-field__thumb" data-lato-cms-image-field-target="currentImage" alt="<%= current_file.filename %>">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="lato-cms-file-field__info">
|
|
26
|
+
<i class="bi bi-image"></i>
|
|
27
|
+
<span><%= current_file.blob.filename %></span>
|
|
28
|
+
<span class="text-muted small">(<%= number_to_human_size(current_file.blob.byte_size) %>)</span>
|
|
29
|
+
</div>
|
|
30
|
+
<button type="button" class="btn btn-sm btn-outline-danger" data-action="lato-cms-image-field#remove">
|
|
31
|
+
<i class="bi bi-trash me-1"></i><%= t('lato_cms.field_image_remove') %>
|
|
32
|
+
</button>
|
|
33
|
+
<div class="lato-cms-image-field__removed d-none" data-lato-cms-image-field-target="removedNotice">
|
|
34
|
+
<span class="text-danger small">
|
|
35
|
+
<i class="bi bi-trash me-1"></i><%= t('lato_cms.field_image_remove_pending') %>
|
|
36
|
+
</span>
|
|
37
|
+
<button type="button" class="btn btn-link btn-sm p-0" data-action="lato-cms-image-field#undo">
|
|
38
|
+
<%= t('lato_cms.field_file_remove_undo') %>
|
|
39
|
+
</button>
|
|
20
40
|
</div>
|
|
21
41
|
</div>
|
|
22
42
|
<% end %>
|
|
23
43
|
|
|
24
|
-
<div class="
|
|
25
|
-
<div class="
|
|
26
|
-
<img src="" class="
|
|
27
|
-
|
|
44
|
+
<div class="lato-cms-file-field__item lato-cms-file-field__item--new lato-cms-image-field__item d-none" data-lato-cms-image-field-target="newPreviewContainer">
|
|
45
|
+
<div class="lato-cms-image-field__preview">
|
|
46
|
+
<img src="" class="lato-cms-image-field__thumb" data-lato-cms-image-field-target="newPreview" alt="">
|
|
47
|
+
</div>
|
|
48
|
+
<div class="lato-cms-file-field__info">
|
|
49
|
+
<i class="bi bi-image"></i>
|
|
50
|
+
<span data-lato-cms-image-field-target="newPreviewName"></span>
|
|
51
|
+
<span class="text-muted small" data-lato-cms-image-field-target="newPreviewSize"></span>
|
|
52
|
+
<span class="badge bg-success"><%= t('lato_cms.field_image_new_badge') %></span>
|
|
28
53
|
</div>
|
|
54
|
+
<button type="button" class="btn btn-sm btn-outline-danger" data-action="lato-cms-image-field#removeNew">
|
|
55
|
+
<i class="bi bi-trash me-1"></i><%= t('lato_cms.field_image_remove') %>
|
|
56
|
+
</button>
|
|
29
57
|
</div>
|
|
30
58
|
|
|
31
59
|
<input type="file"
|
|
32
60
|
class="form-control"
|
|
33
|
-
name="
|
|
34
|
-
id="
|
|
61
|
+
name="<%= files_input_name %>"
|
|
62
|
+
id="<%= input_id %>"
|
|
35
63
|
accept="<%= accept %>"
|
|
36
64
|
data-lato-cms-image-field-target="input"
|
|
37
65
|
data-action="change->lato-cms-image-field#preview"
|
|
@@ -5,15 +5,17 @@
|
|
|
5
5
|
<% if current_value.present? %>
|
|
6
6
|
<% begin; current_value = JSON.pretty_generate(JSON.parse(current_value)); rescue JSON::ParserError; end %>
|
|
7
7
|
<% end %>
|
|
8
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
9
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
8
10
|
|
|
9
|
-
<label class="form-label" for="
|
|
11
|
+
<label class="form-label" for="<%= input_id %>">
|
|
10
12
|
<%= label %><%= ' *' if required %>
|
|
11
13
|
</label>
|
|
12
14
|
<div data-controller="lato-cms-json-field">
|
|
13
15
|
<textarea
|
|
14
16
|
class="form-control font-monospace"
|
|
15
|
-
name="
|
|
16
|
-
id="
|
|
17
|
+
name="<%= input_name %>"
|
|
18
|
+
id="<%= input_id %>"
|
|
17
19
|
rows="<%= settings['rows'] || 6 %>"
|
|
18
20
|
data-lato-cms-json-field-target="input"
|
|
19
21
|
data-action="input->lato-cms-json-field#validate"
|
|
@@ -3,14 +3,16 @@
|
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% options = settings['options'] || [] %>
|
|
5
5
|
<% current_values = begin; page_field&.value.present? ? JSON.parse(page_field.value) : []; rescue; []; end %>
|
|
6
|
+
<% input_name = lato_cms_field_input_name(field_id, 'value', input_name_prefix: local_assigns[:input_name_prefix], multiple: true) %>
|
|
7
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
6
8
|
|
|
7
|
-
<label class="form-label" for="
|
|
9
|
+
<label class="form-label" for="<%= input_id %>">
|
|
8
10
|
<%= label %><%= ' *' if required %>
|
|
9
11
|
</label>
|
|
10
12
|
<select
|
|
11
13
|
class="form-select"
|
|
12
|
-
name="
|
|
13
|
-
id="
|
|
14
|
+
name="<%= input_name %>"
|
|
15
|
+
id="<%= input_id %>"
|
|
14
16
|
multiple
|
|
15
17
|
size="<%= [options.length, 6].min %>"
|
|
16
18
|
<%= 'required' if required %>>
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
<% required = field_config['required'] == true %>
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% current_value = page_field&.value || '' %>
|
|
5
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
6
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
5
7
|
|
|
6
|
-
<label class="form-label" for="
|
|
8
|
+
<label class="form-label" for="<%= input_id %>">
|
|
7
9
|
<%= label %><%= ' *' if required %>
|
|
8
10
|
</label>
|
|
9
11
|
<input type="number"
|
|
10
12
|
class="form-control"
|
|
11
|
-
name="
|
|
12
|
-
id="
|
|
13
|
+
name="<%= input_name %>"
|
|
14
|
+
id="<%= input_id %>"
|
|
13
15
|
value="<%= current_value %>"
|
|
14
16
|
<%= 'required' if required %>
|
|
15
17
|
<% if settings['min'] %>min="<%= settings['min'] %>"<% end %>
|
|
@@ -3,14 +3,16 @@
|
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% options = settings['options'] || [] %>
|
|
5
5
|
<% current_value = page_field&.value || '' %>
|
|
6
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
7
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
6
8
|
|
|
7
|
-
<label class="form-label" for="
|
|
9
|
+
<label class="form-label" for="<%= input_id %>">
|
|
8
10
|
<%= label %><%= ' *' if required %>
|
|
9
11
|
</label>
|
|
10
12
|
<select
|
|
11
13
|
class="form-select"
|
|
12
|
-
name="
|
|
13
|
-
id="
|
|
14
|
+
name="<%= input_name %>"
|
|
15
|
+
id="<%= input_id %>"
|
|
14
16
|
<%= 'required' if required %>>
|
|
15
17
|
<option value=""><%= t('lato_cms.field_select_placeholder') %></option>
|
|
16
18
|
<% options.each do |option| %>
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
<% required = field_config['required'] == true %>
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% current_value = page_field&.value || '' %>
|
|
5
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
6
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
5
7
|
|
|
6
|
-
<label class="form-label" for="
|
|
8
|
+
<label class="form-label" for="<%= input_id %>">
|
|
7
9
|
<%= label %><%= ' *' if required %>
|
|
8
10
|
</label>
|
|
9
11
|
<input type="text"
|
|
10
12
|
class="form-control"
|
|
11
|
-
name="
|
|
12
|
-
id="
|
|
13
|
+
name="<%= input_name %>"
|
|
14
|
+
id="<%= input_id %>"
|
|
13
15
|
value="<%= current_value %>"
|
|
14
16
|
<%= 'required' if required %>
|
|
15
17
|
<% if settings['placeholder'] %>placeholder="<%= settings['placeholder'] %>"<% end %>
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<% label = field_config['name'] || field_id.humanize %>
|
|
2
2
|
<% required = field_config['required'] == true %>
|
|
3
3
|
<% current_value = page_field&.value || '' %>
|
|
4
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
5
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
4
6
|
|
|
5
|
-
<label class="form-label" for="
|
|
7
|
+
<label class="form-label" for="<%= input_id %>">
|
|
6
8
|
<%= label %><%= ' *' if required %>
|
|
7
9
|
</label>
|
|
8
10
|
|
|
@@ -73,8 +75,8 @@
|
|
|
73
75
|
|
|
74
76
|
<%# ── Hidden input submitted with the form ───────────────────────────── %>
|
|
75
77
|
<input type="hidden"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
name="<%= input_name %>"
|
|
79
|
+
id="<%= input_id %>"
|
|
78
80
|
data-lato-cms-text-field-target="input"
|
|
79
81
|
value="<%= CGI.escapeHTML(current_value) %>">
|
|
80
82
|
</div>
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
<% required = field_config['required'] == true %>
|
|
3
3
|
<% settings = field_config['settings'] || {} %>
|
|
4
4
|
<% current_value = page_field&.value || '' %>
|
|
5
|
+
<% input_name = lato_cms_field_input_name(field_id, input_name_prefix: local_assigns[:input_name_prefix]) %>
|
|
6
|
+
<% input_id = lato_cms_field_dom_id(field_id, dom_id_prefix: local_assigns[:dom_id_prefix]) %>
|
|
5
7
|
|
|
6
|
-
<label class="form-label" for="
|
|
8
|
+
<label class="form-label" for="<%= input_id %>">
|
|
7
9
|
<%= label %><%= ' *' if required %>
|
|
8
10
|
</label>
|
|
9
11
|
<textarea
|
|
10
12
|
class="form-control"
|
|
11
|
-
name="
|
|
12
|
-
id="
|
|
13
|
+
name="<%= input_name %>"
|
|
14
|
+
id="<%= input_id %>"
|
|
13
15
|
rows="<%= settings['rows'] || 4 %>"
|
|
14
16
|
<%= 'required' if required %>
|
|
15
17
|
<% if settings['placeholder'] %>placeholder="<%= settings['placeholder'] %>"<% end %>
|
data/config/locales/en.yml
CHANGED
|
@@ -48,13 +48,19 @@ en:
|
|
|
48
48
|
component_required_cannot_disable: Required component cannot be disabled
|
|
49
49
|
component_disabled_cannot_save: Disabled component cannot be saved
|
|
50
50
|
fields_save_component: Save
|
|
51
|
+
repeater_add_item: Add item
|
|
52
|
+
repeater_remove_item: Remove
|
|
51
53
|
fields_component_missing_alert_html: "Component <strong>%{component_id}</strong> not found. The component configuration may have been removed."
|
|
52
54
|
fields_previously_saved_data: "Previously saved data:"
|
|
53
55
|
field_file_remove: Remove
|
|
56
|
+
field_file_remove_pending: File will be removed on save
|
|
57
|
+
field_file_remove_undo: Undo
|
|
58
|
+
field_file_new_badge: New
|
|
54
59
|
field_gallery_empty: No images yet. Add images below.
|
|
55
60
|
field_gallery_add_images: Add images
|
|
56
61
|
field_gallery_drag_to_reorder: Drag to reorder
|
|
57
62
|
field_image_remove: Remove
|
|
63
|
+
field_image_remove_pending: Image will be removed on save
|
|
58
64
|
field_image_new_badge: New
|
|
59
65
|
field_multiselect_hint: Hold Ctrl/Cmd to select multiple
|
|
60
66
|
field_select_placeholder: "-- Select --"
|
data/config/locales/it.yml
CHANGED
|
@@ -48,13 +48,19 @@ it:
|
|
|
48
48
|
component_required_cannot_disable: Una componente obbligatoria non puo essere disattivata
|
|
49
49
|
component_disabled_cannot_save: Una componente disattivata non puo essere salvata
|
|
50
50
|
fields_save_component: Salva
|
|
51
|
+
repeater_add_item: Aggiungi elemento
|
|
52
|
+
repeater_remove_item: Rimuovi
|
|
51
53
|
fields_component_missing_alert_html: "Componente <strong>%{component_id}</strong> non trovato. La configurazione del componente potrebbe essere stata rimossa."
|
|
52
54
|
fields_previously_saved_data: "Dati salvati in precedenza:"
|
|
53
55
|
field_file_remove: Rimuovi
|
|
56
|
+
field_file_remove_pending: Il file verra rimosso al salvataggio
|
|
57
|
+
field_file_remove_undo: Annulla
|
|
58
|
+
field_file_new_badge: Nuovo
|
|
54
59
|
field_gallery_empty: Nessuna immagine presente. Aggiungi immagini qui sotto.
|
|
55
60
|
field_gallery_add_images: Aggiungi immagini
|
|
56
61
|
field_gallery_drag_to_reorder: Trascina per riordinare
|
|
57
62
|
field_image_remove: Rimuovi
|
|
63
|
+
field_image_remove_pending: L'immagine verra rimossa al salvataggio
|
|
58
64
|
field_image_new_badge: Nuovo
|
|
59
65
|
field_multiselect_hint: Tieni premuto Ctrl/Cmd per selezionare piu opzioni
|
|
60
66
|
field_select_placeholder: "-- Seleziona --"
|
data/lib/lato_cms/version.rb
CHANGED
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.0.
|
|
4
|
+
version: 3.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gregorio Galante
|
|
@@ -82,10 +82,12 @@ files:
|
|
|
82
82
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_component_accordion_controller.js
|
|
83
83
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_component_form_controller.js
|
|
84
84
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_component_toggle_controller.js
|
|
85
|
+
- app/assets/javascripts/lato_cms/controllers/lato_cms_file_field_controller.js
|
|
85
86
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_gallery_field_controller.js
|
|
86
87
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_image_field_controller.js
|
|
87
88
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_json_field_controller.js
|
|
88
89
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_page_preview_controller.js
|
|
90
|
+
- app/assets/javascripts/lato_cms/controllers/lato_cms_repeater_controller.js
|
|
89
91
|
- app/assets/javascripts/lato_cms/controllers/lato_cms_text_field_controller.js
|
|
90
92
|
- app/assets/stylesheets/lato_cms/application.scss
|
|
91
93
|
- app/controllers/lato_cms/api/pages_controller.rb
|
|
@@ -102,6 +104,8 @@ files:
|
|
|
102
104
|
- app/views/lato_cms/pages/_fields_editor.html.erb
|
|
103
105
|
- app/views/lato_cms/pages/_form_create.html.erb
|
|
104
106
|
- app/views/lato_cms/pages/_form_update.html.erb
|
|
107
|
+
- app/views/lato_cms/pages/_repeater.html.erb
|
|
108
|
+
- app/views/lato_cms/pages/_repeater_item.html.erb
|
|
105
109
|
- app/views/lato_cms/pages/create.html.erb
|
|
106
110
|
- app/views/lato_cms/pages/fields/_boolean.html.erb
|
|
107
111
|
- app/views/lato_cms/pages/fields/_color.html.erb
|