alchemy_cms 6.1.8 → 7.0.0.pre.a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +0 -3
  3. data/.gitignore +1 -6
  4. data/CHANGELOG.md +19 -34
  5. data/Gemfile +1 -1
  6. data/Rakefile +14 -9
  7. data/alchemy_cms.gemspec +2 -3
  8. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +1 -1
  9. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +18 -32
  10. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -2
  11. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -2
  12. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +27 -29
  13. data/app/assets/stylesheets/alchemy/elements.scss +16 -35
  14. data/app/assets/stylesheets/alchemy/forms.scss +0 -4
  15. data/app/assets/stylesheets/alchemy/node-select.scss +2 -2
  16. data/app/controllers/alchemy/admin/attachments_controller.rb +0 -1
  17. data/app/controllers/alchemy/admin/elements_controller.rb +7 -32
  18. data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
  19. data/app/controllers/alchemy/admin/pictures_controller.rb +1 -1
  20. data/app/controllers/alchemy/admin/resources_controller.rb +1 -18
  21. data/app/controllers/alchemy/api/elements_controller.rb +0 -2
  22. data/app/controllers/alchemy/api/pages_controller.rb +8 -4
  23. data/app/controllers/alchemy/messages_controller.rb +9 -9
  24. data/app/controllers/alchemy/pages_controller.rb +23 -18
  25. data/app/decorators/alchemy/element_editor.rb +10 -30
  26. data/app/helpers/alchemy/admin/elements_helper.rb +0 -2
  27. data/app/helpers/alchemy/elements_block_helper.rb +5 -42
  28. data/app/helpers/alchemy/elements_helper.rb +3 -11
  29. data/app/helpers/alchemy/pages_helper.rb +0 -4
  30. data/app/models/alchemy/attachment.rb +6 -3
  31. data/app/models/alchemy/base_record.rb +2 -0
  32. data/app/models/alchemy/eager_loading.rb +0 -1
  33. data/app/models/alchemy/element/element_ingredients.rb +1 -8
  34. data/app/models/alchemy/element/presenters.rb +9 -25
  35. data/app/models/alchemy/element.rb +2 -18
  36. data/app/models/alchemy/ingredient.rb +17 -6
  37. data/app/models/alchemy/ingredients/audio.rb +2 -0
  38. data/app/models/alchemy/ingredients/datetime.rb +3 -1
  39. data/app/models/alchemy/ingredients/file.rb +7 -0
  40. data/app/models/alchemy/ingredients/headline.rb +6 -0
  41. data/app/models/alchemy/ingredients/link.rb +2 -0
  42. data/app/models/alchemy/ingredients/node.rb +2 -0
  43. data/app/models/alchemy/ingredients/page.rb +2 -0
  44. data/app/models/alchemy/ingredients/picture.rb +11 -0
  45. data/app/models/alchemy/ingredients/richtext.rb +6 -0
  46. data/app/models/alchemy/ingredients/select.rb +1 -0
  47. data/app/models/alchemy/ingredients/text.rb +8 -0
  48. data/app/models/alchemy/ingredients/video.rb +2 -0
  49. data/app/models/alchemy/node.rb +9 -6
  50. data/app/models/alchemy/page/page_elements.rb +5 -26
  51. data/app/models/alchemy/page/page_layouts.rb +0 -14
  52. data/app/models/alchemy/page/page_natures.rb +0 -10
  53. data/app/models/alchemy/page.rb +0 -8
  54. data/app/models/alchemy/picture/transformations.rb +0 -30
  55. data/app/models/alchemy/picture/url.rb +1 -1
  56. data/app/models/alchemy/picture.rb +14 -13
  57. data/app/models/alchemy/picture_thumb/create.rb +7 -18
  58. data/app/models/alchemy/picture_thumb/file_store.rb +33 -0
  59. data/app/models/alchemy/picture_thumb.rb +10 -10
  60. data/app/models/concerns/alchemy/picture_thumbnails.rb +2 -2
  61. data/app/serializers/alchemy/element_serializer.rb +1 -6
  62. data/app/services/alchemy/delete_elements.rb +1 -7
  63. data/app/services/alchemy/duplicate_element.rb +1 -6
  64. data/app/views/alchemy/admin/elements/_element.html.erb +5 -22
  65. data/app/views/alchemy/admin/elements/create.js.erb +1 -1
  66. data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
  67. data/app/views/alchemy/admin/elements/order.js.erb +1 -1
  68. data/app/views/alchemy/admin/elements/update.js.erb +1 -2
  69. data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
  70. data/app/views/alchemy/admin/pages/_file_link.html.erb +2 -2
  71. data/app/views/alchemy/admin/pages/_internal_link.html.erb +2 -2
  72. data/app/views/alchemy/admin/pages/_table.html.erb +0 -6
  73. data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +3 -6
  74. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  75. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -3
  76. data/app/views/alchemy/admin/pictures/_infos.html.erb +4 -6
  77. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  78. data/app/views/alchemy/ingredients/_headline_editor.html.erb +1 -1
  79. data/app/views/alchemy/ingredients/_html_editor.html.erb +1 -1
  80. data/app/views/alchemy/ingredients/_node_editor.html.erb +1 -1
  81. data/app/views/alchemy/ingredients/_picture_editor.html.erb +4 -4
  82. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -2
  83. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  84. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +3 -3
  85. data/app/views/alchemy/pages/_meta_data.html.erb +0 -1
  86. data/app/views/layouts/alchemy/admin.html.erb +5 -1
  87. data/config/alchemy/config.yml +6 -6
  88. data/config/brakeman.ignore +56 -57
  89. data/config/locales/alchemy.en.yml +99 -113
  90. data/config/routes.rb +1 -16
  91. data/db/migrate/20230121212637_alchemy_six_point_one.rb +248 -0
  92. data/lib/alchemy/cache_digests/template_tracker.rb +6 -7
  93. data/lib/alchemy/config.rb +2 -2
  94. data/lib/alchemy/deprecation.rb +1 -1
  95. data/lib/alchemy/errors.rb +0 -11
  96. data/lib/alchemy/hints.rb +10 -10
  97. data/lib/alchemy/permissions.rb +4 -17
  98. data/lib/alchemy/routing_constraints.rb +3 -3
  99. data/lib/alchemy/searchable_resource.rb +38 -0
  100. data/lib/alchemy/seeder.rb +2 -8
  101. data/lib/alchemy/tasks/tidy.rb +0 -38
  102. data/lib/alchemy/test_support/capybara_helpers.rb +69 -0
  103. data/lib/alchemy/test_support/factories/element_factory.rb +0 -6
  104. data/lib/alchemy/test_support/factories/ingredient_factory.rb +1 -1
  105. data/lib/alchemy/test_support/factories/page_factory.rb +4 -2
  106. data/lib/alchemy/test_support/shared_dom_ids_examples.rb +1 -1
  107. data/lib/alchemy/test_support/shared_ingredient_examples.rb +1 -1
  108. data/lib/alchemy/tinymce.rb +1 -18
  109. data/lib/alchemy/upgrader/seven_point_zero.rb +45 -0
  110. data/lib/alchemy/upgrader/tasks/.keep +0 -0
  111. data/lib/alchemy/upgrader.rb +8 -3
  112. data/lib/alchemy/version.rb +1 -1
  113. data/lib/alchemy.rb +0 -19
  114. data/lib/alchemy_cms.rb +1 -2
  115. data/lib/generators/alchemy/elements/elements_generator.rb +0 -1
  116. data/lib/generators/alchemy/elements/templates/view.html.erb +1 -10
  117. data/lib/generators/alchemy/elements/templates/view.html.haml +1 -9
  118. data/lib/generators/alchemy/elements/templates/view.html.slim +1 -9
  119. data/lib/generators/alchemy/install/files/alchemy.en.yml +7 -8
  120. data/lib/generators/alchemy/install/files/application.html.erb +1 -1
  121. data/lib/generators/alchemy/install/install_generator.rb +18 -34
  122. data/lib/generators/alchemy/install/templates/elements.yml.tt +12 -12
  123. data/lib/tasks/alchemy/thumbnails.rake +2 -21
  124. data/lib/tasks/alchemy/tidy.rake +1 -12
  125. data/lib/tasks/alchemy/upgrade.rake +10 -47
  126. data/package/dist/admin.js +16 -0
  127. data/package/dist/admin.js.map +7 -0
  128. data/package.json +5 -3
  129. metadata +18 -147
  130. data/app/controllers/alchemy/admin/contents_controller.rb +0 -21
  131. data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -30
  132. data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -31
  133. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +0 -43
  134. data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -34
  135. data/app/controllers/alchemy/api/contents_controller.rb +0 -52
  136. data/app/decorators/alchemy/content_editor.rb +0 -119
  137. data/app/helpers/alchemy/admin/contents_helper.rb +0 -42
  138. data/app/helpers/alchemy/admin/essences_helper.rb +0 -31
  139. data/app/models/alchemy/content/factory.rb +0 -143
  140. data/app/models/alchemy/content.rb +0 -247
  141. data/app/models/alchemy/element/element_contents.rb +0 -200
  142. data/app/models/alchemy/element/element_essences.rb +0 -133
  143. data/app/models/alchemy/essence_audio.rb +0 -13
  144. data/app/models/alchemy/essence_boolean.rb +0 -20
  145. data/app/models/alchemy/essence_date.rb +0 -25
  146. data/app/models/alchemy/essence_file.rb +0 -49
  147. data/app/models/alchemy/essence_headline.rb +0 -41
  148. data/app/models/alchemy/essence_html.rb +0 -23
  149. data/app/models/alchemy/essence_link.rb +0 -21
  150. data/app/models/alchemy/essence_node.rb +0 -19
  151. data/app/models/alchemy/essence_page.rb +0 -17
  152. data/app/models/alchemy/essence_picture.rb +0 -67
  153. data/app/models/alchemy/essence_picture_view.rb +0 -90
  154. data/app/models/alchemy/essence_richtext.rb +0 -44
  155. data/app/models/alchemy/essence_select.rb +0 -19
  156. data/app/models/alchemy/essence_text.rb +0 -23
  157. data/app/models/alchemy/essence_video.rb +0 -13
  158. data/app/serializers/alchemy/content_serializer.rb +0 -17
  159. data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -10
  160. data/app/serializers/alchemy/essence_date_serializer.rb +0 -10
  161. data/app/serializers/alchemy/essence_file_serializer.rb +0 -13
  162. data/app/serializers/alchemy/essence_html_serializer.rb +0 -10
  163. data/app/serializers/alchemy/essence_link_serializer.rb +0 -13
  164. data/app/serializers/alchemy/essence_picture_serializer.rb +0 -28
  165. data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -11
  166. data/app/serializers/alchemy/essence_select_serializer.rb +0 -10
  167. data/app/serializers/alchemy/essence_text_serializer.rb +0 -22
  168. data/app/views/alchemy/admin/contents/create.js.erb +0 -21
  169. data/app/views/alchemy/admin/essence_audios/edit.html.erb +0 -7
  170. data/app/views/alchemy/admin/essence_files/edit.html.erb +0 -21
  171. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -5
  172. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +0 -30
  173. data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +0 -3
  174. data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -8
  175. data/app/views/alchemy/admin/essence_videos/edit.html.erb +0 -12
  176. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -4
  177. data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -15
  178. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +0 -11
  179. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +0 -2
  180. data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -16
  181. data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -10
  182. data/app/views/alchemy/essences/_essence_file_editor.html.erb +0 -54
  183. data/app/views/alchemy/essences/_essence_file_view.html.erb +0 -18
  184. data/app/views/alchemy/essences/_essence_headline_editor.html.erb +0 -36
  185. data/app/views/alchemy/essences/_essence_headline_view.html.erb +0 -10
  186. data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -10
  187. data/app/views/alchemy/essences/_essence_html_view.html.erb +0 -2
  188. data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -30
  189. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -10
  190. data/app/views/alchemy/essences/_essence_node_editor.html.erb +0 -27
  191. data/app/views/alchemy/essences/_essence_node_view.html.erb +0 -1
  192. data/app/views/alchemy/essences/_essence_page_editor.html.erb +0 -26
  193. data/app/views/alchemy/essences/_essence_page_view.html.erb +0 -5
  194. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +0 -59
  195. data/app/views/alchemy/essences/_essence_picture_view.html.erb +0 -6
  196. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -14
  197. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +0 -4
  198. data/app/views/alchemy/essences/_essence_select_editor.html.erb +0 -28
  199. data/app/views/alchemy/essences/_essence_select_view.html.erb +0 -2
  200. data/app/views/alchemy/essences/_essence_text_editor.html.erb +0 -29
  201. data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -17
  202. data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -4
  203. data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -19
  204. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +0 -59
  205. data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +0 -20
  206. data/app/views/alchemy/pages/show.rss.builder +0 -21
  207. data/db/migrate/20200226213334_alchemy_four_point_four.rb +0 -313
  208. data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +0 -11
  209. data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +0 -28
  210. data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +0 -8
  211. data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +0 -27
  212. data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +0 -6
  213. data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +0 -24
  214. data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +0 -22
  215. data/db/migrate/20200907111332_remove_tri_state_booleans.rb +0 -33
  216. data/db/migrate/20201207131309_create_page_versions.rb +0 -19
  217. data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +0 -76
  218. data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +0 -10
  219. data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +0 -7
  220. data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +0 -12
  221. data/db/migrate/20210506135919_create_essence_audios.rb +0 -19
  222. data/db/migrate/20210506140258_create_essence_videos.rb +0 -23
  223. data/db/migrate/20210508091432_create_alchemy_ingredients.rb +0 -22
  224. data/db/migrate/20220514072456_restrict_on_delete_page_id_foreign_key_from_alchemy_nodes.rb +0 -13
  225. data/db/migrate/20220622130905_add_playsinline_to_alchemy_essence_videos.rb +0 -9
  226. data/lib/alchemy/essence.rb +0 -250
  227. data/lib/alchemy/tasks/usage.rb +0 -33
  228. data/lib/alchemy/test_support/essence_shared_examples.rb +0 -271
  229. data/lib/alchemy/test_support/factories/content_factory.rb +0 -20
  230. data/lib/alchemy/test_support/factories/essence_audio_factory.rb +0 -7
  231. data/lib/alchemy/test_support/factories/essence_file_factory.rb +0 -7
  232. data/lib/alchemy/test_support/factories/essence_page_factory.rb +0 -7
  233. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +0 -11
  234. data/lib/alchemy/test_support/factories/essence_text_factory.rb +0 -7
  235. data/lib/alchemy/test_support/factories/essence_video_factory.rb +0 -7
  236. data/lib/alchemy/upgrader/five_point_zero.rb +0 -41
  237. data/lib/alchemy/upgrader/six_point_zero.rb +0 -21
  238. data/lib/alchemy/upgrader/tasks/add_page_versions.rb +0 -33
  239. data/lib/alchemy/upgrader/tasks/element_views_updater.rb +0 -34
  240. data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +0 -29
  241. data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +0 -73
  242. data/lib/generators/alchemy/essence/essence_generator.rb +0 -49
  243. data/lib/generators/alchemy/essence/templates/editor.html.erb +0 -17
  244. data/lib/generators/alchemy/essence/templates/view.html.erb +0 -2
  245. data/lib/generators/alchemy/install/files/babel.config.js +0 -64
  246. data/lib/tasks/alchemy/usage.rake +0 -40
@@ -12,7 +12,7 @@
12
12
  <%= warning(':select_values is nil',
13
13
  "<strong>No select values given.</strong>
14
14
  <br>Please provide <code>select_values</code> on the
15
- content definition <code>settings</code> in
15
+ ingredient definition <code>settings</code> in
16
16
  <code>elements.yml</code>.") %>
17
17
  <% else %>
18
18
  <%
@@ -22,7 +22,7 @@
22
22
  options_tags = options_for_select(select_values, select_editor.value)
23
23
  end %>
24
24
  <%= f.select :value, options_tags, {}, {
25
- id: nil,
25
+ id: select_editor.form_field_id,
26
26
  class: ["alchemy_selectbox", "ingredient-editor-select"]
27
27
  } %>
28
28
  <% end %>
@@ -7,7 +7,7 @@
7
7
  <%= ingredient_label(text_editor) %>
8
8
  <%= f.text_field :value,
9
9
  class: text_editor.settings[:linkable] ? "text_with_icon" : "",
10
- id: nil,
10
+ id: text_editor.form_field_id,
11
11
  type: text_editor.settings[:input_type] || "text" %>
12
12
  <% if text_editor.settings[:anchor] %>
13
13
  <%= render "alchemy/ingredients/shared/anchor", ingredient_editor: text_editor %>
@@ -1,9 +1,9 @@
1
- <span class="linkable_essence_tools">
1
+ <span class="ingredient_link_buttons">
2
2
  <%= link_to(
3
3
  render_icon(:link),
4
4
  '#',
5
5
  onclick: 'new Alchemy.LinkDialog(this).open(); return false;',
6
- class: "icon_button#{ingredient_editor.linked? ? ' linked' : ''} link-essence",
6
+ class: "icon_button#{ingredient_editor.linked? ? ' linked' : ''} link-ingredient",
7
7
  "data-parent-selector": "[data-ingredient-id='#{ingredient_editor.id}']",
8
8
  title: Alchemy.t(:place_link),
9
9
  id: "edit_link_#{ingredient_editor.id}"
@@ -12,7 +12,7 @@
12
12
  render_icon(:unlink),
13
13
  '#',
14
14
  onclick: "return Alchemy.LinkDialog.removeLink(this, '[data-ingredient-id=\"#{ingredient_editor.id}\"]')",
15
- class: "icon_button unlink-essence #{ingredient_editor.linked? ? 'linked' : 'disabled'}",
15
+ class: "icon_button unlink-ingredient #{ingredient_editor.linked? ? 'linked' : 'disabled'}",
16
16
  tabindex: ingredient_editor.linked? ? nil : '-1',
17
17
  'data-ingredient-id' => ingredient_editor.id,
18
18
  title: Alchemy.t(:unlink)
@@ -5,5 +5,4 @@
5
5
  <%= tag(:meta, name: 'robots', content: meta_robots) %>
6
6
  <%= tag(:meta, name: 'description', content: meta_description, lang: @page.language_code) if meta_description.present? %>
7
7
  <%= tag(:meta, name: 'keywords', content: meta_keywords, lang: @page.language_code) if meta_keywords.present? %>
8
- <%= auto_discovery_link_tag(:rss, show_alchemy_page_url(@page, format: :rss)) if @page.contains_feed? %>
9
8
  <% end %>
@@ -36,7 +36,11 @@
36
36
  </script>
37
37
  <%= render 'alchemy/admin/partials/routes' %>
38
38
  <%= javascript_include_tag('alchemy/admin/all', 'data-turbolinks-track' => true) %>
39
- <%= javascript_pack_tag('alchemy/admin') %>
39
+ <% if respond_to?(:javascript_pack_tag) %>
40
+ <%= javascript_pack_tag('alchemy/admin', 'data-turbolinks-track' => true, defer: true) %>
41
+ <% else %>
42
+ <%= javascript_include_tag('alchemy_admin', 'data-turbolinks-track' => true, defer: true) %>
43
+ <% end %>
40
44
  <%= yield :javascript_includes %>
41
45
  </head>
42
46
  <%= content_tag :body, id: 'alchemy', class: alchemy_body_class do %>
@@ -66,9 +66,9 @@ items_per_page: 15
66
66
  #
67
67
  # Example:
68
68
  # - name: some_element
69
- # contents:
70
- # - name: some_picture
71
- # type: EssencePicture
69
+ # ingredients:
70
+ # - role: some_picture
71
+ # type: Picture
72
72
  # settings:
73
73
  # hint: true
74
74
  # crop: true # turns on image cropping
@@ -82,7 +82,7 @@ items_per_page: 15
82
82
  # preprocess_image_resize [String] # Use this option to resize images to the given size when they are uploaded to the image library. Downsizing example: '1000x1000>' (Default nil)
83
83
  # image_output_format [String] # The global image output format setting. (Default +original+)
84
84
  #
85
- # NOTE: You can always override the output format in the settings of your Essence in elements.yml, I.E. {format: 'gif'}
85
+ # NOTE: You can always override the output format in the settings of your ingredients in elements.yml, I.E. {format: 'gif'}
86
86
  #
87
87
  output_image_jpg_quality: 85
88
88
  preprocess_image_resize:
@@ -91,7 +91,7 @@ image_output_format: original
91
91
  # This is used by the seeder to create the default site.
92
92
  default_site:
93
93
  name: Default Site
94
- host: '*'
94
+ host: "*"
95
95
 
96
96
  # This is the default language when seeding.
97
97
  default_language:
@@ -191,7 +191,7 @@ link_target_options: [blank]
191
191
  # === Format matchers
192
192
  #
193
193
  # Named aliases for regular expressions that can be used in various places.
194
- # The most common use case is the format validation of essences, or attribute validations of your individual models.
194
+ # The most common use case is the format validation of ingredients, or attribute validations of your individual models.
195
195
  #
196
196
  # == Example:
197
197
  #
@@ -1,36 +1,5 @@
1
1
  {
2
2
  "ignored_warnings": [
3
- {
4
- "warning_type": "Cross-Site Scripting",
5
- "warning_code": 2,
6
- "fingerprint": "068b12d24047e2ece633115ba065ce46fc8c8a26827be7de2565ab721e1c2e82",
7
- "check_name": "CrossSiteScripting",
8
- "message": "Unescaped parameter value",
9
- "file": "app/views/alchemy/admin/elements/update.js.erb",
10
- "line": 21,
11
- "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
12
- "code": "Element.find(params[:id]).ingredients_with_errors.map do\n \"[data-ingredient-id=\\\"#{ingredient.id}\\\"]\"\n end.join(\", \")",
13
- "render_path": [
14
- {
15
- "type": "controller",
16
- "class": "Alchemy::Admin::ElementsController",
17
- "method": "update",
18
- "line": 61,
19
- "file": "app/controllers/alchemy/admin/elements_controller.rb",
20
- "rendered": {
21
- "name": "alchemy/admin/elements/update",
22
- "file": "app/views/alchemy/admin/elements/update.js.erb"
23
- }
24
- }
25
- ],
26
- "location": {
27
- "type": "template",
28
- "template": "alchemy/admin/elements/update"
29
- },
30
- "user_input": "params[:id]",
31
- "confidence": "Weak",
32
- "note": ""
33
- },
34
3
  {
35
4
  "warning_type": "File Access",
36
5
  "warning_code": 16,
@@ -49,6 +18,9 @@
49
18
  },
50
19
  "user_input": "params[:id]",
51
20
  "confidence": "Weak",
21
+ "cwe_id": [
22
+ 22
23
+ ],
52
24
  "note": ""
53
25
  },
54
26
  {
@@ -69,6 +41,9 @@
69
41
  },
70
42
  "user_input": null,
71
43
  "confidence": "Medium",
44
+ "cwe_id": [
45
+ 915
46
+ ],
72
47
  "note": "Because we actually can't know all attributes each inheriting controller supports, we permit all resource model params. It is adviced that all inheriting controllers implement this method and provide its own set of permitted attributes. As this all happens inside the password protected /admin namespace this can be considered a false positive."
73
48
  },
74
49
  {
@@ -86,7 +61,7 @@
86
61
  "type": "controller",
87
62
  "class": "Alchemy::Admin::ElementsController",
88
63
  "method": "fold",
89
- "line": 102,
64
+ "line": 98,
90
65
  "file": "app/controllers/alchemy/admin/elements_controller.rb",
91
66
  "rendered": {
92
67
  "name": "alchemy/admin/elements/fold",
@@ -100,28 +75,11 @@
100
75
  },
101
76
  "user_input": "params[:id]",
102
77
  "confidence": "Weak",
78
+ "cwe_id": [
79
+ 22
80
+ ],
103
81
  "note": ""
104
82
  },
105
- {
106
- "warning_type": "Mass Assignment",
107
- "warning_code": 70,
108
- "fingerprint": "4b4dc24a6f5251bc1a6851597dfcee39608a2932eb7f81a4a241c00fca8a3043",
109
- "check_name": "MassAssignment",
110
- "message": "Specify exact keys allowed for mass assignment instead of using `permit!` which allows any keys",
111
- "file": "app/controllers/alchemy/admin/elements_controller.rb",
112
- "line": 155,
113
- "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
114
- "code": "params.fetch(:contents, {}).permit!",
115
- "render_path": null,
116
- "location": {
117
- "type": "method",
118
- "class": "Alchemy::Admin::ElementsController",
119
- "method": "contents_params"
120
- },
121
- "user_input": null,
122
- "confidence": "Medium",
123
- "note": "`Alchemy::Content` is a polymorphic association of any kind of model extending `Alchemy::Essence`. Since we can't know the attributes of all potential essences we need to permit all attributes. As this all happens inside the password protected /admin namespace this can be considered a false positive."
124
- },
125
83
  {
126
84
  "warning_type": "Command Injection",
127
85
  "warning_code": 14,
@@ -129,7 +87,7 @@
129
87
  "check_name": "Execute",
130
88
  "message": "Possible command injection",
131
89
  "file": "lib/alchemy/upgrader.rb",
132
- "line": 30,
90
+ "line": 33,
133
91
  "link": "https://brakemanscanner.org/docs/warning_types/command_injection/",
134
92
  "code": "`yarn add @alchemy_cms/admin@~#{Alchemy.version}`",
135
93
  "render_path": null,
@@ -140,6 +98,9 @@
140
98
  },
141
99
  "user_input": "Alchemy.version",
142
100
  "confidence": "Medium",
101
+ "cwe_id": [
102
+ 77
103
+ ],
143
104
  "note": "The alchemy version is safe"
144
105
  },
145
106
  {
@@ -170,6 +131,9 @@
170
131
  },
171
132
  "user_input": "(Unresolved Model).new.url",
172
133
  "confidence": "Weak",
134
+ "cwe_id": [
135
+ 79
136
+ ],
173
137
  "note": ""
174
138
  },
175
139
  {
@@ -190,6 +154,9 @@
190
154
  },
191
155
  "user_input": "params[:id]",
192
156
  "confidence": "Weak",
157
+ "cwe_id": [
158
+ 22
159
+ ],
193
160
  "note": ""
194
161
  },
195
162
  {
@@ -207,7 +174,7 @@
207
174
  "type": "controller",
208
175
  "class": "Alchemy::Admin::ElementsController",
209
176
  "method": "index",
210
- "line": 15,
177
+ "line": 16,
211
178
  "file": "app/controllers/alchemy/admin/elements_controller.rb",
212
179
  "rendered": {
213
180
  "name": "alchemy/admin/elements/index",
@@ -221,6 +188,9 @@
221
188
  },
222
189
  "user_input": "params[:page_version_id]",
223
190
  "confidence": "Weak",
191
+ "cwe_id": [
192
+ 22
193
+ ],
224
194
  "note": ""
225
195
  },
226
196
  {
@@ -238,7 +208,7 @@
238
208
  "type": "controller",
239
209
  "class": "Alchemy::Admin::ElementsController",
240
210
  "method": "index",
241
- "line": 15,
211
+ "line": 16,
242
212
  "file": "app/controllers/alchemy/admin/elements_controller.rb",
243
213
  "rendered": {
244
214
  "name": "alchemy/admin/elements/index",
@@ -252,6 +222,32 @@
252
222
  },
253
223
  "user_input": "params[:page_version_id]",
254
224
  "confidence": "Weak",
225
+ "cwe_id": [
226
+ 22
227
+ ],
228
+ "note": ""
229
+ },
230
+ {
231
+ "warning_type": "Command Injection",
232
+ "warning_code": 14,
233
+ "fingerprint": "98ca8e77026312eaa7eec15ce26bfe45aa8dd0fcd38e4cff104cb9dffbde1733",
234
+ "check_name": "Execute",
235
+ "message": "Possible command injection",
236
+ "file": "lib/alchemy/upgrader.rb",
237
+ "line": 31,
238
+ "link": "https://brakemanscanner.org/docs/warning_types/command_injection/",
239
+ "code": "`bin/importmap pin @alchemy_cms/admin@~#{Alchemy.version}`",
240
+ "render_path": null,
241
+ "location": {
242
+ "type": "method",
243
+ "class": "Alchemy::Upgrader",
244
+ "method": "update_npm_package"
245
+ },
246
+ "user_input": "Alchemy.version",
247
+ "confidence": "Medium",
248
+ "cwe_id": [
249
+ 77
250
+ ],
255
251
  "note": ""
256
252
  },
257
253
  {
@@ -272,9 +268,12 @@
272
268
  },
273
269
  "user_input": "params[:id]",
274
270
  "confidence": "Weak",
271
+ "cwe_id": [
272
+ 22
273
+ ],
275
274
  "note": ""
276
275
  }
277
276
  ],
278
- "updated": "2021-10-26 21:44:59 +0200",
279
- "brakeman_version": "5.1.1"
277
+ "updated": "2023-01-31 19:16:48 +0100",
278
+ "brakeman_version": "5.4.0"
280
279
  }