alchemy_cms 5.0.9 → 5.0.10

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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8b65ee04f3b4a173ef3c7d5fd49e4d488a548b0695994d5e6f572ee1f46d633
4
- data.tar.gz: 2ad0719e949bd1b48d979db6a0b2e5bfa70ee12648c0b79203ca8f87b82b4d65
3
+ metadata.gz: af554839b7abeaeb5b0bc5a7d7bacc1aaa44973b0e1c44460f984d46447c6316
4
+ data.tar.gz: aae5090361517ba5b64436977841afcd9c7f111fc4c4be224a6c01e13e73cf8b
5
5
  SHA512:
6
- metadata.gz: b3da1ab522043b9330c3a1d48c83f0b77b5ea8baa7ec290ad058c1f6ffe757890bc054cdcd798a8efb17ecf788fa57b374dbe2276675d5ffc7d7efcba60dd7b0
7
- data.tar.gz: d67fed46efb864c0910e922b2ad666e5d04058052a605560503c27429bbf0764dbd875dd5866bc5e19b2b9470ed59eb999c20df7dca317df807d46675f0a4ed8
6
+ metadata.gz: 0efe007dba193d3637552279f109ec785e038a557c3ec022415a9057ae0cc0723e054cdc82c12e0b352026442306974fe8fbcc36d3cf8fd0b0be5896b610016d
7
+ data.tar.gz: 38d0439955c53b1f5eddbf7230d8eb23d730e7a4fd2cd2645132e239ab284a5987633359d7b89060a8cf5d30577822421e682610e503641a5c10702df5780f77
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 5.0.10 (2022-02-28)
2
+
3
+ - Add crop_resize Dragonfly processor ([tvdeyen](https://github.com/tvdeyen))
4
+
1
5
  ## 5.0.9 (2021-11-24)
2
6
 
3
7
  - Adjust tinymce skin assets urls again ([tvdeyen](https://github.com/tvdeyen))
data/alchemy_cms.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
24
24
  gem.add_runtime_dependency 'cancancan', ['>= 2.1', '< 4.0']
25
25
  gem.add_runtime_dependency 'coffee-rails', ['~> 4.0', '< 5.0']
26
- gem.add_runtime_dependency 'dragonfly', ['~> 1.0', '>= 1.0.7', '< 1.4.0']
26
+ gem.add_runtime_dependency 'dragonfly', ['~> 1.4']
27
27
  gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
28
28
  gem.add_runtime_dependency 'gutentag', ['~> 2.2', '>= 2.2.1']
29
29
  gem.add_runtime_dependency 'handlebars_assets', ['~> 0.23']
@@ -40,9 +40,7 @@ module Alchemy
40
40
  def exception_handler(error)
41
41
  exception_logger(error)
42
42
  show_error_notice(error)
43
- if defined?(Airbrake)
44
- notify_airbrake(error) unless Rails.env.development? || Rails.env.test?
45
- end
43
+ notify_error_tracker(error)
46
44
  end
47
45
 
48
46
  # Displays an error notice in the Alchemy backend.
@@ -147,6 +145,14 @@ module Alchemy
147
145
  site
148
146
  end
149
147
  end
148
+
149
+ def notify_error_tracker(exception)
150
+ if ::Alchemy::ErrorTracking.notification_handler.respond_to?(:call)
151
+ ::Alchemy::ErrorTracking.notification_handler.call(exception)
152
+ else
153
+ Rails.logger.warn("To use the Alchemy::ErrorTracking.notification_handler, it must respond to #call.")
154
+ end
155
+ end
150
156
  end
151
157
  end
152
158
  end
@@ -241,12 +241,12 @@ module Alchemy
241
241
  # Use imagemagick to custom crop an image. Uses -thumbnail for better performance when resizing.
242
242
  #
243
243
  def xy_crop_resize(dimensions, top_left, crop_dimensions, upsample)
244
- crop_argument = "-crop #{dimensions_to_string(crop_dimensions)}"
244
+ crop_argument = dimensions_to_string(crop_dimensions)
245
245
  crop_argument += "+#{top_left[:x]}+#{top_left[:y]}"
246
246
 
247
- resize_argument = "-resize #{dimensions_to_string(dimensions)}"
247
+ resize_argument = dimensions_to_string(dimensions)
248
248
  resize_argument += ">" unless upsample
249
- image_file.convert "#{crop_argument} #{resize_argument}"
249
+ image_file.crop_resize(crop_argument, resize_argument)
250
250
  end
251
251
 
252
252
  # Used when centercropping.
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require "dragonfly_svg"
3
+ require "alchemy/dragonfly/processors/crop_resize"
3
4
 
4
5
  # Logger
5
6
  Dragonfly.logger = Rails.logger
@@ -9,3 +10,10 @@ if defined?(ActiveRecord::Base)
9
10
  ActiveRecord::Base.extend Dragonfly::Model
10
11
  ActiveRecord::Base.extend Dragonfly::Model::Validations
11
12
  end
13
+
14
+ # Dragonfly 1.4.0 only allows `quality` as argument to `encode`
15
+ Dragonfly::ImageMagick::Processors::Encode::WHITELISTED_ARGS << "flatten"
16
+
17
+ Rails.application.config.after_initialize do
18
+ Dragonfly.app(:alchemy_pictures).add_processor(:crop_resize, Alchemy::Dragonfly::Processors::CropResize.new)
19
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dragonfly/image_magick/commands"
4
+
5
+ module Alchemy
6
+ module Dragonfly
7
+ module Processors
8
+ class CropResize
9
+ include ::Dragonfly::ParamValidators
10
+
11
+ IS_CROP_ARGUMENT = ->(args_string) {
12
+ args_string.match?(::Dragonfly::ImageMagick::Processors::Thumb::CROP_GEOMETRY)
13
+ }
14
+
15
+ IS_RESIZE_ARGUMENT = ->(args_string) {
16
+ args_string.match?(::Dragonfly::ImageMagick::Processors::Thumb::RESIZE_GEOMETRY)
17
+ }
18
+
19
+ def call(content, crop_argument, resize_argument)
20
+ validate!(crop_argument, &IS_CROP_ARGUMENT)
21
+ validate!(resize_argument, &IS_RESIZE_ARGUMENT)
22
+ ::Dragonfly::ImageMagick::Commands.convert(
23
+ content,
24
+ "-crop #{crop_argument} -resize #{resize_argument}"
25
+ )
26
+ end
27
+
28
+ def update_url(attrs, _args = "", opts = {})
29
+ format = opts["format"]
30
+ attrs.ext = format if format
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -43,5 +43,12 @@ module Alchemy
43
43
  config.after_initialize do
44
44
  require_relative "./userstamp"
45
45
  end
46
+
47
+ initializer "alchemy.error_tracking" do
48
+ if defined?(Airbrake)
49
+ require_relative "error_tracking/airbrake_handler"
50
+ Alchemy::ErrorTracking.notification_handler = Alchemy::ErrorTracking::AirbrakeHandler
51
+ end
52
+ end
46
53
  end
47
54
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Alchemy
4
+ module ErrorTracking
5
+ class AirbrakeHandler < BaseHandler
6
+ def self.call(exception)
7
+ return if ["development", "test"].include?(Rails.env)
8
+
9
+ notify_airbrake(exception)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Alchemy
4
+ module ErrorTracking
5
+ class BaseHandler
6
+ def self.call(exception)
7
+ # implement your own notification method
8
+ end
9
+ end
10
+
11
+ mattr_accessor :notification_handler
12
+ @@notification_handler = BaseHandler
13
+ end
14
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "5.0.9"
4
+ VERSION = "5.0.10"
5
5
 
6
6
  def self.version
7
7
  VERSION
data/lib/alchemy_cms.rb CHANGED
@@ -38,6 +38,7 @@ require_relative "alchemy/configuration_methods"
38
38
  require_relative "alchemy/controller_actions"
39
39
  require_relative "alchemy/deprecation"
40
40
  require_relative "alchemy/elements_finder"
41
+ require_relative "alchemy/error_tracking"
41
42
  require_relative "alchemy/errors"
42
43
  require_relative "alchemy/essence"
43
44
  require_relative "alchemy/filetypes"
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alchemy_cms/admin",
3
- "version": "5.0.8",
3
+ "version": "5.0.10",
4
4
  "description": "AlchemyCMS",
5
5
  "browser": "package/admin.js",
6
6
  "files": [
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.0.9
4
+ version: 5.0.10
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: 2021-11-24 00:00:00.000000000 Z
16
+ date: 2022-02-28 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: active_model_serializers
@@ -109,26 +109,14 @@ dependencies:
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '1.0'
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- version: 1.0.7
116
- - - "<"
117
- - !ruby/object:Gem::Version
118
- version: 1.4.0
112
+ version: '1.4'
119
113
  type: :runtime
120
114
  prerelease: false
121
115
  version_requirements: !ruby/object:Gem::Requirement
122
116
  requirements:
123
117
  - - "~>"
124
118
  - !ruby/object:Gem::Version
125
- version: '1.0'
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: 1.0.7
129
- - - "<"
130
- - !ruby/object:Gem::Version
131
- version: 1.4.0
119
+ version: '1.4'
132
120
  - !ruby/object:Gem::Dependency
133
121
  name: dragonfly_svg
134
122
  requirement: !ruby/object:Gem::Requirement
@@ -1085,8 +1073,11 @@ files:
1085
1073
  - lib/alchemy/configuration_methods.rb
1086
1074
  - lib/alchemy/controller_actions.rb
1087
1075
  - lib/alchemy/deprecation.rb
1076
+ - lib/alchemy/dragonfly/processors/crop_resize.rb
1088
1077
  - lib/alchemy/elements_finder.rb
1089
1078
  - lib/alchemy/engine.rb
1079
+ - lib/alchemy/error_tracking.rb
1080
+ - lib/alchemy/error_tracking/airbrake_handler.rb
1090
1081
  - lib/alchemy/errors.rb
1091
1082
  - lib/alchemy/essence.rb
1092
1083
  - lib/alchemy/filetypes.rb