alchemy_cms 5.3.3 → 6.0.0.b1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +6 -14
  3. data/.gitignore +1 -1
  4. data/.hound.yml +1 -1
  5. data/.rubocop.yml +46 -4
  6. data/CHANGELOG.md +80 -64
  7. data/Gemfile +4 -2
  8. data/README.md +5 -2
  9. data/Rakefile +0 -18
  10. data/alchemy_cms.gemspec +78 -65
  11. data/app/assets/javascripts/alchemy/admin.js +2 -2
  12. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -30
  13. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -1
  14. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +2 -7
  15. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -25
  16. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -1
  17. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -0
  18. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +1 -1
  19. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +3 -1
  20. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +1 -1
  21. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +40 -27
  22. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +24 -0
  23. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +119 -0
  24. data/app/assets/javascripts/alchemy/page_select.js +8 -13
  25. data/app/assets/javascripts/alchemy/templates/index.js +0 -1
  26. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  27. data/app/assets/javascripts/alchemy/templates/page.hbs +7 -17
  28. data/app/assets/stylesheets/alchemy/admin.scss +1 -1
  29. data/app/assets/stylesheets/alchemy/archive.scss +4 -8
  30. data/app/assets/stylesheets/alchemy/buttons.scss +0 -4
  31. data/app/assets/stylesheets/alchemy/elements.scss +73 -61
  32. data/app/assets/stylesheets/alchemy/images.scss +8 -0
  33. data/app/assets/stylesheets/alchemy/node-select.scss +4 -3
  34. data/app/assets/stylesheets/alchemy/page-select.scss +5 -29
  35. data/app/assets/stylesheets/alchemy/sitemap.scss +7 -9
  36. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +3 -3
  37. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +7 -7
  38. data/app/controllers/alchemy/admin/attachments_controller.rb +6 -2
  39. data/app/controllers/alchemy/admin/base_controller.rb +8 -16
  40. data/app/controllers/alchemy/admin/elements_controller.rb +58 -34
  41. data/app/controllers/alchemy/admin/essence_audios_controller.rb +30 -0
  42. data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -14
  43. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +8 -79
  44. data/app/controllers/alchemy/admin/essence_videos_controller.rb +33 -0
  45. data/app/controllers/alchemy/admin/ingredients_controller.rb +30 -0
  46. data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -1
  47. data/app/controllers/alchemy/admin/pages_controller.rb +19 -23
  48. data/app/controllers/alchemy/admin/pictures_controller.rb +35 -9
  49. data/app/controllers/alchemy/api/elements_controller.rb +10 -5
  50. data/app/controllers/alchemy/api/pages_controller.rb +3 -15
  51. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +13 -3
  52. data/app/controllers/concerns/alchemy/admin/crop_action.rb +26 -0
  53. data/app/decorators/alchemy/element_editor.rb +23 -1
  54. data/app/decorators/alchemy/ingredient_editor.rb +154 -0
  55. data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
  56. data/app/helpers/alchemy/admin/essences_helper.rb +1 -1
  57. data/app/helpers/alchemy/admin/ingredients_helper.rb +42 -0
  58. data/app/helpers/alchemy/elements_block_helper.rb +22 -7
  59. data/app/helpers/alchemy/elements_helper.rb +12 -5
  60. data/app/helpers/alchemy/pages_helper.rb +3 -11
  61. data/app/jobs/alchemy/base_job.rb +11 -0
  62. data/app/jobs/alchemy/publish_page_job.rb +11 -0
  63. data/app/models/alchemy/attachment.rb +1 -1
  64. data/app/models/alchemy/content/factory.rb +23 -27
  65. data/app/models/alchemy/content.rb +1 -6
  66. data/app/models/alchemy/element/definitions.rb +29 -27
  67. data/app/models/alchemy/element/element_contents.rb +131 -122
  68. data/app/models/alchemy/element/element_essences.rb +100 -98
  69. data/app/models/alchemy/element/element_ingredients.rb +176 -0
  70. data/app/models/alchemy/element/presenters.rb +89 -87
  71. data/app/models/alchemy/element.rb +40 -73
  72. data/app/models/alchemy/elements_repository.rb +126 -0
  73. data/app/models/alchemy/essence_audio.rb +12 -0
  74. data/app/models/alchemy/essence_headline.rb +40 -0
  75. data/app/models/alchemy/essence_picture.rb +4 -116
  76. data/app/models/alchemy/essence_richtext.rb +12 -0
  77. data/app/models/alchemy/essence_video.rb +12 -0
  78. data/app/models/alchemy/image_cropper_settings.rb +87 -0
  79. data/app/models/alchemy/ingredient.rb +219 -0
  80. data/app/models/alchemy/ingredient_validator.rb +97 -0
  81. data/app/models/alchemy/ingredients/audio.rb +29 -0
  82. data/app/models/alchemy/ingredients/boolean.rb +21 -0
  83. data/app/models/alchemy/ingredients/datetime.rb +20 -0
  84. data/app/models/alchemy/ingredients/file.rb +30 -0
  85. data/app/models/alchemy/ingredients/headline.rb +42 -0
  86. data/app/models/alchemy/ingredients/html.rb +19 -0
  87. data/app/models/alchemy/ingredients/link.rb +16 -0
  88. data/app/models/alchemy/ingredients/node.rb +23 -0
  89. data/app/models/alchemy/ingredients/page.rb +23 -0
  90. data/app/models/alchemy/ingredients/picture.rb +41 -0
  91. data/app/models/alchemy/ingredients/richtext.rb +57 -0
  92. data/app/models/alchemy/ingredients/select.rb +10 -0
  93. data/app/models/alchemy/ingredients/text.rb +17 -0
  94. data/app/models/alchemy/ingredients/video.rb +33 -0
  95. data/app/models/alchemy/language.rb +0 -11
  96. data/app/models/alchemy/node.rb +1 -1
  97. data/app/models/alchemy/page/fixed_attributes.rb +53 -51
  98. data/app/models/alchemy/page/page_elements.rb +186 -205
  99. data/app/models/alchemy/page/page_naming.rb +66 -64
  100. data/app/models/alchemy/page/page_natures.rb +139 -142
  101. data/app/models/alchemy/page/page_scopes.rb +113 -102
  102. data/app/models/alchemy/page/publisher.rb +50 -0
  103. data/app/models/alchemy/page/url_path.rb +1 -1
  104. data/app/models/alchemy/page.rb +69 -36
  105. data/app/models/alchemy/page_version.rb +58 -0
  106. data/app/models/alchemy/picture/calculations.rb +2 -8
  107. data/app/models/alchemy/picture/preprocessor.rb +2 -0
  108. data/app/models/alchemy/picture/transformations.rb +21 -93
  109. data/app/models/alchemy/picture.rb +4 -2
  110. data/app/models/concerns/alchemy/picture_thumbnails.rb +181 -0
  111. data/app/models/concerns/alchemy/touch_elements.rb +2 -2
  112. data/app/presenters/alchemy/picture_view.rb +88 -0
  113. data/app/serializers/alchemy/element_serializer.rb +5 -0
  114. data/app/serializers/alchemy/page_serializer.rb +1 -7
  115. data/app/serializers/alchemy/page_tree_serializer.rb +6 -5
  116. data/app/services/alchemy/delete_elements.rb +44 -0
  117. data/app/services/alchemy/duplicate_element.rb +56 -0
  118. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -2
  119. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +3 -3
  120. data/app/views/alchemy/admin/attachments/assign.js.erb +11 -0
  121. data/app/views/alchemy/admin/crop.html.erb +36 -0
  122. data/app/views/alchemy/admin/elements/_element.html.erb +14 -10
  123. data/app/views/alchemy/admin/elements/{_element_footer.html.erb → _footer.html.erb} +0 -0
  124. data/app/views/alchemy/admin/elements/{_new_element_form.html.erb → _form.html.erb} +1 -1
  125. data/app/views/alchemy/admin/elements/{_element_header.html.erb → _header.html.erb} +1 -1
  126. data/app/views/alchemy/admin/elements/{_element_toolbar.html.erb → _toolbar.html.erb} +5 -6
  127. data/app/views/alchemy/admin/elements/{trash.js.erb → destroy.js.erb} +1 -3
  128. data/app/views/alchemy/admin/elements/new.html.erb +3 -3
  129. data/app/views/alchemy/admin/elements/order.js.erb +0 -17
  130. data/app/views/alchemy/admin/elements/update.js.erb +3 -2
  131. data/app/views/alchemy/admin/essence_audios/edit.html.erb +7 -0
  132. data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -1
  133. data/app/views/alchemy/admin/essence_videos/edit.html.erb +11 -0
  134. data/app/views/alchemy/admin/ingredients/_audio_fields.html.erb +4 -0
  135. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +18 -0
  136. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +25 -0
  137. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +8 -0
  138. data/app/views/alchemy/admin/ingredients/edit.html.erb +4 -0
  139. data/app/views/alchemy/admin/layoutpages/edit.html.erb +0 -5
  140. data/app/views/alchemy/admin/nodes/_node.html.erb +2 -2
  141. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +1 -1
  142. data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
  143. data/app/views/alchemy/admin/pages/_file_link.html.erb +1 -1
  144. data/app/views/alchemy/admin/pages/_form.html.erb +0 -25
  145. data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
  146. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +5 -16
  147. data/app/views/alchemy/admin/pages/_page.html.erb +133 -111
  148. data/app/views/alchemy/admin/pages/_sitemap.html.erb +16 -10
  149. data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +5 -2
  150. data/app/views/alchemy/admin/pages/_toolbar.html.erb +12 -0
  151. data/app/views/alchemy/admin/pages/edit.html.erb +37 -25
  152. data/app/views/alchemy/admin/pages/fold.js.erb +2 -0
  153. data/app/views/alchemy/admin/pages/index.html.erb +1 -1
  154. data/app/views/alchemy/admin/pages/sort.html.erb +19 -0
  155. data/app/views/alchemy/admin/pages/update.js.erb +0 -7
  156. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -4
  157. data/app/views/alchemy/admin/partials/_routes.html.erb +8 -19
  158. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +4 -8
  159. data/app/views/alchemy/admin/pictures/_infos.html.erb +0 -1
  160. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +4 -4
  161. data/app/views/alchemy/admin/pictures/assign.js.erb +10 -0
  162. data/app/views/alchemy/admin/resources/_form.html.erb +1 -0
  163. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +4 -0
  164. data/app/views/alchemy/essences/_essence_audio_view.html.erb +15 -0
  165. data/app/views/alchemy/essences/_essence_file_editor.html.erb +15 -6
  166. data/app/views/alchemy/essences/_essence_headline_editor.html.erb +36 -0
  167. data/app/views/alchemy/essences/_essence_headline_view.html.erb +10 -0
  168. data/app/views/alchemy/essences/_essence_link_editor.html.erb +8 -4
  169. data/app/views/alchemy/essences/_essence_page_editor.html.erb +1 -1
  170. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +27 -12
  171. data/app/views/alchemy/essences/_essence_text_editor.html.erb +12 -4
  172. data/app/views/alchemy/essences/_essence_video_editor.html.erb +4 -0
  173. data/app/views/alchemy/essences/_essence_video_view.html.erb +18 -0
  174. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +21 -16
  175. data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +2 -2
  176. data/app/views/alchemy/ingredients/_audio_editor.html.erb +5 -0
  177. data/app/views/alchemy/ingredients/_audio_view.html.erb +14 -0
  178. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +11 -0
  179. data/app/views/alchemy/ingredients/_boolean_view.html.erb +1 -0
  180. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +17 -0
  181. data/app/views/alchemy/ingredients/_datetime_view.html.erb +9 -0
  182. data/app/views/alchemy/ingredients/_file_editor.html.erb +50 -0
  183. data/app/views/alchemy/ingredients/_file_view.html.erb +17 -0
  184. data/app/views/alchemy/ingredients/_headline_editor.html.erb +30 -0
  185. data/app/views/alchemy/ingredients/_headline_view.html.erb +9 -0
  186. data/app/views/alchemy/ingredients/_html_editor.html.erb +8 -0
  187. data/app/views/alchemy/ingredients/_html_view.html.erb +1 -0
  188. data/app/views/alchemy/ingredients/_link_editor.html.erb +24 -0
  189. data/app/views/alchemy/ingredients/_link_view.html.erb +9 -0
  190. data/app/views/alchemy/ingredients/_node_editor.html.erb +25 -0
  191. data/app/views/alchemy/ingredients/_node_view.html.erb +1 -0
  192. data/app/views/alchemy/ingredients/_page_editor.html.erb +24 -0
  193. data/app/views/alchemy/ingredients/_page_view.html.erb +4 -0
  194. data/app/views/alchemy/ingredients/_picture_editor.html.erb +59 -0
  195. data/app/views/alchemy/ingredients/_picture_view.html.erb +5 -0
  196. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +12 -0
  197. data/app/views/alchemy/ingredients/_richtext_view.html.erb +3 -0
  198. data/app/views/alchemy/ingredients/_select_editor.html.erb +29 -0
  199. data/app/views/alchemy/ingredients/_select_view.html.erb +1 -0
  200. data/app/views/alchemy/ingredients/_text_editor.html.erb +19 -0
  201. data/app/views/alchemy/ingredients/_text_view.html.erb +16 -0
  202. data/app/views/alchemy/ingredients/_video_editor.html.erb +5 -0
  203. data/app/views/alchemy/ingredients/_video_view.html.erb +17 -0
  204. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +20 -0
  205. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +57 -0
  206. data/config/brakeman.ignore +66 -159
  207. data/config/initializers/dragonfly.rb +2 -0
  208. data/config/locales/alchemy.en.yml +26 -15
  209. data/config/routes.rb +19 -26
  210. data/db/migrate/20201207131309_create_page_versions.rb +19 -0
  211. data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +76 -0
  212. data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +10 -0
  213. data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +7 -0
  214. data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +12 -0
  215. data/db/migrate/20210506135919_create_essence_audios.rb +19 -0
  216. data/db/migrate/20210506140258_create_essence_videos.rb +23 -0
  217. data/db/migrate/20210508091432_create_alchemy_ingredients.rb +22 -0
  218. data/lib/alchemy/admin/preview_url.rb +2 -0
  219. data/lib/alchemy/deprecation.rb +1 -1
  220. data/lib/alchemy/dragonfly/processors/auto_orient.rb +18 -0
  221. data/lib/alchemy/elements_finder.rb +14 -60
  222. data/lib/alchemy/engine.rb +1 -8
  223. data/lib/alchemy/essence.rb +1 -2
  224. data/lib/alchemy/hints.rb +8 -4
  225. data/lib/alchemy/page_layout.rb +0 -13
  226. data/lib/alchemy/permissions.rb +31 -29
  227. data/lib/alchemy/resource.rb +13 -3
  228. data/lib/alchemy/tasks/tidy.rb +29 -0
  229. data/lib/alchemy/test_support/essence_shared_examples.rb +0 -1
  230. data/lib/alchemy/test_support/factories/element_factory.rb +8 -8
  231. data/lib/alchemy/test_support/factories/essence_audio_factory.rb +7 -0
  232. data/lib/alchemy/test_support/factories/essence_video_factory.rb +7 -0
  233. data/lib/alchemy/test_support/factories/ingredient_factory.rb +25 -0
  234. data/lib/alchemy/test_support/factories/page_factory.rb +20 -1
  235. data/lib/alchemy/test_support/factories/page_version_factory.rb +23 -0
  236. data/lib/alchemy/test_support/having_crop_action_examples.rb +170 -0
  237. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +646 -0
  238. data/lib/alchemy/test_support/shared_ingredient_editor_examples.rb +21 -0
  239. data/lib/alchemy/test_support/shared_ingredient_examples.rb +57 -0
  240. data/lib/alchemy/test_support.rb +2 -11
  241. data/lib/alchemy/tinymce.rb +17 -0
  242. data/lib/alchemy/upgrader/five_point_zero.rb +0 -32
  243. data/lib/alchemy/upgrader/six_point_zero.rb +21 -0
  244. data/lib/alchemy/upgrader/tasks/add_page_versions.rb +33 -0
  245. data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +51 -0
  246. data/lib/alchemy/version.rb +1 -1
  247. data/lib/alchemy_cms.rb +0 -1
  248. data/lib/generators/alchemy/elements/elements_generator.rb +1 -0
  249. data/lib/generators/alchemy/elements/templates/view.html.erb +9 -0
  250. data/lib/generators/alchemy/elements/templates/view.html.haml +9 -0
  251. data/lib/generators/alchemy/elements/templates/view.html.slim +9 -0
  252. data/lib/generators/alchemy/ingredient/ingredient_generator.rb +38 -0
  253. data/lib/generators/alchemy/ingredient/templates/editor.html.erb +14 -0
  254. data/lib/generators/alchemy/ingredient/templates/model.rb.tt +13 -0
  255. data/lib/generators/alchemy/ingredient/templates/view.html.erb +1 -0
  256. data/lib/generators/alchemy/install/install_generator.rb +1 -2
  257. data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +1 -1
  258. data/lib/generators/alchemy/menus/templates/node.html.erb +1 -1
  259. data/lib/generators/alchemy/menus/templates/node.html.haml +1 -1
  260. data/lib/generators/alchemy/menus/templates/node.html.slim +1 -1
  261. data/lib/generators/alchemy/menus/templates/wrapper.html.erb +1 -1
  262. data/lib/generators/alchemy/menus/templates/wrapper.html.haml +1 -1
  263. data/lib/generators/alchemy/menus/templates/wrapper.html.slim +1 -1
  264. data/lib/tasks/alchemy/tidy.rake +12 -0
  265. data/lib/tasks/alchemy/upgrade.rake +21 -15
  266. data/package/admin.js +8 -4
  267. data/package/src/file_editors.js +28 -0
  268. data/package/src/image_cropper.js +103 -0
  269. data/package/src/image_loader.js +58 -0
  270. data/package/src/node_tree.js +8 -8
  271. data/package/src/picture_editors.js +169 -0
  272. data/package/src/utils/__tests__/ajax.spec.js +16 -52
  273. data/package/src/utils/ajax.js +0 -12
  274. data/package.json +3 -2
  275. data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +3 -18
  276. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +434 -0
  277. data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +2 -28
  278. metadata +291 -53
  279. data/.rspec +0 -1
  280. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +0 -44
  281. data/app/assets/javascripts/alchemy/alchemy.trash_window.js.coffee +0 -30
  282. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +0 -3
  283. data/app/assets/stylesheets/alchemy/trash.scss +0 -8
  284. data/app/controllers/alchemy/admin/trash_controller.rb +0 -44
  285. data/app/views/alchemy/admin/essence_files/assign.js.erb +0 -3
  286. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -4
  287. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +0 -48
  288. data/app/views/alchemy/admin/trash/clear.js.erb +0 -4
  289. data/app/views/alchemy/admin/trash/index.html.erb +0 -31
  290. data/lib/alchemy/error_tracking/airbrake_handler.rb +0 -13
  291. data/lib/alchemy/error_tracking.rb +0 -14
  292. data/lib/alchemy/test_support/factories.rb +0 -20
  293. data/package/src/page_publication_fields.js +0 -27
  294. data/package/src/page_sorter.js +0 -62
  295. data/package/src/sitemap.js +0 -148
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f18c2fd116b7cecb0091d78a0e3d7bdad8a996e03b04c53e56e04a651a5d47b
4
- data.tar.gz: 35f9e7ed5ef6c525348a5d885c50d448376ce03f2ce0955037ed3a05c4733ade
3
+ metadata.gz: 0f491f19d3f42a56aa03e0a82724e1473413c926f9bb9a823f909726415bb844
4
+ data.tar.gz: 42c4841d037f5d351305b4e2c97fdc9298a4b886d51b666436c712f1c9c7ce80
5
5
  SHA512:
6
- metadata.gz: 23b529d54cdc27a766208ee9750e282349b184feec1cc21f398a01caccd970d2dc5a9bdd7f500f52fe165f306bf32052d8d48f2e892b83af92037d65fcec33c9
7
- data.tar.gz: f733eee0bb31d47a489657d66c741fb983f1a363e017756f3be0ced53a589e3978e51f5240c8bdd3fa6d405a89bf8c89d6a7ff3b17d6de4631d638f7206dcb90
6
+ metadata.gz: fbb3af41e4d5a9715507f87d38d87f0dea4ceb9c62750721587ce14a7e7aa32f89b7e044fac5b14ab68781539f80b16297cce668b0bef76eb96b099c157b751c
7
+ data.tar.gz: fdd0443e75620528d6434eeb13fb675db04f3a91911b92f66122df83c963a737509a99d968ddd48189195340ea00e06310919d3ba201906291088c66ee5ec455
@@ -9,12 +9,11 @@ jobs:
9
9
  fail-fast: false
10
10
  matrix:
11
11
  rails:
12
- - '5.2'
13
12
  - '6.0'
14
13
  ruby:
15
- - '2.5.x'
16
- - '2.6.x'
17
- - '2.7.x'
14
+ - '2.6.6'
15
+ - '2.7.2'
16
+ - '3.0.0'
18
17
  database:
19
18
  - mysql
20
19
  - postgresql
@@ -46,9 +45,10 @@ jobs:
46
45
  steps:
47
46
  - uses: actions/checkout@v2.3.4
48
47
  - name: Set up Ruby
49
- uses: actions/setup-ruby@v1.1.2
48
+ uses: ruby/setup-ruby@v1
50
49
  with:
51
50
  ruby-version: ${{ matrix.ruby }}
51
+ bundler-cache: true
52
52
  - name: Restore apt cache
53
53
  id: apt-cache
54
54
  uses: actions/cache@v2.1.3
@@ -74,18 +74,10 @@ jobs:
74
74
  - name: Install bundler
75
75
  run: |
76
76
  gem install bundler
77
- - name: Restore Ruby Gems cache
78
- id: cache
79
- uses: actions/cache@v2.1.3
80
- with:
81
- path: vendor/bundle
82
- key: ${{ runner.os }}-bundle-${{ matrix.ruby }}-${{ matrix.rails }}-${{ matrix.database }}-${{ hashFiles('**/Gemfile') }}
83
- restore-keys: |
84
- ${{ runner.os }}-bundle-
85
77
  - name: Install bundle
86
78
  timeout-minutes: 10
87
79
  run: |
88
- bundle install --jobs 4 --retry 3 --path vendor/bundle
80
+ bundle install --jobs 4 --retry 3
89
81
  - name: Restore node modules cache
90
82
  id: yarn-cache
91
83
  uses: actions/cache@v2.1.3
data/.gitignore CHANGED
@@ -10,7 +10,6 @@ tmp
10
10
  log
11
11
  .sass-cache
12
12
  spec/dummy/.browserslistrc
13
- spec/dummy/app/assets/stylesheets/alchemy/
14
13
  spec/dummy/app/javascript/
15
14
  spec/dummy/babel.config.js
16
15
  spec/dummy/bin/webpack
@@ -34,6 +33,7 @@ spec/dummy/uploads/
34
33
  .ruby-gemset
35
34
  .ruby-version
36
35
  .env
36
+ .rspec
37
37
  node_modules
38
38
  yarn-error.log
39
39
  yarn-debug.log*
data/.hound.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  rubocop:
2
2
  config_file: .rubocop.yml
3
- version: 0.80.0
3
+ version: 1.5.2
4
4
  scss:
5
5
  enabled: false
6
6
  coffeescript:
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  # Relaxed.Ruby.Style
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.4
4
+ TargetRubyVersion: 2.5
5
5
  Exclude:
6
6
  - 'bin/rspec'
7
7
  - 'vendor/**/*'
@@ -100,9 +100,6 @@ Layout/MultilineMethodCallBraceLayout:
100
100
  Layout/MultilineMethodCallIndentation:
101
101
  Enabled: false
102
102
 
103
- Layout/MultilineOperationIndentation:
104
- EnforcedStyle: indented
105
-
106
103
  Layout/SpaceBeforeBlockBraces:
107
104
  Enabled: false
108
105
  StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
@@ -309,3 +306,48 @@ Naming/PredicateName:
309
306
 
310
307
  Naming/VariableNumber:
311
308
  Enabled: false
309
+
310
+ Lint/DuplicateBranch: # (new in 1.3)
311
+ Enabled: false
312
+
313
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
314
+ Enabled: false
315
+
316
+ Lint/EmptyBlock: # (new in 1.1)
317
+ Enabled: false
318
+
319
+ Lint/EmptyClass: # (new in 1.3)
320
+ Enabled: false
321
+
322
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
323
+ Enabled: false
324
+
325
+ Lint/ToEnumArguments: # (new in 1.1)
326
+ Enabled: false
327
+
328
+ Lint/UnexpectedBlockArity: # (new in 1.5)
329
+ Enabled: false
330
+
331
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
332
+ Enabled: false
333
+
334
+ Style/ArgumentsForwarding: # (new in 1.1)
335
+ Enabled: false
336
+
337
+ Style/CollectionCompact: # (new in 1.2)
338
+ Enabled: false
339
+
340
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
341
+ Enabled: false
342
+
343
+ Style/NegatedIfElseCondition: # (new in 1.2)
344
+ Enabled: false
345
+
346
+ Style/NilLambda: # (new in 1.3)
347
+ Enabled: false
348
+
349
+ Style/RedundantArgument: # (new in 1.4)
350
+ Enabled: false
351
+
352
+ Style/SwapValues: # (new in 1.1)
353
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,74 +1,90 @@
1
- ## 5.3.3 (2022-03-24)
1
+ ## 6.0.0.b1 (2021-07-05)
2
2
 
3
- - fix admin sitemap feature specs ([tvdeyen](https://github.com/tvdeyen))
4
- - fix: Add support for ajax.get query params ([tvdeyen](https://github.com/tvdeyen))
5
- - fix(Sitemap): Use response data ([tvdeyen](https://github.com/tvdeyen))
6
- - Revert "Ajax: Send method override" ([tvdeyen](https://github.com/tvdeyen))
7
-
8
- ## 5.3.2 (2022-03-24)
9
-
10
- - ImageLoader: Add error handling ([tvdeyen](https://github.com/tvdeyen))
11
- - Fix new Sitemap ([tvdeyen](https://github.com/tvdeyen))
12
-
13
- ## 5.3.1 (2022-03-11)
14
-
15
- - Allow all pages in API again ([tvdeyen](https://github.com/tvdeyen))
16
- - New sortable page tree ([tvdeyen](https://github.com/tvdeyen))
17
- - Send language_id to Api::PagesController#index so Pages can be restricted to the language of the page. ([dbwinger](https://github.com/dbwinger))
18
- - Eager load in PageTree serializer ([tvdeyen](https://github.com/tvdeyen))
19
-
20
- ## 5.3.0 (2022-03-09)
21
-
22
- - Allow parent page change ([tvdeyen](https://github.com/tvdeyen))
23
- - Precompile packs during test setup ([tvdeyen](https://github.com/tvdeyen))
24
- - Rework Sitemap JS ([tvdeyen](https://github.com/tvdeyen))
25
- - Fix rendering errors in page configure overlay ([tvdeyen](https://github.com/tvdeyen))
26
-
27
- ## 5.2.7 (2022-03-01)
28
-
29
- - Fix copying page with descendants to a different language ([dbwinger](https://github.com/dbwinger))
30
- - Handle copying/pasting global pages ([dbwinger](https://github.com/dbwinger))
31
-
32
- ## 5.2.6 (2022-02-28)
33
-
34
- - Add crop_resize Dragonfly processor ([tvdeyen](https://github.com/tvdeyen))
35
-
36
- ## 5.2.5 (2021-11-24)
37
-
38
- - Adjust tinymce skin assets urls again ([tvdeyen](https://github.com/tvdeyen))
39
-
40
- ## 5.2.4 (2021-11-17)
41
-
42
- - Set stampable user_class_name without root identifier ([tvdeyen](https://github.com/tvdeyen))
43
- - Use relative path for tinymce font-face ([tvdeyen](https://github.com/tvdeyen))
44
-
45
- ## 5.2.3 (2021-10-26)
3
+ ### Features
46
4
 
47
- - Make sure to install correct npm package ([tvdeyen](https://github.com/tvdeyen))
5
+ - Import essence video and audio from extension [#2089](https://github.com/AlchemyCMS/alchemy_cms/pull/2089) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Introduce ingredients as new content structure [#2061](https://github.com/AlchemyCMS/alchemy_cms/pull/2061) ([tvdeyen](https://github.com/tvdeyen))
7
+ - Alchemy essence headline [#2060](https://github.com/AlchemyCMS/alchemy_cms/pull/2060) ([mamhoff](https://github.com/mamhoff))
8
+ - Add Page Versions [#2022](https://github.com/AlchemyCMS/alchemy_cms/pull/2022) ([tvdeyen](https://github.com/tvdeyen))
48
9
 
49
- ## 5.2.2 (2021-09-15)
10
+ ### Changes
50
11
 
51
- - Return only pages from current site in api [#2169](https://github.com/AlchemyCMS/alchemy_cms/pull/2169) ([afdev82](https://github.com/afdev82))
52
- - Improve cache key defaults for menus #2138 [#2160](https://github.com/AlchemyCMS/alchemy_cms/pull/2160) ([oneiros](https://github.com/oneiros))
53
- - generate picture thumbnails only for pictures with convertible format [#2130](https://github.com/AlchemyCMS/alchemy_cms/pull/2130) ([afdev82](https://github.com/afdev82))
54
- - Backport #2114 to v5.2 [#2116](https://github.com/AlchemyCMS/alchemy_cms/pull/2116) ([afdev82](https://github.com/afdev82))
55
- - Add webpacker tasks to Alchemy upgrader [#2115](https://github.com/AlchemyCMS/alchemy_cms/pull/2115) ([dbwinger](https://github.com/dbwinger))
12
+ - Link dialog changes can be submitted by enter [#2144](https://github.com/AlchemyCMS/alchemy_cms/pull/2144) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Extract Thumbnails and CropAction concerns [#2141](https://github.com/AlchemyCMS/alchemy_cms/pull/2141) ([tvdeyen](https://github.com/tvdeyen))
14
+ - generate picture thumbnails only for pictures with convertible format [#2129](https://github.com/AlchemyCMS/alchemy_cms/pull/2129) ([afdev82](https://github.com/afdev82))
15
+ - Only crop image if cropping is enabled [#2143](https://github.com/AlchemyCMS/alchemy_cms/pull/2143) ([tvdeyen](https://github.com/tvdeyen))
16
+ - expose translations in global Alchemy js object, #2113 [#2114](https://github.com/AlchemyCMS/alchemy_cms/pull/2114) ([afdev82](https://github.com/afdev82))
17
+ - Only return pages for current site in API [#2111](https://github.com/AlchemyCMS/alchemy_cms/pull/2111) ([tvdeyen](https://github.com/tvdeyen))
18
+ - Add crop_resize Dragonfly processor [#2109](https://github.com/AlchemyCMS/alchemy_cms/pull/2109) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Auto-orient images based on their EXIF data [#2107](https://github.com/AlchemyCMS/alchemy_cms/pull/2107) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Allow flatten as argument for Dragonfly encode [#2106](https://github.com/AlchemyCMS/alchemy_cms/pull/2106) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Deprecate image format methods [#2103](https://github.com/AlchemyCMS/alchemy_cms/pull/2103) ([tvdeyen](https://github.com/tvdeyen))
22
+ - Do not attempt to generate thumbs for svg files (fixes upload of svg files) [#2090](https://github.com/AlchemyCMS/alchemy_cms/pull/2090) ([oneiros](https://github.com/oneiros))
23
+ - Trigger publish targets after page published [#2088](https://github.com/AlchemyCMS/alchemy_cms/pull/2088) ([tvdeyen](https://github.com/tvdeyen))
24
+ - Add collection option for resource relations [#2084](https://github.com/AlchemyCMS/alchemy_cms/pull/2084) ([robinboening](https://github.com/robinboening))
25
+ - Remove deprecated helper method page_active? [#2074](https://github.com/AlchemyCMS/alchemy_cms/pull/2074) ([robinboening](https://github.com/robinboening))
26
+ - Handle json requests in error handler [#2071](https://github.com/AlchemyCMS/alchemy_cms/pull/2071) ([tvdeyen](https://github.com/tvdeyen))
27
+ - Background page publishing [#2067](https://github.com/AlchemyCMS/alchemy_cms/pull/2067) ([tvdeyen](https://github.com/tvdeyen))
28
+ - Faster element duplication [#2066](https://github.com/AlchemyCMS/alchemy_cms/pull/2066) ([mamhoff](https://github.com/mamhoff))
29
+ - Parse params in ajax.get as query string [#2070](https://github.com/AlchemyCMS/alchemy_cms/pull/2070) ([tvdeyen](https://github.com/tvdeyen))
30
+ - Assign, crop and remove files and pictures client side [#2069](https://github.com/AlchemyCMS/alchemy_cms/pull/2069) ([tvdeyen](https://github.com/tvdeyen))
31
+ - Allow copying contents when they're not in the elements.yml [#2068](https://github.com/AlchemyCMS/alchemy_cms/pull/2068) ([mamhoff](https://github.com/mamhoff))
32
+ - Delete nested elements quickly [#2065](https://github.com/AlchemyCMS/alchemy_cms/pull/2065) ([mamhoff](https://github.com/mamhoff))
33
+ - Quickly delete elements when deleting a page version [#2064](https://github.com/AlchemyCMS/alchemy_cms/pull/2064) ([mamhoff](https://github.com/mamhoff))
34
+ - Fast element deletion [#2063](https://github.com/AlchemyCMS/alchemy_cms/pull/2063) ([mamhoff](https://github.com/mamhoff))
35
+ - Touch Elements only after update [#2062](https://github.com/AlchemyCMS/alchemy_cms/pull/2062) ([mamhoff](https://github.com/mamhoff))
36
+ - Convert "Visit page" button to "Link to new tab" [#2058](https://github.com/AlchemyCMS/alchemy_cms/pull/2058) ([mamhoff](https://github.com/mamhoff))
37
+ - Allow creating an EssenceRichtext without a content [#2057](https://github.com/AlchemyCMS/alchemy_cms/pull/2057) ([mamhoff](https://github.com/mamhoff))
38
+ - Allow instantiating a content on an unpersisted valid element [#2056](https://github.com/AlchemyCMS/alchemy_cms/pull/2056) ([mamhoff](https://github.com/mamhoff))
39
+ - Sanitized richtext body [#2055](https://github.com/AlchemyCMS/alchemy_cms/pull/2055) ([mamhoff](https://github.com/mamhoff))
40
+ - Only require the Rails gems we actually need [#2054](https://github.com/AlchemyCMS/alchemy_cms/pull/2054) ([tvdeyen](https://github.com/tvdeyen))
41
+ - Create new contents on demand [#2049](https://github.com/AlchemyCMS/alchemy_cms/pull/2049) ([tvdeyen](https://github.com/tvdeyen))
42
+ - Add Elements repository [#2039](https://github.com/AlchemyCMS/alchemy_cms/pull/2039) ([tvdeyen](https://github.com/tvdeyen))
43
+ - Render site layout with block [#2038](https://github.com/AlchemyCMS/alchemy_cms/pull/2038) ([henvo](https://github.com/henvo))
44
+ - Add namespace for Tree related routes [#2037](https://github.com/AlchemyCMS/alchemy_cms/pull/2037) ([dhiraj14](https://github.com/dhiraj14))
45
+ - Tidy Rake task to remove duplicate legacy URLs [#2036](https://github.com/AlchemyCMS/alchemy_cms/pull/2036) ([pelargir](https://github.com/pelargir))
46
+ - Change Factory loading mechanism to FactoryBots supported mechanism [#2029](https://github.com/AlchemyCMS/alchemy_cms/pull/2029) ([mamhoff](https://github.com/mamhoff))
47
+ - Add rake task to remove trashed elements [#2025](https://github.com/AlchemyCMS/alchemy_cms/pull/2025) ([tvdeyen](https://github.com/tvdeyen))
48
+ - Do not include unpublished pages in breadcrumb [#2020](https://github.com/AlchemyCMS/alchemy_cms/pull/2020) ([tvdeyen](https://github.com/tvdeyen))
49
+ - Respect Language public status for page public status [#2017](https://github.com/AlchemyCMS/alchemy_cms/pull/2017) ([tvdeyen](https://github.com/tvdeyen))
50
+ - Use at least Ruby 2.5 [#2014](https://github.com/AlchemyCMS/alchemy_cms/pull/2014) ([tvdeyen](https://github.com/tvdeyen))
51
+ - Drop Rails 5.2 support [#2013](https://github.com/AlchemyCMS/alchemy_cms/pull/2013) ([tvdeyen](https://github.com/tvdeyen))
52
+ - Remove page layout change of persisted pages [#1991](https://github.com/AlchemyCMS/alchemy_cms/pull/1991) ([tvdeyen](https://github.com/tvdeyen))
53
+ - Remove element trash [#1987](https://github.com/AlchemyCMS/alchemy_cms/pull/1987) ([tvdeyen](https://github.com/tvdeyen))
54
+ - Remove elements fallbacks [#1983](https://github.com/AlchemyCMS/alchemy_cms/pull/1983) ([tvdeyen](https://github.com/tvdeyen))
56
55
 
57
- ## 5.2.1 (2021-05-13)
56
+ ### Misc
58
57
 
58
+ - Fixes i18n Jest specs [#2120](https://github.com/AlchemyCMS/alchemy_cms/pull/2120) ([tvdeyen](https://github.com/tvdeyen))
59
+ - Allow to update element without tags [#2150](https://github.com/AlchemyCMS/alchemy_cms/pull/2150) ([tvdeyen](https://github.com/tvdeyen))
60
+ - fix: call paging on jquery tabs only after initializing them [#2146](https://github.com/AlchemyCMS/alchemy_cms/pull/2146) ([robinboening](https://github.com/robinboening))
61
+ - Image cropper destroy [#2139](https://github.com/AlchemyCMS/alchemy_cms/pull/2139) ([tvdeyen](https://github.com/tvdeyen))
62
+ - Fix URL for dragonfly configuration reference [#2128](https://github.com/AlchemyCMS/alchemy_cms/pull/2128) ([afdev82](https://github.com/afdev82))
63
+ - Link dialog UI fixes [#2112](https://github.com/AlchemyCMS/alchemy_cms/pull/2112) ([tvdeyen](https://github.com/tvdeyen))
64
+ - [js] Upgrade babel-jest to version 27.0.1 [#2110](https://github.com/AlchemyCMS/alchemy_cms/pull/2110) ([depfu](https://github.com/apps/depfu))
65
+ - Fix node select height [#2102](https://github.com/AlchemyCMS/alchemy_cms/pull/2102) ([tvdeyen](https://github.com/tvdeyen))
66
+ - [ruby - main] Upgrade execjs to version 2.8.1 [#2100](https://github.com/AlchemyCMS/alchemy_cms/pull/2100) ([depfu](https://github.com/apps/depfu))
67
+ - Fix Essence Picture View (#2083) [#2099](https://github.com/AlchemyCMS/alchemy_cms/pull/2099) ([afdev82](https://github.com/afdev82))
68
+ - Pass crop parameter in default EssencePicture#picture_url_options [#2098](https://github.com/AlchemyCMS/alchemy_cms/pull/2098) ([mamhoff](https://github.com/mamhoff))
69
+ - [main] Fix execjs to 2.7.0 for developers and CI [#2095](https://github.com/AlchemyCMS/alchemy_cms/pull/2095) ([mamhoff](https://github.com/mamhoff))
59
70
  - Fix alchemy:generate:thumbnails task [#2092](https://github.com/AlchemyCMS/alchemy_cms/pull/2092) ([afdev82](https://github.com/afdev82))
60
- - Do not attempt to generate thumbs for svg files. [#2090](https://github.com/AlchemyCMS/alchemy_cms/pull/2090) ([oneiros](https://github.com/oneiros))
61
-
62
- ## 5.2.0 (2021-05-06)
63
-
64
- - Backport #2049 to 5.2 [#2086](https://github.com/AlchemyCMS/alchemy_cms/pull/2086) ([rickythefox](https://github.com/rickythefox))
65
- - hotfix and deprecate page_active? helper [#2073](https://github.com/AlchemyCMS/alchemy_cms/pull/2073) ([robinboening](https://github.com/robinboening))
66
-
67
- ## 5.2.0.rc1 (2021-02-17)
68
-
69
- ### Changes
70
-
71
- - Change Factory loading mechanism to FactoryBots supported mechanism [#2030](https://github.com/AlchemyCMS/alchemy_cms/pull/2030) ([mamhoff](https://github.com/mamhoff))
71
+ - Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([tvdeyen](https://github.com/tvdeyen))
72
+ - Fix the height of node select [#2081](https://github.com/AlchemyCMS/alchemy_cms/pull/2081) ([tvdeyen](https://github.com/tvdeyen))
73
+ - Preview url fixes [#2079](https://github.com/AlchemyCMS/alchemy_cms/pull/2079) ([tvdeyen](https://github.com/tvdeyen))
74
+ - Use count over select.count in UrlPath class [#2078](https://github.com/AlchemyCMS/alchemy_cms/pull/2078) ([tvdeyen](https://github.com/tvdeyen))
75
+ - Use the fast DuplicateElement service in Page.copy [#2077](https://github.com/AlchemyCMS/alchemy_cms/pull/2077) ([tvdeyen](https://github.com/tvdeyen))
76
+ - Fix page versioning issues [#2076](https://github.com/AlchemyCMS/alchemy_cms/pull/2076) ([tvdeyen](https://github.com/tvdeyen))
77
+ - Fix add nested element with multiple nestable elements [#2052](https://github.com/AlchemyCMS/alchemy_cms/pull/2052) ([tvdeyen](https://github.com/tvdeyen))
78
+ - Destroy public version if public checkbox is unset [#2050](https://github.com/AlchemyCMS/alchemy_cms/pull/2050) ([tvdeyen](https://github.com/tvdeyen))
79
+ - Fixes paste element and create element with autogenerated nested elements [#2046](https://github.com/AlchemyCMS/alchemy_cms/pull/2046) ([tvdeyen](https://github.com/tvdeyen))
80
+ - Fix page re-publishing for page with nested elements [#2043](https://github.com/AlchemyCMS/alchemy_cms/pull/2043) ([tvdeyen](https://github.com/tvdeyen))
81
+ - Update rubocop config and stick version [#2042](https://github.com/AlchemyCMS/alchemy_cms/pull/2042) ([tvdeyen](https://github.com/tvdeyen))
82
+ - Fix factory loading [#2041](https://github.com/AlchemyCMS/alchemy_cms/pull/2041) ([tvdeyen](https://github.com/tvdeyen))
83
+ - Fix element re-ordering [#2028](https://github.com/AlchemyCMS/alchemy_cms/pull/2028) ([tvdeyen](https://github.com/tvdeyen))
84
+ - Fix typo in element destroy confirm notice [#2026](https://github.com/AlchemyCMS/alchemy_cms/pull/2026) ([tvdeyen](https://github.com/tvdeyen))
85
+ - Fix constants reloading in page and element concerns [#2024](https://github.com/AlchemyCMS/alchemy_cms/pull/2024) ([tvdeyen](https://github.com/tvdeyen))
86
+ - Fix delete element confirm dialog [#2023](https://github.com/AlchemyCMS/alchemy_cms/pull/2023) ([tvdeyen](https://github.com/tvdeyen))
87
+ - Build for Ruby 3 [#1990](https://github.com/AlchemyCMS/alchemy_cms/pull/1990) ([tvdeyen](https://github.com/tvdeyen))
72
88
 
73
89
  ## 5.2.0.b1 (2021-02-11)
74
90
 
data/Gemfile CHANGED
@@ -16,9 +16,11 @@ group :development, :test do
16
16
  # execjs 2.8 removes deprecation warnings but also breaks a number of dependent projects.
17
17
  # in our case the culprit is `handlebars-assets`. The changes between 2.7.0 and 2.8.0 are
18
18
  # minimal, but breaking.
19
- gem "execjs", "= 2.7.0"
19
+ gem "execjs", "= 2.8.1"
20
20
 
21
21
  if ENV["GITHUB_ACTIONS"]
22
+ # Necessary because GH Actions gem cache does not have this "Bundled with Ruby" gem installed
23
+ gem "rexml", "~> 3.2.4"
22
24
  gem "sassc", "~> 2.4.0" # https://github.com/sass/sassc-ruby/issues/146
23
25
  else
24
26
  gem "launchy"
@@ -27,7 +29,7 @@ group :development, :test do
27
29
  gem "yard"
28
30
  gem "redcarpet"
29
31
  gem "pry-byebug"
30
- gem "rubocop", "~> 1.9.0", require: false
32
+ gem "rubocop", "1.5.2", require: false
31
33
  gem "listen"
32
34
  gem "localeapp", "~> 3.0", require: false
33
35
  gem "dotenv", "~> 2.2"
data/README.md CHANGED
@@ -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 Rails 5.2 and Rails 6.0**
54
+ **This version of AlchemyCMS runs with Rails 6.0**
55
55
 
56
+ * For a Rails 5.2 compatible version use the [`5.2-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/5.2-stable).
56
57
  * 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).
57
58
  * For a Rails 4.2 compatible version use the [`3.6-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.6-stable).
58
59
  * 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).
@@ -64,7 +65,9 @@ or visit the existing demo at https://alchemy-demo.herokuapp.com
64
65
 
65
66
  ## 💎 Ruby Version
66
67
 
67
- Alchemy runs with Ruby >= 2.3.0.
68
+ Alchemy runs with Ruby >= 2.5.0.
69
+
70
+ For a Ruby 2.4 compatible version use the [`5.2-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/5.2-stable).
68
71
 
69
72
  For a Ruby 2.2 compatible version use the [`4.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/4.1-stable).
70
73
 
data/Rakefile CHANGED
@@ -41,16 +41,12 @@ namespace :alchemy do
41
41
  task :prepare do
42
42
  system(
43
43
  <<~BASH
44
- yarn install && \
45
- yarn link && \
46
44
  cd spec/dummy && \
47
45
  export RAILS_ENV=test && \
48
46
  bin/rake db:create && \
49
47
  bin/rake db:environment:set && \
50
48
  bin/rake db:migrate:reset && \
51
49
  bin/rails g alchemy:install --skip --skip-demo-files --auto-accept && \
52
- yarn link @alchemy_cms/admin && \
53
- RAILS_ENV=test bin/webpack && \
54
50
  cd -
55
51
  BASH
56
52
  ) || fail
@@ -76,18 +72,4 @@ namespace :alchemy do
76
72
  File.delete(backup)
77
73
  end
78
74
  end
79
-
80
- desc "Release a new Ruby gem and npm package in one command"
81
- task :release do
82
- require "json"
83
- require_relative "lib/alchemy/version"
84
- package = File.read("package.json")
85
- unless JSON.parse(package)["version"] == Alchemy.version
86
- abort "Ruby gem and npm package versions are out of sync! Please fix."
87
- end
88
- # Release the Ruby gem with bundler
89
- Rake::Task["release"].invoke
90
- # Publish npm package via CLI
91
- system "npm publish"
92
- end
93
75
  end
data/alchemy_cms.gemspec CHANGED
@@ -1,80 +1,93 @@
1
- # coding: utf-8
2
- lib = File.expand_path('lib', __dir__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'alchemy/version'
5
+ require "alchemy/version"
5
6
 
6
7
  Gem::Specification.new do |gem|
7
- gem.name = 'alchemy_cms'
8
- gem.version = Alchemy::VERSION
9
- gem.platform = Gem::Platform::RUBY
10
- gem.authors = ['Thomas von Deyen', 'Robin Boening', 'Marc Schettke', 'Hendrik Mans', 'Carsten Fregin', 'Martin Meyerhoff']
11
- gem.email = ['hello@alchemy-cms.com']
12
- gem.homepage = 'https://alchemy-cms.com'
13
- gem.summary = 'A powerful, userfriendly and flexible CMS for Rails'
14
- gem.description = 'Alchemy is a powerful, userfriendly and flexible Rails CMS.'
15
- gem.requirements << 'ImageMagick (libmagick), v6.6 or greater.'
16
- gem.required_ruby_version = '>= 2.3.0'
17
- gem.license = 'BSD New'
18
- gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
19
- gem.require_paths = ['lib']
8
+ gem.name = "alchemy_cms"
9
+ gem.version = Alchemy::VERSION
10
+ gem.platform = Gem::Platform::RUBY
11
+ gem.authors = ["Thomas von Deyen", "Robin Boening", "Marc Schettke", "Hendrik Mans", "Carsten Fregin", "Martin Meyerhoff"]
12
+ gem.email = ["hello@alchemy-cms.com"]
13
+ gem.homepage = "https://alchemy-cms.com"
14
+ gem.summary = "A powerful, userfriendly and flexible CMS for Rails"
15
+ gem.description = "Alchemy is a powerful, userfriendly and flexible Rails CMS."
16
+ gem.requirements << "ImageMagick (libmagick), v6.6 or greater."
17
+ gem.required_ruby_version = ">= 2.5.0"
18
+ gem.license = "BSD New"
19
+ gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
20
+ gem.require_paths = ["lib"]
21
+
22
+ %w[
23
+ actionmailer
24
+ actionpack
25
+ actionview
26
+ activejob
27
+ activemodel
28
+ activerecord
29
+ activesupport
30
+ railties
31
+ ].each do |rails_gem|
32
+ gem.add_runtime_dependency rails_gem, [">= 6.0", "< 6.1"]
33
+ end
20
34
 
21
- gem.add_runtime_dependency 'active_model_serializers', ['~> 0.10.0']
22
- gem.add_runtime_dependency 'acts_as_list', ['>= 0.3', '< 2']
23
- gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
24
- gem.add_runtime_dependency 'cancancan', ['>= 2.1', '< 4.0']
25
- gem.add_runtime_dependency 'coffee-rails', ['>= 4.0', '< 6.0']
26
- gem.add_runtime_dependency 'dragonfly', ['~> 1.4']
27
- gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
28
- gem.add_runtime_dependency 'gutentag', ['~> 2.2', '>= 2.2.1']
29
- gem.add_runtime_dependency 'handlebars_assets', ['~> 0.23']
30
- gem.add_runtime_dependency 'jquery-rails', ['~> 4.0', '>= 4.0.4']
31
- gem.add_runtime_dependency 'jquery-ui-rails', ['~> 6.0']
32
- gem.add_runtime_dependency 'kaminari', ['~> 1.1']
33
- gem.add_runtime_dependency 'originator', ['~> 3.1']
34
- gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
35
- gem.add_runtime_dependency 'rails', ['>= 5.2.0', '< 6.1']
36
- gem.add_runtime_dependency 'ransack', ['>= 1.8', '< 3.0']
37
- gem.add_runtime_dependency 'request_store', ['~> 1.2']
38
- gem.add_runtime_dependency 'responders', ['>= 2.0', '< 4.0']
39
- gem.add_runtime_dependency 'sassc-rails', ['~> 2.1']
40
- gem.add_runtime_dependency 'simple_form', ['>= 4.0', '< 6']
41
- gem.add_runtime_dependency 'sprockets', ['>= 3.0', '< 5']
42
- gem.add_runtime_dependency 'turbolinks', ['>= 2.5']
43
- gem.add_runtime_dependency 'webpacker', ['>= 4.0', '< 6']
35
+ gem.add_runtime_dependency "active_model_serializers", ["~> 0.10.0"]
36
+ gem.add_runtime_dependency "acts_as_list", [">= 0.3", "< 2"]
37
+ gem.add_runtime_dependency "awesome_nested_set", ["~> 3.1"]
38
+ gem.add_runtime_dependency "cancancan", [">= 2.1", "< 4.0"]
39
+ gem.add_runtime_dependency "coffee-rails", [">= 4.0", "< 6.0"]
40
+ gem.add_runtime_dependency "dragonfly", ["~> 1.4"]
41
+ gem.add_runtime_dependency "dragonfly_svg", ["~> 0.0.4"]
42
+ gem.add_runtime_dependency "gutentag", ["~> 2.2", ">= 2.2.1"]
43
+ gem.add_runtime_dependency "handlebars_assets", ["~> 0.23"]
44
+ gem.add_runtime_dependency "jquery-rails", ["~> 4.0", ">= 4.0.4"]
45
+ gem.add_runtime_dependency "jquery-ui-rails", ["~> 6.0"]
46
+ gem.add_runtime_dependency "kaminari", ["~> 1.1"]
47
+ gem.add_runtime_dependency "originator", ["~> 3.1"]
48
+ gem.add_runtime_dependency "non-stupid-digest-assets", ["~> 1.0.8"]
49
+ gem.add_runtime_dependency "ransack", [">= 1.8", "< 2.4.2"] # 2.4.2 dropped Ruby 2.5 support in a patch level release
50
+ gem.add_runtime_dependency "request_store", ["~> 1.2"]
51
+ gem.add_runtime_dependency "responders", [">= 2.0", "< 4.0"]
52
+ gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
53
+ gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
54
+ gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
55
+ gem.add_runtime_dependency "turbolinks", [">= 2.5"]
56
+ gem.add_runtime_dependency "webpacker", [">= 4.0", "< 6"]
44
57
 
45
- gem.add_development_dependency 'capybara', ['~> 3.0']
46
- gem.add_development_dependency 'capybara-screenshot', ['~> 1.0']
47
- gem.add_development_dependency 'factory_bot_rails', ['~> 6.0']
48
- gem.add_development_dependency 'puma', ['~> 5.0']
49
- gem.add_development_dependency 'rails-controller-testing', ['~> 1.0']
50
- gem.add_development_dependency 'rspec-activemodel-mocks', ['~> 1.0']
51
- gem.add_development_dependency 'rspec-rails', ['>= 4.0.0.beta2']
52
- gem.add_development_dependency 'simplecov', ['~> 0.20']
53
- gem.add_development_dependency 'webdrivers', ['~> 4.0']
54
- gem.add_development_dependency 'webmock', ['~> 3.3']
55
- gem.add_development_dependency 'shoulda-matchers', ['~> 4.0']
56
- gem.add_development_dependency 'timecop', ['~> 0.9']
58
+ gem.add_development_dependency "capybara", ["~> 3.0"]
59
+ gem.add_development_dependency "capybara-screenshot", ["~> 1.0"]
60
+ gem.add_development_dependency "factory_bot_rails", ["~> 6.0"]
61
+ gem.add_development_dependency "puma", ["~> 5.0"]
62
+ gem.add_development_dependency "rails-controller-testing", ["~> 1.0"]
63
+ gem.add_development_dependency "rspec-activemodel-mocks", ["~> 1.0"]
64
+ gem.add_development_dependency "rspec-rails", [">= 4.0.0.beta2"]
65
+ gem.add_development_dependency "simplecov", ["~> 0.20"]
66
+ gem.add_development_dependency "webdrivers", ["~> 4.0"]
67
+ gem.add_development_dependency "webmock", ["~> 3.3"]
68
+ gem.add_development_dependency "shoulda-matchers", ["~> 4.0"]
69
+ gem.add_development_dependency "timecop", ["~> 0.9"]
57
70
 
58
- gem.post_install_message = <<-MSG
59
- -------------------------------------------------------------
60
- Thank you for installing Alchemy CMS
61
- -------------------------------------------------------------
71
+ gem.post_install_message = <<~MSG
72
+ -------------------------------------------------------------
73
+ Thank you for installing Alchemy CMS
74
+ -------------------------------------------------------------
62
75
 
63
- - Complete the installation in an existing Rails application:
76
+ - Complete the installation in an existing Rails application:
64
77
 
65
- $ bin/rake alchemy:install
78
+ $ bin/rake alchemy:install
66
79
 
67
- - Complete the upgrade of an existing Alchemy installation:
80
+ - Complete the upgrade of an existing Alchemy installation:
68
81
 
69
- $ bin/rake alchemy:upgrade
82
+ $ bin/rake alchemy:upgrade
70
83
 
71
- and follow the onscreen instructions.
84
+ and follow the onscreen instructions.
72
85
 
73
- Need help? Try:
86
+ Need help? Try:
74
87
 
75
- * https://stackoverflow.com/questions/tagged/alchemy-cms
76
- * https://slackin.alchemy-cms.com
77
- -------------------------------------------------------------
88
+ * https://stackoverflow.com/questions/tagged/alchemy-cms
89
+ * https://slackin.alchemy-cms.com
90
+ -------------------------------------------------------------
78
91
 
79
- MSG
92
+ MSG
80
93
  end
@@ -31,17 +31,17 @@
31
31
  //= require alchemy/alchemy.growler
32
32
  //= require alchemy/alchemy.gui
33
33
  //= require alchemy/alchemy.hotkeys
34
- //= require alchemy/alchemy.image_cropper
35
34
  //= require alchemy/alchemy.image_overlay
36
35
  //= require alchemy/alchemy.string_extension
37
36
  //= require alchemy/alchemy.link_dialog
38
37
  //= require alchemy/alchemy.list_filter
39
38
  //= require alchemy/alchemy.initializer
39
+ //= require alchemy/alchemy.page_sorter
40
40
  //= require alchemy/alchemy.uploader
41
41
  //= require alchemy/alchemy.preview_window
42
+ //= require alchemy/alchemy.sitemap
42
43
  //= require alchemy/alchemy.spinner
43
44
  //= require alchemy/alchemy.tinymce
44
45
  //= require alchemy/alchemy.tooltips
45
- //= require alchemy/alchemy.trash_window
46
46
  //= require alchemy/page_select
47
47
  //= require alchemy/node_select
@@ -42,36 +42,6 @@ $.extend Alchemy,
42
42
  $overlay.hide()
43
43
  return
44
44
 
45
- # Shows spinner while loading images and
46
- # fades the image after its been loaded
47
- ImageLoader: (scope = document, options = {fill: '#fff'}) ->
48
- $('img', scope).each ->
49
- if !this.complete
50
- image = $(this).hide()
51
- $parent = image.parent()
52
- spinner = new Alchemy.Spinner('small', options)
53
- spinner.spin $parent[0]
54
- image.on 'load', ->
55
- spinner.stop()
56
- image.fadeIn 400
57
- image.on 'error', (evt) ->
58
- message = "Could not load #{this.src}"
59
- spinner.stop()
60
- console.error(message, evt)
61
- $parent.html('<span class="icon fas fa-exclamation-triangle" title="' + message + '" />')
62
- return
63
-
64
- # Removes the picture from essence picture thumbnail
65
- removePicture: (selector) ->
66
- $form_field = $(selector)
67
- $element = $form_field.closest(".element-editor")
68
- $content = $form_field.closest(".content_editor")
69
- if $form_field[0]
70
- $form_field.val ""
71
- $content.find(".thumbnail_background").html('<i class="icon far fa-image fa-fw"/>')
72
- Alchemy.setElementDirty $element
73
- false
74
-
75
45
  # Initializes all select tag with .alchemy_selectbox class as select2 instance
76
46
  # Pass a jQuery scope to only init a subset of selectboxes.
77
47
  SelectBox: (scope) ->