alchemy_cms 5.1.9 → 5.2.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +2 -1
- data/CHANGELOG.md +21 -25
- data/Gemfile +2 -6
- data/alchemy_cms.gemspec +3 -3
- data/app/assets/stylesheets/alchemy/_variables.scss +2 -0
- data/app/assets/stylesheets/alchemy/elements.scss +38 -5
- data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +3 -3
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +7 -7
- data/app/controllers/alchemy/admin/base_controller.rb +1 -0
- data/app/controllers/alchemy/admin/trash_controller.rb +2 -0
- data/app/decorators/alchemy/content_editor.rb +64 -0
- data/app/decorators/alchemy/element_editor.rb +1 -25
- data/app/helpers/alchemy/admin/contents_helper.rb +3 -8
- data/app/helpers/alchemy/elements_helper.rb +0 -18
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/models/alchemy/attachment.rb +5 -1
- data/app/models/alchemy/content.rb +7 -0
- data/app/models/alchemy/element/definitions.rb +5 -22
- data/app/models/alchemy/element.rb +39 -1
- data/app/models/alchemy/node.rb +1 -1
- data/app/models/alchemy/page/page_elements.rb +9 -2
- data/app/models/alchemy/page.rb +1 -1
- data/app/models/alchemy/picture.rb +2 -2
- data/app/models/alchemy/picture_variant.rb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element_header.html.erb +2 -0
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -3
- data/config/brakeman.ignore +305 -17
- data/config/locales/alchemy.en.yml +40 -24
- data/lib/alchemy/deprecation.rb +1 -1
- data/lib/alchemy/element_definition.rb +70 -0
- data/lib/alchemy/elements_finder.rb +6 -2
- data/lib/alchemy/engine.rb +1 -1
- data/lib/alchemy/essence.rb +4 -4
- data/lib/alchemy/filetypes.rb +13 -0
- data/lib/alchemy/forms/builder.rb +1 -1
- data/lib/alchemy/i18n.rb +4 -5
- data/lib/alchemy/page_layout.rb +1 -0
- data/lib/alchemy/resource.rb +3 -5
- data/lib/alchemy/test_support/integration_helpers.rb +5 -5
- data/lib/alchemy/upgrader/five_point_zero.rb +0 -32
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- data/lib/generators/alchemy/install/install_generator.rb +1 -2
- data/lib/tasks/alchemy/thumbnails.rake +2 -4
- data/lib/tasks/alchemy/upgrade.rake +0 -20
- data/package/admin.js +0 -2
- data/package/src/__tests__/i18n.spec.js +0 -23
- data/package/src/i18n.js +3 -1
- data/package.json +1 -1
- metadata +12 -18
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Alchemy
|
4
|
+
class ElementDefinition
|
5
|
+
class << self
|
6
|
+
# Returns the definitions from elements.yml file.
|
7
|
+
#
|
8
|
+
# Place a +elements.yml+ file inside your apps +config/alchemy+ folder to define
|
9
|
+
# your own set of elements
|
10
|
+
#
|
11
|
+
def all
|
12
|
+
@definitions ||= read_definitions_file.map(&:with_indifferent_access)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Add additional page definitions to collection.
|
16
|
+
#
|
17
|
+
# Useful for extending the elements from an Alchemy module.
|
18
|
+
#
|
19
|
+
# === Usage Example
|
20
|
+
#
|
21
|
+
# Call +Alchemy::ElementDefinition.add(your_definition)+ in your engine.rb file.
|
22
|
+
#
|
23
|
+
# @param [Array || Hash]
|
24
|
+
# You can pass a single element definition as Hash, or a collection of elements as Array.
|
25
|
+
#
|
26
|
+
def add(element)
|
27
|
+
all
|
28
|
+
if element.is_a?(Array)
|
29
|
+
@definitions += element
|
30
|
+
elsif element.is_a?(Hash)
|
31
|
+
@definitions << element
|
32
|
+
else
|
33
|
+
raise TypeError
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns one element definition by given name.
|
38
|
+
#
|
39
|
+
def get(name)
|
40
|
+
return {} if name.blank?
|
41
|
+
|
42
|
+
all.detect { |a| a["name"] == name }
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
# Reads the element definitions from +config/alchemy/elements.yml+.
|
48
|
+
#
|
49
|
+
def read_definitions_file
|
50
|
+
if File.exist?(definitions_file_path)
|
51
|
+
YAML.safe_load(
|
52
|
+
ERB.new(File.read(definitions_file_path)).result,
|
53
|
+
YAML_WHITELIST_CLASSES,
|
54
|
+
[],
|
55
|
+
true
|
56
|
+
) || []
|
57
|
+
else
|
58
|
+
raise LoadError,
|
59
|
+
"Could not find elements.yml file! Please run `rails generate alchemy:install`"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Returns the elements.yml file path
|
64
|
+
#
|
65
|
+
def definitions_file_path
|
66
|
+
Rails.root.join "config/alchemy/elements.yml"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -26,8 +26,6 @@ module Alchemy
|
|
26
26
|
# Randomize the output of elements
|
27
27
|
# @option options [Boolean] :reverse (false)
|
28
28
|
# Reverse the load order
|
29
|
-
# @option options [Hash] :fallback
|
30
|
-
# Define elements that are loaded from another page if no element was found on given page.
|
31
29
|
def initialize(options = {})
|
32
30
|
@options = options
|
33
31
|
end
|
@@ -83,6 +81,9 @@ module Alchemy
|
|
83
81
|
when Alchemy::Page
|
84
82
|
page_or_layout
|
85
83
|
when String
|
84
|
+
Alchemy::Deprecation.warn "Passing a String as `from_page` option to " \
|
85
|
+
"`render_elements` is deprecated and will be removed with Alchemy 6.0. " \
|
86
|
+
"Please load the page beforehand and pass it as an object instead."
|
86
87
|
Alchemy::Page.find_by(
|
87
88
|
language: Alchemy::Language.current,
|
88
89
|
page_layout: page_or_layout,
|
@@ -92,6 +93,9 @@ module Alchemy
|
|
92
93
|
end
|
93
94
|
|
94
95
|
def fallback_required?(elements)
|
96
|
+
if options[:fallback]
|
97
|
+
Alchemy::Deprecation.warn "Passing `fallback` options to `render_elements` is deprecated an will be removed with Alchemy 6.0."
|
98
|
+
end
|
95
99
|
options[:fallback] && elements
|
96
100
|
.where(Alchemy::Element.table_name => {name: options[:fallback][:for]})
|
97
101
|
.none?
|
data/lib/alchemy/engine.rb
CHANGED
@@ -40,7 +40,7 @@ module Alchemy
|
|
40
40
|
if Alchemy.user_class
|
41
41
|
ActiveSupport.on_load(:active_record) do
|
42
42
|
Alchemy.user_class.model_stamper
|
43
|
-
Alchemy.user_class.stampable(stamper_class_name: Alchemy.
|
43
|
+
Alchemy.user_class.stampable(stamper_class_name: Alchemy.user_class_name)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/lib/alchemy/essence.rb
CHANGED
@@ -83,7 +83,7 @@ module Alchemy #:nodoc:
|
|
83
83
|
|
84
84
|
if configuration[:belongs_to]
|
85
85
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
86
|
-
belongs_to :ingredient_association,
|
86
|
+
belongs_to :ingredient_association, **#{configuration[:belongs_to]}
|
87
87
|
|
88
88
|
alias_method :#{configuration[:ingredient_column]}, :ingredient_association
|
89
89
|
alias_method :#{configuration[:ingredient_column]}=, :ingredient_association=
|
@@ -108,9 +108,9 @@ module Alchemy #:nodoc:
|
|
108
108
|
# Register the current class as has_many association on +Alchemy::Page+ and +Alchemy::Element+ models
|
109
109
|
def register_as_essence_association!
|
110
110
|
klass_name = model_name.to_s
|
111
|
-
arguments = [:has_many, klass_name.demodulize.tableize.to_sym
|
112
|
-
|
113
|
-
%w(Page Element).each { |k| "Alchemy::#{k}".constantize.send(*arguments) }
|
111
|
+
arguments = [:has_many, klass_name.demodulize.tableize.to_sym]
|
112
|
+
kwargs = { through: :contents, source: :essence, source_type: klass_name }
|
113
|
+
%w(Page Element).each { |k| "Alchemy::#{k}".constantize.send(*arguments, **kwargs) }
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
data/lib/alchemy/filetypes.rb
CHANGED
@@ -40,7 +40,20 @@ module Alchemy
|
|
40
40
|
EXCEL_FILE_TYPES = [
|
41
41
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
42
42
|
"application/vnd.ms-excel",
|
43
|
+
"application/msexcel",
|
43
44
|
"text/csv",
|
44
45
|
]
|
46
|
+
|
47
|
+
WORD_FILE_TYPES = [
|
48
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
49
|
+
"application/vnd.ms-word",
|
50
|
+
"application/msword",
|
51
|
+
]
|
52
|
+
|
53
|
+
POWERPOINT_FILE_TYPES = [
|
54
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
55
|
+
"application/vnd.ms-powerpoint",
|
56
|
+
"application/mspowerpoint",
|
57
|
+
]
|
45
58
|
end
|
46
59
|
end
|
@@ -11,7 +11,7 @@ module Alchemy
|
|
11
11
|
if object.respond_to?(:attribute_fixed?) && object.attribute_fixed?(attribute_name)
|
12
12
|
options[:disabled] = true
|
13
13
|
options[:input_html] = options.fetch(:input_html, {}).merge(
|
14
|
-
"data-alchemy-tooltip" => Alchemy.t(:attribute_fixed, attribute_name),
|
14
|
+
"data-alchemy-tooltip" => Alchemy.t(:attribute_fixed, attribute: attribute_name),
|
15
15
|
)
|
16
16
|
end
|
17
17
|
|
data/lib/alchemy/i18n.rb
CHANGED
@@ -12,8 +12,8 @@ module Alchemy
|
|
12
12
|
#
|
13
13
|
# Alchemy.t(:hello)
|
14
14
|
#
|
15
|
-
def t(msg,
|
16
|
-
Alchemy::I18n.translate(msg,
|
15
|
+
def t(msg, **kwargs)
|
16
|
+
Alchemy::I18n.translate(msg, **kwargs)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -47,11 +47,10 @@ module Alchemy
|
|
47
47
|
# world:
|
48
48
|
# hello: Hallo
|
49
49
|
#
|
50
|
-
def translate(msg,
|
51
|
-
options = args.extract_options!
|
50
|
+
def translate(msg, **options)
|
52
51
|
humanize_default_string!(msg, options)
|
53
52
|
scope = alchemy_scoped_scope(options)
|
54
|
-
::I18n.t(msg, options.merge(scope: scope))
|
53
|
+
::I18n.t(msg, **options.merge(scope: scope))
|
55
54
|
end
|
56
55
|
|
57
56
|
def available_locales
|
data/lib/alchemy/page_layout.rb
CHANGED
data/lib/alchemy/resource.rb
CHANGED
@@ -132,9 +132,7 @@ module Alchemy
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def namespaced_resource_name
|
135
|
-
@_namespaced_resource_name ||=
|
136
|
-
namespaced_resources_name.to_s.singularize
|
137
|
-
end.to_sym # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
135
|
+
@_namespaced_resource_name ||= namespaced_resources_name.singularize
|
138
136
|
end
|
139
137
|
|
140
138
|
def namespaced_resources_name
|
@@ -142,13 +140,13 @@ module Alchemy
|
|
142
140
|
resource_name_array = resource_array.dup
|
143
141
|
resource_name_array.delete(engine_name) if in_engine?
|
144
142
|
resource_name_array.join("_")
|
145
|
-
end
|
143
|
+
end
|
146
144
|
end
|
147
145
|
|
148
146
|
def namespace_for_scope
|
149
147
|
namespace_array = namespace_diff
|
150
148
|
namespace_array.delete(engine_name) if in_engine?
|
151
|
-
namespace_array
|
149
|
+
namespace_array
|
152
150
|
end
|
153
151
|
|
154
152
|
# Returns an array of underscored association names
|
@@ -6,16 +6,16 @@ module Alchemy
|
|
6
6
|
# This file is included in spec_helper.rb
|
7
7
|
#
|
8
8
|
module IntegrationHelpers
|
9
|
-
# Used to stub the
|
9
|
+
# Used to stub the current_user in integration specs
|
10
10
|
#
|
11
11
|
# Pass either a user object or a symbol in the format of ':as_admin'.
|
12
|
-
# The browser language is set to english ('en')
|
13
12
|
#
|
14
13
|
def authorize_user(user_or_role = nil)
|
15
|
-
|
16
|
-
|
17
|
-
else
|
14
|
+
case user_or_role
|
15
|
+
when Symbol, String
|
18
16
|
user = build(:alchemy_dummy_user, user_or_role)
|
17
|
+
else
|
18
|
+
user = user_or_role
|
19
19
|
end
|
20
20
|
allow_any_instance_of(ApplicationController).to receive(:current_user).and_return(user)
|
21
21
|
end
|
@@ -1,19 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "tasks/harden_gutentag_migrations"
|
4
|
-
require "rails/generators"
|
5
|
-
require "thor"
|
6
|
-
require "alchemy/install/tasks"
|
7
|
-
require "alchemy/version"
|
8
4
|
|
9
5
|
module Alchemy
|
10
6
|
class Upgrader::FivePointZero < Upgrader
|
11
|
-
include Rails::Generators::Actions
|
12
|
-
include Thor::Base
|
13
|
-
include Thor::Actions
|
14
|
-
|
15
|
-
source_root File.expand_path("../../generators/alchemy/install/files", __dir__)
|
16
|
-
|
17
7
|
class << self
|
18
8
|
def install_gutentag_migrations
|
19
9
|
desc "Install Gutentag migrations"
|
@@ -46,28 +36,6 @@ module Alchemy
|
|
46
36
|
log "Root page not found.", :skip
|
47
37
|
end
|
48
38
|
end
|
49
|
-
|
50
|
-
def run_webpacker_installer
|
51
|
-
# Webpacker does not create a package.json, but we need one
|
52
|
-
unless File.exist? app_root.join("package.json")
|
53
|
-
in_root { run "echo '{}' > package.json" }
|
54
|
-
end
|
55
|
-
new.rake("webpacker:install", abort_on_failure: true)
|
56
|
-
end
|
57
|
-
|
58
|
-
def add_npm_package
|
59
|
-
new.run "yarn add @alchemy_cms/admin@~#{Alchemy.version}"
|
60
|
-
end
|
61
|
-
|
62
|
-
def copy_alchemy_entry_point
|
63
|
-
webpack_config = YAML.load_file(app_root.join("config", "webpacker.yml"))[Rails.env]
|
64
|
-
new.copy_file "alchemy_admin.js",
|
65
|
-
app_root.join(webpack_config["source_path"], webpack_config["source_entry_path"], "alchemy/admin.js")
|
66
|
-
end
|
67
|
-
|
68
|
-
def app_root
|
69
|
-
@_app_root ||= Rails.root
|
70
|
-
end
|
71
39
|
end
|
72
40
|
end
|
73
41
|
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
@@ -35,6 +35,7 @@ require_relative "alchemy/config"
|
|
35
35
|
require_relative "alchemy/configuration_methods"
|
36
36
|
require_relative "alchemy/controller_actions"
|
37
37
|
require_relative "alchemy/deprecation"
|
38
|
+
require_relative "alchemy/element_definition"
|
38
39
|
require_relative "alchemy/elements_finder"
|
39
40
|
require_relative "alchemy/errors"
|
40
41
|
require_relative "alchemy/essence"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "rails/generators"
|
3
3
|
require "alchemy/install/tasks"
|
4
|
-
require "alchemy/version"
|
5
4
|
|
6
5
|
module Alchemy
|
7
6
|
module Generators
|
@@ -89,7 +88,7 @@ module Alchemy
|
|
89
88
|
end
|
90
89
|
|
91
90
|
def add_npm_package
|
92
|
-
run "yarn add @alchemy_cms/admin
|
91
|
+
run "yarn add @alchemy_cms/admin"
|
93
92
|
end
|
94
93
|
|
95
94
|
def copy_alchemy_entry_point
|
@@ -4,8 +4,8 @@ namespace :alchemy do
|
|
4
4
|
namespace :generate do
|
5
5
|
desc "Generates all thumbnails for Alchemy Pictures and EssencePictures."
|
6
6
|
task thumbnails: [
|
7
|
-
"
|
8
|
-
"
|
7
|
+
"alchemy_dragonfly_s3:generate:picture_thumbnails",
|
8
|
+
"alchemy_dragonfly_s3:generate:essence_picture_thumbnails",
|
9
9
|
]
|
10
10
|
|
11
11
|
desc "Generates thumbnails for Alchemy Pictures."
|
@@ -14,8 +14,6 @@ namespace :alchemy do
|
|
14
14
|
puts "Please wait..."
|
15
15
|
|
16
16
|
Alchemy::Picture.find_each do |picture|
|
17
|
-
next unless picture.has_convertible_format?
|
18
|
-
|
19
17
|
puts Alchemy::PictureThumb.generate_thumbs!(picture)
|
20
18
|
end
|
21
19
|
|
@@ -42,9 +42,6 @@ namespace :alchemy do
|
|
42
42
|
"alchemy:upgrade:5.0:install_gutentag_migrations",
|
43
43
|
"alchemy:upgrade:5.0:remove_layout_roots",
|
44
44
|
"alchemy:upgrade:5.0:remove_root_page",
|
45
|
-
"alchemy:upgrade:5.0:run_webpacker_installer",
|
46
|
-
"alchemy:upgrade:5.0:add_npm_package",
|
47
|
-
"alchemy:upgrade:5.0:copy_alchemy_entry_point",
|
48
45
|
]
|
49
46
|
|
50
47
|
desc "Install Gutentag migrations"
|
@@ -61,23 +58,6 @@ namespace :alchemy do
|
|
61
58
|
task remove_root_page: [:environment] do
|
62
59
|
Alchemy::Upgrader::FivePointZero.remove_root_page
|
63
60
|
end
|
64
|
-
|
65
|
-
desc "Run webpacker installer"
|
66
|
-
task run_webpacker_installer: [:environment] do
|
67
|
-
Alchemy::Upgrader::FivePointZero.run_webpacker_installer
|
68
|
-
end
|
69
|
-
|
70
|
-
desc "Add NPM package"
|
71
|
-
task add_npm_package: [:environment] do
|
72
|
-
puts "adding npm_package..."
|
73
|
-
Alchemy::Upgrader::FivePointZero.add_npm_package
|
74
|
-
end
|
75
|
-
|
76
|
-
desc "Copy alchemy entry point"
|
77
|
-
task copy_alchemy_entry_point: [:environment] do
|
78
|
-
puts "copying alchemy entry point"
|
79
|
-
Alchemy::Upgrader::FivePointZero.copy_alchemy_entry_point
|
80
|
-
end
|
81
61
|
end
|
82
62
|
end
|
83
63
|
end
|
data/package/admin.js
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import translate from "./src/i18n"
|
2
|
-
import translationData from "./src/translations"
|
3
2
|
import NodeTree from "./src/node_tree"
|
4
3
|
|
5
4
|
// Global Alchemy object
|
@@ -11,6 +10,5 @@ if (typeof window.Alchemy === "undefined") {
|
|
11
10
|
Object.assign(Alchemy, {
|
12
11
|
// Global utility method for translating a given string
|
13
12
|
t: translate,
|
14
|
-
translations: Object.assign(Alchemy.translations || {}, translationData),
|
15
13
|
NodeTree
|
16
14
|
})
|
@@ -15,20 +15,12 @@ describe("translate", () => {
|
|
15
15
|
})
|
16
16
|
|
17
17
|
describe("if translation is present", () => {
|
18
|
-
beforeEach(() => {
|
19
|
-
Alchemy.translations = { en: { help: "Help" } }
|
20
|
-
})
|
21
|
-
|
22
18
|
it("Returns translated string", () => {
|
23
19
|
expect(translate("help")).toEqual("Help")
|
24
20
|
})
|
25
21
|
|
26
22
|
describe("if key includes a period", () => {
|
27
23
|
describe("that is translated", () => {
|
28
|
-
beforeEach(() => {
|
29
|
-
Alchemy.translations = { en: { formats: { date: "Y-m-d" } } }
|
30
|
-
})
|
31
|
-
|
32
24
|
it("splits into group", () => {
|
33
25
|
expect(translate("formats.date")).toEqual("Y-m-d")
|
34
26
|
})
|
@@ -48,10 +40,6 @@ describe("translate", () => {
|
|
48
40
|
})
|
49
41
|
|
50
42
|
describe("if replacement is given", () => {
|
51
|
-
beforeEach(() => {
|
52
|
-
Alchemy.translations = { en: { allowed_chars: "of %{number} chars" } }
|
53
|
-
})
|
54
|
-
|
55
43
|
it("replaces it", () => {
|
56
44
|
expect(translate("allowed_chars", 5)).toEqual("of 5 chars")
|
57
45
|
})
|
@@ -79,15 +67,4 @@ describe("translate", () => {
|
|
79
67
|
spy.mockRestore()
|
80
68
|
})
|
81
69
|
})
|
82
|
-
|
83
|
-
describe("if Alchemy.translations is not set", () => {
|
84
|
-
it("Returns passed string and logs a warning", () => {
|
85
|
-
const spy = jest.spyOn(console, "warn").mockImplementation(() => {})
|
86
|
-
expect(translate("help")).toEqual("help")
|
87
|
-
expect(spy.mock.calls).toEqual([
|
88
|
-
["Translations for locale kl not found!"]
|
89
|
-
])
|
90
|
-
spy.mockRestore()
|
91
|
-
})
|
92
|
-
})
|
93
70
|
})
|
data/package/src/i18n.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import translationData from "./translations"
|
2
|
+
|
1
3
|
const KEY_SEPARATOR = /\./
|
2
4
|
|
3
5
|
function currentLocale() {
|
@@ -9,7 +11,7 @@ function currentLocale() {
|
|
9
11
|
|
10
12
|
function getTranslations() {
|
11
13
|
const locale = currentLocale()
|
12
|
-
const translations =
|
14
|
+
const translations = translationData[locale]
|
13
15
|
|
14
16
|
if (translations) {
|
15
17
|
return translations
|
data/package.json
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.
|
4
|
+
version: 5.2.0.b1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -10,10 +10,10 @@ authors:
|
|
10
10
|
- Hendrik Mans
|
11
11
|
- Carsten Fregin
|
12
12
|
- Martin Meyerhoff
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2021-11
|
16
|
+
date: 2021-02-11 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: active_model_serializers
|
@@ -113,9 +113,6 @@ dependencies:
|
|
113
113
|
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: 1.0.7
|
116
|
-
- - "<"
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 1.4.0
|
119
116
|
type: :runtime
|
120
117
|
prerelease: false
|
121
118
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -126,9 +123,6 @@ dependencies:
|
|
126
123
|
- - ">="
|
127
124
|
- !ruby/object:Gem::Version
|
128
125
|
version: 1.0.7
|
129
|
-
- - "<"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 1.4.0
|
132
126
|
- !ruby/object:Gem::Dependency
|
133
127
|
name: dragonfly_svg
|
134
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -282,7 +276,7 @@ dependencies:
|
|
282
276
|
version: '1.8'
|
283
277
|
- - "<"
|
284
278
|
- !ruby/object:Gem::Version
|
285
|
-
version:
|
279
|
+
version: 2.4.2
|
286
280
|
type: :runtime
|
287
281
|
prerelease: false
|
288
282
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -292,7 +286,7 @@ dependencies:
|
|
292
286
|
version: '1.8'
|
293
287
|
- - "<"
|
294
288
|
- !ruby/object:Gem::Version
|
295
|
-
version:
|
289
|
+
version: 2.4.2
|
296
290
|
- !ruby/object:Gem::Dependency
|
297
291
|
name: request_store
|
298
292
|
requirement: !ruby/object:Gem::Requirement
|
@@ -519,14 +513,14 @@ dependencies:
|
|
519
513
|
requirements:
|
520
514
|
- - "~>"
|
521
515
|
- !ruby/object:Gem::Version
|
522
|
-
version: 0.
|
516
|
+
version: '0.20'
|
523
517
|
type: :development
|
524
518
|
prerelease: false
|
525
519
|
version_requirements: !ruby/object:Gem::Requirement
|
526
520
|
requirements:
|
527
521
|
- - "~>"
|
528
522
|
- !ruby/object:Gem::Version
|
529
|
-
version: 0.
|
523
|
+
version: '0.20'
|
530
524
|
- !ruby/object:Gem::Dependency
|
531
525
|
name: webdrivers
|
532
526
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1092,6 +1086,7 @@ files:
|
|
1092
1086
|
- lib/alchemy/configuration_methods.rb
|
1093
1087
|
- lib/alchemy/controller_actions.rb
|
1094
1088
|
- lib/alchemy/deprecation.rb
|
1089
|
+
- lib/alchemy/element_definition.rb
|
1095
1090
|
- lib/alchemy/elements_finder.rb
|
1096
1091
|
- lib/alchemy/engine.rb
|
1097
1092
|
- lib/alchemy/errors.rb
|
@@ -1279,14 +1274,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1279
1274
|
version: 2.3.0
|
1280
1275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1281
1276
|
requirements:
|
1282
|
-
- - "
|
1277
|
+
- - ">"
|
1283
1278
|
- !ruby/object:Gem::Version
|
1284
|
-
version:
|
1279
|
+
version: 1.3.1
|
1285
1280
|
requirements:
|
1286
1281
|
- ImageMagick (libmagick), v6.6 or greater.
|
1287
|
-
rubygems_version: 3.1.
|
1288
|
-
signing_key:
|
1282
|
+
rubygems_version: 3.1.4
|
1283
|
+
signing_key:
|
1289
1284
|
specification_version: 4
|
1290
1285
|
summary: A powerful, userfriendly and flexible CMS for Rails
|
1291
1286
|
test_files: []
|
1292
|
-
...
|