alchemy_cms 7.0.0.pre.b → 7.0.0.pre.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
})
|