alchemy_cms 4.5.0 → 4.5.1
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 +13 -4
- data/CHANGELOG.md +8 -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.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
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f640cf9df17528d45476a6edb303f9d4d3fadc0e78f6bb8bbbe0a0b79f57059
|
4
|
+
data.tar.gz: '09d6e935c44b7fede23439298f68ee9055118bd6b0a645a2294ad05161271a8e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9975ccf31bd9e74791149c2426e6dbf350d6cb4df000018bcba509f9bed88c23808e8fc0a2f690bfcb791c550384fd3d18c9f1f73b3a08115b5251efae2a3559
|
7
|
+
data.tar.gz: a315453502650bbddf31e4c60cf1ff1abf7797b2ed9a8d12a502cfc02e91bb2fde457ede616769a06ce9f2cc805a6ad5bc252bc90003a5894daa1a9c0d95f252
|
data/.github/workflows/ci.yml
CHANGED
@@ -19,9 +19,9 @@ jobs:
|
|
19
19
|
- postgresql
|
20
20
|
env:
|
21
21
|
DB: ${{ matrix.database }}
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
DB_USER: alchemy_user
|
23
|
+
DB_PASSWORD: password
|
24
|
+
DB_HOST: '127.0.0.1'
|
25
25
|
RAILS_ENV: test
|
26
26
|
RAILS_VERSION: ${{ matrix.rails }}
|
27
27
|
CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
|
@@ -29,11 +29,20 @@ jobs:
|
|
29
29
|
postgres:
|
30
30
|
image: postgres:11
|
31
31
|
env:
|
32
|
-
POSTGRES_USER:
|
32
|
+
POSTGRES_USER: alchemy_user
|
33
33
|
POSTGRES_PASSWORD: password
|
34
34
|
POSTGRES_DB: alchemy_cms_dummy_test
|
35
35
|
ports: ['5432:5432']
|
36
36
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
37
|
+
mysql:
|
38
|
+
image: mysql:latest
|
39
|
+
ports: ['3306:3306']
|
40
|
+
env:
|
41
|
+
MYSQL_USER: alchemy_user
|
42
|
+
MYSQL_PASSWORD: password
|
43
|
+
MYSQL_DATABASE: alchemy_cms_dummy_test
|
44
|
+
MYSQL_ROOT_PASSWORD: password
|
45
|
+
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
|
37
46
|
steps:
|
38
47
|
- uses: actions/checkout@v1
|
39
48
|
- name: Set up Ruby
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
## 5.
|
1
|
+
## 4.5.1 (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
|
+
- Use symbols in polymorphic routes for resources ([tvdeyen](https://github.com/tvdeyen))
|
6
|
+
- make the fixed element upgrader more robust ([darkswoop](https://github.com/darkswoop))
|
7
|
+
- don't use existing element names when migrating from cells ([darkswoop](https://github.com/darkswoop))
|
8
|
+
- enhance regexp in partial name upgrader ([darkswoop](https://github.com/darkswoop))
|
2
9
|
|
3
10
|
## 4.5.0 (2020-03-30)
|
4
11
|
|
@@ -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
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.5.
|
4
|
+
version: 4.5.1
|
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
|
@@ -1107,6 +1107,7 @@ files:
|
|
1107
1107
|
- lib/alchemy/upgrader/tasks/cells_upgrader.rb
|
1108
1108
|
- lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb
|
1109
1109
|
- lib/alchemy/upgrader/tasks/element_views_updater.rb
|
1110
|
+
- lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb
|
1110
1111
|
- lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb
|
1111
1112
|
- lib/alchemy/upgrader/tasks/picture_gallery_migration.rb
|
1112
1113
|
- lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb
|
@@ -1241,8 +1242,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1241
1242
|
version: '0'
|
1242
1243
|
requirements:
|
1243
1244
|
- ImageMagick (libmagick), v6.6 or greater.
|
1244
|
-
rubygems_version: 3.
|
1245
|
-
signing_key:
|
1245
|
+
rubygems_version: 3.1.6
|
1246
|
+
signing_key:
|
1246
1247
|
specification_version: 4
|
1247
1248
|
summary: A powerful, userfriendly and flexible CMS for Rails 5
|
1248
1249
|
test_files: []
|
1250
|
+
...
|