alchemy_cms 4.4.3 → 5.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +56 -18
  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 +34 -21
  8. data/CHANGELOG.md +120 -0
  9. data/Gemfile +24 -22
  10. data/README.md +31 -19
  11. data/Rakefile +10 -8
  12. data/alchemy_cms.gemspec +6 -4
  13. data/app/assets/javascripts/alchemy/admin.js +1 -2
  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.link_dialog.js.coffee +5 -5
  17. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +17 -17
  18. data/app/assets/javascripts/alchemy/node_select.js +39 -0
  19. data/app/assets/javascripts/alchemy/templates/index.js +2 -0
  20. data/app/assets/javascripts/alchemy/templates/node.hbs +16 -0
  21. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +3 -0
  22. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  23. data/app/assets/stylesheets/alchemy/_mixins.scss +2 -3
  24. data/app/assets/stylesheets/alchemy/_variables.scss +2 -2
  25. data/app/assets/stylesheets/alchemy/admin.scss +3 -2
  26. data/app/assets/stylesheets/alchemy/base.scss +0 -1
  27. data/app/assets/stylesheets/alchemy/elements.scss +1 -1
  28. data/app/assets/stylesheets/alchemy/forms.scss +5 -0
  29. data/app/assets/stylesheets/alchemy/lists.scss +0 -8
  30. data/app/assets/stylesheets/alchemy/node-select.scss +43 -0
  31. data/app/assets/stylesheets/alchemy/nodes.scss +6 -1
  32. data/app/assets/stylesheets/alchemy/sitemap.scss +63 -21
  33. data/app/assets/stylesheets/alchemy/tables.scss +1 -24
  34. data/app/controllers/alchemy/admin/attachments_controller.rb +8 -7
  35. data/app/controllers/alchemy/admin/base_controller.rb +13 -33
  36. data/app/controllers/alchemy/admin/clipboard_controller.rb +5 -4
  37. data/app/controllers/alchemy/admin/contents_controller.rb +1 -2
  38. data/app/controllers/alchemy/admin/dashboard_controller.rb +10 -9
  39. data/app/controllers/alchemy/admin/elements_controller.rb +20 -20
  40. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +12 -14
  41. data/app/controllers/alchemy/admin/languages_controller.rb +35 -2
  42. data/app/controllers/alchemy/admin/layoutpages_controller.rb +5 -2
  43. data/app/controllers/alchemy/admin/nodes_controller.rb +5 -14
  44. data/app/controllers/alchemy/admin/pages_controller.rb +50 -63
  45. data/app/controllers/alchemy/admin/pictures_controller.rb +16 -16
  46. data/app/controllers/alchemy/admin/resources_controller.rb +21 -13
  47. data/app/controllers/alchemy/admin/sites_controller.rb +18 -0
  48. data/app/controllers/alchemy/admin/styleguide_controller.rb +1 -0
  49. data/app/controllers/alchemy/admin/tags_controller.rb +5 -3
  50. data/app/controllers/alchemy/admin/trash_controller.rb +6 -6
  51. data/app/controllers/alchemy/api/base_controller.rb +2 -2
  52. data/app/controllers/alchemy/api/contents_controller.rb +4 -4
  53. data/app/controllers/alchemy/api/elements_controller.rb +8 -8
  54. data/app/controllers/alchemy/api/nodes_controller.rb +65 -0
  55. data/app/controllers/alchemy/api/pages_controller.rb +15 -22
  56. data/app/controllers/alchemy/attachments_controller.rb +5 -5
  57. data/app/controllers/alchemy/base_controller.rb +10 -9
  58. data/app/controllers/alchemy/messages_controller.rb +16 -23
  59. data/app/controllers/alchemy/pages_controller.rb +13 -11
  60. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +3 -2
  61. data/app/controllers/concerns/alchemy/admin/current_language.rb +23 -0
  62. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +5 -5
  63. data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +4 -4
  64. data/app/controllers/concerns/alchemy/page_redirects.rb +2 -9
  65. data/app/controllers/concerns/alchemy/site_redirects.rb +2 -2
  66. data/app/decorators/alchemy/content_editor.rb +55 -0
  67. data/app/decorators/alchemy/element_editor.rb +39 -0
  68. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -6
  69. data/app/helpers/alchemy/admin/base_helper.rb +36 -35
  70. data/app/helpers/alchemy/admin/contents_helper.rb +3 -3
  71. data/app/helpers/alchemy/admin/elements_helper.rb +3 -88
  72. data/app/helpers/alchemy/admin/essences_helper.rb +8 -117
  73. data/app/helpers/alchemy/admin/form_helper.rb +1 -1
  74. data/app/helpers/alchemy/admin/navigation_helper.rb +24 -23
  75. data/app/helpers/alchemy/admin/pages_helper.rb +12 -12
  76. data/app/helpers/alchemy/admin/pictures_helper.rb +3 -3
  77. data/app/helpers/alchemy/admin/tags_helper.rb +8 -7
  78. data/app/helpers/alchemy/base_helper.rb +13 -8
  79. data/app/helpers/alchemy/elements_block_helper.rb +2 -31
  80. data/app/helpers/alchemy/elements_helper.rb +12 -58
  81. data/app/helpers/alchemy/pages_helper.rb +24 -174
  82. data/app/helpers/alchemy/url_helper.rb +2 -1
  83. data/app/mailers/alchemy/base_mailer.rb +1 -1
  84. data/app/mailers/alchemy/messages_mailer.rb +1 -1
  85. data/app/models/alchemy/attachment.rb +20 -18
  86. data/app/models/alchemy/base_record.rb +2 -5
  87. data/app/models/alchemy/content.rb +33 -52
  88. data/app/models/alchemy/content/factory.rb +24 -31
  89. data/app/models/alchemy/element.rb +45 -53
  90. data/app/models/alchemy/element/definitions.rb +4 -4
  91. data/app/models/alchemy/element/element_contents.rb +9 -6
  92. data/app/models/alchemy/element/element_essences.rb +4 -3
  93. data/app/models/alchemy/element/presenters.rb +3 -2
  94. data/app/models/alchemy/element_to_page.rb +1 -1
  95. data/app/models/alchemy/essence_boolean.rb +1 -3
  96. data/app/models/alchemy/essence_date.rb +2 -3
  97. data/app/models/alchemy/essence_file.rb +4 -4
  98. data/app/models/alchemy/essence_html.rb +1 -3
  99. data/app/models/alchemy/essence_link.rb +1 -3
  100. data/app/models/alchemy/essence_node.rb +18 -0
  101. data/app/models/alchemy/essence_page.rb +3 -16
  102. data/app/models/alchemy/essence_picture.rb +17 -16
  103. data/app/models/alchemy/essence_picture_view.rb +7 -6
  104. data/app/models/alchemy/essence_richtext.rb +1 -3
  105. data/app/models/alchemy/essence_select.rb +1 -3
  106. data/app/models/alchemy/essence_text.rb +0 -2
  107. data/app/models/alchemy/folded_page.rb +1 -0
  108. data/app/models/alchemy/language.rb +21 -35
  109. data/app/models/alchemy/language/code.rb +4 -4
  110. data/app/models/alchemy/legacy_page_url.rb +1 -1
  111. data/app/models/alchemy/message.rb +3 -3
  112. data/app/models/alchemy/node.rb +55 -9
  113. data/app/models/alchemy/page.rb +53 -123
  114. data/app/models/alchemy/page/fixed_attributes.rb +3 -2
  115. data/app/models/alchemy/page/page_elements.rb +35 -44
  116. data/app/models/alchemy/page/page_naming.rb +20 -70
  117. data/app/models/alchemy/page/page_natures.rb +7 -34
  118. data/app/models/alchemy/page/page_scopes.rb +23 -29
  119. data/app/models/alchemy/page/url_path.rb +64 -0
  120. data/app/models/alchemy/picture.rb +18 -27
  121. data/app/models/alchemy/picture/transformations.rb +9 -7
  122. data/app/models/alchemy/picture/url.rb +5 -5
  123. data/app/models/alchemy/site.rb +6 -36
  124. data/app/models/alchemy/site/layout.rb +2 -2
  125. data/app/models/concerns/alchemy/touch_elements.rb +24 -0
  126. data/app/serializers/alchemy/content_serializer.rb +0 -3
  127. data/app/serializers/alchemy/essence_boolean_serializer.rb +3 -3
  128. data/app/serializers/alchemy/essence_date_serializer.rb +3 -3
  129. data/app/serializers/alchemy/essence_file_serializer.rb +4 -2
  130. data/app/serializers/alchemy/essence_html_serializer.rb +3 -3
  131. data/app/serializers/alchemy/essence_link_serializer.rb +3 -3
  132. data/app/serializers/alchemy/essence_picture_serializer.rb +5 -4
  133. data/app/serializers/alchemy/essence_richtext_serializer.rb +3 -3
  134. data/app/serializers/alchemy/essence_select_serializer.rb +3 -3
  135. data/app/serializers/alchemy/essence_text_serializer.rb +5 -4
  136. data/app/serializers/alchemy/node_serializer.rb +14 -0
  137. data/app/serializers/alchemy/page_serializer.rb +2 -1
  138. data/app/serializers/alchemy/page_tree_serializer.rb +11 -14
  139. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -2
  140. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +1 -2
  141. data/app/views/alchemy/admin/attachments/_files_list.html.erb +4 -4
  142. data/app/views/alchemy/admin/contents/create.js.erb +1 -3
  143. data/app/views/alchemy/admin/elements/_element.html.erb +9 -18
  144. data/app/views/alchemy/admin/elements/create.js.erb +1 -1
  145. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  146. data/app/views/alchemy/admin/elements/index.html.erb +3 -3
  147. data/app/views/alchemy/admin/essence_files/assign.js.erb +1 -6
  148. data/app/views/alchemy/admin/essence_files/edit.html.erb +1 -1
  149. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +1 -7
  150. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  151. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +7 -7
  152. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -1
  153. data/app/views/alchemy/admin/languages/_form.html.erb +5 -5
  154. data/app/views/alchemy/admin/languages/_table.html.erb +3 -3
  155. data/app/views/alchemy/admin/languages/edit.html.erb +1 -0
  156. data/app/views/alchemy/admin/languages/index.html.erb +23 -4
  157. data/app/views/alchemy/admin/languages/new.html.erb +1 -0
  158. data/app/views/alchemy/admin/layoutpages/index.html.erb +6 -2
  159. data/app/views/alchemy/admin/nodes/_form.html.erb +23 -15
  160. data/app/views/alchemy/admin/nodes/_node.html.erb +5 -19
  161. data/app/views/alchemy/admin/nodes/index.html.erb +8 -19
  162. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +0 -8
  163. data/app/views/alchemy/admin/pages/_form.html.erb +1 -2
  164. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -0
  165. data/app/views/alchemy/admin/pages/_page.html.erb +14 -25
  166. data/app/views/alchemy/admin/pages/_page_infos.html.erb +0 -4
  167. data/app/views/alchemy/admin/pages/_sitemap.html.erb +6 -0
  168. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  169. data/app/views/alchemy/admin/pages/info.html.erb +0 -9
  170. data/app/views/alchemy/admin/pages/unlock.js.erb +13 -6
  171. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +0 -2
  172. data/app/views/alchemy/admin/partials/_routes.html.erb +8 -0
  173. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -5
  174. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  175. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -2
  176. data/app/views/alchemy/admin/resources/_resource.html.erb +1 -1
  177. data/app/views/alchemy/admin/resources/_table.html.erb +2 -2
  178. data/app/views/alchemy/admin/sites/_form.html.erb +8 -0
  179. data/app/views/alchemy/admin/sites/edit.html.erb +1 -0
  180. data/app/views/alchemy/admin/sites/index.html.erb +21 -9
  181. data/app/views/alchemy/admin/sites/new.html.erb +1 -0
  182. data/app/views/alchemy/admin/tags/index.html.erb +2 -2
  183. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +10 -12
  184. data/app/views/alchemy/essences/_essence_date_editor.html.erb +11 -8
  185. data/app/views/alchemy/essences/_essence_file_editor.html.erb +16 -17
  186. data/app/views/alchemy/essences/_essence_html_editor.html.erb +8 -5
  187. data/app/views/alchemy/essences/_essence_link_editor.html.erb +18 -15
  188. data/app/views/alchemy/essences/_essence_node_editor.html.erb +27 -0
  189. data/app/views/alchemy/essences/_essence_node_view.html.erb +1 -0
  190. data/app/views/alchemy/essences/_essence_page_editor.html.erb +14 -11
  191. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +22 -20
  192. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +10 -7
  193. data/app/views/alchemy/essences/_essence_select_editor.html.erb +12 -16
  194. data/app/views/alchemy/essences/_essence_text_editor.html.erb +18 -17
  195. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +6 -11
  196. data/app/views/alchemy/pages/show.rss.builder +3 -2
  197. data/app/views/layouts/alchemy/admin.html.erb +1 -0
  198. data/babel.config.js +12 -0
  199. data/bin/rails +5 -4
  200. data/config/alchemy/config.yml +15 -24
  201. data/config/brakeman.ignore +1 -1
  202. data/config/initializers/assets.rb +2 -1
  203. data/config/initializers/dragonfly.rb +2 -1
  204. data/config/initializers/mime_types.rb +1 -0
  205. data/config/initializers/mini_profiler.rb +3 -2
  206. data/config/initializers/simple_form.rb +6 -6
  207. data/config/locales/alchemy.en.yml +37 -14
  208. data/config/routes.rb +32 -28
  209. data/config/spring.rb +3 -2
  210. data/db/migrate/20200226213334_alchemy_four_point_four.rb +313 -0
  211. data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +11 -0
  212. data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +28 -0
  213. data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +8 -0
  214. data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +27 -0
  215. data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +6 -0
  216. data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +24 -0
  217. data/lib/alchemy/admin/locale.rb +3 -1
  218. data/lib/alchemy/admin/preview_url.rb +64 -0
  219. data/lib/alchemy/auth_accessors.rb +8 -7
  220. data/lib/alchemy/cache_digests/template_tracker.rb +5 -4
  221. data/lib/alchemy/config.rb +26 -2
  222. data/lib/alchemy/configuration_methods.rb +3 -1
  223. data/lib/alchemy/controller_actions.rb +6 -5
  224. data/lib/alchemy/deprecation.rb +2 -1
  225. data/lib/alchemy/elements_finder.rb +5 -5
  226. data/lib/alchemy/engine.rb +23 -8
  227. data/lib/alchemy/errors.rb +0 -7
  228. data/lib/alchemy/essence.rb +17 -16
  229. data/lib/alchemy/filetypes.rb +5 -5
  230. data/lib/alchemy/forms/builder.rb +4 -4
  231. data/lib/alchemy/hints.rb +1 -1
  232. data/lib/alchemy/i18n.rb +2 -1
  233. data/lib/alchemy/modules.rb +12 -12
  234. data/lib/alchemy/name_conversions.rb +5 -5
  235. data/lib/alchemy/on_page_layout/callbacks_runner.rb +1 -0
  236. data/lib/alchemy/page_layout.rb +15 -12
  237. data/lib/alchemy/paths.rb +1 -1
  238. data/lib/alchemy/permissions.rb +7 -6
  239. data/lib/alchemy/resource.rb +23 -13
  240. data/lib/alchemy/resources_helper.rb +12 -18
  241. data/lib/alchemy/routing_constraints.rb +1 -1
  242. data/lib/alchemy/seeder.rb +42 -14
  243. data/lib/alchemy/shell.rb +13 -10
  244. data/lib/alchemy/taggable.rb +1 -0
  245. data/lib/alchemy/tasks/tidy.rb +4 -3
  246. data/lib/alchemy/test_support/config_stubbing.rb +1 -0
  247. data/lib/alchemy/test_support/essence_shared_examples.rb +72 -72
  248. data/lib/alchemy/test_support/factories.rb +1 -1
  249. data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -5
  250. data/lib/alchemy/test_support/factories/content_factory.rb +6 -6
  251. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +7 -7
  252. data/lib/alchemy/test_support/factories/element_factory.rb +9 -9
  253. data/lib/alchemy/test_support/factories/essence_file_factory.rb +3 -3
  254. data/lib/alchemy/test_support/factories/essence_page_factory.rb +3 -3
  255. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +4 -4
  256. data/lib/alchemy/test_support/factories/essence_text_factory.rb +3 -3
  257. data/lib/alchemy/test_support/factories/language_factory.rb +16 -14
  258. data/lib/alchemy/test_support/factories/node_factory.rb +8 -8
  259. data/lib/alchemy/test_support/factories/page_factory.rb +15 -27
  260. data/lib/alchemy/test_support/factories/picture_factory.rb +5 -5
  261. data/lib/alchemy/test_support/factories/site_factory.rb +7 -6
  262. data/lib/alchemy/test_support/integration_helpers.rb +1 -0
  263. data/lib/alchemy/test_support/shared_contexts.rb +5 -4
  264. data/lib/alchemy/test_support/shared_uploader_examples.rb +4 -3
  265. data/lib/alchemy/tinymce.rb +15 -13
  266. data/lib/alchemy/upgrader.rb +8 -7
  267. data/lib/alchemy/upgrader/five_point_zero.rb +41 -0
  268. data/lib/alchemy/upgrader/tasks/element_views_updater.rb +4 -4
  269. data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +29 -0
  270. data/lib/alchemy/version.rb +1 -1
  271. data/lib/alchemy_cms.rb +52 -50
  272. data/lib/{rails/generators → generators}/alchemy/base.rb +5 -4
  273. data/lib/{rails/generators → generators}/alchemy/elements/elements_generator.rb +13 -9
  274. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.erb +0 -0
  275. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.haml +0 -0
  276. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.slim +0 -0
  277. data/lib/{rails/generators → generators}/alchemy/essence/essence_generator.rb +15 -13
  278. data/lib/generators/alchemy/essence/templates/editor.html.erb +17 -0
  279. data/lib/{rails/generators → generators}/alchemy/essence/templates/view.html.erb +0 -0
  280. data/lib/{rails/generators → generators}/alchemy/install/files/_article.html.erb +0 -0
  281. data/lib/{rails/generators → generators}/alchemy/install/files/_standard.html.erb +0 -0
  282. data/lib/{rails/generators → generators}/alchemy/install/files/alchemy.en.yml +0 -0
  283. data/lib/generators/alchemy/install/files/alchemy_admin.js +1 -0
  284. data/lib/{rails/generators → generators}/alchemy/install/files/all.css +0 -0
  285. data/lib/{rails/generators → generators}/alchemy/install/files/all.js +0 -0
  286. data/lib/{rails/generators → generators}/alchemy/install/files/application.html.erb +0 -0
  287. data/lib/{rails/generators → generators}/alchemy/install/files/article.scss +0 -0
  288. data/lib/generators/alchemy/install/install_generator.rb +110 -0
  289. data/lib/{rails/generators → generators}/alchemy/install/templates/dragonfly.rb.tt +0 -0
  290. data/lib/{rails/generators → generators}/alchemy/install/templates/elements.yml.tt +0 -0
  291. data/lib/generators/alchemy/install/templates/menus.yml.tt +8 -0
  292. data/lib/{rails/generators → generators}/alchemy/install/templates/page_layouts.yml.tt +0 -0
  293. data/lib/{rails/generators → generators}/alchemy/menus/menus_generator.rb +5 -5
  294. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.erb +1 -4
  295. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.haml +1 -4
  296. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.slim +1 -4
  297. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.erb +1 -1
  298. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.haml +2 -2
  299. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.slim +2 -2
  300. data/lib/{rails/generators → generators}/alchemy/module/module_generator.rb +3 -2
  301. data/lib/{rails/generators → generators}/alchemy/module/templates/ability.rb.tt +0 -0
  302. data/lib/{rails/generators → generators}/alchemy/module/templates/controller.rb.tt +0 -0
  303. data/lib/{rails/generators → generators}/alchemy/module/templates/module_config.rb.tt +0 -0
  304. data/lib/{rails/generators → generators}/alchemy/page_layouts/page_layouts_generator.rb +5 -4
  305. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.erb +0 -0
  306. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.haml +0 -0
  307. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.slim +0 -0
  308. data/lib/{rails/generators → generators}/alchemy/site_layouts/site_layouts_generator.rb +4 -2
  309. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.erb +0 -0
  310. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.haml +0 -0
  311. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.slim +0 -0
  312. data/lib/{rails/generators → generators}/alchemy/views/views_generator.rb +7 -6
  313. data/lib/kaminari/scoped_pagination_url_helper.rb +1 -0
  314. data/lib/tasks/alchemy/db.rake +3 -19
  315. data/lib/tasks/alchemy/install.rake +3 -2
  316. data/lib/tasks/alchemy/tidy.rake +9 -8
  317. data/lib/tasks/alchemy/upgrade.rake +28 -105
  318. data/package.json +45 -0
  319. data/package/admin.js +14 -0
  320. data/package/src/__tests__/i18n.spec.js +70 -0
  321. data/package/src/i18n.js +48 -0
  322. data/package/src/node_tree.js +72 -0
  323. data/package/src/translations.js +32 -0
  324. data/package/src/utils/__tests__/ajax.spec.js +124 -0
  325. data/package/src/utils/__tests__/events.spec.js +38 -0
  326. data/package/src/utils/ajax.js +48 -0
  327. data/package/src/utils/events.js +16 -0
  328. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  329. data/vendor/assets/fonts/fa-regular-400.svg +798 -358
  330. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  331. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  332. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  333. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  334. data/vendor/assets/fonts/fa-solid-900.svg +4933 -1408
  335. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  336. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  337. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  338. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +1 -2
  339. data/vendor/assets/stylesheets/fontawesome/_core.scss +5 -0
  340. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +1 -1
  341. data/vendor/assets/stylesheets/fontawesome/_icons.scss +651 -2
  342. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -1
  343. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +3 -2
  344. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +1 -1
  345. data/vendor/assets/stylesheets/fontawesome/_variables.scss +662 -9
  346. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +2 -2
  347. data/vendor/assets/stylesheets/fontawesome/regular.scss +23 -0
  348. data/vendor/assets/stylesheets/fontawesome/solid.scss +24 -0
  349. metadata +128 -81
  350. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +0 -32
  351. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +0 -29
  352. data/app/helpers/alchemy/essences_helper.rb +0 -119
  353. data/app/models/concerns/alchemy/content_touching.rb +0 -23
  354. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -15
  355. data/app/views/alchemy/admin/contents/_missing.html.erb +0 -17
  356. data/app/views/alchemy/admin/pages/_menu_fields.html.erb +0 -33
  357. data/app/views/alchemy/admin/pages/configure_external.html.erb +0 -32
  358. data/app/views/alchemy/elements/_editor_not_found.html.erb +0 -4
  359. data/app/views/alchemy/navigation/_image_link.html.erb +0 -14
  360. data/app/views/alchemy/navigation/_link.html.erb +0 -19
  361. data/app/views/alchemy/navigation/_renderer.html.erb +0 -29
  362. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -363
  363. data/db/migrate/20180227224537_migrate_tags_to_gutentag.rb +0 -41
  364. data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +0 -6
  365. data/db/migrate/20191016073858_create_alchemy_essence_pages.rb +0 -8
  366. data/db/migrate/20191029212236_create_alchemy_nodes.rb +0 -24
  367. data/db/migrate/20200226081535_add_site_id_to_alchemy_nodes.rb +0 -15
  368. data/lib/alchemy/ssl_protection.rb +0 -32
  369. data/lib/alchemy/tasks/helpers.rb +0 -81
  370. data/lib/alchemy/test_support/controller_requests.rb +0 -93
  371. data/lib/alchemy/upgrader/four_point_four.rb +0 -52
  372. data/lib/alchemy/upgrader/four_point_one.rb +0 -42
  373. data/lib/alchemy/upgrader/four_point_two.rb +0 -85
  374. data/lib/alchemy/upgrader/tasks/cells_migration.rb +0 -43
  375. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +0 -148
  376. data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +0 -28
  377. data/lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb +0 -27
  378. data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +0 -65
  379. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +0 -210
  380. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +0 -15
  381. data/lib/rails/generators/alchemy/install/install_generator.rb +0 -60
  382. data/lib/tasks/alchemy/convert.rake +0 -95
  383. data/vendor/assets/stylesheets/fontawesome/fa-regular.scss +0 -22
  384. 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: 9af617bbf653eb9e5c293217f9dfc90060aaa22da0b306f0320c4da5858fbb9c
4
- data.tar.gz: 405d140847ff533931bc8e759fc2cd1ae934ca0c856fe4e27cf346426f950867
3
+ metadata.gz: a47529eb07ef956c81fe417efd5570b37a0d56e689ee3079c9bc623b91b8bc28
4
+ data.tar.gz: 9bb8aa6ca4eab610212690d3630c223269d3d6cb28224e33a9a4838fb4869c81
5
5
  SHA512:
6
- metadata.gz: af4468b1a30d64e3ddbaad1aaeacd20f65b417651a23768ee6196348d9a9f0bb34734a9800fc5d236dc88e6ab4e6f50ba0e40c7baea490de5d97383b501bfdca
7
- data.tar.gz: 88f2e7796ef2bd46b9cde670f0acd6f14e664bea97bc0170c607258c62cfd114aa8474754e7f5223e86b86cd58c09b1a9c9fc27da3aa118b90b60fb85d3a8cf4
6
+ metadata.gz: df610fff48f0e7a30c0f348b20c452a8ade6226a9ce6457b497d76e3cdc7269d43cfe24da082687773de1c9a692df0116475b87469e9538899bc142e7d49397e
7
+ data.tar.gz: 89281dc3a6bccd9d537adc2662143e61f023f38205a3474a1d4f6a63b40dea7374df95f7f40614aee771f14de7bec44f92afb68dfcffafb1df1028f416bb0c79
@@ -19,21 +19,29 @@ jobs:
19
19
  - postgresql
20
20
  env:
21
21
  DB: ${{ matrix.database }}
22
- MYSQL_PASSWORD: root
23
- POSTGRES_USER: postgres
24
- POSTGRES_PASSWORD: password
22
+ DB_USER: alchemy_user
23
+ DB_PASSWORD: password
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
31
30
  env:
32
- POSTGRES_USER: postgres
31
+ POSTGRES_USER: alchemy_user
33
32
  POSTGRES_PASSWORD: password
34
33
  POSTGRES_DB: alchemy_cms_dummy_test
35
34
  ports: ['5432:5432']
36
35
  options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
36
+ mysql:
37
+ image: mysql:latest
38
+ ports: ['3306:3306']
39
+ env:
40
+ MYSQL_USER: alchemy_user
41
+ MYSQL_PASSWORD: password
42
+ MYSQL_DATABASE: alchemy_cms_dummy_test
43
+ MYSQL_ROOT_PASSWORD: password
44
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
37
45
  steps:
38
46
  - uses: actions/checkout@v1
39
47
  - name: Set up Ruby
@@ -52,15 +60,15 @@ jobs:
52
60
  if: matrix.database == 'postgresql'
53
61
  run: |
54
62
  mkdir -p /home/runner/apt/cache
55
- sudo apt-get update -qq
56
- sudo apt-get install -qq --fix-missing libpq-dev -o dir::cache::archives="/home/runner/apt/cache"
63
+ sudo apt update -qq
64
+ sudo apt install -qq --fix-missing libpq-dev -o dir::cache::archives="/home/runner/apt/cache"
57
65
  sudo chown -R runner /home/runner/apt/cache
58
66
  - name: Install MySQL headers
59
67
  if: matrix.database == 'mysql'
60
68
  run: |
61
69
  mkdir -p /home/runner/apt/cache
62
- sudo apt-get update -qq
63
- sudo apt-get install -qq --fix-missing libmysqlclient-dev -o dir::cache::archives="/home/runner/apt/cache"
70
+ sudo apt update -qq
71
+ sudo apt install -qq --fix-missing libmysqlclient-dev -o dir::cache::archives="/home/runner/apt/cache"
64
72
  sudo chown -R runner /home/runner/apt/cache
65
73
  - name: Install bundler
66
74
  run: |
@@ -77,20 +85,50 @@ jobs:
77
85
  timeout-minutes: 10
78
86
  run: |
79
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-
80
96
  - name: Prepare database
81
97
  run: |
82
98
  bundle exec rake alchemy:spec:prepare
83
- - name: Install code climate test reporter
84
- run: |
85
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
86
- chmod +x ./cc-test-reporter
87
- ./cc-test-reporter before-build
88
- - name: Test with RSpec
89
- run: |
90
- bundle exec rspec
91
- ./cc-test-reporter after-build --exit-code $?
99
+ - name: Run tests & publish code coverage
100
+ uses: paambaati/codeclimate-action@v2.5.7
101
+ env:
102
+ CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
103
+ with:
104
+ coverageCommand: bundle exec rspec
92
105
  - uses: actions/upload-artifact@master
93
106
  if: failure()
94
107
  with:
95
108
  name: Screenshots
96
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:
@@ -0,0 +1,6 @@
1
+ {
2
+ "semi": false,
3
+ "trailingComma": "none",
4
+ "vueIndentScriptAndStyle": true,
5
+ "arrowParens": "always"
6
+ }
@@ -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,18 +9,12 @@ AllCops:
8
9
  - 'spec/dummy/config/**/*'
9
10
  - 'alchemy_cms.gemspec'
10
11
  - 'Rakefile'
11
-
12
- TargetRubyVersion: 2.3
12
+ - 'node_modules/**/*'
13
13
 
14
14
  # Really, rubocop?
15
15
  Bundler/OrderedGems:
16
16
  Enabled: false
17
17
 
18
- # Sometimes I believe this reads better
19
- # This also causes spacing issues on multi-line fixes
20
- Style/BracesAroundHashParameters:
21
- Enabled: false
22
-
23
18
  Style/EmptyLiteral:
24
19
  Enabled: false
25
20
 
@@ -27,6 +22,9 @@ Style/EmptyLiteral:
27
22
  Style/ClassVars:
28
23
  Enabled: false
29
24
 
25
+ Style/FloatDivision:
26
+ EnforcedStyle: left_coerce
27
+
30
28
  # This has been used for customization
31
29
  Style/MutableConstant:
32
30
  Enabled: false
@@ -55,13 +53,13 @@ Style/MixinUsage:
55
53
  Exclude:
56
54
  - spec/**/*
57
55
 
58
- Performance/Count:
56
+ Layout/ArgumentAlignment:
59
57
  Enabled: false
60
58
 
61
- Layout/AlignHash:
59
+ Layout/HashAlignment:
62
60
  Enabled: false
63
61
 
64
- Layout/AlignParameters:
62
+ Layout/ParameterAlignment:
65
63
  Enabled: false
66
64
 
67
65
  Layout/ClosingParenthesisIndentation:
@@ -77,18 +75,22 @@ Layout/ElseAlignment:
77
75
  Layout/EmptyLineAfterMagicComment:
78
76
  Enabled: false
79
77
 
80
- Layout/IndentArray:
81
- Enabled: false
78
+ Layout/EmptyLinesAroundAccessModifier:
79
+ Exclude:
80
+ - lib/alchemy/test_support/factories/*.rb
82
81
 
83
- Layout/IndentHash:
82
+ Layout/FirstArrayElementIndentation:
84
83
  Enabled: false
85
84
 
86
- Layout/IndentHeredoc:
87
- EnforcedStyle: active_support
85
+ Layout/FirstHashElementIndentation:
86
+ Enabled: false
88
87
 
89
88
  Layout/IndentationWidth:
90
89
  Enabled: false
91
90
 
91
+ Layout/LineLength:
92
+ Enabled: false
93
+
92
94
  Layout/MultilineHashBraceLayout:
93
95
  Enabled: false
94
96
 
@@ -115,7 +117,10 @@ Layout/SpaceInsideParens:
115
117
  Layout/EndAlignment:
116
118
  Enabled: false
117
119
 
118
- Lint/HandleExceptions:
120
+ Layout/RescueEnsureAlignment:
121
+ Enabled: false
122
+
123
+ Lint/SuppressedException:
119
124
  Exclude:
120
125
  - 'config/initializers/mini_profiler.rb'
121
126
 
@@ -216,8 +221,19 @@ Style/SpecialGlobalVars:
216
221
  StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
217
222
 
218
223
  Style/StringLiterals:
219
- Enabled: false
220
- 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
221
237
 
222
238
  Style/WhileUntilModifier:
223
239
  Enabled: false
@@ -268,9 +284,6 @@ Metrics/ModuleLength:
268
284
  Metrics/CyclomaticComplexity:
269
285
  Enabled: false
270
286
 
271
- Metrics/LineLength:
272
- Enabled: false
273
-
274
287
  Metrics/MethodLength:
275
288
  Enabled: false
276
289
 
@@ -1,5 +1,125 @@
1
1
  ## 5.0.0 (unreleased)
2
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))
90
+
91
+ ## 4.6.1 (2020-06-04)
92
+
93
+ - Fix 4.6 upgrader
94
+
95
+ ## 4.6.0 (2020-06-04)
96
+
97
+ - Use apt update instead of apt-get in GH action [#1865](https://github.com/AlchemyCMS/alchemy_cms/pull/1865) ([tvdeyen](https://github.com/tvdeyen))
98
+ - Use depth for page tree serializer root_or_leaf [#1864](https://github.com/AlchemyCMS/alchemy_cms/pull/1864) ([tvdeyen](https://github.com/tvdeyen))
99
+ - Fix sitemap wrapper height [#1861](https://github.com/AlchemyCMS/alchemy_cms/pull/1861) ([tvdeyen](https://github.com/tvdeyen))
100
+ - Do not return the root page with API responses. [#1860](https://github.com/AlchemyCMS/alchemy_cms/pull/1860) ([tvdeyen](https://github.com/tvdeyen))
101
+ - Introduce page.url_path and use it for alchemyPageSelect [#1859](https://github.com/AlchemyCMS/alchemy_cms/pull/1859) ([tvdeyen](https://github.com/tvdeyen))
102
+ - Update Urlname translation [#1857](https://github.com/AlchemyCMS/alchemy_cms/pull/1857) ([tvdeyen](https://github.com/tvdeyen))
103
+ - Show url name in Page tree [#1856](https://github.com/AlchemyCMS/alchemy_cms/pull/1856) ([tvdeyen](https://github.com/tvdeyen))
104
+ - Deprecate Page#visible attribute [#1855](https://github.com/AlchemyCMS/alchemy_cms/pull/1855) ([tvdeyen](https://github.com/tvdeyen))
105
+ - 4.6: Re-add `auto_logout_time` configuration option [#1852](https://github.com/AlchemyCMS/alchemy_cms/pull/1852) ([mamhoff](https://github.com/mamhoff))
106
+ - Backport ContentEditor to 4.6, deprecate removed methods on `Alchemy::Content` [#1847](https://github.com/AlchemyCMS/alchemy_cms/pull/1847) ([mamhoff](https://github.com/mamhoff))
107
+ - Deprecate auto_logout_time (4.6) [#1843](https://github.com/AlchemyCMS/alchemy_cms/pull/1843) ([tvdeyen](https://github.com/tvdeyen))
108
+ - Deprecate require_ssl (4.6) [#1842](https://github.com/AlchemyCMS/alchemy_cms/pull/1842) ([tvdeyen](https://github.com/tvdeyen))
109
+ - Deprecate url_nesting configuration (4.6) [#1841](https://github.com/AlchemyCMS/alchemy_cms/pull/1841) ([tvdeyen](https://github.com/tvdeyen))
110
+ - Allow page visible toggle (4.6) [#1838](https://github.com/AlchemyCMS/alchemy_cms/pull/1838) ([tvdeyen](https://github.com/tvdeyen))
111
+
112
+ ## 4.5.0 (2020-03-30)
113
+
114
+ - Sortable menus [#1758](https://github.com/AlchemyCMS/alchemy_cms/pull/1758) ([mamhoff](https://github.com/mamhoff))
115
+ - Programmatic menus [#1756](https://github.com/AlchemyCMS/alchemy_cms/pull/1756) ([mamhoff](https://github.com/mamhoff))
116
+ - Fix syntax in non-erb Menu templates [#1751]((https://github.com/AlchemyCMS/alchemy_cms/pull/1751)) ([Alexander ADAM](https://github.com/alexanderadam))
117
+ - Fix `render_menu` for custom controllers [#1746]((https://github.com/AlchemyCMS/alchemy_cms/pull/1746)) ([Alexander ADAM](https://github.com/alexanderadam))
118
+
119
+ ## 4.4.4 (2020-02-28)
120
+
121
+ - Fix new menu form [#1740](https://github.com/AlchemyCMS/alchemy_cms/pull/1740) ([tvdeyen](https://github.com/tvdeyen))
122
+
3
123
  ## 4.4.3 (2020-02-26)
4
124
 
5
125
  - Scope nodes to sites [#1738](https://github.com/AlchemyCMS/alchemy_cms/pull/1738) ([tvdeyen](https://github.com/tvdeyen))
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