spina 2.13.1 → 2.15.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/spina/tailwind.css +554 -589
  3. data/app/assets/javascripts/spina/controllers/form_controller.js +14 -1
  4. data/app/assets/javascripts/spina/controllers/page_collapse_controller.js +17 -0
  5. data/app/assets/javascripts/spina/controllers/page_select_controller.js +38 -0
  6. data/app/assets/javascripts/spina/libraries/debounce.js +65 -0
  7. data/app/components/spina/forms/search_component.html.erb +12 -0
  8. data/app/components/spina/forms/search_component.rb +12 -0
  9. data/app/components/spina/forms/trix_toolbar_component.html.erb +5 -6
  10. data/app/components/spina/media_picker/modal_component.html.erb +24 -16
  11. data/app/components/spina/pages/new_page_button_component.html.erb +2 -2
  12. data/app/components/spina/pages/page_component.html.erb +23 -10
  13. data/app/components/spina/pages/page_component.rb +15 -3
  14. data/app/controllers/spina/admin/attachments_controller.rb +1 -1
  15. data/app/controllers/spina/admin/images_controller.rb +1 -1
  16. data/app/controllers/spina/admin/media_picker_controller.rb +1 -1
  17. data/app/controllers/spina/admin/page_select_options_controller.rb +24 -0
  18. data/app/controllers/spina/admin/pages_controller.rb +1 -1
  19. data/app/controllers/spina/admin/password_resets_controller.rb +1 -1
  20. data/app/models/concerns/spina/attachable.rb +21 -0
  21. data/app/models/spina/attachment.rb +2 -6
  22. data/app/models/spina/image.rb +2 -6
  23. data/app/models/spina/navigation_item.rb +1 -1
  24. data/app/models/spina/page.rb +3 -1
  25. data/app/models/spina/parts/page_link.rb +13 -0
  26. data/app/models/spina/user.rb +1 -1
  27. data/app/views/spina/admin/accounts/edit.html.erb +1 -1
  28. data/app/views/spina/admin/attachments/index.html.erb +9 -3
  29. data/app/views/spina/admin/images/_image.html.erb +2 -2
  30. data/app/views/spina/admin/images/index.html.erb +10 -3
  31. data/app/views/spina/admin/layout/edit.html.erb +1 -1
  32. data/app/views/spina/admin/navigations/edit.html.erb +1 -1
  33. data/app/views/spina/admin/page_select_options/index.html.erb +21 -0
  34. data/app/views/spina/admin/page_select_options/show.html.erb +3 -0
  35. data/app/views/spina/admin/pages/_form.html.erb +3 -3
  36. data/app/views/spina/admin/pages/children.html.erb +3 -0
  37. data/app/views/spina/admin/pages/index.html.erb +2 -2
  38. data/app/views/spina/admin/parts/multi_lines/_form.html.erb +4 -1
  39. data/app/views/spina/admin/parts/page_links/_form.html.erb +36 -0
  40. data/app/views/spina/admin/resources/edit.html.erb +1 -1
  41. data/app/views/spina/admin/settings/edit.html.erb +1 -1
  42. data/app/views/spina/admin/shared/_navigation.html.erb +4 -4
  43. data/app/views/spina/admin/theme/edit.html.erb +1 -1
  44. data/app/views/spina/admin/users/_form.html.erb +1 -1
  45. data/app/views/spina/admin/users/index.html.erb +1 -1
  46. data/config/initializers/importmap.rb +6 -0
  47. data/config/locales/de.yml +1 -0
  48. data/config/locales/en.yml +1 -0
  49. data/config/locales/nl.yml +43 -0
  50. data/config/routes.rb +8 -3
  51. data/db/migrate/16_add_ancestry_cache_columns_to_spina_pages.rb +6 -0
  52. data/lib/spina/attr_json_spina_parts_model.rb +1 -1
  53. data/lib/spina/engine.rb +2 -1
  54. data/lib/spina/version.rb +1 -1
  55. metadata +26 -19
@@ -1,5 +1,5 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.navigation do %>
2
+ <% header.with_navigation do %>
3
3
  <nav class="-mb-3 mt-4">
4
4
  <ul class="inline-flex flex-wrap w-auto rounded-md bg-white">
5
5
  <% @navigations.each do |navigation| %>
@@ -0,0 +1,21 @@
1
+ <%= turbo_frame_tag "page_select_options_#{params[:object_id]}" do %>
2
+ <% if params[:search].blank? %>
3
+ <button type="button" data-action="page-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
+ <% @pages.each do |page| %>
9
+ <button type="button" data-action="page-select#select reveal#hide" data-title="<%= page.title %>" data-id="<%= page.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
+ <%= page.title %>
11
+ <% if page.draft? %>
12
+ <span class="font-normal text-gray-400">
13
+ (<%=t "spina.pages.concept" %>)
14
+ </span>
15
+ <% end %>
16
+ <div class="text-xs font-normal text-gray-400">
17
+ <%= page.materialized_path %>
18
+ </div>
19
+ </button>
20
+ <% end %>
21
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <%= turbo_frame_tag :page_title do %>
2
+ <%= @page.title %>
3
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <div data-controller="tabs" data-tabs-active="cursor-default text-gray-900 bg-spina-dark bg-opacity-10" data-tabs-inactive="cursor-pointer bg-transparent text-gray-400 border-transparent">
2
2
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
3
- <% header.after_breadcrumbs do %>
3
+ <% header.with_after_breadcrumbs do %>
4
4
  <% if @page.draft? %>
5
5
  <span class="text-gray-400 ml-2 text-sm">(<%= Spina::Page.human_attribute_name(:draft) %>)</span>
6
6
  <% end %>
@@ -8,10 +8,10 @@
8
8
  <%= heroicon("external-link", style: :mini, class: "w-4 h-4") %>
9
9
  <% end %>
10
10
  <% end %>
11
- <% header.actions do %>
11
+ <% header.with_actions do %>
12
12
  <%= render Spina::Pages::ActionsComponent.new(page: @page, locale: @locale) %>
13
13
  <% end %>
14
- <% header.navigation do %>
14
+ <% header.with_navigation do %>
15
15
  <nav class="-mb-3 mt-4">
16
16
  <ul class="inline-flex w-auto rounded-md bg-white">
17
17
  <% @tabs.each do |tab_name| %>
@@ -0,0 +1,3 @@
1
+ <%= turbo_frame_tag "page_#{@page.id}_children" do %>
2
+ <%= render Spina::Pages::ListComponent.new(pages: @children, sortable: params[:sortable] == "true", draggable: params[:draggable] == "true") %>
3
+ <% end %>
@@ -1,5 +1,5 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.actions do %>
2
+ <% header.with_actions do %>
3
3
  <% if @resource %>
4
4
  <%= link_to spina.edit_admin_resource_path(@resource), class: 'btn btn-default' do %>
5
5
  <%= heroicon('cog-8-tooth', style: :solid, class: 'text-gray-300 w-5 h-5 -ml-1 mr-1') %>
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <% end %>
14
14
 
15
- <% header.navigation do %>
15
+ <% header.with_navigation do %>
16
16
  <nav class="-mb-1 md:-mb-3 mt-4">
17
17
  <ul class="inline-flex flex-wrap w-auto rounded-md bg-white">
18
18
  <%= render Spina::UserInterface::TabLinkComponent.new(spina.admin_pages_path, active: @resource.nil?) do %>
@@ -1,4 +1,7 @@
1
1
  <div class="mt-6">
2
2
  <label for="content" class="block text-sm leading-5 font-medium text-gray-700"><%= f.object.title %></label>
3
- <%= f.text_area :content, placeholder: f.object.title, class: "form-input mt-1 w-full" %>
3
+ <div class="text-gray-400 text-sm"><%= f.object.hint %></div>
4
+ <div class="mt-1">
5
+ <%= f.text_area :content, placeholder: f.object.title, class: "form-input mt-1 w-full" %>
6
+ </div>
4
7
  </div>
@@ -0,0 +1,36 @@
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
+
5
+ <div data-controller="page-select reveal" data-placeholder="<%=t "spina.pages.select_page" %>" class="relative mt-1" data-reveal-away-value>
6
+ <%= f.hidden_field :page_id, data: {page_select_target: "input"} %>
7
+
8
+ <button type="button" class="btn btn-default px-3 inline-flex items-center text-sm font-medium" data-action="reveal#toggle page-select#autofocus">
9
+ <%= heroicon("link", style: :mini, class: "w-4 h-4 mr-1 text-gray-600") %>
10
+ <div data-page-select-target="label">
11
+ <% if f.object.page_id.present? %>
12
+ <%= turbo_frame_tag :page_title, src: spina.admin_page_select_option_path(f.object.page_id) %>
13
+ <% end %>
14
+ </div>
15
+ </button>
16
+
17
+ <div class="relative mt-1">
18
+ <div data-reveal data-transition hidden class="absolute shadow-lg border border-gray-200 origin-top-right rounded-md z-10 top-0">
19
+ <div class="rounded-md bg-white shadow-xs">
20
+ <%= form_with url: spina.search_admin_page_select_options_path, data: {turbo_frame: "page_select_options_#{f.object.object_id}", controller: "form", debounce_time: 100} do |ff| %>
21
+ <%= ff.hidden_field :object_id, value: f.object.object_id %>
22
+ <%= ff.hidden_field :resource, value: f.object.options&.dig(:resource) %>
23
+ <div class="p-2">
24
+ <%= 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", page_select_target: "search"} %>
25
+ </div>
26
+ <% end %>
27
+
28
+ <div class="overflow-scroll max-h-80">
29
+ <%= turbo_frame_tag "page_select_options_#{f.object.object_id}" do %>
30
+ <% end %>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
@@ -1,5 +1,5 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.actions do %>
2
+ <% header.with_actions do %>
3
3
  <%= render Spina::UserInterface::TranslationsComponent.new(@resource, label: @locale.upcase) %>
4
4
 
5
5
  <%= button_tag type: :submit, form: dom_id(@resource), class: 'btn btn-primary', data: {controller: "button", action: "button#loading", loading_message: t('spina.ui.saving')} do %>
@@ -1,7 +1,7 @@
1
1
  <%= form_with model: @setting, scope: :setting, url: admin_settings_path do |f| %>
2
2
 
3
3
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
4
- <% header.actions do %>
4
+ <% header.with_actions do %>
5
5
 
6
6
  <%= button_tag type: :submit, class: 'btn btn-primary', data: {controller: "button", action: "button#loading", loading_message: t('spina.ui.saving')} do %>
7
7
  <%= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2') %>
@@ -3,7 +3,7 @@
3
3
 
4
4
  <ul class="flex md:flex-col">
5
5
  <%= render Spina::MainNavigation::SubNavComponent.new(:content) do |nav| %>
6
- <% nav.icon do %>
6
+ <% nav.with_icon do %>
7
7
  <%= heroicon('document-text', style: :solid, class: 'hidden md:block w-8 h-8 text-white md:mr-3') %>
8
8
  <%= heroicon('menu', style: :solid, class: 'md:hidden w-8 h-8 text-white md:mr-3') %>
9
9
 
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <% end %>
14
14
 
15
- <% nav.links do %>
15
+ <% nav.with_links do %>
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
 
@@ -29,7 +29,7 @@
29
29
  <%= render Spina::Hooks::HookComponent.new(partial: "primary_navigation") %>
30
30
 
31
31
  <%= render Spina::MainNavigation::SubNavComponent.new(:settings) do |nav| %>
32
- <% nav.icon do %>
32
+ <% nav.with_icon do %>
33
33
  <%= heroicon('cog-8-tooth', style: :solid, class: 'w-8 h-8 text-white md:mr-3') %>
34
34
 
35
35
  <div class="text-white font-semibold hidden md:block transform -translate-x-2 ease-in-out duration-300 absolute md:relative opacity-0 transition-all" data-navigation-target="label">
@@ -37,7 +37,7 @@
37
37
  </div>
38
38
  <% end %>
39
39
 
40
- <% nav.links do %>
40
+ <% nav.with_links do %>
41
41
  <%= render Spina::MainNavigation::LinkComponent.new(t('spina.settings.general'), spina.edit_admin_account_path, active: controller_name == "accounts") %>
42
42
  <%= render Spina::MainNavigation::LinkComponent.new(t('spina.website.theme'), spina.edit_admin_theme_path, active: controller_name == "theme") %>
43
43
 
@@ -1,7 +1,7 @@
1
1
  <%= form_with model: Spina::Current.account, url: spina.admin_theme_path do |f| %>
2
2
 
3
3
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
4
- <% header.actions do %>
4
+ <% header.with_actions do %>
5
5
 
6
6
  <%= button_tag type: :submit, class: 'btn btn-primary', data: {controller: "button hotkeys", hotkeys: "command+s, ctrl+s", hotkeys_target: "button", action: "button#loading", loading_message: t("spina.ui.saving")} do %>
7
7
  <%= heroicon('check', style: :mini, class: 'w-5 h-5 -ml-1 mr-1') %>
@@ -1,5 +1,5 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.actions do %>
2
+ <% header.with_actions do %>
3
3
  <%= button_tag type: :submit, form: dom_id(@user), class: 'btn btn-primary', data: {controller: "button hotkeys", hotkeys: "command+s, ctrl+s", hotkeys_target: "button", action: "button#loading", loading_message: t('spina.ui.saving')} do %>
4
4
  <%= heroicon('check', style: :mini, class: 'w-5 h-5 -ml-1 mr-1') %>
5
5
  <%=t 'spina.users.save' %>
@@ -1,5 +1,5 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.after_breadcrumbs do %>
2
+ <% header.with_after_breadcrumbs do %>
3
3
  <% if current_spina_user.admin? %>
4
4
  <%= link_to spina.new_admin_user_path, class: 'btn btn-default h-8 px-2 ml-3' do %>
5
5
  <%= heroicon('plus', style: :mini, class: 'w-4 h-4') %>
@@ -10,3 +10,9 @@ Spina.config.importmap.draw do
10
10
  pin_all_from Spina::Engine.root.join("app/assets/javascripts/spina/controllers"), under: "controllers", to: "spina/controllers"
11
11
  pin_all_from Spina::Engine.root.join("app/assets/javascripts/spina/libraries"), under: "libraries", to: "spina/libraries"
12
12
  end
13
+
14
+ Spina.config.importmap.cache_sweeper watches: Spina::Engine.root.join("app/assets/javascripts")
15
+
16
+ ActiveSupport.on_load(:action_controller_base) do
17
+ before_action { Spina.config.importmap.cache_sweeper.execute_if_updated }
18
+ end
@@ -283,6 +283,7 @@ de:
283
283
  save_draft: Entwurf speichern
284
284
  saved: Seite gespeichert
285
285
  saving: wird gespeichert...
286
+ select_page: Seite wählen
286
287
  couldnt_be_saved: Seite konnte nicht gespeichert werden
287
288
  search_engines: Suchmaschinen
288
289
  show_in_menu: unsichtbar
@@ -277,6 +277,7 @@ en:
277
277
  save_draft: Save draft
278
278
  saved: Page saved
279
279
  saving: Saving...
280
+ select_page: Select page
280
281
  couldnt_be_saved: Page couldn't be saved
281
282
  search_engines: Search engines
282
283
  show_in_menu: invisible
@@ -1,5 +1,17 @@
1
1
  nl:
2
+ activemodel:
3
+ attributes:
4
+ spina/embeds/youtube:
5
+ url: youtube.com/watch?v=...
6
+ spina/embeds/vimeo:
7
+ url: vimeo.com/...
2
8
  activerecord:
9
+ errors:
10
+ models:
11
+ spina/page:
12
+ attributes:
13
+ title:
14
+ blank: Titel is verplicht
3
15
  attributes:
4
16
  spina/account:
5
17
  address: Adres
@@ -94,6 +106,15 @@ nl:
94
106
  spina/user:
95
107
  one: Gebruiker
96
108
  other: Gebruikers
109
+ helpers:
110
+ label:
111
+ spina/embeds/button:
112
+ url: URL
113
+ label: Button label
114
+ spina/embeds/youtube:
115
+ url: Youtube URL
116
+ spina/embeds/vimeo:
117
+ url: Vimeo URL
97
118
  spina:
98
119
  accounts:
99
120
  contact_details: Contactgegevens
@@ -106,6 +127,7 @@ nl:
106
127
  attachments:
107
128
  choose_attachment: Kies een bijlage
108
129
  delete_confirmation_html: Weet je het zeker? Het kan zijn dat dit document in gebruik is op een pagina.
130
+ download: Download
109
131
  insert: Document toevoegen
110
132
  insert_multiple: Documenten toevoegen
111
133
  upload: Upload documenten
@@ -117,6 +139,9 @@ nl:
117
139
  delete_confirmation: Weet je zeker dat je <strong>%{subject}</strong> wilt verwijderen?
118
140
  edit: Bewerken
119
141
  edit_website: Bewerk je website
142
+ embeds:
143
+ embed_a_component: Embed een onderdeel
144
+ embed_component: Embed onderdeel
120
145
  forgot_password:
121
146
  expired: Je wachtwoord reset is verlopen
122
147
  mail_subject: Stel je wachtwoord opnieuw in
@@ -140,6 +165,7 @@ nl:
140
165
  insert_photo: Afbeelding invoegen
141
166
  insert_photos: Afbeeldingen invoegen
142
167
  link: Link
168
+ missing_image: Ontbrekende afbeelding
143
169
  new_folder: Nieuwe folder
144
170
  organize: Herindelen
145
171
  remove_image: Verwijder afbeelding
@@ -218,6 +244,7 @@ nl:
218
244
  change_view_template: Wijzig pagina template
219
245
  change_view_template_confirmation: Weet je zeker dat je de pagina template wil veranderen? Inhoud die niet op de nieuwe pagina past gaat verloren.
220
246
  concept: concept
247
+ couldnt_be_saved: Pagina kon niet worden opgeslagen
221
248
  create: Maak pagina
222
249
  create_page: "%{template} invullen"
223
250
  delete: Verwijder pagina
@@ -251,6 +278,7 @@ nl:
251
278
  save_draft: Concept opslaan
252
279
  saved: Pagina opgeslagen
253
280
  saving: "<i></i> Opslaan..."
281
+ select_page: Kies pagina
254
282
  search_engines: Zoekmachines
255
283
  show_in_menu: onzichtbaar
256
284
  skip_to_first_child: doorsturen naar 1<sup>e</sup> subpagina
@@ -306,8 +334,10 @@ nl:
306
334
  save: Opslaan
307
335
  search: Zoeken...
308
336
  settings:
337
+ general: Algemeen
309
338
  save: Voorkeuren opslaan
310
339
  title: Voorkeuren
340
+ users: Gebruikers
311
341
  theme:
312
342
  save: Thema opslaan
313
343
  saved: Thema opgeslagen
@@ -326,6 +356,16 @@ nl:
326
356
  replace: Vervangen
327
357
  save_changes: Wijzigingen opslaan
328
358
  saving: Opslaan...
359
+ user_mailer:
360
+ forgot_password:
361
+ button: Reset je wachtwoord
362
+ introduction: Je hebt recent aangegeven dat je je wachtwoord bent vergeten voor je Spina CMS-account. Deze wachtwoord-reset is geldig voor 2 uur. Klik op de link of plak de URL in je browser.
363
+ introduction_html: "Je hebt recent aangegeven dat je je wachtwoord bent vergeten voor je Spina CMS-account. Gebruik de knop hieronder. <strong>Deze wachtwoord-reset is 2 uur geldig.</strong>"
364
+ preheader: Gebruik deze link om je wachtwoord te resetten. Deze is 2 uur geldig
365
+ request_origin: Beveiliging, dit is aangevraagd vanaf een %{platform}-apparaat via %{browser}. Als je geen wachtwoord-reset hebt aangevraagd, negeer deze e-mail dan.
366
+ salutation: Hoi, %{name}
367
+ subject: Stel je wachtwoord opnieuw in
368
+ trouble: Als bovenstaande knop niet werkt, kopieer en plak deze onderstaande link dan in de browser
329
369
  users:
330
370
  authorization: Autorisatie
331
371
  authorization_description: Admins kunnen gebruikers beheren. Normale gebruikers niet.
@@ -343,6 +383,7 @@ nl:
343
383
  visit_page: Bekijk pagina
344
384
  website:
345
385
  all_pages: Alle pagina's
386
+ content: Content
346
387
  documents: Documenten
347
388
  images: Afbeeldingen
348
389
  main: Pagina's
@@ -351,6 +392,8 @@ nl:
351
392
  pages: Pagina's
352
393
  pages_description: Alle pagina's op je website
353
394
  photos: Afbeeldingen
395
+ settings: Instellingen
396
+ theme: Thema
354
397
  title: Je website
355
398
  wysiwyg:
356
399
  heading_1: Kop 1
data/config/routes.rb CHANGED
@@ -46,12 +46,17 @@ Spina::Engine.routes.draw do
46
46
  get :edit_content
47
47
  get :edit_template
48
48
  get :children
49
+ post :sort_one
50
+ end
51
+
52
+ collection do
53
+ post :sort
49
54
  end
50
55
 
51
56
  resource :move, controller: "move_pages"
52
-
53
- post :sort, on: :collection
54
- post :sort_one, on: :member
57
+ end
58
+ resources :page_select_options, only: [:show, :index] do
59
+ post :search, on: :collection
55
60
  end
56
61
  resources :page_translations, only: [:destroy]
57
62
  resources :parent_pages
@@ -0,0 +1,6 @@
1
+ class AddAncestryCacheColumnsToSpinaPages < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :spina_pages, :ancestry_depth, :integer, default: 0
4
+ add_column :spina_pages, :ancestry_children_count, :integer
5
+ end
6
+ end
@@ -14,7 +14,7 @@ module AttrJson
14
14
  end
15
15
 
16
16
  def spina_parts_lookup
17
- @spina_parts_lookup ||= Spina::PARTS.map(&:to_type).map do |type|
17
+ @spina_parts_lookup = Spina::PARTS.map(&:to_type).map do |type|
18
18
  [type.model.name, type]
19
19
  end.to_h
20
20
  end
data/lib/spina/engine.rb CHANGED
@@ -37,7 +37,8 @@ module Spina
37
37
  Spina::Parts::ImageCollection,
38
38
  Spina::Parts::Repeater,
39
39
  Spina::Parts::Option,
40
- Spina::Parts::Attachment
40
+ Spina::Parts::Attachment,
41
+ Spina::Parts::PageLink
41
42
  )
42
43
  end
43
44
  end
data/lib/spina/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spina
2
- VERSION = "2.13.1"
2
+ VERSION = "2.15.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spina
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.1
4
+ version: 2.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Jetten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-13 00:00:00.000000000 Z
11
+ date: 2023-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -168,16 +168,22 @@ dependencies:
168
168
  name: view_component
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - "~>"
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '2.32'
174
+ - - "<"
175
+ - !ruby/object:Gem::Version
176
+ version: '4.0'
174
177
  type: :runtime
175
178
  prerelease: false
176
179
  version_requirements: !ruby/object:Gem::Requirement
177
180
  requirements:
178
- - - "~>"
181
+ - - ">="
179
182
  - !ruby/object:Gem::Version
180
183
  version: '2.32'
184
+ - - "<"
185
+ - !ruby/object:Gem::Version
186
+ version: '4.0'
181
187
  - !ruby/object:Gem::Dependency
182
188
  name: importmap-rails
183
189
  requirement: !ruby/object:Gem::Requirement
@@ -282,20 +288,6 @@ dependencies:
282
288
  - - ">="
283
289
  - !ruby/object:Gem::Version
284
290
  version: 2.0.0
285
- - !ruby/object:Gem::Dependency
286
- name: standard
287
- requirement: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - ">="
290
- - !ruby/object:Gem::Version
291
- version: '0'
292
- type: :runtime
293
- prerelease: false
294
- version_requirements: !ruby/object:Gem::Requirement
295
- requirements:
296
- - - ">="
297
- - !ruby/object:Gem::Version
298
- version: '0'
299
291
  description: CMS
300
292
  email:
301
293
  - bram@denkgroot.com
@@ -1218,6 +1210,8 @@ files:
1218
1210
  - app/assets/javascripts/spina/controllers/media_picker_modal_controller.js
1219
1211
  - app/assets/javascripts/spina/controllers/modal_controller.js
1220
1212
  - app/assets/javascripts/spina/controllers/navigation_controller.js
1213
+ - app/assets/javascripts/spina/controllers/page_collapse_controller.js
1214
+ - app/assets/javascripts/spina/controllers/page_select_controller.js
1221
1215
  - app/assets/javascripts/spina/controllers/parent_pages_controller.js
1222
1216
  - app/assets/javascripts/spina/controllers/repeater_controller.js
1223
1217
  - app/assets/javascripts/spina/controllers/reveal_controller.js
@@ -1232,6 +1226,7 @@ files:
1232
1226
  - app/assets/javascripts/spina/controllers/unique_id_controller.js
1233
1227
  - app/assets/javascripts/spina/libraries/canvas-confetti.js
1234
1228
  - app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js
1229
+ - app/assets/javascripts/spina/libraries/debounce.js
1235
1230
  - app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js
1236
1231
  - app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js
1237
1232
  - app/assets/javascripts/spina/libraries/hotkeys.js
@@ -1250,6 +1245,8 @@ files:
1250
1245
  - app/components/spina/forms/label_component.rb
1251
1246
  - app/components/spina/forms/password_field_component.html.erb
1252
1247
  - app/components/spina/forms/password_field_component.rb
1248
+ - app/components/spina/forms/search_component.html.erb
1249
+ - app/components/spina/forms/search_component.rb
1253
1250
  - app/components/spina/forms/switch_component.html.erb
1254
1251
  - app/components/spina/forms/switch_component.rb
1255
1252
  - app/components/spina/forms/text_field_component.html.erb
@@ -1310,6 +1307,7 @@ files:
1310
1307
  - app/controllers/spina/admin/move_pages_controller.rb
1311
1308
  - app/controllers/spina/admin/navigation_items_controller.rb
1312
1309
  - app/controllers/spina/admin/navigations_controller.rb
1310
+ - app/controllers/spina/admin/page_select_options_controller.rb
1313
1311
  - app/controllers/spina/admin/page_translations_controller.rb
1314
1312
  - app/controllers/spina/admin/pages_controller.rb
1315
1313
  - app/controllers/spina/admin/parent_pages_controller.rb
@@ -1339,6 +1337,7 @@ files:
1339
1337
  - app/jobs/spina/resource_pages_update_job.rb
1340
1338
  - app/mailers/spina/application_mailer.rb
1341
1339
  - app/mailers/spina/user_mailer.rb
1340
+ - app/models/concerns/spina/attachable.rb
1342
1341
  - app/models/concerns/spina/gravatar.rb
1343
1342
  - app/models/concerns/spina/partable.rb
1344
1343
  - app/models/concerns/spina/translated_content.rb
@@ -1363,6 +1362,7 @@ files:
1363
1362
  - app/models/spina/parts/line.rb
1364
1363
  - app/models/spina/parts/multi_line.rb
1365
1364
  - app/models/spina/parts/option.rb
1365
+ - app/models/spina/parts/page_link.rb
1366
1366
  - app/models/spina/parts/repeater.rb
1367
1367
  - app/models/spina/parts/repeater_content.rb
1368
1368
  - app/models/spina/parts/text.rb
@@ -1406,6 +1406,8 @@ files:
1406
1406
  - app/views/spina/admin/navigations/_navigation.html.erb
1407
1407
  - app/views/spina/admin/navigations/edit.html.erb
1408
1408
  - app/views/spina/admin/navigations/index.html.erb
1409
+ - app/views/spina/admin/page_select_options/index.html.erb
1410
+ - app/views/spina/admin/page_select_options/show.html.erb
1409
1411
  - app/views/spina/admin/pages/_button_advanced.html.erb
1410
1412
  - app/views/spina/admin/pages/_button_page_content.html.erb
1411
1413
  - app/views/spina/admin/pages/_button_search_engines.html.erb
@@ -1414,6 +1416,7 @@ files:
1414
1416
  - app/views/spina/admin/pages/_form_page_content.html.erb
1415
1417
  - app/views/spina/admin/pages/_form_search_engines.html.erb
1416
1418
  - app/views/spina/admin/pages/_new_page_form.html.erb
1419
+ - app/views/spina/admin/pages/children.html.erb
1417
1420
  - app/views/spina/admin/pages/edit.html.erb
1418
1421
  - app/views/spina/admin/pages/edit_content.html.erb
1419
1422
  - app/views/spina/admin/pages/edit_template.html.erb
@@ -1429,6 +1432,7 @@ files:
1429
1432
  - app/views/spina/admin/parts/lines/_form.html.erb
1430
1433
  - app/views/spina/admin/parts/multi_lines/_form.html.erb
1431
1434
  - app/views/spina/admin/parts/options/_form.html.erb
1435
+ - app/views/spina/admin/parts/page_links/_form.html.erb
1432
1436
  - app/views/spina/admin/parts/repeaters/_fields.html.erb
1433
1437
  - app/views/spina/admin/parts/repeaters/_form.html.erb
1434
1438
  - app/views/spina/admin/parts/texts/_form.html.erb
@@ -1486,6 +1490,7 @@ files:
1486
1490
  - db/migrate/13_add_json_attributes_to_spina_accounts.rb
1487
1491
  - db/migrate/14_add_json_attributes_to_spina_pages.rb
1488
1492
  - db/migrate/15_add_slug_to_spina_resources.rb
1493
+ - db/migrate/16_add_ancestry_cache_columns_to_spina_pages.rb
1489
1494
  - db/migrate/1_create_spina_tables.rb
1490
1495
  - db/migrate/2_create_spina_translation_tables.rb
1491
1496
  - db/migrate/3_create_spina_navigations.rb
@@ -1544,7 +1549,9 @@ metadata:
1544
1549
  documentation_uri: https://www.spinacms.com/docs
1545
1550
  changelog_uri: https://github.com/SpinaCMS/Spina/blob/main/CHANGELOG.md
1546
1551
  source_code_uri: https://github.com/SpinaCMS/Spina
1547
- post_install_message:
1552
+ post_install_message: "\n Spina v2.14 includes a new migration, don't forget to
1553
+ run spina:install:migrations.\n \n For details on this specific release, refer
1554
+ to the CHANGELOG file.\n "
1548
1555
  rdoc_options: []
1549
1556
  require_paths:
1550
1557
  - lib