alchemy_cms 8.1.8 → 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 (117) 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/base_editor.rb +1 -1
  22. data/app/components/alchemy/ingredients/select_editor.rb +6 -1
  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/languages_controller.rb +3 -0
  26. data/app/controllers/alchemy/admin/pages_controller.rb +1 -0
  27. data/app/controllers/alchemy/admin/resources_controller.rb +11 -6
  28. data/app/controllers/alchemy/pages_controller.rb +1 -2
  29. data/app/decorators/alchemy/ingredient_editor.rb +1 -1
  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 +11 -2
  34. data/app/javascript/alchemy_admin/components/message.js +5 -1
  35. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +5 -5
  36. data/app/javascript/alchemy_admin/image_cropper.js +10 -6
  37. data/app/javascript/alchemy_admin/initializer.js +6 -33
  38. data/app/javascript/alchemy_admin/shoelace_theme.js +6 -2
  39. data/app/javascript/alchemy_admin/templates/compiled.js +1 -1
  40. data/app/javascript/alchemy_admin.js +12 -2
  41. data/app/models/alchemy/attachment.rb +1 -1
  42. data/app/models/alchemy/current.rb +5 -1
  43. data/app/models/alchemy/element/element_ingredients.rb +11 -3
  44. data/app/models/alchemy/element.rb +10 -0
  45. data/app/models/alchemy/ingredient.rb +2 -0
  46. data/app/models/alchemy/ingredients/select.rb +1 -2
  47. data/app/models/alchemy/language/code.rb +1 -0
  48. data/app/models/alchemy/page/etag_generator.rb +21 -0
  49. data/app/models/alchemy/page/url_path.rb +11 -2
  50. data/app/models/alchemy/page.rb +12 -2
  51. data/app/models/alchemy/page_version.rb +5 -5
  52. data/app/models/alchemy/picture.rb +19 -2
  53. data/app/models/alchemy/storage_adapter/active_storage.rb +9 -0
  54. data/app/models/alchemy/storage_adapter/dragonfly.rb +9 -0
  55. data/app/models/alchemy/storage_adapter.rb +1 -0
  56. data/app/models/concerns/alchemy/publishable.rb +20 -12
  57. data/app/models/concerns/alchemy/relatable_resource.rb +16 -2
  58. data/app/models/concerns/alchemy/touch_elements.rb +3 -3
  59. data/app/services/alchemy/element_preloader.rb +107 -0
  60. data/app/services/alchemy/update_checks/alchemy_app.rb +1 -1
  61. data/app/stylesheets/alchemy/_custom-properties.scss +1 -0
  62. data/app/stylesheets/alchemy/_mixins.scss +1 -1
  63. data/app/stylesheets/alchemy/_themes.scss +2 -0
  64. data/app/stylesheets/alchemy/admin/base.scss +2 -1
  65. data/app/stylesheets/alchemy/admin/elements.scss +22 -19
  66. data/app/stylesheets/alchemy/admin/form_fields.scss +3 -0
  67. data/app/stylesheets/alchemy/admin/forms.scss +14 -1
  68. data/app/stylesheets/alchemy/admin/frame.scss +9 -8
  69. data/app/stylesheets/alchemy/admin/notices.scss +1 -1
  70. data/app/stylesheets/alchemy/admin/popover.scss +37 -0
  71. data/app/stylesheets/alchemy/admin/selects.scss +4 -0
  72. data/app/stylesheets/alchemy/admin/shoelace.scss +16 -4
  73. data/app/stylesheets/alchemy/admin/toolbar.scss +8 -0
  74. data/app/stylesheets/alchemy/admin.scss +1 -0
  75. data/app/views/alchemy/admin/_header.html.erb +4 -0
  76. data/app/views/alchemy/admin/_left_menu.html.erb +24 -0
  77. data/app/views/alchemy/admin/_main_navi.html.erb +6 -0
  78. data/app/views/alchemy/admin/_top_menu.html.erb +6 -0
  79. data/app/views/alchemy/admin/_user_info.html.erb +5 -0
  80. data/app/views/alchemy/admin/crop.html.erb +6 -11
  81. data/app/views/alchemy/admin/elements/_header.html.erb +16 -6
  82. data/app/views/alchemy/admin/elements/_schedule.html.erb +62 -0
  83. data/app/views/alchemy/admin/elements/_toolbar.html.erb +1 -15
  84. data/app/views/alchemy/admin/elements/publish.turbo_stream.erb +28 -0
  85. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  86. data/app/views/alchemy/admin/pages/_locked_pages.html.erb +5 -0
  87. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +4 -4
  88. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  89. data/app/views/alchemy/admin/pages/edit.html.erb +6 -2
  90. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +10 -10
  91. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -3
  92. data/app/views/alchemy/admin/pictures/index.html.erb +2 -2
  93. data/app/views/alchemy/admin/tinymce/_setup.html.erb +9 -16
  94. data/app/views/alchemy/admin/uploader/_setup.html.erb +1 -6
  95. data/app/views/alchemy/language_links/_language.html.erb +1 -2
  96. data/app/views/layouts/alchemy/admin.html.erb +2 -45
  97. data/config/importmap.rb +7 -2
  98. data/config/locales/alchemy.en.yml +35 -5
  99. data/lib/alchemy/admin/preview_time.rb +23 -0
  100. data/lib/alchemy/admin/preview_url.rb +13 -2
  101. data/lib/alchemy/admin/timezone.rb +56 -0
  102. data/lib/alchemy/configuration.rb +2 -0
  103. data/lib/alchemy/configurations/main.rb +13 -1
  104. data/lib/alchemy/controller_actions.rb +2 -1
  105. data/lib/alchemy/tasks/tidy.rb +6 -7
  106. data/lib/alchemy/test_support/factories/element_factory.rb +2 -2
  107. data/lib/alchemy/test_support/relatable_resource_examples.rb +2 -2
  108. data/lib/alchemy/test_support/shared_publishable_examples.rb +44 -2
  109. data/lib/alchemy/upgrader.rb +3 -1
  110. data/lib/alchemy/version.rb +1 -1
  111. data/lib/alchemy_cms.rb +2 -0
  112. data/lib/generators/alchemy/install/install_generator.rb +2 -1
  113. data/vendor/javascript/handlebars.min.js +4 -4
  114. data/vendor/javascript/shoelace.min.js +1419 -1323
  115. data/vendor/javascript/sortable.min.js +2 -2
  116. data/vendor/javascript/tinymce.min.js +1 -1
  117. metadata +35 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.8
4
+ version: 8.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -620,6 +620,20 @@ dependencies:
620
620
  - - "~>"
621
621
  - !ruby/object:Gem::Version
622
622
  version: '7.0'
623
+ - !ruby/object:Gem::Dependency
624
+ name: db-query-matchers
625
+ requirement: !ruby/object:Gem::Requirement
626
+ requirements:
627
+ - - "~>"
628
+ - !ruby/object:Gem::Version
629
+ version: '0.12'
630
+ type: :development
631
+ prerelease: false
632
+ version_requirements: !ruby/object:Gem::Requirement
633
+ requirements:
634
+ - - "~>"
635
+ - !ruby/object:Gem::Version
636
+ version: '0.12'
623
637
  - !ruby/object:Gem::Dependency
624
638
  name: timecop
625
639
  requirement: !ruby/object:Gem::Requirement
@@ -646,6 +660,8 @@ files:
646
660
  - app/assets/builds/alchemy/admin.css
647
661
  - app/assets/builds/alchemy/admin/page-select.css
648
662
  - app/assets/builds/alchemy/admin/print.css
663
+ - app/assets/builds/alchemy/alchemy_admin.min.js
664
+ - app/assets/builds/alchemy/alchemy_admin.min.js.map
649
665
  - app/assets/builds/alchemy/dark-theme.css
650
666
  - app/assets/builds/alchemy/light-theme.css
651
667
  - app/assets/builds/alchemy/preview.min.js
@@ -667,6 +683,7 @@ files:
667
683
  - app/assets/images/alchemy/icons-sprite.svg
668
684
  - app/assets/images/alchemy/missing-image.svg
669
685
  - app/components/alchemy/admin/attachment_select.rb
686
+ - app/components/alchemy/admin/current_user_name.rb
670
687
  - app/components/alchemy/admin/element_editor.html.erb
671
688
  - app/components/alchemy/admin/element_editor.rb
672
689
  - app/components/alchemy/admin/element_select.rb
@@ -687,6 +704,9 @@ files:
687
704
  - app/components/alchemy/admin/page_select.rb
688
705
  - app/components/alchemy/admin/picture_description_select.rb
689
706
  - app/components/alchemy/admin/picture_thumbnail.rb
707
+ - app/components/alchemy/admin/preview_time_select.rb
708
+ - app/components/alchemy/admin/publish_element_button.html.erb
709
+ - app/components/alchemy/admin/publish_element_button.rb
690
710
  - app/components/alchemy/admin/publish_page_button.html.erb
691
711
  - app/components/alchemy/admin/publish_page_button.rb
692
712
  - app/components/alchemy/admin/resource/action.rb
@@ -699,6 +719,7 @@ files:
699
719
  - app/components/alchemy/admin/resource/table.rb
700
720
  - app/components/alchemy/admin/tags_autocomplete.rb
701
721
  - app/components/alchemy/admin/tags_list.rb
722
+ - app/components/alchemy/admin/timezone_select.rb
702
723
  - app/components/alchemy/admin/toolbar_button.rb
703
724
  - app/components/alchemy/admin/update_check.rb
704
725
  - app/components/alchemy/ingredients/audio_editor.rb
@@ -914,6 +935,7 @@ files:
914
935
  - app/models/alchemy/node.rb
915
936
  - app/models/alchemy/page.rb
916
937
  - app/models/alchemy/page/definitions.rb
938
+ - app/models/alchemy/page/etag_generator.rb
917
939
  - app/models/alchemy/page/fixed_attributes.rb
918
940
  - app/models/alchemy/page/page_elements.rb
919
941
  - app/models/alchemy/page/page_naming.rb
@@ -967,6 +989,7 @@ files:
967
989
  - app/services/alchemy/delete_elements.rb
968
990
  - app/services/alchemy/dragonfly_to_image_processing.rb
969
991
  - app/services/alchemy/duplicate_element.rb
992
+ - app/services/alchemy/element_preloader.rb
970
993
  - app/services/alchemy/page_tree_preloader.rb
971
994
  - app/services/alchemy/tag_validations.rb
972
995
  - app/services/alchemy/update_checker.rb
@@ -1010,6 +1033,7 @@ files:
1010
1033
  - app/stylesheets/alchemy/admin/notices.scss
1011
1034
  - app/stylesheets/alchemy/admin/page-select.scss
1012
1035
  - app/stylesheets/alchemy/admin/pagination.scss
1036
+ - app/stylesheets/alchemy/admin/popover.scss
1013
1037
  - app/stylesheets/alchemy/admin/preview_window.scss
1014
1038
  - app/stylesheets/alchemy/admin/print.scss
1015
1039
  - app/stylesheets/alchemy/admin/resource_info.scss
@@ -1038,6 +1062,11 @@ files:
1038
1062
  - app/views/alchemy/_edit_mode.html.erb
1039
1063
  - app/views/alchemy/_menubar.html.erb
1040
1064
  - app/views/alchemy/_preview_mode_code.html.erb
1065
+ - app/views/alchemy/admin/_header.html.erb
1066
+ - app/views/alchemy/admin/_left_menu.html.erb
1067
+ - app/views/alchemy/admin/_main_navi.html.erb
1068
+ - app/views/alchemy/admin/_top_menu.html.erb
1069
+ - app/views/alchemy/admin/_user_info.html.erb
1041
1070
  - app/views/alchemy/admin/attachments/_archive_overlay.html.erb
1042
1071
  - app/views/alchemy/admin/attachments/_file_to_assign.html.erb
1043
1072
  - app/views/alchemy/admin/attachments/_files_list.html.erb
@@ -1073,10 +1102,12 @@ files:
1073
1102
  - app/views/alchemy/admin/elements/_footer.html.erb
1074
1103
  - app/views/alchemy/admin/elements/_form.html.erb
1075
1104
  - app/views/alchemy/admin/elements/_header.html.erb
1105
+ - app/views/alchemy/admin/elements/_schedule.html.erb
1076
1106
  - app/views/alchemy/admin/elements/_toolbar.html.erb
1077
1107
  - app/views/alchemy/admin/elements/create.turbo_stream.erb
1078
1108
  - app/views/alchemy/admin/elements/index.html.erb
1079
1109
  - app/views/alchemy/admin/elements/new.html.erb
1110
+ - app/views/alchemy/admin/elements/publish.turbo_stream.erb
1080
1111
  - app/views/alchemy/admin/ingredients/_audio_fields.html.erb
1081
1112
  - app/views/alchemy/admin/ingredients/_dom_id_fields.html.erb
1082
1113
  - app/views/alchemy/admin/ingredients/_file_fields.html.erb
@@ -1120,6 +1151,7 @@ files:
1120
1151
  - app/views/alchemy/admin/pages/_form.html.erb
1121
1152
  - app/views/alchemy/admin/pages/_legacy_urls.html.erb
1122
1153
  - app/views/alchemy/admin/pages/_locked_page.html.erb
1154
+ - app/views/alchemy/admin/pages/_locked_pages.html.erb
1123
1155
  - app/views/alchemy/admin/pages/_new_page_form.html.erb
1124
1156
  - app/views/alchemy/admin/pages/_page_infos.html.erb
1125
1157
  - app/views/alchemy/admin/pages/_page_layout_filter.html.erb
@@ -1256,7 +1288,9 @@ files:
1256
1288
  - lib/alchemy.rb
1257
1289
  - lib/alchemy/ability_helper.rb
1258
1290
  - lib/alchemy/admin/locale.rb
1291
+ - lib/alchemy/admin/preview_time.rb
1259
1292
  - lib/alchemy/admin/preview_url.rb
1293
+ - lib/alchemy/admin/timezone.rb
1260
1294
  - lib/alchemy/auth_accessors.rb
1261
1295
  - lib/alchemy/cache_digests/template_tracker.rb
1262
1296
  - lib/alchemy/config_missing.rb