alchemy_cms 5.3.4 → 5.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/app/controllers/alchemy/api/nodes_controller.rb +1 -0
- data/app/models/alchemy/picture/transformations.rb +2 -2
- data/app/models/alchemy/picture.rb +1 -1
- data/app/models/alchemy/picture_variant.rb +3 -1
- data/app/views/alchemy/essences/_essence_node_editor.html.erb +1 -1
- data/config/alchemy/config.yml +1 -0
- data/config/initializers/dragonfly.rb +2 -0
- data/lib/alchemy/dragonfly/processors/thumbnail.rb +27 -0
- data/lib/alchemy/engine.rb +11 -0
- data/lib/alchemy/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a2374c679c6d6962c9bb32d48f8f444def421fb927302b87f705a85e9e21d85
|
4
|
+
data.tar.gz: d3a682ccdf288d777e87f145b15121fa51d4008d3992ba39abb16e417e2ca1bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d40a29752e354e66b2186290cb229a2d0b89b77b258258c5488f4b8e6f56ffc7714bd6824e89e05a9075c53a3294c75eb5ebe70148c12d0b3fae84781f70a33
|
7
|
+
data.tar.gz: 1ddecd199116f699e351384bb460c39bb3203a71fa41a3d6e3319b8ad8107500049f1e37894f9a14f3e955930ae98e2dcc2d1458fff128dac2178b9d94cbeabc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 5.3.5 (2022-04-26)
|
2
|
+
|
3
|
+
- Add thumbnail processor to support resizing on animated GIFs [#2316](https://github.com/AlchemyCMS/alchemy_cms/pull/2316) ([kulturbande](https://github.com/kulturbande))
|
4
|
+
- Backport #2277 to 5.3 [#2306](https://github.com/AlchemyCMS/alchemy_cms/pull/2306) ([dbwinger](https://github.com/dbwinger))
|
5
|
+
- add webp - support to 5.3 stable [#2294](https://github.com/AlchemyCMS/alchemy_cms/pull/2294) ([kulturbande](https://github.com/kulturbande))
|
6
|
+
|
1
7
|
## 5.3.4 (2022-04-11)
|
2
8
|
|
3
9
|
- Don't delete locals in render_element so they can be used by all elem… [#2284](https://github.com/AlchemyCMS/alchemy_cms/pull/2284) ([dbwinger](https://github.com/dbwinger))
|
@@ -67,7 +67,7 @@ module Alchemy
|
|
67
67
|
# Returns the rendered resized image using imagemagick directly.
|
68
68
|
#
|
69
69
|
def resize(size, upsample = false)
|
70
|
-
image_file.
|
70
|
+
image_file.thumbnail(upsample ? size : "#{size}>")
|
71
71
|
end
|
72
72
|
|
73
73
|
# Returns true if picture's width is greater than it's height
|
@@ -191,7 +191,7 @@ module Alchemy
|
|
191
191
|
if is_smaller_than?(dimensions) && upsample == false
|
192
192
|
dimensions = reduce_to_image(dimensions)
|
193
193
|
end
|
194
|
-
image_file.
|
194
|
+
image_file.thumbnail("#{dimensions_to_string(dimensions)}#")
|
195
195
|
end
|
196
196
|
|
197
197
|
# Use imagemagick to custom crop an image. Uses -thumbnail for better performance when resizing.
|
@@ -13,6 +13,8 @@ module Alchemy
|
|
13
13
|
include Alchemy::Logger
|
14
14
|
include Alchemy::Picture::Transformations
|
15
15
|
|
16
|
+
ANIMATED_IMAGE_FORMATS = %w[gif webp]
|
17
|
+
|
16
18
|
attr_reader :picture, :render_format
|
17
19
|
|
18
20
|
def_delegators :@picture,
|
@@ -86,7 +88,7 @@ module Alchemy
|
|
86
88
|
end
|
87
89
|
|
88
90
|
options = {
|
89
|
-
flatten: render_format
|
91
|
+
flatten: !render_format.in?(ANIMATED_IMAGE_FORMATS) && picture.image_file_format == "gif",
|
90
92
|
}.with_indifferent_access.merge(options)
|
91
93
|
|
92
94
|
encoding_options = []
|
@@ -17,7 +17,7 @@
|
|
17
17
|
}) %>
|
18
18
|
$('#<%= essence_node_editor.form_field_id %>').alchemyNodeSelect({
|
19
19
|
placeholder: "<%= Alchemy.t(:search_node) %>",
|
20
|
-
url: "<%= alchemy.api_nodes_path %>",
|
20
|
+
url: "<%= alchemy.api_nodes_path(language_id: essence_node_editor.page&.language_id) %>",
|
21
21
|
query_params: <%== query_params.to_json %>,
|
22
22
|
<% if essence_node_editor.essence.node %>
|
23
23
|
<% serialized_node = ActiveModelSerializers::SerializableResource.new(essence_node_editor.essence.node, include: :ancestors) %>
|
data/config/alchemy/config.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "dragonfly_svg"
|
3
3
|
require "alchemy/dragonfly/processors/crop_resize"
|
4
|
+
require "alchemy/dragonfly/processors/thumbnail"
|
4
5
|
|
5
6
|
# Logger
|
6
7
|
Dragonfly.logger = Rails.logger
|
@@ -16,4 +17,5 @@ Dragonfly::ImageMagick::Processors::Encode::WHITELISTED_ARGS << "flatten"
|
|
16
17
|
|
17
18
|
Rails.application.config.after_initialize do
|
18
19
|
Dragonfly.app(:alchemy_pictures).add_processor(:crop_resize, Alchemy::Dragonfly::Processors::CropResize.new)
|
20
|
+
Dragonfly.app(:alchemy_pictures).add_processor(:thumbnail, Alchemy::Dragonfly::Processors::Thumbnail.new)
|
19
21
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dragonfly/image_magick/processors/thumb"
|
4
|
+
|
5
|
+
module Alchemy
|
6
|
+
module Dragonfly
|
7
|
+
module Processors
|
8
|
+
class Thumbnail < ::Dragonfly::ImageMagick::Processors::Thumb
|
9
|
+
def call(content, geometry, opts = {})
|
10
|
+
# store content into an instance variable to use it in args_for_geometry - method
|
11
|
+
@content = content
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
##
|
16
|
+
# due to a missing ImageMagick parameter animated GIFs were broken with the default
|
17
|
+
# Dragonfly Thumb processor
|
18
|
+
def args_for_geometry(geometry)
|
19
|
+
# resize all frames in a GIF
|
20
|
+
# @link https://imagemagick.org/script/command-line-options.php#coalesce
|
21
|
+
# @link https://imagemagick.org/script/command-line-options.php#deconstruct
|
22
|
+
@content&.mime_type == "image/gif" ? "-coalesce #{super} -deconstruct" : super
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/alchemy/engine.rb
CHANGED
@@ -45,6 +45,17 @@ module Alchemy
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
initializer "alchemy.webp-mime_type" do
|
49
|
+
# Rails does not know anything about webp even in 2022
|
50
|
+
unless Mime::Type.lookup_by_extension(:webp)
|
51
|
+
Mime::Type.register("image/webp", :webp)
|
52
|
+
end
|
53
|
+
# Dragonfly uses Rack to read the mime type and guess what
|
54
|
+
unless Rack::Mime::MIME_TYPES[".webp"]
|
55
|
+
Rack::Mime::MIME_TYPES[".webp"] = "image/webp"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
48
59
|
initializer "alchemy.error_tracking" do
|
49
60
|
if defined?(Airbrake)
|
50
61
|
require_relative "error_tracking/airbrake_handler"
|
data/lib/alchemy/version.rb
CHANGED
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: 5.3.
|
4
|
+
version: 5.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2022-04-
|
16
|
+
date: 2022-04-26 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: active_model_serializers
|
@@ -1079,6 +1079,7 @@ files:
|
|
1079
1079
|
- lib/alchemy/controller_actions.rb
|
1080
1080
|
- lib/alchemy/deprecation.rb
|
1081
1081
|
- lib/alchemy/dragonfly/processors/crop_resize.rb
|
1082
|
+
- lib/alchemy/dragonfly/processors/thumbnail.rb
|
1082
1083
|
- lib/alchemy/element_definition.rb
|
1083
1084
|
- lib/alchemy/elements_finder.rb
|
1084
1085
|
- lib/alchemy/engine.rb
|