alchemy_cms 5.0.2 → 5.0.6
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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/CHANGELOG.md +18 -0
- data/alchemy_cms.gemspec +2 -2
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -3
- data/lib/alchemy/resource.rb +5 -3
- data/lib/alchemy/upgrader/five_point_zero.rb +31 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/tasks/alchemy/upgrade.rake +20 -0
- data/package/admin.js +2 -0
- data/package/src/__tests__/i18n.spec.js +23 -0
- data/package/src/i18n.js +1 -3
- data/package.json +1 -1
- metadata +14 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 258d3d6195bb0d7fa50441605c4d171ed5407c34b4f47a156bb226672ae011b3
|
|
4
|
+
data.tar.gz: 37ea45809644be87e2218468dc78d9c2369cefde1d81c0da8bb3daffc1d1c2e9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f91a2f44b2d644103ed3ae44b9d93de2cff43184abec91d181fe43f146f9117a8247790664defb0db2da92bd596f4428b24d75bcb894a69a86799ebf3e6d2cb5
|
|
7
|
+
data.tar.gz: 7ef2077731da024cdd464b5f623e147226019d0d9e3485fa642f9b75063516466099f41277479df5234aac3381182bc1eaf99dabded63b55266972f9978a1056
|
data/.github/workflows/ci.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## 5.0.6 (2021-09-17)
|
|
2
|
+
|
|
3
|
+
- Use self_and_ancestors in page_active? helper [#2193](https://github.com/AlchemyCMS/alchemy_cms/pull/2193) ([mamhoff](https://github.com/mamhoff))
|
|
4
|
+
|
|
5
|
+
## 5.0.5 (2021-09-15)
|
|
6
|
+
|
|
7
|
+
- Backport #2115 to v5.0 [#2126](https://github.com/AlchemyCMS/alchemy_cms/pull/2126) ([dbwinger](https://github.com/dbwinger))
|
|
8
|
+
- Fixate Dragonfly to < 1.4 [#2122](https://github.com/AlchemyCMS/alchemy_cms/pull/2122) ([tvdeyen](https://github.com/tvdeyen))
|
|
9
|
+
- Backport #2114 to v5.0 [#2118](https://github.com/AlchemyCMS/alchemy_cms/pull/2118) ([afdev82](https://github.com/afdev82))
|
|
10
|
+
|
|
11
|
+
## 5.0.4 (2021-05-06)
|
|
12
|
+
|
|
13
|
+
- Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([tvdeyen](https://github.com/tvdeyen))
|
|
14
|
+
|
|
15
|
+
## 5.0.3 (2021-01-12)
|
|
16
|
+
|
|
17
|
+
- Fix copy element feature [#1996](https://github.com/AlchemyCMS/alchemy_cms/pull/1996) ([tvdeyen](https://github.com/tvdeyen))
|
|
18
|
+
|
|
1
19
|
## 5.0.2 (2020-12-18)
|
|
2
20
|
|
|
3
21
|
- Fix page sorting [#1984](https://github.com/AlchemyCMS/alchemy_cms/pull/1984) ([tvdeyen](https://github.com/tvdeyen))
|
data/alchemy_cms.gemspec
CHANGED
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
|
13
13
|
gem.summary = 'A powerful, userfriendly and flexible CMS for Rails'
|
|
14
14
|
gem.description = 'Alchemy is a powerful, userfriendly and flexible Rails CMS.'
|
|
15
15
|
gem.requirements << 'ImageMagick (libmagick), v6.6 or greater.'
|
|
16
|
-
gem.required_ruby_version = '
|
|
16
|
+
gem.required_ruby_version = '~> 2.3'
|
|
17
17
|
gem.license = 'BSD New'
|
|
18
18
|
gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
|
|
19
19
|
gem.require_paths = ['lib']
|
|
@@ -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']
|
|
26
|
+
gem.add_runtime_dependency 'dragonfly', ['~> 1.0', '>= 1.0.7', '< 1.4.0']
|
|
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']
|
|
@@ -100,7 +100,7 @@ module Alchemy
|
|
|
100
100
|
|
|
101
101
|
# Returns true if page is in the active branch
|
|
102
102
|
def page_active?(page)
|
|
103
|
-
@_page_ancestors ||=
|
|
103
|
+
@_page_ancestors ||= @page.self_and_ancestors.contentpages
|
|
104
104
|
@_page_ancestors.include?(page)
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% content = local_assigns[:content] || local_assigns[:essence_picture_view] %>
|
|
2
2
|
<%= Alchemy::EssencePictureView.new(
|
|
3
3
|
content,
|
|
4
|
-
local_assigns[:options],
|
|
5
|
-
local_assigns[:html_options]
|
|
6
|
-
).render %>
|
|
4
|
+
local_assigns[:options] || {},
|
|
5
|
+
local_assigns[:html_options] || {}
|
|
6
|
+
).render %>
|
data/lib/alchemy/resource.rb
CHANGED
|
@@ -132,7 +132,9 @@ module Alchemy
|
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
def namespaced_resource_name
|
|
135
|
-
@_namespaced_resource_name ||=
|
|
135
|
+
@_namespaced_resource_name ||= begin
|
|
136
|
+
namespaced_resources_name.to_s.singularize
|
|
137
|
+
end.to_sym # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
|
136
138
|
end
|
|
137
139
|
|
|
138
140
|
def namespaced_resources_name
|
|
@@ -140,13 +142,13 @@ module Alchemy
|
|
|
140
142
|
resource_name_array = resource_array.dup
|
|
141
143
|
resource_name_array.delete(engine_name) if in_engine?
|
|
142
144
|
resource_name_array.join("_")
|
|
143
|
-
end
|
|
145
|
+
end.to_sym # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
|
144
146
|
end
|
|
145
147
|
|
|
146
148
|
def namespace_for_scope
|
|
147
149
|
namespace_array = namespace_diff
|
|
148
150
|
namespace_array.delete(engine_name) if in_engine?
|
|
149
|
-
namespace_array
|
|
151
|
+
namespace_array.map(&:to_sym) # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
|
150
152
|
end
|
|
151
153
|
|
|
152
154
|
# Returns an array of underscored association names
|
|
@@ -1,9 +1,18 @@
|
|
|
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"
|
|
4
7
|
|
|
5
8
|
module Alchemy
|
|
6
9
|
class Upgrader::FivePointZero < Upgrader
|
|
10
|
+
include Rails::Generators::Actions
|
|
11
|
+
include Thor::Base
|
|
12
|
+
include Thor::Actions
|
|
13
|
+
|
|
14
|
+
source_root File.expand_path("../../generators/alchemy/install/files", __dir__)
|
|
15
|
+
|
|
7
16
|
class << self
|
|
8
17
|
def install_gutentag_migrations
|
|
9
18
|
desc "Install Gutentag migrations"
|
|
@@ -36,6 +45,28 @@ module Alchemy
|
|
|
36
45
|
log "Root page not found.", :skip
|
|
37
46
|
end
|
|
38
47
|
end
|
|
48
|
+
|
|
49
|
+
def run_webpacker_installer
|
|
50
|
+
# Webpacker does not create a package.json, but we need one
|
|
51
|
+
unless File.exist? app_root.join("package.json")
|
|
52
|
+
in_root { run "echo '{}' > package.json" }
|
|
53
|
+
end
|
|
54
|
+
new.rake("webpacker:install", abort_on_failure: true)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def add_npm_package
|
|
58
|
+
new.run "yarn add @alchemy_cms/admin"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def copy_alchemy_entry_point
|
|
62
|
+
webpack_config = YAML.load_file(app_root.join("config", "webpacker.yml"))[Rails.env]
|
|
63
|
+
new.copy_file "alchemy_admin.js",
|
|
64
|
+
app_root.join(webpack_config["source_path"], webpack_config["source_entry_path"], "alchemy/admin.js")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def app_root
|
|
68
|
+
@_app_root ||= Rails.root
|
|
69
|
+
end
|
|
39
70
|
end
|
|
40
71
|
end
|
|
41
72
|
end
|
data/lib/alchemy/version.rb
CHANGED
|
@@ -42,6 +42,9 @@ 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",
|
|
45
48
|
]
|
|
46
49
|
|
|
47
50
|
desc "Install Gutentag migrations"
|
|
@@ -58,6 +61,23 @@ namespace :alchemy do
|
|
|
58
61
|
task remove_root_page: [:environment] do
|
|
59
62
|
Alchemy::Upgrader::FivePointZero.remove_root_page
|
|
60
63
|
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
|
|
61
81
|
end
|
|
62
82
|
end
|
|
63
83
|
end
|
data/package/admin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import translate from "./src/i18n"
|
|
2
|
+
import translationData from "./src/translations"
|
|
2
3
|
import NodeTree from "./src/node_tree"
|
|
3
4
|
|
|
4
5
|
// Global Alchemy object
|
|
@@ -10,5 +11,6 @@ if (typeof window.Alchemy === "undefined") {
|
|
|
10
11
|
Object.assign(Alchemy, {
|
|
11
12
|
// Global utility method for translating a given string
|
|
12
13
|
t: translate,
|
|
14
|
+
translations: Object.assign(Alchemy.translations || {}, translationData),
|
|
13
15
|
NodeTree
|
|
14
16
|
})
|
|
@@ -15,12 +15,20 @@ describe("translate", () => {
|
|
|
15
15
|
})
|
|
16
16
|
|
|
17
17
|
describe("if translation is present", () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
Alchemy.translations = { en: { help: "Help" } }
|
|
20
|
+
})
|
|
21
|
+
|
|
18
22
|
it("Returns translated string", () => {
|
|
19
23
|
expect(translate("help")).toEqual("Help")
|
|
20
24
|
})
|
|
21
25
|
|
|
22
26
|
describe("if key includes a period", () => {
|
|
23
27
|
describe("that is translated", () => {
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
Alchemy.translations = { en: { formats: { date: "Y-m-d" } } }
|
|
30
|
+
})
|
|
31
|
+
|
|
24
32
|
it("splits into group", () => {
|
|
25
33
|
expect(translate("formats.date")).toEqual("Y-m-d")
|
|
26
34
|
})
|
|
@@ -40,6 +48,10 @@ describe("translate", () => {
|
|
|
40
48
|
})
|
|
41
49
|
|
|
42
50
|
describe("if replacement is given", () => {
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
Alchemy.translations = { en: { allowed_chars: "of %{number} chars" } }
|
|
53
|
+
})
|
|
54
|
+
|
|
43
55
|
it("replaces it", () => {
|
|
44
56
|
expect(translate("allowed_chars", 5)).toEqual("of 5 chars")
|
|
45
57
|
})
|
|
@@ -67,4 +79,15 @@ describe("translate", () => {
|
|
|
67
79
|
spy.mockRestore()
|
|
68
80
|
})
|
|
69
81
|
})
|
|
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
|
+
})
|
|
70
93
|
})
|
data/package/src/i18n.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import translationData from "./translations"
|
|
2
|
-
|
|
3
1
|
const KEY_SEPARATOR = /\./
|
|
4
2
|
|
|
5
3
|
function currentLocale() {
|
|
@@ -11,7 +9,7 @@ function currentLocale() {
|
|
|
11
9
|
|
|
12
10
|
function getTranslations() {
|
|
13
11
|
const locale = currentLocale()
|
|
14
|
-
const translations =
|
|
12
|
+
const translations = Alchemy.translations && Alchemy.translations[locale]
|
|
15
13
|
|
|
16
14
|
if (translations) {
|
|
17
15
|
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.0.
|
|
4
|
+
version: 5.0.6
|
|
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:
|
|
16
|
+
date: 2021-09-17 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: active_model_serializers
|
|
@@ -113,6 +113,9 @@ 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
|
|
116
119
|
type: :runtime
|
|
117
120
|
prerelease: false
|
|
118
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -123,6 +126,9 @@ dependencies:
|
|
|
123
126
|
- - ">="
|
|
124
127
|
- !ruby/object:Gem::Version
|
|
125
128
|
version: 1.0.7
|
|
129
|
+
- - "<"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 1.4.0
|
|
126
132
|
- !ruby/object:Gem::Dependency
|
|
127
133
|
name: dragonfly_svg
|
|
128
134
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1258,9 +1264,9 @@ require_paths:
|
|
|
1258
1264
|
- lib
|
|
1259
1265
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
1260
1266
|
requirements:
|
|
1261
|
-
- - "
|
|
1267
|
+
- - "~>"
|
|
1262
1268
|
- !ruby/object:Gem::Version
|
|
1263
|
-
version: 2.3
|
|
1269
|
+
version: '2.3'
|
|
1264
1270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1265
1271
|
requirements:
|
|
1266
1272
|
- - ">="
|
|
@@ -1268,8 +1274,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1268
1274
|
version: '0'
|
|
1269
1275
|
requirements:
|
|
1270
1276
|
- ImageMagick (libmagick), v6.6 or greater.
|
|
1271
|
-
rubygems_version: 3.
|
|
1272
|
-
signing_key:
|
|
1277
|
+
rubygems_version: 3.2.26
|
|
1278
|
+
signing_key:
|
|
1273
1279
|
specification_version: 4
|
|
1274
1280
|
summary: A powerful, userfriendly and flexible CMS for Rails
|
|
1275
1281
|
test_files: []
|
|
1282
|
+
...
|