alchemy_cms 7.1.9 → 7.2.0.b

Sign up to get free protection for your applications and to get access to all the features.
Files changed (308) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +132 -11
  3. data/Gemfile +2 -4
  4. data/LICENSE +1 -1
  5. data/README.md +5 -6
  6. data/SECURITY.md +1 -1
  7. data/alchemy_cms.gemspec +3 -4
  8. data/app/assets/javascripts/alchemy/admin.js +0 -9
  9. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +5 -15
  10. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +5 -4
  11. data/app/assets/javascripts/alchemy/templates/index.js +0 -1
  12. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  13. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +1 -1
  14. data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +20 -7
  15. data/app/assets/stylesheets/alchemy/_custom-properties.scss +12 -0
  16. data/app/assets/stylesheets/alchemy/_mixins.scss +10 -6
  17. data/app/assets/stylesheets/alchemy/_variables.scss +3 -0
  18. data/app/assets/stylesheets/alchemy/admin.scss +2 -2
  19. data/app/assets/stylesheets/alchemy/archive.scss +4 -3
  20. data/app/assets/stylesheets/alchemy/attachment-select.scss +19 -0
  21. data/app/assets/stylesheets/alchemy/base.scss +31 -18
  22. data/app/assets/stylesheets/alchemy/buttons.scss +3 -4
  23. data/app/assets/stylesheets/alchemy/dashboard.scss +1 -1
  24. data/app/assets/stylesheets/alchemy/dialogs.scss +2 -5
  25. data/app/assets/stylesheets/alchemy/elements.scss +73 -41
  26. data/app/assets/stylesheets/alchemy/flash.scss +20 -70
  27. data/app/assets/stylesheets/alchemy/forms.scss +41 -36
  28. data/app/assets/stylesheets/alchemy/frame.scss +12 -3
  29. data/app/assets/stylesheets/alchemy/icons.scss +34 -2
  30. data/app/assets/stylesheets/alchemy/image_library.scss +18 -9
  31. data/app/assets/stylesheets/alchemy/{filter_field.scss → list_filter.scss} +8 -7
  32. data/app/assets/stylesheets/alchemy/lists.scss +1 -1
  33. data/app/assets/stylesheets/alchemy/navigation.scss +9 -12
  34. data/app/assets/stylesheets/alchemy/node-select.scss +1 -1
  35. data/app/assets/stylesheets/alchemy/nodes.scss +15 -13
  36. data/app/assets/stylesheets/alchemy/notices.scss +56 -39
  37. data/app/assets/stylesheets/alchemy/page-select.scss +1 -4
  38. data/app/assets/stylesheets/alchemy/pagination.scss +11 -1
  39. data/app/assets/stylesheets/alchemy/preview_window.scss +3 -3
  40. data/app/assets/stylesheets/alchemy/search.scss +4 -4
  41. data/app/assets/stylesheets/alchemy/selects.scss +13 -7
  42. data/app/assets/stylesheets/alchemy/shoelace.scss +33 -2
  43. data/app/assets/stylesheets/alchemy/sitemap.scss +155 -159
  44. data/app/assets/stylesheets/alchemy/tables.scss +49 -12
  45. data/app/assets/stylesheets/alchemy/tags.scss +17 -11
  46. data/app/assets/stylesheets/alchemy/toolbar.scss +2 -2
  47. data/app/assets/stylesheets/alchemy/typography.scss +41 -22
  48. data/app/assets/stylesheets/alchemy/upload.scss +5 -4
  49. data/app/components/alchemy/admin/attachment_select.rb +39 -0
  50. data/app/components/alchemy/admin/icon.rb +72 -0
  51. data/app/components/alchemy/admin/link_dialog/anchor_tab.rb +41 -0
  52. data/app/components/alchemy/admin/link_dialog/base_tab.rb +75 -0
  53. data/app/components/alchemy/admin/link_dialog/external_tab.rb +42 -0
  54. data/app/components/alchemy/admin/link_dialog/file_tab.rb +45 -0
  55. data/app/components/alchemy/admin/link_dialog/internal_tab.rb +66 -0
  56. data/app/components/alchemy/admin/link_dialog/tabs.rb +33 -0
  57. data/app/components/alchemy/admin/list_filter.rb +42 -0
  58. data/app/components/alchemy/admin/message.rb +19 -0
  59. data/app/components/alchemy/admin/tags_autocomplete.rb +25 -0
  60. data/app/components/alchemy/admin/toolbar_button.rb +111 -0
  61. data/app/components/alchemy/ingredients/link_view.rb +1 -7
  62. data/app/components/alchemy/ingredients/picture_view.rb +2 -2
  63. data/app/components/alchemy/ingredients/text_view.rb +1 -2
  64. data/app/controllers/alchemy/admin/base_controller.rb +1 -1
  65. data/app/controllers/alchemy/admin/elements_controller.rb +4 -2
  66. data/app/controllers/alchemy/admin/ingredients_controller.rb +2 -0
  67. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  68. data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +12 -4
  69. data/app/controllers/alchemy/admin/nodes_controller.rb +26 -0
  70. data/app/controllers/alchemy/admin/pages_controller.rb +11 -78
  71. data/app/controllers/alchemy/admin/picture_descriptions_controller.rb +15 -0
  72. data/app/controllers/alchemy/admin/pictures_controller.rb +18 -1
  73. data/app/controllers/alchemy/admin/resources_controller.rb +15 -10
  74. data/app/controllers/alchemy/api/attachments_controller.rb +44 -0
  75. data/app/controllers/alchemy/api/pages_controller.rb +10 -6
  76. data/app/controllers/alchemy/base_controller.rb +2 -2
  77. data/app/controllers/alchemy/messages_controller.rb +2 -2
  78. data/app/controllers/alchemy/pages_controller.rb +8 -6
  79. data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -1
  80. data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +1 -1
  81. data/app/decorators/alchemy/element_editor.rb +2 -2
  82. data/app/helpers/alchemy/admin/base_helper.rb +8 -60
  83. data/app/helpers/alchemy/admin/elements_helper.rb +1 -1
  84. data/app/helpers/alchemy/admin/ingredients_helper.rb +1 -1
  85. data/app/helpers/alchemy/base_helper.rb +9 -91
  86. data/app/helpers/alchemy/elements_helper.rb +3 -3
  87. data/app/helpers/alchemy/pages_helper.rb +16 -9
  88. data/app/javascript/alchemy_admin/components/attachment_select.js +24 -0
  89. data/app/javascript/alchemy_admin/components/button.js +3 -0
  90. data/app/javascript/alchemy_admin/components/clipboard_button.js +3 -2
  91. data/app/javascript/alchemy_admin/components/dialog_link.js +10 -7
  92. data/app/javascript/alchemy_admin/components/dom_id_select.js +69 -0
  93. data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +42 -0
  94. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +4 -2
  95. data/app/javascript/alchemy_admin/components/element_editor.js +21 -13
  96. data/app/javascript/alchemy_admin/components/elements_window.js +87 -0
  97. data/app/javascript/alchemy_admin/components/growl.js +13 -0
  98. data/app/javascript/alchemy_admin/components/icon.js +51 -0
  99. data/app/javascript/alchemy_admin/components/index.js +24 -0
  100. data/app/javascript/alchemy_admin/components/ingredient_group.js +6 -0
  101. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +21 -11
  102. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +2 -1
  103. data/app/javascript/alchemy_admin/components/link_buttons.js +1 -0
  104. data/app/javascript/alchemy_admin/components/list_filter.js +68 -0
  105. data/app/javascript/alchemy_admin/components/message.js +69 -0
  106. data/app/javascript/alchemy_admin/components/node_select.js +1 -1
  107. data/app/javascript/alchemy_admin/components/overlay.js +6 -6
  108. data/app/javascript/alchemy_admin/components/page_select.js +3 -7
  109. data/app/javascript/alchemy_admin/components/preview_window.js +121 -0
  110. data/app/javascript/alchemy_admin/components/remote_select.js +4 -1
  111. data/app/javascript/alchemy_admin/components/select.js +37 -1
  112. data/app/javascript/alchemy_admin/components/tags_autocomplete.js +57 -0
  113. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +4 -3
  114. data/app/javascript/alchemy_admin/components/uploader/progress.js +1 -1
  115. data/app/javascript/alchemy_admin/confirm_dialog.js +133 -0
  116. data/app/javascript/alchemy_admin/dirty.js +19 -14
  117. data/app/javascript/alchemy_admin/fixed_elements.js +24 -0
  118. data/app/javascript/alchemy_admin/growler.js +15 -0
  119. data/app/javascript/alchemy_admin/gui.js +2 -4
  120. data/app/javascript/alchemy_admin/hotkeys.js +60 -0
  121. data/app/javascript/alchemy_admin/image_loader.js +2 -2
  122. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -3
  123. data/app/javascript/alchemy_admin/initializer.js +1 -8
  124. data/app/javascript/alchemy_admin/link_dialog.js +131 -0
  125. data/app/javascript/alchemy_admin/locales/en.js +3 -0
  126. data/app/javascript/alchemy_admin/node_tree.js +4 -3
  127. data/app/javascript/alchemy_admin/page_sorter.js +23 -14
  128. data/app/javascript/alchemy_admin/picture_editors.js +3 -2
  129. data/app/javascript/alchemy_admin/shoelace_theme.js +60 -0
  130. data/app/javascript/alchemy_admin/sitemap.js +9 -3
  131. data/app/javascript/alchemy_admin/sortable_elements.js +4 -6
  132. data/app/javascript/alchemy_admin.js +18 -42
  133. data/app/models/alchemy/current.rb +26 -0
  134. data/app/models/alchemy/element.rb +1 -1
  135. data/app/models/alchemy/ingredients/audio.rb +0 -11
  136. data/app/models/alchemy/ingredients/headline.rb +8 -1
  137. data/app/models/alchemy/ingredients/picture.rb +6 -0
  138. data/app/models/alchemy/ingredients/video.rb +0 -12
  139. data/app/models/alchemy/language.rb +8 -6
  140. data/app/models/alchemy/node.rb +2 -2
  141. data/app/models/alchemy/page/page_elements.rb +8 -8
  142. data/app/models/alchemy/page/page_layouts.rb +3 -3
  143. data/app/models/alchemy/page/page_natures.rb +13 -9
  144. data/app/models/alchemy/page/page_scopes.rb +2 -2
  145. data/app/models/alchemy/page/publisher.rb +1 -0
  146. data/app/models/alchemy/page.rb +13 -28
  147. data/app/models/alchemy/picture.rb +8 -0
  148. data/app/models/alchemy/picture_description.rb +8 -0
  149. data/app/models/alchemy/picture_variant.rb +1 -1
  150. data/app/models/alchemy/site.rb +10 -7
  151. data/app/serializers/alchemy/attachment_serializer.rb +8 -0
  152. data/app/serializers/alchemy/page_node_serializer.rb +9 -0
  153. data/app/views/alchemy/_menubar.html.erb +1 -1
  154. data/app/views/alchemy/_preview_mode_code.html.erb +1 -1
  155. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +2 -2
  156. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  157. data/app/views/alchemy/admin/attachments/edit.html.erb +3 -4
  158. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  159. data/app/views/alchemy/admin/clipboard/index.html.erb +1 -1
  160. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  161. data/app/views/alchemy/admin/clipboard/remove.js.erb +1 -1
  162. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  163. data/app/views/alchemy/admin/dashboard/_sites.html.erb +1 -1
  164. data/app/views/alchemy/admin/dashboard/help.html.erb +48 -12
  165. data/app/views/alchemy/admin/dashboard/index.html.erb +1 -1
  166. data/app/views/alchemy/admin/dashboard/info.html.erb +5 -8
  167. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +1 -1
  168. data/app/views/alchemy/admin/elements/_element.html.erb +5 -5
  169. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  170. data/app/views/alchemy/admin/elements/_header.html.erb +6 -2
  171. data/app/views/alchemy/admin/elements/_toolbar.html.erb +8 -6
  172. data/app/views/alchemy/admin/elements/create.js.erb +0 -5
  173. data/app/views/alchemy/admin/elements/index.html.erb +70 -34
  174. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +1 -2
  175. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -5
  176. data/app/views/alchemy/admin/languages/_language.html.erb +1 -1
  177. data/app/views/alchemy/admin/languages/index.html.erb +2 -2
  178. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +18 -18
  179. data/app/views/alchemy/admin/layoutpages/edit.html.erb +3 -4
  180. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  181. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +10 -11
  182. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +15 -17
  183. data/app/views/alchemy/admin/legacy_page_urls/_table.html.erb +16 -0
  184. data/app/views/alchemy/admin/legacy_page_urls/_update.turbo_stream.erb +12 -0
  185. data/app/views/alchemy/admin/legacy_page_urls/create.turbo_stream.erb +8 -0
  186. data/app/views/alchemy/admin/legacy_page_urls/destroy.turbo_stream.erb +1 -0
  187. data/app/views/alchemy/admin/legacy_page_urls/edit.html.erb +27 -0
  188. data/app/views/alchemy/admin/legacy_page_urls/show.html.erb +1 -0
  189. data/app/views/alchemy/admin/legacy_page_urls/update.turbo_stream.erb +1 -0
  190. data/app/views/alchemy/admin/nodes/_form.html.erb +12 -11
  191. data/app/views/alchemy/admin/nodes/_label.html.erb +1 -0
  192. data/app/views/alchemy/admin/nodes/_node.html.erb +19 -19
  193. data/app/views/alchemy/admin/nodes/_page_nodes.html.erb +48 -0
  194. data/app/views/alchemy/admin/nodes/_update.turbo_stream.erb +9 -0
  195. data/app/views/alchemy/admin/nodes/create.turbo_stream.erb +1 -0
  196. data/app/views/alchemy/admin/nodes/destroy.turbo_stream.erb +1 -0
  197. data/app/views/alchemy/admin/nodes/index.html.erb +3 -3
  198. data/app/views/alchemy/admin/pages/_form.html.erb +3 -4
  199. data/app/views/alchemy/admin/pages/_legacy_urls.html.erb +4 -15
  200. data/app/views/alchemy/admin/pages/_page.html.erb +39 -39
  201. data/app/views/alchemy/admin/pages/_table_row.html.erb +3 -3
  202. data/app/views/alchemy/admin/pages/_toolbar.html.erb +2 -2
  203. data/app/views/alchemy/admin/pages/configure.html.erb +6 -0
  204. data/app/views/alchemy/admin/pages/edit.html.erb +15 -62
  205. data/app/views/alchemy/admin/pages/unlock.js.erb +2 -2
  206. data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +3 -1
  207. data/app/views/alchemy/admin/partials/_flash_notices.html.erb +4 -2
  208. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
  209. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +5 -2
  210. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -2
  211. data/app/views/alchemy/admin/partials/_search_form.html.erb +2 -2
  212. data/app/views/alchemy/admin/partials/_site_select.html.erb +1 -1
  213. data/app/views/alchemy/admin/picture_descriptions/_form.html.erb +11 -0
  214. data/app/views/alchemy/admin/picture_descriptions/edit.html.erb +6 -0
  215. data/app/views/alchemy/admin/pictures/_form.html.erb +4 -3
  216. data/app/views/alchemy/admin/pictures/_infos.html.erb +1 -1
  217. data/app/views/alchemy/admin/pictures/_picture_description_field.html.erb +29 -0
  218. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +2 -2
  219. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +0 -2
  220. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +3 -3
  221. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  222. data/app/views/alchemy/admin/resources/_form.html.erb +3 -4
  223. data/app/views/alchemy/admin/resources/_tag_list.html.erb +2 -2
  224. data/app/views/alchemy/admin/resources/index.html.erb +2 -2
  225. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  226. data/app/views/alchemy/admin/styleguide/index.html.erb +29 -24
  227. data/app/views/alchemy/admin/tags/_tag.html.erb +1 -1
  228. data/app/views/alchemy/admin/tags/edit.html.erb +1 -1
  229. data/app/views/alchemy/admin/tags/index.html.erb +1 -1
  230. data/app/views/alchemy/base/500.html.erb +7 -18
  231. data/app/views/alchemy/base/error_notice.html.erb +3 -1
  232. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  233. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  234. data/app/views/alchemy/ingredients/_headline_editor.html.erb +13 -8
  235. data/app/views/alchemy/ingredients/_picture_editor.html.erb +1 -1
  236. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +1 -1
  237. data/app/views/alchemy/language_links/_language.html.erb +1 -1
  238. data/app/views/kaminari/alchemy/_first_page.html.erb +2 -2
  239. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  240. data/app/views/kaminari/alchemy/_last_page.html.erb +2 -2
  241. data/app/views/kaminari/alchemy/_next_page.html.erb +2 -2
  242. data/app/views/kaminari/alchemy/_prev_page.html.erb +2 -2
  243. data/app/views/layouts/alchemy/admin.html.erb +2 -1
  244. data/bundles/shoelace.js +3 -1
  245. data/config/locales/alchemy.en.yml +16 -3
  246. data/config/routes.rb +3 -1
  247. data/db/migrate/20240314105244_create_alchemy_picture_descriptions.rb +11 -0
  248. data/lib/alchemy/configuration_methods.rb +1 -1
  249. data/lib/alchemy/controller_actions.rb +3 -3
  250. data/lib/alchemy/element_definition.rb +10 -6
  251. data/lib/alchemy/engine.rb +19 -2
  252. data/lib/alchemy/page_layout.rb +10 -6
  253. data/lib/alchemy/permissions.rb +3 -2
  254. data/lib/alchemy/routing_constraints.rb +1 -1
  255. data/lib/alchemy/seeder.rb +2 -2
  256. data/lib/alchemy/test_support/capybara_helpers.rb +4 -0
  257. data/lib/alchemy/test_support/factories/language_factory.rb +1 -1
  258. data/lib/alchemy/test_support/shared_contexts.rb +8 -0
  259. data/lib/alchemy/tinymce.rb +2 -1
  260. data/lib/alchemy/version.rb +1 -1
  261. data/lib/alchemy.rb +36 -0
  262. data/lib/alchemy_cms.rb +0 -1
  263. data/lib/generators/alchemy/menus/templates/node.html.erb +2 -2
  264. data/lib/generators/alchemy/menus/templates/node.html.haml +2 -2
  265. data/lib/generators/alchemy/menus/templates/node.html.slim +2 -2
  266. data/lib/generators/alchemy/menus/templates/wrapper.html.erb +1 -1
  267. data/lib/generators/alchemy/menus/templates/wrapper.html.haml +1 -1
  268. data/lib/generators/alchemy/menus/templates/wrapper.html.slim +1 -1
  269. data/lib/tasks/alchemy/sitemap.rake +97 -0
  270. data/package.json +8 -8
  271. data/vendor/assets/fonts/remixicon.symbol.svg +11 -0
  272. data/vendor/javascript/shoelace.min.js +333 -118
  273. data/vendor/javascript/sortable.min.js +1 -1
  274. data/vendor/javascript/tinymce.min.js +1 -1
  275. data/vendor/javascript/ungap-custom-elements.min.js +1 -1
  276. metadata +60 -53
  277. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +0 -85
  278. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +0 -107
  279. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +0 -66
  280. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +0 -45
  281. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +0 -24
  282. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +0 -49
  283. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -0
  284. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +0 -230
  285. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +0 -49
  286. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +0 -82
  287. data/app/assets/javascripts/alchemy/alchemy.string_extension.js.coffee +0 -11
  288. data/app/assets/javascripts/alchemy/templates/page.hbs +0 -19
  289. data/app/javascript/alchemy_admin/tags_autocomplete.js +0 -46
  290. data/app/models/alchemy/tree_node.rb +0 -7
  291. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -8
  292. data/app/views/alchemy/admin/legacy_page_urls/_form.html.erb +0 -5
  293. data/app/views/alchemy/admin/legacy_page_urls/create.js.erb +0 -9
  294. data/app/views/alchemy/admin/legacy_page_urls/destroy.js.erb +0 -6
  295. data/app/views/alchemy/admin/legacy_page_urls/update.js.erb +0 -2
  296. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +0 -22
  297. data/app/views/alchemy/admin/pages/_external_link.html.erb +0 -31
  298. data/app/views/alchemy/admin/pages/_file_link.html.erb +0 -31
  299. data/app/views/alchemy/admin/pages/_internal_link.html.erb +0 -35
  300. data/app/views/alchemy/admin/pages/link.html.erb +0 -26
  301. data/app/views/alchemy/admin/partials/_flash.html.erb +0 -4
  302. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +0 -29
  303. data/vendor/assets/fonts/remixicon.eot +0 -0
  304. data/vendor/assets/fonts/remixicon.svg +0 -7816
  305. data/vendor/assets/fonts/remixicon.ttf +0 -0
  306. data/vendor/assets/fonts/remixicon.woff +0 -0
  307. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  308. data/vendor/assets/stylesheets/remixicon.scss +0 -10480
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a82845cee38ba91586099fdb89a526869147dc6f53393c50fdef44d32ea2f59
4
- data.tar.gz: 3d011de3b9ae8ef17d6aa203b890d3967eb8f2daf0a1788ddc39af5d38be1f95
3
+ metadata.gz: 2ad1126eb844c56fb3b6259da82715a8c414a8d52c6864ee37bedc6e4ee41823
4
+ data.tar.gz: 4c06518d41d2b6b55b75b6a39df2754d9b32d05ed781d68eccfe8685d1bd7a03
5
5
  SHA512:
6
- metadata.gz: fe14f48b4623340deb4b2b48bb0370d353b609d2de2b03e15a38fadc140d3bc1c4c46d1dbd7207a3233fb85a95ba550c4fcb2c0c47c2005db13214c5d14b8e0d
7
- data.tar.gz: c75236dbe97961a5dcac977d803c2d5026bd62f972c8db9fbd574b4dbc2117e9b9605be3b6035eb7eb44feb609f59fb4b941702b6a00cfcddeee2e279e5d8ccf
6
+ metadata.gz: b83b7b9326660aaea585e0f7edfb1b7c627e519e8dc2d586c2c469afa728bbc1a1adf0e3437f82a0b02833080136c4388cbe02c01c0d79daa74b63deb26937f5
7
+ data.tar.gz: 5cabdfca80aa27c1722f6291546fb25cd2253f12d3d3ac337b27edac74e3a44a454d30a09f6caf8cb6a76194df421499ab5835cdb31a007440aac2c398700f7b
data/CHANGELOG.md CHANGED
@@ -1,16 +1,114 @@
1
1
  # Changelog
2
2
 
3
- ## 7.1.9 (2024-06-04)
4
-
5
- - [7.1-stable] fix(RoutingConstraints): Allow Turbo Stream requests [#2915](https://github.com/AlchemyCMS/alchemy_cms/pull/2915) ([alchemycms-bot](https://github.com/alchemycms-bot))
6
- - [7.1-stable] fix Ingredient Audio and Video boolean type casting [#2911](https://github.com/AlchemyCMS/alchemy_cms/pull/2911) ([alchemycms-bot](https://github.com/alchemycms-bot))
7
-
8
- ## 7.1.8 (2024-05-29)
9
-
10
- - [7.1-stable] Fix preview window width for smaller viewports [#2890](https://github.com/AlchemyCMS/alchemy_cms/pull/2890) ([alchemycms-bot](https://github.com/alchemycms-bot))
11
- - [7.1-stable] Fix Preview Window width [#2881](https://github.com/AlchemyCMS/alchemy_cms/pull/2881) ([alchemycms-bot](https://github.com/alchemycms-bot))
12
- - [7.1-stable] Fix preview window resize transition [#2872](https://github.com/AlchemyCMS/alchemy_cms/pull/2872) ([alchemycms-bot](https://github.com/alchemycms-bot))
13
- - [7.1-stable] UI fixes for picture css class display [#2846](https://github.com/AlchemyCMS/alchemy_cms/pull/2846) ([alchemycms-bot](https://github.com/alchemycms-bot))
3
+ ## 7.2.0.b (2024-05-16)
4
+
5
+ - fix language scope in picture description field [#2876](https://github.com/AlchemyCMS/alchemy_cms/pull/2876) ([tvdeyen](https://github.com/tvdeyen))
6
+ - fix(dialog-link): Do not addEventListener on every DOM insert [#2874](https://github.com/AlchemyCMS/alchemy_cms/pull/2874) ([tvdeyen](https://github.com/tvdeyen))
7
+ - [js] Update tinymce 7.0.1 → 7.1.0 (minor) [#2873](https://github.com/AlchemyCMS/alchemy_cms/pull/2873) ([depfu](https://github.com/apps/depfu))
8
+ - Fix preview window resize transition [#2870](https://github.com/AlchemyCMS/alchemy_cms/pull/2870) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Do not use select2 for ingredient style select [#2868](https://github.com/AlchemyCMS/alchemy_cms/pull/2868) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Convert legacy page urls panel into Turbo Frame [#2867](https://github.com/AlchemyCMS/alchemy_cms/pull/2867) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Add `message_for_resource_action` [#2866](https://github.com/AlchemyCMS/alchemy_cms/pull/2866) ([tvdeyen](https://github.com/tvdeyen))
12
+ - Tackle deprecations [#2865](https://github.com/AlchemyCMS/alchemy_cms/pull/2865) ([tvdeyen](https://github.com/tvdeyen))
13
+ - [js] Update all development Yarn dependencies (2024-05-16) [#2864](https://github.com/AlchemyCMS/alchemy_cms/pull/2864) ([depfu](https://github.com/apps/depfu))
14
+ - Add spec for PagesHelper#page_title [#2863](https://github.com/AlchemyCMS/alchemy_cms/pull/2863) ([mamhoff](https://github.com/mamhoff))
15
+ - Use page version's `updated_at` timestamp as cache key [#2862](https://github.com/AlchemyCMS/alchemy_cms/pull/2862) ([mamhoff](https://github.com/mamhoff))
16
+ - Raise missing template errors from `render_site_layout` and `render_menu` [#2861](https://github.com/AlchemyCMS/alchemy_cms/pull/2861) ([mamhoff](https://github.com/mamhoff))
17
+ - Remove rufo gem [#2860](https://github.com/AlchemyCMS/alchemy_cms/pull/2860) ([tvdeyen](https://github.com/tvdeyen))
18
+ - fix(IngredientAnchorLink): Use alchemy-icon setAttribute [#2859](https://github.com/AlchemyCMS/alchemy_cms/pull/2859) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Remove `render_flash_notice` helper [#2857](https://github.com/AlchemyCMS/alchemy_cms/pull/2857) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Deprecate `js_filter_field` [#2856](https://github.com/AlchemyCMS/alchemy_cms/pull/2856) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Deprecate `toolbar_button` helper [#2855](https://github.com/AlchemyCMS/alchemy_cms/pull/2855) ([tvdeyen](https://github.com/tvdeyen))
22
+ - feat(alchemy-button): Re-enable on turbo:submit-end [#2854](https://github.com/AlchemyCMS/alchemy_cms/pull/2854) ([tvdeyen](https://github.com/tvdeyen))
23
+ - feat(alchemy-growl): Allow innerHTML as message [#2853](https://github.com/AlchemyCMS/alchemy_cms/pull/2853) ([tvdeyen](https://github.com/tvdeyen))
24
+ - Always show element tabs if the page has fixed elements [#2852](https://github.com/AlchemyCMS/alchemy_cms/pull/2852) ([sascha-karnatz](https://github.com/sascha-karnatz))
25
+ - CI: Commit changes to javascript bundles [#2851](https://github.com/AlchemyCMS/alchemy_cms/pull/2851) ([tvdeyen](https://github.com/tvdeyen))
26
+ - [CI] Unify build workflow into one file again [#2850](https://github.com/AlchemyCMS/alchemy_cms/pull/2850) ([tvdeyen](https://github.com/tvdeyen))
27
+ - fix(CI): Skip Build JS packages if no changes [#2849](https://github.com/AlchemyCMS/alchemy_cms/pull/2849) ([tvdeyen](https://github.com/tvdeyen))
28
+ - [js] Update all development Yarn dependencies (2024-04-26) [#2847](https://github.com/AlchemyCMS/alchemy_cms/pull/2847) ([depfu](https://github.com/apps/depfu))
29
+ - UI fixes for picture css class display [#2844](https://github.com/AlchemyCMS/alchemy_cms/pull/2844) ([tvdeyen](https://github.com/tvdeyen))
30
+ - Allow to customize Headline Sizes [#2843](https://github.com/AlchemyCMS/alchemy_cms/pull/2843) ([tvdeyen](https://github.com/tvdeyen))
31
+ - [js] Update tinymce 7.0.0 → 7.0.1 (patch) [#2842](https://github.com/AlchemyCMS/alchemy_cms/pull/2842) ([depfu](https://github.com/apps/depfu))
32
+ - Fix Ingredient Boolean View [#2836](https://github.com/AlchemyCMS/alchemy_cms/pull/2836) ([tvdeyen](https://github.com/tvdeyen))
33
+ - Fix elements clipboard button permissions [#2834](https://github.com/AlchemyCMS/alchemy_cms/pull/2834) ([tvdeyen](https://github.com/tvdeyen))
34
+ - Reintroduce autocomplete_tag_list partial [#2833](https://github.com/AlchemyCMS/alchemy_cms/pull/2833) ([tvdeyen](https://github.com/tvdeyen))
35
+ - Harden Page List Feature Spec [#2832](https://github.com/AlchemyCMS/alchemy_cms/pull/2832) ([mamhoff](https://github.com/mamhoff))
36
+ - Nullify Ingredients::Page on Page destroy [#2829](https://github.com/AlchemyCMS/alchemy_cms/pull/2829) ([mamhoff](https://github.com/mamhoff))
37
+ - Reload preview window (again) after element create [#2827](https://github.com/AlchemyCMS/alchemy_cms/pull/2827) ([tvdeyen](https://github.com/tvdeyen))
38
+ - Always show headline level [#2825](https://github.com/AlchemyCMS/alchemy_cms/pull/2825) ([tvdeyen](https://github.com/tvdeyen))
39
+ - Clear definitions cache after file change [#2824](https://github.com/AlchemyCMS/alchemy_cms/pull/2824) ([tvdeyen](https://github.com/tvdeyen))
40
+ - Use Shoelace Dialog for ConfirmDialog [#2823](https://github.com/AlchemyCMS/alchemy_cms/pull/2823) ([tvdeyen](https://github.com/tvdeyen))
41
+ - Fix module error [#2820](https://github.com/AlchemyCMS/alchemy_cms/pull/2820) ([mamhoff](https://github.com/mamhoff))
42
+ - Add delete-element-button [#2818](https://github.com/AlchemyCMS/alchemy_cms/pull/2818) ([tvdeyen](https://github.com/tvdeyen))
43
+ - Locally import growl function in ES code [#2817](https://github.com/AlchemyCMS/alchemy_cms/pull/2817) ([tvdeyen](https://github.com/tvdeyen))
44
+ - Locally initialize SortableElements [#2815](https://github.com/AlchemyCMS/alchemy_cms/pull/2815) ([tvdeyen](https://github.com/tvdeyen))
45
+ - Only initialize Alchemy Admin JS locally [#2814](https://github.com/AlchemyCMS/alchemy_cms/pull/2814) ([tvdeyen](https://github.com/tvdeyen))
46
+ - [js] Update all development Yarn dependencies (2024-03-28) [#2811](https://github.com/AlchemyCMS/alchemy_cms/pull/2811) ([depfu](https://github.com/apps/depfu))
47
+ - Table icon fixes [#2810](https://github.com/AlchemyCMS/alchemy_cms/pull/2810) ([tvdeyen](https://github.com/tvdeyen))
48
+ - Revert list flex box [#2809](https://github.com/AlchemyCMS/alchemy_cms/pull/2809) ([tvdeyen](https://github.com/tvdeyen))
49
+ - 🚨 [security] [js] Update tinymce 6.8.3 → 7.0.0 (major) [#2807](https://github.com/AlchemyCMS/alchemy_cms/pull/2807) ([depfu](https://github.com/apps/depfu))
50
+ - Add Alchemy::Admin::ListFilter component [#2805](https://github.com/AlchemyCMS/alchemy_cms/pull/2805) ([tvdeyen](https://github.com/tvdeyen))
51
+ - Some UI fixes [#2804](https://github.com/AlchemyCMS/alchemy_cms/pull/2804) ([tvdeyen](https://github.com/tvdeyen))
52
+ - Add remote Attachment select to Link Dialog [#2803](https://github.com/AlchemyCMS/alchemy_cms/pull/2803) ([tvdeyen](https://github.com/tvdeyen))
53
+ - Convert Preview Window into web component [#2802](https://github.com/AlchemyCMS/alchemy_cms/pull/2802) ([tvdeyen](https://github.com/tvdeyen))
54
+ - Use Turbo Frame for Elements Window [#2801](https://github.com/AlchemyCMS/alchemy_cms/pull/2801) ([tvdeyen](https://github.com/tvdeyen))
55
+ - Add Toolbar button component [#2800](https://github.com/AlchemyCMS/alchemy_cms/pull/2800) ([tvdeyen](https://github.com/tvdeyen))
56
+ - Fix hidden element visibility [#2799](https://github.com/AlchemyCMS/alchemy_cms/pull/2799) ([tvdeyen](https://github.com/tvdeyen))
57
+ - Picture view fixes [#2798](https://github.com/AlchemyCMS/alchemy_cms/pull/2798) ([tvdeyen](https://github.com/tvdeyen))
58
+ - [js] Update all development Yarn dependencies (2024-03-21) [#2797](https://github.com/AlchemyCMS/alchemy_cms/pull/2797) ([depfu](https://github.com/apps/depfu))
59
+ - Refactor link dialog into ES module [#2796](https://github.com/AlchemyCMS/alchemy_cms/pull/2796) ([sascha-karnatz](https://github.com/sascha-karnatz))
60
+ - Rebuild Growler into web component [#2795](https://github.com/AlchemyCMS/alchemy_cms/pull/2795) ([tvdeyen](https://github.com/tvdeyen))
61
+ - Update open source resources in info panel [#2794](https://github.com/AlchemyCMS/alchemy_cms/pull/2794) ([tvdeyen](https://github.com/tvdeyen))
62
+ - Fix tag list style [#2793](https://github.com/AlchemyCMS/alchemy_cms/pull/2793) ([tvdeyen](https://github.com/tvdeyen))
63
+ - Add multi language image descriptions [#2792](https://github.com/AlchemyCMS/alchemy_cms/pull/2792) ([tvdeyen](https://github.com/tvdeyen))
64
+ - Convert List Filter into ES module [#2791](https://github.com/AlchemyCMS/alchemy_cms/pull/2791) ([tvdeyen](https://github.com/tvdeyen))
65
+ - Fix image archive icons [#2790](https://github.com/AlchemyCMS/alchemy_cms/pull/2790) ([tvdeyen](https://github.com/tvdeyen))
66
+ - Fix hotkeys [#2789](https://github.com/AlchemyCMS/alchemy_cms/pull/2789) ([tvdeyen](https://github.com/tvdeyen))
67
+ - Do not use xlink:href in svg icons [#2787](https://github.com/AlchemyCMS/alchemy_cms/pull/2787) ([tvdeyen](https://github.com/tvdeyen))
68
+ - Remove order in before_action callback [#2784](https://github.com/AlchemyCMS/alchemy_cms/pull/2784) ([kulturbande](https://github.com/kulturbande))
69
+ - CI: Setup concurrency [#2783](https://github.com/AlchemyCMS/alchemy_cms/pull/2783) ([tvdeyen](https://github.com/tvdeyen))
70
+ - Fix layoutpages layout [#2780](https://github.com/AlchemyCMS/alchemy_cms/pull/2780) ([tvdeyen](https://github.com/tvdeyen))
71
+ - Mark ingredient output as html_safe [#2779](https://github.com/AlchemyCMS/alchemy_cms/pull/2779) ([tvdeyen](https://github.com/tvdeyen))
72
+ - Add CODEOWNERS file [#2777](https://github.com/AlchemyCMS/alchemy_cms/pull/2777) ([tvdeyen](https://github.com/tvdeyen))
73
+ - Flexify pages sitemap [#2776](https://github.com/AlchemyCMS/alchemy_cms/pull/2776) ([tvdeyen](https://github.com/tvdeyen))
74
+ - Reload page sitemap on move errors [#2775](https://github.com/AlchemyCMS/alchemy_cms/pull/2775) ([tvdeyen](https://github.com/tvdeyen))
75
+ - Add a Sitemap rake task to detect and fix issues [#2774](https://github.com/AlchemyCMS/alchemy_cms/pull/2774) ([sascha-karnatz](https://github.com/sascha-karnatz))
76
+ - Use Codecov for coverage reports [#2773](https://github.com/AlchemyCMS/alchemy_cms/pull/2773) ([tvdeyen](https://github.com/tvdeyen))
77
+ - [js] Update all development Yarn dependencies (2024-03-07) [#2772](https://github.com/AlchemyCMS/alchemy_cms/pull/2772) ([depfu](https://github.com/apps/depfu))
78
+ - Remove order admin pages route [#2770](https://github.com/AlchemyCMS/alchemy_cms/pull/2770) ([tvdeyen](https://github.com/tvdeyen))
79
+ - Do not include timezone in datepickers only displaying date [#2767](https://github.com/AlchemyCMS/alchemy_cms/pull/2767) ([tvdeyen](https://github.com/tvdeyen))
80
+ - Moved the link dialog partials into view components [#2766](https://github.com/AlchemyCMS/alchemy_cms/pull/2766) ([sascha-karnatz](https://github.com/sascha-karnatz))
81
+ - Fix taggable uniqueness in tags admin table [#2761](https://github.com/AlchemyCMS/alchemy_cms/pull/2761) ([tvdeyen](https://github.com/tvdeyen))
82
+ - Fix datepicker in resource forms [#2760](https://github.com/AlchemyCMS/alchemy_cms/pull/2760) ([tvdeyen](https://github.com/tvdeyen))
83
+ - [js] Update all development Yarn dependencies (2024-02-29) [#2759](https://github.com/AlchemyCMS/alchemy_cms/pull/2759) ([depfu](https://github.com/apps/depfu))
84
+ - CI: Disable brakeman analysis for codeclimate [#2758](https://github.com/AlchemyCMS/alchemy_cms/pull/2758) ([tvdeyen](https://github.com/tvdeyen))
85
+ - CI: Fix backporting [#2755](https://github.com/AlchemyCMS/alchemy_cms/pull/2755) ([tvdeyen](https://github.com/tvdeyen))
86
+ - Fix order of elements after Page copy [#2752](https://github.com/AlchemyCMS/alchemy_cms/pull/2752) ([tvdeyen](https://github.com/tvdeyen))
87
+ - Fix sortable elements [#2750](https://github.com/AlchemyCMS/alchemy_cms/pull/2750) ([tvdeyen](https://github.com/tvdeyen))
88
+ - Use svg remixicons [#2749](https://github.com/AlchemyCMS/alchemy_cms/pull/2749) ([tvdeyen](https://github.com/tvdeyen))
89
+ - Transform the tag selector into a web component [#2748](https://github.com/AlchemyCMS/alchemy_cms/pull/2748) ([sascha-karnatz](https://github.com/sascha-karnatz))
90
+ - Allow turbo v2.0.x [#2747](https://github.com/AlchemyCMS/alchemy_cms/pull/2747) ([sascha-karnatz](https://github.com/sascha-karnatz))
91
+ - Fix svg thumbnail size [#2741](https://github.com/AlchemyCMS/alchemy_cms/pull/2741) ([tvdeyen](https://github.com/tvdeyen))
92
+ - [js] Update @shoelace-style/shoelace 2.13.1 → 2.14.0 (minor) [#2739](https://github.com/AlchemyCMS/alchemy_cms/pull/2739) ([depfu](https://github.com/apps/depfu))
93
+ - Remove Alchemy.FileProgress file [#2738](https://github.com/AlchemyCMS/alchemy_cms/pull/2738) ([tvdeyen](https://github.com/tvdeyen))
94
+ - Fix tags view for missing taggables [#2735](https://github.com/AlchemyCMS/alchemy_cms/pull/2735) ([tvdeyen](https://github.com/tvdeyen))
95
+ - Fix two minor translations [#2734](https://github.com/AlchemyCMS/alchemy_cms/pull/2734) ([sascha-karnatz](https://github.com/sascha-karnatz))
96
+ - fix(CI/Build): Use alchemy bot PAT to checkout code [#2731](https://github.com/AlchemyCMS/alchemy_cms/pull/2731) ([tvdeyen](https://github.com/tvdeyen))
97
+ - Remove string_extension.coffee [#2730](https://github.com/AlchemyCMS/alchemy_cms/pull/2730) ([tvdeyen](https://github.com/tvdeyen))
98
+ - Fix overlay picture grid [#2728](https://github.com/AlchemyCMS/alchemy_cms/pull/2728) ([sascha-karnatz](https://github.com/sascha-karnatz))
99
+ - [js] Update tinymce 6.8.2 → 6.8.3 (patch) [#2727](https://github.com/AlchemyCMS/alchemy_cms/pull/2727) ([depfu](https://github.com/apps/depfu))
100
+ - [ruby - main] Update dotenv → 3.0.0 (unknown) [#2726](https://github.com/AlchemyCMS/alchemy_cms/pull/2726) ([depfu](https://github.com/apps/depfu))
101
+ - Update backport action to v9.3.1 [#2724](https://github.com/AlchemyCMS/alchemy_cms/pull/2724) ([tvdeyen](https://github.com/tvdeyen))
102
+ - Sort the element Select List alphabetically [#2722](https://github.com/AlchemyCMS/alchemy_cms/pull/2722) ([kulturbande](https://github.com/kulturbande))
103
+ - Restrict turbo-rails version [#2720](https://github.com/AlchemyCMS/alchemy_cms/pull/2720) ([sascha-karnatz](https://github.com/sascha-karnatz))
104
+ - Harden edit elements feature spec [#2718](https://github.com/AlchemyCMS/alchemy_cms/pull/2718) ([tvdeyen](https://github.com/tvdeyen))
105
+ - Add picture description [#2717](https://github.com/AlchemyCMS/alchemy_cms/pull/2717) ([sascha-karnatz](https://github.com/sascha-karnatz))
106
+ - [js] Update all development Yarn dependencies (2024-02-20) [#2716](https://github.com/AlchemyCMS/alchemy_cms/pull/2716) ([depfu](https://github.com/apps/depfu))
107
+ - Fix ActionNotFound in PictureController [#2714](https://github.com/AlchemyCMS/alchemy_cms/pull/2714) ([kulturbande](https://github.com/kulturbande))
108
+ - Update README.md [#2713](https://github.com/AlchemyCMS/alchemy_cms/pull/2713) ([kulturbande](https://github.com/kulturbande))
109
+ - Use Rails' CurrentAttributes to store globals [#2701](https://github.com/AlchemyCMS/alchemy_cms/pull/2701) ([tvdeyen](https://github.com/tvdeyen))
110
+ - Add nodes to page dialog [#2699](https://github.com/AlchemyCMS/alchemy_cms/pull/2699) ([sascha-karnatz](https://github.com/sascha-karnatz))
111
+ - Fixes language switching to default language [#2689](https://github.com/AlchemyCMS/alchemy_cms/pull/2689) ([robinboening](https://github.com/robinboening))
14
112
 
15
113
  ## 7.1.7 (2024-04-12)
16
114
 
@@ -197,6 +295,29 @@
197
295
  - Convert Dirty from Coffeescript to Javascript [#2510](https://github.com/AlchemyCMS/alchemy_cms/pull/2510) ([sascha-karnatz](https://github.com/sascha-karnatz))
198
296
  - Convert buttons.js.coffee to buttons.js [#2509](https://github.com/AlchemyCMS/alchemy_cms/pull/2509) ([sascha-karnatz](https://github.com/sascha-karnatz))
199
297
 
298
+ ## 7.0.12 (2024-04-12)
299
+
300
+ - [7.0-stable] Fix Ingredient Boolean View [#2837](https://github.com/AlchemyCMS/alchemy_cms/pull/2837) ([alchemycms-bot](https://github.com/alchemycms-bot))
301
+ - [7.0-stable] Nullify Ingredients::Page on Page destroy [#2830](https://github.com/AlchemyCMS/alchemy_cms/pull/2830) ([alchemycms-bot](https://github.com/alchemycms-bot))
302
+ - [7.0-stable] Fix module error [#2821](https://github.com/AlchemyCMS/alchemy_cms/pull/2821) ([alchemycms-bot](https://github.com/alchemycms-bot))
303
+ - [7.0-stable] Mark ingredient output as html_safe [#2781](https://github.com/AlchemyCMS/alchemy_cms/pull/2781) ([alchemycms-bot](https://github.com/alchemycms-bot))
304
+
305
+ ## 7.0.11 (2024-03-05)
306
+
307
+ - [7.0-stable] Do not include timezone in datepickers only displaying date [#2769](https://github.com/AlchemyCMS/alchemy_cms/pull/2769) ([tvdeyen](https://github.com/tvdeyen))
308
+
309
+ ## 7.0.10 (2024-02-29)
310
+
311
+ - [7.0-stable] Fix taggable uniqueness in tags admin table [#2763](https://github.com/AlchemyCMS/alchemy_cms/pull/2763) ([alchemycms-bot](https://github.com/alchemycms-bot))
312
+
313
+ ## 7.0.9 (2024-02-27)
314
+
315
+ - [7.0] Fix tags view for missing taggables [#2757](https://github.com/AlchemyCMS/alchemy_cms/pull/2757) ([tvdeyen](https://github.com/tvdeyen))
316
+ - [7.0-stable] Merge pull request #2752 from tvdeyen/fix-copy-elements-order [#2753](https://github.com/AlchemyCMS/alchemy_cms/pull/2753) ([alchemycms-bot](https://github.com/alchemycms-bot))
317
+ - [7.0-stable] Merge pull request #2689 from robinboening/fix_switching_to_default_language [#2745](https://github.com/AlchemyCMS/alchemy_cms/pull/2745) ([alchemycms-bot](https://github.com/alchemycms-bot))
318
+ - [7.0-stable] Merge pull request #2720 from sascha-karnatz/restrict-turbo-rails-version [#2725](https://github.com/AlchemyCMS/alchemy_cms/pull/2725) ([alchemycms-bot](https://github.com/alchemycms-bot))
319
+ - [7.0-stable] Merge pull request #2665 from tvdeyen/resource-filter-fixes [#2668](https://github.com/AlchemyCMS/alchemy_cms/pull/2668) ([alchemycms-bot](https://github.com/alchemycms-bot))
320
+
200
321
  ## 7.0.8 (2023-12-28)
201
322
 
202
323
  - [7.0-stable] Merge pull request #2658 from tvdeyen/fix-contactform-mailer [#2660](https://github.com/AlchemyCMS/alchemy_cms/pull/2660) ([alchemycms-bot](https://github.com/alchemycms-bot))
data/Gemfile CHANGED
@@ -23,6 +23,7 @@ group :development, :test do
23
23
  gem "standard", "~> 1.25", require: false
24
24
 
25
25
  if ENV["GITHUB_ACTIONS"]
26
+ gem "simplecov-cobertura", "~> 2.1"
26
27
  # Necessary because GH Actions gem cache does not have this "Bundled with Ruby" gem installed
27
28
  gem "rexml", "~> 3.2.4"
28
29
  gem "sassc", "~> 2.4.0" # https://github.com/sass/sassc-ruby/issues/146
@@ -40,11 +41,10 @@ group :development, :test do
40
41
  gem "pry-byebug"
41
42
  gem "listen"
42
43
  gem "localeapp", "~> 3.0", require: false
43
- gem "dotenv", "~> 2.2"
44
+ gem "dotenv", "~> 3.0"
44
45
  gem "github_fast_changelog", require: false
45
46
  gem "active_record_query_trace", require: false
46
47
  gem "rack-mini-profiler", require: false
47
- gem "rufo", require: false
48
48
  gem "brakeman", require: false
49
49
  end
50
50
  end
@@ -59,5 +59,3 @@ end
59
59
  gem "web-console", "~> 4.2", group: :development
60
60
 
61
61
  gem "rails_live_reload", "~> 0.3.5"
62
-
63
- gem "gem-release", "~> 2.2"
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016, magic labs GmbH, Hamburg Germany
1
+ Copyright (c) Blish GmbH, Hamburg Germany
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
data/README.md CHANGED
@@ -4,8 +4,7 @@
4
4
  [![Brakeman Scan](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/brakeman-analysis.yml/badge.svg)](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/brakeman-analysis.yml)
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](https://badge.fury.io/rb/alchemy_cms)
7
- [![Maintainability](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/maintainability)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/maintainability)
8
- [![Test Coverage](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/test_coverage)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/test_coverage)
7
+ [![codecov](https://codecov.io/gh/AlchemyCMS/alchemy_cms/graph/badge.svg?token=uUHQGfB2xe)](https://codecov.io/gh/AlchemyCMS/alchemy_cms)
9
8
  [![Lint](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/lint.yml/badge.svg)](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/lint.yml)
10
9
  [![Depfu](https://badges.depfu.com/badges/ebe56d2dd7b7044a8ae700cc81212a8e/overview.svg)](https://depfu.com/github/AlchemyCMS/alchemy_cms?project_id=4600)
11
10
 
@@ -166,7 +165,7 @@ def alchemy_roles
166
165
  end
167
166
  ```
168
167
 
169
- Please follow [this guide](http://guides.alchemy-cms.com/stable/custom_authentication.html) for further instructions on how to customize your user class even more.
168
+ Please follow [this guide](https://guides.alchemy-cms.com/how_to_add_custom_authentication.html) for further instructions on how to customize your user class even more.
170
169
 
171
170
  #### 4. Install Alchemy into your app:
172
171
 
@@ -371,7 +370,7 @@ $ bundle exec rake release
371
370
  * Read the guidelines: https://guides.alchemy-cms.com.
372
371
  * Read the documentation: https://www.rubydoc.info/github/AlchemyCMS/alchemy_cms
373
372
  * If you think you found a bug please use the [issue tracker on Github](https://github.com/AlchemyCMS/alchemy_cms/issues).
374
- * For questions about general usage please use [Stack Overflow](http://stackoverflow.com/questions/tagged/alchemy-cms) or the [Slack](https://slackin.alchemy-cms.com).
373
+ * For questions about general usage please use [Stack Overflow](http://stackoverflow.com/questions/tagged/alchemy-cms) or the [Slack](https://join.slack.com/t/alchemy-cms/shared_invite/zt-2ir32b4ph-L3EVS0FiMiWKx7omNNbeyw).
375
374
  * New features should be discussed on our [Trello Board](https://trello.com/alchemycms).
376
375
 
377
376
  **PLEASE** don't use the Github issues for feature requests. If you want to contribute to Alchemy please [read the contribution guidelines](CONTRIBUTING.md) before doing so.
@@ -384,8 +383,8 @@ $ bundle exec rake release
384
383
  * API Documentation: <https://www.rubydoc.info/github/AlchemyCMS/alchemy_cms>
385
384
  * Issue-Tracker: <https://github.com/AlchemyCMS/alchemy_cms/issues>
386
385
  * Sourcecode: <https://github.com/AlchemyCMS/alchemy_cms>
387
- * Slack: <https://slackin.alchemy-cms.com>
388
- * Twitter: <https://twitter.com/alchemy_cms>
386
+ * Slack: [https://alchemy-cms.slack.com](https://join.slack.com/t/alchemy-cms/shared_invite/zt-2ir32b4ph-L3EVS0FiMiWKx7omNNbeyw)
387
+ * Mastodon: <https://ruby.social/@alchemy_cms>
389
388
 
390
389
 
391
390
  ## ✍️ Authors
data/SECURITY.md CHANGED
@@ -6,7 +6,7 @@ We support the current major and last minor version of the previous major versio
6
6
 
7
7
  ## Reporting a Vulnerability
8
8
 
9
- Please send a preferably encrypted email to hello@alchemy-cms.com
9
+ Please send a preferably encrypted email to alchemy@blish.cloud
10
10
 
11
11
  PGP public key finger print
12
12
 
data/alchemy_cms.gemspec CHANGED
@@ -9,13 +9,13 @@ Gem::Specification.new do |gem|
9
9
  gem.version = Alchemy::VERSION
10
10
  gem.platform = Gem::Platform::RUBY
11
11
  gem.authors = ["Thomas von Deyen", "Robin Boening", "Marc Schettke", "Hendrik Mans", "Carsten Fregin", "Martin Meyerhoff"]
12
- gem.email = ["hello@alchemy-cms.com"]
12
+ gem.email = ["alchemy@blish.cloud"]
13
13
  gem.homepage = "https://alchemy-cms.com"
14
14
  gem.summary = "A powerful, userfriendly and flexible CMS for Rails"
15
15
  gem.description = "Alchemy is a powerful, userfriendly and flexible Rails CMS."
16
16
  gem.requirements << "ImageMagick (libmagick), v6.6 or greater."
17
17
  gem.required_ruby_version = ">= 3.0.0"
18
- gem.license = "BSD New"
18
+ gem.license = "BSD-3-Clause"
19
19
  gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/|yarn|^\.}) }
20
20
  gem.require_paths = ["lib"]
21
21
 
@@ -46,12 +46,11 @@ Gem::Specification.new do |gem|
46
46
  gem.add_runtime_dependency "kaminari", ["~> 1.1"]
47
47
  gem.add_runtime_dependency "originator", ["~> 3.1"]
48
48
  gem.add_runtime_dependency "ransack", [">= 1.8", "< 5.0"]
49
- gem.add_runtime_dependency "request_store", ["~> 1.2"]
50
49
  gem.add_runtime_dependency "responders", [">= 2.0", "< 4.0"]
51
50
  gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
52
51
  gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
53
52
  gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
54
- gem.add_runtime_dependency "turbo-rails", [">= 1.4", "< 2"]
53
+ gem.add_runtime_dependency "turbo-rails", [">= 1.4", "< 2.1"]
55
54
  gem.add_runtime_dependency "view_component", ["~> 3.0"]
56
55
 
57
56
  gem.add_development_dependency "capybara", ["~> 3.0"]
@@ -5,13 +5,4 @@
5
5
  //= require handlebars
6
6
  //= require alchemy/templates
7
7
  //= require alchemy/alchemy.dialog
8
- //= require alchemy/alchemy.confirm_dialog
9
- //= require alchemy/alchemy.elements_window
10
- //= require alchemy/alchemy.fixed_elements
11
- //= require alchemy/alchemy.growler
12
- //= require alchemy/alchemy.hotkeys
13
8
  //= require alchemy/alchemy.image_overlay
14
- //= require alchemy/alchemy.string_extension
15
- //= require alchemy/alchemy.link_dialog
16
- //= require alchemy/alchemy.list_filter
17
- //= require alchemy/alchemy.preview_window
@@ -136,10 +136,10 @@ class window.Alchemy.Dialog
136
136
  else
137
137
  error_header = "#{xhr.statusText} (#{xhr.status})"
138
138
  error_body = "Please check log and try again."
139
- $errorDiv = $("<div class=\"message #{error_type}\" />")
140
- $errorDiv.append Alchemy.messageIcon(error_type)
141
- $errorDiv.append "<h1>#{error_header}</h1>"
142
- $errorDiv.append "<p>#{error_body}</p>"
139
+ $errorDiv = $("<alchemy-message type=\"#{error_type}\">
140
+ <h1>#{error_header}</h1>
141
+ <p>#{error_body}</p>
142
+ </alchemy-message>")
143
143
  $container.html $errorDiv
144
144
 
145
145
  # Binds close events on:
@@ -168,7 +168,7 @@ class window.Alchemy.Dialog
168
168
  @dialog_body = $('<div class="alchemy-dialog-body" />')
169
169
  @dialog_header = $('<div class="alchemy-dialog-header" />')
170
170
  @dialog_title = $('<div class="alchemy-dialog-title" />')
171
- @close_button = $('<a class="alchemy-dialog-close"><i class="icon ri-close-line ri-fw" /></a>')
171
+ @close_button = $('<a class="alchemy-dialog-close"><alchemy-icon name="close"></alchemy-icon></a>')
172
172
  @dialog_title.text(@options.title)
173
173
  @dialog_header.append(@dialog_title)
174
174
  @dialog_header.append(@close_button)
@@ -265,13 +265,3 @@ window.Alchemy.watchForDialogs = (scope = '#alchemy') ->
265
265
  return
266
266
  event.preventDefault()
267
267
  return
268
-
269
- # Returns a Remix icon for given message type
270
- #
271
- window.Alchemy.messageIcon = (messageType) ->
272
- icon_class = switch messageType
273
- when "warning", "warn", "alert" then "alert"
274
- when "notice" then "check"
275
- when "error" then "bug"
276
- else messageType
277
- "<i class=\"icon ri-#{icon_class}-line ri-fw\" />"
@@ -17,7 +17,8 @@ class window.Alchemy.ImageOverlay extends Alchemy.Dialog
17
17
  @$previous = $('.previous-picture')
18
18
  @$next = $('.next-picture')
19
19
  @$document.keydown (e) =>
20
- return true if e.target.nodeName == 'INPUT'
20
+ if e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA'
21
+ return true
21
22
  switch e.which
22
23
  when 37
23
24
  @previous()
@@ -30,11 +31,11 @@ class window.Alchemy.ImageOverlay extends Alchemy.Dialog
30
31
  super()
31
32
 
32
33
  previous: ->
33
- @$previous.click()
34
+ @$previous[0]?.click()
34
35
  return
35
36
 
36
37
  next: ->
37
- @$next.click()
38
+ @$next[0]?.click()
38
39
  return
39
40
 
40
41
  build: ->
@@ -42,7 +43,7 @@ class window.Alchemy.ImageOverlay extends Alchemy.Dialog
42
43
  @dialog = $('<div class="alchemy-image-overlay-dialog" />')
43
44
  @dialog_body = $('<div class="alchemy-image-overlay-body" />')
44
45
  @close_button = $('<a class="alchemy-image-overlay-close">
45
- <i class="icon ri-close-line ri-fw"></i>
46
+ <alchemy-icon name="close" size="xl"></alchemy-icon>
46
47
  </a>')
47
48
  @dialog.append(@close_button)
48
49
  @dialog.append(@dialog_body)
@@ -1,3 +1,2 @@
1
- //= require alchemy/templates/page
2
1
  //= require alchemy/templates/node_folder
3
2
  //= require alchemy/templates/page_folder
@@ -1,3 +1,3 @@
1
1
  <a class="node_folder" data-record-id="{{ node.id }}" data-record-type="{{ node.type }}">
2
- <i class="icon ri-arrow-{{#if node.folded }}right{{else}}down{{/if}}-s-line ri-fw"></i>
2
+ <alchemy-icon name="arrow-{{#if node.folded }}right{{else}}down{{/if}}-s"></alchemy-icon>
3
3
  </a>
@@ -1,3 +1,3 @@
1
1
  <a class="page_folder icon_button" data-page-id="{{ page.id }}">
2
- <i class="icon ri-arrow-{{#if page.folded }}right{{else}}down{{/if}}-s-line ri-fw"></i>
2
+ <alchemy-icon name="arrow-{{#if page.folded }}right{{else}}down{{/if}}-s"></alchemy-icon>
3
3
  </a>
@@ -5,15 +5,28 @@ tinymce.PluginManager.add("alchemy_link", function (editor) {
5
5
 
6
6
  const openLinkDialog = () => {
7
7
  if (Alchemy.currentDialog()) return
8
- const linkObject = {
9
- node: getAnchor(editor.selection.getNode()),
10
- bookmark: editor.selection.getBookmark(),
11
- selection: editor.selection,
12
- editor: editor
8
+
9
+ let link = {}
10
+ const anchor = getAnchor(editor.selection.getNode())
11
+ if (anchor) {
12
+ link = {
13
+ url: anchor.href,
14
+ title: anchor.title,
15
+ target: anchor.target,
16
+ type: anchor.className
17
+ }
13
18
  }
14
- const linkDialog = new Alchemy.LinkDialog(linkObject)
19
+ const linkDialog = new Alchemy.LinkDialog(link)
15
20
  editor.focus()
16
- linkDialog.open()
21
+ linkDialog.open().then((link) => {
22
+ editor.execCommand("mceInsertLink", false, {
23
+ href: link.url,
24
+ class: link.type,
25
+ title: link.title,
26
+ target: link.target
27
+ })
28
+ editor.selection.collapse()
29
+ })
17
30
  }
18
31
 
19
32
  editor.ui.registry.addToggleButton("alchemy_link", {
@@ -5,6 +5,14 @@
5
5
  --spacing-3: 12px;
6
6
  --spacing-4: 16px;
7
7
 
8
+ // Icons
9
+ --icon-size-xs: 0.75rem;
10
+ --icon-size-sm: 0.875rem;
11
+ --icon-size-1x: 1rem;
12
+ --icon-size-md: 1.3rem;
13
+ --icon-size-xl: 1.5rem;
14
+ --icon-size-xxl: 1.6rem;
15
+
8
16
  // Font Families
9
17
  --font-mono: Menlo, Monaco, "Bitstream Vera Sans Mono", "Lucida Console",
10
18
  Terminal, monospace;
@@ -54,7 +62,11 @@
54
62
  --color-grey_medium: hsl(0deg, 0%, 78%);
55
63
  --color-grey_dark: hsl(0deg, 0%, 40%);
56
64
  --color-grey_very_dark: hsl(0deg, 0%, 20%);
65
+
66
+ --color-white: hsl(0deg, 0%, 100%);
67
+
57
68
  --color-text: hsla(224, 22.7%, 25.9%, 0.8);
69
+ --color-icon: hsla(224, 22.7%, 25.9%, 0.75);
58
70
  }
59
71
 
60
72
  .alchemy-light {
@@ -150,7 +150,9 @@
150
150
  $margin: 2 * $default-margin 0,
151
151
  $padding: $default-padding 3 * $default-padding
152
152
  ) {
153
- display: inline-block;
153
+ display: inline-flex;
154
+ align-items: center;
155
+ gap: $default-padding;
154
156
  vertical-align: middle;
155
157
  padding: $padding;
156
158
  margin: $margin;
@@ -168,11 +170,13 @@
168
170
  @include label-base($margin: $margin, $padding: $padding);
169
171
 
170
172
  &:before {
171
- content: $ri-price-tag-3-line;
172
- font-family: "remixicon";
173
- font-weight: 400;
174
- font-size: 1em;
175
- padding-right: $default-padding;
173
+ display: inline-flex;
174
+ flex-shrink: 0;
175
+ content: "";
176
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#{$icon-color}"><path d="M10.9042 2.10025L20.8037 3.51446L22.2179 13.414L13.0255 22.6063C12.635 22.9969 12.0019 22.9969 11.6113 22.6063L1.71184 12.7069C1.32131 12.3163 1.32131 11.6832 1.71184 11.2926L10.9042 2.10025ZM11.6113 4.22157L3.83316 11.9997L12.3184 20.485L20.0966 12.7069L19.036 5.28223L11.6113 4.22157ZM13.7327 10.5855C12.9516 9.80448 12.9516 8.53815 13.7327 7.7571C14.5137 6.97606 15.78 6.97606 16.5611 7.7571C17.3421 8.53815 17.3421 9.80448 16.5611 10.5855C15.78 11.3666 14.5137 11.3666 13.7327 10.5855Z"></path></svg>')
177
+ no-repeat center;
178
+ width: 1rem;
179
+ height: 1rem;
176
180
  }
177
181
 
178
182
  &:focus {
@@ -190,5 +190,8 @@ $thumbnail-background:
190
190
  linear-gradient(-45deg, transparent 75%, $medium-gray 75%) 0 0.5em/1em 1em
191
191
  $white !default;
192
192
 
193
+ $small-screen-break-point: 500px;
193
194
  $medium-screen-break-point: 700px;
194
195
  $large-screen-break-point: 1000px;
196
+ $xlarge-screen-break-point: 1440px;
197
+ $xxlarge-screen-break-point: 1680px;
@@ -3,7 +3,6 @@
3
3
  *= require_self
4
4
  */
5
5
 
6
- @import "remixicon";
7
6
  @import "alchemy/custom-properties";
8
7
  @import "alchemy/defaults";
9
8
  @import "alchemy/archive";
@@ -17,7 +16,6 @@
17
16
  @import "alchemy/dashboard";
18
17
  @import "alchemy/elements";
19
18
  @import "alchemy/errors";
20
- @import "alchemy/filter_field";
21
19
  @import "alchemy/flash";
22
20
  @import "alchemy/flatpickr";
23
21
  @import "alchemy/fonts";
@@ -29,7 +27,9 @@
29
27
  @import "alchemy/images";
30
28
  @import "alchemy/image_library";
31
29
  @import "alchemy/labels";
30
+ @import "alchemy/list_filter";
32
31
  @import "alchemy/nodes";
32
+ @import "alchemy/attachment-select";
33
33
  @import "alchemy/node-select";
34
34
  @import "alchemy/notices";
35
35
  @import "alchemy/page-select";
@@ -322,14 +322,15 @@ div#filter_bar {
322
322
 
323
323
  a {
324
324
  @extend %text-overflow;
325
- display: block;
325
+ display: flex;
326
+ justify-content: space-between;
326
327
  line-height: 25px;
327
328
  text-decoration: none;
328
329
  padding: $default-padding 2 * $default-padding;
329
330
  }
330
331
 
331
- .icon {
332
- margin-right: 4px;
332
+ alchemy-icon {
333
+ margin-right: 2 * $default-margin;
333
334
  vertical-align: bottom;
334
335
  }
335
336
  }
@@ -0,0 +1,19 @@
1
+ .attachment-select--attachment {
2
+ display: flex;
3
+ align-items: center;
4
+ height: 21px;
5
+
6
+ .icon {
7
+ margin: 0 $default-margin 0 0;
8
+
9
+ .select2-highlighted & {
10
+ fill: $white;
11
+ }
12
+ }
13
+ }
14
+
15
+ .attachment-select--attachment-name {
16
+ text-overflow: ellipsis;
17
+ overflow: hidden;
18
+ white-space: nowrap;
19
+ }