alchemy_cms 4.6.0 → 5.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) 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 +30 -9
  8. data/CHANGELOG.md +100 -0
  9. data/Gemfile +24 -22
  10. data/README.md +32 -20
  11. data/Rakefile +11 -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/navigation.scss +1 -0
  25. data/app/assets/stylesheets/alchemy/node-select.scss +43 -0
  26. data/app/assets/stylesheets/alchemy/nodes.scss +1 -1
  27. data/app/assets/stylesheets/alchemy/sitemap.scss +5 -1
  28. data/app/assets/stylesheets/alchemy/tables.scss +1 -24
  29. data/app/assets/stylesheets/alchemy/tags.scss +2 -2
  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 +4 -6
  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 +20 -18
  81. data/app/models/alchemy/base_record.rb +2 -5
  82. data/app/models/alchemy/content.rb +33 -38
  83. data/app/models/alchemy/content/factory.rb +24 -31
  84. data/app/models/alchemy/element.rb +45 -53
  85. data/app/models/alchemy/element/definitions.rb +4 -4
  86. data/app/models/alchemy/element/element_contents.rb +9 -6
  87. data/app/models/alchemy/element/element_essences.rb +4 -3
  88. data/app/models/alchemy/element/presenters.rb +3 -2
  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.rb +21 -35
  104. data/app/models/alchemy/language/code.rb +4 -4
  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 +27 -4
  108. data/app/models/alchemy/page.rb +46 -127
  109. data/app/models/alchemy/page/fixed_attributes.rb +3 -2
  110. data/app/models/alchemy/page/page_elements.rb +35 -44
  111. data/app/models/alchemy/page/page_naming.rb +20 -70
  112. data/app/models/alchemy/page/page_natures.rb +7 -34
  113. data/app/models/alchemy/page/page_scopes.rb +23 -29
  114. data/app/models/alchemy/page/url_path.rb +0 -2
  115. data/app/models/alchemy/picture.rb +40 -30
  116. data/app/models/alchemy/picture/preprocessor.rb +26 -0
  117. data/app/models/alchemy/picture/transformations.rb +9 -7
  118. data/app/models/alchemy/picture/url.rb +5 -5
  119. data/app/models/alchemy/site.rb +6 -36
  120. data/app/models/alchemy/site/layout.rb +2 -2
  121. data/app/models/concerns/alchemy/touch_elements.rb +24 -0
  122. data/app/serializers/alchemy/content_serializer.rb +0 -3
  123. data/app/serializers/alchemy/essence_boolean_serializer.rb +3 -3
  124. data/app/serializers/alchemy/essence_date_serializer.rb +3 -3
  125. data/app/serializers/alchemy/essence_file_serializer.rb +4 -2
  126. data/app/serializers/alchemy/essence_html_serializer.rb +3 -3
  127. data/app/serializers/alchemy/essence_link_serializer.rb +3 -3
  128. data/app/serializers/alchemy/essence_picture_serializer.rb +5 -4
  129. data/app/serializers/alchemy/essence_richtext_serializer.rb +3 -3
  130. data/app/serializers/alchemy/essence_select_serializer.rb +3 -3
  131. data/app/serializers/alchemy/essence_text_serializer.rb +5 -4
  132. data/app/serializers/alchemy/node_serializer.rb +2 -0
  133. data/app/serializers/alchemy/page_tree_serializer.rb +9 -13
  134. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -2
  135. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +1 -2
  136. data/app/views/alchemy/admin/attachments/_files_list.html.erb +4 -4
  137. data/app/views/alchemy/admin/contents/create.js.erb +1 -3
  138. data/app/views/alchemy/admin/elements/_element.html.erb +9 -18
  139. data/app/views/alchemy/admin/elements/create.js.erb +1 -1
  140. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  141. data/app/views/alchemy/admin/elements/index.html.erb +3 -3
  142. data/app/views/alchemy/admin/essence_files/assign.js.erb +1 -6
  143. data/app/views/alchemy/admin/essence_files/edit.html.erb +1 -1
  144. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +1 -7
  145. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  146. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +7 -7
  147. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -1
  148. data/app/views/alchemy/admin/languages/_form.html.erb +5 -5
  149. data/app/views/alchemy/admin/languages/_table.html.erb +3 -3
  150. data/app/views/alchemy/admin/languages/edit.html.erb +1 -0
  151. data/app/views/alchemy/admin/languages/index.html.erb +23 -4
  152. data/app/views/alchemy/admin/languages/new.html.erb +1 -0
  153. data/app/views/alchemy/admin/layoutpages/index.html.erb +3 -3
  154. data/app/views/alchemy/admin/nodes/_form.html.erb +18 -15
  155. data/app/views/alchemy/admin/nodes/_node.html.erb +1 -5
  156. data/app/views/alchemy/admin/nodes/index.html.erb +3 -4
  157. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +0 -8
  158. data/app/views/alchemy/admin/pages/_form.html.erb +0 -1
  159. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -0
  160. data/app/views/alchemy/admin/pages/_page.html.erb +11 -19
  161. data/app/views/alchemy/admin/pages/_page_infos.html.erb +0 -4
  162. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  163. data/app/views/alchemy/admin/pages/info.html.erb +0 -9
  164. data/app/views/alchemy/admin/pages/unlock.js.erb +13 -6
  165. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +0 -2
  166. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -5
  167. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  168. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -2
  169. data/app/views/alchemy/admin/pictures/index.html.erb +18 -3
  170. data/app/views/alchemy/admin/resources/_resource.html.erb +1 -1
  171. data/app/views/alchemy/admin/resources/_table.html.erb +2 -2
  172. data/app/views/alchemy/admin/sites/_form.html.erb +8 -0
  173. data/app/views/alchemy/admin/sites/edit.html.erb +1 -0
  174. data/app/views/alchemy/admin/sites/index.html.erb +21 -9
  175. data/app/views/alchemy/admin/sites/new.html.erb +1 -0
  176. data/app/views/alchemy/admin/tags/index.html.erb +2 -2
  177. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +10 -12
  178. data/app/views/alchemy/essences/_essence_date_editor.html.erb +11 -8
  179. data/app/views/alchemy/essences/_essence_file_editor.html.erb +16 -17
  180. data/app/views/alchemy/essences/_essence_html_editor.html.erb +8 -5
  181. data/app/views/alchemy/essences/_essence_link_editor.html.erb +18 -15
  182. data/app/views/alchemy/essences/_essence_node_editor.html.erb +27 -0
  183. data/app/views/alchemy/essences/_essence_node_view.html.erb +1 -0
  184. data/app/views/alchemy/essences/_essence_page_editor.html.erb +14 -11
  185. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +22 -20
  186. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +10 -7
  187. data/app/views/alchemy/essences/_essence_select_editor.html.erb +12 -16
  188. data/app/views/alchemy/essences/_essence_text_editor.html.erb +18 -17
  189. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +6 -11
  190. data/app/views/alchemy/pages/show.rss.builder +3 -2
  191. data/app/views/layouts/alchemy/admin.html.erb +1 -0
  192. data/babel.config.js +12 -0
  193. data/bin/rails +5 -4
  194. data/config/alchemy/config.yml +23 -16
  195. data/config/brakeman.ignore +1 -1
  196. data/config/initializers/assets.rb +2 -1
  197. data/config/initializers/dragonfly.rb +2 -1
  198. data/config/initializers/mime_types.rb +1 -0
  199. data/config/initializers/mini_profiler.rb +3 -2
  200. data/config/initializers/simple_form.rb +6 -6
  201. data/config/locales/alchemy.en.yml +23 -8
  202. data/config/routes.rb +25 -24
  203. data/config/spring.rb +3 -2
  204. data/db/migrate/20200226213334_alchemy_four_point_four.rb +313 -0
  205. data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +11 -0
  206. data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +28 -0
  207. data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +8 -0
  208. data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +27 -0
  209. data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +6 -0
  210. data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +24 -0
  211. data/lib/alchemy/admin/locale.rb +3 -1
  212. data/lib/alchemy/admin/preview_url.rb +85 -0
  213. data/lib/alchemy/auth_accessors.rb +8 -7
  214. data/lib/alchemy/cache_digests/template_tracker.rb +5 -4
  215. data/lib/alchemy/config.rb +3 -5
  216. data/lib/alchemy/configuration_methods.rb +3 -1
  217. data/lib/alchemy/controller_actions.rb +6 -5
  218. data/lib/alchemy/deprecation.rb +2 -1
  219. data/lib/alchemy/elements_finder.rb +5 -5
  220. data/lib/alchemy/engine.rb +23 -8
  221. data/lib/alchemy/errors.rb +0 -7
  222. data/lib/alchemy/essence.rb +17 -16
  223. data/lib/alchemy/filetypes.rb +5 -5
  224. data/lib/alchemy/forms/builder.rb +4 -4
  225. data/lib/alchemy/hints.rb +1 -1
  226. data/lib/alchemy/i18n.rb +2 -1
  227. data/lib/alchemy/install/tasks.rb +41 -0
  228. data/lib/alchemy/modules.rb +12 -12
  229. data/lib/alchemy/name_conversions.rb +5 -5
  230. data/lib/alchemy/on_page_layout/callbacks_runner.rb +1 -0
  231. data/lib/alchemy/page_layout.rb +15 -12
  232. data/lib/alchemy/paths.rb +1 -1
  233. data/lib/alchemy/permissions.rb +7 -6
  234. data/lib/alchemy/resource.rb +25 -15
  235. data/lib/alchemy/resources_helper.rb +12 -18
  236. data/lib/alchemy/routing_constraints.rb +1 -1
  237. data/lib/alchemy/seeder.rb +42 -14
  238. data/lib/alchemy/shell.rb +13 -10
  239. data/lib/alchemy/taggable.rb +1 -0
  240. data/lib/alchemy/tasks/tidy.rb +4 -3
  241. data/lib/alchemy/test_support/config_stubbing.rb +1 -0
  242. data/lib/alchemy/test_support/essence_shared_examples.rb +72 -72
  243. data/lib/alchemy/test_support/factories.rb +1 -1
  244. data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -5
  245. data/lib/alchemy/test_support/factories/content_factory.rb +6 -6
  246. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +7 -7
  247. data/lib/alchemy/test_support/factories/element_factory.rb +9 -9
  248. data/lib/alchemy/test_support/factories/essence_file_factory.rb +3 -3
  249. data/lib/alchemy/test_support/factories/essence_page_factory.rb +3 -3
  250. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +4 -4
  251. data/lib/alchemy/test_support/factories/essence_text_factory.rb +3 -3
  252. data/lib/alchemy/test_support/factories/language_factory.rb +21 -14
  253. data/lib/alchemy/test_support/factories/node_factory.rb +8 -8
  254. data/lib/alchemy/test_support/factories/page_factory.rb +15 -27
  255. data/lib/alchemy/test_support/factories/picture_factory.rb +5 -5
  256. data/lib/alchemy/test_support/factories/site_factory.rb +7 -6
  257. data/lib/alchemy/test_support/integration_helpers.rb +1 -0
  258. data/lib/alchemy/test_support/shared_contexts.rb +5 -4
  259. data/lib/alchemy/test_support/shared_uploader_examples.rb +4 -3
  260. data/lib/alchemy/tinymce.rb +15 -13
  261. data/lib/alchemy/upgrader.rb +8 -7
  262. data/lib/alchemy/upgrader/five_point_zero.rb +41 -0
  263. data/lib/alchemy/upgrader/tasks/element_views_updater.rb +4 -4
  264. data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +29 -0
  265. data/lib/alchemy/version.rb +1 -1
  266. data/lib/alchemy_cms.rb +52 -50
  267. data/lib/{rails/generators → generators}/alchemy/base.rb +5 -4
  268. data/lib/{rails/generators → generators}/alchemy/elements/elements_generator.rb +13 -9
  269. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.erb +0 -0
  270. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.haml +0 -0
  271. data/lib/{rails/generators → generators}/alchemy/elements/templates/view.html.slim +0 -0
  272. data/lib/{rails/generators → generators}/alchemy/essence/essence_generator.rb +15 -13
  273. data/lib/generators/alchemy/essence/templates/editor.html.erb +17 -0
  274. data/lib/{rails/generators → generators}/alchemy/essence/templates/view.html.erb +0 -0
  275. data/lib/{rails/generators → generators}/alchemy/install/files/_article.html.erb +0 -0
  276. data/lib/{rails/generators → generators}/alchemy/install/files/_standard.html.erb +0 -0
  277. data/lib/{rails/generators → generators}/alchemy/install/files/alchemy.en.yml +0 -0
  278. data/lib/generators/alchemy/install/files/alchemy_admin.js +1 -0
  279. data/lib/{rails/generators → generators}/alchemy/install/files/all.css +0 -0
  280. data/lib/{rails/generators → generators}/alchemy/install/files/all.js +0 -0
  281. data/lib/{rails/generators → generators}/alchemy/install/files/application.html.erb +0 -0
  282. data/lib/{rails/generators → generators}/alchemy/install/files/article.scss +0 -0
  283. data/lib/generators/alchemy/install/install_generator.rb +169 -0
  284. data/lib/{rails/generators → generators}/alchemy/install/templates/dragonfly.rb.tt +0 -0
  285. data/lib/{rails/generators → generators}/alchemy/install/templates/elements.yml.tt +0 -0
  286. data/lib/{rails/generators → generators}/alchemy/install/templates/menus.yml.tt +0 -0
  287. data/lib/{rails/generators → generators}/alchemy/install/templates/page_layouts.yml.tt +0 -0
  288. data/lib/{rails/generators → generators}/alchemy/menus/menus_generator.rb +2 -2
  289. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.erb +1 -4
  290. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.haml +1 -4
  291. data/lib/{rails/generators → generators}/alchemy/menus/templates/node.html.slim +1 -4
  292. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.erb +1 -1
  293. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.haml +1 -1
  294. data/lib/{rails/generators → generators}/alchemy/menus/templates/wrapper.html.slim +1 -1
  295. data/lib/{rails/generators → generators}/alchemy/module/module_generator.rb +3 -2
  296. data/lib/{rails/generators → generators}/alchemy/module/templates/ability.rb.tt +0 -0
  297. data/lib/{rails/generators → generators}/alchemy/module/templates/controller.rb.tt +0 -0
  298. data/lib/{rails/generators → generators}/alchemy/module/templates/module_config.rb.tt +0 -0
  299. data/lib/{rails/generators → generators}/alchemy/page_layouts/page_layouts_generator.rb +5 -4
  300. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.erb +0 -0
  301. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.haml +0 -0
  302. data/lib/{rails/generators → generators}/alchemy/page_layouts/templates/layout.html.slim +0 -0
  303. data/lib/{rails/generators → generators}/alchemy/site_layouts/site_layouts_generator.rb +4 -2
  304. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.erb +0 -0
  305. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.haml +0 -0
  306. data/lib/{rails/generators → generators}/alchemy/site_layouts/templates/layout.html.slim +0 -0
  307. data/lib/{rails/generators → generators}/alchemy/views/views_generator.rb +7 -6
  308. data/lib/kaminari/scoped_pagination_url_helper.rb +1 -0
  309. data/lib/tasks/alchemy/db.rake +3 -19
  310. data/lib/tasks/alchemy/install.rake +5 -48
  311. data/lib/tasks/alchemy/tidy.rake +9 -8
  312. data/lib/tasks/alchemy/upgrade.rake +18 -116
  313. data/package.json +45 -0
  314. data/package/admin.js +14 -0
  315. data/package/src/__tests__/i18n.spec.js +70 -0
  316. data/package/src/i18n.js +48 -0
  317. data/package/src/node_tree.js +72 -0
  318. data/package/src/translations.js +32 -0
  319. data/package/src/utils/__tests__/ajax.spec.js +124 -0
  320. data/package/src/utils/__tests__/events.spec.js +38 -0
  321. data/package/src/utils/ajax.js +48 -0
  322. data/package/src/utils/events.js +16 -0
  323. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  324. data/vendor/assets/fonts/fa-regular-400.svg +798 -358
  325. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  326. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  327. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  328. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  329. data/vendor/assets/fonts/fa-solid-900.svg +4933 -1408
  330. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  331. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  332. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  333. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +1 -2
  334. data/vendor/assets/stylesheets/fontawesome/_core.scss +5 -0
  335. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +1 -1
  336. data/vendor/assets/stylesheets/fontawesome/_icons.scss +651 -2
  337. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -1
  338. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +3 -2
  339. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +1 -1
  340. data/vendor/assets/stylesheets/fontawesome/_variables.scss +662 -9
  341. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +2 -2
  342. data/vendor/assets/stylesheets/fontawesome/regular.scss +23 -0
  343. data/vendor/assets/stylesheets/fontawesome/solid.scss +24 -0
  344. metadata +114 -90
  345. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +0 -32
  346. data/app/assets/javascripts/alchemy/alchemy.node_tree.js +0 -66
  347. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +0 -29
  348. data/app/assets/javascripts/alchemy/alchemy.utils.js +0 -45
  349. data/app/helpers/alchemy/essences_helper.rb +0 -119
  350. data/app/models/concerns/alchemy/content_touching.rb +0 -23
  351. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -15
  352. data/app/views/alchemy/admin/contents/_missing.html.erb +0 -17
  353. data/app/views/alchemy/admin/pages/_menu_fields.html.erb +0 -37
  354. data/app/views/alchemy/admin/pages/configure_external.html.erb +0 -32
  355. data/app/views/alchemy/elements/_editor_not_found.html.erb +0 -4
  356. data/app/views/alchemy/navigation/_image_link.html.erb +0 -14
  357. data/app/views/alchemy/navigation/_link.html.erb +0 -19
  358. data/app/views/alchemy/navigation/_renderer.html.erb +0 -29
  359. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -363
  360. data/db/migrate/20180227224537_migrate_tags_to_gutentag.rb +0 -41
  361. data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +0 -6
  362. data/db/migrate/20191016073858_create_alchemy_essence_pages.rb +0 -8
  363. data/db/migrate/20191029212236_create_alchemy_nodes.rb +0 -24
  364. data/db/migrate/20200226081535_add_site_id_to_alchemy_nodes.rb +0 -15
  365. data/lib/alchemy/ssl_protection.rb +0 -34
  366. data/lib/alchemy/tasks/helpers.rb +0 -81
  367. data/lib/alchemy/test_support/controller_requests.rb +0 -93
  368. data/lib/alchemy/upgrader/four_point_four.rb +0 -52
  369. data/lib/alchemy/upgrader/four_point_one.rb +0 -42
  370. data/lib/alchemy/upgrader/four_point_six.rb +0 -50
  371. data/lib/alchemy/upgrader/four_point_two.rb +0 -85
  372. data/lib/alchemy/upgrader/tasks/cells_migration.rb +0 -43
  373. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +0 -148
  374. data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +0 -28
  375. data/lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb +0 -27
  376. data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +0 -65
  377. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +0 -210
  378. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +0 -15
  379. data/lib/rails/generators/alchemy/install/install_generator.rb +0 -60
  380. data/lib/tasks/alchemy/convert.rake +0 -97
  381. data/vendor/assets/javascripts/sortable/Sortable.min.js +0 -2
  382. data/vendor/assets/stylesheets/fontawesome/fa-regular.scss +0 -22
  383. 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: f321858feead1aacab75385da9c01e7a8db1018adaf2e5f2ccb714be4c8edf44
4
- data.tar.gz: 68ae5e042e449693217ab9390a04b5a6bab6d6810011e1c0aaaf8c3f80065f43
3
+ metadata.gz: cb305961a97845dc249d123acf15ed281e69e13a4be8879eedcb5a858723a5fd
4
+ data.tar.gz: 6b3d61f36b20ccb41fd0d1f21a26bff8a6fe14f6cf18a2661c63b6044fd5ac2c
5
5
  SHA512:
6
- metadata.gz: 78af2956df792c714818a8cdf91b3e3d87afa53c62617dd2d373eb168ce0bcc62c561f1a1343cb1ee9515f827a45e671330d1622abac789cdcff27b1658d1a8e
7
- data.tar.gz: 54995595358bd0692c01892f4c1fc2691725f0e89846483c2d23bb519304e90177997ef61f4fb37e760100e10baf28dc4d8a3664ff1a9e4c431e64f2ce2bc5da
6
+ metadata.gz: 31c91f9169a7a21982f769fe85ed77d4d6d4609eb6de6b37b6d2006a9aeaa5d63bc775280ca37dbdbf37edff969ea28384cc3c92451c36b932f3bfde0025e665
7
+ data.tar.gz: bc74c7d3bbefe12c90506e8e874c230001deed4dffc2acd5504e3c304d375ef41b818a85ce645e5c95ff064aae3a042fdd27d2c8f4dd01aadc61f764469118a1
@@ -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:
@@ -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,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:
224
+ EnforcedStyle: double_quotes
225
+
226
+ Style/StringLiteralsInInterpolation:
227
+ EnforcedStyle: double_quotes
228
+
229
+ Style/TrailingCommaInArguments:
211
230
  Enabled: false
212
- StyleGuide: http://relaxed.ruby.style/#stylestringliterals
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
 
@@ -1,5 +1,105 @@
1
1
  ## 5.0.0 (unreleased)
2
2
 
3
+ - Deprecate redirect_to_public_child ([tvdeyen](https://github.com/tvdeyen))
4
+ - Add --auto-accept option to installer ([tvdeyen](https://github.com/tvdeyen))
5
+ - Move all installer code into install generator ([tvdeyen](https://github.com/tvdeyen))
6
+ - Language Factory: Create default language in host app's locale [#1884](https://github.com/AlchemyCMS/alchemy_cms/pull/1884) ([mamhoff](https://github.com/mamhoff))
7
+ - Respect filter and tagging params in picture archive size buttons [#1880](https://github.com/AlchemyCMS/alchemy_cms/pull/1880) ([tvdeyen](https://github.com/tvdeyen))
8
+ - Extract picture thumbnail sizes in a constant [#1879](https://github.com/AlchemyCMS/alchemy_cms/pull/1879) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Configurable Image Preprocessor [#1878](https://github.com/AlchemyCMS/alchemy_cms/pull/1878) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Configure edit page preview per site [#1877](https://github.com/AlchemyCMS/alchemy_cms/pull/1877) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Fix Page tree sorting after root page removal [#1876](https://github.com/AlchemyCMS/alchemy_cms/pull/1876) ([tvdeyen](https://github.com/tvdeyen))
12
+ - 5.0 Upgrader fixes [#1874](https://github.com/AlchemyCMS/alchemy_cms/pull/1874) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Remove url_nesting config [#1872](https://github.com/AlchemyCMS/alchemy_cms/pull/1872) ([tvdeyen](https://github.com/tvdeyen))
14
+ - [ruby] Upgrade sassc to version 2.4.0 [#1871](https://github.com/AlchemyCMS/alchemy_cms/pull/1871) ([depfu](https://github.com/apps/depfu))
15
+ - fix GitHub Actions spelling [#1869](https://github.com/AlchemyCMS/alchemy_cms/pull/1869) ([alexanderadam](https://github.com/alexanderadam))
16
+ - Remove Page#visible [#1868](https://github.com/AlchemyCMS/alchemy_cms/pull/1868) ([tvdeyen](https://github.com/tvdeyen))
17
+ - 4.6 backports for master [#1867](https://github.com/AlchemyCMS/alchemy_cms/pull/1867) ([tvdeyen](https://github.com/tvdeyen))
18
+ - Use apt update instead of apt-get in GH action [#1866](https://github.com/AlchemyCMS/alchemy_cms/pull/1866) ([tvdeyen](https://github.com/tvdeyen))
19
+ - [ruby] Upgrade rubocop to version 0.85.0 [#1863](https://github.com/AlchemyCMS/alchemy_cms/pull/1863) ([depfu](https://github.com/apps/depfu))
20
+ - Remove active_record_5_1? method [#1854](https://github.com/AlchemyCMS/alchemy_cms/pull/1854) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Use Alchemy npm package instead of hacking webpacker [#1853](https://github.com/AlchemyCMS/alchemy_cms/pull/1853) ([tvdeyen](https://github.com/tvdeyen))
22
+ - Fix node select ES5 syntax [#1851](https://github.com/AlchemyCMS/alchemy_cms/pull/1851) ([tvdeyen](https://github.com/tvdeyen))
23
+ - Run yarn:install after installing webpacker in install generator [#1850](https://github.com/AlchemyCMS/alchemy_cms/pull/1850) ([mamhoff](https://github.com/mamhoff))
24
+ - Remove male sign after emoji [#1849](https://github.com/AlchemyCMS/alchemy_cms/pull/1849) ([mamhoff](https://github.com/mamhoff))
25
+ - Do not use ES6 Syntax in Node Selector [#1846](https://github.com/AlchemyCMS/alchemy_cms/pull/1846) ([mamhoff](https://github.com/mamhoff))
26
+ - [ruby] Upgrade rubocop to version 0.84.0 [#1845](https://github.com/AlchemyCMS/alchemy_cms/pull/1845) ([depfu](https://github.com/apps/depfu))
27
+ - Always create nested urls [#1844](https://github.com/AlchemyCMS/alchemy_cms/pull/1844) ([tvdeyen](https://github.com/tvdeyen))
28
+ - Fix: Add indifferent access to default options in encoded_image [#1840](https://github.com/AlchemyCMS/alchemy_cms/pull/1840) ([mickenorlen](https://github.com/mickenorlen))
29
+ - Set proper nested set scope on page [#1837](https://github.com/AlchemyCMS/alchemy_cms/pull/1837) ([tvdeyen](https://github.com/tvdeyen))
30
+ - Install Webpacker in install generator [#1835](https://github.com/AlchemyCMS/alchemy_cms/pull/1835) ([mamhoff](https://github.com/mamhoff))
31
+ - Fix deleting an EssenceNode from a content [#1834](https://github.com/AlchemyCMS/alchemy_cms/pull/1834) ([mamhoff](https://github.com/mamhoff))
32
+ - Use Rails standards for deleting pages from EssencePage [#1833](https://github.com/AlchemyCMS/alchemy_cms/pull/1833) ([mamhoff](https://github.com/mamhoff))
33
+ - Scope has one site [#1832](https://github.com/AlchemyCMS/alchemy_cms/pull/1832) ([mamhoff](https://github.com/mamhoff))
34
+ - Render nodes [#1831](https://github.com/AlchemyCMS/alchemy_cms/pull/1831) ([mamhoff](https://github.com/mamhoff))
35
+ - Add errors when node cant be deleted [#1828](https://github.com/AlchemyCMS/alchemy_cms/pull/1828) ([mamhoff](https://github.com/mamhoff))
36
+ - Add error flash to resource controller [#1827](https://github.com/AlchemyCMS/alchemy_cms/pull/1827) ([mamhoff](https://github.com/mamhoff))
37
+ - Fix Association between Nodes and EssenceNodes [#1826](https://github.com/AlchemyCMS/alchemy_cms/pull/1826) ([mamhoff](https://github.com/mamhoff))
38
+ - Translated root menus [#1825](https://github.com/AlchemyCMS/alchemy_cms/pull/1825) ([mamhoff](https://github.com/mamhoff))
39
+ - Use rails root in install generator [#1822](https://github.com/AlchemyCMS/alchemy_cms/pull/1822) ([tvdeyen](https://github.com/tvdeyen))
40
+ - Add a quick Node select [#1821](https://github.com/AlchemyCMS/alchemy_cms/pull/1821) ([mamhoff](https://github.com/mamhoff))
41
+ - Add has_one association for root page [#1820](https://github.com/AlchemyCMS/alchemy_cms/pull/1820) ([mamhoff](https://github.com/mamhoff))
42
+ - [js] Upgrade babel-jest to version 26.0.1 [#1819](https://github.com/AlchemyCMS/alchemy_cms/pull/1819) ([depfu](https://github.com/apps/depfu))
43
+ - Make page language mandatory [#1818](https://github.com/AlchemyCMS/alchemy_cms/pull/1818) ([tvdeyen](https://github.com/tvdeyen))
44
+ - Remove root page [#1817](https://github.com/AlchemyCMS/alchemy_cms/pull/1817) ([tvdeyen](https://github.com/tvdeyen))
45
+ - Fix page unlock page icon replacement [#1816](https://github.com/AlchemyCMS/alchemy_cms/pull/1816) ([tvdeyen](https://github.com/tvdeyen))
46
+ - Invoke rake task in upgrader instead of system call [#1815](https://github.com/AlchemyCMS/alchemy_cms/pull/1815) ([tvdeyen](https://github.com/tvdeyen))
47
+ - Remove old 4.4 upgrader class [#1814](https://github.com/AlchemyCMS/alchemy_cms/pull/1814) ([tvdeyen](https://github.com/tvdeyen))
48
+ - Remove Page.ancestors_for [#1813](https://github.com/AlchemyCMS/alchemy_cms/pull/1813) ([tvdeyen](https://github.com/tvdeyen))
49
+ - Remove layout root pages [#1812](https://github.com/AlchemyCMS/alchemy_cms/pull/1812) ([tvdeyen](https://github.com/tvdeyen))
50
+ - Use timestamps in migration [#1811](https://github.com/AlchemyCMS/alchemy_cms/pull/1811) ([tvdeyen](https://github.com/tvdeyen))
51
+ - Remove legacy element serializer [#1810](https://github.com/AlchemyCMS/alchemy_cms/pull/1810) ([tvdeyen](https://github.com/tvdeyen))
52
+ - Remove timestamps from essences and contents [#1809](https://github.com/AlchemyCMS/alchemy_cms/pull/1809) ([tvdeyen](https://github.com/tvdeyen))
53
+ - Remove stamper from contents [#1808](https://github.com/AlchemyCMS/alchemy_cms/pull/1808) ([tvdeyen](https://github.com/tvdeyen))
54
+ - Remove Site ID from nodes [#1807](https://github.com/AlchemyCMS/alchemy_cms/pull/1807) ([mamhoff](https://github.com/mamhoff))
55
+ - Add Alchemy::Language.has_many :nodes [#1806](https://github.com/AlchemyCMS/alchemy_cms/pull/1806) ([mamhoff](https://github.com/mamhoff))
56
+ - Drop Rails 5.0 and 5.1 support [#1805](https://github.com/AlchemyCMS/alchemy_cms/pull/1805) ([tvdeyen](https://github.com/tvdeyen))
57
+ - Remove enforce_ssl [#1804](https://github.com/AlchemyCMS/alchemy_cms/pull/1804) ([tvdeyen](https://github.com/tvdeyen))
58
+ - Make the preview url configurable [#1803](https://github.com/AlchemyCMS/alchemy_cms/pull/1803) ([tvdeyen](https://github.com/tvdeyen))
59
+ - Remove stamper from essences [#1802](https://github.com/AlchemyCMS/alchemy_cms/pull/1802) ([tvdeyen](https://github.com/tvdeyen))
60
+ - Use Rufo to format all files in a consistent way [#1799](https://github.com/AlchemyCMS/alchemy_cms/pull/1799) ([tvdeyen](https://github.com/tvdeyen))
61
+ - Remove acts_as_list from Content [#1798](https://github.com/AlchemyCMS/alchemy_cms/pull/1798) ([tvdeyen](https://github.com/tvdeyen))
62
+ - Add EssenceNode [#1792](https://github.com/AlchemyCMS/alchemy_cms/pull/1792) ([mamhoff](https://github.com/mamhoff))
63
+ - 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))
64
+ - [ruby] Upgrade sassc to version 2.3.0 [#1787](https://github.com/AlchemyCMS/alchemy_cms/pull/1787) ([depfu](https://github.com/apps/depfu))
65
+ - [ruby] Upgrade rubocop to version 0.82.0 [#1785](https://github.com/AlchemyCMS/alchemy_cms/pull/1785) ([depfu](https://github.com/apps/depfu))
66
+ - Fix regular icons [#1784](https://github.com/AlchemyCMS/alchemy_cms/pull/1784) ([tvdeyen](https://github.com/tvdeyen))
67
+ - Convert NodeTree into ES6 [#1782](https://github.com/AlchemyCMS/alchemy_cms/pull/1782) ([tvdeyen](https://github.com/tvdeyen))
68
+ - Add Webpacker [#1775](https://github.com/AlchemyCMS/alchemy_cms/pull/1775) ([tvdeyen](https://github.com/tvdeyen))
69
+ - Multi language menus [#1774](https://github.com/AlchemyCMS/alchemy_cms/pull/1774) ([rmparr](https://github.com/rmparr))
70
+ - On Boarding Flow [#1770](https://github.com/AlchemyCMS/alchemy_cms/pull/1770) ([tvdeyen](https://github.com/tvdeyen))
71
+ - Fix bug in language from session w/o site [#1769](https://github.com/AlchemyCMS/alchemy_cms/pull/1769) ([tvdeyen](https://github.com/tvdeyen))
72
+ - Fix fontawesome in production [#1765](https://github.com/AlchemyCMS/alchemy_cms/pull/1765) ([mickenorlen](https://github.com/mickenorlen))
73
+ - Remove implicit Site and Language creation [#1763](https://github.com/AlchemyCMS/alchemy_cms/pull/1763) ([mamhoff](https://github.com/mamhoff))
74
+ - 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))
75
+ - Add alchemy.test to development domains [#1760](https://github.com/AlchemyCMS/alchemy_cms/pull/1760) ([tvdeyen](https://github.com/tvdeyen))
76
+ - Update Fontawesome [#1759](https://github.com/AlchemyCMS/alchemy_cms/pull/1759) ([tvdeyen](https://github.com/tvdeyen))
77
+ - Fix test coverage reporting [#1757](https://github.com/AlchemyCMS/alchemy_cms/pull/1757) ([tvdeyen](https://github.com/tvdeyen))
78
+ - Remove references to nonexistent "scaffold" generator [#1755](https://github.com/AlchemyCMS/alchemy_cms/pull/1755) ([mamhoff](https://github.com/mamhoff))
79
+ - Remove Tasks::Helper module [#1754](https://github.com/AlchemyCMS/alchemy_cms/pull/1754) ([mamhoff](https://github.com/mamhoff))
80
+ - Update rubocop [#1753](https://github.com/AlchemyCMS/alchemy_cms/pull/1753) ([tvdeyen](https://github.com/tvdeyen))
81
+ - chores: use same _old_ Rubo:cop: version as Hound [#1752](https://github.com/AlchemyCMS/alchemy_cms/pull/1752) ([alexanderadam](https://github.com/alexanderadam))
82
+ - Fix date comparison in resource feature spec [#1750](https://github.com/AlchemyCMS/alchemy_cms/pull/1750) ([tvdeyen](https://github.com/tvdeyen))
83
+ - Fail spec prepare task if sub command fails [#1749](https://github.com/AlchemyCMS/alchemy_cms/pull/1749) ([tvdeyen](https://github.com/tvdeyen))
84
+ - Add MySQL service as service [#1748](https://github.com/AlchemyCMS/alchemy_cms/pull/1748) ([mamhoff](https://github.com/mamhoff))
85
+ - Allow importing to a different port [#1747](https://github.com/AlchemyCMS/alchemy_cms/pull/1747) ([mamhoff](https://github.com/mamhoff))
86
+ - Sortable resources tables [#1744](https://github.com/AlchemyCMS/alchemy_cms/pull/1744) ([tvdeyen](https://github.com/tvdeyen))
87
+ - Fix update check spec [#1743](https://github.com/AlchemyCMS/alchemy_cms/pull/1743) ([tvdeyen](https://github.com/tvdeyen))
88
+ - Compress migrations [#1657](https://github.com/AlchemyCMS/alchemy_cms/pull/1657) ([tvdeyen](https://github.com/tvdeyen))
89
+ - Install Gutentag migrations while installing Alchemy [#1688](https://github.com/AlchemyCMS/alchemy_cms/pull/1688) ([tvdeyen](https://github.com/tvdeyen))
90
+ - Remove old upgrade tasks [#1687](https://github.com/AlchemyCMS/alchemy_cms/pull/1687) ([tvdeyen](https://github.com/tvdeyen))
91
+ - Remove deprecated features [#1686](https://github.com/AlchemyCMS/alchemy_cms/pull/1686) ([tvdeyen](https://github.com/tvdeyen))
92
+ - Remove deprecations [#1656](https://github.com/AlchemyCMS/alchemy_cms/pull/1656) ([tvdeyen](https://github.com/tvdeyen))
93
+ - Add element editor decorator [#1653](https://github.com/AlchemyCMS/alchemy_cms/pull/1653) ([tvdeyen](https://github.com/tvdeyen))
94
+ - Remove deprecated render_essence_* helpers [#1652](https://github.com/AlchemyCMS/alchemy_cms/pull/1652) ([tvdeyen](https://github.com/tvdeyen))
95
+ - Remove deprecated render element editor helpers [#1651](https://github.com/AlchemyCMS/alchemy_cms/pull/1651) ([tvdeyen](https://github.com/tvdeyen))
96
+ - Add ContentEditor decorator [#1645](https://github.com/AlchemyCMS/alchemy_cms/pull/1645) ([tvdeyen](https://github.com/tvdeyen))
97
+ - Remove local options from essence editors [#1638](https://github.com/AlchemyCMS/alchemy_cms/pull/1638) ([tvdeyen](https://github.com/tvdeyen))
98
+
99
+ ## 4.6.1 (2020-06-04)
100
+
101
+ - Fix 4.6 upgrader
102
+
3
103
  ## 4.6.0 (2020-06-04)
4
104
 
5
105
  - Use apt update instead of apt-get in GH action [#1865](https://github.com/AlchemyCMS/alchemy_cms/pull/1865) ([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
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
@@ -155,7 +167,7 @@ Please follow [this guide](http://guides.alchemy-cms.com/stable/custom_authentic
155
167
  **After** you set the user model you need to run the Alchemy install task:
156
168
 
157
169
  ```bash
158
- $ bin/rake alchemy:install
170
+ $ bin/rails alchemy:install
159
171
  ```
160
172
 
161
173
  Now everything should be set up and you should be able to visit the Alchemy Dashboard at:
@@ -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