alchemy_cms 7.4.13 → 7.4.15

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27f806a1a21492486b1f8bc57ecb2d38c23064f6bf39b489426b1f916b244165
4
- data.tar.gz: cdd3d19162be0606e8d8a91b00a2ee207670c8dd1065e9a886b832295316b4c8
3
+ metadata.gz: 820ced84f65c22ce14dcf2d399bb78fb7463bc311d56ebec29b9106d9b168eb8
4
+ data.tar.gz: 6760e300fe2497a33e1a657cb6792dcd535343ddedb6897831f18569a6ea2b49
5
5
  SHA512:
6
- metadata.gz: 8e6605933d4e61657bb83dad115f4c29ab676c6eae1df863af973deddedb4c289d8b8b45358b9880aba5ff14b8d73a89a48d9dabc65a721a760c96e3d0d4ce5f
7
- data.tar.gz: 90cd853afa25f55975d091f57d7c1d4a769f2f6b2ed12a31b201f9d2038f8ab7507b8a046d8e62cce8b81820beea07a60c33c8946c6d2c93f7c1b0713281b250
6
+ metadata.gz: 2862492de3c1bc9c3e4bf30a7a6127af4dcd8eb11f02914806469f0c22de6936b8b2ba5cda736737f98de0ec7c950e0d3042dec785befe69018130bd118e6767
7
+ data.tar.gz: 73f531a006df56e276c378765346e537f216f7a4ed7ca641e3520ac12f5bf56cdc980a27c1872ce581c6dd50d3bc323a2bdb76baeca0742ce1c5456afabb7805
data/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.4.15 (2026-06-18)
4
+
5
+ ## What's Changed
6
+ * [7.4] Fix double form submission in picture overlay by @tvdeyen in https://github.com/AlchemyCMS/alchemy_cms/pull/3825
7
+ * [7.4] fix(api): authorize nested pages endpoint against restricted content by @tvdeyen in https://github.com/AlchemyCMS/alchemy_cms/pull/3983
8
+
9
+
10
+ **Full Changelog**: https://github.com/AlchemyCMS/alchemy_cms/compare/v7.4.14...v7.4.15
11
+
12
+ ## 7.4.14 (2026-03-26)
13
+
14
+ ## What's Changed
15
+ * [7.4-stable] Fix exception in admin when current language is deleted by @alchemycms-bot[bot] in https://github.com/AlchemyCMS/alchemy_cms/pull/3791
16
+
17
+
18
+ **Full Changelog**: https://github.com/AlchemyCMS/alchemy_cms/compare/v7.4.13...v7.4.14
19
+
3
20
  ## 7.4.13 (2026-02-17)
4
21
 
5
22
  ## What's Changed
data/Gemfile CHANGED
@@ -16,6 +16,7 @@ end
16
16
  gem "pg", "~> 1.0" if ENV["DB"] == "postgresql"
17
17
 
18
18
  gem "alchemy_i18n", git: "https://github.com/AlchemyCMS/alchemy_i18n.git", branch: "4.2-stable"
19
+ gem "i18n", "< 1.15" # >= 1.15 needs Ruby 3.2, but we still support Ruby 3.1
19
20
 
20
21
  group :development, :test do
21
22
  gem "execjs", "~> 2.9.1"
@@ -30,6 +30,9 @@ module Alchemy
30
30
 
31
31
  def destroy
32
32
  if @language.destroy
33
+ if session[:alchemy_language_id] == @language.id
34
+ session.delete(:alchemy_language_id)
35
+ end
33
36
  flash[:notice] = Alchemy.t("Language successfully removed")
34
37
  else
35
38
  flash[:warning] = @language.errors.full_messages.to_sentence
@@ -28,6 +28,8 @@ module Alchemy
28
28
  def nested
29
29
  @page = Page.find_by(id: params[:page_id]) || Language.current_root_page
30
30
 
31
+ authorize! :show, @page
32
+
31
33
  render json: PageTreeSerializer.new(
32
34
  @page,
33
35
  ability: current_ability,
@@ -13,6 +13,7 @@ module Alchemy::Language::Code
13
13
 
14
14
  module ClassMethods
15
15
  def find_by_code(code)
16
+ return unless code.respond_to?(:split)
16
17
  codes = code.split("-")
17
18
  codes << "" if codes.length == 1
18
19
  on_current_site.find_by(
@@ -9,7 +9,21 @@ module Alchemy
9
9
  def pages
10
10
  tree = []
11
11
  path = [{id: object.parent_id, children: tree}]
12
- page_list = object.self_and_descendants.includes(:public_version, {language: :site})
12
+ page_list = object.self_and_descendants
13
+ .accessible_by(opts[:ability], :read)
14
+ .includes(:public_version, {language: :site})
15
+ .to_a
16
+ # Drop pages whose parent was filtered out by the ability, so a
17
+ # restricted or unpublished branch does not leak its accessible
18
+ # descendants. self_and_descendants is ordered pre-order, so a parent
19
+ # always precedes its children and a single pass is sufficient.
20
+ kept_ids = Set.new([object.id])
21
+ page_list = page_list.select do |page|
22
+ next true if page.id == object.id
23
+ kept_ids.include?(page.parent_id).tap do |kept|
24
+ kept_ids << page.id if kept
25
+ end
26
+ end
13
27
  base_level = object.level - 1
14
28
  # Load folded pages in advance
15
29
  folded_user_pages = FoldedPage.folded_for_user(opts[:user]).pluck(:page_id)
@@ -83,6 +97,8 @@ module Alchemy
83
97
  end
84
98
 
85
99
  def page_elements(page)
100
+ return Alchemy::Element.none unless opts[:ability].can?(:read, page)
101
+
86
102
  elements = page.public_version&.elements || Alchemy::Element.none
87
103
  if opts[:elements] == "true"
88
104
  elements
@@ -1,5 +1,5 @@
1
1
  <%= turbo_frame_tag(@picture) do %>
2
- <%= alchemy_form_for [alchemy, :admin, @picture] do |f| %>
2
+ <%= alchemy_form_for [alchemy, :admin, @picture], remote: false do |f| %>
3
3
  <%= f.input :name %>
4
4
  <%= render "alchemy/admin/pictures/picture_description_field", f: f %>
5
5
  <%= render Alchemy::Admin::TagsAutocomplete.new(additional_class: "input") do %>
@@ -80,7 +80,8 @@ module Alchemy
80
80
 
81
81
  def load_alchemy_language_from_id_or_code(id_or_code)
82
82
  Language.find_by(id: id_or_code) ||
83
- Language.find_by_code(id_or_code)
83
+ Language.find_by_code(id_or_code) ||
84
+ Language.default
84
85
  end
85
86
 
86
87
  # Stores language in +Current.language+
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "7.4.13"
4
+ VERSION = "7.4.15"
5
5
 
6
6
  def self.version
7
7
  VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.4.13
4
+ version: 7.4.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -1409,7 +1409,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1409
1409
  version: '0'
1410
1410
  requirements:
1411
1411
  - ImageMagick (libmagick), v6.6 or greater.
1412
- rubygems_version: 4.0.3
1412
+ rubygems_version: 4.0.10
1413
1413
  specification_version: 4
1414
1414
  summary: A powerful, userfriendly and flexible CMS for Rails
1415
1415
  test_files: []