alchemy_cms 5.0.4 → 5.0.8
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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/CHANGELOG.md +19 -0
- data/alchemy_cms.gemspec +2 -2
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +6 -6
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/models/alchemy/attachment.rb +1 -1
- data/app/models/alchemy/element.rb +1 -1
- data/app/models/alchemy/node.rb +1 -1
- data/app/models/alchemy/page.rb +1 -1
- data/app/models/alchemy/picture.rb +1 -1
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -3
- data/lib/alchemy/upgrader/five_point_zero.rb +32 -0
- data/lib/alchemy/userstamp.rb +1 -1
- data/lib/alchemy/version.rb +1 -1
- data/lib/generators/alchemy/install/install_generator.rb +2 -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: 8f7ac2a39b679dbdfce2dff63b5751ea6207aa85e9e3c037a54c60db2519eb2e
|
4
|
+
data.tar.gz: acef683479517554b1449fbae83b98cd9334a6269b49b253ef0c019ef302e9df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 255cdc036c8d21e35121fc3a714a5a267ffcdc0339ef96c0c7c38066598fdfcf868272558ef36f63c480e526fef2a1296df5885613ff811a234bec7f04051a17
|
7
|
+
data.tar.gz: 913f322105840103a4e453c2ed5e6a8b0a363268d678a8e8a20d7fe5d527986242eb1d526ba231cd784ed4b639156e5f0935f38e6070770c4b026c0210c5afd8
|
data/.github/workflows/ci.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 5.0.8 (2021-11-17)
|
2
|
+
|
3
|
+
- Set stampable user_class_name without root identifier ([tvdeyen](https://github.com/tvdeyen))
|
4
|
+
- Use relative path for tinymce font-face ([tvdeyen](https://github.com/tvdeyen))
|
5
|
+
|
6
|
+
## 5.0.7 (2021-10-26)
|
7
|
+
|
8
|
+
- Make sure to install correct npm package ([tvdeyen](https://github.com/tvdeyen))
|
9
|
+
|
10
|
+
## 5.0.6 (2021-09-17)
|
11
|
+
|
12
|
+
- Use self_and_ancestors in page_active? helper [#2193](https://github.com/AlchemyCMS/alchemy_cms/pull/2193) ([mamhoff](https://github.com/mamhoff))
|
13
|
+
|
14
|
+
## 5.0.5 (2021-09-15)
|
15
|
+
|
16
|
+
- Backport #2115 to v5.0 [#2126](https://github.com/AlchemyCMS/alchemy_cms/pull/2126) ([dbwinger](https://github.com/dbwinger))
|
17
|
+
- Fixate Dragonfly to < 1.4 [#2122](https://github.com/AlchemyCMS/alchemy_cms/pull/2122) ([tvdeyen](https://github.com/tvdeyen))
|
18
|
+
- Backport #2114 to v5.0 [#2118](https://github.com/AlchemyCMS/alchemy_cms/pull/2118) ([afdev82](https://github.com/afdev82))
|
19
|
+
|
1
20
|
## 5.0.4 (2021-05-06)
|
2
21
|
|
3
22
|
- Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([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']
|
@@ -1566,18 +1566,18 @@ i.mce-i-resize {
|
|
1566
1566
|
|
1567
1567
|
@font-face {
|
1568
1568
|
font-family: 'tinymce';
|
1569
|
-
src: url('fonts/tinymce.woff') format('woff'),
|
1570
|
-
url('fonts/tinymce.ttf') format('truetype'),
|
1571
|
-
url('fonts/tinymce.svg#tinymce') format('svg');
|
1569
|
+
src: url('./fonts/tinymce.woff') format('woff'),
|
1570
|
+
url('./fonts/tinymce.ttf') format('truetype'),
|
1571
|
+
url('./fonts/tinymce.svg#tinymce') format('svg');
|
1572
1572
|
font-weight: normal;
|
1573
1573
|
font-style: normal;
|
1574
1574
|
}
|
1575
1575
|
|
1576
1576
|
@font-face {
|
1577
1577
|
font-family: 'tinymce-small';
|
1578
|
-
src: url('fonts/tinymce-small.woff') format('woff'),
|
1579
|
-
url('fonts/tinymce-small.ttf') format('truetype'),
|
1580
|
-
url('fonts/tinymce-small.svg#tinymce') format('svg');
|
1578
|
+
src: url('./fonts/tinymce-small.woff') format('woff'),
|
1579
|
+
url('./fonts/tinymce-small.ttf') format('truetype'),
|
1580
|
+
url('./fonts/tinymce-small.svg#tinymce') format('svg');
|
1581
1581
|
font-weight: normal;
|
1582
1582
|
font-style: normal;
|
1583
1583
|
}
|
@@ -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
|
|
@@ -28,7 +28,7 @@ module Alchemy
|
|
28
28
|
after_assign { |f| write_attribute(:file_mime_type, f.mime_type) }
|
29
29
|
end
|
30
30
|
|
31
|
-
stampable stamper_class_name: Alchemy.
|
31
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
32
32
|
|
33
33
|
has_many :essence_files, class_name: "Alchemy::EssenceFile", foreign_key: "attachment_id"
|
34
34
|
has_many :contents, through: :essence_files
|
@@ -60,7 +60,7 @@ module Alchemy
|
|
60
60
|
#
|
61
61
|
acts_as_list scope: [:page_id, :fixed, :parent_element_id]
|
62
62
|
|
63
|
-
stampable stamper_class_name: Alchemy.
|
63
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
64
64
|
|
65
65
|
has_many :contents, dependent: :destroy, inverse_of: :element
|
66
66
|
|
data/app/models/alchemy/node.rb
CHANGED
@@ -7,7 +7,7 @@ module Alchemy
|
|
7
7
|
before_destroy :check_if_related_essence_nodes_present
|
8
8
|
|
9
9
|
acts_as_nested_set scope: "language_id", touch: true
|
10
|
-
stampable stamper_class_name: Alchemy.
|
10
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
11
11
|
|
12
12
|
belongs_to :language, class_name: "Alchemy::Language"
|
13
13
|
belongs_to :page, class_name: "Alchemy::Page", optional: true, inverse_of: :nodes
|
data/app/models/alchemy/page.rb
CHANGED
@@ -93,7 +93,7 @@ module Alchemy
|
|
93
93
|
case_sensitive: false,
|
94
94
|
message: Alchemy.t("not a valid image")
|
95
95
|
|
96
|
-
stampable stamper_class_name: Alchemy.
|
96
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
97
97
|
|
98
98
|
scope :named, ->(name) { where("#{table_name}.name LIKE ?", "%#{name}%") }
|
99
99
|
scope :recent, -> { where("#{table_name}.created_at > ?", Time.current - 24.hours).order(:created_at) }
|
@@ -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 %>
|
@@ -1,9 +1,19 @@
|
|
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"
|
4
8
|
|
5
9
|
module Alchemy
|
6
10
|
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
|
+
|
7
17
|
class << self
|
8
18
|
def install_gutentag_migrations
|
9
19
|
desc "Install Gutentag migrations"
|
@@ -36,6 +46,28 @@ module Alchemy
|
|
36
46
|
log "Root page not found.", :skip
|
37
47
|
end
|
38
48
|
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
|
39
71
|
end
|
40
72
|
end
|
41
73
|
end
|
data/lib/alchemy/userstamp.rb
CHANGED
data/lib/alchemy/version.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "rails/generators"
|
3
3
|
require "alchemy/install/tasks"
|
4
|
+
require "alchemy/version"
|
4
5
|
|
5
6
|
module Alchemy
|
6
7
|
module Generators
|
@@ -88,7 +89,7 @@ module Alchemy
|
|
88
89
|
end
|
89
90
|
|
90
91
|
def add_npm_package
|
91
|
-
run "yarn add @alchemy_cms/admin"
|
92
|
+
run "yarn add @alchemy_cms/admin@~#{Alchemy.version}"
|
92
93
|
end
|
93
94
|
|
94
95
|
def copy_alchemy_entry_point
|
@@ -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.8
|
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-
|
16
|
+
date: 2021-11-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.1.
|
1272
|
-
signing_key:
|
1277
|
+
rubygems_version: 3.1.6
|
1278
|
+
signing_key:
|
1273
1279
|
specification_version: 4
|
1274
1280
|
summary: A powerful, userfriendly and flexible CMS for Rails
|
1275
1281
|
test_files: []
|
1282
|
+
...
|