alchemy_cms 6.1.5 → 7.0.0.pre.b

Sign up to get free protection for your applications and to get access to all the features.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/brakeman-analysis.yml +2 -2
  3. data/.github/workflows/ci.yml +7 -10
  4. data/.github/workflows/lint.yml +17 -0
  5. data/.gitignore +1 -6
  6. data/.hound.yml +2 -3
  7. data/.rubocop.yml +4 -350
  8. data/.standard.yml +3 -0
  9. data/CHANGELOG.md +49 -19
  10. data/Gemfile +4 -2
  11. data/README.md +7 -9
  12. data/Rakefile +12 -7
  13. data/alchemy_cms.gemspec +3 -3
  14. data/app/assets/javascripts/alchemy/admin.js +0 -1
  15. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +1 -1
  16. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +18 -32
  17. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -2
  18. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -2
  19. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +33 -30
  20. data/app/assets/stylesheets/alchemy/elements.scss +16 -35
  21. data/app/assets/stylesheets/alchemy/forms.scss +0 -4
  22. data/app/assets/stylesheets/alchemy/node-select.scss +2 -2
  23. data/app/components/alchemy/ingredients/audio_view.rb +37 -0
  24. data/app/components/alchemy/ingredients/base_view.rb +38 -0
  25. data/app/components/alchemy/ingredients/boolean_view.rb +13 -0
  26. data/app/components/alchemy/ingredients/datetime_view.rb +22 -0
  27. data/app/components/alchemy/ingredients/file_view.rb +40 -0
  28. data/app/components/alchemy/ingredients/headline_view.rb +20 -0
  29. data/app/components/alchemy/ingredients/html_view.rb +9 -0
  30. data/app/components/alchemy/ingredients/link_view.rb +25 -0
  31. data/app/components/alchemy/ingredients/node_view.rb +11 -0
  32. data/app/components/alchemy/ingredients/page_view.rb +15 -0
  33. data/app/components/alchemy/ingredients/picture_view.rb +108 -0
  34. data/app/components/alchemy/ingredients/richtext_view.rb +22 -0
  35. data/app/components/alchemy/ingredients/select_view.rb +6 -0
  36. data/app/components/alchemy/ingredients/text_view.rb +41 -0
  37. data/app/components/alchemy/ingredients/video_view.rb +39 -0
  38. data/app/controllers/alchemy/admin/attachments_controller.rb +3 -4
  39. data/app/controllers/alchemy/admin/base_controller.rb +7 -7
  40. data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -2
  41. data/app/controllers/alchemy/admin/elements_controller.rb +33 -43
  42. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  43. data/app/controllers/alchemy/admin/nodes_controller.rb +2 -2
  44. data/app/controllers/alchemy/admin/pages_controller.rb +11 -11
  45. data/app/controllers/alchemy/admin/pictures_controller.rb +15 -15
  46. data/app/controllers/alchemy/admin/resources_controller.rb +28 -46
  47. data/app/controllers/alchemy/admin/styleguide_controller.rb +1 -0
  48. data/app/controllers/alchemy/admin/tags_controller.rb +11 -11
  49. data/app/controllers/alchemy/api/base_controller.rb +2 -2
  50. data/app/controllers/alchemy/api/elements_controller.rb +11 -13
  51. data/app/controllers/alchemy/api/ingredients_controller.rb +1 -1
  52. data/app/controllers/alchemy/api/nodes_controller.rb +1 -1
  53. data/app/controllers/alchemy/api/pages_controller.rb +14 -12
  54. data/app/controllers/alchemy/attachments_controller.rb +3 -3
  55. data/app/controllers/alchemy/base_controller.rb +1 -1
  56. data/app/controllers/alchemy/messages_controller.rb +18 -18
  57. data/app/controllers/alchemy/pages_controller.rb +10 -16
  58. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +1 -0
  59. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +5 -7
  60. data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +5 -5
  61. data/app/decorators/alchemy/element_editor.rb +13 -33
  62. data/app/decorators/alchemy/ingredient_editor.rb +6 -6
  63. data/app/helpers/alchemy/admin/attachments_helper.rb +1 -1
  64. data/app/helpers/alchemy/admin/base_helper.rb +21 -22
  65. data/app/helpers/alchemy/admin/elements_helper.rb +1 -3
  66. data/app/helpers/alchemy/admin/form_helper.rb +1 -1
  67. data/app/helpers/alchemy/admin/navigation_helper.rb +7 -7
  68. data/app/helpers/alchemy/admin/pages_helper.rb +2 -2
  69. data/app/helpers/alchemy/admin/tags_helper.rb +3 -3
  70. data/app/helpers/alchemy/base_helper.rb +2 -2
  71. data/app/helpers/alchemy/elements_block_helper.rb +13 -48
  72. data/app/helpers/alchemy/elements_helper.rb +15 -23
  73. data/app/helpers/alchemy/pages_helper.rb +11 -15
  74. data/app/helpers/alchemy/url_helper.rb +1 -1
  75. data/app/mailers/alchemy/messages_mailer.rb +1 -1
  76. data/app/models/alchemy/attachment.rb +12 -9
  77. data/app/models/alchemy/base_record.rb +3 -0
  78. data/app/models/alchemy/eager_loading.rb +6 -7
  79. data/app/models/alchemy/element/definitions.rb +1 -1
  80. data/app/models/alchemy/element/element_ingredients.rb +4 -11
  81. data/app/models/alchemy/element/presenters.rb +9 -25
  82. data/app/models/alchemy/element.rb +4 -19
  83. data/app/models/alchemy/elements_repository.rb +1 -1
  84. data/app/models/alchemy/image_cropper_settings.rb +2 -2
  85. data/app/models/alchemy/ingredient.rb +29 -16
  86. data/app/models/alchemy/ingredient_validator.rb +1 -1
  87. data/app/models/alchemy/ingredients/audio.rb +2 -0
  88. data/app/models/alchemy/ingredients/datetime.rb +3 -1
  89. data/app/models/alchemy/ingredients/file.rb +7 -0
  90. data/app/models/alchemy/ingredients/headline.rb +6 -0
  91. data/app/models/alchemy/ingredients/link.rb +2 -0
  92. data/app/models/alchemy/ingredients/node.rb +2 -0
  93. data/app/models/alchemy/ingredients/page.rb +2 -0
  94. data/app/models/alchemy/ingredients/picture.rb +29 -0
  95. data/app/models/alchemy/ingredients/richtext.rb +17 -8
  96. data/app/models/alchemy/ingredients/select.rb +1 -0
  97. data/app/models/alchemy/ingredients/text.rb +8 -0
  98. data/app/models/alchemy/ingredients/video.rb +2 -0
  99. data/app/models/alchemy/language/code.rb +1 -1
  100. data/app/models/alchemy/language.rb +4 -4
  101. data/app/models/alchemy/legacy_page_url.rb +1 -1
  102. data/app/models/alchemy/node.rb +11 -8
  103. data/app/models/alchemy/page/page_elements.rb +19 -40
  104. data/app/models/alchemy/page/page_layouts.rb +0 -14
  105. data/app/models/alchemy/page/page_naming.rb +4 -4
  106. data/app/models/alchemy/page/page_natures.rb +1 -11
  107. data/app/models/alchemy/page/page_scopes.rb +5 -5
  108. data/app/models/alchemy/page.rb +11 -19
  109. data/app/models/alchemy/picture/calculations.rb +2 -2
  110. data/app/models/alchemy/picture/transformations.rb +2 -32
  111. data/app/models/alchemy/picture/url.rb +5 -5
  112. data/app/models/alchemy/picture.rb +22 -20
  113. data/app/models/alchemy/picture_thumb/create.rb +7 -18
  114. data/app/models/alchemy/picture_thumb/file_store.rb +33 -0
  115. data/app/models/alchemy/picture_thumb.rb +11 -11
  116. data/app/models/alchemy/picture_variant.rb +2 -3
  117. data/app/models/alchemy/tag.rb +8 -0
  118. data/app/models/concerns/alchemy/picture_thumbnails.rb +8 -8
  119. data/app/serializers/alchemy/base_serializer.rb +1 -1
  120. data/app/serializers/alchemy/element_serializer.rb +1 -6
  121. data/app/serializers/alchemy/page_tree_serializer.rb +7 -7
  122. data/app/services/alchemy/delete_elements.rb +1 -7
  123. data/app/services/alchemy/duplicate_element.rb +2 -7
  124. data/app/services/alchemy/tag_validations.rb +1 -1
  125. data/app/views/alchemy/admin/elements/_element.html.erb +8 -22
  126. data/app/views/alchemy/admin/elements/create.js.erb +1 -1
  127. data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
  128. data/app/views/alchemy/admin/elements/order.js.erb +1 -1
  129. data/app/views/alchemy/admin/elements/update.js.erb +1 -2
  130. data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
  131. data/app/views/alchemy/admin/pages/_file_link.html.erb +2 -2
  132. data/app/views/alchemy/admin/pages/_internal_link.html.erb +2 -2
  133. data/app/views/alchemy/admin/pages/edit.html.erb +1 -4
  134. data/app/views/alchemy/admin/pages/update.js.erb +10 -4
  135. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -3
  136. data/app/views/alchemy/admin/pictures/_infos.html.erb +4 -6
  137. data/app/views/alchemy/ingredients/_audio_view.html.erb +1 -14
  138. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  139. data/app/views/alchemy/ingredients/_boolean_view.html.erb +1 -1
  140. data/app/views/alchemy/ingredients/_datetime_view.html.erb +3 -9
  141. data/app/views/alchemy/ingredients/_file_view.html.erb +3 -16
  142. data/app/views/alchemy/ingredients/_headline_editor.html.erb +1 -1
  143. data/app/views/alchemy/ingredients/_headline_view.html.erb +4 -10
  144. data/app/views/alchemy/ingredients/_html_editor.html.erb +1 -1
  145. data/app/views/alchemy/ingredients/_html_view.html.erb +1 -1
  146. data/app/views/alchemy/ingredients/_link_view.html.erb +4 -9
  147. data/app/views/alchemy/ingredients/_node_editor.html.erb +1 -1
  148. data/app/views/alchemy/ingredients/_node_view.html.erb +1 -1
  149. data/app/views/alchemy/ingredients/_page_view.html.erb +1 -4
  150. data/app/views/alchemy/ingredients/_picture_editor.html.erb +4 -4
  151. data/app/views/alchemy/ingredients/_picture_view.html.erb +4 -5
  152. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +11 -2
  153. data/app/views/alchemy/ingredients/_richtext_view.html.erb +3 -3
  154. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -2
  155. data/app/views/alchemy/ingredients/_select_view.html.erb +1 -1
  156. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  157. data/app/views/alchemy/ingredients/_text_view.html.erb +3 -19
  158. data/app/views/alchemy/ingredients/_video_view.html.erb +3 -18
  159. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +4 -3
  160. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +1 -0
  161. data/app/views/alchemy/pages/_meta_data.html.erb +0 -1
  162. data/app/views/layouts/alchemy/admin.html.erb +10 -8
  163. data/bin/setup +37 -0
  164. data/bin/start +17 -0
  165. data/config/alchemy/config.yml +6 -6
  166. data/config/brakeman.ignore +56 -57
  167. data/config/initializers/assets.rb +1 -0
  168. data/config/initializers/dragonfly.rb +1 -0
  169. data/config/initializers/mime_types.rb +1 -0
  170. data/config/initializers/mini_profiler.rb +1 -0
  171. data/config/initializers/simple_form.rb +3 -2
  172. data/config/locales/alchemy.en.yml +98 -112
  173. data/config/routes.rb +22 -36
  174. data/config/spring.rb +1 -0
  175. data/db/migrate/20230121212637_alchemy_six_point_one.rb +248 -0
  176. data/db/migrate/20230505132743_add_indexes_to_alchemy_pictures.rb +6 -0
  177. data/lib/alchemy/admin/locale.rb +3 -3
  178. data/lib/alchemy/admin/preview_url.rb +2 -2
  179. data/lib/alchemy/auth_accessors.rb +1 -1
  180. data/lib/alchemy/cache_digests/template_tracker.rb +6 -7
  181. data/lib/alchemy/config.rb +3 -3
  182. data/lib/alchemy/controller_actions.rb +4 -4
  183. data/lib/alchemy/deprecation.rb +2 -1
  184. data/lib/alchemy/dragonfly/processors/thumbnail.rb +1 -1
  185. data/lib/alchemy/element_definition.rb +2 -2
  186. data/lib/alchemy/engine.rb +2 -1
  187. data/lib/alchemy/errors.rb +0 -11
  188. data/lib/alchemy/filetypes.rb +7 -7
  189. data/lib/alchemy/forms/builder.rb +4 -4
  190. data/lib/alchemy/hints.rb +10 -10
  191. data/lib/alchemy/i18n.rb +6 -4
  192. data/lib/alchemy/install/tasks.rb +2 -1
  193. data/lib/alchemy/name_conversions.rb +1 -1
  194. data/lib/alchemy/page_layout.rb +1 -1
  195. data/lib/alchemy/permissions.rb +5 -17
  196. data/lib/alchemy/resource.rb +10 -10
  197. data/lib/alchemy/resources_helper.rb +7 -7
  198. data/lib/alchemy/routing_constraints.rb +5 -5
  199. data/lib/alchemy/searchable_resource.rb +38 -0
  200. data/lib/alchemy/seeder.rb +4 -3
  201. data/lib/alchemy/shell.rb +2 -1
  202. data/lib/alchemy/taggable.rb +3 -2
  203. data/lib/alchemy/tasks/tidy.rb +1 -38
  204. data/lib/alchemy/test_support/capybara_helpers.rb +69 -0
  205. data/lib/alchemy/test_support/config_stubbing.rb +1 -0
  206. data/lib/alchemy/test_support/factories/element_factory.rb +2 -4
  207. data/lib/alchemy/test_support/factories/ingredient_factory.rb +1 -1
  208. data/lib/alchemy/test_support/factories/page_factory.rb +5 -3
  209. data/lib/alchemy/test_support/having_crop_action_examples.rb +9 -9
  210. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +33 -33
  211. data/lib/alchemy/test_support/integration_helpers.rb +4 -3
  212. data/lib/alchemy/test_support/shared_contexts.rb +2 -1
  213. data/lib/alchemy/test_support/shared_dom_ids_examples.rb +10 -10
  214. data/lib/alchemy/test_support/shared_ingredient_examples.rb +13 -7
  215. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -0
  216. data/lib/alchemy/tinymce.rb +3 -43
  217. data/lib/alchemy/upgrader/seven_point_zero.rb +45 -0
  218. data/lib/alchemy/upgrader/tasks/.keep +0 -0
  219. data/lib/alchemy/upgrader.rb +9 -3
  220. data/lib/alchemy/version.rb +1 -1
  221. data/lib/alchemy.rb +0 -19
  222. data/lib/alchemy_cms.rb +2 -2
  223. data/lib/generators/alchemy/base.rb +3 -2
  224. data/lib/generators/alchemy/elements/elements_generator.rb +2 -2
  225. data/lib/generators/alchemy/elements/templates/view.html.erb +1 -10
  226. data/lib/generators/alchemy/elements/templates/view.html.haml +1 -9
  227. data/lib/generators/alchemy/elements/templates/view.html.slim +1 -9
  228. data/lib/generators/alchemy/ingredient/ingredient_generator.rb +1 -0
  229. data/lib/generators/alchemy/install/files/alchemy.en.yml +7 -8
  230. data/lib/generators/alchemy/install/files/application.html.erb +1 -1
  231. data/lib/generators/alchemy/install/install_generator.rb +20 -23
  232. data/lib/generators/alchemy/install/templates/elements.yml.tt +12 -12
  233. data/lib/generators/alchemy/module/module_generator.rb +1 -0
  234. data/lib/generators/alchemy/page_layouts/page_layouts_generator.rb +1 -0
  235. data/lib/generators/alchemy/site_layouts/site_layouts_generator.rb +1 -0
  236. data/lib/generators/alchemy/views/views_generator.rb +2 -1
  237. data/lib/tasks/alchemy/thumbnails.rake +6 -25
  238. data/lib/tasks/alchemy/tidy.rake +2 -12
  239. data/lib/tasks/alchemy/upgrade.rake +13 -49
  240. data/package/admin.js +2 -0
  241. data/package/dist/admin.js +16 -0
  242. data/package/dist/admin.js.map +7 -0
  243. data/package/src/datepicker.js +1 -0
  244. data/package/src/tinymce.js +142 -0
  245. data/package.json +5 -3
  246. metadata +41 -135
  247. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +0 -93
  248. data/app/controllers/alchemy/admin/contents_controller.rb +0 -21
  249. data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -30
  250. data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -31
  251. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +0 -43
  252. data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -34
  253. data/app/controllers/alchemy/api/contents_controller.rb +0 -52
  254. data/app/decorators/alchemy/content_editor.rb +0 -119
  255. data/app/helpers/alchemy/admin/contents_helper.rb +0 -42
  256. data/app/helpers/alchemy/admin/essences_helper.rb +0 -31
  257. data/app/models/alchemy/content/factory.rb +0 -143
  258. data/app/models/alchemy/content.rb +0 -247
  259. data/app/models/alchemy/element/element_contents.rb +0 -200
  260. data/app/models/alchemy/element/element_essences.rb +0 -133
  261. data/app/models/alchemy/essence_audio.rb +0 -13
  262. data/app/models/alchemy/essence_boolean.rb +0 -20
  263. data/app/models/alchemy/essence_date.rb +0 -25
  264. data/app/models/alchemy/essence_file.rb +0 -49
  265. data/app/models/alchemy/essence_headline.rb +0 -41
  266. data/app/models/alchemy/essence_html.rb +0 -23
  267. data/app/models/alchemy/essence_link.rb +0 -21
  268. data/app/models/alchemy/essence_node.rb +0 -19
  269. data/app/models/alchemy/essence_page.rb +0 -17
  270. data/app/models/alchemy/essence_picture.rb +0 -67
  271. data/app/models/alchemy/essence_picture_view.rb +0 -90
  272. data/app/models/alchemy/essence_richtext.rb +0 -44
  273. data/app/models/alchemy/essence_select.rb +0 -19
  274. data/app/models/alchemy/essence_text.rb +0 -23
  275. data/app/models/alchemy/essence_video.rb +0 -13
  276. data/app/presenters/alchemy/picture_view.rb +0 -88
  277. data/app/serializers/alchemy/content_serializer.rb +0 -17
  278. data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -10
  279. data/app/serializers/alchemy/essence_date_serializer.rb +0 -10
  280. data/app/serializers/alchemy/essence_file_serializer.rb +0 -13
  281. data/app/serializers/alchemy/essence_html_serializer.rb +0 -10
  282. data/app/serializers/alchemy/essence_link_serializer.rb +0 -13
  283. data/app/serializers/alchemy/essence_picture_serializer.rb +0 -28
  284. data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -11
  285. data/app/serializers/alchemy/essence_select_serializer.rb +0 -10
  286. data/app/serializers/alchemy/essence_text_serializer.rb +0 -22
  287. data/app/views/alchemy/admin/contents/create.js.erb +0 -21
  288. data/app/views/alchemy/admin/essence_audios/edit.html.erb +0 -7
  289. data/app/views/alchemy/admin/essence_files/edit.html.erb +0 -21
  290. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -5
  291. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +0 -30
  292. data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +0 -3
  293. data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -8
  294. data/app/views/alchemy/admin/essence_videos/edit.html.erb +0 -12
  295. data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +0 -13
  296. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -4
  297. data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -15
  298. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +0 -11
  299. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +0 -2
  300. data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -16
  301. data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -10
  302. data/app/views/alchemy/essences/_essence_file_editor.html.erb +0 -54
  303. data/app/views/alchemy/essences/_essence_file_view.html.erb +0 -18
  304. data/app/views/alchemy/essences/_essence_headline_editor.html.erb +0 -36
  305. data/app/views/alchemy/essences/_essence_headline_view.html.erb +0 -10
  306. data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -10
  307. data/app/views/alchemy/essences/_essence_html_view.html.erb +0 -2
  308. data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -30
  309. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -10
  310. data/app/views/alchemy/essences/_essence_node_editor.html.erb +0 -27
  311. data/app/views/alchemy/essences/_essence_node_view.html.erb +0 -1
  312. data/app/views/alchemy/essences/_essence_page_editor.html.erb +0 -26
  313. data/app/views/alchemy/essences/_essence_page_view.html.erb +0 -5
  314. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +0 -59
  315. data/app/views/alchemy/essences/_essence_picture_view.html.erb +0 -6
  316. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -14
  317. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +0 -4
  318. data/app/views/alchemy/essences/_essence_select_editor.html.erb +0 -28
  319. data/app/views/alchemy/essences/_essence_select_view.html.erb +0 -2
  320. data/app/views/alchemy/essences/_essence_text_editor.html.erb +0 -29
  321. data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -17
  322. data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -4
  323. data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -19
  324. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +0 -59
  325. data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +0 -20
  326. data/app/views/alchemy/pages/show.rss.builder +0 -21
  327. data/db/migrate/20200226213334_alchemy_four_point_four.rb +0 -313
  328. data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +0 -11
  329. data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +0 -28
  330. data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +0 -8
  331. data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +0 -27
  332. data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +0 -6
  333. data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +0 -24
  334. data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +0 -22
  335. data/db/migrate/20200907111332_remove_tri_state_booleans.rb +0 -33
  336. data/db/migrate/20201207131309_create_page_versions.rb +0 -19
  337. data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +0 -76
  338. data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +0 -10
  339. data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +0 -7
  340. data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +0 -12
  341. data/db/migrate/20210506135919_create_essence_audios.rb +0 -19
  342. data/db/migrate/20210506140258_create_essence_videos.rb +0 -23
  343. data/db/migrate/20210508091432_create_alchemy_ingredients.rb +0 -22
  344. data/db/migrate/20220514072456_restrict_on_delete_page_id_foreign_key_from_alchemy_nodes.rb +0 -13
  345. data/db/migrate/20220622130905_add_playsinline_to_alchemy_essence_videos.rb +0 -9
  346. data/lib/alchemy/essence.rb +0 -250
  347. data/lib/alchemy/test_support/essence_shared_examples.rb +0 -271
  348. data/lib/alchemy/test_support/factories/content_factory.rb +0 -20
  349. data/lib/alchemy/test_support/factories/essence_audio_factory.rb +0 -7
  350. data/lib/alchemy/test_support/factories/essence_file_factory.rb +0 -7
  351. data/lib/alchemy/test_support/factories/essence_page_factory.rb +0 -7
  352. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +0 -11
  353. data/lib/alchemy/test_support/factories/essence_text_factory.rb +0 -7
  354. data/lib/alchemy/test_support/factories/essence_video_factory.rb +0 -7
  355. data/lib/alchemy/upgrader/five_point_zero.rb +0 -41
  356. data/lib/alchemy/upgrader/six_point_zero.rb +0 -21
  357. data/lib/alchemy/upgrader/tasks/add_page_versions.rb +0 -33
  358. data/lib/alchemy/upgrader/tasks/element_views_updater.rb +0 -34
  359. data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +0 -29
  360. data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +0 -74
  361. data/lib/generators/alchemy/essence/essence_generator.rb +0 -49
  362. data/lib/generators/alchemy/essence/templates/editor.html.erb +0 -17
  363. data/lib/generators/alchemy/essence/templates/view.html.erb +0 -2
@@ -38,7 +38,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
38
38
  end
39
39
 
40
40
  context "with format in the options" do
41
- let(:options) { { format: "gif" } }
41
+ let(:options) { {format: "gif"} }
42
42
 
43
43
  it "takes this as format." do
44
44
  expect(picture_url).to match(/\.gif/)
@@ -53,24 +53,24 @@ RSpec.shared_examples_for "having picture thumbnails" do
53
53
 
54
54
  context "if cropping is enabled" do
55
55
  before do
56
- allow(record).to receive(:settings) { { crop: true } }
56
+ allow(record).to receive(:settings) { {crop: true} }
57
57
  end
58
58
 
59
59
  it "passes these crop values to the picture's url method." do
60
60
  expect(picture).to receive(:url).with(
61
- hash_including(crop_from: "10x10", crop_size: "200x200"),
61
+ hash_including(crop_from: "10x10", crop_size: "200x200")
62
62
  )
63
63
  picture_url
64
64
  end
65
65
 
66
66
  context "but with crop values in the options" do
67
67
  let(:options) do
68
- { crop_from: "30x30", crop_size: "75x75" }
68
+ {crop_from: "30x30", crop_size: "75x75"}
69
69
  end
70
70
 
71
71
  it "passes these crop values instead." do
72
72
  expect(picture).to receive(:url).with(
73
- hash_including(crop_from: "30x30", crop_size: "75x75"),
73
+ hash_including(crop_from: "30x30", crop_size: "75x75")
74
74
  )
75
75
  picture_url
76
76
  end
@@ -79,7 +79,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
79
79
  end
80
80
 
81
81
  context "with other options" do
82
- let(:options) { { foo: "baz" } }
82
+ let(:options) { {foo: "baz"} }
83
83
 
84
84
  context "and the image does not need to be processed" do
85
85
  before do
@@ -129,7 +129,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
129
129
 
130
130
  context "with cropping enabled" do
131
131
  before do
132
- allow(record).to receive(:settings) { { crop: true } }
132
+ allow(record).to receive(:settings) { {crop: true} }
133
133
  end
134
134
 
135
135
  it "includes these crop values.", :aggregate_failures do
@@ -140,7 +140,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
140
140
 
141
141
  context "with cropping disabled" do
142
142
  before do
143
- allow(record).to receive(:settings) { { crop: nil } }
143
+ allow(record).to receive(:settings) { {crop: nil} }
144
144
  end
145
145
 
146
146
  it "does not include these crop values.", :aggregate_failures do
@@ -165,7 +165,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
165
165
 
166
166
  context "having size setting" do
167
167
  before do
168
- allow(record).to receive(:settings) { { size: "30x70" } }
168
+ allow(record).to receive(:settings) { {size: "30x70"} }
169
169
  end
170
170
 
171
171
  it "includes this size." do
@@ -175,7 +175,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
175
175
 
176
176
  context "having crop setting" do
177
177
  before do
178
- allow(record).to receive(:settings) { { crop: true } }
178
+ allow(record).to receive(:settings) { {crop: true} }
179
179
  end
180
180
 
181
181
  it "includes this setting" do
@@ -214,7 +214,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
214
214
 
215
215
  context "when crop is enabled in the settings" do
216
216
  let(:settings) do
217
- { crop: true }
217
+ {crop: true}
218
218
  end
219
219
 
220
220
  context "and crop sizes are present" do
@@ -228,8 +228,8 @@ RSpec.shared_examples_for "having picture thumbnails" do
228
228
  hash_including(
229
229
  crop_from: "10x10",
230
230
  crop_size: "200x200",
231
- crop: true,
232
- ),
231
+ crop: true
232
+ )
233
233
  )
234
234
  thumbnail_url
235
235
  end
@@ -241,8 +241,8 @@ RSpec.shared_examples_for "having picture thumbnails" do
241
241
  hash_including(
242
242
  crop_from: nil,
243
243
  crop_size: nil,
244
- crop: true,
245
- ),
244
+ crop: true
245
+ )
246
246
  )
247
247
  thumbnail_url
248
248
  end
@@ -251,7 +251,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
251
251
 
252
252
  context "when cropping is disabled in the settings" do
253
253
  let(:settings) do
254
- { crop: false }
254
+ {crop: false}
255
255
  end
256
256
 
257
257
  context "but crop sizes are present" do
@@ -265,8 +265,8 @@ RSpec.shared_examples_for "having picture thumbnails" do
265
265
  hash_including(
266
266
  crop_size: nil,
267
267
  crop_from: nil,
268
- crop: false,
269
- ),
268
+ crop: false
269
+ )
270
270
  )
271
271
  thumbnail_url
272
272
  end
@@ -316,7 +316,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
316
316
 
317
317
  context "when cropping is enabled in settings" do
318
318
  let(:settings) do
319
- { crop: true }
319
+ {crop: true}
320
320
  end
321
321
 
322
322
  context "and crop values are present" do
@@ -330,7 +330,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
330
330
  hash_including(
331
331
  crop_from: "10x10",
332
332
  crop_size: "200x200",
333
- crop: true,
333
+ crop: true
334
334
  )
335
335
  )
336
336
  end
@@ -342,7 +342,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
342
342
  hash_including(
343
343
  crop_from: nil,
344
344
  crop_size: nil,
345
- crop: true,
345
+ crop: true
346
346
  )
347
347
  )
348
348
  end
@@ -351,7 +351,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
351
351
 
352
352
  context "when cropping is disabled in settings" do
353
353
  let(:settings) do
354
- { crop: false }
354
+ {crop: false}
355
355
  end
356
356
 
357
357
  context "but crop values are present" do
@@ -365,7 +365,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
365
365
  hash_including(
366
366
  crop_from: nil,
367
367
  crop_size: nil,
368
- crop: false,
368
+ crop: false
369
369
  )
370
370
  )
371
371
  end
@@ -382,7 +382,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
382
382
  crop_size: nil,
383
383
  flatten: true,
384
384
  format: "jpg",
385
- size: "160x120",
385
+ size: "160x120"
386
386
  )
387
387
  end
388
388
  end
@@ -405,7 +405,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
405
405
  0,
406
406
  0,
407
407
  300,
408
- 250,
408
+ 250
409
409
  ]
410
410
  end
411
411
 
@@ -424,7 +424,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
424
424
 
425
425
  context "with sizes in settings" do
426
426
  let(:settings) do
427
- { size: "300x250" }
427
+ {size: "300x250"}
428
428
  end
429
429
 
430
430
  it "sets sizes to given values" do
@@ -453,7 +453,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
453
453
 
454
454
  context "and aspect ratio set" do
455
455
  let(:settings) do
456
- { fixed_ratio: "2" }
456
+ {fixed_ratio: "2"}
457
457
  end
458
458
 
459
459
  it "does not infer the height from the image file preserving the aspect ratio" do
@@ -466,7 +466,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
466
466
  context "when width or height is not fixed and an aspect ratio is given" do
467
467
  context "and aspect ratio set" do
468
468
  let(:settings) do
469
- { fixed_ratio: "0.5" }
469
+ {fixed_ratio: "0.5"}
470
470
  end
471
471
 
472
472
  it "width is given, it infers the height from width and ratio" do
@@ -503,7 +503,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
503
503
 
504
504
  context "with fixed_ratio set to false" do
505
505
  let(:settings) do
506
- { fixed_ratio: false }
506
+ {fixed_ratio: false}
507
507
  end
508
508
 
509
509
  it "sets ratio to false" do
@@ -513,7 +513,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
513
513
 
514
514
  context "with fixed_ratio set to a non float string" do
515
515
  let(:settings) do
516
- { fixed_ratio: "123,45" }
516
+ {fixed_ratio: "123,45"}
517
517
  end
518
518
 
519
519
  it "raises an error" do
@@ -523,7 +523,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
523
523
 
524
524
  context "with no fixed_ratio set" do
525
525
  let(:settings) do
526
- { size: "80x60" }
526
+ {size: "80x60"}
527
527
  end
528
528
 
529
529
  it "sets a fixed ratio from sizes" do
@@ -532,7 +532,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
532
532
  end
533
533
 
534
534
  context "with size set to different values" do
535
- let(:settings) { { crop: true, size: size } }
535
+ let(:settings) { {crop: true, size: size} }
536
536
 
537
537
  before do
538
538
  picture.image_file_width = 200
@@ -623,7 +623,7 @@ RSpec.shared_examples_for "having picture thumbnails" do
623
623
 
624
624
  context "with crop set to true" do
625
625
  before do
626
- allow(record).to receive(:settings) { { crop: true } }
626
+ allow(record).to receive(:settings) { {crop: true} }
627
627
  end
628
628
 
629
629
  context "if picture.image_file is nil" do
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Alchemy
3
4
  module TestSupport
4
5
  # Helpers for integration specs
@@ -11,11 +12,11 @@ module Alchemy
11
12
  # Pass either a user object or a symbol in the format of ':as_admin'.
12
13
  #
13
14
  def authorize_user(user_or_role = nil)
14
- case user_or_role
15
+ user = case user_or_role
15
16
  when Symbol, String
16
- user = build(:alchemy_dummy_user, user_or_role)
17
+ build(:alchemy_dummy_user, user_or_role)
17
18
  else
18
- user = user_or_role
19
+ user_or_role
19
20
  end
20
21
  allow_any_instance_of(ApplicationController).to receive(:current_user).and_return(user)
21
22
  end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  RSpec.shared_context "with invalid file" do
3
4
  let(:invalid_file) do
4
5
  fixture_file_upload(
5
6
  File.expand_path("../../../spec/fixtures/users.yml", __dir__),
6
- "text/x-yaml",
7
+ "text/x-yaml"
7
8
  )
8
9
  end
9
10
 
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.shared_examples_for "having dom ids" do
4
- let(:element) { build(:alchemy_element, name: "element_with_ingredients") }
4
+ let(:element) { build(:alchemy_element, name: "article") }
5
5
 
6
6
  let(:ingredient) do
7
7
  described_class.new(
8
8
  element: element,
9
- role: "headline",
9
+ role: "headline"
10
10
  )
11
11
  end
12
12
 
@@ -31,7 +31,7 @@ RSpec.shared_examples_for "having dom ids" do
31
31
 
32
32
  context "with anchor setting set to true" do
33
33
  let(:settings) do
34
- { anchor: true }
34
+ {anchor: true}
35
35
  end
36
36
 
37
37
  it "parameterizes dom_id" do
@@ -42,7 +42,7 @@ RSpec.shared_examples_for "having dom ids" do
42
42
 
43
43
  context "with anchor setting set to from_value" do
44
44
  let(:settings) do
45
- { anchor: "from_value" }
45
+ {anchor: "from_value"}
46
46
  end
47
47
 
48
48
  context "with a value present" do
@@ -50,7 +50,7 @@ RSpec.shared_examples_for "having dom ids" do
50
50
  described_class.new(
51
51
  element: element,
52
52
  role: "headline",
53
- value: "Hello World",
53
+ value: "Hello World"
54
54
  )
55
55
  end
56
56
 
@@ -64,7 +64,7 @@ RSpec.shared_examples_for "having dom ids" do
64
64
  described_class.new(
65
65
  element: element,
66
66
  role: "headline",
67
- value: "",
67
+ value: ""
68
68
  )
69
69
  end
70
70
 
@@ -77,7 +77,7 @@ RSpec.shared_examples_for "having dom ids" do
77
77
  context "with anchor setting set to fixed value" do
78
78
  context "that is false" do
79
79
  let(:settings) do
80
- { anchor: false }
80
+ {anchor: false}
81
81
  end
82
82
 
83
83
  it "sets no dom_id" do
@@ -87,7 +87,7 @@ RSpec.shared_examples_for "having dom ids" do
87
87
 
88
88
  context "that is true" do
89
89
  let(:settings) do
90
- { anchor: true }
90
+ {anchor: true}
91
91
  end
92
92
 
93
93
  it "sets no dom_id" do
@@ -97,7 +97,7 @@ RSpec.shared_examples_for "having dom ids" do
97
97
 
98
98
  context "that is from_value" do
99
99
  let(:settings) do
100
- { anchor: true }
100
+ {anchor: true}
101
101
  end
102
102
 
103
103
  it "sets no dom_id" do
@@ -107,7 +107,7 @@ RSpec.shared_examples_for "having dom ids" do
107
107
 
108
108
  context "that is a non reserved value" do
109
109
  let(:settings) do
110
- { anchor: "FixED VALUE" }
110
+ {anchor: "FixED VALUE"}
111
111
  end
112
112
 
113
113
  it "sets the dom_id to fixed value" do
@@ -3,12 +3,12 @@
3
3
  require "shoulda-matchers"
4
4
 
5
5
  RSpec.shared_examples_for "an alchemy ingredient" do
6
- let(:element) { build(:alchemy_element, name: "element_with_ingredients") }
6
+ let(:element) { build(:alchemy_element, name: "article") }
7
7
 
8
8
  subject(:ingredient) do
9
9
  described_class.new(
10
10
  element: element,
11
- role: "headline",
11
+ role: "headline"
12
12
  )
13
13
  end
14
14
 
@@ -31,13 +31,13 @@ RSpec.shared_examples_for "an alchemy ingredient" do
31
31
  expect(element).to receive(:ingredient_definition_for).at_least(:once) do
32
32
  {
33
33
  settings: {
34
- linkable: true,
35
- },
34
+ linkable: true
35
+ }
36
36
  }.with_indifferent_access
37
37
  end
38
38
  end
39
39
 
40
- it { is_expected.to eq({ linkable: true }.with_indifferent_access) }
40
+ it { is_expected.to eq({linkable: true}.with_indifferent_access) }
41
41
  end
42
42
  end
43
43
 
@@ -57,8 +57,8 @@ RSpec.shared_examples_for "an alchemy ingredient" do
57
57
  type: "Text",
58
58
  default: "Hello World",
59
59
  settings: {
60
- linkable: true,
61
- },
60
+ linkable: true
61
+ }
62
62
  }.with_indifferent_access
63
63
  end
64
64
 
@@ -73,4 +73,10 @@ RSpec.shared_examples_for "an alchemy ingredient" do
73
73
  end
74
74
  end
75
75
  end
76
+
77
+ describe "#as_view_component" do
78
+ subject { ingredient.as_view_component }
79
+
80
+ it { is_expected.to be_a("#{described_class}View".constantize) }
81
+ end
76
82
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  RSpec.shared_examples_for "having a json uploader error message" do
3
4
  it "renders json response with error message" do
4
5
  subject
@@ -4,7 +4,7 @@ module Alchemy
4
4
  module Tinymce
5
5
  mattr_accessor :languages, :plugins
6
6
 
7
- @@plugins = %w(alchemy_link anchor autoresize charmap code directionality fullscreen hr link lists paste tabfocus table)
7
+ @@plugins = %w[alchemy_link anchor autoresize charmap code directionality fullscreen hr link lists paste tabfocus table]
8
8
  @@init = {
9
9
  skin: "alchemy",
10
10
  width: "auto",
@@ -15,14 +15,14 @@ module Alchemy
15
15
  statusbar: true,
16
16
  toolbar: [
17
17
  "bold italic underline | strikethrough subscript superscript | numlist bullist indent outdent | removeformat | fullscreen",
18
- "pastetext charmap hr | undo redo | alchemy_link unlink anchor | code",
18
+ "pastetext charmap hr | undo redo | alchemy_link unlink anchor | code"
19
19
  ],
20
20
  fix_list_elements: true,
21
21
  convert_urls: false,
22
22
  entity_encoding: "raw",
23
23
  paste_as_text: true,
24
24
  element_format: "html",
25
- branding: false,
25
+ branding: false
26
26
  }
27
27
 
28
28
  class << self
@@ -33,46 +33,6 @@ module Alchemy
33
33
  def init
34
34
  @@init
35
35
  end
36
-
37
- def custom_configs_present?(page)
38
- custom_config_contents(page).any? || custom_config_ingredients(page).any?
39
- end
40
-
41
- def custom_config_contents(page)
42
- content_definitions_from_elements(page.descendent_element_definitions)
43
- end
44
-
45
- def custom_config_ingredients(page)
46
- ingredient_definitions_from_elements(page.descendent_element_definitions)
47
- end
48
-
49
- private
50
-
51
- def content_definitions_from_elements(definitions)
52
- definitions.collect do |el|
53
- next if el["contents"].blank?
54
-
55
- contents = el["contents"].select do |c|
56
- c["settings"] && c["settings"]["tinymce"].is_a?(Hash)
57
- end
58
- next if contents.blank?
59
-
60
- contents.map { |c| c.merge("element" => el["name"]) }
61
- end.flatten.compact
62
- end
63
-
64
- def ingredient_definitions_from_elements(definitions)
65
- definitions.collect do |el|
66
- next if el["ingredients"].blank?
67
-
68
- ingredients = el["ingredients"].select do |c|
69
- c["settings"] && c["settings"]["tinymce"].is_a?(Hash)
70
- end
71
- next if ingredients.blank?
72
-
73
- ingredients.map { |c| c.merge("element" => el["name"]) }
74
- end.flatten.compact
75
- end
76
36
  end
77
37
  end
78
38
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ module Alchemy
6
+ class Upgrader::SevenPointZero < Upgrader
7
+ include Thor::Base
8
+ include Thor::Actions
9
+
10
+ class << self
11
+ def update_admin_entrypoint
12
+ if File.exist? "app/javascript/packs/alchemy/admin.js"
13
+ FileUtils.mv "app/javascript/packs/alchemy/admin.js", "app/javascript/alchemy_admin.js"
14
+ else
15
+ log "Skipping. No alchemy/admin entrypoint found. Maybe already migrated from Webpacker?", :info
16
+ end
17
+ if Dir.exist?("app/javascript/packs/alchemy") && Dir.empty?("app/javascript/packs/alchemy")
18
+ FileUtils.rm_r "app/javascript/packs/alchemy"
19
+ end
20
+ if File.exist? "config/importmap.rb"
21
+ # We want the bundled package if using importmaps
22
+ task.gsub_file "app/javascript/alchemy_admin.js", 'import "@alchemy_cms/admin"', 'import "@alchemy_cms/dist/admin"'
23
+ end
24
+ if task.ask("Do you want to remove webpacker now? (y/N)", default: "N") == "y"
25
+ task.run "yarn remove @rails/webpacker webpack webpack-cli webpack-dev-server"
26
+ FileUtils.rm_r "app/javascript/packs"
27
+ FileUtils.rm_r "config/webpack"
28
+ FileUtils.rm "config/webpacker.yml"
29
+ FileUtils.rm "bin/webpack"
30
+ FileUtils.rm "bin/webpack-dev-server"
31
+ end
32
+ if task.ask("Do you want to add jsbundling-rails now? (Y/n)", default: "Y") == "Y"
33
+ task.run "bundle add jsbundling-rails"
34
+ task.run "bin/rails javascript:install:esbuild"
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def task
41
+ @_task || new
42
+ end
43
+ end
44
+ end
45
+ end
File without changes
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "alchemy/shell"
3
4
 
4
5
  module Alchemy
@@ -26,9 +27,14 @@ module Alchemy
26
27
  end
27
28
 
28
29
  def update_npm_package
29
- desc "Install new npm package."
30
- `yarn add @alchemy_cms/admin@~#{Alchemy.version}`
31
- log "Installed new npm package."
30
+ desc "Update npm package."
31
+ if File.exist? Rails.root.join("config/importmap.rb")
32
+ `bin/importmap pin @alchemy_cms/admin@~#{Alchemy.version}`
33
+ elsif File.exist? Rails.root.join("package.json")
34
+ `yarn add @alchemy_cms/admin@~#{Alchemy.version}`
35
+ else
36
+ log("Could not update alchemy admin package! Make sure you have a JS bundler installed", :warning)
37
+ end
32
38
  end
33
39
  end
34
40
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "6.1.5"
4
+ VERSION = "7.0.0-b"
5
5
 
6
6
  def self.version
7
7
  VERSION
data/lib/alchemy.rb CHANGED
@@ -5,25 +5,6 @@ require "alchemy/admin/preview_url"
5
5
  module Alchemy
6
6
  YAML_PERMITTED_CLASSES = %w[Symbol Date Regexp]
7
7
 
8
- DEPRECATED_ESSENCE_CLASS_MAPPING = {
9
- "Alchemy::EssenceAudio" => "Alchemy::Ingredients::Audio",
10
- "Alchemy::EssenceBoolean" => "Alchemy::Ingredients::Boolean",
11
- "Alchemy::EssenceDate" => "Alchemy::Ingredients::Date",
12
- "Alchemy::EssenceFile" => "Alchemy::Ingredients::File",
13
- "Alchemy::EssenceHeadline" => "Alchemy::Ingredients::Headline",
14
- "Alchemy::EssenceHtml" => "Alchemy::Ingredients::Html",
15
- "Alchemy::EssenceLink" => "Alchemy::Ingredients::Link",
16
- "Alchemy::EssenceNode" => "Alchemy::Ingredients::Node",
17
- "Alchemy::EssencePage" => "Alchemy::Ingredients::Page",
18
- "Alchemy::EssencePicture" => "Alchemy::Ingredients::Picture",
19
- "Alchemy::EssenceRichtext" => "Alchemy::Ingredients::Richtext",
20
- "Alchemy::EssenceSelect" => "Alchemy::Ingredients::Select",
21
- "Alchemy::EssenceText" => "Alchemy::Ingredients::Text",
22
- "Alchemy::EssenceVideo" => "Alchemy::Ingredients::Video",
23
- }
24
-
25
- DEPRECATED_ESSENCE_CLASSES = DEPRECATED_ESSENCE_CLASS_MAPPING.keys
26
-
27
8
  # Define page preview sources
28
9
  #
29
10
  # A preview source is a Ruby class returning an URL
data/lib/alchemy_cms.rb CHANGED
@@ -23,7 +23,7 @@ require "sassc-rails"
23
23
  require "simple_form"
24
24
  require "turbolinks"
25
25
  require "userstamp"
26
- require "webpacker"
26
+ require "view_component"
27
27
 
28
28
  # Require globally used Alchemy mixins
29
29
  require_relative "alchemy/ability_helper"
@@ -39,7 +39,6 @@ require_relative "alchemy/element_definition"
39
39
  require_relative "alchemy/elements_finder"
40
40
  require_relative "alchemy/error_tracking"
41
41
  require_relative "alchemy/errors"
42
- require_relative "alchemy/essence"
43
42
  require_relative "alchemy/filetypes"
44
43
  require_relative "alchemy/forms/builder"
45
44
  require_relative "alchemy/hints"
@@ -53,6 +52,7 @@ require_relative "alchemy/page_layout"
53
52
  require_relative "alchemy/paths"
54
53
  require_relative "alchemy/permissions"
55
54
  require_relative "alchemy/resource"
55
+ require_relative "alchemy/searchable_resource"
56
56
  require_relative "alchemy/tinymce"
57
57
  require_relative "alchemy/taggable"
58
58
  require_relative "alchemy/version"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "rails"
3
4
 
4
5
  module Alchemy
@@ -11,7 +12,7 @@ module Alchemy
11
12
  def conditional_template(source, destination)
12
13
  files = Dir.glob(destination.gsub(/\.([a-z]+)$/, "*"))
13
14
  if files.any?
14
- ext = File.extname(files.first)[1..-1]
15
+ ext = File.extname(files.first)[1..]
15
16
 
16
17
  # If view already exists using a different template engine, change
17
18
  # source and destination file names to use that engine.
@@ -36,7 +37,7 @@ module Alchemy
36
37
  YAML.safe_load(
37
38
  ERB.new(File.read(Rails.root.join("config", "alchemy", name))).result,
38
39
  permitted_classes: YAML_PERMITTED_CLASSES,
39
- aliases: true,
40
+ aliases: true
40
41
  )
41
42
  rescue Errno::ENOENT
42
43
  puts "\nERROR: Could not read config/alchemy/#{name} file. Please run: `rails generate alchemy:install`"