alchemy_cms 7.0.7 → 7.1.0.pre.b1

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 (331) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/backport.yml +36 -0
  3. data/.github/workflows/test.yml +3 -2
  4. data/.gitignore +1 -0
  5. data/.standard.yml +1 -1
  6. data/CHANGELOG.md +150 -0
  7. data/Gemfile +8 -10
  8. data/README.md +10 -8
  9. data/alchemy_cms.gemspec +3 -2
  10. data/app/assets/config/alchemy_manifest.js +0 -1
  11. data/app/assets/javascripts/alchemy/admin.js +1 -19
  12. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -3
  13. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -34
  14. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +38 -13
  15. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
  16. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +32 -25
  17. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
  18. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +3 -5
  19. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -57
  20. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +22 -63
  21. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
  22. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +5 -4
  23. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +5 -5
  24. data/app/assets/javascripts/alchemy/templates/index.js +0 -2
  25. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  26. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  27. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +2 -2
  28. data/app/assets/stylesheets/alchemy/_custom-properties.scss +82 -0
  29. data/app/assets/stylesheets/alchemy/_mixins.scss +38 -30
  30. data/app/assets/stylesheets/alchemy/_variables.scss +12 -5
  31. data/app/assets/stylesheets/alchemy/admin.scss +3 -4
  32. data/app/assets/stylesheets/alchemy/archive.scss +107 -50
  33. data/app/assets/stylesheets/alchemy/attachments.scss +5 -4
  34. data/app/assets/stylesheets/alchemy/buttons.scss +38 -164
  35. data/app/assets/stylesheets/alchemy/dashboard.scss +31 -6
  36. data/app/assets/stylesheets/alchemy/dialogs.scss +12 -28
  37. data/app/assets/stylesheets/alchemy/elements.scss +273 -282
  38. data/app/assets/stylesheets/alchemy/flash.scss +20 -12
  39. data/app/assets/stylesheets/alchemy/forms.scss +21 -34
  40. data/app/assets/stylesheets/alchemy/frame.scss +11 -32
  41. data/app/assets/stylesheets/alchemy/hints.scss +4 -62
  42. data/app/assets/stylesheets/alchemy/image_library.scss +36 -33
  43. data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
  44. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  45. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  46. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  47. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  48. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  49. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  50. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  51. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  52. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  53. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  54. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  55. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  56. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  57. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  58. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  59. data/app/components/alchemy/admin/node_select.rb +39 -0
  60. data/app/components/alchemy/admin/page_select.rb +42 -0
  61. data/app/controllers/alchemy/admin/base_controller.rb +5 -6
  62. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  63. data/app/controllers/alchemy/admin/resources_controller.rb +5 -5
  64. data/app/controllers/alchemy/base_controller.rb +4 -2
  65. data/app/controllers/alchemy/messages_controller.rb +4 -4
  66. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  67. data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
  68. data/app/decorators/alchemy/element_editor.rb +0 -2
  69. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  70. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  71. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  72. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  73. data/app/helpers/alchemy/base_helper.rb +47 -13
  74. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  75. data/app/javascript/alchemy_admin/components/button.js +59 -0
  76. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  77. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  78. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  79. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  80. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  81. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  82. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  83. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  84. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  85. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  86. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  87. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  88. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  89. data/app/javascript/alchemy_admin/components/select.js +12 -0
  90. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  91. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  92. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  93. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  94. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  95. data/app/javascript/alchemy_admin/dirty.js +49 -0
  96. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  97. data/app/javascript/alchemy_admin/gui.js +14 -0
  98. data/app/javascript/alchemy_admin/i18n.js +12 -8
  99. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  100. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  101. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  102. data/app/javascript/alchemy_admin/initializer.js +65 -0
  103. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  104. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  105. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  106. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  107. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  108. data/app/javascript/alchemy_admin/spinner.js +36 -0
  109. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  110. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  111. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  112. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  113. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  114. data/app/javascript/alchemy_admin.js +70 -13
  115. data/app/javascript/menubar.js +10 -0
  116. data/app/models/alchemy/attachment.rb +9 -11
  117. data/app/models/alchemy/element/element_ingredients.rb +2 -2
  118. data/app/models/alchemy/element.rb +11 -0
  119. data/app/models/alchemy/ingredient.rb +3 -3
  120. data/app/models/alchemy/ingredient_validator.rb +2 -2
  121. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  122. data/app/models/alchemy/node.rb +4 -0
  123. data/app/models/alchemy/page/page_natures.rb +10 -2
  124. data/app/models/alchemy/page.rb +10 -50
  125. data/app/models/alchemy/picture/url.rb +1 -9
  126. data/app/models/concerns/alchemy/picture_thumbnails.rb +1 -1
  127. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  128. data/app/services/alchemy/copy_page.rb +98 -0
  129. data/app/views/alchemy/_menubar.html.erb +17 -13
  130. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  131. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  132. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  133. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  134. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  135. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  136. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  137. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  138. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  139. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  140. data/app/views/alchemy/admin/crop.html.erb +1 -1
  141. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  142. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  143. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  144. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +22 -24
  145. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  146. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  147. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  148. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  149. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  150. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  151. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  152. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  153. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  154. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  155. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  156. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  157. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  158. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  159. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  160. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  161. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  162. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  163. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  164. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  165. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  166. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  167. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  168. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  169. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  170. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  171. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  172. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  173. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  174. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  175. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  176. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  177. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  178. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  179. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  180. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  181. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  182. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  183. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  184. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  185. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  186. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  187. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  188. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  189. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  190. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  191. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  192. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  193. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  194. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  195. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  196. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  197. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  198. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  199. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  200. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  201. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  202. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  203. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  204. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  205. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  206. data/app/views/alchemy/admin/resources/_filter.html.erb +1 -1
  207. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  208. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  209. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  210. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  211. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  212. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  213. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -14
  214. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  215. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  216. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  217. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  218. data/app/views/alchemy/base/500.html.erb +1 -1
  219. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  220. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  221. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  222. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  223. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  224. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  225. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  226. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  227. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  228. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  229. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  230. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  231. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  232. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  233. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  234. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  235. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  236. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  237. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  238. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  239. data/config/alchemy/modules.yml +30 -30
  240. data/config/importmap.rb +10 -1
  241. data/config/initializers/rails_live_reload.rb +13 -0
  242. data/config/locales/alchemy.en.yml +23 -9
  243. data/config/routes.rb +2 -1
  244. data/lib/alchemy/auth_accessors.rb +6 -1
  245. data/lib/alchemy/dev_support/live_reload_watcher.rb +5 -0
  246. data/lib/alchemy/engine.rb +8 -2
  247. data/lib/alchemy/forms/builder.rb +18 -12
  248. data/lib/alchemy/resource.rb +2 -2
  249. data/lib/alchemy/resources_helper.rb +6 -6
  250. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  251. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  252. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  253. data/lib/alchemy/tinymce.rb +8 -3
  254. data/lib/alchemy/version.rb +1 -1
  255. data/package.json +14 -5
  256. data/vendor/assets/fonts/remixicon.eot +0 -0
  257. data/vendor/assets/fonts/remixicon.svg +7816 -0
  258. data/vendor/assets/fonts/remixicon.ttf +0 -0
  259. data/vendor/assets/fonts/remixicon.woff +0 -0
  260. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  261. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  262. metadata +85 -90
  263. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  264. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  265. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  266. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  267. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  268. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  269. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  270. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  271. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  272. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  273. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  274. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  275. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  276. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  277. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  278. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  279. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  280. data/app/javascript/alchemy_admin/datepicker.js +0 -33
  281. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  282. data/app/javascript/alchemy_admin/translations.js +0 -32
  283. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  284. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  285. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  286. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  287. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  288. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  289. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  290. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  291. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  292. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  293. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  294. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  295. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  296. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  297. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  298. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  299. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  300. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  301. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  302. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  303. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  304. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  305. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  306. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  307. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  308. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  309. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  310. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  311. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  312. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  313. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  314. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  315. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  316. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  317. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  318. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  319. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  320. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  321. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  322. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  323. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  324. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  325. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  326. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  327. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  328. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  329. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  330. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  331. data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5eb0c05455de8ab6f10985ac53819ce4c3c31648b93909f933dc57af4f056f3d
4
- data.tar.gz: 43f67834df294087fed4fc699a9a91a30988f0f08e798b02c8c87e96d5373592
3
+ metadata.gz: a5fb9cc889441542df81f914d50c91feabb03990e67f92ce0092546736f1bb1d
4
+ data.tar.gz: ce0865e967f9f99d5008d43230f8e89c45287890185c502303ba8986df54e454
5
5
  SHA512:
6
- metadata.gz: 7cc55a633a63004a971e0ac070bfa0e9b7bcce2070b06086204f50cea1619cd3d83592b6b4bb33ad044bf17525b36fc3374fb00c689a069d917242364bf424c1
7
- data.tar.gz: 33d84a1857ebc5a2cbb26fc48bb18b355a1aeb7e007cadb7151bb5e567e6148deb0f40d6c2376c144419450c3f67eedcb8f04e29b51b26cf9cc0201207d80490
6
+ metadata.gz: 9dafbbae6fa3b062d79ac7121781a864deb5d0da1bc2ba663753799b8a5a28eaf413d9a7ff9f12e3f35590d62bb08b7f7ea154f5e92a729877a1ae6c0c5428e9
7
+ data.tar.gz: 83805ccd75226f2c596f0d24594857beedfc5e6391b305e88d0e9d5727b0e70d1b7d1bb4969e2649635baa9c29dfb65e104424ff4f327ae8a4b5d9ed60a3605b
@@ -0,0 +1,36 @@
1
+ name: Backport
2
+
3
+ on:
4
+ pull_request_target:
5
+ types:
6
+ - closed
7
+ - labeled
8
+
9
+ jobs:
10
+ backport:
11
+ name: Backport
12
+ runs-on: ubuntu-latest
13
+ # Only react to merged PRs for security reasons.
14
+ # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
15
+ if: >
16
+ github.event.pull_request.merged
17
+ && (
18
+ github.event.action == 'closed'
19
+ || (
20
+ github.event.action == 'labeled'
21
+ && contains(github.event.label.name, 'backport')
22
+ )
23
+ )
24
+ steps:
25
+ - name: Backport pull request
26
+ uses: sqren/backport-github-action@v8.9.7
27
+ with:
28
+ github_token: ${{ secrets.ALCHEMY_CI_BOT_ACCESS_TOKEN }}
29
+ auto_backport_label_prefix: backport-to-
30
+ add_original_reviewers: true
31
+ - name: Info log
32
+ if: ${{ success() }}
33
+ run: cat ~/.backport/backport.info.log
34
+ - name: Debug log
35
+ if: ${{ failure() }}
36
+ run: cat ~/.backport/backport.debug.log
@@ -9,13 +9,13 @@ jobs:
9
9
  fail-fast: false
10
10
  matrix:
11
11
  rails:
12
- - "6.1"
13
12
  - "7.0"
14
13
  - "7.1"
15
14
  ruby:
16
15
  - "3.0"
17
16
  - "3.1"
18
17
  - "3.2"
18
+ - "3.3"
19
19
  database:
20
20
  - mysql
21
21
  - postgresql
@@ -27,6 +27,7 @@ jobs:
27
27
  DB_HOST: "127.0.0.1"
28
28
  RAILS_ENV: test
29
29
  RAILS_VERSION: ${{ matrix.rails }}
30
+ RUBY_YJIT_ENABLE: "1"
30
31
  services:
31
32
  postgres:
32
33
  image: postgres:11
@@ -121,4 +122,4 @@ jobs:
121
122
  - name: Install yarn
122
123
  run: yarn install
123
124
  - name: Run jest
124
- run: yarn jest
125
+ run: yarn jest --verbose
data/.gitignore CHANGED
@@ -29,3 +29,4 @@ yarn-debug.log*
29
29
  .yarn-integrity
30
30
  yarn.lock
31
31
  /spec/dummy/public/pictures
32
+ .byebug_history
data/.standard.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  parallel: true
2
+ ruby_version: 3.0
2
3
  ignore:
3
4
  - "spec/dummy/**/*"
4
- ruby_version: 3.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,112 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.1.0-b1 (2023-12-28)
4
+
5
+ - Fix messages controller [#2658](https://github.com/AlchemyCMS/alchemy_cms/pull/2658) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Test with Ruby 3.3 stable [#2657](https://github.com/AlchemyCMS/alchemy_cms/pull/2657) ([tvdeyen](https://github.com/tvdeyen))
7
+ - [ruby - main] Update shoulda-matchers → 6.0.0 (unknown) [#2656](https://github.com/AlchemyCMS/alchemy_cms/pull/2656) ([depfu](https://github.com/apps/depfu))
8
+ - Add Link button components [#2655](https://github.com/AlchemyCMS/alchemy_cms/pull/2655) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Fix humanization for add nested element button [#2654](https://github.com/AlchemyCMS/alchemy_cms/pull/2654) ([nsaloj](https://github.com/nsaloj))
10
+ - Fix many layouts glitches [#2652](https://github.com/AlchemyCMS/alchemy_cms/pull/2652) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Visually highlight droppable areas [#2651](https://github.com/AlchemyCMS/alchemy_cms/pull/2651) ([tvdeyen](https://github.com/tvdeyen))
12
+ - Fix imports of uploader [#2650](https://github.com/AlchemyCMS/alchemy_cms/pull/2650) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Use SortableJS for sortable elements [#2649](https://github.com/AlchemyCMS/alchemy_cms/pull/2649) ([tvdeyen](https://github.com/tvdeyen))
14
+ - Fix picture archive layout [#2648](https://github.com/AlchemyCMS/alchemy_cms/pull/2648) ([tvdeyen](https://github.com/tvdeyen))
15
+ - Test with Ruby 3.3.0-rc1 [#2647](https://github.com/AlchemyCMS/alchemy_cms/pull/2647) ([tvdeyen](https://github.com/tvdeyen))
16
+ - Fix Tinymce button styles [#2646](https://github.com/AlchemyCMS/alchemy_cms/pull/2646) ([tvdeyen](https://github.com/tvdeyen))
17
+ - Fix Overlay component [#2644](https://github.com/AlchemyCMS/alchemy_cms/pull/2644) ([sascha-karnatz](https://github.com/sascha-karnatz))
18
+ - Picture archive grid layout [#2642](https://github.com/AlchemyCMS/alchemy_cms/pull/2642) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Show page locked status in page status [#2641](https://github.com/AlchemyCMS/alchemy_cms/pull/2641) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Fix image usage info panel icons [#2640](https://github.com/AlchemyCMS/alchemy_cms/pull/2640) ([tvdeyen](https://github.com/tvdeyen))
21
+ - [js] Update @shoelace-style/shoelace 2.9.0 → 2.12.0 (minor) [#2639](https://github.com/AlchemyCMS/alchemy_cms/pull/2639) ([depfu](https://github.com/apps/depfu))
22
+ - [js] Update sortablejs 1.15.0 → 1.15.1 (patch) [#2638](https://github.com/AlchemyCMS/alchemy_cms/pull/2638) ([depfu](https://github.com/apps/depfu))
23
+ - Show page status inline [#2637](https://github.com/AlchemyCMS/alchemy_cms/pull/2637) ([tvdeyen](https://github.com/tvdeyen))
24
+ - Fix element states styling [#2636](https://github.com/AlchemyCMS/alchemy_cms/pull/2636) ([tvdeyen](https://github.com/tvdeyen))
25
+ - Fix menubar styling [#2634](https://github.com/AlchemyCMS/alchemy_cms/pull/2634) ([sascha-karnatz](https://github.com/sascha-karnatz))
26
+ - Use shoelace switch for Element publish toggle [#2633](https://github.com/AlchemyCMS/alchemy_cms/pull/2633) ([tvdeyen](https://github.com/tvdeyen))
27
+ - UI Refinements [#2630](https://github.com/AlchemyCMS/alchemy_cms/pull/2630) ([tvdeyen](https://github.com/tvdeyen))
28
+ - Use Shoelace tooltip for all tooltips and hint bubbles [#2629](https://github.com/AlchemyCMS/alchemy_cms/pull/2629) ([tvdeyen](https://github.com/tvdeyen))
29
+ - Add support for RailsLiveReload [#2628](https://github.com/AlchemyCMS/alchemy_cms/pull/2628) ([tvdeyen](https://github.com/tvdeyen))
30
+ - Revert "Optimize events on handler" [#2627](https://github.com/AlchemyCMS/alchemy_cms/pull/2627) ([tvdeyen](https://github.com/tvdeyen))
31
+ - Use Remix icons [#2626](https://github.com/AlchemyCMS/alchemy_cms/pull/2626) ([tvdeyen](https://github.com/tvdeyen))
32
+ - Add a new picture thumbnail style [#2625](https://github.com/AlchemyCMS/alchemy_cms/pull/2625) ([tvdeyen](https://github.com/tvdeyen))
33
+ - Add alchemy-dialog-link custom component [#2624](https://github.com/AlchemyCMS/alchemy_cms/pull/2624) ([tvdeyen](https://github.com/tvdeyen))
34
+ - Replace jquery.upload with web component [#2623](https://github.com/AlchemyCMS/alchemy_cms/pull/2623) ([sascha-karnatz](https://github.com/sascha-karnatz))
35
+ - Add alchemy-button web component [#2621](https://github.com/AlchemyCMS/alchemy_cms/pull/2621) ([tvdeyen](https://github.com/tvdeyen))
36
+ - Preload tinymce assets [#2620](https://github.com/AlchemyCMS/alchemy_cms/pull/2620) ([tvdeyen](https://github.com/tvdeyen))
37
+ - Use rails-ujs instead of jquery_ujs [#2619](https://github.com/AlchemyCMS/alchemy_cms/pull/2619) ([tvdeyen](https://github.com/tvdeyen))
38
+ - Do not seed during install [#2617](https://github.com/AlchemyCMS/alchemy_cms/pull/2617) ([kennyadsl](https://github.com/kennyadsl))
39
+ - Add a RemoteSelect base component [#2616](https://github.com/AlchemyCMS/alchemy_cms/pull/2616) ([tvdeyen](https://github.com/tvdeyen))
40
+ - Add a NodeSelect web component [#2615](https://github.com/AlchemyCMS/alchemy_cms/pull/2615) ([tvdeyen](https://github.com/tvdeyen))
41
+ - Add Element Editor Custom Element [#2614](https://github.com/AlchemyCMS/alchemy_cms/pull/2614) ([tvdeyen](https://github.com/tvdeyen))
42
+ - Prevent publishing of the same page at the same time [#2612](https://github.com/AlchemyCMS/alchemy_cms/pull/2612) ([sascha-karnatz](https://github.com/sascha-karnatz))
43
+ - Create menubar web component [#2611](https://github.com/AlchemyCMS/alchemy_cms/pull/2611) ([sascha-karnatz](https://github.com/sascha-karnatz))
44
+ - Update jQuery to v3.7 [#2610](https://github.com/AlchemyCMS/alchemy_cms/pull/2610) ([sascha-karnatz](https://github.com/sascha-karnatz))
45
+ - Add Select Web Component [#2606](https://github.com/AlchemyCMS/alchemy_cms/pull/2606) ([sascha-karnatz](https://github.com/sascha-karnatz))
46
+ - Include jquery-ui [#2601](https://github.com/AlchemyCMS/alchemy_cms/pull/2601) ([tvdeyen](https://github.com/tvdeyen))
47
+ - Fix duplicated flatpickr calendar - DOM elements [#2600](https://github.com/AlchemyCMS/alchemy_cms/pull/2600) ([sascha-karnatz](https://github.com/sascha-karnatz))
48
+ - Fix adding element into main content [#2599](https://github.com/AlchemyCMS/alchemy_cms/pull/2599) ([tvdeyen](https://github.com/tvdeyen))
49
+ - Add shoelace theme [#2597](https://github.com/AlchemyCMS/alchemy_cms/pull/2597) ([sascha-karnatz](https://github.com/sascha-karnatz))
50
+ - Use Shoelace Tab for tabs [#2595](https://github.com/AlchemyCMS/alchemy_cms/pull/2595) ([tvdeyen](https://github.com/tvdeyen))
51
+ - Fix language and site creation [#2593](https://github.com/AlchemyCMS/alchemy_cms/pull/2593) ([tvdeyen](https://github.com/tvdeyen))
52
+ - Allow Rails 7.1 [#2592](https://github.com/AlchemyCMS/alchemy_cms/pull/2592) ([tvdeyen](https://github.com/tvdeyen))
53
+ - [ruby - main] Update net-imap → 0.4.0 (unknown) [#2591](https://github.com/AlchemyCMS/alchemy_cms/pull/2591) ([depfu](https://github.com/apps/depfu))
54
+ - Test Ruby 3.3-preview2 and YJIT [#2590](https://github.com/AlchemyCMS/alchemy_cms/pull/2590) ([tvdeyen](https://github.com/tvdeyen))
55
+ - Allow to import additional admin JS modules [#2588](https://github.com/AlchemyCMS/alchemy_cms/pull/2588) ([tvdeyen](https://github.com/tvdeyen))
56
+ - Disable Turbo on the leave overlay [#2586](https://github.com/AlchemyCMS/alchemy_cms/pull/2586) ([tvdeyen](https://github.com/tvdeyen))
57
+ - Fix web component i18n issues [#2585](https://github.com/AlchemyCMS/alchemy_cms/pull/2585) ([sascha-karnatz](https://github.com/sascha-karnatz))
58
+ - Use fewer select2 [#2584](https://github.com/AlchemyCMS/alchemy_cms/pull/2584) ([tvdeyen](https://github.com/tvdeyen))
59
+ - [ruby - main] Update net-smtp → 0.4.0 (unknown) [#2583](https://github.com/AlchemyCMS/alchemy_cms/pull/2583) ([depfu](https://github.com/apps/depfu))
60
+ - Page Select Component [#2582](https://github.com/AlchemyCMS/alchemy_cms/pull/2582) ([sascha-karnatz](https://github.com/sascha-karnatz))
61
+ - [ruby - main] Update execjs → 2.9.1 (unknown) [#2579](https://github.com/AlchemyCMS/alchemy_cms/pull/2579) ([depfu](https://github.com/apps/depfu))
62
+ - Web Component Safari fixes [#2578](https://github.com/AlchemyCMS/alchemy_cms/pull/2578) ([sascha-karnatz](https://github.com/sascha-karnatz))
63
+ - [ruby - main] Update execjs → 2.9.0 (unknown) [#2577](https://github.com/AlchemyCMS/alchemy_cms/pull/2577) ([depfu](https://github.com/apps/depfu))
64
+ - Replace Spinner with web component [#2574](https://github.com/AlchemyCMS/alchemy_cms/pull/2574) ([sascha-karnatz](https://github.com/sascha-karnatz))
65
+ - Fix NonStupidDigestAssets with String whitelist [#2571](https://github.com/AlchemyCMS/alchemy_cms/pull/2571) ([tvdeyen](https://github.com/tvdeyen))
66
+ - Standardrb rules update [#2570](https://github.com/AlchemyCMS/alchemy_cms/pull/2570) ([sascha-karnatz](https://github.com/sascha-karnatz))
67
+ - Use sqren/backport for automated back porting of PRs [#2567](https://github.com/AlchemyCMS/alchemy_cms/pull/2567) ([tvdeyen](https://github.com/tvdeyen))
68
+ - Revert "Change capitalization of Ruby On Rails in README" [#2566](https://github.com/AlchemyCMS/alchemy_cms/pull/2566) ([tvdeyen](https://github.com/tvdeyen))
69
+ - Use our backport fork [#2565](https://github.com/AlchemyCMS/alchemy_cms/pull/2565) ([tvdeyen](https://github.com/tvdeyen))
70
+ - Actions: Remove labels_template [#2564](https://github.com/AlchemyCMS/alchemy_cms/pull/2564) ([tvdeyen](https://github.com/tvdeyen))
71
+ - Change capitalization of Ruby On Rails in README [#2563](https://github.com/AlchemyCMS/alchemy_cms/pull/2563) ([tvdeyen](https://github.com/tvdeyen))
72
+ - Fix format of labels_template [#2562](https://github.com/AlchemyCMS/alchemy_cms/pull/2562) ([tvdeyen](https://github.com/tvdeyen))
73
+ - Change backport templates [#2561](https://github.com/AlchemyCMS/alchemy_cms/pull/2561) ([tvdeyen](https://github.com/tvdeyen))
74
+ - Add backport GH action [#2560](https://github.com/AlchemyCMS/alchemy_cms/pull/2560) ([tvdeyen](https://github.com/tvdeyen))
75
+ - Allow redirecting to other host in site redirect [#2559](https://github.com/AlchemyCMS/alchemy_cms/pull/2559) ([tvdeyen](https://github.com/tvdeyen))
76
+ - Picture Ingredient: Fix NaN error with free height [#2556](https://github.com/AlchemyCMS/alchemy_cms/pull/2556) ([mamhoff](https://github.com/mamhoff))
77
+ - Migrate Tinymce module into a web component [#2555](https://github.com/AlchemyCMS/alchemy_cms/pull/2555) ([sascha-karnatz](https://github.com/sascha-karnatz))
78
+ - Migrate datepicker into a web component [#2554](https://github.com/AlchemyCMS/alchemy_cms/pull/2554) ([sascha-karnatz](https://github.com/sascha-karnatz))
79
+ - Convert base from Coffeescript to Javascript [#2550](https://github.com/AlchemyCMS/alchemy_cms/pull/2550) ([sascha-karnatz](https://github.com/sascha-karnatz))
80
+ - Convert CharCounter from CoffeeScript to Javascript [#2549](https://github.com/AlchemyCMS/alchemy_cms/pull/2549) ([sascha-karnatz](https://github.com/sascha-karnatz))
81
+ - Convert Tooltip from Coffeescript to Javascript [#2548](https://github.com/AlchemyCMS/alchemy_cms/pull/2548) ([sascha-karnatz](https://github.com/sascha-karnatz))
82
+ - Convert autocomplete from CoffeeScript to Javascript [#2547](https://github.com/AlchemyCMS/alchemy_cms/pull/2547) ([sascha-karnatz](https://github.com/sascha-karnatz))
83
+ - Update README [#2546](https://github.com/AlchemyCMS/alchemy_cms/pull/2546) ([sascha-karnatz](https://github.com/sascha-karnatz))
84
+ - Add web-console to local gems [#2545](https://github.com/AlchemyCMS/alchemy_cms/pull/2545) ([tvdeyen](https://github.com/tvdeyen))
85
+ - Remove IE6 CSS hacks [#2543](https://github.com/AlchemyCMS/alchemy_cms/pull/2543) ([tvdeyen](https://github.com/tvdeyen))
86
+ - Increase minimum Rails version to v7.0 [#2542](https://github.com/AlchemyCMS/alchemy_cms/pull/2542) ([sascha-karnatz](https://github.com/sascha-karnatz))
87
+ - Remove return statement in datepicker [#2540](https://github.com/AlchemyCMS/alchemy_cms/pull/2540) ([sascha-karnatz](https://github.com/sascha-karnatz))
88
+ - Improve Richtext editor view [#2539](https://github.com/AlchemyCMS/alchemy_cms/pull/2539) ([sascha-karnatz](https://github.com/sascha-karnatz))
89
+ - Revert "[7.0] Fix DOM ids and labels of ingredient editors" [#2536](https://github.com/AlchemyCMS/alchemy_cms/pull/2536) ([tvdeyen](https://github.com/tvdeyen))
90
+ - Revert "[7.0] Bugfix: Init PagePublicationFields on Pages Table" [#2535](https://github.com/AlchemyCMS/alchemy_cms/pull/2535) ([tvdeyen](https://github.com/tvdeyen))
91
+ - [7.0] Fix DOM ids and labels of ingredient editors [#2534](https://github.com/AlchemyCMS/alchemy_cms/pull/2534) ([tvdeyen](https://github.com/tvdeyen))
92
+ - [7.0] Bugfix: Init PagePublicationFields on Pages Table [#2533](https://github.com/AlchemyCMS/alchemy_cms/pull/2533) ([tvdeyen](https://github.com/tvdeyen))
93
+ - Use selenium-webdriver instead of webdrivers gem [#2529](https://github.com/AlchemyCMS/alchemy_cms/pull/2529) ([mamhoff](https://github.com/mamhoff))
94
+ - Bugfix: Init PagePublicationFields on Pages Table [#2528](https://github.com/AlchemyCMS/alchemy_cms/pull/2528) ([mamhoff](https://github.com/mamhoff))
95
+ - Fix DOM ids and labels of ingredient editors [#2526](https://github.com/AlchemyCMS/alchemy_cms/pull/2526) ([tvdeyen](https://github.com/tvdeyen))
96
+ - Increase minimum Rails version to v6.1 [#2524](https://github.com/AlchemyCMS/alchemy_cms/pull/2524) ([sascha-karnatz](https://github.com/sascha-karnatz))
97
+ - Add configurable unauthorized path [#2522](https://github.com/AlchemyCMS/alchemy_cms/pull/2522) ([gr8bit](https://github.com/gr8bit))
98
+ - Copying pages: Only add "(Copy)" if necessary [#2521](https://github.com/AlchemyCMS/alchemy_cms/pull/2521) ([mamhoff](https://github.com/mamhoff))
99
+ - [js] Update prettier → 3.0.0 (unknown) [#2520](https://github.com/AlchemyCMS/alchemy_cms/pull/2520) ([depfu](https://github.com/apps/depfu))
100
+ - Convert GUI from Coffeescript to Javascript [#2516](https://github.com/AlchemyCMS/alchemy_cms/pull/2516) ([sascha-karnatz](https://github.com/sascha-karnatz))
101
+ - convert Initializer from Coffeescript to Javascript [#2513](https://github.com/AlchemyCMS/alchemy_cms/pull/2513) ([sascha-karnatz](https://github.com/sascha-karnatz))
102
+ - Convert Dirty from Coffeescript to Javascript [#2510](https://github.com/AlchemyCMS/alchemy_cms/pull/2510) ([sascha-karnatz](https://github.com/sascha-karnatz))
103
+ - Convert buttons.js.coffee to buttons.js [#2509](https://github.com/AlchemyCMS/alchemy_cms/pull/2509) ([sascha-karnatz](https://github.com/sascha-karnatz))
104
+
105
+ ## 7.0.8 (2023-12-28)
106
+
107
+ - [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))
108
+ - [7.0] Fix humanization for add nested element button [#2659](https://github.com/AlchemyCMS/alchemy_cms/pull/2659) ([tvdeyen](https://github.com/tvdeyen))
109
+
3
110
  ## 7.0.7 (2023-11-28)
4
111
 
5
112
  - [7.0] Disable Turbolinks on menubar [#2622](https://github.com/AlchemyCMS/alchemy_cms/pull/2622) ([tvdeyen](https://github.com/tvdeyen))
@@ -100,6 +207,49 @@
100
207
  - Remove RSS Feed feature [#2415](https://github.com/AlchemyCMS/alchemy_cms/pull/2415) ([tvdeyen](https://github.com/tvdeyen))
101
208
  - Add searchable field to page [#2414](https://github.com/AlchemyCMS/alchemy_cms/pull/2414) ([kulturbande](https://github.com/kulturbande))
102
209
 
210
+ ## 6.1.9 (2023-08-29)
211
+
212
+ - [6.1-stable] Merge pull request #2571 from tvdeyen/fix-non-stupid-digest-assets [#2573](https://github.com/AlchemyCMS/alchemy_cms/pull/2573) ([github-actions](https://github.com/apps/github-actions))
213
+ - [6.1] Show if element is using contents or ingredients [#2568](https://github.com/AlchemyCMS/alchemy_cms/pull/2568) ([tvdeyen](https://github.com/tvdeyen))
214
+
215
+ ## 6.1.8 (2023-07-31)
216
+
217
+ - [v6.1] Use selenium-webdriver instead of webdrivers gem [#2531](https://github.com/AlchemyCMS/alchemy_cms/pull/2531) ([mamhoff](https://github.com/mamhoff))
218
+ - [v6.1] Bugfix: Init PagePublicationFields on Pages Table [#2530](https://github.com/AlchemyCMS/alchemy_cms/pull/2530) ([mamhoff](https://github.com/mamhoff))
219
+
220
+ ## 6.1.7 (2023-07-07)
221
+
222
+ - [6.1] Add task(s) to visualize element and page usage [#2514](https://github.com/AlchemyCMS/alchemy_cms/pull/2514) ([tvdeyen](https://github.com/tvdeyen))
223
+
224
+ ## 6.1.6 (2023-06-30)
225
+
226
+ - [6.1] Allow to create element with warning in definition [#2508](https://github.com/AlchemyCMS/alchemy_cms/pull/2508) ([tvdeyen](https://github.com/tvdeyen))
227
+ - [6.1] Allow authors to link to all pages again [#2505](https://github.com/AlchemyCMS/alchemy_cms/pull/2505) ([tvdeyen](https://github.com/tvdeyen))
228
+ - install generator: Add option to force patched babel config [#2495](https://github.com/AlchemyCMS/alchemy_cms/pull/2495) ([tvdeyen](https://github.com/tvdeyen))
229
+ - Remove memory leak in ingredients migrator [#2493](https://github.com/AlchemyCMS/alchemy_cms/pull/2493) ([tvdeyen](https://github.com/tvdeyen))
230
+
231
+ ## 6.1.5 (2023-05-26)
232
+
233
+ - [6.1] Fix page seeder [#2482](https://github.com/AlchemyCMS/alchemy_cms/pull/2482) ([tvdeyen](https://github.com/tvdeyen))
234
+
235
+ ## 6.1.4 (2023-05-18)
236
+
237
+ - [6.1] Revert "Preload related objects in Alchemy::PagesController" [#2473](https://github.com/AlchemyCMS/alchemy_cms/pull/2473) ([tvdeyen](https://github.com/tvdeyen))
238
+
239
+ ## 6.1.3 (2023-03-29)
240
+
241
+ - Fix installer: Add seeds file if not exists [#2446](https://github.com/AlchemyCMS/alchemy_cms/pull/2446) ([tvdeyen](https://github.com/tvdeyen))
242
+ - Integrate non_stupid_digest_assets gem [#2430](https://github.com/AlchemyCMS/alchemy_cms/pull/2430) ([afdev82](https://github.com/afdev82))
243
+
244
+ ## 6.1.2 (2023-02-27)
245
+
246
+ - [6.1] Fix thumbnail writing for multi-concurrent and multi-db setups [#2434](https://github.com/AlchemyCMS/alchemy_cms/pull/2434) ([tvdeyen](https://github.com/tvdeyen))
247
+
248
+ ## 6.1.1 (2023-01-23)
249
+
250
+ - Re-introduce deleted methods [#2422](https://github.com/AlchemyCMS/alchemy_cms/pull/2422) ([tvdeyen](https://github.com/tvdeyen))
251
+ - Add searchable field to page (Alchemy 6.1) [#2420](https://github.com/AlchemyCMS/alchemy_cms/pull/2420) ([kulturbande](https://github.com/kulturbande))
252
+
103
253
  ## 6.1.0 (2023-01-19)
104
254
 
105
255
  ### Features
data/Gemfile CHANGED
@@ -15,11 +15,10 @@ if ENV["DB"] == "mysql" || ENV["DB"] == "mariadb"
15
15
  end
16
16
  gem "pg", "~> 1.0" if ENV["DB"] == "postgresql"
17
17
 
18
+ gem "alchemy_i18n", git: "https://github.com/AlchemyCMS/alchemy_i18n.git", branch: "main"
19
+
18
20
  group :development, :test do
19
- # execjs 2.8 removes deprecation warnings but also breaks a number of dependent projects.
20
- # in our case the culprit is `handlebars-assets`. The changes between 2.7.0 and 2.8.0 are
21
- # minimal, but breaking.
22
- gem "execjs", "= 2.8.1"
21
+ gem "execjs", "~> 2.9.1"
23
22
  gem "rubocop", require: false
24
23
  gem "standard", "~> 1.25", require: false
25
24
 
@@ -54,10 +53,9 @@ end
54
53
  # Necessary until https://github.com/mikel/mail/pull/1439
55
54
  # got merged and released.
56
55
  if Gem.ruby_version >= Gem::Version.new("3.1.0")
57
- if rails_version.to_s.match?(/6.1/)
58
- # Rails 6.1 needs this as well
59
- gem "net-pop", "~> 0.1.0", require: false
60
- gem "net-imap", "~> 0.3.1", require: false
61
- end
62
- gem "net-smtp", "~> 0.3.0", require: false
56
+ gem "net-smtp", "~> 0.4.0", require: false
63
57
  end
58
+
59
+ gem "web-console", "~> 4.2", group: :development
60
+
61
+ gem "rails_live_reload", "~> 0.3.5"
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Build Status](https://github.com/AlchemyCMS/alchemy_cms/workflows/CI/badge.svg?branch=main)](https://github.com/AlchemyCMS/alchemy_cms/actions)
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
- [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](http://badge.fury.io/rb/alchemy_cms)
6
+ [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](https://badge.fury.io/rb/alchemy_cms)
7
7
  [![Maintainability](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/maintainability)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/maintainability)
8
8
  [![Test Coverage](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/test_coverage)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/test_coverage)
9
9
  [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)
@@ -18,8 +18,11 @@ Alchemy is an open source CMS engine written in Ruby on Rails.
18
18
 
19
19
  Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [guidelines](https://guides.alchemy-cms.com).
20
20
 
21
- **CAUTION: This main branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (6.0-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/6.0-stable).**
21
+ **CAUTION: This main branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (7.0-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/7.0-stable).**
22
22
 
23
+ ## 🏆 Main sponsor
24
+
25
+ [![BLISH Logo](https://blish.cloud/BLISH_Logo.svg)](https://blish.cloud)
23
26
 
24
27
  ## ✅ Features
25
28
 
@@ -41,19 +44,17 @@ Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [gu
41
44
 
42
45
  ## 🎮 Demo
43
46
 
44
- Deploy your own free demo on Heroku
45
-
46
- [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/AlchemyCMS/alchemy-demo)
47
-
48
- or visit the existing demo at https://alchemy-demo.herokuapp.com
47
+ Visit the existing demo at https://alchemy-demo.fly.dev/
49
48
 
50
49
  - Login: `demo`
51
50
  - Password: `demo123`
52
51
 
53
52
  ## 🚂 Rails Version
54
53
 
55
- **This version of AlchemyCMS runs with Rails 7.0, 6.1 and 6.0**
54
+ **This version of AlchemyCMS runs with Rails 7.0**
56
55
 
56
+ * For a Rails 6.1 compatible version use the [`7.0-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/7.0-stable).
57
+ * For a Rails 6.0 compatible version use the [`6.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/6.1-stable).
57
58
  * For a Rails 5.2 compatible version use the [`5.3-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/5.3-stable).
58
59
  * For a Rails 5.0 or 5.1 compatible version use the [`4.5-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/4.5-stable).
59
60
  * For a Rails 4.2 compatible version use the [`3.6-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.6-stable).
@@ -146,6 +147,7 @@ Alchemy.signup_path = '/your/signup/path' # Defaults to '/signup'
146
147
  Alchemy.login_path = '/your/login/path' # Defaults to '/login'
147
148
  Alchemy.logout_path = '/your/logout/path' # Defaults to '/logout'
148
149
  Alchemy.logout_method = 'http_verb_for_logout' # Defaults to 'delete'
150
+ Alchemy.unauthorized_path = '/some/public/page' # Defaults to '/'
149
151
  ```
150
152
 
151
153
  The only thing Alchemy needs to know from your user class is the `alchemy_roles` method.
data/alchemy_cms.gemspec CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |gem|
29
29
  activesupport
30
30
  railties
31
31
  ].each do |rails_gem|
32
- gem.add_runtime_dependency rails_gem, [">= 6.1", "< 7.2"]
32
+ gem.add_runtime_dependency rails_gem, [">= 7.0", "< 7.2"]
33
33
  end
34
34
 
35
35
  gem.add_runtime_dependency "active_model_serializers", ["~> 0.10.14"]
@@ -56,6 +56,7 @@ Gem::Specification.new do |gem|
56
56
 
57
57
  gem.add_development_dependency "capybara", ["~> 3.0"]
58
58
  gem.add_development_dependency "capybara-screenshot", ["~> 1.0"]
59
+ gem.add_development_dependency "capybara-shadowdom", ["~> 0.3"]
59
60
  gem.add_development_dependency "factory_bot_rails", ["~> 6.0"]
60
61
  gem.add_development_dependency "puma", ["~> 6.0"]
61
62
  gem.add_development_dependency "rails-controller-testing", ["~> 1.0"]
@@ -64,7 +65,7 @@ Gem::Specification.new do |gem|
64
65
  gem.add_development_dependency "simplecov", ["~> 0.20"]
65
66
  gem.add_development_dependency "selenium-webdriver", ["~> 4.10"]
66
67
  gem.add_development_dependency "webmock", ["~> 3.3"]
67
- gem.add_development_dependency "shoulda-matchers", ["~> 5.0"]
68
+ gem.add_development_dependency "shoulda-matchers", ["~> 6.0"]
68
69
  gem.add_development_dependency "timecop", ["~> 0.9"]
69
70
 
70
71
  gem.post_install_message = <<~MSG
@@ -2,7 +2,6 @@
2
2
  //= link alchemy/admin/all.js
3
3
  //= link alchemy/preview.js
4
4
  //= link alchemy/menubar.css
5
- //= link alchemy/menubar.js
6
5
  //= link alchemy/print.css
7
6
  //= link alchemy/welcome.css
8
7
  //= link tinymce/plugins/alchemy_link/plugin.min.js
@@ -1,10 +1,6 @@
1
1
  // Alchemy CMS Sprockets Manifest
2
2
  // ------------------------------
3
- //= require jquery2
4
- //= require jquery_ujs
5
- //= require jquery-ui/widgets/draggable
6
- //= require jquery-ui/widgets/sortable
7
- //= require jquery-ui/widgets/tabs
3
+ //= require jquery3
8
4
  //= require tinymce/tinymce.min
9
5
  //= require_tree ../../../../vendor/assets/javascripts/jquery_plugins/
10
6
  //= require clipboard.min
@@ -12,28 +8,14 @@
12
8
  //= require requestAnimationFrame
13
9
  //= require handlebars
14
10
  //= require alchemy/templates
15
- //= require alchemy/alchemy.base
16
- //= require alchemy/alchemy.autocomplete
17
- //= require alchemy/alchemy.buttons
18
11
  //= require alchemy/alchemy.dialog
19
- //= require alchemy/alchemy.char_counter
20
12
  //= require alchemy/alchemy.confirm_dialog
21
- //= require alchemy/alchemy.dirty
22
- //= require alchemy/alchemy.dragndrop
23
- //= require alchemy/alchemy.element_editors
24
13
  //= require alchemy/alchemy.elements_window
25
14
  //= require alchemy/alchemy.fixed_elements
26
15
  //= require alchemy/alchemy.growler
27
- //= require alchemy/alchemy.gui
28
16
  //= require alchemy/alchemy.hotkeys
29
17
  //= require alchemy/alchemy.image_overlay
30
18
  //= require alchemy/alchemy.string_extension
31
19
  //= require alchemy/alchemy.link_dialog
32
20
  //= require alchemy/alchemy.list_filter
33
- //= require alchemy/alchemy.initializer
34
- //= require alchemy/alchemy.uploader
35
21
  //= require alchemy/alchemy.preview_window
36
- //= require alchemy/alchemy.spinner
37
- //= require alchemy/alchemy.tooltips
38
- //= require alchemy/page_select
39
- //= require alchemy/node_select
@@ -29,11 +29,10 @@ class window.Alchemy.ConfirmDialog extends Alchemy.Dialog
29
29
 
30
30
  bind_buttons: ->
31
31
  @cancel_button.focus()
32
- @cancel_button.click =>
32
+ @cancel_button.on "click", =>
33
33
  @close()
34
- Alchemy.Buttons.enable()
35
34
  false
36
- @ok_button.click =>
35
+ @ok_button.on "click", =>
37
36
  @close()
38
37
  @options.on_ok()
39
38
  false
@@ -9,7 +9,6 @@ class window.Alchemy.Dialog
9
9
  title: ''
10
10
  modal: true
11
11
  overflow: 'visible'
12
- draggable: true
13
12
  ready: ->
14
13
  closed: ->
15
14
 
@@ -35,11 +34,6 @@ class window.Alchemy.Dialog
35
34
  window.requestAnimationFrame =>
36
35
  @dialog_container.addClass('open')
37
36
  @overlay.addClass('open') if @overlay?
38
- if @options.draggable
39
- @dialog.draggable
40
- iframeFix: true
41
- handle: '.alchemy-dialog-title'
42
- containment: 'parent'
43
37
  @$body.addClass('prevent-scrolling')
44
38
  Alchemy.currentDialogs.push(this)
45
39
  @load()
@@ -53,7 +47,6 @@ class window.Alchemy.Dialog
53
47
  @overlay.removeClass('open') if @overlay?
54
48
  @$document.on 'webkitTransitionEnd transitionend oTransitionEnd', =>
55
49
  @$document.off 'webkitTransitionEnd transitionend oTransitionEnd'
56
- Alchemy.Tinymce.removeFrom $('.tinymce', @dialog_body)
57
50
  @dialog_container.remove()
58
51
  @overlay.remove() if @overlay?
59
52
  @$body.removeClass('prevent-scrolling')
@@ -105,26 +98,25 @@ class window.Alchemy.Dialog
105
98
  # Initializes the Dialog body
106
99
  init: ->
107
100
  Alchemy.GUI.init(@dialog_body)
108
- Alchemy.Tinymce.initWith
109
- selector: ".alchemy-dialog-body textarea.tinymce",
110
- width: '65%'
111
- $('#overlay_tabs', @dialog_body).tabs()
112
101
  @watch_remote_forms()
113
102
 
114
103
  # Watches ajax requests inside of dialog body and replaces the content accordingly
115
104
  watch_remote_forms: ->
116
105
  form = $('[data-remote="true"]', @dialog_body)
117
- form.bind "ajax:complete", (e, xhr, status) =>
106
+ form.bind "ajax:success", (event) =>
107
+ xhr = event.detail[2]
118
108
  content_type = xhr.getResponseHeader('Content-Type')
119
- Alchemy.Buttons.enable(@dialog_body)
120
- if status == 'success'
121
- if content_type.match(/javascript/)
122
- return
123
- else
124
- @dialog_body.html(xhr.responseText)
125
- @init()
109
+ if content_type.match(/javascript/)
110
+ return
126
111
  else
127
- @show_error(xhr, status)
112
+ @dialog_body.html(xhr.responseText)
113
+ @init()
114
+ return
115
+ form.bind "ajax:error", (event, b, c) =>
116
+ statusText = event.detail[1]
117
+ xhr = event.detail[2]
118
+ @show_error(xhr, statusText)
119
+ return
128
120
 
129
121
  # Displays an error message
130
122
  show_error: (xhr, status_message, $container = @dialog_body) ->
@@ -155,10 +147,10 @@ class window.Alchemy.Dialog
155
147
  # - Overlay (if the Dialog is a modal)
156
148
  # - ESC Key
157
149
  bind_close_events: ->
158
- @close_button.click =>
150
+ @close_button.on "click", =>
159
151
  @close()
160
152
  false
161
- @dialog_container.addClass('closable').click (e) =>
153
+ @dialog_container.addClass('closable').on "click", (e) =>
162
154
  return true if e.target != @dialog_container.get(0)
163
155
  @close()
164
156
  false
@@ -176,7 +168,7 @@ class window.Alchemy.Dialog
176
168
  @dialog_body = $('<div class="alchemy-dialog-body" />')
177
169
  @dialog_header = $('<div class="alchemy-dialog-header" />')
178
170
  @dialog_title = $('<div class="alchemy-dialog-title" />')
179
- @close_button = $('<a class="alchemy-dialog-close"><i class="icon fas fa-times fa-fw fa-xs"/></a>')
171
+ @close_button = $('<a class="alchemy-dialog-close"><i class="icon ri-close-line ri-fw" /></a>')
180
172
  @dialog_title.text(@options.title)
181
173
  @dialog_header.append(@dialog_title)
182
174
  @dialog_header.append(@close_button)
@@ -246,7 +238,7 @@ window.Alchemy.openDialog = (url, options) ->
246
238
 
247
239
  # Watches elements for Alchemy Dialogs
248
240
  #
249
- # Links having a data-alchemy-dialog or data-alchemy-confirm-delete
241
+ # Links having a data-alchemy-confirm-delete
250
242
  # and input/buttons having a data-alchemy-confirm attribute get watched.
251
243
  #
252
244
  # You can pass a scope so that only elements inside this scope are queried.
@@ -256,13 +248,6 @@ window.Alchemy.openDialog = (url, options) ->
256
248
  # See Alchemy.Dialog for further options you can add to the data attribute
257
249
  #
258
250
  window.Alchemy.watchForDialogs = (scope = '#alchemy') ->
259
- $(scope).on 'click', '[data-alchemy-dialog]:not(.disabled)', (event) ->
260
- $this = $(this)
261
- url = $this.attr('href')
262
- options = $this.data('alchemy-dialog')
263
- Alchemy.openDialog(url, options)
264
- event.preventDefault()
265
- return
266
251
  $(scope).on 'click', '[data-alchemy-confirm-delete]', (event) ->
267
252
  $this = $(this)
268
253
  options = $this.data('alchemy-confirm-delete')
@@ -281,12 +266,12 @@ window.Alchemy.watchForDialogs = (scope = '#alchemy') ->
281
266
  event.preventDefault()
282
267
  return
283
268
 
284
- # Returns a FontAwesome icon for given message type
269
+ # Returns a Remix icon for given message type
285
270
  #
286
271
  window.Alchemy.messageIcon = (messageType) ->
287
272
  icon_class = switch messageType
288
- when "warning", "warn", "alert" then "exclamation"
273
+ when "warning", "warn", "alert" then "alert"
289
274
  when "notice" then "check"
290
275
  when "error" then "bug"
291
276
  else messageType
292
- "<i class=\"icon fas fa-#{icon_class} fa-fw\" />"
277
+ "<i class=\"icon ri-#{icon_class}-line ri-fw\" />"