rails_admin 2.2.1 → 3.1.2

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.
Files changed (522) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -11
  3. data/README.md +42 -43
  4. data/Rakefile +15 -2
  5. data/app/assets/javascripts/rails_admin/application.js.erb +29 -0
  6. data/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
  7. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  9. data/app/controllers/rails_admin/application_controller.rb +6 -3
  10. data/app/controllers/rails_admin/main_controller.rb +55 -50
  11. data/app/helpers/rails_admin/application_helper.rb +129 -63
  12. data/app/helpers/rails_admin/form_builder.rb +17 -6
  13. data/app/helpers/rails_admin/main_helper.rb +18 -42
  14. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  15. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  16. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  17. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
  18. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  19. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  20. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
  21. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  22. data/app/views/layouts/rails_admin/_head.html.erb +29 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/content.html.erb +22 -0
  28. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  29. data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  30. data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  31. data/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
  33. data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
  34. data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  35. data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
  38. data/app/views/rails_admin/main/_form_field.html.erb +1 -0
  39. data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  40. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +49 -0
  41. data/app/views/rails_admin/main/_form_filtering_select.html.erb +33 -0
  42. data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  43. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  44. data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  45. data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  46. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +32 -0
  47. data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  48. data/app/views/rails_admin/main/_form_text.html.erb +1 -0
  49. data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  50. data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  51. data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  52. data/app/views/rails_admin/main/dashboard.html.erb +64 -0
  53. data/app/views/rails_admin/main/delete.html.erb +21 -0
  54. data/app/views/rails_admin/main/edit.html.erb +3 -0
  55. data/app/views/rails_admin/main/export.html.erb +149 -0
  56. data/app/views/rails_admin/main/history.html.erb +80 -0
  57. data/app/views/rails_admin/main/index.html.erb +184 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +30 -0
  60. data/config/initializers/active_record_extensions.rb +25 -0
  61. data/config/initializers/mongoid_extensions.rb +3 -1
  62. data/config/locales/rails_admin.en.yml +8 -3
  63. data/config/routes.rb +2 -0
  64. data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  65. data/lib/generators/rails_admin/install_generator.rb +117 -5
  66. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  67. data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  68. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  69. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  70. data/lib/generators/rails_admin/utils.rb +2 -0
  71. data/lib/rails_admin/abstract_model.rb +35 -15
  72. data/lib/rails_admin/adapters/active_record/association.rb +31 -2
  73. data/lib/rails_admin/adapters/active_record/object_extension.rb +31 -0
  74. data/lib/rails_admin/adapters/active_record/property.rb +4 -2
  75. data/lib/rails_admin/adapters/active_record.rb +60 -28
  76. data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
  77. data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
  78. data/lib/rails_admin/adapters/mongoid/association.rb +52 -13
  79. data/lib/rails_admin/adapters/mongoid/bson.rb +6 -5
  80. data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
  81. data/lib/rails_admin/adapters/mongoid/object_extension.rb +34 -0
  82. data/lib/rails_admin/adapters/mongoid/property.rb +7 -5
  83. data/lib/rails_admin/adapters/mongoid.rb +33 -23
  84. data/lib/rails_admin/config/actions/base.rb +11 -4
  85. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -2
  86. data/lib/rails_admin/config/actions/dashboard.rb +16 -9
  87. data/lib/rails_admin/config/actions/delete.rb +11 -9
  88. data/lib/rails_admin/config/actions/edit.rb +13 -7
  89. data/lib/rails_admin/config/actions/export.rb +6 -3
  90. data/lib/rails_admin/config/actions/history_index.rb +4 -2
  91. data/lib/rails_admin/config/actions/history_show.rb +4 -2
  92. data/lib/rails_admin/config/actions/index.rb +9 -8
  93. data/lib/rails_admin/config/actions/new.rb +18 -10
  94. data/lib/rails_admin/config/actions/show.rb +3 -1
  95. data/lib/rails_admin/config/actions/show_in_app.rb +9 -3
  96. data/lib/rails_admin/config/actions.rb +6 -4
  97. data/lib/rails_admin/config/configurable.rb +4 -2
  98. data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
  99. data/lib/rails_admin/config/fields/association.rb +21 -11
  100. data/lib/rails_admin/config/fields/base.rb +86 -36
  101. data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
  102. data/lib/rails_admin/config/fields/factories/active_storage.rb +5 -1
  103. data/lib/rails_admin/config/fields/factories/association.rb +12 -13
  104. data/lib/rails_admin/config/fields/factories/carrierwave.rb +6 -2
  105. data/lib/rails_admin/config/fields/factories/devise.rb +6 -2
  106. data/lib/rails_admin/config/fields/factories/dragonfly.rb +6 -2
  107. data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
  108. data/lib/rails_admin/config/fields/factories/paperclip.rb +6 -2
  109. data/lib/rails_admin/config/fields/factories/password.rb +2 -0
  110. data/lib/rails_admin/config/fields/factories/shrine.rb +3 -1
  111. data/lib/rails_admin/config/fields/group.rb +3 -2
  112. data/lib/rails_admin/config/fields/types/action_text.rb +7 -1
  113. data/lib/rails_admin/config/fields/types/active_record_enum.rb +4 -0
  114. data/lib/rails_admin/config/fields/types/active_storage.rb +23 -7
  115. data/lib/rails_admin/config/fields/types/all.rb +4 -0
  116. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +9 -15
  117. data/lib/rails_admin/config/fields/types/boolean.rb +38 -8
  118. data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
  119. data/lib/rails_admin/config/fields/types/carrierwave.rb +3 -0
  120. data/lib/rails_admin/config/fields/types/citext.rb +15 -0
  121. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
  122. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
  123. data/lib/rails_admin/config/fields/types/color.rb +8 -2
  124. data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
  125. data/lib/rails_admin/config/fields/types/date.rb +12 -6
  126. data/lib/rails_admin/config/fields/types/datetime.rb +36 -21
  127. data/lib/rails_admin/config/fields/types/decimal.rb +11 -2
  128. data/lib/rails_admin/config/fields/types/dragonfly.rb +5 -1
  129. data/lib/rails_admin/config/fields/types/enum.rb +16 -3
  130. data/lib/rails_admin/config/fields/types/file_upload.rb +6 -3
  131. data/lib/rails_admin/config/fields/types/float.rb +11 -2
  132. data/lib/rails_admin/config/fields/types/froala.rb +2 -0
  133. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
  134. data/lib/rails_admin/config/fields/types/has_many_association.rb +7 -5
  135. data/lib/rails_admin/config/fields/types/has_one_association.rb +12 -14
  136. data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
  137. data/lib/rails_admin/config/fields/types/inet.rb +2 -0
  138. data/lib/rails_admin/config/fields/types/integer.rb +4 -6
  139. data/lib/rails_admin/config/fields/types/json.rb +2 -0
  140. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +30 -6
  141. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
  142. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +6 -3
  143. data/lib/rails_admin/config/fields/types/numeric.rb +24 -0
  144. data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
  145. data/lib/rails_admin/config/fields/types/password.rb +2 -0
  146. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +5 -2
  147. data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
  148. data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
  149. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
  150. data/lib/rails_admin/config/fields/types/string.rb +3 -1
  151. data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
  152. data/lib/rails_admin/config/fields/types/text.rb +2 -0
  153. data/lib/rails_admin/config/fields/types/time.rb +16 -4
  154. data/lib/rails_admin/config/fields/types/timestamp.rb +2 -4
  155. data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
  156. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
  157. data/lib/rails_admin/config/fields/types.rb +3 -1
  158. data/lib/rails_admin/config/fields.rb +6 -2
  159. data/lib/rails_admin/config/groupable.rb +2 -0
  160. data/lib/rails_admin/config/has_description.rb +2 -0
  161. data/lib/rails_admin/config/has_fields.rb +12 -7
  162. data/lib/rails_admin/config/has_groups.rb +2 -0
  163. data/lib/rails_admin/config/hideable.rb +3 -1
  164. data/lib/rails_admin/config/inspectable.rb +3 -3
  165. data/lib/rails_admin/config/lazy_model.rb +13 -7
  166. data/lib/rails_admin/config/model.rb +22 -10
  167. data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
  168. data/lib/rails_admin/config/proxyable.rb +2 -0
  169. data/lib/rails_admin/config/sections/base.rb +4 -3
  170. data/lib/rails_admin/config/sections/create.rb +2 -0
  171. data/lib/rails_admin/config/sections/edit.rb +2 -0
  172. data/lib/rails_admin/config/sections/export.rb +2 -0
  173. data/lib/rails_admin/config/sections/list.rb +14 -19
  174. data/lib/rails_admin/config/sections/modal.rb +2 -0
  175. data/lib/rails_admin/config/sections/nested.rb +2 -0
  176. data/lib/rails_admin/config/sections/show.rb +2 -0
  177. data/lib/rails_admin/config/sections/update.rb +2 -0
  178. data/lib/rails_admin/config/sections.rb +3 -1
  179. data/lib/rails_admin/config.rb +81 -44
  180. data/lib/rails_admin/engine.rb +43 -32
  181. data/lib/rails_admin/extension.rb +8 -14
  182. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +25 -6
  183. data/lib/rails_admin/extensions/cancancan.rb +2 -0
  184. data/lib/rails_admin/extensions/controller_extension.rb +2 -0
  185. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +61 -34
  186. data/lib/rails_admin/extensions/paper_trail.rb +2 -0
  187. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +8 -7
  188. data/lib/rails_admin/extensions/pundit.rb +2 -0
  189. data/lib/rails_admin/support/csv_converter.rb +14 -15
  190. data/lib/rails_admin/support/datetime.rb +50 -85
  191. data/lib/rails_admin/support/es_module_processor.rb +23 -0
  192. data/lib/rails_admin/support/hash_helper.rb +8 -5
  193. data/lib/rails_admin/version.rb +42 -3
  194. data/lib/rails_admin.rb +7 -5
  195. data/lib/tasks/rails_admin.rake +5 -3
  196. data/package.json +30 -0
  197. data/src/rails_admin/base.js +29 -0
  198. data/src/rails_admin/filter-box.js +360 -0
  199. data/src/rails_admin/filtering-multiselect.js +389 -0
  200. data/src/rails_admin/filtering-select.js +308 -0
  201. data/src/rails_admin/i18n.js +18 -0
  202. data/src/rails_admin/jquery.js +3 -0
  203. data/src/rails_admin/nested-form-hooks.js +110 -0
  204. data/src/rails_admin/remote-form.js +193 -0
  205. data/src/rails_admin/sidescroll.js +20 -0
  206. data/src/rails_admin/styles/base/theming.scss +342 -0
  207. data/src/rails_admin/styles/base/variables.scss +3 -0
  208. data/src/rails_admin/styles/base.scss +27 -0
  209. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  210. data/src/rails_admin/styles/filtering-select.scss +70 -0
  211. data/src/rails_admin/styles/widgets.scss +26 -0
  212. data/src/rails_admin/ui.js +176 -0
  213. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  214. data/src/rails_admin/widgets.js +507 -0
  215. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  216. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  217. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  218. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  219. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  220. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  221. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  222. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  223. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  224. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  225. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  226. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  227. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  228. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  229. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  230. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  231. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  232. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  233. data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  234. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  251. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  252. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  253. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  254. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  255. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  256. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  257. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  258. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  259. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  260. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  261. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  262. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  263. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  264. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  265. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  266. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  267. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  268. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  269. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  270. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  271. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  272. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  273. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  274. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  275. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  276. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  277. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  278. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  279. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  280. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  281. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  282. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  283. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  284. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  285. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  286. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  287. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  288. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  289. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  290. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  291. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  292. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  293. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  294. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  295. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  296. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  297. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  298. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  299. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  300. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  301. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  302. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  303. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  304. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  305. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  306. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  307. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  308. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  309. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  310. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  311. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  312. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  313. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  314. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  315. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  316. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  317. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  318. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
  319. metadata +180 -328
  320. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  321. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  322. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  323. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  324. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  325. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  326. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  327. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  328. data/app/assets/images/rails_admin/calendar.png +0 -0
  329. data/app/assets/images/rails_admin/clock.png +0 -0
  330. data/app/assets/images/rails_admin/logo.png +0 -0
  331. data/app/assets/images/rails_admin/magnifier.png +0 -0
  332. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  333. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  334. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  335. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  336. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  337. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  338. data/app/assets/javascripts/rails_admin/jquery.migrate.js +0 -3
  339. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -246
  340. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  341. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  342. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  343. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  344. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  345. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  346. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  347. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -21
  348. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  349. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  354. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  355. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  356. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  357. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  358. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  359. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  360. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  361. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  362. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  364. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  365. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  366. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  367. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  368. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  369. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  370. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  371. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  372. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  373. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  375. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  376. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  377. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  378. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  379. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  380. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  381. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  382. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  383. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  384. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  385. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  386. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  387. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  388. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  389. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  390. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
  391. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  392. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  393. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -49
  394. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  395. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  396. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  397. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  398. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  399. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  400. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  401. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  402. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  403. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  404. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  405. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  406. data/app/views/rails_admin/main/delete.html.haml +0 -18
  407. data/app/views/rails_admin/main/edit.html.haml +0 -2
  408. data/app/views/rails_admin/main/export.html.haml +0 -92
  409. data/app/views/rails_admin/main/history.html.haml +0 -51
  410. data/app/views/rails_admin/main/index.html.haml +0 -126
  411. data/app/views/rails_admin/main/new.html.haml +0 -2
  412. data/app/views/rails_admin/main/show.html.haml +0 -15
  413. data/config/initializers/haml.rb +0 -5
  414. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -38
  415. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  416. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  417. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  418. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  419. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  420. data/lib/rails_admin/extensions/history/history.rb +0 -44
  421. data/lib/rails_admin/extensions/history.rb +0 -3
  422. data/lib/rails_admin/support/i18n.rb +0 -43
  423. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  424. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  425. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  426. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  427. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  428. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  429. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  430. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  431. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  432. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  433. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  434. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  435. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  436. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  437. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  438. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  439. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  440. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  441. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  442. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  443. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  444. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  445. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  446. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  447. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  448. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  449. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  450. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  451. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  452. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  453. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  454. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  455. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  456. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -164
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
  467. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  468. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  469. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  470. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2611
  471. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  472. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
  473. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
  474. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  475. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  476. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  477. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  478. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  479. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  480. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  481. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  482. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  483. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  484. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  485. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  486. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  487. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  488. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  489. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  490. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  491. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  492. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  493. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  494. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  495. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  496. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  497. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  498. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  499. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  500. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  501. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  502. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  503. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  504. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  505. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  506. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  507. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  508. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  509. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  510. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  511. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  512. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  513. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  514. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  515. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  516. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  517. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  518. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  519. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
  520. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  521. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  522. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/lazy_model'
2
4
  require 'rails_admin/config/sections/list'
3
5
  require 'active_support/core_ext/module/attribute_accessors'
@@ -27,15 +29,15 @@ module RailsAdmin
27
29
  # Configuration option to specify which models you want to exclude.
28
30
  attr_accessor :excluded_models
29
31
 
30
- # Configuration option to specify a whitelist of models you want to RailsAdmin to work with.
31
- # The excluded_models list applies against the whitelist as well and further reduces the models
32
+ # Configuration option to specify a allowlist of models you want to RailsAdmin to work with.
33
+ # The excluded_models list applies against the allowlist as well and further reduces the models
32
34
  # RailsAdmin will use.
33
35
  # If included_models is left empty ([]), then RailsAdmin will automatically use all the models
34
36
  # in your application (less any excluded_models you may have specified).
35
37
  attr_accessor :included_models
36
38
 
37
39
  # Fields to be hidden in show, create and update views
38
- attr_accessor :default_hidden_fields
40
+ attr_reader :default_hidden_fields
39
41
 
40
42
  # Default items per page value used if a model level option has not
41
43
  # been configured
@@ -56,14 +58,8 @@ module RailsAdmin
56
58
  # Tell browsers whether to use the native HTML5 validations (novalidate form option).
57
59
  attr_accessor :browser_validations
58
60
 
59
- # Set the max width of columns in list view before a new set is created
60
- attr_accessor :total_columns_width
61
-
62
- # Enable horizontal-scrolling table in list view, ignore total_columns_width
63
- attr_accessor :sidescroll
64
-
65
61
  # set parent controller
66
- attr_accessor :parent_controller
62
+ attr_reader :parent_controller
67
63
 
68
64
  # set settings for `protect_from_forgery` method
69
65
  # By default, it raises exception upon invalid CSRF tokens
@@ -75,6 +71,9 @@ module RailsAdmin
75
71
  # @see RailsAdmin.config
76
72
  attr_reader :registry
77
73
 
74
+ # Bootstrap CSS classes used for Navigation bar
75
+ attr_accessor :navbar_css_classes
76
+
78
77
  # show Gravatar in Navigation bar
79
78
  attr_accessor :show_gravatar
80
79
 
@@ -82,6 +81,9 @@ module RailsAdmin
82
81
  attr_accessor :navigation_static_links
83
82
  attr_accessor :navigation_static_label
84
83
 
84
+ # Set where RailsAdmin fetches JS/CSS from, defaults to :sprockets
85
+ attr_writer :asset_source
86
+
85
87
  # Setup authentication to be run as a before filter
86
88
  # This is run inside the controller instance so you can setup any authentication you need to
87
89
  #
@@ -110,14 +112,14 @@ module RailsAdmin
110
112
  @authenticate || DEFAULT_AUTHENTICATION
111
113
  end
112
114
 
113
- # Setup auditing/history/versioning provider that observe objects lifecycle
115
+ # Setup auditing/versioning provider that observe objects lifecycle
114
116
  def audit_with(*args, &block)
115
117
  extension = args.shift
116
118
  if extension
117
119
  klass = RailsAdmin::AUDITING_ADAPTERS[extension]
118
120
  klass.setup if klass.respond_to? :setup
119
121
  @audit = proc do
120
- @auditing_adapter = klass.new(*([self] + args).compact)
122
+ @auditing_adapter = klass.new(*([self] + args).compact, &block)
121
123
  end
122
124
  elsif block
123
125
  @audit = block
@@ -145,7 +147,7 @@ module RailsAdmin
145
147
  # config.authorize_with :cancancan
146
148
  # end
147
149
  #
148
- # See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
150
+ # See the wiki[https://github.com/railsadminteam/rails_admin/wiki] for more on authorization.
149
151
  #
150
152
  # @see RailsAdmin::Config::DEFAULT_AUTHORIZE
151
153
  def authorize_with(*args, &block)
@@ -154,7 +156,7 @@ module RailsAdmin
154
156
  klass = RailsAdmin::AUTHORIZATION_ADAPTERS[extension]
155
157
  klass.setup if klass.respond_to? :setup
156
158
  @authorize = proc do
157
- @authorization_adapter = klass.new(*([self] + args).compact)
159
+ @authorization_adapter = klass.new(*([self] + args).compact, &block)
158
160
  end
159
161
  elsif block
160
162
  @authorize = block
@@ -198,10 +200,10 @@ module RailsAdmin
198
200
  end
199
201
 
200
202
  def default_search_operator=(operator)
201
- if %w(default like starts_with ends_with is =).include? operator
203
+ if %w[default like not_like starts_with ends_with is =].include? operator
202
204
  @default_search_operator = operator
203
205
  else
204
- raise(ArgumentError.new("Search operator '#{operator}' not supported"))
206
+ raise ArgumentError.new("Search operator '#{operator}' not supported")
205
207
  end
206
208
  end
207
209
 
@@ -223,23 +225,37 @@ module RailsAdmin
223
225
  #
224
226
  # @see RailsAdmin::Config.registry
225
227
  def model(entity, &block)
226
- key = begin
227
- if entity.is_a?(RailsAdmin::AbstractModel)
228
+ key =
229
+ case entity
230
+ when RailsAdmin::AbstractModel
228
231
  entity.model.try(:name).try :to_sym
229
- elsif entity.is_a?(Class)
232
+ when Class, ConstLoadSuppressor::ConstProxy
230
233
  entity.name.to_sym
231
- elsif entity.is_a?(String) || entity.is_a?(Symbol)
234
+ when String, Symbol
232
235
  entity.to_sym
233
236
  else
234
237
  entity.class.name.to_sym
235
238
  end
236
- end
237
239
 
238
- @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
240
+ @registry[key] ||= RailsAdmin::Config::LazyModel.new(key.to_s)
239
241
  @registry[key].add_deferred_block(&block) if block
240
242
  @registry[key]
241
243
  end
242
244
 
245
+ def asset_source
246
+ @asset_source ||=
247
+ begin
248
+ detected = defined?(Sprockets) ? :sprockets : :invalid
249
+ unless ARGV.join(' ').include? 'rails_admin:install'
250
+ warn <<~MSG
251
+ [Warning] After upgrading RailsAdmin to 3.x you haven't set asset_source yet, using :#{detected} as the default.
252
+ To suppress this message, run 'rails rails_admin:install' to setup the asset delivery method suitable to you.
253
+ MSG
254
+ end
255
+ detected
256
+ end
257
+ end
258
+
243
259
  def default_hidden_fields=(fields)
244
260
  if fields.is_a?(Array)
245
261
  @default_hidden_fields = {}
@@ -250,9 +266,33 @@ module RailsAdmin
250
266
  end
251
267
  end
252
268
 
253
- # Returns action configuration object
269
+ def parent_controller=(name)
270
+ @parent_controller = name
271
+
272
+ if defined?(RailsAdmin::ApplicationController) || defined?(RailsAdmin::MainController)
273
+ RailsAdmin::Config::ConstLoadSuppressor.allowing do
274
+ RailsAdmin.send(:remove_const, :ApplicationController)
275
+ RailsAdmin.send(:remove_const, :MainController)
276
+ load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
277
+ load RailsAdmin::Engine.root.join('app/controllers/rails_admin/main_controller.rb')
278
+ end
279
+ end
280
+ end
281
+
282
+ def total_columns_width=(_)
283
+ ActiveSupport::Deprecation.warn('The total_columns_width configuration option is deprecated and has no effect.')
284
+ end
285
+
286
+ def sidescroll=(_)
287
+ ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
288
+ end
289
+
290
+ # Setup actions to be used.
254
291
  def actions(&block)
255
- RailsAdmin::Config::Actions.instance_eval(&block) if block
292
+ return unless block
293
+
294
+ RailsAdmin::Config::Actions.reset
295
+ RailsAdmin::Config::Actions.instance_eval(&block)
256
296
  end
257
297
 
258
298
  # Returns all model configurations
@@ -274,24 +314,25 @@ module RailsAdmin
274
314
  @current_user = nil
275
315
  @default_hidden_fields = {}
276
316
  @default_hidden_fields[:base] = [:_type]
277
- @default_hidden_fields[:edit] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
278
- @default_hidden_fields[:show] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
317
+ @default_hidden_fields[:edit] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
318
+ @default_hidden_fields[:show] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
279
319
  @default_items_per_page = 20
280
320
  @default_associated_collection_limit = 100
281
321
  @default_search_operator = 'default'
282
322
  @excluded_models = []
283
323
  @included_models = []
284
- @total_columns_width = 697
285
- @sidescroll = nil
286
- @label_methods = [:name, :title]
324
+ @label_methods = %i[name title]
287
325
  @main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
288
326
  @registry = {}
327
+ @navbar_css_classes = %w[navbar-dark bg-primary border-bottom]
289
328
  @show_gravatar = true
290
329
  @navigation_static_links = {}
291
330
  @navigation_static_label = nil
331
+ @asset_source = nil
292
332
  @parent_controller = '::ActionController::Base'
293
333
  @forgery_protection_settings = {with: :exception}
294
334
  RailsAdmin::Config::Actions.reset
335
+ RailsAdmin::AbstractModel.reset
295
336
  end
296
337
 
297
338
  # Reset a provided model's configuration.
@@ -302,22 +343,19 @@ module RailsAdmin
302
343
  @registry.delete(key)
303
344
  end
304
345
 
305
- # Reset all models configuration
306
- # Used to clear all configurations when reloading code in development.
307
- # @see RailsAdmin::Engine
308
- # @see RailsAdmin::Config.registry
309
- def reset_all_models
310
- @registry = {}
346
+ # Perform reset, then load RailsAdmin initializer again
347
+ def reload!
348
+ reset
349
+ load RailsAdmin::Engine.config.initializer_path
311
350
  end
312
351
 
313
352
  # Get all models that are configured as visible sorted by their weight and label.
314
353
  #
315
354
  # @see RailsAdmin::Config::Hideable
316
-
317
355
  def visible_models(bindings)
318
356
  visible_models_with_bindings(bindings).sort do |a, b|
319
357
  if (weight_order = a.weight <=> b.weight) == 0
320
- a.label.downcase <=> b.label.downcase
358
+ a.label.casecmp(b.label)
321
359
  else
322
360
  weight_order
323
361
  end
@@ -326,23 +364,22 @@ module RailsAdmin
326
364
 
327
365
  private
328
366
 
329
- def lchomp(base, arg)
330
- base.to_s.reverse.chomp(arg.to_s.reverse).reverse
331
- end
332
-
333
367
  def viable_models
334
368
  included_models.collect(&:to_s).presence || begin
335
369
  @@system_models ||= # memoization for tests
336
370
  ([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
337
- (app.paths['app/models'].to_a + app.paths.eager_load).collect do |load_path|
371
+ (app.paths['app/models'].to_a + app.config.eager_load_paths).collect do |load_path|
338
372
  Dir.glob(app.root.join(load_path)).collect do |load_dir|
339
- Dir.glob(load_dir + '/**/*.rb').collect do |filename|
373
+ path_prefix = "#{app.root.join(load_dir)}/"
374
+ Dir.glob("#{load_dir}/**/*.rb").collect do |filename|
340
375
  # app/models/module/class.rb => module/class.rb => module/class => Module::Class
341
- lchomp(filename, "#{app.root.join(load_dir)}/").chomp('.rb').camelize
376
+ filename.delete_prefix(path_prefix).chomp('.rb').camelize
342
377
  end
343
378
  end
344
379
  end
345
380
  end.flatten.reject { |m| m.starts_with?('Concerns::') } # rubocop:disable Style/MultilineBlockChain
381
+
382
+ @@system_models + @registry.keys.collect(&:to_s)
346
383
  end
347
384
  end
348
385
 
@@ -1,68 +1,79 @@
1
- require 'jquery-rails'
2
- require 'jquery-ui-rails'
1
+ # frozen_string_literal: true
2
+
3
3
  require 'kaminari'
4
4
  require 'nested_form'
5
- require 'rack-pjax'
6
5
  require 'rails'
7
6
  require 'rails_admin'
8
- require 'remotipart'
7
+ require 'rails_admin/version'
8
+ require 'turbo-rails'
9
9
 
10
10
  module RailsAdmin
11
11
  class Engine < Rails::Engine
12
12
  isolate_namespace RailsAdmin
13
13
 
14
+ attr_accessor :importmap
15
+
14
16
  config.action_dispatch.rescue_responses['RailsAdmin::ActionNotAllowed'] = :forbidden
15
17
 
16
- initializer 'RailsAdmin precompile hook', group: :all do |app|
17
- app.config.assets.precompile += %w(
18
- rails_admin/rails_admin.js
19
- rails_admin/rails_admin.css
20
- rails_admin/jquery.colorpicker.js
21
- rails_admin/jquery.colorpicker.css
22
- )
23
- end
18
+ initializer 'RailsAdmin reload config in development' do |app|
19
+ config.initializer_path = app.root.join('config/initializers/rails_admin.rb')
24
20
 
25
- initializer 'RailsAdmin setup middlewares' do |app|
26
- app.config.middleware.use Rack::Pjax
27
- end
21
+ unless Rails.application.config.cache_classes
22
+ ActiveSupport::Reloader.before_class_unload do
23
+ RailsAdmin::Config.reload!
24
+ end
28
25
 
29
- initializer 'RailsAdmin reload config in development' do
30
- if Rails.application.config.cache_classes
31
- if defined?(ActiveSupport::Reloader)
32
- ActiveSupport::Reloader.before_class_unload do
33
- RailsAdmin::Config.reset_all_models
34
- end
35
- # else
36
- # For Rails 4 not implemented
26
+ reloader = app.config.file_watcher.new([config.initializer_path], []) do
27
+ # Do nothing, ActiveSupport::Reloader will trigger class_unload! anyway
37
28
  end
29
+
30
+ app.reloaders << reloader
31
+ app.reloader.to_run do
32
+ reloader.execute_if_updated { require_unload_lock! }
33
+ end
34
+ reloader.execute
38
35
  end
39
36
  end
40
37
 
41
- rake_tasks do
42
- Dir[File.join(File.dirname(__FILE__), '../tasks/*.rake')].each { |f| load f }
38
+ initializer 'RailsAdmin precompile hook', group: :all do |app|
39
+ case RailsAdmin.config.asset_source
40
+ when :sprockets
41
+ app.config.assets.precompile += %w[
42
+ rails_admin/application.js
43
+ rails_admin/application.css
44
+ ]
45
+ app.config.assets.paths << RailsAdmin::Engine.root.join('src')
46
+ require 'rails_admin/support/es_module_processor'
47
+ Sprockets.register_bundle_processor 'application/javascript', RailsAdmin::Support::ESModuleProcessor
48
+ when :importmap
49
+ self.importmap = Importmap::Map.new.draw(app.root.join('config/importmap.rails_admin.rb'))
50
+ end
43
51
  end
44
52
 
45
53
  # Check for required middlewares, users may forget to use them in Rails API mode
46
54
  config.after_initialize do |app|
47
55
  has_session_store = app.config.middleware.to_a.any? do |m|
48
56
  m.klass.try(:<=, ActionDispatch::Session::AbstractStore) ||
57
+ m.klass.try(:<=, ActionDispatch::Session::AbstractSecureStore) ||
49
58
  m.klass.name =~ /^ActionDispatch::Session::/
50
59
  end
51
60
  loaded = app.config.middleware.to_a.map(&:name)
52
- required = %w(ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride)
61
+ required = %w[ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride]
53
62
  missing = required - loaded
54
63
  unless missing.empty? && has_session_store
55
64
  configs = missing.map { |m| "config.middleware.use #{m}" }
56
65
  configs << "config.middleware.use #{app.config.session_store.try(:name) || 'ActionDispatch::Session::CookieStore'}, #{app.config.session_options}" unless has_session_store
57
- raise <<-EOM
58
- Required middlewares for RailsAdmin are not added
59
- To fix this, add
66
+ raise <<~ERROR
67
+ Required middlewares for RailsAdmin are not added
68
+ To fix this, add
60
69
 
61
- #{configs.join("\n ")}
70
+ #{configs.join("\n ")}
62
71
 
63
- to config/application.rb.
64
- EOM
72
+ to config/application.rb.
73
+ ERROR
65
74
  end
75
+
76
+ RailsAdmin::Version.warn_with_js_version
66
77
  end
67
78
  end
68
79
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/extensions/controller_extension'
2
4
 
3
5
  module RailsAdmin
@@ -15,27 +17,19 @@ module RailsAdmin
15
17
 
16
18
  EXTENSIONS << extension_key
17
19
 
18
- if options[:authorization]
19
- AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter
20
- end
20
+ AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter if options[:authorization]
21
21
 
22
- if options[:configuration]
23
- CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter
24
- end
22
+ CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter if options[:configuration]
25
23
 
26
- if options[:auditing]
27
- AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter
28
- end
24
+ AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter if options[:auditing]
29
25
  end
30
26
 
31
27
  # Setup all extensions for testing
32
28
  def self.setup_all_extensions
33
29
  (AUTHORIZATION_ADAPTERS.values + AUDITING_ADAPTERS.values).each do |klass|
34
- begin
35
- klass.setup if klass.respond_to? :setup
36
- rescue # rubocop:disable Lint/HandleExceptions, Style/RescueStandardError
37
- # ignore errors
38
- end
30
+ klass.setup if klass.respond_to? :setup
31
+ rescue # rubocop:disable Style/RescueStandardError
32
+ # ignore errors
39
33
  end
40
34
  end
41
35
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Extensions
3
5
  module CanCanCan
@@ -7,18 +9,33 @@ module RailsAdmin
7
9
  def current_ability
8
10
  # use _current_user instead of default current_user so it works with
9
11
  # whatever current user method is defined with RailsAdmin
10
- @current_ability ||= @ability.new(_current_user)
12
+ @current_ability ||= ability_class.new(_current_user)
11
13
  end
12
14
  end
13
15
 
16
+ include RailsAdmin::Config::Configurable
17
+
18
+ def self.setup
19
+ RailsAdmin::Extensions::ControllerExtension.include ControllerExtension
20
+ end
21
+
14
22
  # See the +authorize_with+ config method for where the initialization happens.
15
- def initialize(controller, ability = ::Ability)
23
+ def initialize(controller, ability = nil, &block)
16
24
  @controller = controller
17
- @controller.instance_variable_set '@ability', ability
18
- @controller.extend ControllerExtension
25
+ ability_class { ability } if ability
26
+ instance_eval(&block) if block
27
+
28
+ adapter = self
29
+ ControllerExtension.define_method(:ability_class) do
30
+ adapter.ability_class
31
+ end
19
32
  @controller.current_ability.authorize! :access, :rails_admin
20
33
  end
21
34
 
35
+ register_instance_option :ability_class do
36
+ Ability
37
+ end
38
+
22
39
  # This method is called in every controller action and should raise an exception
23
40
  # when the authorization fails. The first argument is the name of the controller
24
41
  # action as a symbol (:create, :bulk_delete, etc.). The second argument is the
@@ -26,6 +43,7 @@ module RailsAdmin
26
43
  # instance if it is available.
27
44
  def authorize(action, abstract_model = nil, model_object = nil)
28
45
  return unless action
46
+
29
47
  action, subject = resolve_action_and_subject(action, abstract_model, model_object)
30
48
  @controller.current_ability.authorize!(action, subject)
31
49
  end
@@ -36,6 +54,7 @@ module RailsAdmin
36
54
  # return a boolean whereas +authorize+ will raise an exception when not authorized.
37
55
  def authorized?(action, abstract_model = nil, model_object = nil)
38
56
  return unless action
57
+
39
58
  action, subject = resolve_action_and_subject(action, abstract_model, model_object)
40
59
  @controller.current_ability.can?(action, subject)
41
60
  end
@@ -51,13 +70,13 @@ module RailsAdmin
51
70
  # records. It should return a hash of attributes which match what the user
52
71
  # is authorized to create.
53
72
  def attributes_for(action, abstract_model)
54
- @controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
73
+ @controller.current_ability.attributes_for(action, abstract_model&.model)
55
74
  end
56
75
 
57
76
  private
58
77
 
59
78
  def resolve_action_and_subject(action, abstract_model, model_object)
60
- subject = model_object || abstract_model && abstract_model.model
79
+ subject = model_object || abstract_model&.model
61
80
  if subject
62
81
  [action, subject]
63
82
  else
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/extensions/cancancan/authorization_adapter'
2
4
 
3
5
  RailsAdmin.add_extension(:cancancan, RailsAdmin::Extensions::CanCanCan, authorization: true)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Extensions
3
5
  module ControllerExtension
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/string/strip'
2
4
 
3
5
  module RailsAdmin
@@ -11,7 +13,7 @@ module RailsAdmin
11
13
 
12
14
  def message
13
15
  @message = @version.event
14
- @version.respond_to?(:changeset) && @version.changeset.present? ? @message + ' [' + @version.changeset.to_a.collect { |c| c[0] + ' = ' + c[1][1].to_s }.join(', ') + ']' : @message
16
+ @version.respond_to?(:changeset) && @version.changeset.present? ? @message + ' [' + @version.changeset.to_a.collect { |c| "#{c[0]} = #{c[1][1]}" }.join(', ') + ']' : @message
15
17
  end
16
18
 
17
19
  def created_at
@@ -23,7 +25,11 @@ module RailsAdmin
23
25
  end
24
26
 
25
27
  def username
26
- (@user_class.find(@version.whodunnit).try(:email) rescue nil) || @version.whodunnit
28
+ begin
29
+ @user_class.find(@version.whodunnit).try(:email)
30
+ rescue StandardError
31
+ nil
32
+ end || @version.whodunnit
27
33
  end
28
34
 
29
35
  def item
@@ -45,42 +51,63 @@ module RailsAdmin
45
51
  created_at: :created_at,
46
52
  message: :event,
47
53
  }.freeze
48
- E_VERSION_MODEL_NOT_SET = <<-EOS.strip_heredoc.freeze
54
+ E_USER_CLASS_NOT_SET = <<~ERROR
55
+ Please set up PaperTrail's user class explicitly.
56
+
57
+ config.audit_with :paper_trail do
58
+ user_class { User }
59
+ end
60
+ ERROR
61
+ E_VERSION_MODEL_NOT_SET = <<~ERROR
49
62
  Please set up PaperTrail's version model explicitly.
50
63
 
51
- config.audit_with :paper_trail, 'User', 'PaperTrail::Version'
64
+ config.audit_with :paper_trail do
65
+ version_class { PaperTrail::Version }
66
+ end
52
67
 
53
68
  If you have configured a model to use a custom version class
54
69
  (https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
55
- that configuration will take precedence over what you specify in
56
- `audit_with`.
57
- EOS
70
+ that configuration will take precedence over what you specify in `audit_with`.
71
+ ERROR
72
+
73
+ include RailsAdmin::Config::Configurable
58
74
 
59
75
  def self.setup
60
- raise('PaperTrail not found') unless defined?(::PaperTrail)
61
- RailsAdmin::Extensions::ControllerExtension.send(:include, ControllerExtension)
76
+ raise 'PaperTrail not found' unless defined?(::PaperTrail)
77
+
78
+ RailsAdmin::Extensions::ControllerExtension.include ControllerExtension
62
79
  end
63
80
 
64
- def initialize(controller, user_class = 'User', version_class = '::Version')
81
+ def initialize(controller, user_class_name = nil, version_class_name = nil, &block)
65
82
  @controller = controller
66
- @controller.send(:set_paper_trail_whodunnit) if @controller
67
- begin
68
- @user_class = user_class.to_s.constantize
69
- rescue NameError
70
- raise "Please set up Papertrail's user model explicitly. Ex: config.audit_with :paper_trail, 'User'"
71
- end
83
+ @controller&.send(:set_paper_trail_whodunnit)
72
84
 
73
- begin
74
- @version_class = version_class.to_s.constantize
75
- rescue NameError
76
- raise E_VERSION_MODEL_NOT_SET
77
- end
85
+ user_class { user_class_name.to_s.constantize } if user_class_name
86
+ version_class { version_class_name.to_s.constantize } if version_class_name
87
+
88
+ instance_eval(&block) if block
89
+ end
90
+
91
+ register_instance_option :user_class do
92
+ User
93
+ rescue NameError
94
+ raise E_USER_CLASS_NOT_SET
95
+ end
96
+
97
+ register_instance_option :version_class do
98
+ PaperTrail::Version
99
+ rescue NameError
100
+ raise E_VERSION_MODEL_NOT_SET
101
+ end
102
+
103
+ register_instance_option :sort_by do
104
+ {id: :desc}
78
105
  end
79
106
 
80
107
  def latest(count = 100)
81
- @version_class.
82
- order(id: :desc).includes(:item).limit(count).
83
- collect { |version| VersionProxy.new(version, @user_class) }
108
+ version_class.
109
+ order(sort_by).includes(:item).limit(count).
110
+ collect { |version| VersionProxy.new(version, user_class) }
84
111
  end
85
112
 
86
113
  def delete_object(_object, _model, _user)
@@ -107,18 +134,18 @@ module RailsAdmin
107
134
 
108
135
  # - model - a RailsAdmin::AbstractModel
109
136
  def listing_for_model_or_object(model, object, query, sort, sort_reverse, all, page, per_page)
110
- if sort.present?
111
- sort = COLUMN_MAPPING[sort.to_sym]
112
- else
113
- sort = :created_at
114
- sort_reverse = 'true'
115
- end
137
+ sort =
138
+ if sort.present?
139
+ {COLUMN_MAPPING[sort.to_sym] => sort_reverse ? :desc : :asc}
140
+ else
141
+ sort_by
142
+ end
116
143
 
117
144
  current_page = page.presence || '1'
118
145
 
119
146
  versions = object.nil? ? versions_for_model(model) : object.public_send(model.model.versions_association_name)
120
147
  versions = versions.where('event LIKE ?', "%#{query}%") if query.present?
121
- versions = versions.order(sort_reverse == 'true' ? "#{sort} DESC" : sort)
148
+ versions = versions.order(sort)
122
149
  versions = all ? versions : versions.send(Kaminari.config.page_method_name, current_page).per(per_page)
123
150
  paginated_proxies = Kaminari.paginate_array([], total_count: versions.try(:total_count) || versions.count)
124
151
  paginated_proxies = paginated_proxies.send(
@@ -126,7 +153,7 @@ module RailsAdmin
126
153
  current_page,
127
154
  ).per(per_page)
128
155
  versions.each do |version|
129
- paginated_proxies << VersionProxy.new(version, @user_class)
156
+ paginated_proxies << VersionProxy.new(version, user_class)
130
157
  end
131
158
  paginated_proxies
132
159
  end
@@ -149,10 +176,10 @@ module RailsAdmin
149
176
  # classes](https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
150
177
  #
151
178
  # ```ruby
152
- # has_paper_trail class_name: 'MyVersion'
179
+ # has_paper_trail versions: { class_name: 'MyVersion' }
153
180
  # ```
154
181
  def version_class_for(model)
155
- model.paper_trail_options[:class_name].try(:constantize) || @version_class
182
+ model.paper_trail.version_class
156
183
  end
157
184
  end
158
185
  end