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.

Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +1 -1
  4. data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  5. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +1 -1
  6. data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
  7. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +57 -0
  8. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  9. data/app/assets/javascripts/rails_admin/ra.widgets.js +371 -0
  10. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  11. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
  12. data/app/helpers/rails_admin/application_helper.rb +17 -2
  13. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  14. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
  15. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  16. data/app/views/layouts/rails_admin/application.html.haml +3 -8
  17. data/app/views/rails_admin/main/_form_file_upload.html.haml +3 -3
  18. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +6 -4
  19. data/config/locales/rails_admin.en.yml +1 -0
  20. data/lib/generators/rails_admin/templates/initializer.erb +2 -2
  21. data/lib/rails_admin.rb +0 -1
  22. data/lib/rails_admin/abstract_model.rb +1 -1
  23. data/lib/rails_admin/adapters/active_record.rb +12 -3
  24. data/lib/rails_admin/adapters/mongoid.rb +14 -0
  25. data/lib/rails_admin/bootstrap-sass.rb +1 -1
  26. data/lib/rails_admin/config.rb +4 -6
  27. data/lib/rails_admin/config/actions/base.rb +17 -1
  28. data/lib/rails_admin/config/actions/edit.rb +1 -3
  29. data/lib/rails_admin/config/actions/index.rb +1 -1
  30. data/lib/rails_admin/config/actions/new.rb +1 -3
  31. data/lib/rails_admin/config/fields.rb +0 -1
  32. data/lib/rails_admin/config/fields/association.rb +1 -1
  33. data/lib/rails_admin/config/fields/types/action_text.rb +1 -2
  34. data/lib/rails_admin/config/fields/types/all.rb +0 -1
  35. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -2
  36. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -2
  37. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  38. data/lib/rails_admin/config/fields/types/file_upload.rb +6 -2
  39. data/lib/rails_admin/config/fields/types/froala.rb +2 -2
  40. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  41. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
  42. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
  43. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
  44. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
  45. data/lib/rails_admin/config/fields/types/shrine.rb +5 -1
  46. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -2
  47. data/lib/rails_admin/config/fields/types/string.rb +2 -2
  48. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  49. data/lib/rails_admin/config/fields/types/text.rb +2 -2
  50. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -2
  51. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
  52. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +4 -1
  53. data/lib/rails_admin/version.rb +1 -1
  54. data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  55. data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  56. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  57. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  58. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  59. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  60. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  61. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  62. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  63. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  64. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  65. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  66. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  67. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  68. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  69. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  70. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  71. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  72. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  73. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  74. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  75. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  76. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  77. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  78. data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
  79. data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  80. data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
  81. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
  82. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
  83. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
  84. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
  85. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
  86. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
  87. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
  88. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
  89. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
  90. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
  91. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
  92. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
  93. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  94. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  95. data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  96. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +0 -0
  97. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  98. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  99. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  100. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  101. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  102. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  103. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  104. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  105. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  106. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  107. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  108. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  109. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  110. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  111. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  112. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  113. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  114. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  115. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  116. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  117. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  118. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  119. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  120. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  121. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  122. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  123. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  124. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  125. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  126. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  127. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  128. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  129. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  130. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  131. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  132. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  133. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  134. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  135. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  136. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  137. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  138. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  139. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  140. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  141. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  142. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  143. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  144. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  145. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  146. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  147. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  148. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  149. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  150. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  151. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  152. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  153. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  154. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  155. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  156. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  157. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  158. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  159. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  160. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  161. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  162. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  163. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  164. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  165. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  166. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  167. data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
  168. metadata +130 -153
  169. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  170. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
  171. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -55
  172. data/app/assets/javascripts/rails_admin/ra.sidescroll.coffee +0 -19
  173. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
  174. data/app/assets/javascripts/rails_admin/ui.coffee +0 -107
  175. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  176. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  177. data/lib/rails_admin/extensions/cancan.rb +0 -3
  178. 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 = @association ? @association.associated_primary_key : @model_config.abstract_model.primary_key
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.attributes_for(:create, @abstract_model).each do |name, value|
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 ||= association.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 < RailsAdmin::Config::Fields::Types::Text
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/base'
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 < RailsAdmin::Config::Fields::Types::Text
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/base'
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 < RailsAdmin::Config::Fields::Types::Text
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/base'
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 < RailsAdmin::Config::Fields::Base
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/base'
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 < RailsAdmin::Config::Fields::Types::Text
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/base'
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 < RailsAdmin::Config::Fields::Base
7
+ class Hidden < StringLike
8
8
  RailsAdmin::Config::Fields::Types.register(self)
9
9
 
10
10
  register_instance_option :view_helper do
@@ -12,7 +12,7 @@ module RailsAdmin
12
12
  {resize: '100x100>'}
13
13
  end
14
14
 
15
- register_instance_option :delete_key do
15
+ register_instance_option :delete_value do
16
16
  value.id
17
17
  end
18
18
 
@@ -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 :delete_key do
16
- value.file.identifier
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 :delete_key do
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
- "cached_#{name}_data" if bindings[:object].respond_to?("cached_#{name}_data")
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/base'
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 < RailsAdmin::Config::Fields::Types::Text
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/base'
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 < RailsAdmin::Config::Fields::Base
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/base'
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 < RailsAdmin::Config::Fields::Base
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/base'
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 < RailsAdmin::Config::Fields::Types::Text
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 < RailsAdmin::Extensions::CanCan::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 = model_object || abstract_model && abstract_model.model
9
- if authorized_for_dashboard_in_legacy_way?(action)
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 = model_object || abstract_model && abstract_model.model
19
- authorized_for_dashboard_in_legacy_way?(action, true) ||
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
- private
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
- def authorized_for_dashboard_in_legacy_way?(action, silent = false)
26
- return false unless action == :dashboard
27
- legacy_ability = @controller.current_ability.permissions[:can][:dashboard]
28
- if legacy_ability && (legacy_ability.empty? || legacy_ability.all?(&:empty?))
29
- ActiveSupport::Deprecation.warn('RailsAdmin CanCanCan Ability with `can :dashboard` is old and support will be removed in the next major release, use `can :read, :dashboard` instead. See https://github.com/sferik/rails_admin/issues/2901') unless silent
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
- def resolve_with_compatibility(action, subject)
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(Kaminari.config.page_method_name, current_page).per(per_page)
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
@@ -3,7 +3,7 @@ module RailsAdmin
3
3
  MAJOR = 2
4
4
  MINOR = 0
5
5
  PATCH = 0
6
- PRE = 'beta'.freeze
6
+ PRE = 'rc'.freeze
7
7
 
8
8
  class << self
9
9
  # @return [String]