alchemy_cms 4.6.6 → 5.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +33 -1
  3. data/.github/workflows/stale.yml +1 -1
  4. data/.gitignore +20 -2
  5. data/.hound.yml +2 -1
  6. data/.prettierrc +6 -0
  7. data/.rubocop.yml +31 -10
  8. data/CHANGELOG.md +89 -27
  9. data/Gemfile +24 -22
  10. data/README.md +31 -19
  11. data/Rakefile +10 -8
  12. data/alchemy_cms.gemspec +6 -5
  13. data/app/assets/javascripts/alchemy/admin.js +1 -5
  14. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +2 -1
  15. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -2
  16. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +17 -17
  17. data/app/assets/javascripts/alchemy/node_select.js +39 -0
  18. data/app/assets/javascripts/alchemy/templates/index.js +1 -0
  19. data/app/assets/javascripts/alchemy/templates/node.hbs +16 -0
  20. data/app/assets/stylesheets/alchemy/admin.scss +3 -2
  21. data/app/assets/stylesheets/alchemy/base.scss +0 -1
  22. data/app/assets/stylesheets/alchemy/elements.scss +1 -1
  23. data/app/assets/stylesheets/alchemy/forms.scss +5 -0
  24. data/app/assets/stylesheets/alchemy/node-select.scss +43 -0
  25. data/app/assets/stylesheets/alchemy/nodes.scss +1 -1
  26. data/app/assets/stylesheets/alchemy/sitemap.scss +5 -1
  27. data/app/assets/stylesheets/alchemy/tables.scss +1 -24
  28. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +3 -3
  29. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +7 -7
  30. data/app/controllers/alchemy/admin/attachments_controller.rb +8 -7
  31. data/app/controllers/alchemy/admin/base_controller.rb +13 -33
  32. data/app/controllers/alchemy/admin/clipboard_controller.rb +5 -4
  33. data/app/controllers/alchemy/admin/contents_controller.rb +1 -2
  34. data/app/controllers/alchemy/admin/dashboard_controller.rb +10 -9
  35. data/app/controllers/alchemy/admin/elements_controller.rb +20 -20
  36. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +12 -14
  37. data/app/controllers/alchemy/admin/languages_controller.rb +35 -2
  38. data/app/controllers/alchemy/admin/layoutpages_controller.rb +5 -2
  39. data/app/controllers/alchemy/admin/nodes_controller.rb +5 -4
  40. data/app/controllers/alchemy/admin/pages_controller.rb +50 -62
  41. data/app/controllers/alchemy/admin/pictures_controller.rb +16 -16
  42. data/app/controllers/alchemy/admin/resources_controller.rb +21 -13
  43. data/app/controllers/alchemy/admin/sites_controller.rb +18 -0
  44. data/app/controllers/alchemy/admin/styleguide_controller.rb +1 -0
  45. data/app/controllers/alchemy/admin/tags_controller.rb +5 -3
  46. data/app/controllers/alchemy/admin/trash_controller.rb +6 -6
  47. data/app/controllers/alchemy/api/base_controller.rb +2 -2
  48. data/app/controllers/alchemy/api/contents_controller.rb +4 -4
  49. data/app/controllers/alchemy/api/elements_controller.rb +8 -8
  50. data/app/controllers/alchemy/api/nodes_controller.rb +37 -1
  51. data/app/controllers/alchemy/api/pages_controller.rb +14 -23
  52. data/app/controllers/alchemy/attachments_controller.rb +5 -5
  53. data/app/controllers/alchemy/base_controller.rb +10 -9
  54. data/app/controllers/alchemy/messages_controller.rb +16 -23
  55. data/app/controllers/alchemy/pages_controller.rb +13 -11
  56. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +3 -2
  57. data/app/controllers/concerns/alchemy/admin/current_language.rb +23 -0
  58. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +5 -5
  59. data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +4 -4
  60. data/app/controllers/concerns/alchemy/page_redirects.rb +2 -9
  61. data/app/controllers/concerns/alchemy/site_redirects.rb +2 -2
  62. data/app/decorators/alchemy/element_editor.rb +39 -0
  63. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -6
  64. data/app/helpers/alchemy/admin/base_helper.rb +36 -35
  65. data/app/helpers/alchemy/admin/contents_helper.rb +3 -3
  66. data/app/helpers/alchemy/admin/elements_helper.rb +3 -88
  67. data/app/helpers/alchemy/admin/essences_helper.rb +8 -117
  68. data/app/helpers/alchemy/admin/form_helper.rb +1 -1
  69. data/app/helpers/alchemy/admin/navigation_helper.rb +24 -23
  70. data/app/helpers/alchemy/admin/pages_helper.rb +4 -4
  71. data/app/helpers/alchemy/admin/pictures_helper.rb +3 -3
  72. data/app/helpers/alchemy/admin/tags_helper.rb +8 -7
  73. data/app/helpers/alchemy/base_helper.rb +13 -8
  74. data/app/helpers/alchemy/elements_block_helper.rb +2 -31
  75. data/app/helpers/alchemy/elements_helper.rb +12 -58
  76. data/app/helpers/alchemy/pages_helper.rb +24 -174
  77. data/app/helpers/alchemy/url_helper.rb +2 -1
  78. data/app/mailers/alchemy/base_mailer.rb +1 -1
  79. data/app/mailers/alchemy/messages_mailer.rb +1 -1
  80. data/app/models/alchemy/attachment.rb +21 -19
  81. data/app/models/alchemy/base_record.rb +2 -5
  82. data/app/models/alchemy/content/factory.rb +24 -31
  83. data/app/models/alchemy/content.rb +33 -38
  84. data/app/models/alchemy/element/definitions.rb +4 -4
  85. data/app/models/alchemy/element/element_contents.rb +9 -6
  86. data/app/models/alchemy/element/element_essences.rb +4 -3
  87. data/app/models/alchemy/element/presenters.rb +3 -2
  88. data/app/models/alchemy/element.rb +46 -54
  89. data/app/models/alchemy/element_to_page.rb +1 -1
  90. data/app/models/alchemy/essence_boolean.rb +1 -3
  91. data/app/models/alchemy/essence_date.rb +2 -3
  92. data/app/models/alchemy/essence_file.rb +4 -4
  93. data/app/models/alchemy/essence_html.rb +1 -3
  94. data/app/models/alchemy/essence_link.rb +1 -3
  95. data/app/models/alchemy/essence_node.rb +18 -0
  96. data/app/models/alchemy/essence_page.rb +3 -16
  97. data/app/models/alchemy/essence_picture.rb +17 -16
  98. data/app/models/alchemy/essence_picture_view.rb +7 -6
  99. data/app/models/alchemy/essence_richtext.rb +1 -3
  100. data/app/models/alchemy/essence_select.rb +1 -3
  101. data/app/models/alchemy/essence_text.rb +0 -2
  102. data/app/models/alchemy/folded_page.rb +1 -0
  103. data/app/models/alchemy/language/code.rb +4 -4
  104. data/app/models/alchemy/language.rb +21 -35
  105. data/app/models/alchemy/legacy_page_url.rb +1 -1
  106. data/app/models/alchemy/message.rb +3 -3
  107. data/app/models/alchemy/node.rb +28 -5
  108. data/app/models/alchemy/page/fixed_attributes.rb +3 -2
  109. data/app/models/alchemy/page/page_elements.rb +35 -44
  110. data/app/models/alchemy/page/page_naming.rb +20 -70
  111. data/app/models/alchemy/page/page_natures.rb +7 -34
  112. data/app/models/alchemy/page/page_scopes.rb +23 -29
  113. data/app/models/alchemy/page/url_path.rb +0 -2
  114. data/app/models/alchemy/page.rb +47 -128
  115. data/app/models/alchemy/picture/transformations.rb +9 -7
  116. data/app/models/alchemy/picture/url.rb +5 -5
  117. data/app/models/alchemy/picture.rb +19 -28
  118. data/app/models/alchemy/site/layout.rb +2 -2
  119. data/app/models/alchemy/site.rb +6 -36
  120. data/app/models/concerns/alchemy/touch_elements.rb +24 -0
  121. data/app/serializers/alchemy/content_serializer.rb +0 -3
  122. data/app/serializers/alchemy/essence_boolean_serializer.rb +3 -3
  123. data/app/serializers/alchemy/essence_date_serializer.rb +3 -3
  124. data/app/serializers/alchemy/essence_file_serializer.rb +4 -2
  125. data/app/serializers/alchemy/essence_html_serializer.rb +3 -3
  126. data/app/serializers/alchemy/essence_link_serializer.rb +3 -3
  127. data/app/serializers/alchemy/essence_picture_serializer.rb +5 -4
  128. data/app/serializers/alchemy/essence_richtext_serializer.rb +3 -3
  129. data/app/serializers/alchemy/essence_select_serializer.rb +3 -3
  130. data/app/serializers/alchemy/essence_text_serializer.rb +5 -4
  131. data/app/serializers/alchemy/node_serializer.rb +2 -0
  132. data/app/serializers/alchemy/page_tree_serializer.rb +9 -13
  133. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -2
  134. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +1 -2
  135. data/app/views/alchemy/admin/attachments/_files_list.html.erb +4 -4
  136. data/app/views/alchemy/admin/contents/create.js.erb +1 -3
  137. data/app/views/alchemy/admin/elements/_element.html.erb +9 -18
  138. data/app/views/alchemy/admin/elements/create.js.erb +1 -1
  139. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  140. data/app/views/alchemy/admin/elements/index.html.erb +3 -3
  141. data/app/views/alchemy/admin/essence_files/assign.js.erb +1 -6
  142. data/app/views/alchemy/admin/essence_files/edit.html.erb +1 -1
  143. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +1 -7
  144. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  145. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +7 -7
  146. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -1
  147. data/app/views/alchemy/admin/languages/_form.html.erb +5 -5
  148. data/app/views/alchemy/admin/languages/_table.html.erb +3 -3
  149. data/app/views/alchemy/admin/languages/edit.html.erb +1 -0
  150. data/app/views/alchemy/admin/languages/index.html.erb +23 -4
  151. data/app/views/alchemy/admin/languages/new.html.erb +1 -0
  152. data/app/views/alchemy/admin/layoutpages/index.html.erb +3 -3
  153. data/app/views/alchemy/admin/nodes/_form.html.erb +18 -15
  154. data/app/views/alchemy/admin/nodes/_node.html.erb +1 -5
  155. data/app/views/alchemy/admin/nodes/index.html.erb +3 -4
  156. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +0 -8
  157. data/app/views/alchemy/admin/pages/_form.html.erb +0 -1
  158. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -0
  159. data/app/views/alchemy/admin/pages/_page.html.erb +11 -19
  160. data/app/views/alchemy/admin/pages/_page_infos.html.erb +0 -4
  161. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  162. data/app/views/alchemy/admin/pages/info.html.erb +0 -9
  163. data/app/views/alchemy/admin/pages/unlock.js.erb +13 -6
  164. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +0 -2
  165. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -5
  166. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  167. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -2
  168. data/app/views/alchemy/admin/resources/_resource.html.erb +1 -1
  169. data/app/views/alchemy/admin/resources/_table.html.erb +2 -2
  170. data/app/views/alchemy/admin/sites/_form.html.erb +8 -0
  171. data/app/views/alchemy/admin/sites/edit.html.erb +1 -0
  172. data/app/views/alchemy/admin/sites/index.html.erb +21 -9
  173. data/app/views/alchemy/admin/sites/new.html.erb +1 -0
  174. data/app/views/alchemy/admin/tags/index.html.erb +2 -2
  175. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +10 -12
  176. data/app/views/alchemy/essences/_essence_date_editor.html.erb +11 -8
  177. data/app/views/alchemy/essences/_essence_file_editor.html.erb +16 -17
  178. data/app/views/alchemy/essences/_essence_html_editor.html.erb +8 -5
  179. data/app/views/alchemy/essences/_essence_link_editor.html.erb +18 -15
  180. data/app/views/alchemy/essences/_essence_node_editor.html.erb +27 -0
  181. data/app/views/alchemy/essences/_essence_node_view.html.erb +1 -0
  182. data/app/views/alchemy/essences/_essence_page_editor.html.erb +14 -11
  183. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +22 -20
  184. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +10 -7
  185. data/app/views/alchemy/essences/_essence_select_editor.html.erb +12 -16
  186. data/app/views/alchemy/essences/_essence_text_editor.html.erb +18 -17
  187. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +6 -11
  188. data/app/views/alchemy/pages/show.rss.builder +3 -2
  189. data/app/views/layouts/alchemy/admin.html.erb +1 -0
  190. data/babel.config.js +12 -0
  191. data/bin/rails +5 -4
  192. data/config/alchemy/config.yml +15 -18
  193. data/config/brakeman.ignore +1 -1
  194. data/config/initializers/assets.rb +2 -1
  195. data/config/initializers/dragonfly.rb +2 -1
  196. data/config/initializers/mime_types.rb +1 -0
  197. data/config/initializers/mini_profiler.rb +3 -2
  198. data/config/initializers/simple_form.rb +6 -6
  199. data/config/locales/alchemy.en.yml +23 -8
  200. data/config/routes.rb +25 -24
  201. data/config/spring.rb +3 -2
  202. data/db/migrate/20200226213334_alchemy_four_point_four.rb +313 -0
  203. data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +11 -0
  204. data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +28 -0
  205. data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +8 -0
  206. data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +27 -0
  207. data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +6 -0
  208. data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +24 -0
  209. data/lib/alchemy/admin/locale.rb +3 -1
  210. data/lib/alchemy/admin/preview_url.rb +64 -0
  211. data/lib/alchemy/auth_accessors.rb +8 -7
  212. data/lib/alchemy/cache_digests/template_tracker.rb +5 -4
  213. data/lib/alchemy/config.rb +1 -5
  214. data/lib/alchemy/configuration_methods.rb +3 -1
  215. data/lib/alchemy/controller_actions.rb +6 -5
  216. data/lib/alchemy/deprecation.rb +2 -1
  217. data/lib/alchemy/elements_finder.rb +5 -5
  218. data/lib/alchemy/engine.rb +23 -8
  219. data/lib/alchemy/errors.rb +0 -7
  220. data/lib/alchemy/essence.rb +17 -16
  221. data/lib/alchemy/filetypes.rb +5 -5
  222. data/lib/alchemy/forms/builder.rb +4 -4
  223. data/lib/alchemy/hints.rb +1 -1
  224. data/lib/alchemy/i18n.rb +2 -1
  225. data/lib/alchemy/modules.rb +12 -12
  226. data/lib/alchemy/name_conversions.rb +5 -5
  227. data/lib/alchemy/on_page_layout/callbacks_runner.rb +1 -0
  228. data/lib/alchemy/page_layout.rb +15 -12
  229. data/lib/alchemy/paths.rb +1 -1
  230. data/lib/alchemy/permissions.rb +7 -6
  231. data/lib/alchemy/resource.rb +25 -17
  232. data/lib/alchemy/resources_helper.rb +12 -18
  233. data/lib/alchemy/routing_constraints.rb +1 -1
  234. data/lib/alchemy/seeder.rb +42 -14
  235. data/lib/alchemy/shell.rb +13 -10
  236. data/lib/alchemy/taggable.rb +1 -0
  237. data/lib/alchemy/tasks/tidy.rb +4 -3
  238. data/lib/alchemy/test_support/config_stubbing.rb +1 -0
  239. data/lib/alchemy/test_support/essence_shared_examples.rb +72 -72
  240. data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -5
  241. data/lib/alchemy/test_support/factories/content_factory.rb +6 -6
  242. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +7 -7
  243. data/lib/alchemy/test_support/factories/element_factory.rb +9 -9
  244. data/lib/alchemy/test_support/factories/essence_file_factory.rb +3 -3
  245. data/lib/alchemy/test_support/factories/essence_page_factory.rb +3 -3
  246. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +4 -4
  247. data/lib/alchemy/test_support/factories/essence_text_factory.rb +3 -3
  248. data/lib/alchemy/test_support/factories/language_factory.rb +16 -14
  249. data/lib/alchemy/test_support/factories/node_factory.rb +8 -8
  250. data/lib/alchemy/test_support/factories/page_factory.rb +15 -27
  251. data/lib/alchemy/test_support/factories/picture_factory.rb +5 -5
  252. data/lib/alchemy/test_support/factories/site_factory.rb +7 -6
  253. data/lib/alchemy/test_support/factories.rb +1 -1
  254. data/lib/alchemy/test_support/integration_helpers.rb +1 -0
  255. data/lib/alchemy/test_support/shared_contexts.rb +5 -4
  256. data/lib/alchemy/test_support/shared_uploader_examples.rb +4 -3
  257. data/lib/alchemy/tinymce.rb +15 -13
  258. data/lib/alchemy/upgrader/five_point_zero.rb +41 -0
  259. data/lib/alchemy/upgrader/tasks/element_views_updater.rb +4 -4
  260. data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +29 -0
  261. data/lib/alchemy/upgrader.rb +8 -7
  262. data/lib/alchemy/userstamp.rb +1 -1
  263. data/lib/alchemy/version.rb +1 -1
  264. data/lib/alchemy_cms.rb +52 -50
  265. data/lib/{rails/generators → generators}/alchemy/base.rb +5 -4
  266. data/lib/{rails/generators → generators}/alchemy/elements/elements_generator.rb +13 -9
  267. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.erb +0 -0
  268. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.haml +0 -0
  269. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.slim +0 -0
  270. data/lib/{rails/generators → generators}/alchemy/essence/essence_generator.rb +15 -13
  271. data/lib/generators/alchemy/essence/templates/editor.html.erb +17 -0
  272. data/lib/{rails/generators → generators}/alchemy/essence/templates/view.html.erb +0 -0
  273. data/lib/{rails/generators → generators}/alchemy/install/files/_article.html.erb +0 -0
  274. data/lib/{rails/generators → generators}/alchemy/install/files/_standard.html.erb +0 -0
  275. data/lib/{rails/generators → generators}/alchemy/install/files/alchemy.en.yml +0 -0
  276. data/lib/generators/alchemy/install/files/alchemy_admin.js +1 -0
  277. data/lib/{rails/generators → generators}/alchemy/install/files/all.css +0 -0
  278. data/lib/{rails/generators → generators}/alchemy/install/files/all.js +0 -0
  279. data/lib/{rails/generators → generators}/alchemy/install/files/application.html.erb +0 -0
  280. data/lib/{rails/generators → generators}/alchemy/install/files/article.scss +0 -0
  281. data/lib/generators/alchemy/install/install_generator.rb +110 -0
  282. data/lib/{rails/generators → generators}/alchemy/install/templates/dragonfly.rb.tt +0 -0
  283. data/lib/{rails/generators → generators}/alchemy/install/templates/elements.yml.tt +0 -0
  284. data/lib/{rails/generators → generators}/alchemy/install/templates/menus.yml.tt +0 -0
  285. data/lib/{rails/generators → generators}/alchemy/install/templates/page_layouts.yml.tt +0 -0
  286. data/lib/{rails/generators → generators}/alchemy/menus/menus_generator.rb +2 -2
  287. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.erb +1 -4
  288. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.haml +1 -4
  289. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.slim +1 -4
  290. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.erb +1 -1
  291. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.haml +1 -1
  292. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.slim +1 -1
  293. data/lib/{rails/generators → generators}/alchemy/module/module_generator.rb +3 -2
  294. data/lib/{rails/generators → generators}/alchemy/module/templates/ability.rb.tt +0 -0
  295. data/lib/{rails/generators → generators}/alchemy/module/templates/controller.rb.tt +0 -0
  296. data/lib/{rails/generators → generators}/alchemy/module/templates/module_config.rb.tt +0 -0
  297. data/lib/{rails/generators → generators}/alchemy/page_layouts/page_layouts_generator.rb +5 -4
  298. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.erb +0 -0
  299. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.haml +0 -0
  300. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.slim +0 -0
  301. data/lib/{rails/generators → generators}/alchemy/site_layouts/site_layouts_generator.rb +4 -2
  302. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.erb +0 -0
  303. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.haml +0 -0
  304. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.slim +0 -0
  305. data/lib/{rails/generators → generators}/alchemy/views/views_generator.rb +7 -6
  306. data/lib/kaminari/scoped_pagination_url_helper.rb +1 -0
  307. data/lib/tasks/alchemy/db.rake +3 -19
  308. data/lib/tasks/alchemy/install.rake +3 -2
  309. data/lib/tasks/alchemy/tidy.rake +9 -8
  310. data/lib/tasks/alchemy/upgrade.rake +18 -120
  311. data/package/admin.js +14 -0
  312. data/package/src/__tests__/i18n.spec.js +70 -0
  313. data/package/src/i18n.js +48 -0
  314. data/package/src/node_tree.js +72 -0
  315. data/package/src/translations.js +32 -0
  316. data/package/src/utils/__tests__/ajax.spec.js +124 -0
  317. data/package/src/utils/__tests__/events.spec.js +38 -0
  318. data/package/src/utils/ajax.js +48 -0
  319. data/package/src/utils/events.js +16 -0
  320. data/package.json +45 -0
  321. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  322. data/vendor/assets/fonts/fa-regular-400.svg +798 -358
  323. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  324. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  325. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  326. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  327. data/vendor/assets/fonts/fa-solid-900.svg +4933 -1408
  328. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  329. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  330. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  331. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +1 -2
  332. data/vendor/assets/stylesheets/fontawesome/_core.scss +5 -0
  333. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +1 -1
  334. data/vendor/assets/stylesheets/fontawesome/_icons.scss +651 -2
  335. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -1
  336. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +3 -2
  337. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +1 -1
  338. data/vendor/assets/stylesheets/fontawesome/_variables.scss +662 -9
  339. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +2 -2
  340. data/vendor/assets/stylesheets/fontawesome/regular.scss +23 -0
  341. data/vendor/assets/stylesheets/fontawesome/solid.scss +24 -0
  342. metadata +117 -96
  343. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +0 -32
  344. data/app/assets/javascripts/alchemy/alchemy.node_tree.js +0 -66
  345. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +0 -29
  346. data/app/assets/javascripts/alchemy/alchemy.utils.js +0 -45
  347. data/app/helpers/alchemy/essences_helper.rb +0 -119
  348. data/app/models/concerns/alchemy/content_touching.rb +0 -23
  349. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -15
  350. data/app/views/alchemy/admin/contents/_missing.html.erb +0 -17
  351. data/app/views/alchemy/admin/pages/_menu_fields.html.erb +0 -37
  352. data/app/views/alchemy/admin/pages/configure_external.html.erb +0 -32
  353. data/app/views/alchemy/elements/_editor_not_found.html.erb +0 -4
  354. data/app/views/alchemy/navigation/_image_link.html.erb +0 -14
  355. data/app/views/alchemy/navigation/_link.html.erb +0 -19
  356. data/app/views/alchemy/navigation/_renderer.html.erb +0 -29
  357. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -363
  358. data/db/migrate/20180227224537_migrate_tags_to_gutentag.rb +0 -41
  359. data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +0 -6
  360. data/db/migrate/20191016073858_create_alchemy_essence_pages.rb +0 -8
  361. data/db/migrate/20191029212236_create_alchemy_nodes.rb +0 -24
  362. data/db/migrate/20200226081535_add_site_id_to_alchemy_nodes.rb +0 -15
  363. data/lib/alchemy/ssl_protection.rb +0 -34
  364. data/lib/alchemy/tasks/helpers.rb +0 -81
  365. data/lib/alchemy/test_support/controller_requests.rb +0 -93
  366. data/lib/alchemy/upgrader/four_point_four.rb +0 -52
  367. data/lib/alchemy/upgrader/four_point_one.rb +0 -42
  368. data/lib/alchemy/upgrader/four_point_six.rb +0 -50
  369. data/lib/alchemy/upgrader/four_point_two.rb +0 -86
  370. data/lib/alchemy/upgrader/tasks/cells_migration.rb +0 -44
  371. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +0 -166
  372. data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +0 -32
  373. data/lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb +0 -31
  374. data/lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb +0 -27
  375. data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +0 -65
  376. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +0 -210
  377. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +0 -15
  378. data/lib/rails/generators/alchemy/install/install_generator.rb +0 -60
  379. data/lib/tasks/alchemy/convert.rake +0 -98
  380. data/vendor/assets/javascripts/sortable/Sortable.min.js +0 -2
  381. data/vendor/assets/stylesheets/fontawesome/fa-regular.scss +0 -22
  382. data/vendor/assets/stylesheets/fontawesome/fa-solid.scss +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cba5724f523be0da026405c616379badba8f6bc12dd5cd3b3ed8ce380031a580
4
- data.tar.gz: 06ceccfb73194bb322fe13a09284d890602e03ce7702e170efcde7075cb3babf
3
+ metadata.gz: a47529eb07ef956c81fe417efd5570b37a0d56e689ee3079c9bc623b91b8bc28
4
+ data.tar.gz: 9bb8aa6ca4eab610212690d3630c223269d3d6cb28224e33a9a4838fb4869c81
5
5
  SHA512:
6
- metadata.gz: 1743906a75c14ad90b5dc3ae38c9ab58fbbaf7a58b482c7a97a56b991f7f4df31af25dbef02df6ca72d2e8fdacc9f8743ecfc0b92dbdedfb15c41e1054dd6590
7
- data.tar.gz: 3e1106629ffc7dc3c41f3e186a21546a9cc3b1fd7d8fb8f5a2a4590f64498e347bb9caf176f695f98c76a9cdd32bc9d2118c43d8843ffcf0465ce846a25e8e87
6
+ metadata.gz: df610fff48f0e7a30c0f348b20c452a8ade6226a9ce6457b497d76e3cdc7269d43cfe24da082687773de1c9a692df0116475b87469e9538899bc142e7d49397e
7
+ data.tar.gz: 89281dc3a6bccd9d537adc2662143e61f023f38205a3474a1d4f6a63b40dea7374df95f7f40614aee771f14de7bec44f92afb68dfcffafb1df1028f416bb0c79
@@ -24,7 +24,6 @@ jobs:
24
24
  DB_HOST: '127.0.0.1'
25
25
  RAILS_ENV: test
26
26
  RAILS_VERSION: ${{ matrix.rails }}
27
- CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
28
27
  services:
29
28
  postgres:
30
29
  image: postgres:11
@@ -86,6 +85,14 @@ jobs:
86
85
  timeout-minutes: 10
87
86
  run: |
88
87
  bundle install --jobs 4 --retry 3 --path vendor/bundle
88
+ - name: Restore node modules cache
89
+ id: yarn-cache
90
+ uses: actions/cache@preview
91
+ with:
92
+ path: spec/dummy/node_modules
93
+ key: ${{ runner.os }}-yarn-dummy-${{ hashFiles('./package.json') }}
94
+ restore-keys: |
95
+ ${{ runner.os }}-yarn-dummy-
89
96
  - name: Prepare database
90
97
  run: |
91
98
  bundle exec rake alchemy:spec:prepare
@@ -100,3 +107,28 @@ jobs:
100
107
  with:
101
108
  name: Screenshots
102
109
  path: spec/dummy/tmp/screenshots
110
+ Jest:
111
+ runs-on: ubuntu-latest
112
+ env:
113
+ NODE_ENV: test
114
+ steps:
115
+ - uses: actions/checkout@v1
116
+ - name: Restore node modules cache
117
+ uses: actions/cache@preview
118
+ with:
119
+ path: node_modules
120
+ key: ${{ runner.os }}-yarn-${{ hashFiles('./package.json') }}
121
+ restore-keys: |
122
+ ${{ runner.os }}-yarn-
123
+ - name: Install yarn
124
+ run: yarn install
125
+ - name: Run jest
126
+ run: yarn jest
127
+ - name: Run jest & publish code coverage
128
+ uses: paambaati/codeclimate-action@v2.5.7
129
+ env:
130
+ CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
131
+ with:
132
+ coverageLocations:
133
+ ./coverage/lcov.info:lcov
134
+ coverageCommand: yarn jest --collectCoverage --coverageDirectory=coverage
@@ -13,5 +13,5 @@ jobs:
13
13
  - uses: actions/stale@v1
14
14
  with:
15
15
  repo-token: ${{ secrets.GITHUB_TOKEN }}
16
- stale-issue-message: 'This issue has not seen any activity in a long time. If the issue descriped still exists in recent versions of Alchemy, please open a new issue or preferably open a PR with a fix. Thanks for reporting.'
16
+ stale-issue-message: 'This issue has not seen any activity in a long time. If the issue described still exists in recent versions of Alchemy, please open a new issue or preferably open a PR with a fix. Thanks for reporting.'
17
17
  stale-pr-message: 'This pull request has not seen any activiy in a long time. Probably because of missing tests or a necessary rebase. Please open a new PR to latest master if you want to continue working on this. Thanks for the contribution.'
data/.gitignore CHANGED
@@ -9,9 +9,22 @@ pkg
9
9
  tmp
10
10
  log
11
11
  .sass-cache
12
- spec/dummy/uploads/
12
+ spec/dummy/.browserslistrc
13
+ spec/dummy/app/assets/stylesheets/alchemy/
14
+ spec/dummy/app/javascript/
15
+ spec/dummy/babel.config.js
16
+ spec/dummy/bin/webpack
17
+ spec/dummy/bin/webpack-dev-server
18
+ spec/dummy/config/alchemy/config.yml
19
+ spec/dummy/config/webpack/
20
+ spec/dummy/config/webpacker.yml
13
21
  spec/dummy/db/*.sqlite3*
14
- spec/dummy/public/assets
22
+ spec/dummy/package.json
23
+ spec/dummy/postcss.config.js
24
+ spec/dummy/public/assets/
25
+ spec/dummy/public/packs/
26
+ spec/dummy/public/packs-test/
27
+ spec/dummy/uploads/
15
28
  .rvmrc
16
29
  /coverage/
17
30
  *.gem
@@ -22,3 +35,8 @@ spec/dummy/public/assets
22
35
  .ruby-version
23
36
  .env
24
37
  .rspec
38
+ node_modules
39
+ yarn-error.log
40
+ yarn-debug.log*
41
+ .yarn-integrity
42
+ yarn.lock
data/.hound.yml CHANGED
@@ -1,5 +1,6 @@
1
- ruby:
1
+ rubocop:
2
2
  config_file: .rubocop.yml
3
+ version: 0.80.0
3
4
  scss:
4
5
  enabled: false
5
6
  coffeescript:
data/.prettierrc ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "semi": false,
3
+ "trailingComma": "none",
4
+ "vueIndentScriptAndStyle": true,
5
+ "arrowParens": "always"
6
+ }
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  # Relaxed.Ruby.Style
2
2
 
3
3
  AllCops:
4
+ TargetRubyVersion: 2.4
4
5
  Exclude:
5
6
  - 'bin/rspec'
6
7
  - 'vendor/**/*'
@@ -8,8 +9,7 @@ AllCops:
8
9
  - 'spec/dummy/config/**/*'
9
10
  - 'alchemy_cms.gemspec'
10
11
  - 'Rakefile'
11
-
12
- TargetRubyVersion: 2.4
12
+ - 'node_modules/**/*'
13
13
 
14
14
  # Really, rubocop?
15
15
  Bundler/OrderedGems:
@@ -22,6 +22,9 @@ Style/EmptyLiteral:
22
22
  Style/ClassVars:
23
23
  Enabled: false
24
24
 
25
+ Style/FloatDivision:
26
+ EnforcedStyle: left_coerce
27
+
25
28
  # This has been used for customization
26
29
  Style/MutableConstant:
27
30
  Enabled: false
@@ -50,6 +53,9 @@ Style/MixinUsage:
50
53
  Exclude:
51
54
  - spec/**/*
52
55
 
56
+ Layout/ArgumentAlignment:
57
+ Enabled: false
58
+
53
59
  Layout/HashAlignment:
54
60
  Enabled: false
55
61
 
@@ -69,18 +75,22 @@ Layout/ElseAlignment:
69
75
  Layout/EmptyLineAfterMagicComment:
70
76
  Enabled: false
71
77
 
78
+ Layout/EmptyLinesAroundAccessModifier:
79
+ Exclude:
80
+ - lib/alchemy/test_support/factories/*.rb
81
+
72
82
  Layout/FirstArrayElementIndentation:
73
83
  Enabled: false
74
84
 
75
85
  Layout/FirstHashElementIndentation:
76
86
  Enabled: false
77
87
 
78
- Layout/HeredocIndentation:
79
- EnforcedStyle: active_support
80
-
81
88
  Layout/IndentationWidth:
82
89
  Enabled: false
83
90
 
91
+ Layout/LineLength:
92
+ Enabled: false
93
+
84
94
  Layout/MultilineHashBraceLayout:
85
95
  Enabled: false
86
96
 
@@ -107,6 +117,9 @@ Layout/SpaceInsideParens:
107
117
  Layout/EndAlignment:
108
118
  Enabled: false
109
119
 
120
+ Layout/RescueEnsureAlignment:
121
+ Enabled: false
122
+
110
123
  Lint/SuppressedException:
111
124
  Exclude:
112
125
  - 'config/initializers/mini_profiler.rb'
@@ -208,8 +221,19 @@ Style/SpecialGlobalVars:
208
221
  StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
209
222
 
210
223
  Style/StringLiterals:
211
- Enabled: false
212
- StyleGuide: http://relaxed.ruby.style/#stylestringliterals
224
+ EnforcedStyle: double_quotes
225
+
226
+ Style/StringLiteralsInInterpolation:
227
+ EnforcedStyle: double_quotes
228
+
229
+ Style/TrailingCommaInArguments:
230
+ EnforcedStyleForMultiline: comma
231
+
232
+ Style/TrailingCommaInArrayLiteral:
233
+ EnforcedStyleForMultiline: comma
234
+
235
+ Style/TrailingCommaInHashLiteral:
236
+ EnforcedStyleForMultiline: consistent_comma
213
237
 
214
238
  Style/WhileUntilModifier:
215
239
  Enabled: false
@@ -260,9 +284,6 @@ Metrics/ModuleLength:
260
284
  Metrics/CyclomaticComplexity:
261
285
  Enabled: false
262
286
 
263
- Metrics/LineLength:
264
- Enabled: false
265
-
266
287
  Metrics/MethodLength:
267
288
  Enabled: false
268
289
 
data/CHANGELOG.md CHANGED
@@ -1,30 +1,92 @@
1
- ## 4.6.6 (2021-11-24)
2
-
3
- - Give overlay picture spec more time to load images
4
- - Stay below dragonfly 1.4
5
- - Adjust tinymce skin assets urls again
6
- - Fix userstamp spec
7
-
8
- ## 4.6.5 (2021-11-17)
9
-
10
- - Set stampable user_class_name without root identifier ([tvdeyen](https://github.com/tvdeyen))
11
-
12
- ## 4.6.4 (2021-11-15)
13
-
14
- - Use relative path for tinymce font-face ([tvdeyen](https://github.com/tvdeyen))
15
- - make the fixed element upgrader more robust ([darkswoop](https://github.com/darkswoop))
16
- - don't use existing element names when migrating from cells ([darkswoop](https://github.com/darkswoop))
17
- - enhance regexp in partial name upgrader ([darkswoop](https://github.com/darkswoop))
18
-
19
- ## 4.6.3 (2020-05-06)
20
-
21
- - Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([tvdeyen](https://github.com/tvdeyen))
22
- - Fix convert:page_trees:to_menus task [#2033](https://github.com/AlchemyCMS/alchemy_cms/pull/2033) ([afdev82](https://github.com/afdev82))
23
- - fix 4.6 upgrader tasks [#1995](https://github.com/AlchemyCMS/alchemy_cms/pull/1995) ([afdev82](https://github.com/afdev82))
24
-
25
- ## 4.6.2 (2020-09-07)
26
-
27
- - Fix tri-Boolean check in PageNaming Module [#1931](https://github.com/AlchemyCMS/alchemy_cms/pull/1931) ([mamhoff](https://github.com/mamhoff))
1
+ ## 5.0.0 (unreleased)
2
+
3
+ - Fix Page tree sorting after root page removal [#1876](https://github.com/AlchemyCMS/alchemy_cms/pull/1876) ([tvdeyen](https://github.com/tvdeyen))
4
+ - 5.0 Upgrader fixes [#1874](https://github.com/AlchemyCMS/alchemy_cms/pull/1874) ([tvdeyen](https://github.com/tvdeyen))
5
+ - Remove url_nesting config [#1872](https://github.com/AlchemyCMS/alchemy_cms/pull/1872) ([tvdeyen](https://github.com/tvdeyen))
6
+ - [ruby] Upgrade sassc to version 2.4.0 [#1871](https://github.com/AlchemyCMS/alchemy_cms/pull/1871) ([depfu](https://github.com/apps/depfu))
7
+ - fix GitHub Actions spelling [#1869](https://github.com/AlchemyCMS/alchemy_cms/pull/1869) ([alexanderadam](https://github.com/alexanderadam))
8
+ - Remove Page#visible [#1868](https://github.com/AlchemyCMS/alchemy_cms/pull/1868) ([tvdeyen](https://github.com/tvdeyen))
9
+ - 4.6 backports for master [#1867](https://github.com/AlchemyCMS/alchemy_cms/pull/1867) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Use apt update instead of apt-get in GH action [#1866](https://github.com/AlchemyCMS/alchemy_cms/pull/1866) ([tvdeyen](https://github.com/tvdeyen))
11
+ - [ruby] Upgrade rubocop to version 0.85.0 [#1863](https://github.com/AlchemyCMS/alchemy_cms/pull/1863) ([depfu](https://github.com/apps/depfu))
12
+ - Remove active_record_5_1? method [#1854](https://github.com/AlchemyCMS/alchemy_cms/pull/1854) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Use Alchemy npm package instead of hacking webpacker [#1853](https://github.com/AlchemyCMS/alchemy_cms/pull/1853) ([tvdeyen](https://github.com/tvdeyen))
14
+ - Fix node select ES5 syntax [#1851](https://github.com/AlchemyCMS/alchemy_cms/pull/1851) ([tvdeyen](https://github.com/tvdeyen))
15
+ - Run yarn:install after installing webpacker in install generator [#1850](https://github.com/AlchemyCMS/alchemy_cms/pull/1850) ([mamhoff](https://github.com/mamhoff))
16
+ - Remove male sign after emoji [#1849](https://github.com/AlchemyCMS/alchemy_cms/pull/1849) ([mamhoff](https://github.com/mamhoff))
17
+ - Do not use ES6 Syntax in Node Selector [#1846](https://github.com/AlchemyCMS/alchemy_cms/pull/1846) ([mamhoff](https://github.com/mamhoff))
18
+ - [ruby] Upgrade rubocop to version 0.84.0 [#1845](https://github.com/AlchemyCMS/alchemy_cms/pull/1845) ([depfu](https://github.com/apps/depfu))
19
+ - Always create nested urls [#1844](https://github.com/AlchemyCMS/alchemy_cms/pull/1844) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Fix: Add indifferent access to default options in encoded_image [#1840](https://github.com/AlchemyCMS/alchemy_cms/pull/1840) ([mickenorlen](https://github.com/mickenorlen))
21
+ - Set proper nested set scope on page [#1837](https://github.com/AlchemyCMS/alchemy_cms/pull/1837) ([tvdeyen](https://github.com/tvdeyen))
22
+ - Install Webpacker in install generator [#1835](https://github.com/AlchemyCMS/alchemy_cms/pull/1835) ([mamhoff](https://github.com/mamhoff))
23
+ - Fix deleting an EssenceNode from a content [#1834](https://github.com/AlchemyCMS/alchemy_cms/pull/1834) ([mamhoff](https://github.com/mamhoff))
24
+ - Use Rails standards for deleting pages from EssencePage [#1833](https://github.com/AlchemyCMS/alchemy_cms/pull/1833) ([mamhoff](https://github.com/mamhoff))
25
+ - Scope has one site [#1832](https://github.com/AlchemyCMS/alchemy_cms/pull/1832) ([mamhoff](https://github.com/mamhoff))
26
+ - Render nodes [#1831](https://github.com/AlchemyCMS/alchemy_cms/pull/1831) ([mamhoff](https://github.com/mamhoff))
27
+ - Add errors when node cant be deleted [#1828](https://github.com/AlchemyCMS/alchemy_cms/pull/1828) ([mamhoff](https://github.com/mamhoff))
28
+ - Add error flash to resource controller [#1827](https://github.com/AlchemyCMS/alchemy_cms/pull/1827) ([mamhoff](https://github.com/mamhoff))
29
+ - Fix Association between Nodes and EssenceNodes [#1826](https://github.com/AlchemyCMS/alchemy_cms/pull/1826) ([mamhoff](https://github.com/mamhoff))
30
+ - Translated root menus [#1825](https://github.com/AlchemyCMS/alchemy_cms/pull/1825) ([mamhoff](https://github.com/mamhoff))
31
+ - Use rails root in install generator [#1822](https://github.com/AlchemyCMS/alchemy_cms/pull/1822) ([tvdeyen](https://github.com/tvdeyen))
32
+ - Add a quick Node select [#1821](https://github.com/AlchemyCMS/alchemy_cms/pull/1821) ([mamhoff](https://github.com/mamhoff))
33
+ - Add has_one association for root page [#1820](https://github.com/AlchemyCMS/alchemy_cms/pull/1820) ([mamhoff](https://github.com/mamhoff))
34
+ - [js] Upgrade babel-jest to version 26.0.1 [#1819](https://github.com/AlchemyCMS/alchemy_cms/pull/1819) ([depfu](https://github.com/apps/depfu))
35
+ - Make page language mandatory [#1818](https://github.com/AlchemyCMS/alchemy_cms/pull/1818) ([tvdeyen](https://github.com/tvdeyen))
36
+ - Remove root page [#1817](https://github.com/AlchemyCMS/alchemy_cms/pull/1817) ([tvdeyen](https://github.com/tvdeyen))
37
+ - Fix page unlock page icon replacement [#1816](https://github.com/AlchemyCMS/alchemy_cms/pull/1816) ([tvdeyen](https://github.com/tvdeyen))
38
+ - Invoke rake task in upgrader instead of system call [#1815](https://github.com/AlchemyCMS/alchemy_cms/pull/1815) ([tvdeyen](https://github.com/tvdeyen))
39
+ - Remove old 4.4 upgrader class [#1814](https://github.com/AlchemyCMS/alchemy_cms/pull/1814) ([tvdeyen](https://github.com/tvdeyen))
40
+ - Remove Page.ancestors_for [#1813](https://github.com/AlchemyCMS/alchemy_cms/pull/1813) ([tvdeyen](https://github.com/tvdeyen))
41
+ - Remove layout root pages [#1812](https://github.com/AlchemyCMS/alchemy_cms/pull/1812) ([tvdeyen](https://github.com/tvdeyen))
42
+ - Use timestamps in migration [#1811](https://github.com/AlchemyCMS/alchemy_cms/pull/1811) ([tvdeyen](https://github.com/tvdeyen))
43
+ - Remove legacy element serializer [#1810](https://github.com/AlchemyCMS/alchemy_cms/pull/1810) ([tvdeyen](https://github.com/tvdeyen))
44
+ - Remove timestamps from essences and contents [#1809](https://github.com/AlchemyCMS/alchemy_cms/pull/1809) ([tvdeyen](https://github.com/tvdeyen))
45
+ - Remove stamper from contents [#1808](https://github.com/AlchemyCMS/alchemy_cms/pull/1808) ([tvdeyen](https://github.com/tvdeyen))
46
+ - Remove Site ID from nodes [#1807](https://github.com/AlchemyCMS/alchemy_cms/pull/1807) ([mamhoff](https://github.com/mamhoff))
47
+ - Add Alchemy::Language.has_many :nodes [#1806](https://github.com/AlchemyCMS/alchemy_cms/pull/1806) ([mamhoff](https://github.com/mamhoff))
48
+ - Drop Rails 5.0 and 5.1 support [#1805](https://github.com/AlchemyCMS/alchemy_cms/pull/1805) ([tvdeyen](https://github.com/tvdeyen))
49
+ - Remove enforce_ssl [#1804](https://github.com/AlchemyCMS/alchemy_cms/pull/1804) ([tvdeyen](https://github.com/tvdeyen))
50
+ - Make the preview url configurable [#1803](https://github.com/AlchemyCMS/alchemy_cms/pull/1803) ([tvdeyen](https://github.com/tvdeyen))
51
+ - Remove stamper from essences [#1802](https://github.com/AlchemyCMS/alchemy_cms/pull/1802) ([tvdeyen](https://github.com/tvdeyen))
52
+ - Use Rufo to format all files in a consistent way [#1799](https://github.com/AlchemyCMS/alchemy_cms/pull/1799) ([tvdeyen](https://github.com/tvdeyen))
53
+ - Remove acts_as_list from Content [#1798](https://github.com/AlchemyCMS/alchemy_cms/pull/1798) ([tvdeyen](https://github.com/tvdeyen))
54
+ - Add EssenceNode [#1792](https://github.com/AlchemyCMS/alchemy_cms/pull/1792) ([mamhoff](https://github.com/mamhoff))
55
+ - Use 2.5.7 of code climate coverage reporter GH action [#1790](https://github.com/AlchemyCMS/alchemy_cms/pull/1790) ([tvdeyen](https://github.com/tvdeyen))
56
+ - [ruby] Upgrade sassc to version 2.3.0 [#1787](https://github.com/AlchemyCMS/alchemy_cms/pull/1787) ([depfu](https://github.com/apps/depfu))
57
+ - [ruby] Upgrade rubocop to version 0.82.0 [#1785](https://github.com/AlchemyCMS/alchemy_cms/pull/1785) ([depfu](https://github.com/apps/depfu))
58
+ - Fix regular icons [#1784](https://github.com/AlchemyCMS/alchemy_cms/pull/1784) ([tvdeyen](https://github.com/tvdeyen))
59
+ - Convert NodeTree into ES6 [#1782](https://github.com/AlchemyCMS/alchemy_cms/pull/1782) ([tvdeyen](https://github.com/tvdeyen))
60
+ - Add Webpacker [#1775](https://github.com/AlchemyCMS/alchemy_cms/pull/1775) ([tvdeyen](https://github.com/tvdeyen))
61
+ - Multi language menus [#1774](https://github.com/AlchemyCMS/alchemy_cms/pull/1774) ([rmparr](https://github.com/rmparr))
62
+ - On Boarding Flow [#1770](https://github.com/AlchemyCMS/alchemy_cms/pull/1770) ([tvdeyen](https://github.com/tvdeyen))
63
+ - Fix bug in language from session w/o site [#1769](https://github.com/AlchemyCMS/alchemy_cms/pull/1769) ([tvdeyen](https://github.com/tvdeyen))
64
+ - Fix fontawesome in production [#1765](https://github.com/AlchemyCMS/alchemy_cms/pull/1765) ([mickenorlen](https://github.com/mickenorlen))
65
+ - Remove implicit Site and Language creation [#1763](https://github.com/AlchemyCMS/alchemy_cms/pull/1763) ([mamhoff](https://github.com/mamhoff))
66
+ - Add content editor data attributes based on name/id and css_classes presenter method [#1761](https://github.com/AlchemyCMS/alchemy_cms/pull/1761) ([mickenorlen](https://github.com/mickenorlen))
67
+ - Add alchemy.test to development domains [#1760](https://github.com/AlchemyCMS/alchemy_cms/pull/1760) ([tvdeyen](https://github.com/tvdeyen))
68
+ - Update Fontawesome [#1759](https://github.com/AlchemyCMS/alchemy_cms/pull/1759) ([tvdeyen](https://github.com/tvdeyen))
69
+ - Fix test coverage reporting [#1757](https://github.com/AlchemyCMS/alchemy_cms/pull/1757) ([tvdeyen](https://github.com/tvdeyen))
70
+ - Remove references to nonexistent "scaffold" generator [#1755](https://github.com/AlchemyCMS/alchemy_cms/pull/1755) ([mamhoff](https://github.com/mamhoff))
71
+ - Remove Tasks::Helper module [#1754](https://github.com/AlchemyCMS/alchemy_cms/pull/1754) ([mamhoff](https://github.com/mamhoff))
72
+ - Update rubocop [#1753](https://github.com/AlchemyCMS/alchemy_cms/pull/1753) ([tvdeyen](https://github.com/tvdeyen))
73
+ - chores: use same _old_ Rubo:cop: version as Hound [#1752](https://github.com/AlchemyCMS/alchemy_cms/pull/1752) ([alexanderadam](https://github.com/alexanderadam))
74
+ - Fix date comparison in resource feature spec [#1750](https://github.com/AlchemyCMS/alchemy_cms/pull/1750) ([tvdeyen](https://github.com/tvdeyen))
75
+ - Fail spec prepare task if sub command fails [#1749](https://github.com/AlchemyCMS/alchemy_cms/pull/1749) ([tvdeyen](https://github.com/tvdeyen))
76
+ - Add MySQL service as service [#1748](https://github.com/AlchemyCMS/alchemy_cms/pull/1748) ([mamhoff](https://github.com/mamhoff))
77
+ - Allow importing to a different port [#1747](https://github.com/AlchemyCMS/alchemy_cms/pull/1747) ([mamhoff](https://github.com/mamhoff))
78
+ - Sortable resources tables [#1744](https://github.com/AlchemyCMS/alchemy_cms/pull/1744) ([tvdeyen](https://github.com/tvdeyen))
79
+ - Fix update check spec [#1743](https://github.com/AlchemyCMS/alchemy_cms/pull/1743) ([tvdeyen](https://github.com/tvdeyen))
80
+ - Compress migrations [#1657](https://github.com/AlchemyCMS/alchemy_cms/pull/1657) ([tvdeyen](https://github.com/tvdeyen))
81
+ - Install Gutentag migrations while installing Alchemy [#1688](https://github.com/AlchemyCMS/alchemy_cms/pull/1688) ([tvdeyen](https://github.com/tvdeyen))
82
+ - Remove old upgrade tasks [#1687](https://github.com/AlchemyCMS/alchemy_cms/pull/1687) ([tvdeyen](https://github.com/tvdeyen))
83
+ - Remove deprecated features [#1686](https://github.com/AlchemyCMS/alchemy_cms/pull/1686) ([tvdeyen](https://github.com/tvdeyen))
84
+ - Remove deprecations [#1656](https://github.com/AlchemyCMS/alchemy_cms/pull/1656) ([tvdeyen](https://github.com/tvdeyen))
85
+ - Add element editor decorator [#1653](https://github.com/AlchemyCMS/alchemy_cms/pull/1653) ([tvdeyen](https://github.com/tvdeyen))
86
+ - Remove deprecated render_essence_* helpers [#1652](https://github.com/AlchemyCMS/alchemy_cms/pull/1652) ([tvdeyen](https://github.com/tvdeyen))
87
+ - Remove deprecated render element editor helpers [#1651](https://github.com/AlchemyCMS/alchemy_cms/pull/1651) ([tvdeyen](https://github.com/tvdeyen))
88
+ - Add ContentEditor decorator [#1645](https://github.com/AlchemyCMS/alchemy_cms/pull/1645) ([tvdeyen](https://github.com/tvdeyen))
89
+ - Remove local options from essence editors [#1638](https://github.com/AlchemyCMS/alchemy_cms/pull/1638) ([tvdeyen](https://github.com/tvdeyen))
28
90
 
29
91
  ## 4.6.1 (2020-06-04)
30
92
 
data/Gemfile CHANGED
@@ -1,32 +1,34 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+ source "https://rubygems.org"
2
3
 
3
4
  gemspec
4
5
 
5
- rails_version = ENV.fetch('RAILS_VERSION', 6.0).to_f
6
- gem 'rails', "~> #{rails_version}.0"
6
+ rails_version = ENV.fetch("RAILS_VERSION", 6.0).to_f
7
+ gem "rails", "~> #{rails_version}.0"
7
8
 
8
- if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
9
- gem 'sqlite3', rails_version > 5.0 ? '~> 1.4.1' : '~> 1.3.6'
9
+ if ENV["DB"].nil? || ENV["DB"] == "sqlite"
10
+ gem "sqlite3", "~> 1.4.1"
10
11
  end
11
- gem 'mysql2', '~> 0.5.1' if ENV['DB'] == 'mysql'
12
- gem 'pg', '~> 1.0' if ENV['DB'] == 'postgresql'
12
+ gem "mysql2", "~> 0.5.1" if ENV["DB"] == "mysql"
13
+ gem "pg", "~> 1.0" if ENV["DB"] == "postgresql"
13
14
 
14
15
  group :development, :test do
15
- if ENV['CI']
16
- gem 'sprockets', '< 4.0' # Sprockets 4 has serious issues with libsass on Linux machines
16
+ if ENV["GITHUB_ACTIONS"]
17
+ gem "sassc", "~> 2.4.0" # https://github.com/sass/sassc-ruby/issues/146
17
18
  else
18
- gem 'launchy'
19
- gem 'annotate'
20
- gem 'bumpy'
21
- gem 'yard'
22
- gem 'redcarpet'
23
- gem 'pry-byebug'
24
- gem 'rubocop', require: false
25
- gem 'listen'
26
- gem 'localeapp', '~> 3.0', require: false
27
- gem 'dotenv', '~> 2.2'
28
- gem 'github_fast_changelog', require: false
29
- gem 'active_record_query_trace', require: false
30
- gem 'rack-mini-profiler', require: false
19
+ gem "launchy"
20
+ gem "annotate"
21
+ gem "bumpy"
22
+ gem "yard"
23
+ gem "redcarpet"
24
+ gem "pry-byebug"
25
+ gem "rubocop", "~> 0.85.0", require: false
26
+ gem "listen"
27
+ gem "localeapp", "~> 3.0", require: false
28
+ gem "dotenv", "~> 2.2"
29
+ gem "github_fast_changelog", require: false
30
+ gem "active_record_query_trace", require: false
31
+ gem "rack-mini-profiler", require: false
32
+ gem "rufo", require: false
31
33
  end
32
34
  end
data/README.md CHANGED
@@ -18,7 +18,7 @@ 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 master 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 (4.2-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.2-stable).**
21
+ **CAUTION: This master 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 (4.5-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.5-stable).**
22
22
 
23
23
 
24
24
  ## ✅ Features
@@ -51,8 +51,9 @@ or visit the existing demo at https://alchemy-demo.herokuapp.com
51
51
 
52
52
  ## 🚂 Rails Version
53
53
 
54
- **This version of AlchemyCMS runs with all versions of Rails 5 and Rails 6**
54
+ **This version of AlchemyCMS runs with Rails 5.2 and Rails 6.0**
55
55
 
56
+ * 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).
56
57
  * For a Rails 4.2 compatible version use the [`3.6-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.6-stable).
57
58
  * For a Rails 4.0/4.1 compatible version use the [`3.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.1-stable).
58
59
  * For a Rails 3.2 compatible version use the [`2.8-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/2.8-stable).
@@ -78,23 +79,37 @@ For a Ruby 1.8.7 compatible version use the [`2.3-stable` branch](https://github
78
79
 
79
80
  ## ⌨️ Installation
80
81
 
81
- #### 1. Add the Alchemy gem:
82
+ ### Stand Alone Installation
82
83
 
83
- Put this into your `Gemfile`:
84
+ If you do not have a Rails project yet or just want to check out Alchemy, then use this Rails template.
84
85
 
85
- ```ruby
86
- gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: 'master'
86
+ Make sure you have Rails installed first:
87
+
88
+ ```
89
+ $ gem install rails
87
90
  ```
88
91
 
89
- **NOTE:** You normally want to use a stable branch, like `4.1-stable`.
92
+ Then create a new Rails project with:
90
93
 
91
- #### 2. Update your bundle:
94
+ ```
95
+ $ rails new -m https://raw.githubusercontent.com/AlchemyCMS/rails-templates/master/all.rb <MY-PROJECT-NAME>
96
+ ```
92
97
 
93
- ```bash
94
- $ bundle install
98
+ and follow the on screen instructions.
99
+
100
+ ### Manual Installation
101
+
102
+ If you want to manually install Alchemy into your Rails project follow these steps.
103
+
104
+ #### Add the Alchemy gem:
105
+
106
+ Put Alchemy into your `Gemfile` with:
107
+
108
+ ```
109
+ $ bundle add alchemy_cms
95
110
  ```
96
111
 
97
- #### 3. Set the authentication user
112
+ #### Set the authentication user
98
113
 
99
114
  Now you have to decide, if you want to use your own user model or if you want to use
100
115
  the Devise based user model that Alchemy provides and was extracted [into its own gem](https://github.com/AlchemyCMS/alchemy-devise).
@@ -103,17 +118,14 @@ the Devise based user model that Alchemy provides and was extracted [into its ow
103
118
 
104
119
  If you don't have your own user class, you can use the Alchemy user model. Just add the following gem into your `Gemfile`:
105
120
 
106
- ```ruby
107
- gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: 'master'
121
+ ```
122
+ $ bundle add alchemy-devise
108
123
  ```
109
124
 
110
- **NOTE:** You normally want to use a stable branch, like `4.1-stable`.
111
-
112
- Then run:
125
+ Then run the `alchemy-devise` installer:
113
126
 
114
127
  ```bash
115
- $ bundle install
116
- $ bin/rake alchemy_devise:install:migrations
128
+ $ bin/rails g alchemy_devise:install
117
129
  ```
118
130
 
119
131
  ##### Use your User model
@@ -172,7 +184,7 @@ Alchemy has very flexible ways to organize and manage content. Please be sure to
172
184
 
173
185
  ### Custom Controllers
174
186
 
175
- Beginning with Alchemy 3.1 we do not patch the `ApplicationController` anymore. If you have controllers that loads Alchemy content or uses Alchemy helpers in the views (i.e. `render_navigation` or `render_elements`) you can either inherit from `Alchemy::BaseController` or you `include Alchemy::ControllerActions` in your controller (**that's the recommended way**).
187
+ Beginning with Alchemy 3.1 we do not patch the `ApplicationController` anymore. If you have controllers that loads Alchemy content or uses Alchemy helpers in the views (i.e. `render_menu` or `render_elements`) you can either inherit from `Alchemy::BaseController` or you `include Alchemy::ControllerActions` in your controller (**that's the recommended way**).
176
188
 
177
189
  ### Custom admin interface routing
178
190
 
data/Rakefile CHANGED
@@ -39,14 +39,16 @@ namespace :alchemy do
39
39
  namespace :spec do
40
40
  desc "Prepares database for testing Alchemy"
41
41
  task :prepare do
42
- system <<-BASH
43
- cd spec/dummy
44
- export RAILS_ENV=test
45
- bin/rake db:create
46
- bin/rake db:environment:set
47
- bin/rake db:migrate:reset
48
- cd -
49
- BASH
42
+ result = system <<~BASH
43
+ cd spec/dummy && \
44
+ export RAILS_ENV=test && \
45
+ bin/rake db:create && \
46
+ bin/rake db:environment:set && \
47
+ bin/rake db:migrate:reset && \
48
+ bin/rails g alchemy:install --skip --skip-demo-files && \
49
+ cd -
50
+ BASH
51
+ result || fail
50
52
  end
51
53
  end
52
54
 
data/alchemy_cms.gemspec CHANGED
@@ -8,10 +8,10 @@ Gem::Specification.new do |gem|
8
8
  gem.version = Alchemy::VERSION
9
9
  gem.platform = Gem::Platform::RUBY
10
10
  gem.authors = ['Thomas von Deyen', 'Robin Boening', 'Marc Schettke', 'Hendrik Mans', 'Carsten Fregin', 'Martin Meyerhoff']
11
- gem.email = ['alchemy@magiclabs.de']
11
+ gem.email = ['hello@alchemy-cms.com']
12
12
  gem.homepage = 'https://alchemy-cms.com'
13
- gem.summary = 'A powerful, userfriendly and flexible CMS for Rails 5'
14
- gem.description = 'Alchemy is a powerful, userfriendly and flexible Rails 5 CMS.'
13
+ gem.summary = 'A powerful, userfriendly and flexible CMS for Rails'
14
+ gem.description = 'Alchemy is a powerful, userfriendly and flexible Rails CMS.'
15
15
  gem.requirements << 'ImageMagick (libmagick), v6.6 or greater.'
16
16
  gem.required_ruby_version = '>= 2.3.0'
17
17
  gem.license = 'BSD New'
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
24
24
  gem.add_runtime_dependency 'cancancan', ['>= 2.1', '< 4.0']
25
25
  gem.add_runtime_dependency 'coffee-rails', ['~> 4.0', '< 5.0']
26
- gem.add_runtime_dependency 'dragonfly', ['>= 1.0.7', '< 1.4']
26
+ gem.add_runtime_dependency 'dragonfly', ['~> 1.0', '>= 1.0.7']
27
27
  gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
28
28
  gem.add_runtime_dependency 'gutentag', ['~> 2.2', '>= 2.2.1']
29
29
  gem.add_runtime_dependency 'handlebars_assets', ['~> 0.23']
@@ -32,7 +32,7 @@ Gem::Specification.new do |gem|
32
32
  gem.add_runtime_dependency 'kaminari', ['~> 1.1']
33
33
  gem.add_runtime_dependency 'originator', ['~> 3.1']
34
34
  gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
35
- gem.add_runtime_dependency 'rails', ['>= 5.0.0', '< 6.1']
35
+ gem.add_runtime_dependency 'rails', ['>= 5.2.0', '< 6.1']
36
36
  gem.add_runtime_dependency 'ransack', ['>= 1.8', '< 3.0']
37
37
  gem.add_runtime_dependency 'request_store', ['~> 1.2']
38
38
  gem.add_runtime_dependency 'responders', ['>= 2.0', '< 4.0']
@@ -41,6 +41,7 @@ Gem::Specification.new do |gem|
41
41
  gem.add_runtime_dependency 'simple_form', ['>= 4.0', '< 6']
42
42
  gem.add_runtime_dependency 'sprockets', ['>= 3.0', '< 5']
43
43
  gem.add_runtime_dependency 'turbolinks', ['>= 2.5']
44
+ gem.add_runtime_dependency 'webpacker', ['>= 4.0', '< 6']
44
45
 
45
46
  gem.add_development_dependency 'capybara', ['~> 3.0']
46
47
  gem.add_development_dependency 'capybara-screenshot', ['~> 1.0']
@@ -15,10 +15,8 @@
15
15
  //= require requestAnimationFrame
16
16
  //= require select2
17
17
  //= require handlebars
18
- //= require sortable/Sortable.min
19
18
  //= require alchemy/templates
20
19
  //= require alchemy/alchemy.base
21
- //= require alchemy/alchemy.utils
22
20
  //= require alchemy/alchemy.autocomplete
23
21
  //= require alchemy/alchemy.browser
24
22
  //= require alchemy/alchemy.buttons
@@ -34,14 +32,12 @@
34
32
  //= require alchemy/alchemy.growler
35
33
  //= require alchemy/alchemy.gui
36
34
  //= require alchemy/alchemy.hotkeys
37
- //= require alchemy/alchemy.i18n
38
35
  //= require alchemy/alchemy.image_cropper
39
36
  //= require alchemy/alchemy.image_overlay
40
37
  //= require alchemy/alchemy.string_extension
41
38
  //= require alchemy/alchemy.link_dialog
42
39
  //= require alchemy/alchemy.list_filter
43
40
  //= require alchemy/alchemy.initializer
44
- //= require alchemy/alchemy.node_tree
45
41
  //= require alchemy/alchemy.page_sorter
46
42
  //= require alchemy/alchemy.uploader
47
43
  //= require alchemy/alchemy.preview_window
@@ -49,6 +45,6 @@
49
45
  //= require alchemy/alchemy.spinner
50
46
  //= require alchemy/alchemy.tinymce
51
47
  //= require alchemy/alchemy.tooltips
52
- //= require alchemy/alchemy.translations
53
48
  //= require alchemy/alchemy.trash_window
54
49
  //= require alchemy/page_select
50
+ //= require alchemy/node_select
@@ -62,9 +62,10 @@ $.extend Alchemy,
62
62
  removePicture: (selector) ->
63
63
  $form_field = $(selector)
64
64
  $element = $form_field.closest(".element-editor")
65
+ $content = $form_field.closest(".content_editor")
65
66
  if $form_field[0]
66
67
  $form_field.val ""
67
- $element.find(".thumbnail_background").html('<i class="icon far fa-image fa-fw"/>')
68
+ $content.find(".thumbnail_background").html('<i class="icon far fa-image fa-fw"/>')
68
69
  Alchemy.setElementDirty $element
69
70
  false
70
71