rails_admin 3.0.0 → 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/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 +8 -4
- 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 +9 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +3 -1
- data/app/views/layouts/rails_admin/application.html.erb +1 -1
- 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/index.html.erb +1 -1
- 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 +2 -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 +2 -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 +28 -17
- 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 +2 -0
- 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 +4 -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 +1 -1
- data/src/rails_admin/widgets.js +2 -2
- data/vendor/assets/javascripts/rails_admin/jquery3.js +118 -109
- metadata +11 -7
- 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 'mongoid'
|
2
4
|
require 'rails_admin/config/sections/list'
|
3
5
|
require 'rails_admin/adapters/mongoid/association'
|
@@ -52,7 +54,7 @@ module RailsAdmin
|
|
52
54
|
scope
|
53
55
|
rescue NoMethodError => e
|
54
56
|
if /page/.match?(e.message)
|
55
|
-
e = e.exception
|
57
|
+
e = e.exception <<~ERROR
|
56
58
|
#{e.message}
|
57
59
|
If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
|
58
60
|
ERROR
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/proxyable'
|
2
4
|
require 'rails_admin/config/configurable'
|
3
5
|
require 'rails_admin/config/hideable'
|
@@ -58,6 +60,20 @@ module RailsAdmin
|
|
58
60
|
!virtual? || children_fields.first || false
|
59
61
|
end
|
60
62
|
|
63
|
+
def sort_column
|
64
|
+
if sortable == true
|
65
|
+
"#{abstract_model.table_name}.#{name}"
|
66
|
+
elsif (sortable.is_a?(String) || sortable.is_a?(Symbol)) && sortable.to_s.include?('.') # just provide sortable, don't do anything smart
|
67
|
+
sortable
|
68
|
+
elsif sortable.is_a?(Hash) # just join sortable hash, don't do anything smart
|
69
|
+
"#{sortable.keys.first}.#{sortable.values.first}"
|
70
|
+
elsif association # use column on target table
|
71
|
+
"#{associated_model_config.abstract_model.table_name}.#{sortable}"
|
72
|
+
else # use described column in the field conf.
|
73
|
+
"#{abstract_model.table_name}.#{sortable}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
61
77
|
register_instance_option :searchable do
|
62
78
|
!virtual? || children_fields.first || false
|
63
79
|
end
|
@@ -301,13 +317,13 @@ module RailsAdmin
|
|
301
317
|
def value
|
302
318
|
bindings[:object].safe_send(name)
|
303
319
|
rescue NoMethodError => e
|
304
|
-
raise e.exception
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
320
|
+
raise e.exception <<~ERROR
|
321
|
+
#{e.message}
|
322
|
+
If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
|
323
|
+
you should declare 'formatted_value' in the field definition.
|
324
|
+
field :#{name} do
|
325
|
+
formatted_value{ bindings[:object].call_some_method }
|
326
|
+
end
|
311
327
|
ERROR
|
312
328
|
end
|
313
329
|
|
@@ -337,7 +353,7 @@ module RailsAdmin
|
|
337
353
|
end
|
338
354
|
|
339
355
|
def parse_input(_params)
|
340
|
-
#
|
356
|
+
# overridden
|
341
357
|
end
|
342
358
|
|
343
359
|
def inverse_of
|
@@ -1,11 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields'
|
2
4
|
require 'rails_admin/config/fields/types'
|
3
5
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
4
6
|
|
5
7
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
-
|
7
|
-
|
8
|
-
field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
|
8
|
+
parent.abstract_model.associations.filter { |a| Array(a.foreign_key).include?(properties.name) && %i[belongs_to has_and_belongs_to_many].include?(a.type) }.each do |association|
|
9
|
+
field = RailsAdmin::Config::Fields::Types.load(association.field_type).new(parent, association.name, association)
|
9
10
|
fields << field
|
10
11
|
|
11
12
|
child_columns = []
|
@@ -13,7 +14,7 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
13
14
|
%i[foreign_key foreign_type foreign_inverse_of]
|
14
15
|
else
|
15
16
|
[:foreign_key]
|
16
|
-
end.
|
17
|
+
end.flat_map { |k| Array(association.send(k)) }.compact
|
17
18
|
|
18
19
|
parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
|
19
20
|
child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
|
@@ -27,5 +28,5 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
27
28
|
end
|
28
29
|
|
29
30
|
field.children_fields child_columns.collect(&:name)
|
30
|
-
end
|
31
|
+
end.any?
|
31
32
|
end
|
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields/types/action_text'
|
2
4
|
require 'rails_admin/config/fields/types/active_record_enum'
|
3
5
|
require 'rails_admin/config/fields/types/active_storage'
|
4
6
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
5
7
|
require 'rails_admin/config/fields/types/boolean'
|
6
8
|
require 'rails_admin/config/fields/types/bson_object_id'
|
9
|
+
require 'rails_admin/config/fields/types/composite_keys_belongs_to_association'
|
7
10
|
require 'rails_admin/config/fields/types/date'
|
8
11
|
require 'rails_admin/config/fields/types/datetime'
|
9
12
|
require 'rails_admin/config/fields/types/decimal'
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields/association'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -27,12 +29,8 @@ module RailsAdmin
|
|
27
29
|
true
|
28
30
|
end
|
29
31
|
|
30
|
-
def associated_primary_key
|
31
|
-
association.primary_key
|
32
|
-
end
|
33
|
-
|
34
32
|
def selected_id
|
35
|
-
bindings[:object].
|
33
|
+
bindings[:object].safe_send(association.key_accessor)
|
36
34
|
end
|
37
35
|
|
38
36
|
def method_name
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Config
|
3
5
|
module Fields
|
@@ -31,7 +33,7 @@ module RailsAdmin
|
|
31
33
|
end
|
32
34
|
|
33
35
|
register_instance_option :pretty_value do
|
34
|
-
%(<span class="
|
36
|
+
%(<span class="badge bg-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
|
35
37
|
end
|
36
38
|
|
37
39
|
register_instance_option :export_value do
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_admin/config/fields/types/belongs_to_association'
|
4
|
+
|
5
|
+
module RailsAdmin
|
6
|
+
module Config
|
7
|
+
module Fields
|
8
|
+
module Types
|
9
|
+
class CompositeKeysBelongsToAssociation < RailsAdmin::Config::Fields::Types::BelongsToAssociation
|
10
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
11
|
+
|
12
|
+
register_instance_option :allowed_methods do
|
13
|
+
nested_form ? [method_name] : Array(association.foreign_key)
|
14
|
+
end
|
15
|
+
|
16
|
+
def selected_id
|
17
|
+
association.foreign_key.map { |attribute| bindings[:object].safe_send(attribute) }.to_composite_keys.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_input(params)
|
21
|
+
return unless params[method_name].present? && association.foreign_key.is_a?(Array) && !nested_form
|
22
|
+
|
23
|
+
association.foreign_key.zip(CompositePrimaryKeys::CompositeKeys.parse(params.delete(method_name))).each do |key, value|
|
24
|
+
params[key] = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -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
|