spina 2.18.0 → 2.20.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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/config/spina/manifest.js +2 -2
  4. data/app/assets/javascripts/spina/application.js +1 -1
  5. data/app/assets/javascripts/spina/controllers/confetti_controller.js +1 -1
  6. data/app/assets/javascripts/spina/controllers/data_binding_controller.js +234 -0
  7. data/app/assets/javascripts/spina/controllers/form_controller.js +1 -2
  8. data/app/assets/javascripts/spina/controllers/hotkeys_controller.js +1 -1
  9. data/app/assets/javascripts/spina/controllers/page_select_controller.js +2 -37
  10. data/app/assets/javascripts/spina/controllers/reveal_controller.js +424 -1
  11. data/app/assets/javascripts/spina/controllers/select_controller.js +44 -0
  12. data/app/assets/javascripts/spina/controllers/sortable_controller.js +1 -2
  13. data/app/assets/javascripts/spina/libraries/canvas-confetti.js +1 -1
  14. data/app/assets/javascripts/spina/libraries/hotkeys.js +1 -1
  15. data/app/assets/javascripts/spina/libraries/sortablejs.js +1 -1
  16. data/app/assets/javascripts/spina/libraries/trix.js +1 -1
  17. data/app/assets/stylesheets/spina/fonts-propshaft.css +114 -0
  18. data/app/controllers/spina/admin/resource_select_options_controller.rb +20 -0
  19. data/app/helpers/spina/admin/pages_helper.rb +23 -4
  20. data/app/models/spina/embeds/youtube.rb +1 -1
  21. data/app/models/spina/navigation_item.rb +5 -1
  22. data/app/models/spina/parts/image_variant.rb +3 -3
  23. data/app/models/spina/parts/page_link.rb +3 -2
  24. data/app/models/spina/parts/resource_link.rb +13 -0
  25. data/app/views/layouts/spina/admin/application.html.erb +9 -2
  26. data/app/views/spina/admin/page_select_options/index.html.erb +3 -4
  27. data/app/views/spina/admin/page_select_options/show.html.erb +1 -1
  28. data/app/views/spina/admin/parts/page_links/_form.html.erb +17 -14
  29. data/app/views/spina/admin/parts/resource_links/_form.html.erb +32 -0
  30. data/app/views/spina/admin/resource_select_options/index.html.erb +13 -0
  31. data/app/views/spina/admin/resource_select_options/show.html.erb +3 -0
  32. data/config/locales/da.yml +418 -0
  33. data/config/locales/de.yml +2 -0
  34. data/config/locales/en.yml +8 -5
  35. data/config/routes.rb +4 -1
  36. data/db/migrate/18_change_default_spina_resources_slug.rb +9 -0
  37. data/lib/spina/engine.rb +2 -2
  38. data/lib/spina/railtie.rb +4 -1
  39. data/lib/spina/theme.rb +8 -6
  40. data/lib/spina/version.rb +1 -1
  41. data/lib/tasks/tailwind.rake +12 -4
  42. metadata +29 -30
  43. data/app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js +0 -1
  44. data/app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js +0 -27
  45. data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js +0 -388
  46. /data/app/assets/stylesheets/spina/{fonts.css.erb → fonts-sprockets.css.erb} +0 -0
@@ -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
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]
@@ -0,0 +1,9 @@
1
+ class ChangeDefaultSpinaResourcesSlug < ActiveRecord::Migration[7.0]
2
+ def up
3
+ change_column :spina_resources, :slug, :jsonb, default: {}
4
+ end
5
+
6
+ def down
7
+ change_column :spina_resources, :slug, :jsonb, default: nil
8
+ end
9
+ end
data/lib/spina/engine.rb CHANGED
@@ -11,7 +11,6 @@ require "attr_json"
11
11
  require "view_component"
12
12
  require "jsonapi/serializer"
13
13
  require "browser"
14
- require "sprockets/railtie"
15
14
 
16
15
  module Spina
17
16
  class Engine < ::Rails::Engine
@@ -38,7 +37,8 @@ module Spina
38
37
  Spina::Parts::Repeater,
39
38
  Spina::Parts::Option,
40
39
  Spina::Parts::Attachment,
41
- Spina::Parts::PageLink
40
+ Spina::Parts::PageLink,
41
+ Spina::Parts::ResourceLink
42
42
  )
43
43
  end
44
44
  end
data/lib/spina/railtie.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  module Spina
2
2
  class Railtie < Rails::Railtie
3
3
  initializer "spina.assets.precompile" do |app|
4
- app.config.assets.precompile += %w[spina/manifest]
4
+ if defined?(Sprockets)
5
+ # Sprockets configuration
6
+ app.config.assets.precompile += %w[spina/manifest]
7
+ end
5
8
  end
6
9
 
7
10
  initializer "spina.theme_reloader" do |app|
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.18.0"
2
+ VERSION = "2.20.0"
3
3
  end
@@ -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
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.18.0
4
+ version: 2.20.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: 2024-01-10 00:00:00.000000000 Z
11
+ date: 2025-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,28 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '6.0'
27
- - !ruby/object:Gem::Dependency
28
- name: sprockets-rails
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
19
+ version: '7.0'
20
+ - - "<"
32
21
  - !ruby/object:Gem::Version
33
- version: '0'
22
+ version: '9.0'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
27
  - - ">="
39
28
  - !ruby/object:Gem::Version
40
- version: '0'
29
+ version: '7.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '9.0'
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: pg
43
35
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +120,14 @@ dependencies:
128
120
  requirements:
129
121
  - - ">="
130
122
  - !ruby/object:Gem::Version
131
- version: 1.1.3
123
+ version: 1.3.0
132
124
  type: :runtime
133
125
  prerelease: false
134
126
  version_requirements: !ruby/object:Gem::Requirement
135
127
  requirements:
136
128
  - - ">="
137
129
  - !ruby/object:Gem::Version
138
- version: 1.1.3
130
+ version: 1.3.0
139
131
  - !ruby/object:Gem::Dependency
140
132
  name: rack-rewrite
141
133
  requirement: !ruby/object:Gem::Requirement
@@ -207,7 +199,7 @@ dependencies:
207
199
  version: '0.9'
208
200
  - - "<"
209
201
  - !ruby/object:Gem::Version
210
- version: '2.0'
202
+ version: '3.0'
211
203
  type: :runtime
212
204
  prerelease: false
213
205
  version_requirements: !ruby/object:Gem::Requirement
@@ -217,7 +209,7 @@ dependencies:
217
209
  version: '0.9'
218
210
  - - "<"
219
211
  - !ruby/object:Gem::Version
220
- version: '2.0'
212
+ version: '3.0'
221
213
  - !ruby/object:Gem::Dependency
222
214
  name: stimulus-rails
223
215
  requirement: !ruby/object:Gem::Requirement
@@ -275,19 +267,19 @@ dependencies:
275
267
  - !ruby/object:Gem::Version
276
268
  version: '0'
277
269
  - !ruby/object:Gem::Dependency
278
- name: tailwindcss-rails
270
+ name: tailwindcss-ruby
279
271
  requirement: !ruby/object:Gem::Requirement
280
272
  requirements:
281
273
  - - ">="
282
274
  - !ruby/object:Gem::Version
283
- version: 2.0.0
275
+ version: '0'
284
276
  type: :runtime
285
277
  prerelease: false
286
278
  version_requirements: !ruby/object:Gem::Requirement
287
279
  requirements:
288
280
  - - ">="
289
281
  - !ruby/object:Gem::Version
290
- version: 2.0.0
282
+ version: '0'
291
283
  description: CMS
292
284
  email:
293
285
  - bram@denkgroot.com
@@ -1196,6 +1188,7 @@ files:
1196
1188
  - app/assets/javascripts/spina/controllers/button_controller.js
1197
1189
  - app/assets/javascripts/spina/controllers/confetti_controller.js
1198
1190
  - app/assets/javascripts/spina/controllers/confirm_controller.js
1191
+ - app/assets/javascripts/spina/controllers/data_binding_controller.js
1199
1192
  - app/assets/javascripts/spina/controllers/delegate_click_controller.js
1200
1193
  - app/assets/javascripts/spina/controllers/editor_insert_images_controller.js
1201
1194
  - app/assets/javascripts/spina/controllers/embed_controller.js
@@ -1217,6 +1210,7 @@ files:
1217
1210
  - app/assets/javascripts/spina/controllers/parent_pages_controller.js
1218
1211
  - app/assets/javascripts/spina/controllers/repeater_controller.js
1219
1212
  - app/assets/javascripts/spina/controllers/reveal_controller.js
1213
+ - app/assets/javascripts/spina/controllers/select_controller.js
1220
1214
  - app/assets/javascripts/spina/controllers/select_placeholder_controller.js
1221
1215
  - app/assets/javascripts/spina/controllers/selectable_controller.js
1222
1216
  - app/assets/javascripts/spina/controllers/shortcuts_controller.js
@@ -1229,18 +1223,16 @@ files:
1229
1223
  - app/assets/javascripts/spina/libraries/canvas-confetti.js
1230
1224
  - app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js
1231
1225
  - app/assets/javascripts/spina/libraries/debounce.js
1232
- - app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js
1233
- - app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js
1234
1226
  - app/assets/javascripts/spina/libraries/hotkeys.js
1235
1227
  - app/assets/javascripts/spina/libraries/hotkeys@3.8.7.js
1236
1228
  - app/assets/javascripts/spina/libraries/sortablejs.js
1237
1229
  - app/assets/javascripts/spina/libraries/sortablejs@1.13.0.js
1238
- - app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js
1239
1230
  - app/assets/javascripts/spina/libraries/trix.js
1240
1231
  - app/assets/javascripts/spina/libraries/trix@1.3.1.esm.js
1241
1232
  - app/assets/stylesheets/spina/animate.css
1242
1233
  - app/assets/stylesheets/spina/application.tailwind.css
1243
- - app/assets/stylesheets/spina/fonts.css.erb
1234
+ - app/assets/stylesheets/spina/fonts-propshaft.css
1235
+ - app/assets/stylesheets/spina/fonts-sprockets.css.erb
1244
1236
  - app/components/spina/application_component.rb
1245
1237
  - app/components/spina/forms/auto_file_upload_component.html.erb
1246
1238
  - app/components/spina/forms/auto_file_upload_component.rb
@@ -1320,6 +1312,7 @@ files:
1320
1312
  - app/controllers/spina/admin/pages_controller.rb
1321
1313
  - app/controllers/spina/admin/parent_pages_controller.rb
1322
1314
  - app/controllers/spina/admin/password_resets_controller.rb
1315
+ - app/controllers/spina/admin/resource_select_options_controller.rb
1323
1316
  - app/controllers/spina/admin/resources_controller.rb
1324
1317
  - app/controllers/spina/admin/sessions_controller.rb
1325
1318
  - app/controllers/spina/admin/settings_controller.rb
@@ -1373,6 +1366,7 @@ files:
1373
1366
  - app/models/spina/parts/page_link.rb
1374
1367
  - app/models/spina/parts/repeater.rb
1375
1368
  - app/models/spina/parts/repeater_content.rb
1369
+ - app/models/spina/parts/resource_link.rb
1376
1370
  - app/models/spina/parts/text.rb
1377
1371
  - app/models/spina/resource.rb
1378
1372
  - app/models/spina/rewrite_rule.rb
@@ -1446,9 +1440,12 @@ files:
1446
1440
  - app/views/spina/admin/parts/page_links/_form.html.erb
1447
1441
  - app/views/spina/admin/parts/repeaters/_fields.html.erb
1448
1442
  - app/views/spina/admin/parts/repeaters/_form.html.erb
1443
+ - app/views/spina/admin/parts/resource_links/_form.html.erb
1449
1444
  - app/views/spina/admin/parts/texts/_form.html.erb
1450
1445
  - app/views/spina/admin/password_resets/edit.html.erb
1451
1446
  - app/views/spina/admin/password_resets/new.html.erb
1447
+ - app/views/spina/admin/resource_select_options/index.html.erb
1448
+ - app/views/spina/admin/resource_select_options/show.html.erb
1452
1449
  - app/views/spina/admin/resources/edit.html.erb
1453
1450
  - app/views/spina/admin/sessions/new.html.erb
1454
1451
  - app/views/spina/admin/settings/_string_field.html.erb
@@ -1481,6 +1478,7 @@ files:
1481
1478
  - config/locales/TH.yml
1482
1479
  - config/locales/bg.yml
1483
1480
  - config/locales/cs.yml
1481
+ - config/locales/da.yml
1484
1482
  - config/locales/de.yml
1485
1483
  - config/locales/en.yml
1486
1484
  - config/locales/es.yml
@@ -1504,6 +1502,7 @@ files:
1504
1502
  - db/migrate/15_add_slug_to_spina_resources.rb
1505
1503
  - db/migrate/16_add_ancestry_cache_columns_to_spina_pages.rb
1506
1504
  - db/migrate/17_add_custom_urls_to_spina_navigation_items.rb
1505
+ - db/migrate/18_change_default_spina_resources_slug.rb
1507
1506
  - db/migrate/1_create_spina_tables.rb
1508
1507
  - db/migrate/2_create_spina_translation_tables.rb
1509
1508
  - db/migrate/3_create_spina_navigations.rb
@@ -1563,7 +1562,7 @@ metadata:
1563
1562
  changelog_uri: https://github.com/SpinaCMS/Spina/blob/main/CHANGELOG.md
1564
1563
  source_code_uri: https://github.com/SpinaCMS/Spina
1565
1564
  post_install_message: "\n Spina v2.16 includes a new migration, don't forget to
1566
- run spina:install:migrations.\n \n For details on this specific release, refer
1565
+ run spina:install:migrations.\n\n For details on this specific release, refer
1567
1566
  to the CHANGELOG file.\n https://github.com/SpinaCMS/Spina/blob/main/CHANGELOG.md#2160-august-23rd-2022\n
1568
1567
  \ "
1569
1568
  rdoc_options: []
@@ -1580,7 +1579,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1580
1579
  - !ruby/object:Gem::Version
1581
1580
  version: '0'
1582
1581
  requirements: []
1583
- rubygems_version: 3.4.18
1582
+ rubygems_version: 3.5.16
1584
1583
  signing_key:
1585
1584
  specification_version: 4
1586
1585
  summary: Spina
@@ -1 +0,0 @@
1
- //= require ./form-request-submit-polyfill@2.0.0.js
@@ -1,27 +0,0 @@
1
- (function(prototype) {
2
- if (typeof prototype.requestSubmit == "function")
3
- return;
4
- prototype.requestSubmit = function(submitter) {
5
- if (submitter) {
6
- validateSubmitter(submitter, this);
7
- submitter.click();
8
- } else {
9
- submitter = document.createElement("input");
10
- submitter.type = "submit";
11
- submitter.hidden = true;
12
- this.appendChild(submitter);
13
- submitter.click();
14
- this.removeChild(submitter);
15
- }
16
- };
17
- function validateSubmitter(submitter, form) {
18
- submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'");
19
- submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button");
20
- submitter.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError");
21
- }
22
- function raise(errorConstructor, message, name) {
23
- throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".", name);
24
- }
25
- })(HTMLFormElement.prototype);
26
- export default null;
27
-