rails_admin 0.8.1 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rails_admin might be problematic. Click here for more details.

Files changed (313) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -34
  3. data/LICENSE.md +1 -1
  4. data/README.md +34 -26
  5. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  9. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  10. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  11. data/app/assets/images/rails_admin/calendar.png +0 -0
  12. data/app/assets/images/rails_admin/clock.png +0 -0
  13. data/app/assets/images/rails_admin/magnifier.png +0 -0
  14. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  15. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  16. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  17. data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  18. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +8 -0
  19. data/app/assets/javascripts/rails_admin/jquery.migrate.js +3 -0
  20. data/app/assets/javascripts/rails_admin/ra.filter-box.js +148 -60
  21. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +31 -26
  22. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +211 -110
  23. data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
  24. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +59 -0
  25. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  26. data/app/assets/javascripts/rails_admin/ra.widgets.js +379 -0
  27. data/app/assets/javascripts/rails_admin/rails_admin.js +5 -5
  28. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  29. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  30. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  31. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  32. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  33. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +5 -5
  34. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
  35. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +9 -1
  36. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
  37. data/app/controllers/rails_admin/application_controller.rb +14 -8
  38. data/app/controllers/rails_admin/main_controller.rb +9 -9
  39. data/app/helpers/rails_admin/application_helper.rb +26 -11
  40. data/app/helpers/rails_admin/form_builder.rb +20 -12
  41. data/app/helpers/rails_admin/main_helper.rb +8 -7
  42. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_gap.html.haml +0 -0
  43. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_next_page.html.haml +0 -0
  44. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_page.html.haml +0 -0
  45. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_paginator.html.haml +0 -0
  46. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_prev_page.html.haml +0 -0
  47. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +4 -0
  48. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +4 -0
  49. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +4 -0
  50. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  51. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +2 -2
  52. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  53. data/app/views/layouts/rails_admin/application.html.haml +4 -10
  54. data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
  55. data/app/views/rails_admin/main/_delete_notice.html.haml +14 -9
  56. data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
  57. data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -1
  58. data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -3
  59. data/app/views/rails_admin/main/_form_file_upload.html.haml +5 -5
  60. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +7 -6
  61. data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
  62. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +16 -0
  63. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
  64. data/app/views/rails_admin/main/_form_simple_mde.haml +8 -0
  65. data/app/views/rails_admin/main/dashboard.html.haml +5 -6
  66. data/app/views/rails_admin/main/export.html.haml +45 -36
  67. data/app/views/rails_admin/main/history.html.haml +3 -3
  68. data/app/views/rails_admin/main/index.html.haml +37 -26
  69. data/app/views/rails_admin/main/show.html.haml +6 -7
  70. data/config/initializers/active_record_extensions.rb +3 -3
  71. data/config/initializers/haml.rb +4 -1
  72. data/config/locales/rails_admin.en.yml +5 -2
  73. data/lib/generators/rails_admin/templates/initializer.erb +6 -2
  74. data/lib/rails_admin/abstract_model.rb +9 -10
  75. data/lib/rails_admin/adapters/active_record/abstract_object.rb +9 -3
  76. data/lib/rails_admin/adapters/active_record/property.rb +1 -5
  77. data/lib/rails_admin/adapters/active_record.rb +83 -28
  78. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +3 -3
  79. data/lib/rails_admin/adapters/mongoid/association.rb +18 -6
  80. data/lib/rails_admin/adapters/mongoid/bson.rb +29 -0
  81. data/lib/rails_admin/adapters/mongoid/extension.rb +4 -2
  82. data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
  83. data/lib/rails_admin/adapters/mongoid.rb +40 -26
  84. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +1 -1
  85. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
  86. data/lib/rails_admin/bootstrap-sass.rb +8 -6
  87. data/lib/rails_admin/config/actions/base.rb +20 -5
  88. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -4
  89. data/lib/rails_admin/config/actions/dashboard.rb +9 -5
  90. data/lib/rails_admin/config/actions/edit.rb +1 -3
  91. data/lib/rails_admin/config/actions/export.rb +1 -1
  92. data/lib/rails_admin/config/actions/index.rb +5 -3
  93. data/lib/rails_admin/config/actions/new.rb +4 -5
  94. data/lib/rails_admin/config/actions.rb +1 -1
  95. data/lib/rails_admin/config/configurable.rb +25 -18
  96. data/lib/rails_admin/config/fields/association.rb +11 -3
  97. data/lib/rails_admin/config/fields/base.rb +20 -27
  98. data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
  99. data/lib/rails_admin/config/fields/factories/active_storage.rb +30 -0
  100. data/lib/rails_admin/config/fields/factories/carrierwave.rb +4 -2
  101. data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
  102. data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
  103. data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
  104. data/lib/rails_admin/config/fields/types/active_record_enum.rb +19 -2
  105. data/lib/rails_admin/config/fields/types/active_storage.rb +49 -0
  106. data/lib/rails_admin/config/fields/types/all.rb +7 -1
  107. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -0
  108. data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -15
  109. data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
  110. data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
  111. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  112. data/lib/rails_admin/config/fields/types/datetime.rb +6 -3
  113. data/lib/rails_admin/config/fields/types/file_upload.rb +12 -4
  114. data/lib/rails_admin/config/fields/types/froala.rb +9 -11
  115. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -1
  116. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  117. data/lib/rails_admin/config/fields/types/json.rb +9 -1
  118. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +53 -0
  119. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +56 -0
  120. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +125 -0
  121. data/lib/rails_admin/config/fields/types/password.rb +5 -1
  122. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +12 -1
  123. data/lib/rails_admin/config/fields/types/serialized.rb +2 -2
  124. data/lib/rails_admin/config/fields/types/shrine.rb +54 -0
  125. data/lib/rails_admin/config/fields/types/simple_mde.rb +36 -0
  126. data/lib/rails_admin/config/fields/types/string.rb +8 -7
  127. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  128. data/lib/rails_admin/config/fields/types/text.rb +2 -20
  129. data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
  130. data/lib/rails_admin/config/fields/types.rb +1 -1
  131. data/lib/rails_admin/config/fields.rb +3 -1
  132. data/lib/rails_admin/config/has_fields.rb +1 -1
  133. data/lib/rails_admin/config/has_groups.rb +1 -1
  134. data/lib/rails_admin/config/hideable.rb +1 -1
  135. data/lib/rails_admin/config/inspectable.rb +39 -0
  136. data/lib/rails_admin/config/lazy_model.rb +48 -8
  137. data/lib/rails_admin/config/model.rb +10 -22
  138. data/lib/rails_admin/config/proxyable/proxy.rb +7 -9
  139. data/lib/rails_admin/config/proxyable.rb +13 -1
  140. data/lib/rails_admin/config/sections/base.rb +4 -17
  141. data/lib/rails_admin/config/sections/list.rb +37 -0
  142. data/lib/rails_admin/config.rb +46 -25
  143. data/lib/rails_admin/engine.rb +37 -4
  144. data/lib/rails_admin/extension.rb +16 -4
  145. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +23 -7
  146. data/lib/rails_admin/extensions/cancancan.rb +1 -1
  147. data/lib/rails_admin/extensions/controller_extension.rb +6 -0
  148. data/lib/rails_admin/extensions/history/auditing_adapter.rb +2 -2
  149. data/lib/rails_admin/extensions/history/history.rb +2 -2
  150. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +59 -17
  151. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +11 -3
  152. data/lib/rails_admin/support/csv_converter.rb +20 -14
  153. data/lib/rails_admin/support/datetime.rb +7 -6
  154. data/lib/rails_admin/support/i18n.rb +7 -5
  155. data/lib/rails_admin/version.rb +2 -2
  156. data/lib/rails_admin.rb +23 -1
  157. data/lib/tasks/rails_admin.rake +16 -7
  158. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  159. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  160. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +2671 -0
  161. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  162. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  163. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  164. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  165. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  166. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  167. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  168. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  169. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  170. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  171. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  172. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  173. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  174. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  175. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  176. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  177. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  178. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  179. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  180. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  181. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  182. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  183. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  184. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  185. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  186. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  187. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  188. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  189. data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  190. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  191. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  192. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  193. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  194. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  195. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  196. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  197. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  198. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  199. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  200. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  201. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  202. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  203. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  204. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  205. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  206. data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  207. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +316 -161
  208. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +16528 -8420
  209. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  210. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  211. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  212. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  213. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  214. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  215. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  216. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  217. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  218. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  219. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  220. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  221. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  222. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  223. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  224. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  225. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  226. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  227. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  228. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  229. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  230. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  231. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  232. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  233. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  234. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  235. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  236. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  237. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  238. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  239. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  240. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  241. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  242. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  243. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  244. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  245. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  246. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  247. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  248. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  249. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  250. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  251. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  252. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  253. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  254. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  255. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  256. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  257. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  258. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  259. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  260. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  261. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  262. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  263. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  264. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  265. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  266. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  267. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  268. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  269. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  270. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  271. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  272. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  273. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  274. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  275. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  276. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  277. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  278. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  279. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +2342 -0
  280. data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
  281. metadata +214 -199
  282. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  283. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  284. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  285. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  286. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  287. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  288. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  289. data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  290. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  291. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  292. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  293. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  294. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  295. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  296. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  297. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  298. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  299. data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  300. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  301. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  302. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  303. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  304. data/app/assets/javascripts/rails_admin/jquery.remotipart.fixed.js +0 -72
  305. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -8
  306. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -52
  307. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -308
  308. data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
  309. data/config/initializers/devise_patch.rb +0 -9
  310. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  311. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  312. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
  313. data/lib/rails_admin/extensions/cancan.rb +0 -3
@@ -25,9 +25,7 @@ module RailsAdmin
25
25
  sanitize_params_for!(request.xhr? ? :modal : :update)
26
26
 
27
27
  @object.set_attributes(params[@abstract_model.param_key])
28
- @authorization_adapter && @authorization_adapter.attributes_for(:update, @abstract_model).each do |name, value|
29
- @object.send("#{name}=", value)
30
- end
28
+ @authorization_adapter && @authorization_adapter.authorize(:update, @abstract_model, @object)
31
29
  changes = @object.changes
32
30
  if @object.save
33
31
  @auditing_adapter && @auditing_adapter.update_object(@object, @abstract_model, _current_user, changes)
@@ -16,7 +16,7 @@ module RailsAdmin
16
16
  proc do
17
17
  if format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
18
18
  request.format = format
19
- @schema = HashHelper.symbolize(params[:schema]) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
19
+ @schema = HashHelper.symbolize(params[:schema].slice(:except, :include, :methods, :only).permit!.to_h) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
20
20
  @objects = list_entries(@model_config, :export)
21
21
  index
22
22
  else
@@ -1,3 +1,5 @@
1
+ require 'activemodel-serializers-xml'
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -41,7 +43,7 @@ module RailsAdmin
41
43
 
42
44
  respond_to do |format|
43
45
  format.html do
44
- render @action.template_name, status: (flash[:error].present? ? :not_found : 200)
46
+ render @action.template_name, status: @status_code || :ok
45
47
  end
46
48
 
47
49
  format.json do
@@ -71,13 +73,13 @@ module RailsAdmin
71
73
  end
72
74
 
73
75
  format.csv do
74
- header, encoding, output = CSVConverter.new(@objects, @schema).to_csv(params[:csv_options])
76
+ header, encoding, output = CSVConverter.new(@objects, @schema).to_csv(params[:csv_options].permit!.to_h)
75
77
  if params[:send_data]
76
78
  send_data output,
77
79
  type: "text/csv; charset=#{encoding}; #{'header=present' if header}",
78
80
  disposition: "attachment; filename=#{params[:model_name]}_#{DateTime.now.strftime('%Y-%m-%d_%Hh%Mm%S')}.csv"
79
81
  else
80
- render text: output
82
+ render plain: output
81
83
  end
82
84
  end
83
85
  end
@@ -20,8 +20,9 @@ module RailsAdmin
20
20
  @authorization_adapter && @authorization_adapter.attributes_for(:new, @abstract_model).each do |name, value|
21
21
  @object.send("#{name}=", value)
22
22
  end
23
- if object_params = params[@abstract_model.to_param]
24
- @object.set_attributes(@object.attributes.merge(object_params))
23
+ if object_params = params[@abstract_model.param_key]
24
+ sanitize_params_for!(request.xhr? ? :modal : :create)
25
+ @object.set_attributes(@object.attributes.merge(object_params.to_h))
25
26
  end
26
27
  respond_to do |format|
27
28
  format.html { render @action.template_name }
@@ -35,9 +36,7 @@ module RailsAdmin
35
36
  sanitize_params_for!(request.xhr? ? :modal : :create)
36
37
 
37
38
  @object.set_attributes(params[@abstract_model.param_key])
38
- @authorization_adapter && @authorization_adapter.attributes_for(:create, @abstract_model).each do |name, value|
39
- @object.send("#{name}=", value)
40
- end
39
+ @authorization_adapter && @authorization_adapter.authorize(:create, @abstract_model, @object)
41
40
 
42
41
  if @object.save
43
42
  @auditing_adapter && @auditing_adapter.create_object(@object, @abstract_model, _current_user)
@@ -96,7 +96,7 @@ module RailsAdmin
96
96
  action.instance_eval(&block) if block
97
97
  @@actions ||= []
98
98
  if action.custom_key.in?(@@actions.collect(&:custom_key))
99
- fail "Action #{action.custom_key} already exists. Please change its custom key."
99
+ raise "Action #{action.custom_key} already exists. Please change its custom key."
100
100
  else
101
101
  @@actions << action
102
102
  end
@@ -7,7 +7,7 @@ module RailsAdmin
7
7
  base.send :extend, ClassMethods
8
8
  end
9
9
 
10
- def has_option?(name) # rubocop:disable PredicateName
10
+ def has_option?(name) # rubocop:disable Naming/PredicateName
11
11
  options = self.class.instance_variable_get('@config_options')
12
12
  options && options.key?(name)
13
13
  end
@@ -23,6 +23,25 @@ module RailsAdmin
23
23
  self.class.register_deprecated_instance_option(option_name, replacement_option_name, scope, &custom_error)
24
24
  end
25
25
 
26
+ private
27
+
28
+ def with_recurring(option_name, value_proc, default_proc)
29
+ # Track recursive invocation with an instance variable. This prevents run-away recursion
30
+ # and allows configurations such as
31
+ # label { "#{label}".upcase }
32
+ # This will use the default definition when called recursively.
33
+ Thread.current[:rails_admin_recurring] ||= {}
34
+ Thread.current[:rails_admin_recurring][self] ||= {}
35
+ if Thread.current[:rails_admin_recurring][self][option_name]
36
+ instance_eval(&default_proc)
37
+ else
38
+ Thread.current[:rails_admin_recurring][self][option_name] = true
39
+ instance_eval(&value_proc)
40
+ end
41
+ ensure
42
+ Thread.current[:rails_admin_recurring].delete(self)
43
+ end
44
+
26
45
  module ClassMethods
27
46
  # Register an instance option. Instance option is a configuration
28
47
  # option that stores its value within an instance variable and is
@@ -43,7 +62,7 @@ module RailsAdmin
43
62
 
44
63
  # Define getter/setter by the option name
45
64
  scope.send(:define_method, option_name) do |*args, &block|
46
- if !args[0].nil? || block # rubocop:disable NonNilCheck
65
+ if !args[0].nil? || block
47
66
  # Invocation with args --> This is the declaration of the option, i.e. setter
48
67
  instance_variable_set("@#{option_name}_registered", args[0].nil? ? block : args[0])
49
68
  else
@@ -51,17 +70,7 @@ module RailsAdmin
51
70
  value = instance_variable_get("@#{option_name}_registered")
52
71
  case value
53
72
  when Proc
54
- # Track recursive invocation with an instance variable. This prevents run-away recursion
55
- # and allows configurations such as
56
- # label { "#{label}".upcase }
57
- # This will use the default definition when called recursively.
58
- if instance_variable_get("@#{option_name}_recurring")
59
- value = instance_eval(&default)
60
- else
61
- instance_variable_set("@#{option_name}_recurring", true)
62
- value = instance_eval(&value)
63
- instance_variable_set("@#{option_name}_recurring", false)
64
- end
73
+ value = with_recurring(option_name, value, default)
65
74
  when nil
66
75
  value = instance_eval(&default)
67
76
  end
@@ -75,12 +84,10 @@ module RailsAdmin
75
84
  if replacement_option_name
76
85
  ActiveSupport::Deprecation.warn("The #{option_name} configuration option is deprecated, please use #{replacement_option_name}.")
77
86
  send(replacement_option_name, *args, &block)
87
+ elsif block_given?
88
+ yield
78
89
  else
79
- if block_given?
80
- yield
81
- else
82
- fail("The #{option_name} configuration option is removed without replacement.")
83
- end
90
+ raise("The #{option_name} configuration option is removed without replacement.")
84
91
  end
85
92
  end
86
93
  end
@@ -10,7 +10,7 @@ module RailsAdmin
10
10
  end
11
11
 
12
12
  # Reader for the association information hash
13
- def association # rubocop:disable TrivialAccessors
13
+ def association
14
14
  @properties
15
15
  end
16
16
 
@@ -54,7 +54,7 @@ module RailsAdmin
54
54
  # preload entire associated collection (per associated_collection_scope) on load
55
55
  # Be sure to set limit in associated_collection_scope if set is large
56
56
  register_instance_option :associated_collection_cache_all do
57
- @associated_collection_cache_all ||= (associated_model_config.abstract_model.count < 100)
57
+ @associated_collection_cache_all ||= (associated_model_config.abstract_model.count < associated_model_limit)
58
58
  end
59
59
 
60
60
  # determines whether association's elements can be removed
@@ -62,6 +62,10 @@ module RailsAdmin
62
62
  association.foreign_key_nullable?
63
63
  end
64
64
 
65
+ register_instance_option :eager_load? do
66
+ !!searchable
67
+ end
68
+
65
69
  # Reader for the association's child model's configuration
66
70
  def associated_model_config
67
71
  @associated_model_config ||= RailsAdmin.config(association.klass)
@@ -74,7 +78,7 @@ module RailsAdmin
74
78
 
75
79
  # Reader for associated primary key
76
80
  def associated_primary_key
77
- @associated_primary_key ||= association.primary_key
81
+ @associated_primary_key ||= associated_model_config.abstract_model.primary_key
78
82
  end
79
83
 
80
84
  # Reader for the association's key
@@ -105,6 +109,10 @@ module RailsAdmin
105
109
  def virtual?
106
110
  true
107
111
  end
112
+
113
+ def associated_model_limit
114
+ RailsAdmin.config.default_associated_collection_limit
115
+ end
108
116
  end
109
117
  end
110
118
  end
@@ -2,20 +2,27 @@ require 'rails_admin/config/proxyable'
2
2
  require 'rails_admin/config/configurable'
3
3
  require 'rails_admin/config/hideable'
4
4
  require 'rails_admin/config/groupable'
5
+ require 'rails_admin/config/inspectable'
5
6
 
6
7
  module RailsAdmin
7
8
  module Config
8
9
  module Fields
9
- class Base # rubocop:disable ClassLength
10
+ class Base # rubocop:disable Metrics/ClassLength
10
11
  include RailsAdmin::Config::Proxyable
11
12
  include RailsAdmin::Config::Configurable
12
13
  include RailsAdmin::Config::Hideable
13
14
  include RailsAdmin::Config::Groupable
15
+ include RailsAdmin::Config::Inspectable
14
16
 
15
17
  attr_reader :name, :properties, :abstract_model
16
18
  attr_accessor :defined, :order, :section
17
19
  attr_reader :parent, :root
18
20
 
21
+ NAMED_INSTANCE_VARIABLES = [
22
+ :@parent, :@root, :@section, :@children_fields_registered,
23
+ :@associated_model_config, :@group
24
+ ].freeze
25
+
19
26
  def initialize(parent, name, properties)
20
27
  @parent = parent
21
28
  @root = parent.root
@@ -57,7 +64,7 @@ module RailsAdmin
57
64
  end
58
65
 
59
66
  register_instance_option :filterable? do
60
- !!searchable # rubocop:disable DoubleNegation
67
+ !!searchable
61
68
  end
62
69
 
63
70
  register_instance_option :search_operator do
@@ -92,7 +99,7 @@ module RailsAdmin
92
99
  property = am && am.properties.detect { |p| p.name == f.values.first.to_sym }
93
100
  type = property && property.type
94
101
  else # <attribute|column>
95
- am = (self.association? ? associated_model_config.abstract_model : abstract_model)
102
+ am = (association? ? associated_model_config.abstract_model : abstract_model)
96
103
  table_name = am.table_name
97
104
  column = f
98
105
  property = am.properties.detect { |p| p.name == f.to_sym }
@@ -172,12 +179,12 @@ module RailsAdmin
172
179
  :nil
173
180
  end
174
181
  end
175
- (@required ||= {})[context] ||= !!([name] + children_fields).uniq.detect do |column_name| # rubocop:disable DoubleNegation
182
+ (@required ||= {})[context] ||= !!([name] + children_fields).uniq.detect do |column_name|
176
183
  abstract_model.model.validators_on(column_name).detect do |v|
177
184
  !(v.options[:allow_nil] || v.options[:allow_blank]) &&
178
- [:presence, :numericality, :attachment_presence].include?(v.kind) &&
179
- (v.options[:on] == context || v.options[:on].blank?) &&
180
- (v.options[:if].blank? && v.options[:unless].blank?)
185
+ [:presence, :numericality, :attachment_presence].include?(v.kind) &&
186
+ (v.options[:on] == context || v.options[:on].blank?) &&
187
+ (v.options[:if].blank? && v.options[:unless].blank?)
181
188
  end
182
189
  end
183
190
  end
@@ -220,6 +227,10 @@ module RailsAdmin
220
227
  bindings[:view].render partial: "rails_admin/main/#{partial}", locals: {field: self, form: bindings[:form]}
221
228
  end
222
229
 
230
+ register_instance_option :default_filter_operator do
231
+ nil
232
+ end
233
+
223
234
  def editable?
224
235
  !(@properties && @properties.read_only?)
225
236
  end
@@ -247,8 +258,8 @@ module RailsAdmin
247
258
  #
248
259
  # @see RailsAdmin::Config::Fields::Base.register_instance_option :required?
249
260
  def optional(state = nil, &block)
250
- if !state.nil? || block # rubocop:disable NonNilCheck
251
- required state.nil? ? proc { false == (instance_eval(&block)) } : false == state
261
+ if !state.nil? || block
262
+ required state.nil? ? proc { false == instance_eval(&block) } : false == state
252
263
  else
253
264
  optional?
254
265
  end
@@ -324,24 +335,6 @@ module RailsAdmin
324
335
  def form_value
325
336
  form_default_value.nil? ? formatted_value : form_default_value
326
337
  end
327
-
328
- def inspect
329
- "#<#{self.class.name}[#{name}] #{
330
- instance_variables.collect do |v|
331
- value = instance_variable_get(v)
332
- if [:@parent, :@root, :@section, :@children_fields_registered,
333
- :@associated_model_config, :@group, :@bindings].include? v
334
- if value.respond_to? :name
335
- "#{v}=#{value.name.inspect}"
336
- else
337
- "#{v}=#{value.class.name}"
338
- end
339
- else
340
- "#{v}=#{value.inspect}"
341
- end
342
- end.join(', ')
343
- }>"
344
- end
345
338
  end
346
339
  end
347
340
  end
@@ -0,0 +1,12 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+
4
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
5
+ if defined?(::ActionText) && properties.try(:association?) && (match = /\Arich_text_(.+)\Z/.match properties.name) && properties.klass.to_s == 'ActionText::RichText'
6
+ field = RailsAdmin::Config::Fields::Types.load(:action_text).new(parent, match[1], properties)
7
+ fields << field
8
+ true
9
+ else
10
+ false
11
+ end
12
+ end
@@ -0,0 +1,30 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+ require 'rails_admin/config/fields/types/file_upload'
4
+
5
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
+ if defined?(::ActiveStorage) && properties.try(:association?) && (match = /\A(.+)_attachments?\Z/.match properties.name) && properties.klass.to_s == 'ActiveStorage::Attachment'
7
+ name = match[1]
8
+ field = RailsAdmin::Config::Fields::Types.load(
9
+ properties.type == :has_many ? :multiple_active_storage : :active_storage,
10
+ ).new(parent, name, properties)
11
+ fields << field
12
+ associations =
13
+ if properties.type == :has_many
14
+ ["#{name}_attachments".to_sym, "#{name}_blobs".to_sym]
15
+ else
16
+ ["#{name}_attachment".to_sym, "#{name}_blob".to_sym]
17
+ end
18
+ children_fields = associations.map do |child_name|
19
+ next unless child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
20
+ child_field = fields.detect { |f| f.name == child_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_association, fields)
21
+ child_field.hide unless field == child_field
22
+ child_field.filterable(false) unless field == child_field
23
+ child_field.name
24
+ end.flatten.compact
25
+ field.children_fields(children_fields)
26
+ true
27
+ else
28
+ false
29
+ end
30
+ end
@@ -4,9 +4,11 @@ require 'rails_admin/config/fields/types/file_upload'
4
4
 
5
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
6
  model = parent.abstract_model.model
7
- if defined?(::CarrierWave) && (model).is_a?(CarrierWave::Mount) && model.uploaders.include?(attachment_name = properties.name.to_s.chomp('_file_name').to_sym)
7
+ if defined?(::CarrierWave) && model.is_a?(CarrierWave::Mount) && model.uploaders.include?(attachment_name = properties.name.to_s.chomp('_file_name').to_sym)
8
8
  columns = [model.uploader_options[attachment_name][:mount_on] || attachment_name, "#{attachment_name}_content_type".to_sym, "#{attachment_name}_file_size".to_sym]
9
- field = RailsAdmin::Config::Fields::Types.load(:carrierwave).new(parent, attachment_name, properties)
9
+ field = RailsAdmin::Config::Fields::Types.load(
10
+ [:serialized, :json].include?(properties.type) ? :multiple_carrierwave : :carrierwave,
11
+ ).new(parent, attachment_name, properties)
10
12
  fields << field
11
13
  children_fields = []
12
14
  columns.each do |children_column_name|
@@ -4,7 +4,7 @@ require 'rails_admin/config/fields/types/file_upload'
4
4
 
5
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
6
  extensions = [:name, :uid]
7
- if (properties.name.to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.dragonfly_attachment_classes.collect(&:attribute).include?(attachment_name = Regexp.last_match[1].to_sym)
7
+ if (properties.name.to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.respond_to?(:dragonfly_attachment_classes) && parent.abstract_model.model.dragonfly_attachment_classes.collect(&:attribute).include?(attachment_name = Regexp.last_match[1].to_sym)
8
8
  field = RailsAdmin::Config::Fields::Types.load(:dragonfly).new(parent, attachment_name, properties)
9
9
  children_fields = []
10
10
  extensions.each do |ext|
@@ -0,0 +1,27 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+ require 'rails_admin/config/fields/types/file_upload'
4
+
5
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
+ next false unless defined?(::Shrine)
7
+
8
+ attachment_names = parent.abstract_model.model.ancestors.select { |m| m.is_a?(Shrine::Attachment) }.map { |a| a.instance_variable_get("@name") }
9
+ next false if attachment_names.blank?
10
+
11
+ attachment_name = attachment_names.detect { |a| a == properties.name.to_s.chomp('_data').to_sym }
12
+ next false unless attachment_name
13
+
14
+ field = RailsAdmin::Config::Fields::Types.load(:shrine).new(parent, attachment_name, properties)
15
+ fields << field
16
+
17
+ data_field_name = "#{attachment_name}_data".to_sym
18
+ child_properties = parent.abstract_model.properties.detect { |p| p.name == data_field_name }
19
+ next true unless child_properties
20
+
21
+ children_field = fields.detect { |f| f.name == data_field_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
22
+ children_field.hide unless field == children_field
23
+ children_field.filterable(false) unless field == children_field
24
+
25
+ field.children_fields([data_field_name])
26
+ true
27
+ end
@@ -0,0 +1,30 @@
1
+ require 'rails_admin/config/fields/types/text'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class ActionText < Text
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :version do
12
+ '1.1.1'
13
+ end
14
+
15
+ register_instance_option :css_location do
16
+ "https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.css"
17
+ end
18
+
19
+ register_instance_option :js_location do
20
+ "https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.js"
21
+ end
22
+
23
+ register_instance_option :partial do
24
+ :form_action_text
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -28,11 +28,28 @@ module RailsAdmin
28
28
  end
29
29
 
30
30
  def parse_value(value)
31
- value.present? ? enum.invert[value.to_i] : nil
31
+ return unless value.present?
32
+ abstract_model.model.attribute_types[name.to_s].serialize(value)
32
33
  end
33
34
 
34
35
  def parse_input(params)
35
- params[name] = parse_value(params[name]) if params[name]
36
+ value = params[name]
37
+ return unless value
38
+ params[name] = parse_input_value(value)
39
+ end
40
+
41
+ def form_value
42
+ enum[super] || super
43
+ end
44
+
45
+ private
46
+
47
+ def parse_input_value(value)
48
+ abstract_model.model.attribute_types[name.to_s].deserialize(value)
49
+ end
50
+
51
+ def type_cast_value(value)
52
+ abstract_model.model.column_types[name.to_s].type_cast_from_user(value)
36
53
  end
37
54
  end
38
55
  end
@@ -0,0 +1,49 @@
1
+ require 'rails_admin/config/fields/types/file_upload'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class ActiveStorage < RailsAdmin::Config::Fields::Types::FileUpload
8
+ RailsAdmin::Config::Fields::Types.register(self)
9
+
10
+ register_instance_option :thumb_method do
11
+ if ::ActiveStorage::VERSION::MAJOR >= 6
12
+ {resize_to_limit: [100, 100]}
13
+ else
14
+ {resize: '100x100>'}
15
+ end
16
+ end
17
+
18
+ register_instance_option :delete_method do
19
+ "remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
20
+ end
21
+
22
+ register_instance_option :image? do
23
+ if value
24
+ value.filename.to_s.split('.').last =~ /jpg|jpeg|png|gif|svg/i
25
+ end
26
+ end
27
+
28
+ def resource_url(thumb = false)
29
+ return nil unless value
30
+ if thumb && value.variable?
31
+ thumb = thumb_method if thumb == true
32
+ variant = value.variant(thumb)
33
+ Rails.application.routes.url_helpers.rails_blob_representation_path(
34
+ variant.blob.signed_id, variant.variation.key, variant.blob.filename, only_path: true
35
+ )
36
+ else
37
+ Rails.application.routes.url_helpers.rails_blob_path(value, only_path: true)
38
+ end
39
+ end
40
+
41
+ def value
42
+ attachment = super
43
+ attachment if attachment && attachment.attached?
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,4 +1,6 @@
1
+ require 'rails_admin/config/fields/types/action_text'
1
2
  require 'rails_admin/config/fields/types/active_record_enum'
3
+ require 'rails_admin/config/fields/types/active_storage'
2
4
  require 'rails_admin/config/fields/types/belongs_to_association'
3
5
  require 'rails_admin/config/fields/types/boolean'
4
6
  require 'rails_admin/config/fields/types/bson_object_id'
@@ -10,7 +12,9 @@ require 'rails_admin/config/fields/types/enum'
10
12
  require 'rails_admin/config/fields/types/file_upload'
11
13
  require 'rails_admin/config/fields/types/paperclip'
12
14
  require 'rails_admin/config/fields/types/carrierwave'
13
- require 'rails_admin/config/fields/types/refile'
15
+ require 'rails_admin/config/fields/types/multiple_file_upload'
16
+ require 'rails_admin/config/fields/types/multiple_active_storage'
17
+ require 'rails_admin/config/fields/types/multiple_carrierwave'
14
18
  require 'rails_admin/config/fields/types/float'
15
19
  require 'rails_admin/config/fields/types/has_and_belongs_to_many_association'
16
20
  require 'rails_admin/config/fields/types/has_many_association'
@@ -22,9 +26,11 @@ require 'rails_admin/config/fields/types/string'
22
26
  require 'rails_admin/config/fields/types/hidden'
23
27
  require 'rails_admin/config/fields/types/text'
24
28
  require 'rails_admin/config/fields/types/serialized'
29
+ require 'rails_admin/config/fields/types/shrine'
25
30
  require 'rails_admin/config/fields/types/time'
26
31
  require 'rails_admin/config/fields/types/timestamp'
27
32
  require 'rails_admin/config/fields/types/color'
33
+ require 'rails_admin/config/fields/types/simple_mde'
28
34
  require 'rails_admin/config/fields/types/ck_editor'
29
35
  require 'rails_admin/config/fields/types/code_mirror'
30
36
  require 'rails_admin/config/fields/types/wysihtml5'
@@ -31,6 +31,14 @@ module RailsAdmin
31
31
  true
32
32
  end
33
33
 
34
+ register_instance_option :eager_load? do
35
+ true
36
+ end
37
+
38
+ def associated_primary_key
39
+ @associated_primary_key ||= association.primary_key
40
+ end
41
+
34
42
  def selected_id
35
43
  bindings[:object].send(foreign_key)
36
44
  end
@@ -8,14 +8,6 @@ module RailsAdmin
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
- OBJECT_ID ||= begin
12
- if defined?(Moped::BSON)
13
- Moped::BSON::ObjectId
14
- elsif defined?(BSON::ObjectId)
15
- BSON::ObjectId
16
- end
17
- end
18
-
19
11
  register_instance_option :label do
20
12
  label = ((@label ||= {})[::I18n.locale] ||= abstract_model.model.human_attribute_name name)
21
13
  label = 'Id' if label == ''
@@ -35,13 +27,7 @@ module RailsAdmin
35
27
  end
36
28
 
37
29
  def parse_value(value)
38
- value.present? ? OBJECT_ID.from_string(value) : nil
39
- rescue BSON::ObjectId::Invalid
40
- nil
41
- rescue => e
42
- unless ['BSON::InvalidObjectId', 'Moped::Errors::InvalidObjectId'].include? e.class.to_s
43
- raise e
44
- end
30
+ value.present? ? abstract_model.parse_object_id(value) : nil
45
31
  end
46
32
 
47
33
  def parse_input(params)
@@ -1,13 +1,17 @@
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
 
11
+ register_instance_option :version do
12
+ '4.11.4'
13
+ end
14
+
11
15
  # If you want to have a different toolbar configuration for CKEditor
12
16
  # create your own custom config.js and override this configuration
13
17
  register_instance_option :config_js do
@@ -21,16 +25,12 @@ module RailsAdmin
21
25
 
22
26
  # Use this if you want to point to a cloud instances of the base CKeditor
23
27
  register_instance_option :base_location do
24
- "#{Rails.application.config.assets.prefix}/ckeditor/"
28
+ "https://cdnjs.cloudflare.com/ajax/libs/ckeditor/#{version}/"
25
29
  end
26
30
 
27
31
  register_instance_option :partial do
28
32
  :form_ck_editor
29
33
  end
30
-
31
- [:base_location, :config_js, :location].each do |key|
32
- register_deprecated_instance_option :"ckeditor_#{key}", key
33
- end
34
34
  end
35
35
  end
36
36
  end