alchemy_cms 6.1.5 → 6.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/Rakefile +1 -1
- data/app/controllers/alchemy/api/pages_controller.rb +0 -2
- data/app/models/alchemy/element.rb +1 -0
- data/lib/alchemy/permissions.rb +4 -4
- data/lib/alchemy/tasks/usage.rb +33 -0
- data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +20 -21
- data/lib/alchemy/version.rb +1 -1
- data/lib/generators/alchemy/install/files/babel.config.js +64 -0
- data/lib/generators/alchemy/install/install_generator.rb +12 -0
- data/lib/tasks/alchemy/usage.rake +40 -0
- data/package.json +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c206131e66f00492aae9a12eb8529e2eea17003d80ce3e5180d11c582ba792be
|
4
|
+
data.tar.gz: 92758271855a8dc77a9a280c19f7f68a15379642e96224508b0b47f977ebc0eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5276f7cd7996f2df21360bc33fe37daa1b3752d45379c784a0713f76406eea4a4de439a26468eec3f5f57462ba6af07b3fbf380021c53dc3bf29e9991bb1f531
|
7
|
+
data.tar.gz: f4c3965d47c54c7035531de68c7ae05ac69bb11cb5f402ba00b1716cb59d90cb03bbb29d22efc926b01968e71aeaaf5e802de4f444ca378baed11464f9538c42
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 6.1.7 (2023-07-07)
|
4
|
+
|
5
|
+
- [6.1] Add task(s) to visualize element and page usage [#2514](https://github.com/AlchemyCMS/alchemy_cms/pull/2514) ([tvdeyen](https://github.com/tvdeyen))
|
6
|
+
|
7
|
+
## 6.1.6 (2023-06-30)
|
8
|
+
|
9
|
+
- [6.1] Allow to create element with warning in definition [#2508](https://github.com/AlchemyCMS/alchemy_cms/pull/2508) ([tvdeyen](https://github.com/tvdeyen))
|
10
|
+
- [6.1] Allow authors to link to all pages again [#2505](https://github.com/AlchemyCMS/alchemy_cms/pull/2505) ([tvdeyen](https://github.com/tvdeyen))
|
11
|
+
- install generator: Add option to force patched babel config [#2495](https://github.com/AlchemyCMS/alchemy_cms/pull/2495) ([tvdeyen](https://github.com/tvdeyen))
|
12
|
+
- Remove memory leak in ingredients migrator [#2493](https://github.com/AlchemyCMS/alchemy_cms/pull/2493) ([tvdeyen](https://github.com/tvdeyen))
|
13
|
+
|
3
14
|
## 6.1.5 (2023-05-26)
|
4
15
|
|
5
16
|
- [6.1] Fix page seeder [#2482](https://github.com/AlchemyCMS/alchemy_cms/pull/2482) ([tvdeyen](https://github.com/tvdeyen))
|
data/Rakefile
CHANGED
@@ -48,7 +48,7 @@ namespace :alchemy do
|
|
48
48
|
bin/rake db:create && \
|
49
49
|
bin/rake db:environment:set && \
|
50
50
|
bin/rake db:migrate:reset && \
|
51
|
-
bin/rails g alchemy:install --skip --skip-demo-files --auto-accept --skip-db-create && \
|
51
|
+
bin/rails g alchemy:install --skip --skip-demo-files --auto-accept --skip-db-create --force-babel-config && \
|
52
52
|
yarn link @alchemy_cms/admin && \
|
53
53
|
RAILS_ENV=test bin/webpack && \
|
54
54
|
cd -
|
@@ -8,9 +8,7 @@ module Alchemy
|
|
8
8
|
# Returns all pages as json object
|
9
9
|
#
|
10
10
|
def index
|
11
|
-
language = Alchemy::Language.find_by(id: params[:language_id]) || Alchemy::Language.current
|
12
11
|
@pages = Alchemy::Page.accessible_by(current_ability, :index)
|
13
|
-
@pages = @pages.where(language: language)
|
14
12
|
@pages = @pages.includes(*page_includes)
|
15
13
|
@pages = @pages.ransack(params[:q]).result
|
16
14
|
|
data/lib/alchemy/permissions.rb
CHANGED
@@ -45,8 +45,8 @@ module Alchemy
|
|
45
45
|
e.public? && !e.restricted?
|
46
46
|
end
|
47
47
|
|
48
|
-
can :read, Alchemy::Page, Alchemy::Page.published.not_restricted do |p|
|
49
|
-
p.public? && !p.restricted?
|
48
|
+
can :read, Alchemy::Page, Alchemy::Page.published.not_restricted.from_current_site do |p|
|
49
|
+
p.public? && !p.restricted? && p.site == Alchemy::Site.current
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -72,8 +72,8 @@ module Alchemy
|
|
72
72
|
e.public?
|
73
73
|
end
|
74
74
|
|
75
|
-
can :read, Alchemy::Page, Alchemy::Page.published do |p|
|
76
|
-
p.public?
|
75
|
+
can :read, Alchemy::Page, Alchemy::Page.published.from_current_site do |p|
|
76
|
+
p.public? && p.site == Alchemy::Site.current
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Alchemy
|
4
|
+
module Tasks
|
5
|
+
module Usage
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def elements_count_by_name
|
9
|
+
res = Alchemy::Element.all
|
10
|
+
.select("name, COUNT(*) AS count")
|
11
|
+
.group(:name)
|
12
|
+
.order("count DESC, name ASC")
|
13
|
+
.map { |e| {"name" => e.name, "count" => e.count} }
|
14
|
+
Alchemy::Element.definitions.reject { |definition| res.map { |e| e["name"] }.include? definition["name"] }.sort_by { |d| d["name"] }.each do |definition|
|
15
|
+
res << {"name" => definition["name"], "count" => 0}
|
16
|
+
end
|
17
|
+
res
|
18
|
+
end
|
19
|
+
|
20
|
+
def pages_count_by_type
|
21
|
+
res = Alchemy::Page.all
|
22
|
+
.select("page_layout, COUNT(*) AS count")
|
23
|
+
.group(:page_layout)
|
24
|
+
.order("count DESC, page_layout ASC")
|
25
|
+
.map { |p| {"page_layout" => p.page_layout, "count" => p.count} }
|
26
|
+
Alchemy::PageLayout.all.reject { |page_layout| res.map { |p| p["page_layout"] }.include? page_layout["name"] }.sort_by { |d| d["name"] }.each do |page_layout|
|
27
|
+
res << {"page_layout" => page_layout["name"], "count" => 0}
|
28
|
+
end
|
29
|
+
res
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -8,28 +8,27 @@ module Alchemy::Upgrader::Tasks
|
|
8
8
|
|
9
9
|
no_tasks do
|
10
10
|
def create_ingredients(verbose: !Rails.env.test?)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
11
|
+
Rails.logger.silence do
|
12
|
+
Alchemy::Deprecation.silence do
|
13
|
+
elements_with_ingredients = Alchemy::ElementDefinition.all.select { |d| d.key?(:ingredients) }
|
14
|
+
if ENV["ONLY"]
|
15
|
+
elements_with_ingredients = elements_with_ingredients.select { |d| d[:name].in? ENV["ONLY"].split(",") }
|
16
|
+
end
|
17
|
+
elements_with_ingredients.each do |element_definition|
|
18
|
+
elements = Alchemy::Element
|
19
|
+
.named(element_definition[:name])
|
20
|
+
.left_outer_joins(:ingredients).where(alchemy_ingredients: { id: nil })
|
21
|
+
count = elements.count
|
22
|
+
if count.positive?
|
23
|
+
puts "-- Creating ingredients for #{elements.count} #{element_definition[:name]}(s)" if verbose
|
24
|
+
elements.preload(contents: :essence).find_each.with_index(1) do |element, index|
|
25
|
+
MigrateElementIngredients.call(element)
|
26
|
+
puts "\e[H\e[2J #{index}/#{count}" if verbose
|
27
|
+
end
|
28
|
+
puts "\n" if verbose
|
29
|
+
elsif verbose
|
30
|
+
puts "-- No #{element_definition[:name]} elements found for migration."
|
29
31
|
end
|
30
|
-
puts "\n" if verbose
|
31
|
-
elsif verbose
|
32
|
-
puts "-- No #{element_definition[:name]} elements found for migration."
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
data/lib/alchemy/version.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
module.exports = function (api) {
|
2
|
+
var validEnv = ["development", "test", "production"]
|
3
|
+
var currentEnv = api.env()
|
4
|
+
var isDevelopmentEnv = api.env("development")
|
5
|
+
var isProductionEnv = api.env("production")
|
6
|
+
var isTestEnv = api.env("test")
|
7
|
+
|
8
|
+
if (!validEnv.includes(currentEnv)) {
|
9
|
+
throw new Error(
|
10
|
+
"Please specify a valid `NODE_ENV` or " +
|
11
|
+
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
12
|
+
'"test", and "production". Instead, received: ' +
|
13
|
+
JSON.stringify(currentEnv) +
|
14
|
+
"."
|
15
|
+
)
|
16
|
+
}
|
17
|
+
|
18
|
+
return {
|
19
|
+
presets: [
|
20
|
+
isTestEnv && [
|
21
|
+
"@babel/preset-env",
|
22
|
+
{
|
23
|
+
targets: {
|
24
|
+
node: "current"
|
25
|
+
}
|
26
|
+
}
|
27
|
+
],
|
28
|
+
(isProductionEnv || isDevelopmentEnv) && [
|
29
|
+
"@babel/preset-env",
|
30
|
+
{
|
31
|
+
forceAllTransforms: true,
|
32
|
+
useBuiltIns: "entry",
|
33
|
+
corejs: 3,
|
34
|
+
modules: false,
|
35
|
+
exclude: ["transform-typeof-symbol"]
|
36
|
+
}
|
37
|
+
]
|
38
|
+
].filter(Boolean),
|
39
|
+
plugins: [
|
40
|
+
"babel-plugin-macros",
|
41
|
+
"@babel/plugin-syntax-dynamic-import",
|
42
|
+
isTestEnv && "babel-plugin-dynamic-import-node",
|
43
|
+
"@babel/plugin-transform-destructuring",
|
44
|
+
[
|
45
|
+
"@babel/plugin-proposal-object-rest-spread",
|
46
|
+
{
|
47
|
+
useBuiltIns: true
|
48
|
+
}
|
49
|
+
],
|
50
|
+
[
|
51
|
+
"@babel/plugin-transform-runtime",
|
52
|
+
{
|
53
|
+
helpers: false
|
54
|
+
}
|
55
|
+
],
|
56
|
+
[
|
57
|
+
"@babel/plugin-transform-regenerator",
|
58
|
+
{
|
59
|
+
async: false
|
60
|
+
}
|
61
|
+
]
|
62
|
+
].filter(Boolean)
|
63
|
+
}
|
64
|
+
}
|
@@ -23,6 +23,11 @@ module Alchemy
|
|
23
23
|
default: false,
|
24
24
|
desc: "Skip running the webpacker installer."
|
25
25
|
|
26
|
+
class_option :force_babel_config,
|
27
|
+
type: :boolean,
|
28
|
+
default: false,
|
29
|
+
desc: "Force installing a patched babel config."
|
30
|
+
|
26
31
|
class_option :skip_db_create,
|
27
32
|
type: :boolean,
|
28
33
|
default: false,
|
@@ -113,6 +118,13 @@ module Alchemy
|
|
113
118
|
end
|
114
119
|
end
|
115
120
|
|
121
|
+
# We need to force the babel.config.js file, because webpacker has an invalid one
|
122
|
+
def copy_babel_config
|
123
|
+
if options[:force_babel_config]
|
124
|
+
copy_file "babel.config.js", app_root.join("babel.config.js"), force: true
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
116
128
|
def add_npm_package
|
117
129
|
run "yarn add @alchemy_cms/admin@~#{Alchemy.version}"
|
118
130
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "alchemy/tasks/usage"
|
2
|
+
|
3
|
+
namespace :alchemy do
|
4
|
+
desc "List Alchemy elements and pages usage"
|
5
|
+
task usage: [:page_usage, :element_usage]
|
6
|
+
|
7
|
+
desc "List Alchemy elements usage"
|
8
|
+
task page_usage: :environment do
|
9
|
+
include ActionView::Helpers::NumberHelper
|
10
|
+
puts "\n Alchemy pages usage"
|
11
|
+
results = Alchemy::Tasks::Usage.pages_count_by_type
|
12
|
+
if results.any?
|
13
|
+
puts " ----------------------"
|
14
|
+
puts "\n"
|
15
|
+
results.each do |row|
|
16
|
+
puts " #{number_with_delimiter(row["count"])} 𝗑 #{row["page_layout"]}"
|
17
|
+
end
|
18
|
+
puts "\n = #{number_with_delimiter(Alchemy::Page.count)} pages in total."
|
19
|
+
else
|
20
|
+
puts " > No pages found!"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "List Alchemy elements usage"
|
25
|
+
task element_usage: :environment do
|
26
|
+
include ActionView::Helpers::NumberHelper
|
27
|
+
puts "\n Alchemy elements usage"
|
28
|
+
results = Alchemy::Tasks::Usage.elements_count_by_name
|
29
|
+
if results.any?
|
30
|
+
puts " ----------------------"
|
31
|
+
puts "\n"
|
32
|
+
results.each do |row|
|
33
|
+
puts " #{number_with_delimiter(row["count"])} 𝗑 #{row["name"]}"
|
34
|
+
end
|
35
|
+
puts "\n = #{number_with_delimiter(Alchemy::Element.count)} elements in total."
|
36
|
+
else
|
37
|
+
puts " > No elements found!"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
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: 6.1.
|
4
|
+
version: 6.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2023-
|
16
|
+
date: 2023-07-07 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: actionmailer
|
@@ -1333,6 +1333,7 @@ files:
|
|
1333
1333
|
- lib/alchemy/shell.rb
|
1334
1334
|
- lib/alchemy/taggable.rb
|
1335
1335
|
- lib/alchemy/tasks/tidy.rb
|
1336
|
+
- lib/alchemy/tasks/usage.rb
|
1336
1337
|
- lib/alchemy/test_support.rb
|
1337
1338
|
- lib/alchemy/test_support/config_stubbing.rb
|
1338
1339
|
- lib/alchemy/test_support/essence_shared_examples.rb
|
@@ -1393,6 +1394,7 @@ files:
|
|
1393
1394
|
- lib/generators/alchemy/install/files/all.js
|
1394
1395
|
- lib/generators/alchemy/install/files/application.html.erb
|
1395
1396
|
- lib/generators/alchemy/install/files/article.scss
|
1397
|
+
- lib/generators/alchemy/install/files/babel.config.js
|
1396
1398
|
- lib/generators/alchemy/install/install_generator.rb
|
1397
1399
|
- lib/generators/alchemy/install/templates/dragonfly.rb.tt
|
1398
1400
|
- lib/generators/alchemy/install/templates/elements.yml.tt
|
@@ -1424,6 +1426,7 @@ files:
|
|
1424
1426
|
- lib/tasks/alchemy/thumbnails.rake
|
1425
1427
|
- lib/tasks/alchemy/tidy.rake
|
1426
1428
|
- lib/tasks/alchemy/upgrade.rake
|
1429
|
+
- lib/tasks/alchemy/usage.rake
|
1427
1430
|
- package.json
|
1428
1431
|
- package/admin.js
|
1429
1432
|
- package/src/__tests__/i18n.spec.js
|
@@ -1525,7 +1528,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1525
1528
|
version: '0'
|
1526
1529
|
requirements:
|
1527
1530
|
- ImageMagick (libmagick), v6.6 or greater.
|
1528
|
-
rubygems_version: 3.4.
|
1531
|
+
rubygems_version: 3.4.15
|
1529
1532
|
signing_key:
|
1530
1533
|
specification_version: 4
|
1531
1534
|
summary: A powerful, userfriendly and flexible CMS for Rails
|