spina 2.17.0 → 2.19.0

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.

Potentially problematic release.


This version of spina might be problematic. Click here for more details.

Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/javascripts/spina/controllers/data_binding_controller.js +1 -0
  4. data/app/assets/javascripts/spina/controllers/page_select_controller.js +2 -37
  5. data/app/assets/javascripts/spina/controllers/reveal_controller.js +1 -1
  6. data/app/assets/javascripts/spina/controllers/select_controller.js +44 -0
  7. data/app/assets/javascripts/spina/libraries/stimulus-data-bindings@1.3.2.js +234 -0
  8. data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.4.2.js +424 -0
  9. data/app/controllers/spina/admin/resource_select_options_controller.rb +20 -0
  10. data/app/helpers/spina/spina_helper.rb +1 -3
  11. data/app/models/spina/navigation_item.rb +5 -1
  12. data/app/models/spina/parts/attachment.rb +4 -1
  13. data/app/models/spina/parts/image_variant.rb +3 -3
  14. data/app/models/spina/parts/page_link.rb +3 -2
  15. data/app/models/spina/parts/resource_link.rb +13 -0
  16. data/app/views/layouts/spina/admin/application.html.erb +1 -1
  17. data/app/views/spina/admin/navigation_items/_navigation_item.html.erb +1 -1
  18. data/app/views/spina/admin/page_select_options/index.html.erb +3 -4
  19. data/app/views/spina/admin/page_select_options/show.html.erb +1 -1
  20. data/app/views/spina/admin/pages/_form.html.erb +1 -1
  21. data/app/views/spina/admin/pages/index.html.erb +7 -0
  22. data/app/views/spina/admin/parts/page_links/_form.html.erb +17 -14
  23. data/app/views/spina/admin/parts/resource_links/_form.html.erb +32 -0
  24. data/app/views/spina/admin/resource_select_options/index.html.erb +13 -0
  25. data/app/views/spina/admin/resource_select_options/show.html.erb +3 -0
  26. data/app/views/spina/admin/shared/_navigation.html.erb +3 -1
  27. data/config/locales/da.yml +418 -0
  28. data/config/locales/en.yml +8 -5
  29. data/config/locales/nl.yml +1 -1
  30. data/config/routes.rb +4 -1
  31. data/lib/generators/spina/templates/config/initializers/spina.rb +5 -0
  32. data/lib/spina/engine.rb +2 -1
  33. data/lib/spina/theme.rb +8 -6
  34. data/lib/spina/version.rb +1 -1
  35. data/lib/spina.rb +2 -0
  36. data/lib/tasks/tailwind.rake +12 -4
  37. metadata +25 -10
  38. data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js +0 -388
@@ -0,0 +1,32 @@
1
+ <div class="mt-6">
2
+ <label class="block text-sm leading-5 font-medium text-gray-700"><%= f.object.title %></label>
3
+ <div class="text-gray-400 text-sm"><%= f.object.hint %></div>
4
+ <div data-controller="select reveal" data-placeholder="<%=t "spina.resources.select_resource" %>" class="relative mt-1" data-reveal-away-value>
5
+ <%= f.hidden_field :resource_id, data: {select_target: "input"} %>
6
+ <button type="button" class="btn btn-default px-3 inline-flex items-center text-sm font-medium" data-action="reveal#toggle select#autofocus">
7
+ <%= heroicon("link", style: :mini, class: "w-4 h-4 mr-1 text-gray-600") %>
8
+ <div data-select-target="label">
9
+ <% if f.object.resource_id.present? %>
10
+ <%= turbo_frame_tag :resource_title, src: spina.admin_resource_select_option_path(f.object.resource_id) %>
11
+ <% end %>
12
+ </div>
13
+ </button>
14
+ <div class="relative mt-1">
15
+ <div data-reveal data-transition hidden class="absolute shadow-lg border border-gray-200 origin-top-right rounded-md z-10 top-0">
16
+ <div class="rounded-md bg-white shadow-xs">
17
+ <%= form_with url: spina.search_admin_resource_select_options_path, data: {turbo_frame: "resource_select_options_#{f.object.object_id}", controller: "form", debounce_time: 100} do |ff| %>
18
+ <%= ff.hidden_field :object_id, value: f.object.object_id %>
19
+ <%= ff.hidden_field :resource, value: f.object.options&.dig(:resource) %>
20
+ <div class="p-2">
21
+ <%= ff.search_field :search, placeholder: t("spina.search"), class: "form-input sticky top-0 text-sm w-80", data: {action: "input->form#submit focus->form#submit", select_target: "search"} %>
22
+ </div>
23
+ <% end %>
24
+ <div class="overflow-scroll max-h-80">
25
+ <%= turbo_frame_tag "resource_select_options_#{f.object.object_id}" do %>
26
+ <% end %>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
@@ -0,0 +1,13 @@
1
+ <%= turbo_frame_tag "resource_select_options_#{params[:object_id]}" do %>
2
+ <% if params[:search].blank? %>
3
+ <button type="button" data-action="select#clear reveal#hide" class="block hover:bg-gray-100 w-full text-left px-5 py-2 font-medium leading-5 text-gray-700 hover:text-gray-900 text-sm border-t border-gray-150">
4
+
5
+ </button>
6
+ <% end %>
7
+
8
+ <% @resources.each do |resource| %>
9
+ <button type="button" data-action="select#select reveal#hide" data-title="<%= resource.label %>" data-id="<%= resource.id %>" class="block hover:bg-gray-100 w-full text-left px-5 py-2 font-medium leading-5 text-gray-700 hover:text-gray-900 text-sm border-t border-gray-150">
10
+ <%= resource.label %>
11
+ </button>
12
+ <% end %>
13
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <%= turbo_frame_tag :resource_title do %>
2
+ <%= @resource.label %>
3
+ <% end %>
@@ -16,7 +16,9 @@
16
16
 
17
17
  <%= render Spina::MainNavigation::LinkComponent.new t('spina.website.pages'), spina.admin_pages_path, active: controller_name.in?(%w(pages resources)) %>
18
18
 
19
- <%= render Spina::MainNavigation::LinkComponent.new t('spina.navigations.navigations'), spina.admin_navigations_path, active: controller_name == "navigations" %>
19
+ <% if Spina::Current.theme.navigations.present? %>
20
+ <%= render Spina::MainNavigation::LinkComponent.new t('spina.navigations.navigations'), spina.admin_navigations_path, active: controller_name == "navigations" %>
21
+ <% end %>
20
22
 
21
23
  <% if Spina::Current.theme.layout_parts.present? %>
22
24
  <%= render Spina::MainNavigation::LinkComponent.new t('spina.layout.layout'), spina.edit_admin_layout_path, active: controller_name == "layout" %>
@@ -0,0 +1,418 @@
1
+ da:
2
+ activemodel:
3
+ attributes:
4
+ spina/embeds/youtube:
5
+ url: youtube.com/watch?v=...
6
+ spina/embeds/vimeo:
7
+ url: vimeo.com/...
8
+ activerecord:
9
+ errors:
10
+ models:
11
+ spina/page:
12
+ attributes:
13
+ title:
14
+ blank: Titel skal udfyldes
15
+ attributes:
16
+ spina/account:
17
+ address: Adresse
18
+ city: By
19
+ email: Email
20
+ facebook: Facebook
21
+ google_analytics: Google Analytics
22
+ google_plus: Google+
23
+ google_site_verification: Google Site Verification
24
+ instagram: Instagram
25
+ kvk_identifier: Chamber of commerce
26
+ kvk_identifier_description: Chamber of commerce
27
+ linkedin: LinkedIn
28
+ logo: Logo
29
+ name: Hjemmesidens navn
30
+ phone: Telefon
31
+ postal_code: Postnummer
32
+ robots_allowed: Synlig for søgemaskiner
33
+ theme: Designtema
34
+ twitter: Twitter
35
+ vat_identifier: VAT
36
+ vat_identifier_description: VAT
37
+ youtube: YouTube
38
+ spina/attachment:
39
+ created_at: Oprettet
40
+ name: Filenavn
41
+ size: Størrelse
42
+ spina/media_folder:
43
+ name: Navn
44
+ spina/navigation:
45
+ auto_add_pages: Tilføj automatisk sider
46
+ auto_add_pages_description: Nye sider tilføjes automatisk til denne menu
47
+ label: Label
48
+ pages: Sider
49
+ pages_description: Vælg sider til denne menu
50
+ spina/page:
51
+ ancestry: Overliggende side
52
+ created_at: Oprettet
53
+ description: Meta beskrivelse
54
+ description_description: Beskrivelse til søgeresultater
55
+ description_placeholder: Kort beskrivelse af siden
56
+ draft: Kladde
57
+ draft_description: Til når din side ikke er helt færdig
58
+ link_url: Redirect
59
+ link_url_description: Viderestil til URL
60
+ link_url_placeholder: fx. http://www.example.com/
61
+ menu_title: Menutitel
62
+ menu_title_placeholder: Efterlad blank for at bruge sidens titel
63
+ no_parent: Ikke under en anden side
64
+ resource: Resource
65
+ seo_title: SEO <title>
66
+ seo_title_description: Sørg for at siden ser godt ud i søgeresultater
67
+ seo_title_placeholder: Bruges i <title>-tag
68
+ show_in_menu: Vis i menu
69
+ show_in_menu_description: Slå fra for ikke at have siden i menu
70
+ skip_to_first_child: Viderestil
71
+ skip_to_first_child_description: Viderestil til første underliggende side
72
+ title: Titel
73
+ title_placeholder: Sidens titel
74
+ url_title: Bestem selv adressen
75
+ url_title_description: Valgfrit
76
+ url_title_placeholder: Slug
77
+ view_template: Designskabelon
78
+ spina/resource:
79
+ label: Label
80
+ order_by: Sorter efter
81
+ parent_page: Overliggende side
82
+ view_template: Standard designskabelon
83
+ spina/user:
84
+ admin: Administrator
85
+ admin_description: Administratorer kan oprette brugere
86
+ email: Email
87
+ email_description: Din email skal være unik
88
+ last_logged_in: Sidst logget ind
89
+ name: Navn
90
+ name_placeholder: Navn
91
+ password: Kodeord
92
+ password_confirmation: Bekræft kodeord
93
+ password_description: Efterlad blank for ikke at skifte kode
94
+ role: Rolle
95
+ user: Bruger
96
+ models:
97
+ spina/attachment:
98
+ one: Dokument
99
+ other: Dokumenter
100
+ spina/page:
101
+ one: Side
102
+ other: Sider
103
+ spina/photo:
104
+ one: Billede
105
+ other: Billeder
106
+ spina/user:
107
+ one: Bruger
108
+ other: Brugere
109
+ helpers:
110
+ label:
111
+ spina/embeds/button:
112
+ url: URL
113
+ label: Knaptekst
114
+ spina/embeds/youtube:
115
+ url: Youtube URL
116
+ spina/embeds/vimeo:
117
+ url: Vimeo URL
118
+ spina:
119
+ accounts:
120
+ contact_details: Kontaktinformation
121
+ contact_details_description: Email og telefon
122
+ couldnt_be_saved: Kunne ikke gemme konto
123
+ name_description: Sidenavn
124
+ save: Gem
125
+ saved: Gemt
126
+ ago: siden
127
+ attachments:
128
+ choose_attachment: Vælg fil
129
+ delete_confirmation_html: Sikker? Denne fil <span class='font-semibold'>kan</span> være i brug på en siden.
130
+ download: Download
131
+ insert: Indsæt fil
132
+ insert_multiple: Indsæt fil
133
+ upload: Upload filer
134
+ upload_one: Upload fil
135
+ cancel: Afbryd
136
+ choose_from_library: Vælg fra bibliotek
137
+ close: Luk
138
+ delete: Slet
139
+ delete_confirmation: Sikker på du vil slette <strong>%{subject}</strong>?
140
+ edit: Rediger
141
+ edit_website: Rediger din side
142
+ embeds:
143
+ embed_a_component: Embed a component
144
+ embed_component: Embed component
145
+ forgot_password:
146
+ expired: Linket til at nulstille din kode er udløbet!
147
+ mail_subject: Nulstil din adgangskode
148
+ new: Glemt din adgangskode
149
+ request: Anmod om ny adgangskode
150
+ save: Gem adgangskode
151
+ success: Din adgangskode er gemt og klar til brug
152
+ unknown_user: Ingen bruger fundet
153
+ images:
154
+ all_images: Alle billeder
155
+ back: Tilbage
156
+ cannot_be_created: Kunne ikke oprette billede
157
+ choose_image: Vælg billede
158
+ choose_images: Vælg billeder
159
+ confirm_selection: Bekræft valg
160
+ delete: Slet
161
+ delete_confirmation_html: Sikker på du vil slette dette <strong>billede</strong>?
162
+ delete_folder: Slet mappe
163
+ done_organizing: Afslut organisering
164
+ insert_image: Indsæt billede
165
+ insert_photo: Indsæt billede
166
+ insert_photos: Indsæt billeder
167
+ link: Link
168
+ missing_image: Mangler billede
169
+ new_folder: Ny mappe
170
+ organize: Organiser
171
+ remove_image: Fjern billede
172
+ upload: Upload billeder
173
+ upload_image: Upload billede
174
+ languages:
175
+ bg: Bulgarsk
176
+ da: Dansk
177
+ de: Tysk
178
+ en: Engelsk
179
+ es: Spansk
180
+ fr: Fransk
181
+ id: Indonesisk
182
+ it: Italiensk
183
+ nl: Dutch
184
+ pl: Polsk
185
+ pt-BR: Braziliansk portugisisk
186
+ ro: Rumænsk
187
+ ru: Russisk
188
+ sv: Svensk
189
+ th: Thai
190
+ tr: Tyrkisk
191
+ zh-CN: Kinesisk (forenklet)
192
+ layout:
193
+ couldnt_be_saved: Layout couldn't be saved
194
+ layout: Layout
195
+ no_layout_parts: No layout parts available
196
+ save: Save layout
197
+ saved: Layout saved
198
+ login: Log ind
199
+ logout: Log ud
200
+ main_menu: Hovedmenu
201
+ media_library:
202
+ add_folder: Tilføj mappe
203
+ add_image: Filføj billede
204
+ attachments: Filer
205
+ back_to_all: Tilbage
206
+ filename: Filnavn
207
+ images: Billeder
208
+ images_count:
209
+ one: 1 billede
210
+ other: "%{count} billeder"
211
+ insert: Indsæt billede
212
+ media_folder_delete_confirmation_html: Sikker? Billeder bliver <strong>ikke</strong> slettet.
213
+ no_folder: Ingen mappe
214
+ photos: Billeder
215
+ rename_folder: Omdøb mappe
216
+ save_media_folder: Gem mappe
217
+ upload_from_device: Upload fra enhed
218
+ uploading: Uploader...
219
+ modal:
220
+ agree: Ja, jeg er sikker
221
+ cancel: Nej, fortryd
222
+ navigations:
223
+ add_menu_item: Tilføj menupunkt
224
+ add_sub_item: Tilføj undermenu
225
+ choose_page: Vælg side
226
+ delete_item: Slet
227
+ delete_item_confirmation_html: Sikker på at du vil <span class='font-semibold'>delete</span> dette menupunkt?
228
+ description: Tilføj og sorter som du ønsker. Du kan også lave undermenuer.
229
+ edit_item: Rediger
230
+ navigations: Menuer
231
+ no_navigations: Denne side har ingen menuer endnu. Du kan oprette menuer i din designskabelon.
232
+ sorting_saved: Sortering gemt
233
+ url_placeholder: "https://"
234
+ url_title_placeholder: "Label"
235
+ navigation_items:
236
+ page: Side
237
+ url: URL
238
+ notifications:
239
+ alert: Hov! Noget gik helt galt!
240
+ information: Information
241
+ login: Du skal logge ind først
242
+ wrong_username_or_password: Forkert email eller kodeord
243
+ options:
244
+ choose_option: Vælg
245
+ page_links:
246
+ text_placeholder: Valgfri tekst til link
247
+ pages:
248
+ add_page_to: "Tilføj side til:"
249
+ add_translation: Tilføj %{language} oversættelse
250
+ advanced: Avanceret
251
+ cannot_be_deleted: Siden kan ikke slettes
252
+ change_order: Ændre rækkefølge
253
+ change_view_template: Ændre designskabelon
254
+ change_view_template_confirmation: Sikker på du vil ændre sideskabelon? Indhold der ikke passer i ny skabelon vil forsvinde.
255
+ concept: kladde
256
+ create: Ny side
257
+ create_page: ny %{template}
258
+ delete: Slet side
259
+ delete_confirmation: Sikker på du vil slette siden <strong>%{subject}</strong>?
260
+ deleted: Side slettet
261
+ done_changing_order: Færdig med at ændre rækkefølge
262
+ edit_translation: Rediger %{language} oversættelse
263
+ invisible_to_search_engines: Din side er usynlig for søgemaskiner
264
+ invisible_to_search_engines_description: Gå til indstillinger for at aktivere adgang for søgemaskiner.
265
+ main_collection: Primær samling
266
+ materialize_path_confirmation: Sikker på du vil opdatere sti til denne side?
267
+ missing_translations: Manglende oversættelse
268
+ move_page: Flyt side
269
+ moved: Side flyttet
270
+ new: Ny side
271
+ no_pages_yet: Ingen sider endnu
272
+ no_parent_page: Ingen overliggende side
273
+ page_content: Indhold
274
+ page_part: Afsnit
275
+ page_seo: Søgemaskiner
276
+ path: "Sti:"
277
+ photo_picker: Vælg billede
278
+ photos_picker: Vælg billeder
279
+ preview: Se side
280
+ publish: Publicer
281
+ published: Side publiceret
282
+ rebuild_materialized_path: Opdater sti
283
+ recommended: anbefalet
284
+ save: Gem side
285
+ save_changes: Gem ændringer
286
+ save_draft: Gem kladde
287
+ saved: Side gemt
288
+ saving: Gemmer...
289
+ select_page: Vælg side
290
+ couldnt_be_saved: Siden kunne ikke gemmes
291
+ search_engines: Søgemaskiner
292
+ show_in_menu: usynlig i menu
293
+ skip_to_first_child: viderestil til første underliggende side
294
+ sorting_saved: Sortering gemt
295
+ page_translations:
296
+ delete: Slet oversættelse (%{translation})
297
+ delete_confirmation: Sikker på du vil slette denne oversættelse <strong>(%{subject})</strong>?
298
+ deleted: Oversættelse slettet
299
+ permanently_delete: Slet permanent
300
+ photos:
301
+ cannot_be_created: "Behandling af billede fejlede:"
302
+ choose_images: Vælg billeder
303
+ delete: Slet
304
+ delete_confirmation: Sikker på du vil slette dette <strong>billede</strong>?
305
+ delete_folder: Slet mappe
306
+ done_organizing: Færdig med organisering
307
+ insert_photo: Indsæt billede
308
+ insert_photos: Indsæt billeder
309
+ link: "URL til billedet:"
310
+ new_folder: Ny mappe
311
+ organize: Organiser billeder
312
+ rename_folder: Omdøb mappe
313
+ select_images: Vælg billeder
314
+ upload_image: Upload billede
315
+ preferences:
316
+ Analytics: Analytics
317
+ account: Generelt
318
+ account_description: Personlige indstillinger
319
+ account_save: Gem
320
+ analytics: Analytics and søgemaskiner
321
+ analytics_description: Link din Google Analytics konto
322
+ analytics_save: Gem indstillinger
323
+ domain_name_settings: Domænenavn
324
+ domain_name_settings_description: Indstillinger for domænenavn
325
+ social_media: Sociale medier
326
+ social_media_description: Facebook og Twitter konti
327
+ social_media_save: Gem sociale medier
328
+ style: Design
329
+ style_description: Vælg en designskabelon
330
+ style_save: Gem design
331
+ title: Indstillinger
332
+ users: Brugere
333
+ users_description: Administrer brugere
334
+ preview_website: Forhåndsvisning
335
+ resources:
336
+ edit: Rediger samling
337
+ label_description: Label til denne samling.
338
+ manual_sorting: Manuel sortering
339
+ no_default_template: Ingen standard designskabelon
340
+ saved: Gemt
341
+ select_resource: Vælg samling
342
+ settings: "%{label} indstillinger"
343
+ settings_description: Alle sider i denne samling får dette sat foran deres URL.
344
+ save: Gem
345
+ search: Søg...
346
+ settings:
347
+ general: Generelt
348
+ save: Gem
349
+ title: Indstillinger
350
+ users: Brugere
351
+ theme:
352
+ save: Gem
353
+ saved: Gemt
354
+ theme: Design
355
+ theme_description: Vælg en designskabelon
356
+ ui:
357
+ cancel: Fortryd
358
+ delete: Slet
359
+ delete_item: Slet %{item}
360
+ load_more: Hent flere
361
+ move_to: Flyt til
362
+ new_entry: Ny
363
+ optional: Valgftit
364
+ or: eller
365
+ rename: Omdøb
366
+ replace: Erstat
367
+ save_changes: Gem ændringer
368
+ saving: Gemmer...
369
+ user_mailer:
370
+ forgot_password:
371
+ button: Nulstil adgangskode
372
+ introduction: Du har anmodet om at nulstille din adgangskode til din Spina CMS-konto. Denne adgangskode nulstilling er kun gyldig i de næste 2 timer. Kopier og indsæt URL'en nedenfor i din webbrowser.
373
+ introduction_html: "Du har anmodet om at nulstille din adgangskode til din Spina CMS-konto. Brug knappen nedenfor til at nulstille koden. <strong>Denne adgangskode nulstilling er kun gyldig i de næste 2 timer.</strong>"
374
+ preheader: Brug linket til at nulstille din adgangskode. Linket er gyldigt i 2 timer.
375
+ request_origin: For security, this request was received from a %{platform} device using %{browser}. If you did not request a password reset, please ignore this email.
376
+ salutation: Hej, %{name}
377
+ subject: Nulstil din adgangskode
378
+ trouble: Hvis du har problemer med at klikke på knappen "Nulstil din adgangskode", kopier og indsæt URL'en nedenfor i din webbrowser.
379
+ users:
380
+ authorization: Authorization
381
+ authorization_description: Administratorer kan redigere brugere. Det kan almindelige brugere ikke.
382
+ cannot_be_created: Kunne ikke gemme bruger
383
+ delete: Slet bruger
384
+ delete_confirmation_html: Er du sikker på du vil slette brugeren <strong>%{user}</strong>?
385
+ deleted: Bruger slettet
386
+ last_login: "Sidste login:"
387
+ never_logged_in: Aldrig logget ind
388
+ new: Ny bruger
389
+ profile: Profil
390
+ profile_description: Information om bruger. Email bruges til login.
391
+ save: Gem
392
+ saved: Gemt
393
+ visit_page: Besøg side
394
+ website:
395
+ all_pages: Alle sider
396
+ content: Indhold
397
+ documents: Dokumenter
398
+ images: Billeder
399
+ main: Sider
400
+ media_library: Bibliotek
401
+ media_library_description: Her er alle dine filer og billeder
402
+ pages: Sider
403
+ pages_description: Alle sider på din hjemmeside
404
+ photos: Billeder
405
+ settings: Indstillinger
406
+ theme: Design
407
+ title: Din side
408
+ wysiwyg:
409
+ heading_1: Overskrift 1
410
+ heading_2: Overskrift 2
411
+ heading_3: Overskrift 3
412
+ insert_link: Indsæt link
413
+ link: Link
414
+ paragraph: Paragraf
415
+ quote: Citat
416
+ unlink: Fjern link
417
+ url: URL
418
+ url_placeholder: Indtast URL
@@ -241,8 +241,10 @@ en:
241
241
  wrong_username_or_password: Wrong email or password
242
242
  options:
243
243
  choose_option: Choose option
244
+ page_links:
245
+ text_placeholder: "Optional text for the link"
244
246
  pages:
245
- add_page_to: 'Add page to:'
247
+ add_page_to: "Add page to:"
246
248
  add_translation: Add %{language} translation
247
249
  advanced: Advanced
248
250
  cannot_be_deleted: Page can't be deleted
@@ -270,7 +272,7 @@ en:
270
272
  page_content: Content
271
273
  page_part: Page section
272
274
  page_seo: Search engines
273
- path: 'Path:'
275
+ path: "Path:"
274
276
  photo_picker: Choose image
275
277
  photos_picker: Choose images
276
278
  preview: Preview
@@ -295,7 +297,7 @@ en:
295
297
  deleted: Translation deleted
296
298
  permanently_delete: Permanently delete
297
299
  photos:
298
- cannot_be_created: 'Image could not be processed:'
300
+ cannot_be_created: "Image could not be processed:"
299
301
  choose_images: Choose images
300
302
  delete: Delete
301
303
  delete_confirmation: Are you sure you want to delete this <strong>image</strong>?
@@ -303,7 +305,7 @@ en:
303
305
  done_organizing: Done organizing
304
306
  insert_photo: Insert image
305
307
  insert_photos: Choose images
306
- link: 'URL of your image:'
308
+ link: "URL of your image:"
307
309
  new_folder: New folder
308
310
  organize: Organize images
309
311
  rename_folder: Rename folder
@@ -335,6 +337,7 @@ en:
335
337
  manual_sorting: Manual sorting
336
338
  no_default_template: No default template
337
339
  saved: Page collection saved
340
+ select_resource: Select resource
338
341
  settings: "%{label} settings"
339
342
  settings_description: All pages inside this collection will be prepended with this slug.
340
343
  save: Save
@@ -379,7 +382,7 @@ en:
379
382
  delete: Delete user
380
383
  delete_confirmation_html: Are you sure you want to delete the user <strong>%{user}</strong>?
381
384
  deleted: User deleted
382
- last_login: 'Last login:'
385
+ last_login: "Last login:"
383
386
  never_logged_in: Never logged in
384
387
  new: New user
385
388
  profile: Profile
@@ -281,7 +281,7 @@ nl:
281
281
  select_page: Kies pagina
282
282
  search_engines: Zoekmachines
283
283
  show_in_menu: onzichtbaar
284
- skip_to_first_child: doorsturen naar 1<sup>e</sup> subpagina
284
+ skip_to_first_child: doorsturen naar eerste subpagina
285
285
  sorting_saved: Volgorde opgeslagen
286
286
  page_translations:
287
287
  delete: Verwijder vertaling (%{translation})
data/config/routes.rb CHANGED
@@ -48,7 +48,7 @@ Spina::Engine.routes.draw do
48
48
  get :children
49
49
  post :sort_one
50
50
  end
51
-
51
+
52
52
  collection do
53
53
  post :sort
54
54
  end
@@ -58,6 +58,9 @@ Spina::Engine.routes.draw do
58
58
  resources :page_select_options, only: [:show, :index] do
59
59
  post :search, on: :collection
60
60
  end
61
+ resources :resource_select_options, only: [:show, :index] do
62
+ post :search, on: :collection
63
+ end
61
64
  resources :page_translations, only: [:destroy]
62
65
  resources :parent_pages
63
66
  resource :layout, controller: :layout, only: [:edit, :update]
@@ -4,6 +4,11 @@ Spina.configure do |config|
4
4
  # All locales your content should be available in.
5
5
  # Defaults to I18n.default_locale
6
6
  # config.locales = [:en, :nl]
7
+
8
+ # Backend title
9
+ # ===============
10
+ # Set <title> for the admin panel. Defaults to "Spina CMS"
11
+ # config.backend_title = "Spina CMS"
7
12
 
8
13
  # Backend path
9
14
  # ===============
data/lib/spina/engine.rb CHANGED
@@ -38,7 +38,8 @@ module Spina
38
38
  Spina::Parts::Repeater,
39
39
  Spina::Parts::Option,
40
40
  Spina::Parts::Attachment,
41
- Spina::Parts::PageLink
41
+ Spina::Parts::PageLink,
42
+ Spina::Parts::ResourceLink
42
43
  )
43
44
  end
44
45
  end
data/lib/spina/theme.rb CHANGED
@@ -2,6 +2,8 @@ module Spina
2
2
  class Theme
3
3
  attr_accessor :name, :title, :parts, :page_parts, :structures, :view_templates, :layout_parts, :custom_pages, :plugins, :public_theme, :config, :navigations, :resources, :embeds
4
4
 
5
+ NewPageTemplate = Struct.new(:name, :title, :description, :recommended)
6
+
5
7
  class << self
6
8
  def all
7
9
  ::Spina::THEMES
@@ -50,12 +52,12 @@ module Spina
50
52
  next if is_custom_undeletable_page?(view_template[:name])
51
53
  next if view_template[:exclude_from]&.include?(page_collection)
52
54
 
53
- OpenStruct.new({
54
- name: view_template[:name],
55
- title: view_template[:title],
56
- description: view_template[:description],
57
- recommended: view_template[:name] == resource&.view_template
58
- })
55
+ NewPageTemplate.new(
56
+ view_template[:name],
57
+ view_template[:title],
58
+ view_template[:description],
59
+ view_template[:name] == resource&.view_template
60
+ )
59
61
  end.compact.sort_by do |page_template|
60
62
  [page_template.recommended ? 0 : 1]
61
63
  end
data/lib/spina/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spina
2
- VERSION = "2.17.0"
2
+ VERSION = "2.19.0"
3
3
  end
data/lib/spina.rb CHANGED
@@ -23,6 +23,7 @@ module Spina
23
23
  config_accessor :api_key,
24
24
  :api_path,
25
25
  :authentication,
26
+ :backend_title,
26
27
  :backend_path,
27
28
  :importmap,
28
29
  :frontend_parent_controller,
@@ -44,6 +45,7 @@ module Spina
44
45
  self.api_key = nil
45
46
  self.api_path = "api"
46
47
  self.authentication = "Spina::Authentication::Sessions"
48
+ self.backend_title = "Spina CMS"
47
49
  self.backend_path = "admin"
48
50
  self.disable_frontend_routes = false
49
51
  self.disable_decorator_load = false
@@ -1,20 +1,28 @@
1
- require "tailwindcss-rails"
1
+ require "tailwindcss/ruby"
2
2
 
3
3
  namespace :spina do
4
4
  namespace :tailwind do
5
5
  def spina_tailwind_compile_command
6
- "#{Tailwindcss::Engine.root.join("exe/tailwindcss")} -i #{Spina::Engine.root.join("app/assets/stylesheets/spina/application.tailwind.css")} -o #{Rails.root.join("app/assets/builds", "spina/tailwind.css")} -c #{Rails.root.join("app/assets/config/spina/tailwind.config.js")}"
6
+ [
7
+ Tailwindcss::Ruby.executable,
8
+ "-i", Spina::Engine.root.join("app/assets/stylesheets/spina/application.tailwind.css").to_s,
9
+ "-o", Rails.root.join("app/assets/builds/spina/tailwind.css").to_s,
10
+ "-c", Rails.root.join("app/assets/config/spina/tailwind.config.js").to_s,
11
+ ]
7
12
  end
8
13
 
9
14
  desc "Build your Tailwind CSS"
10
15
  task build: :environment do
11
16
  Rails::Generators.invoke("spina:tailwind_config", ["--force"])
12
- system spina_tailwind_compile_command
17
+ command = spina_tailwind_compile_command
18
+ system *command
13
19
  end
14
20
 
15
21
  task watch: :environment do
16
22
  Rails::Generators.invoke("spina:tailwind_config", ["--force"])
17
- system "#{spina_tailwind_compile_command} -w"
23
+ command = spina_tailwind_compile_command
24
+ command << "-w"
25
+ system *command
18
26
  end
19
27
  end
20
28
  end