alchemy_cms 8.1.9 → 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 (111) 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 +2 -0
  5. data/app/assets/builds/alchemy/alchemy_admin.min.js.map +1 -0
  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/base_controller.rb +1 -0
  23. data/app/controllers/alchemy/admin/elements_controller.rb +54 -34
  24. data/app/controllers/alchemy/admin/pages_controller.rb +1 -0
  25. data/app/controllers/alchemy/admin/resources_controller.rb +11 -6
  26. data/app/controllers/alchemy/pages_controller.rb +1 -2
  27. data/app/helpers/alchemy/admin/base_helper.rb +4 -7
  28. data/app/helpers/alchemy/url_helper.rb +2 -10
  29. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +28 -27
  30. data/app/javascript/alchemy_admin/components/element_editor.js +11 -2
  31. data/app/javascript/alchemy_admin/components/message.js +5 -1
  32. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +5 -5
  33. data/app/javascript/alchemy_admin/image_cropper.js +10 -6
  34. data/app/javascript/alchemy_admin/initializer.js +6 -33
  35. data/app/javascript/alchemy_admin/shoelace_theme.js +6 -2
  36. data/app/javascript/alchemy_admin/templates/compiled.js +1 -1
  37. data/app/javascript/alchemy_admin.js +12 -2
  38. data/app/models/alchemy/attachment.rb +1 -1
  39. data/app/models/alchemy/current.rb +5 -1
  40. data/app/models/alchemy/element/element_ingredients.rb +11 -3
  41. data/app/models/alchemy/element.rb +10 -0
  42. data/app/models/alchemy/ingredient.rb +2 -0
  43. data/app/models/alchemy/ingredients/select.rb +1 -2
  44. data/app/models/alchemy/page/etag_generator.rb +21 -0
  45. data/app/models/alchemy/page/url_path.rb +11 -2
  46. data/app/models/alchemy/page.rb +12 -2
  47. data/app/models/alchemy/page_version.rb +5 -5
  48. data/app/models/alchemy/picture.rb +19 -2
  49. data/app/models/alchemy/storage_adapter/active_storage.rb +9 -0
  50. data/app/models/alchemy/storage_adapter/dragonfly.rb +9 -0
  51. data/app/models/alchemy/storage_adapter.rb +1 -0
  52. data/app/models/concerns/alchemy/publishable.rb +20 -12
  53. data/app/models/concerns/alchemy/relatable_resource.rb +16 -2
  54. data/app/models/concerns/alchemy/touch_elements.rb +3 -3
  55. data/app/services/alchemy/element_preloader.rb +107 -0
  56. data/app/stylesheets/alchemy/_custom-properties.scss +1 -0
  57. data/app/stylesheets/alchemy/_mixins.scss +1 -1
  58. data/app/stylesheets/alchemy/_themes.scss +2 -0
  59. data/app/stylesheets/alchemy/admin/base.scss +2 -1
  60. data/app/stylesheets/alchemy/admin/elements.scss +22 -19
  61. data/app/stylesheets/alchemy/admin/form_fields.scss +3 -0
  62. data/app/stylesheets/alchemy/admin/forms.scss +14 -1
  63. data/app/stylesheets/alchemy/admin/frame.scss +9 -8
  64. data/app/stylesheets/alchemy/admin/notices.scss +1 -1
  65. data/app/stylesheets/alchemy/admin/popover.scss +37 -0
  66. data/app/stylesheets/alchemy/admin/selects.scss +4 -0
  67. data/app/stylesheets/alchemy/admin/shoelace.scss +16 -4
  68. data/app/stylesheets/alchemy/admin/toolbar.scss +8 -0
  69. data/app/stylesheets/alchemy/admin.scss +1 -0
  70. data/app/views/alchemy/admin/_header.html.erb +4 -0
  71. data/app/views/alchemy/admin/_left_menu.html.erb +24 -0
  72. data/app/views/alchemy/admin/_main_navi.html.erb +6 -0
  73. data/app/views/alchemy/admin/_top_menu.html.erb +6 -0
  74. data/app/views/alchemy/admin/_user_info.html.erb +5 -0
  75. data/app/views/alchemy/admin/crop.html.erb +6 -11
  76. data/app/views/alchemy/admin/elements/_header.html.erb +16 -6
  77. data/app/views/alchemy/admin/elements/_schedule.html.erb +62 -0
  78. data/app/views/alchemy/admin/elements/_toolbar.html.erb +1 -15
  79. data/app/views/alchemy/admin/elements/publish.turbo_stream.erb +28 -0
  80. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  81. data/app/views/alchemy/admin/pages/_locked_pages.html.erb +5 -0
  82. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +4 -4
  83. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  84. data/app/views/alchemy/admin/pages/edit.html.erb +6 -2
  85. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +10 -10
  86. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -3
  87. data/app/views/alchemy/admin/pictures/index.html.erb +2 -2
  88. data/app/views/alchemy/admin/tinymce/_setup.html.erb +9 -16
  89. data/app/views/alchemy/admin/uploader/_setup.html.erb +1 -6
  90. data/app/views/alchemy/language_links/_language.html.erb +1 -2
  91. data/app/views/layouts/alchemy/admin.html.erb +2 -45
  92. data/config/importmap.rb +7 -2
  93. data/config/locales/alchemy.en.yml +35 -5
  94. data/lib/alchemy/admin/preview_time.rb +23 -0
  95. data/lib/alchemy/admin/preview_url.rb +13 -2
  96. data/lib/alchemy/admin/timezone.rb +56 -0
  97. data/lib/alchemy/configuration.rb +2 -0
  98. data/lib/alchemy/configurations/main.rb +13 -1
  99. data/lib/alchemy/tasks/tidy.rb +6 -7
  100. data/lib/alchemy/test_support/factories/element_factory.rb +2 -2
  101. data/lib/alchemy/test_support/relatable_resource_examples.rb +2 -2
  102. data/lib/alchemy/test_support/shared_publishable_examples.rb +44 -2
  103. data/lib/alchemy/upgrader.rb +3 -1
  104. data/lib/alchemy/version.rb +1 -1
  105. data/lib/alchemy_cms.rb +2 -0
  106. data/lib/generators/alchemy/install/install_generator.rb +2 -1
  107. data/vendor/javascript/handlebars.min.js +4 -4
  108. data/vendor/javascript/shoelace.min.js +1419 -1323
  109. data/vendor/javascript/sortable.min.js +2 -2
  110. data/vendor/javascript/tinymce.min.js +1 -1
  111. metadata +35 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1d7ac2d4feb25fc24be501b6a831c5c66729515135014f78b8a8fe5673afba0
4
- data.tar.gz: f0623e6ea8bd8e01c0d8268ee5051fad2eca6223d8f0acc8847cfc963e545980
3
+ metadata.gz: 71e0097af7482ee876b6420002bc545c714b38b7e4f954f8127c5cb4a87343cf
4
+ data.tar.gz: 6aacd413fcb1f6234ce5a6c8269b2c51e55ece27662c118c8ddcaccdd29a1218
5
5
  SHA512:
6
- metadata.gz: 1e8ec0f9f3459126f6eb6c1af46bd1fbb132e207f8bf3afce6a8049bf1e7b7f483dc2f8d97d0e6e559432590c29430a72ec965361872e6791520b6225bcef718
7
- data.tar.gz: 02e7f6df4c716f90f272c3fb17f48b0bcd83f29158fa24634ac781f9d3eec8ce0885ae5ed67e64ccee407dd7d18c21d540f2739eebbe2c0b8e9ac3a551217c44
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