alchemy_cms 7.0.0.pre.b → 7.0.0.pre.rc1
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/lint.yml +21 -1
- data/.github/workflows/{ci.yml → test.yml} +1 -1
- data/.gitignore +0 -5
- data/CHANGELOG.md +7 -0
- data/Gemfile +0 -1
- data/README.md +3 -3
- data/Rakefile +0 -19
- data/alchemy_cms.gemspec +2 -1
- data/app/assets/config/alchemy_manifest.js +1 -0
- data/app/assets/javascripts/alchemy/admin.js +0 -2
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -21
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +5 -12
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +1 -6
- data/app/assets/stylesheets/alchemy/base.scss +2 -2
- data/app/controllers/alchemy/api/pages_controller.rb +0 -2
- data/app/controllers/alchemy/base_controller.rb +0 -7
- data/{package/src → app/javascript/alchemy_admin}/node_tree.js +2 -2
- data/{package/src → app/javascript/alchemy_admin}/page_publication_fields.js +1 -1
- data/{package/src → app/javascript/alchemy_admin}/page_sorter.js +1 -1
- data/{package/src → app/javascript/alchemy_admin}/picture_editors.js +2 -2
- data/{package/src → app/javascript/alchemy_admin}/sitemap.js +4 -4
- data/app/javascript/alchemy_admin.js +34 -0
- data/app/models/alchemy/element.rb +5 -4
- data/app/views/alchemy/_menubar.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/_replace_button.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/destroy.js.erb +1 -1
- data/app/views/alchemy/admin/nodes/index.html.erb +4 -2
- data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +1 -1
- data/app/views/alchemy/admin/pages/edit.html.erb +3 -4
- data/app/views/alchemy/admin/pages/index.html.erb +1 -1
- data/app/views/alchemy/admin/pages/update.js.erb +2 -2
- data/app/views/alchemy/admin/resources/_filter_bar.html.erb +1 -1
- data/app/views/alchemy/admin/styleguide/index.html.erb +1 -1
- data/app/views/alchemy/admin/uploader/_button.html.erb +1 -1
- data/app/views/alchemy/base/permission_denied.js.erb +1 -1
- data/app/views/alchemy/base/redirect.js.erb +1 -1
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +0 -1
- data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +0 -1
- data/app/views/layouts/alchemy/admin.html.erb +4 -8
- data/bin/importmap +4 -0
- data/bin/setup +0 -9
- data/bin/start +1 -1
- data/config/brakeman.ignore +0 -46
- data/config/importmap.rb +8 -0
- data/lib/alchemy/engine.rb +14 -0
- data/lib/alchemy/permissions.rb +4 -4
- data/lib/alchemy/upgrader/seven_point_zero.rb +13 -23
- data/lib/alchemy/upgrader.rb +0 -11
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy.rb +5 -0
- data/lib/alchemy_cms.rb +2 -1
- data/lib/generators/alchemy/install/files/application.html.erb +2 -2
- data/lib/generators/alchemy/install/install_generator.rb +0 -24
- data/lib/tasks/alchemy/upgrade.rake +6 -12
- data/package.json +6 -26
- metadata +44 -29
- data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +0 -22
- data/app/assets/javascripts/alchemy/alchemy.html5.js +0 -22
- data/package/admin.js +0 -34
- data/package/dist/admin.js +0 -16
- data/package/dist/admin.js.map +0 -7
- data/package/src/__tests__/i18n.spec.js +0 -93
- data/package/src/utils/__tests__/ajax.spec.js +0 -168
- data/package/src/utils/__tests__/events.spec.js +0 -38
- /data/{package/src → app/javascript/alchemy_admin}/datepicker.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/file_editors.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/i18n.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/image_cropper.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/image_loader.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/ingredient_anchor_link.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/tinymce.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/translations.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/utils/ajax.js +0 -0
- /data/{package/src → app/javascript/alchemy_admin}/utils/events.js +0 -0
data/bin/setup
CHANGED
|
@@ -12,23 +12,14 @@ def system!(*args)
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
FileUtils.chdir GEM_ROOT do
|
|
15
|
-
puts "\n== Linking Admin JS package =="
|
|
16
|
-
system! "yarn link"
|
|
17
|
-
puts "== Installing dependencies =="
|
|
18
|
-
system! "yarn install"
|
|
19
15
|
system! "gem install bundler --conservative"
|
|
20
16
|
system("bundle check") || system!("bundle install")
|
|
21
17
|
end
|
|
22
18
|
|
|
23
19
|
FileUtils.chdir APP_ROOT do
|
|
24
20
|
puts "\n== Installing Alchemy into dummy app =="
|
|
25
|
-
system!("bin/rails javascript:install:esbuild")
|
|
26
21
|
system!("bin/rails g alchemy:install --skip --skip-demo-files --auto-accept")
|
|
27
22
|
|
|
28
|
-
puts "\n== Link Alchemy admin package =="
|
|
29
|
-
system! "yarn link @alchemy_cms/admin"
|
|
30
|
-
system! "yarn install"
|
|
31
|
-
|
|
32
23
|
puts "\n== Removing old logs and tempfiles =="
|
|
33
24
|
system! "bin/rails log:clear tmp:clear"
|
|
34
25
|
end
|
data/bin/start
CHANGED
data/config/brakeman.ignore
CHANGED
|
@@ -80,29 +80,6 @@
|
|
|
80
80
|
],
|
|
81
81
|
"note": ""
|
|
82
82
|
},
|
|
83
|
-
{
|
|
84
|
-
"warning_type": "Command Injection",
|
|
85
|
-
"warning_code": 14,
|
|
86
|
-
"fingerprint": "6addfcb9d23d2d6f699f2f3542169744ff749dc4d0a97f8ac783ab92593e1d84",
|
|
87
|
-
"check_name": "Execute",
|
|
88
|
-
"message": "Possible command injection",
|
|
89
|
-
"file": "lib/alchemy/upgrader.rb",
|
|
90
|
-
"line": 33,
|
|
91
|
-
"link": "https://brakemanscanner.org/docs/warning_types/command_injection/",
|
|
92
|
-
"code": "`yarn add @alchemy_cms/admin@~#{Alchemy.version}`",
|
|
93
|
-
"render_path": null,
|
|
94
|
-
"location": {
|
|
95
|
-
"type": "method",
|
|
96
|
-
"class": "Alchemy::Upgrader",
|
|
97
|
-
"method": "update_npm_package"
|
|
98
|
-
},
|
|
99
|
-
"user_input": "Alchemy.version",
|
|
100
|
-
"confidence": "Medium",
|
|
101
|
-
"cwe_id": [
|
|
102
|
-
77
|
|
103
|
-
],
|
|
104
|
-
"note": "The alchemy version is safe"
|
|
105
|
-
},
|
|
106
83
|
{
|
|
107
84
|
"warning_type": "Cross-Site Scripting",
|
|
108
85
|
"warning_code": 4,
|
|
@@ -227,29 +204,6 @@
|
|
|
227
204
|
],
|
|
228
205
|
"note": ""
|
|
229
206
|
},
|
|
230
|
-
{
|
|
231
|
-
"warning_type": "Command Injection",
|
|
232
|
-
"warning_code": 14,
|
|
233
|
-
"fingerprint": "98ca8e77026312eaa7eec15ce26bfe45aa8dd0fcd38e4cff104cb9dffbde1733",
|
|
234
|
-
"check_name": "Execute",
|
|
235
|
-
"message": "Possible command injection",
|
|
236
|
-
"file": "lib/alchemy/upgrader.rb",
|
|
237
|
-
"line": 31,
|
|
238
|
-
"link": "https://brakemanscanner.org/docs/warning_types/command_injection/",
|
|
239
|
-
"code": "`bin/importmap pin @alchemy_cms/admin@~#{Alchemy.version}`",
|
|
240
|
-
"render_path": null,
|
|
241
|
-
"location": {
|
|
242
|
-
"type": "method",
|
|
243
|
-
"class": "Alchemy::Upgrader",
|
|
244
|
-
"method": "update_npm_package"
|
|
245
|
-
},
|
|
246
|
-
"user_input": "Alchemy.version",
|
|
247
|
-
"confidence": "Medium",
|
|
248
|
-
"cwe_id": [
|
|
249
|
-
77
|
|
250
|
-
],
|
|
251
|
-
"note": ""
|
|
252
|
-
},
|
|
253
207
|
{
|
|
254
208
|
"warning_type": "File Access",
|
|
255
209
|
"warning_code": 16,
|
data/config/importmap.rb
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
pin "flatpickr", to: "https://ga.jspm.io/npm:flatpickr@4.6.13/dist/esm/index.js", preload: true
|
|
2
|
+
pin "lodash-es/debounce", to: "https://ga.jspm.io/npm:lodash-es@4.17.21/debounce.js", preload: true
|
|
3
|
+
pin "lodash-es/max", to: "https://ga.jspm.io/npm:lodash-es@4.17.21/max.js", preload: true
|
|
4
|
+
pin "sortablejs", to: "https://ga.jspm.io/npm:sortablejs@1.15.0/modular/sortable.esm.js", preload: true
|
|
5
|
+
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
|
|
6
|
+
|
|
7
|
+
pin "alchemy_admin", to: "alchemy_admin.js", preload: true
|
|
8
|
+
pin_all_from File.expand_path("../app/javascript/alchemy_admin", __dir__), under: "alchemy_admin"
|
data/lib/alchemy/engine.rb
CHANGED
|
@@ -20,6 +20,20 @@ module Alchemy
|
|
|
20
20
|
NonStupidDigestAssets.whitelist += [/^tinymce\//]
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
initializer "alchemy.importmap" do |app|
|
|
24
|
+
Alchemy.importmap.draw(Engine.root.join("config", "importmap.rb"))
|
|
25
|
+
|
|
26
|
+
package_path = Engine.root.join("app/javascript")
|
|
27
|
+
app.config.assets.paths << package_path
|
|
28
|
+
|
|
29
|
+
if app.config.importmap.sweep_cache
|
|
30
|
+
Alchemy.importmap.cache_sweeper(watches: package_path)
|
|
31
|
+
ActiveSupport.on_load(:action_controller_base) do
|
|
32
|
+
before_action { Alchemy.importmap.cache_sweeper.execute_if_updated }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
23
37
|
# Gutentag downcases all tags before save
|
|
24
38
|
# and Gutentag validations are not case sensitive.
|
|
25
39
|
# But we support having tags with uppercase characters.
|
data/lib/alchemy/permissions.rb
CHANGED
|
@@ -41,8 +41,8 @@ module Alchemy
|
|
|
41
41
|
e.public? && !e.restricted?
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
can :read, Alchemy::Page, Alchemy::Page.published.not_restricted do |p|
|
|
45
|
-
p.public? && !p.restricted?
|
|
44
|
+
can :read, Alchemy::Page, Alchemy::Page.published.not_restricted.from_current_site do |p|
|
|
45
|
+
p.public? && !p.restricted? && p.site == Alchemy::Site.current
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -64,8 +64,8 @@ module Alchemy
|
|
|
64
64
|
e.public?
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
can :read, Alchemy::Page, Alchemy::Page.published do |p|
|
|
68
|
-
p.public?
|
|
67
|
+
can :read, Alchemy::Page, Alchemy::Page.published.from_current_site do |p|
|
|
68
|
+
p.public? && p.site == Alchemy::Site.current
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
end
|
|
@@ -8,30 +8,20 @@ module Alchemy
|
|
|
8
8
|
include Thor::Actions
|
|
9
9
|
|
|
10
10
|
class << self
|
|
11
|
-
def
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
if File.exist? "config/importmap.rb"
|
|
21
|
-
# We want the bundled package if using importmaps
|
|
22
|
-
task.gsub_file "app/javascript/alchemy_admin.js", 'import "@alchemy_cms/admin"', 'import "@alchemy_cms/dist/admin"'
|
|
23
|
-
end
|
|
24
|
-
if task.ask("Do you want to remove webpacker now? (y/N)", default: "N") == "y"
|
|
11
|
+
def remove_admin_entrypoint
|
|
12
|
+
FileUtils.rm_rf "app/javascript/packs/alchemy/admin.js"
|
|
13
|
+
FileUtils.rm_rf "app/javascript/packs/alchemy_admin.js"
|
|
14
|
+
FileUtils.rm_rf "app/javascript/packs/alchemy"
|
|
15
|
+
FileUtils.rm_rf "app/javascript/packs/alchemy"
|
|
16
|
+
task.run "yarn remove @alchemy_cms/admin"
|
|
17
|
+
if task.ask("Do you want to remove webpacker as well? (y/N)", default: "N") == "y"
|
|
18
|
+
task.run "bundle remove webpacker"
|
|
25
19
|
task.run "yarn remove @rails/webpacker webpack webpack-cli webpack-dev-server"
|
|
26
|
-
FileUtils.
|
|
27
|
-
FileUtils.
|
|
28
|
-
FileUtils.
|
|
29
|
-
FileUtils.
|
|
30
|
-
FileUtils.
|
|
31
|
-
end
|
|
32
|
-
if task.ask("Do you want to add jsbundling-rails now? (Y/n)", default: "Y") == "Y"
|
|
33
|
-
task.run "bundle add jsbundling-rails"
|
|
34
|
-
task.run "bin/rails javascript:install:esbuild"
|
|
20
|
+
FileUtils.rm_rf "app/javascript/packs"
|
|
21
|
+
FileUtils.rm_rf "config/webpack"
|
|
22
|
+
FileUtils.rm_f "config/webpacker.yml"
|
|
23
|
+
FileUtils.rm_f "bin/webpack"
|
|
24
|
+
FileUtils.rm_f "bin/webpack-dev-server"
|
|
35
25
|
end
|
|
36
26
|
end
|
|
37
27
|
|
data/lib/alchemy/upgrader.rb
CHANGED
|
@@ -25,17 +25,6 @@ module Alchemy
|
|
|
25
25
|
todo "Check the default configuration file (./config/alchemy/config.yml.defaults) for new configuration options and insert them into your config file.", "Configuration has changed"
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
|
-
|
|
29
|
-
def update_npm_package
|
|
30
|
-
desc "Update npm package."
|
|
31
|
-
if File.exist? Rails.root.join("config/importmap.rb")
|
|
32
|
-
`bin/importmap pin @alchemy_cms/admin@~#{Alchemy.version}`
|
|
33
|
-
elsif File.exist? Rails.root.join("package.json")
|
|
34
|
-
`yarn add @alchemy_cms/admin@~#{Alchemy.version}`
|
|
35
|
-
else
|
|
36
|
-
log("Could not update alchemy admin package! Make sure you have a JS bundler installed", :warning)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
28
|
end
|
|
40
29
|
end
|
|
41
30
|
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "alchemy/admin/preview_url"
|
|
4
|
+
require "importmap-rails"
|
|
4
5
|
|
|
5
6
|
module Alchemy
|
|
6
7
|
YAML_PERMITTED_CLASSES = %w[Symbol Date Regexp]
|
|
@@ -78,4 +79,8 @@ module Alchemy
|
|
|
78
79
|
# Alchemy.enable_searchable = true
|
|
79
80
|
#
|
|
80
81
|
mattr_accessor :enable_searchable, default: false
|
|
82
|
+
|
|
83
|
+
# JS Importmap instance
|
|
84
|
+
singleton_class.attr_accessor :importmap
|
|
85
|
+
self.importmap = Importmap::Map.new
|
|
81
86
|
end
|
data/lib/alchemy_cms.rb
CHANGED
|
@@ -12,6 +12,7 @@ require "cancan"
|
|
|
12
12
|
require "dragonfly"
|
|
13
13
|
require "gutentag"
|
|
14
14
|
require "handlebars_assets"
|
|
15
|
+
require "importmap-rails"
|
|
15
16
|
require "jquery-rails"
|
|
16
17
|
require "jquery-ui-rails"
|
|
17
18
|
require "kaminari"
|
|
@@ -21,7 +22,7 @@ require "request_store"
|
|
|
21
22
|
require "responders"
|
|
22
23
|
require "sassc-rails"
|
|
23
24
|
require "simple_form"
|
|
24
|
-
require "
|
|
25
|
+
require "turbo-rails"
|
|
25
26
|
require "userstamp"
|
|
26
27
|
require "view_component"
|
|
27
28
|
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<%= csrf_meta_tags %>
|
|
6
6
|
<%= csp_meta_tag %>
|
|
7
7
|
|
|
8
|
-
<%= stylesheet_link_tag 'application', media: 'all', 'data-
|
|
9
|
-
<%= javascript_include_tag 'application', 'data-
|
|
8
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbo-track': 'reload' %>
|
|
9
|
+
<%= javascript_include_tag 'application', 'data-turbo-track': 'reload' %>
|
|
10
10
|
</head>
|
|
11
11
|
|
|
12
12
|
<body>
|
|
@@ -99,30 +99,6 @@ module Alchemy
|
|
|
99
99
|
rake "gutentag:install:migrations"
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
-
def add_npm_package
|
|
103
|
-
if File.exist? app_root.join("package.json")
|
|
104
|
-
run "yarn add @alchemy_cms/admin@~#{Alchemy.version}"
|
|
105
|
-
elsif File.exist? app_root.join("config/importmap.rb")
|
|
106
|
-
run "bin/importmap pin @alchemy_cms/admin@~#{Alchemy.version}"
|
|
107
|
-
else
|
|
108
|
-
log("Could not add alchemy admin package! Make sure you have a JS bundler installed", :warning)
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def copy_alchemy_entry_point
|
|
113
|
-
if Dir.exist? app_root.join("app/javascript")
|
|
114
|
-
if File.exist? app_root.join("config/importmap.rb")
|
|
115
|
-
# We want the bundled package if using importmaps
|
|
116
|
-
create_file app_root.join("app/javascript/alchemy_admin.js"), 'import "@alchemy_cms/dist/admin"'
|
|
117
|
-
else
|
|
118
|
-
# We want the normal package if using a bundler locally
|
|
119
|
-
create_file app_root.join("app/javascript/alchemy_admin.js"), 'import "@alchemy_cms/admin"'
|
|
120
|
-
end
|
|
121
|
-
else
|
|
122
|
-
log("Could not add alchemy admin entry point! Make sure you have a JS bundler installed", :warning)
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
102
|
def set_primary_language
|
|
127
103
|
header
|
|
128
104
|
install_tasks.set_primary_language(
|
|
@@ -16,8 +16,7 @@ namespace :alchemy do
|
|
|
16
16
|
desc "Alchemy Upgrader: Prepares the database and updates Alchemys configuration file."
|
|
17
17
|
task prepare: [
|
|
18
18
|
"alchemy:upgrade:database",
|
|
19
|
-
"alchemy:upgrade:config"
|
|
20
|
-
"alchemy:upgrade:package"
|
|
19
|
+
"alchemy:upgrade:config"
|
|
21
20
|
]
|
|
22
21
|
|
|
23
22
|
desc "Alchemy Upgrader: Prepares the database."
|
|
@@ -31,11 +30,6 @@ namespace :alchemy do
|
|
|
31
30
|
Alchemy::Upgrader.copy_new_config_file
|
|
32
31
|
end
|
|
33
32
|
|
|
34
|
-
desc "Alchemy Upgrader: Install new Node package."
|
|
35
|
-
task package: [:environment] do
|
|
36
|
-
Alchemy::Upgrader.update_npm_package
|
|
37
|
-
end
|
|
38
|
-
|
|
39
33
|
desc "Upgrade Alchemy to v7.0"
|
|
40
34
|
task "7.0" => [
|
|
41
35
|
"alchemy:upgrade:prepare",
|
|
@@ -46,13 +40,13 @@ namespace :alchemy do
|
|
|
46
40
|
|
|
47
41
|
namespace "7.0" do
|
|
48
42
|
task "run" => [
|
|
49
|
-
"alchemy:upgrade:7.0:
|
|
43
|
+
"alchemy:upgrade:7.0:remove_admin_entrypoint"
|
|
50
44
|
]
|
|
51
45
|
|
|
52
|
-
desc "
|
|
53
|
-
task
|
|
54
|
-
puts "
|
|
55
|
-
Alchemy::Upgrader::SevenPointZero.
|
|
46
|
+
desc "Remove alchemy admin entrypoint"
|
|
47
|
+
task remove_admin_entrypoint: [:environment] do
|
|
48
|
+
puts "removing npm_package..."
|
|
49
|
+
Alchemy::Upgrader::SevenPointZero.remove_admin_entrypoint
|
|
56
50
|
end
|
|
57
51
|
end
|
|
58
52
|
end
|
data/package.json
CHANGED
|
@@ -1,41 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"version": "7.0.0-b",
|
|
4
|
-
"description": "AlchemyCMS",
|
|
5
|
-
"browser": "package/dist/admin.js",
|
|
6
|
-
"files": [
|
|
7
|
-
"package/**/*"
|
|
8
|
-
],
|
|
9
|
-
"directories": {
|
|
10
|
-
"lib": "package"
|
|
11
|
-
},
|
|
2
|
+
"name": "alchemy_admin",
|
|
12
3
|
"scripts": {
|
|
13
4
|
"test": "jest",
|
|
14
|
-
"
|
|
15
|
-
},
|
|
16
|
-
"repository": {
|
|
17
|
-
"type": "git",
|
|
18
|
-
"url": "git+https://github.com/AlchemyCMS/alchemy_cms.git"
|
|
5
|
+
"lint": "prettier --check 'app/javascript/**/*.js'"
|
|
19
6
|
},
|
|
20
7
|
"keywords": [],
|
|
21
8
|
"author": "Thomas von Deyen",
|
|
22
9
|
"license": "BSD-3-Clause",
|
|
23
|
-
"bugs": {
|
|
24
|
-
"url": "https://github.com/AlchemyCMS/alchemy_cms/issues"
|
|
25
|
-
},
|
|
26
|
-
"homepage": "https://github.com/AlchemyCMS/alchemy_cms#readme",
|
|
27
|
-
"dependencies": {
|
|
28
|
-
"flatpickr": "^4.6.9",
|
|
29
|
-
"lodash-es": "^4.17.21",
|
|
30
|
-
"sortablejs": "^1.10.2"
|
|
31
|
-
},
|
|
32
10
|
"devDependencies": {
|
|
33
11
|
"@babel/core": "^7.9.6",
|
|
34
12
|
"@babel/preset-env": "^7.9.6",
|
|
35
13
|
"babel-jest": "^29.0.1",
|
|
36
|
-
"
|
|
14
|
+
"flatpickr": "^4.6.9",
|
|
37
15
|
"jest": "^25.2.7",
|
|
16
|
+
"lodash-es": "^4.17.21",
|
|
38
17
|
"prettier": "^2.0.2",
|
|
18
|
+
"sortablejs": "^1.10.2",
|
|
39
19
|
"xhr-mock": "^2.5.1"
|
|
40
20
|
},
|
|
41
21
|
"jest": {
|
|
@@ -43,7 +23,7 @@
|
|
|
43
23
|
"Alchemy": {}
|
|
44
24
|
},
|
|
45
25
|
"roots": [
|
|
46
|
-
"
|
|
26
|
+
"spec/javascript/alchemy_admin"
|
|
47
27
|
]
|
|
48
28
|
}
|
|
49
29
|
}
|
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: 7.0.0.pre.
|
|
4
|
+
version: 7.0.0.pre.rc1
|
|
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-06-
|
|
16
|
+
date: 2023-06-30 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: actionmailer
|
|
@@ -325,6 +325,26 @@ dependencies:
|
|
|
325
325
|
- - "~>"
|
|
326
326
|
- !ruby/object:Gem::Version
|
|
327
327
|
version: '0.23'
|
|
328
|
+
- !ruby/object:Gem::Dependency
|
|
329
|
+
name: importmap-rails
|
|
330
|
+
requirement: !ruby/object:Gem::Requirement
|
|
331
|
+
requirements:
|
|
332
|
+
- - "~>"
|
|
333
|
+
- !ruby/object:Gem::Version
|
|
334
|
+
version: '1.2'
|
|
335
|
+
- - ">="
|
|
336
|
+
- !ruby/object:Gem::Version
|
|
337
|
+
version: 1.2.1
|
|
338
|
+
type: :runtime
|
|
339
|
+
prerelease: false
|
|
340
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
341
|
+
requirements:
|
|
342
|
+
- - "~>"
|
|
343
|
+
- !ruby/object:Gem::Version
|
|
344
|
+
version: '1.2'
|
|
345
|
+
- - ">="
|
|
346
|
+
- !ruby/object:Gem::Version
|
|
347
|
+
version: 1.2.1
|
|
328
348
|
- !ruby/object:Gem::Dependency
|
|
329
349
|
name: jquery-rails
|
|
330
350
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -496,19 +516,19 @@ dependencies:
|
|
|
496
516
|
- !ruby/object:Gem::Version
|
|
497
517
|
version: '5'
|
|
498
518
|
- !ruby/object:Gem::Dependency
|
|
499
|
-
name:
|
|
519
|
+
name: turbo-rails
|
|
500
520
|
requirement: !ruby/object:Gem::Requirement
|
|
501
521
|
requirements:
|
|
502
522
|
- - ">="
|
|
503
523
|
- !ruby/object:Gem::Version
|
|
504
|
-
version: '
|
|
524
|
+
version: '1.4'
|
|
505
525
|
type: :runtime
|
|
506
526
|
prerelease: false
|
|
507
527
|
version_requirements: !ruby/object:Gem::Requirement
|
|
508
528
|
requirements:
|
|
509
529
|
- - ">="
|
|
510
530
|
- !ruby/object:Gem::Version
|
|
511
|
-
version: '
|
|
531
|
+
version: '1.4'
|
|
512
532
|
- !ruby/object:Gem::Dependency
|
|
513
533
|
name: view_component
|
|
514
534
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -705,9 +725,9 @@ files:
|
|
|
705
725
|
- ".github/ISSUE_TEMPLATE/Feature_request.md"
|
|
706
726
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
707
727
|
- ".github/workflows/brakeman-analysis.yml"
|
|
708
|
-
- ".github/workflows/ci.yml"
|
|
709
728
|
- ".github/workflows/lint.yml"
|
|
710
729
|
- ".github/workflows/stale.yml"
|
|
730
|
+
- ".github/workflows/test.yml"
|
|
711
731
|
- ".gitignore"
|
|
712
732
|
- ".hound.yml"
|
|
713
733
|
- ".localeapp/config.rb"
|
|
@@ -736,7 +756,6 @@ files:
|
|
|
736
756
|
- app/assets/javascripts/alchemy/admin.js
|
|
737
757
|
- app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee
|
|
738
758
|
- app/assets/javascripts/alchemy/alchemy.base.js.coffee
|
|
739
|
-
- app/assets/javascripts/alchemy/alchemy.browser.js.coffee
|
|
740
759
|
- app/assets/javascripts/alchemy/alchemy.buttons.js.coffee
|
|
741
760
|
- app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee
|
|
742
761
|
- app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee
|
|
@@ -750,7 +769,6 @@ files:
|
|
|
750
769
|
- app/assets/javascripts/alchemy/alchemy.growler.js.coffee
|
|
751
770
|
- app/assets/javascripts/alchemy/alchemy.gui.js.coffee
|
|
752
771
|
- app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee
|
|
753
|
-
- app/assets/javascripts/alchemy/alchemy.html5.js
|
|
754
772
|
- app/assets/javascripts/alchemy/alchemy.image_overlay.coffee
|
|
755
773
|
- app/assets/javascripts/alchemy/alchemy.initializer.js.coffee
|
|
756
774
|
- app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee
|
|
@@ -895,6 +913,22 @@ files:
|
|
|
895
913
|
- app/helpers/alchemy/elements_helper.rb
|
|
896
914
|
- app/helpers/alchemy/pages_helper.rb
|
|
897
915
|
- app/helpers/alchemy/url_helper.rb
|
|
916
|
+
- app/javascript/alchemy_admin.js
|
|
917
|
+
- app/javascript/alchemy_admin/datepicker.js
|
|
918
|
+
- app/javascript/alchemy_admin/file_editors.js
|
|
919
|
+
- app/javascript/alchemy_admin/i18n.js
|
|
920
|
+
- app/javascript/alchemy_admin/image_cropper.js
|
|
921
|
+
- app/javascript/alchemy_admin/image_loader.js
|
|
922
|
+
- app/javascript/alchemy_admin/ingredient_anchor_link.js
|
|
923
|
+
- app/javascript/alchemy_admin/node_tree.js
|
|
924
|
+
- app/javascript/alchemy_admin/page_publication_fields.js
|
|
925
|
+
- app/javascript/alchemy_admin/page_sorter.js
|
|
926
|
+
- app/javascript/alchemy_admin/picture_editors.js
|
|
927
|
+
- app/javascript/alchemy_admin/sitemap.js
|
|
928
|
+
- app/javascript/alchemy_admin/tinymce.js
|
|
929
|
+
- app/javascript/alchemy_admin/translations.js
|
|
930
|
+
- app/javascript/alchemy_admin/utils/ajax.js
|
|
931
|
+
- app/javascript/alchemy_admin/utils/events.js
|
|
898
932
|
- app/jobs/alchemy/base_job.rb
|
|
899
933
|
- app/jobs/alchemy/publish_page_job.rb
|
|
900
934
|
- app/mailers/alchemy/base_mailer.rb
|
|
@@ -1191,6 +1225,7 @@ files:
|
|
|
1191
1225
|
- app/views/layouts/alchemy/admin.html.erb
|
|
1192
1226
|
- app/views/layouts/alchemy/sitemap.xml.erb
|
|
1193
1227
|
- babel.config.js
|
|
1228
|
+
- bin/importmap
|
|
1194
1229
|
- bin/rails
|
|
1195
1230
|
- bin/rspec
|
|
1196
1231
|
- bin/setup
|
|
@@ -1198,6 +1233,7 @@ files:
|
|
|
1198
1233
|
- config/alchemy/config.yml
|
|
1199
1234
|
- config/alchemy/modules.yml
|
|
1200
1235
|
- config/brakeman.ignore
|
|
1236
|
+
- config/importmap.rb
|
|
1201
1237
|
- config/initializers/assets.rb
|
|
1202
1238
|
- config/initializers/dragonfly.rb
|
|
1203
1239
|
- config/initializers/mime_types.rb
|
|
@@ -1328,27 +1364,6 @@ files:
|
|
|
1328
1364
|
- lib/tasks/alchemy/tidy.rake
|
|
1329
1365
|
- lib/tasks/alchemy/upgrade.rake
|
|
1330
1366
|
- package.json
|
|
1331
|
-
- package/admin.js
|
|
1332
|
-
- package/dist/admin.js
|
|
1333
|
-
- package/dist/admin.js.map
|
|
1334
|
-
- package/src/__tests__/i18n.spec.js
|
|
1335
|
-
- package/src/datepicker.js
|
|
1336
|
-
- package/src/file_editors.js
|
|
1337
|
-
- package/src/i18n.js
|
|
1338
|
-
- package/src/image_cropper.js
|
|
1339
|
-
- package/src/image_loader.js
|
|
1340
|
-
- package/src/ingredient_anchor_link.js
|
|
1341
|
-
- package/src/node_tree.js
|
|
1342
|
-
- package/src/page_publication_fields.js
|
|
1343
|
-
- package/src/page_sorter.js
|
|
1344
|
-
- package/src/picture_editors.js
|
|
1345
|
-
- package/src/sitemap.js
|
|
1346
|
-
- package/src/tinymce.js
|
|
1347
|
-
- package/src/translations.js
|
|
1348
|
-
- package/src/utils/__tests__/ajax.spec.js
|
|
1349
|
-
- package/src/utils/__tests__/events.spec.js
|
|
1350
|
-
- package/src/utils/ajax.js
|
|
1351
|
-
- package/src/utils/events.js
|
|
1352
1367
|
- vendor/assets/fonts/fa-regular-400.eot
|
|
1353
1368
|
- vendor/assets/fonts/fa-regular-400.svg
|
|
1354
1369
|
- vendor/assets/fonts/fa-regular-400.ttf
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
window.Alchemy = {} if typeof(Alchemy) is "undefined"
|
|
2
|
-
|
|
3
|
-
Alchemy.Browser =
|
|
4
|
-
isiPhone: navigator.userAgent.match(/iPhone/i) isnt null
|
|
5
|
-
isiPad: navigator.userAgent.match(/iPad/i) isnt null
|
|
6
|
-
isiPod: navigator.userAgent.match(/iPod/i) isnt null
|
|
7
|
-
isiOS: navigator.userAgent.match(/iPad|iPhone|iPod/i) isnt null
|
|
8
|
-
isFirefox: navigator.userAgent.match(/Firefox/i) isnt null
|
|
9
|
-
isChrome: navigator.userAgent.match(/Chrome/i) isnt null
|
|
10
|
-
isSafari: navigator.userAgent.match(/AppleWebKit/) and not navigator.userAgent.match(/Chrome/)
|
|
11
|
-
isIE: navigator.userAgent.match(/MSIE/i) isnt null
|
|
12
|
-
getVersion: (browser) ->
|
|
13
|
-
if Alchemy.Browser["is" + browser]
|
|
14
|
-
parseInt(navigator.userAgent.match(new RegExp(browser + ".[0-9]+", "i"))[0].replace(new RegExp(browser + "."), ""), 10)
|
|
15
|
-
else
|
|
16
|
-
null
|
|
17
|
-
|
|
18
|
-
Alchemy.Browser.ChromeVersion = Alchemy.Browser.getVersion("Chrome")
|
|
19
|
-
Alchemy.Browser.FirefoxVersion = Alchemy.Browser.getVersion("Firefox")
|
|
20
|
-
Alchemy.Browser.SafariVersion = Alchemy.Browser.getVersion("Safari")
|
|
21
|
-
Alchemy.Browser.IEVersion = Alchemy.Browser.getVersion("MSIE")
|
|
22
|
-
Alchemy.Browser.isWebKit = Alchemy.Browser.isChrome || Alchemy.Browser.isSafari
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Testing for HTML5 features
|
|
2
|
-
if (typeof(Alchemy) === 'undefined') {
|
|
3
|
-
var Alchemy = {};
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
Alchemy.HTML5 = {};
|
|
7
|
-
|
|
8
|
-
Alchemy.HTML5.hasUploadSupport = function() {
|
|
9
|
-
return typeof(window.FileReader) !== 'undefined' && supportFileAPI() && supportAjaxUploadProgressEvents();
|
|
10
|
-
|
|
11
|
-
function supportFileAPI() {
|
|
12
|
-
var fi = document.createElement('INPUT');
|
|
13
|
-
fi.type = 'file';
|
|
14
|
-
return 'files' in fi;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function supportAjaxUploadProgressEvents() {
|
|
18
|
-
var xhr = new XMLHttpRequest();
|
|
19
|
-
return !!(xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
};
|
data/package/admin.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import translate from "./src/i18n"
|
|
2
|
-
import translationData from "./src/translations"
|
|
3
|
-
import NodeTree from "./src/node_tree"
|
|
4
|
-
import fileEditors from "./src/file_editors"
|
|
5
|
-
import IngredientAnchorLink from "./src/ingredient_anchor_link"
|
|
6
|
-
import pictureEditors from "./src/picture_editors"
|
|
7
|
-
import ImageLoader from "./src/image_loader"
|
|
8
|
-
import ImageCropper from "./src/image_cropper"
|
|
9
|
-
import Datepicker from "./src/datepicker"
|
|
10
|
-
import Sitemap from "./src/sitemap"
|
|
11
|
-
import Tinymce from "./src/tinymce"
|
|
12
|
-
import PagePublicationFields from "./src/page_publication_fields.js"
|
|
13
|
-
|
|
14
|
-
// Global Alchemy object
|
|
15
|
-
if (typeof window.Alchemy === "undefined") {
|
|
16
|
-
window.Alchemy = {}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Enhance the global Alchemy object with imported features
|
|
20
|
-
Object.assign(Alchemy, {
|
|
21
|
-
// Global utility method for translating a given string
|
|
22
|
-
t: translate,
|
|
23
|
-
translations: Object.assign(Alchemy.translations || {}, translationData),
|
|
24
|
-
NodeTree,
|
|
25
|
-
fileEditors,
|
|
26
|
-
pictureEditors,
|
|
27
|
-
ImageLoader: ImageLoader.init,
|
|
28
|
-
ImageCropper,
|
|
29
|
-
IngredientAnchorLink,
|
|
30
|
-
Datepicker,
|
|
31
|
-
Sitemap,
|
|
32
|
-
Tinymce,
|
|
33
|
-
PagePublicationFields
|
|
34
|
-
})
|