alchemy_cms 8.1.11 → 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 (118) 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 -1
  5. data/app/assets/builds/alchemy/alchemy_admin.min.js.map +1 -1
  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 +1 -0
  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/pages_controller.rb +1 -2
  29. data/app/helpers/alchemy/admin/base_helper.rb +4 -7
  30. data/app/helpers/alchemy/url_helper.rb +2 -10
  31. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +28 -27
  32. data/app/javascript/alchemy_admin/components/element_editor.js +11 -2
  33. data/app/javascript/alchemy_admin/components/message.js +5 -1
  34. data/app/javascript/alchemy_admin/components/picture_thumbnail.js +1 -0
  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 -41
  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/page/etag_generator.rb +21 -0
  48. data/app/models/alchemy/page/url_path.rb +11 -2
  49. data/app/models/alchemy/page.rb +12 -2
  50. data/app/models/alchemy/page_version.rb +5 -5
  51. data/app/models/alchemy/picture.rb +19 -2
  52. data/app/models/alchemy/storage_adapter/active_storage.rb +9 -0
  53. data/app/models/alchemy/storage_adapter/dragonfly.rb +9 -0
  54. data/app/models/alchemy/storage_adapter.rb +1 -0
  55. data/app/models/concerns/alchemy/publishable.rb +20 -12
  56. data/app/models/concerns/alchemy/relatable_resource.rb +19 -15
  57. data/app/models/concerns/alchemy/touch_elements.rb +3 -3
  58. data/app/services/alchemy/element_preloader.rb +107 -0
  59. data/app/stylesheets/alchemy/_custom-properties.scss +1 -0
  60. data/app/stylesheets/alchemy/_mixins.scss +1 -1
  61. data/app/stylesheets/alchemy/_themes.scss +2 -0
  62. data/app/stylesheets/alchemy/admin/archive.scss +2 -2
  63. data/app/stylesheets/alchemy/admin/base.scss +2 -1
  64. data/app/stylesheets/alchemy/admin/elements.scss +22 -19
  65. data/app/stylesheets/alchemy/admin/form_fields.scss +3 -0
  66. data/app/stylesheets/alchemy/admin/forms.scss +14 -1
  67. data/app/stylesheets/alchemy/admin/frame.scss +9 -8
  68. data/app/stylesheets/alchemy/admin/images.scss +2 -2
  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/attachments/_files_list.html.erb +1 -1
  81. data/app/views/alchemy/admin/crop.html.erb +6 -11
  82. data/app/views/alchemy/admin/elements/_header.html.erb +16 -6
  83. data/app/views/alchemy/admin/elements/_schedule.html.erb +62 -0
  84. data/app/views/alchemy/admin/elements/_toolbar.html.erb +1 -15
  85. data/app/views/alchemy/admin/elements/publish.turbo_stream.erb +28 -0
  86. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  87. data/app/views/alchemy/admin/pages/_locked_pages.html.erb +5 -0
  88. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +4 -4
  89. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  90. data/app/views/alchemy/admin/pages/edit.html.erb +6 -2
  91. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +10 -10
  92. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -3
  93. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +3 -3
  94. data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -1
  95. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  96. data/app/views/alchemy/admin/pictures/index.html.erb +2 -2
  97. data/app/views/alchemy/admin/tinymce/_setup.html.erb +9 -16
  98. data/app/views/alchemy/admin/uploader/_setup.html.erb +1 -6
  99. data/app/views/alchemy/language_links/_language.html.erb +1 -2
  100. data/app/views/layouts/alchemy/admin.html.erb +2 -45
  101. data/config/importmap.rb +7 -2
  102. data/config/locales/alchemy.en.yml +35 -5
  103. data/lib/alchemy/admin/preview_time.rb +23 -0
  104. data/lib/alchemy/admin/preview_url.rb +13 -2
  105. data/lib/alchemy/admin/timezone.rb +56 -0
  106. data/lib/alchemy/configurations/main.rb +13 -1
  107. data/lib/alchemy/test_support/factories/element_factory.rb +2 -2
  108. data/lib/alchemy/test_support/relatable_resource_examples.rb +2 -2
  109. data/lib/alchemy/test_support/shared_publishable_examples.rb +44 -2
  110. data/lib/alchemy/upgrader.rb +3 -1
  111. data/lib/alchemy/version.rb +1 -1
  112. data/lib/alchemy_cms.rb +2 -0
  113. data/lib/generators/alchemy/install/install_generator.rb +2 -1
  114. data/vendor/javascript/handlebars.min.js +4 -4
  115. data/vendor/javascript/shoelace.min.js +1419 -1323
  116. data/vendor/javascript/sortable.min.js +2 -2
  117. data/vendor/javascript/tinymce.min.js +1 -1
  118. metadata +33 -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.11
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
@@ -669,6 +683,7 @@ files:
669
683
  - app/assets/images/alchemy/icons-sprite.svg
670
684
  - app/assets/images/alchemy/missing-image.svg
671
685
  - app/components/alchemy/admin/attachment_select.rb
686
+ - app/components/alchemy/admin/current_user_name.rb
672
687
  - app/components/alchemy/admin/element_editor.html.erb
673
688
  - app/components/alchemy/admin/element_editor.rb
674
689
  - app/components/alchemy/admin/element_select.rb
@@ -689,6 +704,9 @@ files:
689
704
  - app/components/alchemy/admin/page_select.rb
690
705
  - app/components/alchemy/admin/picture_description_select.rb
691
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
692
710
  - app/components/alchemy/admin/publish_page_button.html.erb
693
711
  - app/components/alchemy/admin/publish_page_button.rb
694
712
  - app/components/alchemy/admin/resource/action.rb
@@ -701,6 +719,7 @@ files:
701
719
  - app/components/alchemy/admin/resource/table.rb
702
720
  - app/components/alchemy/admin/tags_autocomplete.rb
703
721
  - app/components/alchemy/admin/tags_list.rb
722
+ - app/components/alchemy/admin/timezone_select.rb
704
723
  - app/components/alchemy/admin/toolbar_button.rb
705
724
  - app/components/alchemy/admin/update_check.rb
706
725
  - app/components/alchemy/ingredients/audio_editor.rb
@@ -916,6 +935,7 @@ files:
916
935
  - app/models/alchemy/node.rb
917
936
  - app/models/alchemy/page.rb
918
937
  - app/models/alchemy/page/definitions.rb
938
+ - app/models/alchemy/page/etag_generator.rb
919
939
  - app/models/alchemy/page/fixed_attributes.rb
920
940
  - app/models/alchemy/page/page_elements.rb
921
941
  - app/models/alchemy/page/page_naming.rb
@@ -969,6 +989,7 @@ files:
969
989
  - app/services/alchemy/delete_elements.rb
970
990
  - app/services/alchemy/dragonfly_to_image_processing.rb
971
991
  - app/services/alchemy/duplicate_element.rb
992
+ - app/services/alchemy/element_preloader.rb
972
993
  - app/services/alchemy/page_tree_preloader.rb
973
994
  - app/services/alchemy/tag_validations.rb
974
995
  - app/services/alchemy/update_checker.rb
@@ -1012,6 +1033,7 @@ files:
1012
1033
  - app/stylesheets/alchemy/admin/notices.scss
1013
1034
  - app/stylesheets/alchemy/admin/page-select.scss
1014
1035
  - app/stylesheets/alchemy/admin/pagination.scss
1036
+ - app/stylesheets/alchemy/admin/popover.scss
1015
1037
  - app/stylesheets/alchemy/admin/preview_window.scss
1016
1038
  - app/stylesheets/alchemy/admin/print.scss
1017
1039
  - app/stylesheets/alchemy/admin/resource_info.scss
@@ -1040,6 +1062,11 @@ files:
1040
1062
  - app/views/alchemy/_edit_mode.html.erb
1041
1063
  - app/views/alchemy/_menubar.html.erb
1042
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
1043
1070
  - app/views/alchemy/admin/attachments/_archive_overlay.html.erb
1044
1071
  - app/views/alchemy/admin/attachments/_file_to_assign.html.erb
1045
1072
  - app/views/alchemy/admin/attachments/_files_list.html.erb
@@ -1075,10 +1102,12 @@ files:
1075
1102
  - app/views/alchemy/admin/elements/_footer.html.erb
1076
1103
  - app/views/alchemy/admin/elements/_form.html.erb
1077
1104
  - app/views/alchemy/admin/elements/_header.html.erb
1105
+ - app/views/alchemy/admin/elements/_schedule.html.erb
1078
1106
  - app/views/alchemy/admin/elements/_toolbar.html.erb
1079
1107
  - app/views/alchemy/admin/elements/create.turbo_stream.erb
1080
1108
  - app/views/alchemy/admin/elements/index.html.erb
1081
1109
  - app/views/alchemy/admin/elements/new.html.erb
1110
+ - app/views/alchemy/admin/elements/publish.turbo_stream.erb
1082
1111
  - app/views/alchemy/admin/ingredients/_audio_fields.html.erb
1083
1112
  - app/views/alchemy/admin/ingredients/_dom_id_fields.html.erb
1084
1113
  - app/views/alchemy/admin/ingredients/_file_fields.html.erb
@@ -1122,6 +1151,7 @@ files:
1122
1151
  - app/views/alchemy/admin/pages/_form.html.erb
1123
1152
  - app/views/alchemy/admin/pages/_legacy_urls.html.erb
1124
1153
  - app/views/alchemy/admin/pages/_locked_page.html.erb
1154
+ - app/views/alchemy/admin/pages/_locked_pages.html.erb
1125
1155
  - app/views/alchemy/admin/pages/_new_page_form.html.erb
1126
1156
  - app/views/alchemy/admin/pages/_page_infos.html.erb
1127
1157
  - app/views/alchemy/admin/pages/_page_layout_filter.html.erb
@@ -1258,7 +1288,9 @@ files:
1258
1288
  - lib/alchemy.rb
1259
1289
  - lib/alchemy/ability_helper.rb
1260
1290
  - lib/alchemy/admin/locale.rb
1291
+ - lib/alchemy/admin/preview_time.rb
1261
1292
  - lib/alchemy/admin/preview_url.rb
1293
+ - lib/alchemy/admin/timezone.rb
1262
1294
  - lib/alchemy/auth_accessors.rb
1263
1295
  - lib/alchemy/cache_digests/template_tracker.rb
1264
1296
  - lib/alchemy/config_missing.rb