rails_admin 2.0.0.beta → 2.0.0.rc
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rails_admin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +1 -1
- data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +57 -0
- data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
- data/app/assets/javascripts/rails_admin/ra.widgets.js +371 -0
- data/app/assets/javascripts/rails_admin/ui.js +135 -0
- data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
- data/app/helpers/rails_admin/application_helper.rb +17 -2
- data/app/views/layouts/rails_admin/_head.html.haml +7 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
- data/app/views/layouts/rails_admin/application.html.haml +3 -8
- data/app/views/rails_admin/main/_form_file_upload.html.haml +3 -3
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +6 -4
- data/config/locales/rails_admin.en.yml +1 -0
- data/lib/generators/rails_admin/templates/initializer.erb +2 -2
- data/lib/rails_admin.rb +0 -1
- data/lib/rails_admin/abstract_model.rb +1 -1
- data/lib/rails_admin/adapters/active_record.rb +12 -3
- data/lib/rails_admin/adapters/mongoid.rb +14 -0
- data/lib/rails_admin/bootstrap-sass.rb +1 -1
- data/lib/rails_admin/config.rb +4 -6
- data/lib/rails_admin/config/actions/base.rb +17 -1
- data/lib/rails_admin/config/actions/edit.rb +1 -3
- data/lib/rails_admin/config/actions/index.rb +1 -1
- data/lib/rails_admin/config/actions/new.rb +1 -3
- data/lib/rails_admin/config/fields.rb +0 -1
- data/lib/rails_admin/config/fields/association.rb +1 -1
- data/lib/rails_admin/config/fields/types/action_text.rb +1 -2
- data/lib/rails_admin/config/fields/types/all.rb +0 -1
- data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -2
- data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -2
- data/lib/rails_admin/config/fields/types/color.rb +2 -2
- data/lib/rails_admin/config/fields/types/file_upload.rb +6 -2
- data/lib/rails_admin/config/fields/types/froala.rb +2 -2
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +5 -1
- data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -2
- data/lib/rails_admin/config/fields/types/string.rb +2 -2
- data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -2
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -2
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +4 -1
- data/lib/rails_admin/version.rb +1 -1
- data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
- metadata +130 -153
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -55
- data/app/assets/javascripts/rails_admin/ra.sidescroll.coffee +0 -19
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
- data/app/assets/javascripts/rails_admin/ui.coffee +0 -107
- data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
- data/lib/rails_admin/config/fields/types/refile.rb +0 -27
- data/lib/rails_admin/extensions/cancan.rb +0 -3
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
@@ -49,7 +49,7 @@ module RailsAdmin
|
|
49
49
|
format.json do
|
50
50
|
output = begin
|
51
51
|
if params[:compact]
|
52
|
-
primary_key_method = @
|
52
|
+
primary_key_method = @model_config.abstract_model.primary_key
|
53
53
|
label_method = @model_config.object_label_method
|
54
54
|
@objects.collect { |o| {id: o.send(primary_key_method).to_s, label: o.send(label_method).to_s} }
|
55
55
|
else
|
@@ -36,9 +36,7 @@ module RailsAdmin
|
|
36
36
|
sanitize_params_for!(request.xhr? ? :modal : :create)
|
37
37
|
|
38
38
|
@object.set_attributes(params[@abstract_model.param_key])
|
39
|
-
@authorization_adapter && @authorization_adapter.
|
40
|
-
@object.send("#{name}=", value)
|
41
|
-
end
|
39
|
+
@authorization_adapter && @authorization_adapter.authorize(:create, @abstract_model, @object)
|
42
40
|
|
43
41
|
if @object.save
|
44
42
|
@auditing_adapter && @auditing_adapter.create_object(@object, @abstract_model, _current_user)
|
@@ -82,7 +82,6 @@ require 'rails_admin/config/fields/factories/devise'
|
|
82
82
|
require 'rails_admin/config/fields/factories/paperclip'
|
83
83
|
require 'rails_admin/config/fields/factories/dragonfly'
|
84
84
|
require 'rails_admin/config/fields/factories/carrierwave'
|
85
|
-
require 'rails_admin/config/fields/factories/refile'
|
86
85
|
require 'rails_admin/config/fields/factories/active_storage'
|
87
86
|
require 'rails_admin/config/fields/factories/shrine'
|
88
87
|
require 'rails_admin/config/fields/factories/action_text'
|
@@ -78,7 +78,7 @@ module RailsAdmin
|
|
78
78
|
|
79
79
|
# Reader for associated primary key
|
80
80
|
def associated_primary_key
|
81
|
-
@associated_primary_key ||=
|
81
|
+
@associated_primary_key ||= associated_model_config.abstract_model.primary_key
|
82
82
|
end
|
83
83
|
|
84
84
|
# Reader for the association's key
|
@@ -1,11 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/base'
|
2
1
|
require 'rails_admin/config/fields/types/text'
|
3
2
|
|
4
3
|
module RailsAdmin
|
5
4
|
module Config
|
6
5
|
module Fields
|
7
6
|
module Types
|
8
|
-
class ActionText <
|
7
|
+
class ActionText < Text
|
9
8
|
# Register field type for the type loader
|
10
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
11
10
|
|
@@ -12,7 +12,6 @@ require 'rails_admin/config/fields/types/enum'
|
|
12
12
|
require 'rails_admin/config/fields/types/file_upload'
|
13
13
|
require 'rails_admin/config/fields/types/paperclip'
|
14
14
|
require 'rails_admin/config/fields/types/carrierwave'
|
15
|
-
require 'rails_admin/config/fields/types/refile'
|
16
15
|
require 'rails_admin/config/fields/types/multiple_file_upload'
|
17
16
|
require 'rails_admin/config/fields/types/multiple_active_storage'
|
18
17
|
require 'rails_admin/config/fields/types/multiple_carrierwave'
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class CKEditor <
|
7
|
+
class CKEditor < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class CodeMirror <
|
7
|
+
class CodeMirror < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/string_like'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class Color <
|
7
|
+
class Color < StringLike
|
8
8
|
RailsAdmin::Config::Fields::Types.register(self)
|
9
9
|
|
10
10
|
register_instance_option :pretty_value do
|
@@ -23,6 +23,10 @@ module RailsAdmin
|
|
23
23
|
nil
|
24
24
|
end
|
25
25
|
|
26
|
+
register_instance_option :cache_value do
|
27
|
+
bindings[:object].public_send(cache_method) if cache_method
|
28
|
+
end
|
29
|
+
|
26
30
|
register_instance_option :export_value do
|
27
31
|
resource_url.to_s
|
28
32
|
end
|
@@ -34,9 +38,9 @@ module RailsAdmin
|
|
34
38
|
if image
|
35
39
|
thumb_url = resource_url(thumb_method)
|
36
40
|
image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
|
37
|
-
url != thumb_url ? v.link_to(image_html, url, target: '_blank') : image_html
|
41
|
+
url != thumb_url ? v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer') : image_html
|
38
42
|
else
|
39
|
-
v.link_to(value, url, target: '_blank')
|
43
|
+
v.link_to(value, url, target: '_blank', rel: 'noopener noreferrer')
|
40
44
|
end
|
41
45
|
end
|
42
46
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class Froala <
|
7
|
+
class Froala < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/string_like'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class Hidden <
|
7
|
+
class Hidden < StringLike
|
8
8
|
RailsAdmin::Config::Fields::Types.register(self)
|
9
9
|
|
10
10
|
register_instance_option :view_helper do
|
@@ -12,8 +12,12 @@ module RailsAdmin
|
|
12
12
|
@thumb_method ||= ((versions = value.versions.keys).detect { |k| k.in?([:thumb, :thumbnail, 'thumb', 'thumbnail']) } || versions.first.to_s)
|
13
13
|
end
|
14
14
|
|
15
|
-
register_instance_option :
|
16
|
-
value.
|
15
|
+
register_instance_option :keep_value do
|
16
|
+
value.cache_name || value.identifier
|
17
|
+
end
|
18
|
+
|
19
|
+
register_instance_option :delete_value do
|
20
|
+
value.file.filename
|
17
21
|
end
|
18
22
|
|
19
23
|
def resource_url(thumb = false)
|
@@ -27,7 +31,15 @@ module RailsAdmin
|
|
27
31
|
end
|
28
32
|
|
29
33
|
register_instance_option :cache_method do
|
30
|
-
"#{name}_cache"
|
34
|
+
"#{name}_cache" unless ::CarrierWave::VERSION >= '2'
|
35
|
+
end
|
36
|
+
|
37
|
+
register_instance_option :keep_method do
|
38
|
+
name if ::CarrierWave::VERSION >= '2'
|
39
|
+
end
|
40
|
+
|
41
|
+
register_instance_option :reorderable? do
|
42
|
+
::CarrierWave::VERSION >= '2'
|
31
43
|
end
|
32
44
|
|
33
45
|
register_instance_option :delete_method do
|
@@ -19,10 +19,16 @@ module RailsAdmin
|
|
19
19
|
nil
|
20
20
|
end
|
21
21
|
|
22
|
-
register_instance_option :
|
22
|
+
register_instance_option :keep_value do
|
23
23
|
nil
|
24
24
|
end
|
25
25
|
|
26
|
+
register_instance_option :delete_value do
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
|
30
|
+
register_deprecated_instance_option :delete_key, :delete_value
|
31
|
+
|
26
32
|
register_instance_option :pretty_value do
|
27
33
|
if value.presence
|
28
34
|
v = bindings[:view]
|
@@ -30,9 +36,9 @@ module RailsAdmin
|
|
30
36
|
if image
|
31
37
|
thumb_url = resource_url(thumb_method)
|
32
38
|
image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
|
33
|
-
url != thumb_url ? v.link_to(image_html, url, target: '_blank') : image_html
|
39
|
+
url != thumb_url ? v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer') : image_html
|
34
40
|
else
|
35
|
-
v.link_to(value, url, target: '_blank')
|
41
|
+
v.link_to(value, url, target: '_blank', rel: 'noopener noreferrer')
|
36
42
|
end
|
37
43
|
end
|
38
44
|
end
|
@@ -67,6 +73,14 @@ module RailsAdmin
|
|
67
73
|
nil
|
68
74
|
end
|
69
75
|
|
76
|
+
register_instance_option :keep_method do
|
77
|
+
nil
|
78
|
+
end
|
79
|
+
|
80
|
+
register_instance_option :reorderable? do
|
81
|
+
false
|
82
|
+
end
|
83
|
+
|
70
84
|
register_instance_option :export_value do
|
71
85
|
attachments.map(&:resource_url).map(&:to_s).join(',')
|
72
86
|
end
|
@@ -78,6 +78,13 @@ module RailsAdmin
|
|
78
78
|
def value
|
79
79
|
bindings[:object].send(association.name)
|
80
80
|
end
|
81
|
+
|
82
|
+
def parse_input(params)
|
83
|
+
if (type_value = params[association.foreign_type.to_sym]).present?
|
84
|
+
config = associated_model_config.find { |c| type_value == c.abstract_model.model.name }
|
85
|
+
params[association.foreign_type.to_sym] = config.abstract_model.base_class.name if config
|
86
|
+
end
|
87
|
+
end
|
81
88
|
end
|
82
89
|
end
|
83
90
|
end
|
@@ -29,7 +29,11 @@ module RailsAdmin
|
|
29
29
|
end
|
30
30
|
|
31
31
|
register_instance_option :cache_method do
|
32
|
-
|
32
|
+
name
|
33
|
+
end
|
34
|
+
|
35
|
+
register_instance_option :cache_value do
|
36
|
+
bindings[:object].public_send("cached_#{name}_data") if bindings[:object].respond_to?("cached_#{name}_data")
|
33
37
|
end
|
34
38
|
|
35
39
|
def resource_url(thumb = nil)
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class SimpleMDE <
|
7
|
+
class SimpleMDE < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/string_like'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class String <
|
7
|
+
class String < StringLike
|
8
8
|
RailsAdmin::Config::Fields::Types.register(self)
|
9
9
|
|
10
10
|
def input_size
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class StringLike < RailsAdmin::Config::Fields::Base
|
8
|
+
register_instance_option :treat_empty_as_nil? do
|
9
|
+
properties.try(:nullable?)
|
10
|
+
end
|
11
|
+
|
12
|
+
def parse_input(params)
|
13
|
+
params[name] = params[name].presence if params.key?(name) && treat_empty_as_nil?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/string_like'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class Text <
|
7
|
+
class Text < StringLike
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class Wysihtml5 <
|
7
|
+
class Wysihtml5 < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
@@ -2,38 +2,62 @@ module RailsAdmin
|
|
2
2
|
module Extensions
|
3
3
|
module CanCanCan
|
4
4
|
# This adapter is for the CanCanCan[https://github.com/CanCanCommunity/cancancan] authorization library.
|
5
|
-
class AuthorizationAdapter
|
5
|
+
class AuthorizationAdapter
|
6
|
+
module ControllerExtension
|
7
|
+
def current_ability
|
8
|
+
# use _current_user instead of default current_user so it works with
|
9
|
+
# whatever current user method is defined with RailsAdmin
|
10
|
+
@current_ability ||= @ability.new(_current_user)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# See the +authorize_with+ config method for where the initialization happens.
|
15
|
+
def initialize(controller, ability = ::Ability)
|
16
|
+
@controller = controller
|
17
|
+
@controller.instance_variable_set '@ability', ability
|
18
|
+
@controller.extend ControllerExtension
|
19
|
+
@controller.current_ability.authorize! :access, :rails_admin
|
20
|
+
end
|
21
|
+
|
22
|
+
# This method is called in every controller action and should raise an exception
|
23
|
+
# when the authorization fails. The first argument is the name of the controller
|
24
|
+
# action as a symbol (:create, :bulk_delete, etc.). The second argument is the
|
25
|
+
# AbstractModel instance that applies. The third argument is the actual model
|
26
|
+
# instance if it is available.
|
6
27
|
def authorize(action, abstract_model = nil, model_object = nil)
|
7
28
|
return unless action
|
8
|
-
subject =
|
9
|
-
|
10
|
-
subject
|
11
|
-
else
|
12
|
-
@controller.current_ability.authorize!(*resolve_with_compatibility(action, subject))
|
13
|
-
end
|
29
|
+
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
30
|
+
@controller.current_ability.authorize!(action, subject)
|
14
31
|
end
|
15
32
|
|
33
|
+
# This method is called primarily from the view to determine whether the given user
|
34
|
+
# has access to perform the action on a given model. It should return true when authorized.
|
35
|
+
# This takes the same arguments as +authorize+. The difference is that this will
|
36
|
+
# return a boolean whereas +authorize+ will raise an exception when not authorized.
|
16
37
|
def authorized?(action, abstract_model = nil, model_object = nil)
|
17
38
|
return unless action
|
18
|
-
subject =
|
19
|
-
|
20
|
-
@controller.current_ability.can?(*resolve_with_compatibility(action, subject))
|
39
|
+
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
40
|
+
@controller.current_ability.can?(action, subject)
|
21
41
|
end
|
22
42
|
|
23
|
-
|
43
|
+
# This is called when needing to scope a database query. It is called within the list
|
44
|
+
# and bulk_delete/destroy actions and should return a scope which limits the records
|
45
|
+
# to those which the user can perform the given action on.
|
46
|
+
def query(action, abstract_model)
|
47
|
+
abstract_model.model.accessible_by(@controller.current_ability, action)
|
48
|
+
end
|
24
49
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
true
|
31
|
-
else
|
32
|
-
false
|
33
|
-
end
|
50
|
+
# This is called in the new/create actions to determine the initial attributes for new
|
51
|
+
# records. It should return a hash of attributes which match what the user
|
52
|
+
# is authorized to create.
|
53
|
+
def attributes_for(action, abstract_model)
|
54
|
+
@controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
|
34
55
|
end
|
35
56
|
|
36
|
-
|
57
|
+
private
|
58
|
+
|
59
|
+
def resolve_action_and_subject(action, abstract_model, model_object)
|
60
|
+
subject = model_object || abstract_model && abstract_model.model
|
37
61
|
if subject
|
38
62
|
[action, subject]
|
39
63
|
else
|
@@ -119,7 +119,10 @@ module RailsAdmin
|
|
119
119
|
versions = versions.order(sort_reverse == 'true' ? "#{sort} DESC" : sort)
|
120
120
|
versions = all ? versions : versions.send(Kaminari.config.page_method_name, current_page).per(per_page)
|
121
121
|
paginated_proxies = Kaminari.paginate_array([], total_count: versions.try(:total_count) || versions.count)
|
122
|
-
paginated_proxies = paginated_proxies.send(
|
122
|
+
paginated_proxies = paginated_proxies.send(
|
123
|
+
paginated_proxies.respond_to?(Kaminari.config.page_method_name) ? Kaminari.config.page_method_name : :page,
|
124
|
+
current_page,
|
125
|
+
).per(per_page)
|
123
126
|
versions.each do |version|
|
124
127
|
paginated_proxies << VersionProxy.new(version, @user_class)
|
125
128
|
end
|