rails_admin 3.0.0.rc3 → 3.1.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.md +1 -7
- data/Rakefile +2 -0
- data/app/controllers/rails_admin/application_controller.rb +2 -0
- data/app/controllers/rails_admin/main_controller.rb +7 -13
- data/app/helpers/rails_admin/application_helper.rb +9 -5
- data/app/helpers/rails_admin/form_builder.rb +10 -0
- data/app/helpers/rails_admin/main_helper.rb +2 -0
- data/app/views/layouts/rails_admin/_head.html.erb +17 -5
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +4 -2
- data/app/views/layouts/rails_admin/application.html.erb +2 -2
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +2 -2
- data/app/views/rails_admin/main/_form_filtering_select.html.erb +1 -1
- data/app/views/rails_admin/main/history.html.erb +1 -1
- data/app/views/rails_admin/main/index.html.erb +1 -1
- data/app/views/rails_admin/main/show.html.erb +11 -9
- data/config/initializers/active_record_extensions.rb +25 -0
- data/config/initializers/mongoid_extensions.rb +2 -0
- data/config/routes.rb +2 -0
- data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +68 -9
- data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
- data/lib/generators/rails_admin/utils.rb +2 -0
- data/lib/rails_admin/abstract_model.rb +9 -2
- data/lib/rails_admin/adapters/active_record/association.rb +10 -0
- data/lib/rails_admin/adapters/active_record/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/active_record/property.rb +2 -0
- data/lib/rails_admin/adapters/active_record.rb +25 -2
- data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
- data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
- data/lib/rails_admin/adapters/mongoid/association.rb +14 -4
- data/lib/rails_admin/adapters/mongoid/bson.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/property.rb +2 -0
- data/lib/rails_admin/adapters/mongoid.rb +3 -1
- data/lib/rails_admin/config/actions/base.rb +7 -0
- data/lib/rails_admin/config/actions/bulk_delete.rb +2 -0
- data/lib/rails_admin/config/actions/dashboard.rb +2 -0
- data/lib/rails_admin/config/actions/delete.rb +2 -0
- data/lib/rails_admin/config/actions/edit.rb +2 -0
- data/lib/rails_admin/config/actions/export.rb +2 -0
- data/lib/rails_admin/config/actions/history_index.rb +2 -0
- data/lib/rails_admin/config/actions/history_show.rb +2 -0
- data/lib/rails_admin/config/actions/index.rb +2 -0
- data/lib/rails_admin/config/actions/new.rb +2 -0
- data/lib/rails_admin/config/actions/show.rb +2 -0
- data/lib/rails_admin/config/actions/show_in_app.rb +6 -0
- data/lib/rails_admin/config/actions.rb +2 -0
- data/lib/rails_admin/config/configurable.rb +2 -0
- data/lib/rails_admin/config/fields/association.rb +2 -0
- data/lib/rails_admin/config/fields/base.rb +24 -8
- data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
- data/lib/rails_admin/config/fields/factories/active_storage.rb +2 -0
- data/lib/rails_admin/config/fields/factories/association.rb +6 -5
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +2 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/factories/password.rb +2 -0
- data/lib/rails_admin/config/fields/factories/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/group.rb +2 -0
- data/lib/rails_admin/config/fields/types/action_text.rb +2 -0
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
- data/lib/rails_admin/config/fields/types/active_storage.rb +2 -0
- data/lib/rails_admin/config/fields/types/all.rb +3 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +3 -5
- data/lib/rails_admin/config/fields/types/boolean.rb +3 -1
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/citext.rb +2 -0
- data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
- data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
- data/lib/rails_admin/config/fields/types/color.rb +2 -0
- data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/date.rb +2 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +2 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +2 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/types/enum.rb +2 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/float.rb +2 -0
- data/lib/rails_admin/config/fields/types/froala.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +3 -1
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
- data/lib/rails_admin/config/fields/types/inet.rb +2 -0
- data/lib/rails_admin/config/fields/types/integer.rb +2 -0
- data/lib/rails_admin/config/fields/types/json.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +10 -0
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/numeric.rb +2 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/types/password.rb +2 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
- data/lib/rails_admin/config/fields/types/string.rb +2 -0
- data/lib/rails_admin/config/fields/types/string_like.rb +2 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -0
- data/lib/rails_admin/config/fields/types/time.rb +2 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +2 -0
- data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
- data/lib/rails_admin/config/fields/types.rb +2 -0
- data/lib/rails_admin/config/fields.rb +3 -1
- data/lib/rails_admin/config/groupable.rb +2 -0
- data/lib/rails_admin/config/has_description.rb +2 -0
- data/lib/rails_admin/config/has_fields.rb +3 -1
- data/lib/rails_admin/config/has_groups.rb +2 -0
- data/lib/rails_admin/config/hideable.rb +2 -0
- data/lib/rails_admin/config/inspectable.rb +2 -0
- data/lib/rails_admin/config/model.rb +2 -0
- data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
- data/lib/rails_admin/config/proxyable.rb +2 -0
- data/lib/rails_admin/config/sections/base.rb +2 -0
- data/lib/rails_admin/config/sections/create.rb +2 -0
- data/lib/rails_admin/config/sections/edit.rb +2 -0
- data/lib/rails_admin/config/sections/export.rb +2 -0
- data/lib/rails_admin/config/sections/list.rb +2 -0
- data/lib/rails_admin/config/sections/modal.rb +2 -0
- data/lib/rails_admin/config/sections/nested.rb +2 -0
- data/lib/rails_admin/config/sections/show.rb +2 -0
- data/lib/rails_admin/config/sections/update.rb +2 -0
- data/lib/rails_admin/config/sections.rb +2 -0
- data/lib/rails_admin/config.rb +7 -1
- data/lib/rails_admin/engine.rb +30 -16
- data/lib/rails_admin/extension.rb +2 -0
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +2 -0
- data/lib/rails_admin/extensions/cancancan.rb +2 -0
- data/lib/rails_admin/extensions/controller_extension.rb +2 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +3 -1
- data/lib/rails_admin/extensions/paper_trail.rb +2 -0
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +3 -1
- data/lib/rails_admin/extensions/pundit.rb +2 -0
- data/lib/rails_admin/support/csv_converter.rb +2 -1
- data/lib/rails_admin/support/datetime.rb +3 -1
- data/lib/rails_admin/support/esmodule_preprocessor.rb +4 -0
- data/lib/rails_admin/support/hash_helper.rb +2 -0
- data/lib/rails_admin/version.rb +37 -2
- data/lib/rails_admin.rb +3 -1
- data/lib/tasks/rails_admin.rake +2 -0
- data/package.json +1 -1
- data/src/rails_admin/base.js +13 -1
- data/src/rails_admin/filtering-multiselect.js +5 -10
- data/src/rails_admin/filtering-select.js +2 -2
- data/src/rails_admin/nested-form-hooks.js +1 -1
- data/src/rails_admin/remote-form.js +4 -5
- data/src/rails_admin/styles/base/theming.scss +10 -0
- data/src/rails_admin/styles/base.scss +5 -5
- data/src/rails_admin/ui.js +11 -2
- data/src/rails_admin/widgets.js +2 -2
- data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +958 -395
- data/vendor/assets/javascripts/rails_admin/jquery3.js +118 -109
- metadata +9 -5
- data/lib/generators/rails_admin/templates/rails_admin.js.erb +0 -2
- data/lib/generators/rails_admin/templates/rails_admin.scss +0 -1
- data/lib/generators/rails_admin/templates/webpack.config.js +0 -29
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields/types/multiple_file_upload'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -12,6 +14,10 @@ module RailsAdmin
|
|
12
14
|
{resize_to_limit: [100, 100]}
|
13
15
|
end
|
14
16
|
|
17
|
+
register_instance_option :keep_value do
|
18
|
+
value.signed_id
|
19
|
+
end
|
20
|
+
|
15
21
|
register_instance_option :delete_value do
|
16
22
|
value.id
|
17
23
|
end
|
@@ -41,6 +47,10 @@ module RailsAdmin
|
|
41
47
|
ActiveStorageAttachment
|
42
48
|
end
|
43
49
|
|
50
|
+
register_instance_option :keep_method do
|
51
|
+
method_name if ::ActiveStorage.replace_on_assign_to_many
|
52
|
+
end
|
53
|
+
|
44
54
|
register_instance_option :delete_method do
|
45
55
|
"remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
|
46
56
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Config
|
3
5
|
module Fields
|
@@ -20,7 +22,7 @@ module RailsAdmin
|
|
20
22
|
|
21
23
|
# Registry of field factories.
|
22
24
|
#
|
23
|
-
# Field factory is an anonymous function that
|
25
|
+
# Field factory is an anonymous function that receives the parent object,
|
24
26
|
# an array of field properties and an array of fields already instantiated.
|
25
27
|
#
|
26
28
|
# If the factory returns true then that property will not be run through
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Config
|
3
5
|
# Provides accessors and autoregistering of model's fields.
|
@@ -42,7 +44,7 @@ module RailsAdmin
|
|
42
44
|
[*name].each { |field_name| field(field_name, type, false, &block) }
|
43
45
|
end
|
44
46
|
|
45
|
-
# include fields by name and apply an
|
47
|
+
# include fields by name and apply an optional block to each (through a call to fields),
|
46
48
|
# or include fields by conditions if no field names
|
47
49
|
def include_fields(*field_names, &block)
|
48
50
|
if field_names.empty?
|
data/lib/rails_admin/config.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/model'
|
2
4
|
require 'rails_admin/config/sections/list'
|
3
5
|
require 'active_support/core_ext/module/attribute_accessors'
|
@@ -73,6 +75,9 @@ module RailsAdmin
|
|
73
75
|
# @see RailsAdmin.config
|
74
76
|
attr_reader :registry
|
75
77
|
|
78
|
+
# Bootstrap CSS classes used for Navigation bar
|
79
|
+
attr_accessor :navbar_css_classes
|
80
|
+
|
76
81
|
# show Gravatar in Navigation bar
|
77
82
|
attr_accessor :show_gravatar
|
78
83
|
|
@@ -260,7 +265,7 @@ module RailsAdmin
|
|
260
265
|
def asset_source
|
261
266
|
@asset_source ||=
|
262
267
|
begin
|
263
|
-
warn
|
268
|
+
warn <<~MSG
|
264
269
|
[Warning] After upgrading RailsAdmin to 3.x you haven't set asset_source yet, using :sprockets as the default.
|
265
270
|
To suppress this message, run 'rails rails_admin:install' to setup the asset delivery method suitable to you.
|
266
271
|
MSG
|
@@ -334,6 +339,7 @@ module RailsAdmin
|
|
334
339
|
@label_methods = %i[name title]
|
335
340
|
@main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
|
336
341
|
@registry = {}
|
342
|
+
@navbar_css_classes = %w[navbar-dark bg-primary border-bottom]
|
337
343
|
@show_gravatar = true
|
338
344
|
@navigation_static_links = {}
|
339
345
|
@navigation_static_label = nil
|
data/lib/rails_admin/engine.rb
CHANGED
@@ -1,26 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'kaminari'
|
2
4
|
require 'nested_form'
|
3
5
|
require 'rails'
|
4
6
|
require 'rails_admin'
|
7
|
+
require 'rails_admin/version'
|
5
8
|
require 'turbo-rails'
|
6
9
|
|
7
10
|
module RailsAdmin
|
8
11
|
class Engine < Rails::Engine
|
9
12
|
isolate_namespace RailsAdmin
|
10
13
|
|
11
|
-
|
14
|
+
attr_accessor :importmap
|
12
15
|
|
13
|
-
|
14
|
-
if app.config.respond_to?(:assets)
|
15
|
-
app.config.assets.precompile += %w[
|
16
|
-
rails_admin/application.js
|
17
|
-
rails_admin/application.css
|
18
|
-
]
|
19
|
-
app.config.assets.paths << RailsAdmin::Engine.root.join('src')
|
20
|
-
require 'rails_admin/support/esmodule_preprocessor'
|
21
|
-
Sprockets.register_preprocessor 'application/javascript', RailsAdmin::ESModulePreprocessor
|
22
|
-
end
|
23
|
-
end
|
16
|
+
config.action_dispatch.rescue_responses['RailsAdmin::ActionNotAllowed'] = :forbidden
|
24
17
|
|
25
18
|
initializer 'RailsAdmin reload config in development' do |app|
|
26
19
|
config.initializer_path = app.root.join('config/initializers/rails_admin.rb')
|
@@ -42,6 +35,30 @@ module RailsAdmin
|
|
42
35
|
end
|
43
36
|
end
|
44
37
|
|
38
|
+
initializer 'RailsAdmin apply configuration', after: :eager_load! do |app|
|
39
|
+
RailsAdmin::Config.initialize!
|
40
|
+
|
41
|
+
# Force route reload, since it doesn't reflect RailsAdmin action configuration yet
|
42
|
+
app.reload_routes!
|
43
|
+
end
|
44
|
+
|
45
|
+
initializer 'RailsAdmin precompile hook', group: :all, after: 'RailsAdmin apply configuration' do |app|
|
46
|
+
case RailsAdmin.config.asset_source
|
47
|
+
when :sprockets
|
48
|
+
if defined?(Sprockets)
|
49
|
+
app.config.assets.precompile += %w[
|
50
|
+
rails_admin/application.js
|
51
|
+
rails_admin/application.css
|
52
|
+
]
|
53
|
+
app.config.assets.paths << RailsAdmin::Engine.root.join('src')
|
54
|
+
require 'rails_admin/support/esmodule_preprocessor'
|
55
|
+
Sprockets.register_preprocessor 'application/javascript', RailsAdmin::ESModulePreprocessor
|
56
|
+
end
|
57
|
+
when :importmap
|
58
|
+
self.importmap = Importmap::Map.new.draw(app.root.join('config/importmap.rails_admin.rb'))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
45
62
|
# Check for required middlewares, users may forget to use them in Rails API mode
|
46
63
|
config.after_initialize do |app|
|
47
64
|
has_session_store = app.config.middleware.to_a.any? do |m|
|
@@ -65,10 +82,7 @@ module RailsAdmin
|
|
65
82
|
ERROR
|
66
83
|
end
|
67
84
|
|
68
|
-
RailsAdmin::
|
69
|
-
|
70
|
-
# Force route reload, since it doesn't reflect RailsAdmin action configuration yet
|
71
|
-
app.reload_routes!
|
85
|
+
RailsAdmin::Version.warn_with_js_version
|
72
86
|
end
|
73
87
|
end
|
74
88
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/string/strip'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -49,7 +51,7 @@ module RailsAdmin
|
|
49
51
|
created_at: :created_at,
|
50
52
|
message: :event,
|
51
53
|
}.freeze
|
52
|
-
E_VERSION_MODEL_NOT_SET =
|
54
|
+
E_VERSION_MODEL_NOT_SET = <<~ERROR
|
53
55
|
Please set up PaperTrail's version model explicitly.
|
54
56
|
|
55
57
|
config.audit_with :paper_trail, 'User', 'PaperTrail::Version'
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Extensions
|
3
5
|
module Pundit
|
@@ -7,7 +9,7 @@ module RailsAdmin
|
|
7
9
|
class AuthorizationAdapter
|
8
10
|
# This method is called first time only and used for setup
|
9
11
|
def self.setup
|
10
|
-
RailsAdmin::Extensions::ControllerExtension.include ::Pundit
|
12
|
+
RailsAdmin::Extensions::ControllerExtension.include defined?(::Pundit::Authorization) ? ::Pundit::Authorization : ::Pundit
|
11
13
|
end
|
12
14
|
|
13
15
|
# See the +authorize_with+ config method for where the initialization happens.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
require 'csv'
|
4
5
|
|
@@ -40,7 +41,7 @@ module RailsAdmin
|
|
40
41
|
|
41
42
|
def to_csv(options = {})
|
42
43
|
if CSV::VERSION == '3.0.2'
|
43
|
-
raise
|
44
|
+
raise <<~MSG
|
44
45
|
CSV library bundled with Ruby 2.6.0 has encoding issue, please upgrade Ruby to 2.6.1 or later.
|
45
46
|
https://github.com/ruby/csv/issues/62
|
46
47
|
MSG
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Support
|
3
5
|
class Datetime
|
@@ -50,7 +52,7 @@ module RailsAdmin
|
|
50
52
|
when '%z' # Time zone as hour and minute offset from UTC (e.g. +0900)
|
51
53
|
Time.zone.formatted_offset(false)
|
52
54
|
else
|
53
|
-
FLATPICKR_TRANSLATIONS[match] or raise
|
55
|
+
FLATPICKR_TRANSLATIONS[match] or raise <<~MSG
|
54
56
|
Unsupported strftime directive '#{match}' was found. Please consider explicitly setting flatpickr_format instance option for the field.
|
55
57
|
field(:name_of_field) { flatpickr_format '...' }
|
56
58
|
MSG
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
class ESModulePreprocessor
|
3
5
|
def self.instance
|
@@ -11,6 +13,8 @@ module RailsAdmin
|
|
11
13
|
def initialize; end
|
12
14
|
|
13
15
|
def call(input)
|
16
|
+
return unless RailsAdmin.config.asset_source == :sprockets
|
17
|
+
|
14
18
|
data = input[:data]
|
15
19
|
|
16
20
|
if input[:filename].start_with? RailsAdmin::Engine.root.join('src').to_s
|