alchemy_cms 7.0.11 → 7.1.0.pre.b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (330) 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 +144 -15
  7. data/Gemfile +8 -10
  8. data/README.md +10 -8
  9. data/alchemy_cms.gemspec +4 -3
  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/labels.scss +4 -1
  44. data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
  45. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  46. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  47. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  48. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  49. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  50. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  51. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  52. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  53. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  54. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  55. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  56. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  57. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  58. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  59. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  60. data/app/components/alchemy/admin/node_select.rb +39 -0
  61. data/app/components/alchemy/admin/page_select.rb +42 -0
  62. data/app/controllers/alchemy/admin/base_controller.rb +5 -6
  63. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  64. data/app/controllers/alchemy/admin/languages_controller.rb +1 -2
  65. data/app/controllers/alchemy/base_controller.rb +4 -2
  66. data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -5
  67. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  68. data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
  69. data/app/decorators/alchemy/element_editor.rb +0 -2
  70. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  71. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  72. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  73. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  74. data/app/helpers/alchemy/base_helper.rb +47 -13
  75. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  76. data/app/javascript/alchemy_admin/components/button.js +59 -0
  77. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  78. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  79. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  80. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  81. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  82. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  83. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  84. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  85. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  86. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  87. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  88. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  89. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  90. data/app/javascript/alchemy_admin/components/select.js +12 -0
  91. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  92. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  93. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  94. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  95. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  96. data/app/javascript/alchemy_admin/dirty.js +49 -0
  97. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  98. data/app/javascript/alchemy_admin/gui.js +14 -0
  99. data/app/javascript/alchemy_admin/i18n.js +12 -8
  100. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  101. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  102. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  103. data/app/javascript/alchemy_admin/initializer.js +65 -0
  104. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  105. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  106. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  107. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  108. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  109. data/app/javascript/alchemy_admin/spinner.js +36 -0
  110. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  111. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  112. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  113. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  114. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  115. data/app/javascript/alchemy_admin.js +70 -13
  116. data/app/javascript/menubar.js +10 -0
  117. data/app/models/alchemy/attachment.rb +9 -11
  118. data/app/models/alchemy/element.rb +11 -0
  119. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  120. data/app/models/alchemy/node.rb +4 -0
  121. data/app/models/alchemy/page/page_elements.rb +2 -11
  122. data/app/models/alchemy/page/page_natures.rb +10 -2
  123. data/app/models/alchemy/page.rb +9 -49
  124. data/app/models/alchemy/picture/url.rb +1 -9
  125. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  126. data/app/services/alchemy/copy_page.rb +98 -0
  127. data/app/views/alchemy/_menubar.html.erb +17 -13
  128. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  129. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  130. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  131. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  132. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  133. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  134. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  135. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  136. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  137. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  138. data/app/views/alchemy/admin/crop.html.erb +1 -1
  139. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  140. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  141. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  142. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +21 -23
  143. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  144. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  145. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  146. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  147. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  148. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  149. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  150. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  151. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  152. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  153. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  154. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  155. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  156. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  157. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  158. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  159. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  160. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  161. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  162. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  163. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  164. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  165. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  166. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  167. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  168. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  169. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  170. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  171. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  172. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  173. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  174. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  175. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  176. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  177. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  178. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  179. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  180. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  181. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  182. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  183. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  184. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  185. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  186. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  187. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  188. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  189. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  190. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  191. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  192. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  193. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  194. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  195. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  196. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  197. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  198. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  199. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  200. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  201. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  202. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  203. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  204. data/app/views/alchemy/admin/resources/_filter.html.erb +2 -2
  205. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  206. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  207. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  208. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  209. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  210. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  211. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  212. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -18
  213. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  214. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  215. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  216. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  217. data/app/views/alchemy/base/500.html.erb +1 -1
  218. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  219. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  220. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  221. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  222. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  223. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  224. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  225. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  226. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  227. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  228. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  229. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  230. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  231. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  232. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  233. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  234. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  235. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  236. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  237. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  238. data/config/alchemy/modules.yml +30 -30
  239. data/config/importmap.rb +10 -1
  240. data/config/initializers/rails_live_reload.rb +13 -0
  241. data/config/locales/alchemy.en.yml +23 -9
  242. data/config/routes.rb +2 -1
  243. data/lib/alchemy/auth_accessors.rb +6 -1
  244. data/lib/alchemy/controller_actions.rb +17 -4
  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/resources_helper.rb +3 -3
  249. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  250. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  251. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  252. data/lib/alchemy/tinymce.rb +8 -3
  253. data/lib/alchemy/version.rb +1 -1
  254. data/package.json +14 -5
  255. data/vendor/assets/fonts/remixicon.eot +0 -0
  256. data/vendor/assets/fonts/remixicon.svg +7816 -0
  257. data/vendor/assets/fonts/remixicon.ttf +0 -0
  258. data/vendor/assets/fonts/remixicon.woff +0 -0
  259. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  260. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  261. metadata +85 -96
  262. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  263. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  264. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  265. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  266. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  267. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  268. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  269. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  270. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  271. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  272. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  273. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  274. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  275. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  276. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  277. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  278. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  279. data/app/javascript/alchemy_admin/datepicker.js +0 -40
  280. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  281. data/app/javascript/alchemy_admin/translations.js +0 -32
  282. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  283. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  284. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  285. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  286. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  287. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  288. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  289. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  290. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  291. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  292. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  293. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  294. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  295. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  296. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  297. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  298. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  299. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  300. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  301. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  302. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  303. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  304. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  305. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  306. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  307. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  308. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  309. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  310. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  311. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  312. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  313. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  314. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  315. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  316. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  317. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  318. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  319. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  320. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  321. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  322. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  323. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  324. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  325. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  326. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  327. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  328. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  329. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  330. data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: deabc73ce8b0c2eade517bfe45f105dda4163f3c783733f831c469cae17119e5
4
- data.tar.gz: cdd7d1692459a1ba8250db2742f4d7ae408ca618fa24a91e6f909499cc46b463
3
+ metadata.gz: a5fb9cc889441542df81f914d50c91feabb03990e67f92ce0092546736f1bb1d
4
+ data.tar.gz: ce0865e967f9f99d5008d43230f8e89c45287890185c502303ba8986df54e454
5
5
  SHA512:
6
- metadata.gz: 2787d3437e95a26164374d9fb70b12023f19f674972a94952731d527085ed118880aa7aa070caeb17c869ce41d9776134e059dd909b2a9952b9843c2d1fb40be
7
- data.tar.gz: e1c9daaca6fe230b6973f9cfcba6c5d4b0cfa586ddf02be80dd649db6834f481f8c92d889a7ea73b03dbc1401117e587f7f79c46594a9019a8d22b34ab1f18ff
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,20 +1,106 @@
1
1
  # Changelog
2
2
 
3
- ## 7.0.11 (2024-03-05)
4
-
5
- - [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))
6
-
7
- ## 7.0.10 (2024-02-29)
8
-
9
- - [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))
10
-
11
- ## 7.0.9 (2024-02-27)
12
-
13
- - [7.0] Fix tags view for missing taggables [#2757](https://github.com/AlchemyCMS/alchemy_cms/pull/2757) ([tvdeyen](https://github.com/tvdeyen))
14
- - [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))
15
- - [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))
16
- - [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))
17
- - [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))
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))
18
104
 
19
105
  ## 7.0.8 (2023-12-28)
20
106
 
@@ -121,6 +207,49 @@
121
207
  - Remove RSS Feed feature [#2415](https://github.com/AlchemyCMS/alchemy_cms/pull/2415) ([tvdeyen](https://github.com/tvdeyen))
122
208
  - Add searchable field to page [#2414](https://github.com/AlchemyCMS/alchemy_cms/pull/2414) ([kulturbande](https://github.com/kulturbande))
123
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
+
124
253
  ## 6.1.0 (2023-01-19)
125
254
 
126
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"]
@@ -51,11 +51,12 @@ Gem::Specification.new do |gem|
51
51
  gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
52
52
  gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
53
53
  gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
54
- gem.add_runtime_dependency "turbo-rails", [">= 1.4", "< 2"]
54
+ gem.add_runtime_dependency "turbo-rails", [">= 1.4"]
55
55
  gem.add_runtime_dependency "view_component", ["~> 3.0"]
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\" />"