alchemy_cms 4.6.1 → 4.6.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 +20 -1
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +6 -6
- data/app/models/alchemy/attachment.rb +1 -1
- data/app/models/alchemy/content.rb +1 -1
- data/app/models/alchemy/element.rb +1 -1
- data/app/models/alchemy/node.rb +1 -1
- data/app/models/alchemy/page/page_naming.rb +1 -1
- data/app/models/alchemy/page.rb +1 -1
- data/app/models/alchemy/picture.rb +1 -1
- data/lib/alchemy/essence.rb +1 -1
- data/lib/alchemy/resource.rb +6 -4
- data/lib/alchemy/upgrader/four_point_two.rb +1 -0
- data/lib/alchemy/upgrader/tasks/cells_migration.rb +2 -1
- data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +21 -3
- data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +8 -4
- data/lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb +31 -0
- data/lib/alchemy/userstamp.rb +1 -1
- data/lib/alchemy/version.rb +1 -1
- data/lib/tasks/alchemy/convert.rake +8 -7
- data/lib/tasks/alchemy/upgrade.rake +5 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 252654553b59bae763586b46125e8f1ebd621639fc03393c9351ca7984864a79
|
4
|
+
data.tar.gz: 75262fba1d9d9dd36543fb3f10c2fc36fa5d27b2415d27e6379790ba5e2a575b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7c12139368b27f65aac476391aa826033f25bd826c36bf9abef052474c28af364cd115b96e294632c5ee5a1e6922c2d31ffae117fb004d7a5b03e2d9da7c5f9
|
7
|
+
data.tar.gz: 990082f879013f1ce4215992e286a5c28ecefcde47c26a001197d0a927ef38bef8ee83373af4333942718c17d6ccb33794fac6aa63fa60369360ec4557fc0e67
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,23 @@
|
|
1
|
-
##
|
1
|
+
## 4.6.5 (2021-11-17)
|
2
|
+
|
3
|
+
- Set stampable user_class_name without root identifier ([tvdeyen](https://github.com/tvdeyen))
|
4
|
+
|
5
|
+
## 4.6.4 (2021-11-15)
|
6
|
+
|
7
|
+
- Use relative path for tinymce font-face ([tvdeyen](https://github.com/tvdeyen))
|
8
|
+
- make the fixed element upgrader more robust ([darkswoop](https://github.com/darkswoop))
|
9
|
+
- don't use existing element names when migrating from cells ([darkswoop](https://github.com/darkswoop))
|
10
|
+
- enhance regexp in partial name upgrader ([darkswoop](https://github.com/darkswoop))
|
11
|
+
|
12
|
+
## 4.6.3 (2020-05-06)
|
13
|
+
|
14
|
+
- Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([tvdeyen](https://github.com/tvdeyen))
|
15
|
+
- Fix convert:page_trees:to_menus task [#2033](https://github.com/AlchemyCMS/alchemy_cms/pull/2033) ([afdev82](https://github.com/afdev82))
|
16
|
+
- fix 4.6 upgrader tasks [#1995](https://github.com/AlchemyCMS/alchemy_cms/pull/1995) ([afdev82](https://github.com/afdev82))
|
17
|
+
|
18
|
+
## 4.6.2 (2020-09-07)
|
19
|
+
|
20
|
+
- Fix tri-Boolean check in PageNaming Module [#1931](https://github.com/AlchemyCMS/alchemy_cms/pull/1931) ([mamhoff](https://github.com/mamhoff))
|
2
21
|
|
3
22
|
## 4.6.1 (2020-06-04)
|
4
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
|
}
|
@@ -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
|
@@ -28,7 +28,7 @@ module Alchemy
|
|
28
28
|
belongs_to :element, touch: true, inverse_of: :contents
|
29
29
|
has_one :page, through: :element
|
30
30
|
|
31
|
-
stampable stamper_class_name: Alchemy.
|
31
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
32
32
|
|
33
33
|
acts_as_list scope: [:element_id]
|
34
34
|
|
@@ -58,7 +58,7 @@ module Alchemy
|
|
58
58
|
#
|
59
59
|
acts_as_list scope: [:page_id, :fixed, :parent_element_id]
|
60
60
|
|
61
|
-
stampable stamper_class_name: Alchemy.
|
61
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
62
62
|
|
63
63
|
has_many :contents, -> { order(:position) }, dependent: :destroy, inverse_of: :element
|
64
64
|
|
data/app/models/alchemy/node.rb
CHANGED
@@ -5,7 +5,7 @@ module Alchemy
|
|
5
5
|
VALID_URL_REGEX = /\A(\/|\D[a-z\+\d\.\-]+:)/
|
6
6
|
|
7
7
|
acts_as_nested_set scope: "language_id", touch: true
|
8
|
-
stampable stamper_class_name: Alchemy.
|
8
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
9
9
|
|
10
10
|
belongs_to :site, class_name: "Alchemy::Site"
|
11
11
|
belongs_to :language, class_name: "Alchemy::Language"
|
data/app/models/alchemy/page.rb
CHANGED
@@ -74,7 +74,7 @@ module Alchemy
|
|
74
74
|
case_sensitive: false,
|
75
75
|
message: Alchemy.t("not a valid image")
|
76
76
|
|
77
|
-
stampable stamper_class_name: Alchemy.
|
77
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
78
78
|
|
79
79
|
scope :named, ->(name) {
|
80
80
|
where("#{table_name}.name LIKE ?", "%#{name}%")
|
data/lib/alchemy/essence.rb
CHANGED
@@ -48,7 +48,7 @@ module Alchemy #:nodoc:
|
|
48
48
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
49
49
|
attr_writer :validation_errors
|
50
50
|
include Alchemy::Essence::InstanceMethods
|
51
|
-
stampable stamper_class_name: Alchemy.
|
51
|
+
stampable stamper_class_name: Alchemy.user_class.name
|
52
52
|
validate :validate_ingredient, on: :update, if: -> { validations.any? }
|
53
53
|
|
54
54
|
has_one :content, as: :essence, class_name: "Alchemy::Content", inverse_of: :essence
|
data/lib/alchemy/resource.rb
CHANGED
@@ -131,21 +131,23 @@ module Alchemy
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def namespaced_resource_name
|
134
|
-
@_namespaced_resource_name ||=
|
134
|
+
@_namespaced_resource_name ||= begin
|
135
|
+
namespaced_resources_name.to_s.singularize
|
136
|
+
end.to_sym # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
135
137
|
end
|
136
138
|
|
137
139
|
def namespaced_resources_name
|
138
140
|
@_namespaced_resources_name ||= begin
|
139
141
|
resource_name_array = resource_array.dup
|
140
142
|
resource_name_array.delete(engine_name) if in_engine?
|
141
|
-
resource_name_array.join(
|
142
|
-
end
|
143
|
+
resource_name_array.join("_")
|
144
|
+
end.to_sym # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
143
145
|
end
|
144
146
|
|
145
147
|
def namespace_for_scope
|
146
148
|
namespace_array = namespace_diff
|
147
149
|
namespace_array.delete(engine_name) if in_engine?
|
148
|
-
namespace_array
|
150
|
+
namespace_array.map(&:to_sym) # Rails >= 6.0.3.7 needs symbols in polymorphic routes
|
149
151
|
end
|
150
152
|
|
151
153
|
# Returns an array of underscored association names
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'tasks/picture_gallery_upgrader'
|
2
2
|
require_relative 'tasks/picture_gallery_migration'
|
3
|
+
require_relative 'tasks/fixed_element_name_finder'
|
3
4
|
require_relative 'tasks/cells_upgrader'
|
4
5
|
require_relative 'tasks/cells_migration'
|
5
6
|
require_relative 'tasks/element_partial_name_variable_updater'
|
@@ -8,6 +8,7 @@ module Alchemy::Upgrader::Tasks
|
|
8
8
|
def migrate_cells
|
9
9
|
if ActiveRecord::Base.connection.data_source_exists?('alchemy_cells')
|
10
10
|
cells = Cell.all
|
11
|
+
@fixed_element_name_finder = FixedElementNameFinder.new
|
11
12
|
|
12
13
|
if cells.any?
|
13
14
|
cells.each do |cell|
|
@@ -26,7 +27,7 @@ module Alchemy::Upgrader::Tasks
|
|
26
27
|
def migrate_cell!(cell)
|
27
28
|
# bust element definitions insta cache
|
28
29
|
Alchemy::Element.instance_variable_set('@definitions', nil)
|
29
|
-
fixed_element = Alchemy::Element.find_or_initialize_by(fixed: true, name: cell.name, page: cell.page)
|
30
|
+
fixed_element = Alchemy::Element.find_or_initialize_by(fixed: true, name: @fixed_element_name_finder.call(cell.name), page: cell.page)
|
30
31
|
elements = Alchemy::Element.where(cell_id: cell.id).order(position: :asc)
|
31
32
|
|
32
33
|
if fixed_element.new_record?
|
@@ -72,12 +72,13 @@ module Alchemy::Upgrader::Tasks
|
|
72
72
|
|
73
73
|
def convert_cell_config
|
74
74
|
puts '-- Converting cells into unique fixed nestable elements.'
|
75
|
+
fixed_element_name_finder = FixedElementNameFinder.new
|
75
76
|
|
76
77
|
YAML.load_file(cells_config_file).each do |cell|
|
77
78
|
append_to_file Rails.root.join('config', 'alchemy', 'elements.yml') do
|
78
79
|
<<-CELL.strip_heredoc
|
79
80
|
|
80
|
-
- name: #{cell['name']}
|
81
|
+
- name: #{fixed_element_name_finder.call(cell['name'])}
|
81
82
|
fixed: true
|
82
83
|
unique: true
|
83
84
|
nestable_elements: [#{cell['elements'].join(', ')}]
|
@@ -128,8 +129,25 @@ module Alchemy::Upgrader::Tasks
|
|
128
129
|
puts "-- Update render_cell calls"
|
129
130
|
Dir.glob("#{alchemy_views_folder}/**/*").each do |view|
|
130
131
|
next if File.directory?(view)
|
131
|
-
|
132
|
-
|
132
|
+
# <%= render_cell 'test' %>
|
133
|
+
# <%= render_cell('test') %>
|
134
|
+
# <%= render_cell("test", options: true) %>
|
135
|
+
content = File.binread(view)
|
136
|
+
content.gsub!(/render_cell([\s(]+)(['":])(\w+)([^\w])(.*?)/) do
|
137
|
+
element_name = CellNameMigrator.call($3)
|
138
|
+
"render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}"
|
139
|
+
end
|
140
|
+
|
141
|
+
# <%= render_elements from_cell: 'page_intro' %>
|
142
|
+
# <%= render_elements testing: 'blubb', from_cell: :page_intro %>
|
143
|
+
# <%= render_elements from_cell: "page_intro", testing: 'blubb' %>
|
144
|
+
# <%= render_elements(from_cell: "page_intro", testing: 'blubb') %>
|
145
|
+
# <%= render_elements(testing: 'blubb', from_cell: "page_intro") %>
|
146
|
+
content.gsub!(/render_elements(.*?)from_cell[:\s=>]+([:'"])(\w+)(['"]?)(.*)/) do
|
147
|
+
element_name = CellNameMigrator.call($3)
|
148
|
+
"render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}"
|
149
|
+
end
|
150
|
+
File.open(view, "wb") { |file| file.write(content) }
|
133
151
|
end
|
134
152
|
end
|
135
153
|
|
@@ -11,10 +11,14 @@ module Alchemy::Upgrader::Tasks
|
|
11
11
|
puts "-- Update element views local variable to partial name"
|
12
12
|
Dir.glob("#{elements_view_folder}/*_view.*").each do |view|
|
13
13
|
variable_name = File.basename(view).gsub(/^_([\w-]*)\..*$/, '\1')
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
%w[
|
15
|
+
cache
|
16
|
+
render_essence_view_by_name
|
17
|
+
element_view_for
|
18
|
+
].each do |method_name|
|
19
|
+
gsub_file(view, /#{method_name}([\s(]+)element([^\w])/, "#{method_name}\\1#{variable_name}\\2")
|
20
|
+
end
|
21
|
+
gsub_file(view, /([\s(%={]+)element([^\w:"'])/, "\\1#{variable_name}\\2")
|
18
22
|
end
|
19
23
|
end
|
20
24
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Alchemy::Upgrader::Tasks
|
2
|
+
class FixedElementNameFinder
|
3
|
+
|
4
|
+
def call(cell_name)
|
5
|
+
return cell_name if fixed_elements.include?(cell_name)
|
6
|
+
return "#{cell_name}_elements" if unfixed_elements.include?(cell_name)
|
7
|
+
cell_name
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def fixed_elements
|
13
|
+
@_fixed_element_names ||= begin
|
14
|
+
definitions.select { |element| element['fixed'] }.map { |element| element['name'] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def unfixed_elements
|
19
|
+
@_unfixed_elements ||= begin
|
20
|
+
definitions.reject { |element| element['fixed'] }.map { |element| element['name'] }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def definitions
|
25
|
+
@_definitions ||= begin
|
26
|
+
elements_file_path = Rails.root.join('config', 'alchemy', 'elements.yml')
|
27
|
+
YAML.load_file(elements_file_path)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/alchemy/userstamp.rb
CHANGED
data/lib/alchemy/version.rb
CHANGED
@@ -60,15 +60,17 @@ namespace :alchemy do
|
|
60
60
|
def convert_to_nodes(children, node:)
|
61
61
|
children.each do |page|
|
62
62
|
has_children = page.children.any?
|
63
|
-
next unless page.visible || has_children
|
64
63
|
|
65
64
|
Alchemy::Deprecation.silence do
|
65
|
+
next unless page.visible || has_children
|
66
|
+
|
66
67
|
new_node = node.children.create!(
|
67
68
|
name: name_for_node(page),
|
68
69
|
page: page_for_node(page),
|
69
|
-
url: page.definition['redirects_to_external'] ? page.urlname : nil,
|
70
|
-
external: page.definition['redirects_to_external'] && Alchemy::Config.get(:open_external_links_in_new_tab),
|
71
|
-
language_id: page.language_id
|
70
|
+
url: !!page.definition['redirects_to_external'] ? page.urlname : nil,
|
71
|
+
external: !!page.definition['redirects_to_external'] && Alchemy::Config.get(:open_external_links_in_new_tab),
|
72
|
+
language_id: page.language_id,
|
73
|
+
site_id: page.language.site_id
|
72
74
|
)
|
73
75
|
print "."
|
74
76
|
if has_children
|
@@ -82,9 +84,8 @@ namespace :alchemy do
|
|
82
84
|
puts "\n- Converting #{menu_count} page #{'tree'.pluralize(menu_count)} into #{'menu'.pluralize(menu_count)}."
|
83
85
|
Alchemy::BaseRecord.transaction do
|
84
86
|
Alchemy::Language.all.each do |language|
|
85
|
-
|
86
|
-
|
87
|
-
root_node = Alchemy::Node.create(language: language, name: menu_name)
|
87
|
+
menu_name = 'main_menu'
|
88
|
+
root_node = Alchemy::Node.create(language: language, name: menu_name, site: language.site, external: false)
|
88
89
|
language.pages.language_roots.each do |root_page|
|
89
90
|
convert_to_nodes(root_page.children, node: root_node)
|
90
91
|
end
|
@@ -143,7 +143,11 @@ namespace :alchemy do
|
|
143
143
|
desc "Upgrade Alchemy to v4.6"
|
144
144
|
task "4.6" => [
|
145
145
|
"alchemy:upgrade:prepare",
|
146
|
-
|
146
|
+
"alchemy:upgrade:4.6:run",
|
147
|
+
"alchemy:upgrade:4.6:todo",
|
148
|
+
] do
|
149
|
+
Alchemy::Upgrader.display_todos
|
150
|
+
end
|
147
151
|
|
148
152
|
namespace "4.6" do
|
149
153
|
task run: []
|
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: 4.6.
|
4
|
+
version: 4.6.5
|
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-11-17 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: active_model_serializers
|
@@ -1110,6 +1110,7 @@ files:
|
|
1110
1110
|
- lib/alchemy/upgrader/tasks/cells_upgrader.rb
|
1111
1111
|
- lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb
|
1112
1112
|
- lib/alchemy/upgrader/tasks/element_views_updater.rb
|
1113
|
+
- lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb
|
1113
1114
|
- lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb
|
1114
1115
|
- lib/alchemy/upgrader/tasks/picture_gallery_migration.rb
|
1115
1116
|
- lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb
|
@@ -1244,8 +1245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1244
1245
|
version: '0'
|
1245
1246
|
requirements:
|
1246
1247
|
- ImageMagick (libmagick), v6.6 or greater.
|
1247
|
-
rubygems_version: 3.
|
1248
|
-
signing_key:
|
1248
|
+
rubygems_version: 3.1.6
|
1249
|
+
signing_key:
|
1249
1250
|
specification_version: 4
|
1250
1251
|
summary: A powerful, userfriendly and flexible CMS for Rails 5
|
1251
1252
|
test_files: []
|