alchemy_cms 8.1.14 → 8.2.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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -1
  3. data/app/assets/builds/alchemy/admin.css +1 -1
  4. data/app/assets/builds/alchemy/alchemy_admin.min.js +1 -9
  5. data/app/assets/builds/alchemy/alchemy_admin.min.js.map +1 -9
  6. data/app/assets/builds/alchemy/dark-theme.css +1 -1
  7. data/app/assets/builds/alchemy/light-theme.css +1 -1
  8. data/app/assets/builds/alchemy/theme.css +1 -1
  9. data/app/assets/builds/alchemy/welcome.css +1 -1
  10. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
  11. data/app/assets/builds/tinymce/skins/content/alchemy-dark/content.min.css +1 -1
  12. data/app/assets/images/alchemy/icons-sprite.svg +1 -1
  13. data/app/components/alchemy/admin/current_user_name.rb +34 -0
  14. data/app/components/alchemy/admin/locale_select.rb +12 -8
  15. data/app/components/alchemy/admin/page_node.html.erb +3 -2
  16. data/app/components/alchemy/admin/picture_thumbnail.rb +1 -1
  17. data/app/components/alchemy/admin/preview_time_select.rb +55 -0
  18. data/app/components/alchemy/admin/publish_element_button.html.erb +41 -0
  19. data/app/components/alchemy/admin/publish_element_button.rb +13 -0
  20. data/app/components/alchemy/admin/timezone_select.rb +47 -0
  21. data/app/components/alchemy/ingredients/select_editor.rb +6 -1
  22. data/app/controllers/alchemy/admin/attachments_controller.rb +0 -9
  23. data/app/controllers/alchemy/admin/base_controller.rb +1 -0
  24. data/app/controllers/alchemy/admin/elements_controller.rb +54 -34
  25. data/app/controllers/alchemy/admin/pages_controller.rb +5 -4
  26. data/app/controllers/alchemy/admin/pictures_controller.rb +2 -23
  27. data/app/controllers/alchemy/admin/resources_controller.rb +11 -6
  28. data/app/controllers/alchemy/api/pages_controller.rb +2 -8
  29. data/app/controllers/alchemy/pages_controller.rb +1 -2
  30. data/app/helpers/alchemy/admin/base_helper.rb +4 -7
  31. data/app/helpers/alchemy/url_helper.rb +2 -10
  32. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +28 -27
  33. data/app/javascript/alchemy_admin/components/element_editor.js +12 -6
  34. data/app/javascript/alchemy_admin/components/message.js +5 -1
  35. data/app/javascript/alchemy_admin/components/picture_thumbnail.js +1 -0
  36. data/app/javascript/alchemy_admin/components/remote_select.js +0 -11
  37. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +5 -5
  38. data/app/javascript/alchemy_admin/image_cropper.js +10 -6
  39. data/app/javascript/alchemy_admin/initializer.js +6 -33
  40. data/app/javascript/alchemy_admin/shoelace_theme.js +6 -2
  41. data/app/javascript/alchemy_admin/templates/compiled.js +1 -1
  42. data/app/javascript/alchemy_admin.js +12 -2
  43. data/app/models/alchemy/attachment.rb +1 -33
  44. data/app/models/alchemy/current.rb +5 -1
  45. data/app/models/alchemy/element/element_ingredients.rb +11 -3
  46. data/app/models/alchemy/element.rb +10 -0
  47. data/app/models/alchemy/ingredient.rb +2 -0
  48. data/app/models/alchemy/ingredients/select.rb +1 -2
  49. data/app/models/alchemy/page/etag_generator.rb +21 -0
  50. data/app/models/alchemy/page/url_path.rb +11 -2
  51. data/app/models/alchemy/page.rb +12 -2
  52. data/app/models/alchemy/page_version.rb +5 -5
  53. data/app/models/alchemy/picture.rb +19 -2
  54. data/app/models/alchemy/storage_adapter/active_storage.rb +9 -0
  55. data/app/models/alchemy/storage_adapter/dragonfly.rb +9 -0
  56. data/app/models/alchemy/storage_adapter.rb +1 -0
  57. data/app/models/concerns/alchemy/publishable.rb +20 -12
  58. data/app/models/concerns/alchemy/relatable_resource.rb +19 -15
  59. data/app/models/concerns/alchemy/touch_elements.rb +3 -3
  60. data/app/serializers/alchemy/page_tree_serializer.rb +0 -6
  61. data/app/services/alchemy/element_preloader.rb +107 -0
  62. data/app/services/alchemy/page_tree_preloader.rb +7 -9
  63. data/app/stylesheets/alchemy/_custom-properties.scss +1 -0
  64. data/app/stylesheets/alchemy/_mixins.scss +1 -1
  65. data/app/stylesheets/alchemy/_themes.scss +2 -0
  66. data/app/stylesheets/alchemy/admin/archive.scss +2 -2
  67. data/app/stylesheets/alchemy/admin/base.scss +2 -1
  68. data/app/stylesheets/alchemy/admin/elements.scss +22 -19
  69. data/app/stylesheets/alchemy/admin/form_fields.scss +3 -0
  70. data/app/stylesheets/alchemy/admin/forms.scss +14 -1
  71. data/app/stylesheets/alchemy/admin/frame.scss +9 -8
  72. data/app/stylesheets/alchemy/admin/images.scss +2 -2
  73. data/app/stylesheets/alchemy/admin/notices.scss +1 -10
  74. data/app/stylesheets/alchemy/admin/popover.scss +37 -0
  75. data/app/stylesheets/alchemy/admin/selects.scss +4 -0
  76. data/app/stylesheets/alchemy/admin/shoelace.scss +16 -4
  77. data/app/stylesheets/alchemy/admin/toolbar.scss +8 -0
  78. data/app/stylesheets/alchemy/admin.scss +1 -0
  79. data/app/views/alchemy/admin/_header.html.erb +4 -0
  80. data/app/views/alchemy/admin/_left_menu.html.erb +24 -0
  81. data/app/views/alchemy/admin/_main_navi.html.erb +6 -0
  82. data/app/views/alchemy/admin/_top_menu.html.erb +6 -0
  83. data/app/views/alchemy/admin/_user_info.html.erb +5 -0
  84. data/app/views/alchemy/admin/attachments/_files_list.html.erb +1 -1
  85. data/app/views/alchemy/admin/crop.html.erb +6 -11
  86. data/app/views/alchemy/admin/elements/_header.html.erb +16 -6
  87. data/app/views/alchemy/admin/elements/_schedule.html.erb +62 -0
  88. data/app/views/alchemy/admin/elements/_toolbar.html.erb +1 -15
  89. data/app/views/alchemy/admin/elements/publish.turbo_stream.erb +28 -0
  90. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
  91. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  92. data/app/views/alchemy/admin/pages/_locked_pages.html.erb +5 -0
  93. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +4 -4
  94. data/app/views/alchemy/admin/pages/_table.html.erb +2 -2
  95. data/app/views/alchemy/admin/pages/edit.html.erb +6 -2
  96. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +10 -10
  97. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -3
  98. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +3 -3
  99. data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -1
  100. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  101. data/app/views/alchemy/admin/pictures/index.html.erb +2 -2
  102. data/app/views/alchemy/admin/tinymce/_setup.html.erb +9 -16
  103. data/app/views/alchemy/admin/uploader/_setup.html.erb +1 -6
  104. data/app/views/alchemy/language_links/_language.html.erb +1 -2
  105. data/app/views/layouts/alchemy/admin.html.erb +2 -45
  106. data/config/importmap.rb +7 -2
  107. data/config/locales/alchemy.en.yml +35 -5
  108. data/db/migrate/20251106150010_convert_select_value_for_multiple.rb +5 -12
  109. data/lib/alchemy/admin/preview_time.rb +23 -0
  110. data/lib/alchemy/admin/preview_url.rb +13 -2
  111. data/lib/alchemy/admin/timezone.rb +56 -0
  112. data/lib/alchemy/cache_digests/template_tracker.rb +2 -0
  113. data/lib/alchemy/configuration/collection_option.rb +1 -1
  114. data/lib/alchemy/configurations/main.rb +13 -1
  115. data/lib/alchemy/test_support/factories/element_factory.rb +2 -2
  116. data/lib/alchemy/test_support/relatable_resource_examples.rb +2 -2
  117. data/lib/alchemy/test_support/shared_publishable_examples.rb +44 -2
  118. data/lib/alchemy/upgrader.rb +3 -1
  119. data/lib/alchemy/version.rb +1 -1
  120. data/lib/alchemy_cms.rb +2 -0
  121. data/lib/generators/alchemy/install/install_generator.rb +2 -1
  122. data/vendor/javascript/handlebars.min.js +4 -4
  123. data/vendor/javascript/shoelace.min.js +1419 -1323
  124. data/vendor/javascript/sortable.min.js +2 -2
  125. data/vendor/javascript/tinymce.min.js +1 -1
  126. metadata +34 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4baec21d5a38edca47203b6e30fdca337ce9219da20229b52feac39e021ceb73
4
- data.tar.gz: 456587abe9843c9dcc4d218826d87e40c669bfda29eca3100859b2cccd9cf5f8
3
+ metadata.gz: 71e0097af7482ee876b6420002bc545c714b38b7e4f954f8127c5cb4a87343cf
4
+ data.tar.gz: 6aacd413fcb1f6234ce5a6c8269b2c51e55ece27662c118c8ddcaccdd29a1218
5
5
  SHA512:
6
- metadata.gz: dffcf241c57dd7ca53505525247029e585d1b39ef2c5ce102af7db05f866fa895a6bfa6a2e0bf8be623820ee10696a66cc63e1b34aec34b946c750f74c4a4bf2
7
- data.tar.gz: e4781090b8867ddc8adf8532d5019b3db14a990aab598ba7744ad99b2f33cdf0c9323ab1fa807ccd5a3219fce58b02a312cc4b9d7636b6388845004f822ce187
6
+ metadata.gz: a6c52312555ca7bd267cb01379b6e7b150fb8b22297bef6d23c8cfaaebe8c927efeb8f0de96f8af7801cdf643843c4832370bc541b49a4c501de40205651d5a9
7
+ data.tar.gz: 790fa4d058590428d9d327644bdf1e8b6c9dc5d7ff42d86675e6442451d32db32959dfa411bc3ef6394425ec643bb5a672a973c7787117b62b1d84681d4ed651
data/README.md CHANGED
@@ -310,7 +310,18 @@ If you want to contribute to Alchemy ([and we encourage you to do so](CONTRIBUTI
310
310
 
311
311
  ### Preparation
312
312
 
313
- First of all you need to clone your fork to your local development machine. Then you need to install the dependencies with bundler.
313
+ First of all you need to clone your fork to your local development machine.
314
+
315
+ **Using Docker (recommended):**
316
+
317
+ ```bash
318
+ $ docker compose build
319
+ $ docker compose up
320
+ ```
321
+
322
+ This starts the Rails dev server, Sass watcher, and JS bundle watcher. The dev server is available at http://localhost:3000.
323
+
324
+ **Local setup:**
314
325
 
315
326
  ```bash
316
327
  $ bin/setup