rails_admin 2.1.0 → 3.0.0.beta

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 (343) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -11
  3. data/README.md +37 -31
  4. data/Rakefile +2 -2
  5. data/app/assets/javascripts/rails_admin.js +21 -0
  6. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  7. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin.scss.erb +76 -0
  9. data/app/controllers/rails_admin/application_controller.rb +4 -3
  10. data/app/controllers/rails_admin/main_controller.rb +43 -24
  11. data/app/helpers/rails_admin/application_helper.rb +69 -52
  12. data/app/helpers/rails_admin/form_builder.rb +7 -4
  13. data/app/helpers/rails_admin/main_helper.rb +27 -43
  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 +13 -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 +6 -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 +17 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +21 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +24 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +9 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  28. data/app/views/layouts/rails_admin/pjax.html.erb +20 -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 +7 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +16 -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 +1 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +9 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +21 -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.haml → _form_filtering_multiselect.html.erb} +11 -11
  41. data/app/views/rails_admin/main/{_form_filtering_select.html.haml → _form_filtering_select.html.erb} +13 -12
  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 +27 -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 +146 -0
  56. data/app/views/rails_admin/main/history.html.erb +78 -0
  57. data/app/views/rails_admin/main/index.html.erb +193 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +28 -0
  60. data/config/initializers/active_record_extensions.rb +3 -1
  61. data/config/initializers/mongoid_extensions.rb +1 -1
  62. data/config/locales/rails_admin.en.yml +6 -1
  63. data/lib/generators/rails_admin/install_generator.rb +51 -3
  64. data/lib/generators/rails_admin/templates/environment.js +6 -0
  65. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  66. data/lib/generators/rails_admin/templates/rails_admin.js.erb +2 -0
  67. data/lib/generators/rails_admin/templates/rails_admin.scss +1 -0
  68. data/lib/generators/rails_admin/templates/webpack.config.js +32 -0
  69. data/lib/rails_admin/abstract_model.rb +24 -10
  70. data/lib/rails_admin/adapters/active_record/association.rb +20 -1
  71. data/lib/rails_admin/adapters/active_record/object_extension.rb +29 -0
  72. data/lib/rails_admin/adapters/active_record/property.rb +1 -1
  73. data/lib/rails_admin/adapters/active_record.rb +27 -23
  74. data/lib/rails_admin/adapters/mongoid/association.rb +38 -9
  75. data/lib/rails_admin/adapters/mongoid/bson.rb +4 -5
  76. data/lib/rails_admin/adapters/mongoid/extension.rb +3 -1
  77. data/lib/rails_admin/adapters/mongoid/object_extension.rb +32 -0
  78. data/lib/rails_admin/adapters/mongoid/property.rb +2 -2
  79. data/lib/rails_admin/adapters/mongoid.rb +27 -19
  80. data/lib/rails_admin/config/actions/base.rb +7 -2
  81. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -2
  82. data/lib/rails_admin/config/actions/dashboard.rb +4 -3
  83. data/lib/rails_admin/config/actions/delete.rb +5 -9
  84. data/lib/rails_admin/config/actions/edit.rb +7 -7
  85. data/lib/rails_admin/config/actions/export.rb +2 -2
  86. data/lib/rails_admin/config/actions/history_index.rb +2 -2
  87. data/lib/rails_admin/config/actions/history_show.rb +2 -2
  88. data/lib/rails_admin/config/actions/index.rb +5 -7
  89. data/lib/rails_admin/config/actions/new.rb +9 -9
  90. data/lib/rails_admin/config/actions/show.rb +1 -1
  91. data/lib/rails_admin/config/actions/show_in_app.rb +6 -2
  92. data/lib/rails_admin/config/actions.rb +4 -4
  93. data/lib/rails_admin/config/configurable.rb +2 -2
  94. data/lib/rails_admin/config/fields/association.rb +15 -12
  95. data/lib/rails_admin/config/fields/base.rb +44 -24
  96. data/lib/rails_admin/config/fields/factories/active_storage.rb +1 -0
  97. data/lib/rails_admin/config/fields/factories/association.rb +6 -8
  98. data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -1
  99. data/lib/rails_admin/config/fields/factories/devise.rb +2 -1
  100. data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -1
  101. data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -1
  102. data/lib/rails_admin/config/fields/factories/shrine.rb +1 -1
  103. data/lib/rails_admin/config/fields/group.rb +1 -2
  104. data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
  105. data/lib/rails_admin/config/fields/types/active_storage.rb +9 -7
  106. data/lib/rails_admin/config/fields/types/all.rb +1 -0
  107. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -12
  108. data/lib/rails_admin/config/fields/types/boolean.rb +32 -8
  109. data/lib/rails_admin/config/fields/types/carrierwave.rb +1 -0
  110. data/lib/rails_admin/config/fields/types/citext.rb +13 -0
  111. data/lib/rails_admin/config/fields/types/color.rb +6 -2
  112. data/lib/rails_admin/config/fields/types/date.rb +5 -8
  113. data/lib/rails_admin/config/fields/types/datetime.rb +18 -21
  114. data/lib/rails_admin/config/fields/types/decimal.rb +9 -2
  115. data/lib/rails_admin/config/fields/types/dragonfly.rb +3 -1
  116. data/lib/rails_admin/config/fields/types/enum.rb +1 -1
  117. data/lib/rails_admin/config/fields/types/file_upload.rb +4 -3
  118. data/lib/rails_admin/config/fields/types/float.rb +9 -2
  119. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -5
  120. data/lib/rails_admin/config/fields/types/has_one_association.rb +1 -13
  121. data/lib/rails_admin/config/fields/types/integer.rb +2 -6
  122. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +8 -6
  123. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +1 -0
  124. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +4 -3
  125. data/lib/rails_admin/config/fields/types/numeric.rb +18 -0
  126. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +3 -2
  127. data/lib/rails_admin/config/fields/types/string.rb +1 -1
  128. data/lib/rails_admin/config/fields/types/time.rb +1 -4
  129. data/lib/rails_admin/config/fields/types/timestamp.rb +0 -4
  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 +5 -6
  133. data/lib/rails_admin/config/hideable.rb +1 -1
  134. data/lib/rails_admin/config/inspectable.rb +1 -3
  135. data/lib/rails_admin/config/model.rb +10 -10
  136. data/lib/rails_admin/config/sections/base.rb +2 -3
  137. data/lib/rails_admin/config/sections/list.rb +4 -15
  138. data/lib/rails_admin/config/sections.rb +1 -1
  139. data/lib/rails_admin/config.rb +73 -38
  140. data/lib/rails_admin/engine.rb +36 -23
  141. data/lib/rails_admin/extension.rb +6 -14
  142. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +4 -2
  143. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +13 -8
  144. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +6 -7
  145. data/lib/rails_admin/support/csv_converter.rb +12 -13
  146. data/lib/rails_admin/support/datetime.rb +40 -74
  147. data/lib/rails_admin/support/esmodule_preprocessor.rb +32 -0
  148. data/lib/rails_admin/support/hash_helper.rb +6 -5
  149. data/lib/rails_admin/version.rb +7 -3
  150. data/lib/rails_admin.rb +1 -4
  151. data/lib/tasks/rails_admin.rake +3 -3
  152. data/package.json +28 -0
  153. data/src/rails_admin/base.js +21 -0
  154. data/src/rails_admin/filter-box.js +405 -0
  155. data/src/rails_admin/filtering-multiselect.js +394 -0
  156. data/src/rails_admin/filtering-select.js +302 -0
  157. data/src/rails_admin/i18n.js +19 -0
  158. data/src/rails_admin/nested-form-hooks.js +100 -0
  159. data/src/rails_admin/remote-form.js +190 -0
  160. data/src/rails_admin/sidescroll.js +20 -0
  161. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  162. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
  163. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/theming.scss +93 -34
  164. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/variables.scss +0 -0
  165. data/src/rails_admin/styles/base.scss +64 -0
  166. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  167. data/src/rails_admin/styles/filtering-select.scss +70 -0
  168. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/mixins.scss +0 -0
  169. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/theming.scss +23 -21
  170. data/src/rails_admin/styles/themes/cerulean/variables.scss +830 -0
  171. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/mixins.scss +1 -1
  172. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/theming.scss +0 -0
  173. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/variables.scss +1 -1
  174. data/src/rails_admin/styles/widgets.scss +35 -0
  175. data/src/rails_admin/ui.js +172 -0
  176. data/src/rails_admin/vendor/jquery.pjax.js +899 -0
  177. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  178. data/src/rails_admin/widgets.js +512 -0
  179. data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
  180. data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +5034 -0
  181. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  182. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
  183. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  184. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  185. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  186. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  187. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  188. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  189. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  190. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  191. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  192. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  193. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  194. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  195. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  196. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  197. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  198. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  199. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  200. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  201. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  202. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  203. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  204. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  205. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  206. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  207. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  208. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  209. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  210. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  211. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +317 -160
  212. data/vendor/assets/javascripts/rails_admin/jquery3.js +10872 -0
  213. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +11210 -9290
  214. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4476 -2216
  215. metadata +118 -262
  216. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  217. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  218. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  219. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  220. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  221. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  222. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  223. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  224. data/app/assets/images/rails_admin/calendar.png +0 -0
  225. data/app/assets/images/rails_admin/clock.png +0 -0
  226. data/app/assets/images/rails_admin/logo.png +0 -0
  227. data/app/assets/images/rails_admin/magnifier.png +0 -0
  228. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  229. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  230. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  231. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  232. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  233. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  234. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -248
  235. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  236. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  237. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  238. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  239. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  240. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  241. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  242. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  243. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  244. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  245. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  246. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  247. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  248. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  249. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  250. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  251. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  252. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  253. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  254. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  255. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  256. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  257. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  258. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  259. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  260. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  261. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  262. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  263. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  264. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  265. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  266. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  267. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  268. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  269. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  270. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  271. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  272. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  273. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  274. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  275. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  276. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  277. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  278. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
  279. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  280. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  281. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  282. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  283. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  284. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  285. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  286. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  287. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  288. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  289. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  290. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  291. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  292. data/app/views/rails_admin/main/delete.html.haml +0 -18
  293. data/app/views/rails_admin/main/edit.html.haml +0 -2
  294. data/app/views/rails_admin/main/export.html.haml +0 -92
  295. data/app/views/rails_admin/main/history.html.haml +0 -51
  296. data/app/views/rails_admin/main/index.html.haml +0 -126
  297. data/app/views/rails_admin/main/new.html.haml +0 -2
  298. data/app/views/rails_admin/main/show.html.haml +0 -15
  299. data/config/initializers/devise_patch.rb +0 -9
  300. data/config/initializers/haml.rb +0 -5
  301. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  302. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  303. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  304. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  305. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  306. data/lib/rails_admin/config/lazy_model.rb +0 -68
  307. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  308. data/lib/rails_admin/extensions/history/history.rb +0 -44
  309. data/lib/rails_admin/extensions/history.rb +0 -3
  310. data/lib/rails_admin/support/i18n.rb +0 -43
  311. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  312. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  313. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  314. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  315. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  316. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  317. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  318. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  319. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  320. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  321. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  322. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  323. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  324. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  325. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  326. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  327. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  328. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  329. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  330. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  331. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  332. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  333. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  334. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  335. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  336. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  337. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  338. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  339. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  340. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  341. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  342. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  343. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
@@ -20,7 +20,7 @@ module RailsAdmin
20
20
  end
21
21
 
22
22
  def generic_help
23
- text = (required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')) + '. '
23
+ text = "#{required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')}. "
24
24
  if valid_length.present? && valid_length[:is].present?
25
25
  text += "#{I18n.translate('admin.form.char_length_of').capitalize} #{valid_length[:is]}."
26
26
  else
@@ -8,10 +8,7 @@ module RailsAdmin
8
8
  RailsAdmin::Config::Fields::Types.register(self)
9
9
 
10
10
  def parse_value(value)
11
- parent_value = super(value)
12
- return unless parent_value
13
- value_with_tz = parent_value.in_time_zone
14
- ::DateTime.parse(value_with_tz.strftime('%Y-%m-%d %H:%M:%S'))
11
+ abstract_model.model.type_for_attribute(name.to_s).serialize(super)&.change(year: 2000, month: 1, day: 1)
15
12
  end
16
13
 
17
14
  register_instance_option :strftime_format do
@@ -7,10 +7,6 @@ module RailsAdmin
7
7
  class Timestamp < RailsAdmin::Config::Fields::Types::Datetime
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
-
11
- @format = :long
12
- @i18n_scope = [:time, :formats]
13
- @js_plugin_options = {}
14
10
  end
15
11
  end
16
12
  end
@@ -9,7 +9,7 @@ module RailsAdmin
9
9
  @@registry = {}
10
10
 
11
11
  def self.load(type)
12
- @@registry[type.to_sym] || raise("Unsupported field datatype: #{type}")
12
+ @@registry.fetch(type.to_sym) { raise "Unsupported field datatype: #{type}" }
13
13
  end
14
14
 
15
15
  def self.register(type, klass = nil)
@@ -50,13 +50,15 @@ module RailsAdmin
50
50
  parent.abstract_model.properties.each do |properties|
51
51
  # Unless a previous factory has already loaded current field as well
52
52
  next if fields.detect { |f| f.name == properties.name }
53
+
53
54
  # Loop through factories until one returns true
54
55
  @@registry.detect { |factory| factory.call(parent, properties, fields) }
55
56
  end
56
57
  # Load fields for all associations (relations)
57
- parent.abstract_model.associations.select { |a| a.type != :belongs_to }.each do |association| # :belongs_to are created by factory for belongs_to fields
58
+ parent.abstract_model.associations.reject { |a| a.type == :belongs_to }.each do |association| # :belongs_to are created by factory for belongs_to fields
58
59
  # Unless a previous factory has already loaded current field as well
59
60
  next if fields.detect { |f| f.name == association.name }
61
+
60
62
  # Loop through factories until one returns true
61
63
  @@registry.detect { |factory| factory.call(parent, association, fields) }
62
64
  end
@@ -8,9 +8,7 @@ module RailsAdmin
8
8
 
9
9
  # some fields are hidden by default (belongs_to keys, has_many associations in list views.)
10
10
  # unhide them if config specifically defines them
11
- if field
12
- field.show unless field.instance_variable_get("@#{field.name}_registered").is_a?(Proc)
13
- end
11
+ field.show if field && !field.instance_variable_get("@#{field.name}_registered").is_a?(Proc)
14
12
  # Specify field as virtual if type is not specifically set and field was not
15
13
  # found in default stack
16
14
  if field.nil? && type.nil?
@@ -39,9 +37,9 @@ module RailsAdmin
39
37
  field
40
38
  end
41
39
 
42
- # configure a field without adding it.
40
+ # configure field(s) from the default group in a section without changing the original order.
43
41
  def configure(name, type = nil, &block)
44
- field(name, type, false, &block)
42
+ [*name].each { |field_name| field(field_name, type, false, &block) }
45
43
  end
46
44
 
47
45
  # include fields by name and apply an optionnal block to each (through a call to fields),
@@ -50,6 +48,7 @@ module RailsAdmin
50
48
  if field_names.empty?
51
49
  _fields.select { |f| f.instance_eval(&block) }.each do |f|
52
50
  next if f.defined
51
+
53
52
  f.defined = true
54
53
  f.order = _fields.count(&:defined)
55
54
  end
@@ -126,7 +125,7 @@ module RailsAdmin
126
125
  return @_fields if @_fields
127
126
  return @_ro_fields if readonly && @_ro_fields
128
127
 
129
- if self.class == RailsAdmin::Config::Sections::Base
128
+ if instance_of?(RailsAdmin::Config::Sections::Base)
130
129
  @_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
131
130
  else
132
131
  # parent is RailsAdmin::Config::Model, recursion is on Section's classes
@@ -16,7 +16,7 @@ module RailsAdmin
16
16
 
17
17
  # Writer to hide object.
18
18
  def hide(&block)
19
- visible block ? proc { false == instance_eval(&block) } : false
19
+ visible block ? proc { instance_eval(&block) == false } : false
20
20
  end
21
21
 
22
22
  # Writer to show field.
@@ -30,9 +30,7 @@ module RailsAdmin
30
30
  end
31
31
 
32
32
  def set_named_instance_variables
33
- unless defined?(self.class::NAMED_INSTANCE_VARIABLES)
34
- self.class.const_set('NAMED_INSTANCE_VARIABLES', [])
35
- end
33
+ self.class.const_set('NAMED_INSTANCE_VARIABLES', []) unless defined?(self.class::NAMED_INSTANCE_VARIABLES)
36
34
  end
37
35
  end
38
36
  end
@@ -21,30 +21,31 @@ module RailsAdmin
21
21
  include RailsAdmin::Config::Sections
22
22
  include RailsAdmin::Config::Inspectable
23
23
 
24
- attr_reader :abstract_model
24
+ attr_reader :abstract_model, :parent, :root
25
25
  attr_accessor :groups
26
- attr_reader :parent, :root
27
26
 
28
- NAMED_INSTANCE_VARIABLES = [:@parent, :@root].freeze
27
+ NAMED_INSTANCE_VARIABLES = %i[@parent @root].freeze
29
28
 
30
29
  def initialize(entity)
31
30
  @parent = nil
32
31
  @root = self
33
32
 
34
- @abstract_model = begin
35
- if entity.is_a?(RailsAdmin::AbstractModel)
33
+ @abstract_model =
34
+ case entity
35
+ when RailsAdmin::AbstractModel
36
36
  entity
37
- elsif entity.is_a?(Class) || entity.is_a?(String) || entity.is_a?(Symbol)
37
+ when Class, String, Symbol
38
38
  RailsAdmin::AbstractModel.new(entity)
39
39
  else
40
40
  RailsAdmin::AbstractModel.new(entity.class)
41
41
  end
42
- end
42
+
43
43
  @groups = [RailsAdmin::Config::Fields::Group.new(self, :default).tap { |g| g.label { I18n.translate('admin.form.basic_info') } }]
44
44
  end
45
45
 
46
46
  def excluded?
47
47
  return @excluded if defined?(@excluded)
48
+
48
49
  @excluded = !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
49
50
  end
50
51
 
@@ -81,17 +82,16 @@ module RailsAdmin
81
82
  register_instance_option :parent do
82
83
  @parent_model ||= begin
83
84
  klass = abstract_model.model.superclass
84
- klass = nil if klass.to_s.in?(%w(Object BasicObject ActiveRecord::Base))
85
+ klass = nil if klass.to_s.in?(%w[Object BasicObject ActiveRecord::Base])
85
86
  klass
86
87
  end
87
88
  end
88
89
 
89
90
  register_instance_option :navigation_label do
90
- @navigation_label ||= begin
91
+ @navigation_label ||=
91
92
  if (parent_module = abstract_model.model.try(:module_parent) || abstract_model.model.try!(:parent)) != Object
92
93
  parent_module.to_s
93
94
  end
94
- end
95
95
  end
96
96
 
97
97
  register_instance_option :navigation_icon do
@@ -18,10 +18,9 @@ module RailsAdmin
18
18
  include RailsAdmin::Config::HasGroups
19
19
  include RailsAdmin::Config::HasDescription
20
20
 
21
- attr_reader :abstract_model
22
- attr_reader :parent, :root
21
+ attr_reader :abstract_model, :parent, :root
23
22
 
24
- NAMED_INSTANCE_VARIABLES = [:@parent, :@root, :@abstract_model].freeze
23
+ NAMED_INSTANCE_VARIABLES = %i[@parent @root @abstract_model].freeze
25
24
 
26
25
  def initialize(parent)
27
26
  @parent = parent
@@ -44,23 +44,12 @@ module RailsAdmin
44
44
  ''
45
45
  end
46
46
 
47
- register_instance_option :sidescroll do
48
- nil
47
+ register_deprecated_instance_option :sidescroll do
48
+ ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
49
49
  end
50
50
 
51
- def sidescroll_frozen_columns
52
- global_config = RailsAdmin::Config.sidescroll
53
- model_config = sidescroll
54
- enabled = model_config.nil? ? global_config : model_config
55
- if enabled
56
- num_frozen = model_config[:num_frozen_columns] if model_config.is_a?(Hash)
57
- unless num_frozen
58
- num_frozen = global_config[:num_frozen_columns] if global_config.is_a?(Hash)
59
- num_frozen ||= 3 # by default, freeze checkboxes, links & first property (usually primary key / id?)
60
- num_frozen -= 1 unless checkboxes? # model config should be explicit about this, only adjust if using global config
61
- end
62
- num_frozen
63
- end
51
+ def fields_for_table
52
+ visible_fields.partition(&:sticky?).flatten
64
53
  end
65
54
  end
66
55
  end
@@ -25,7 +25,7 @@ module RailsAdmin
25
25
  section = RailsAdmin::Config::Sections.const_get(name)
26
26
  name = name.to_s.underscore.to_sym
27
27
  klass.send(:define_method, name) do |&block|
28
- @sections = {} unless @sections
28
+ @sections ||= {}
29
29
  @sections[name] = section.new(self) unless @sections[name]
30
30
  @sections[name].instance_eval(&block) if block
31
31
  @sections[name]
@@ -1,4 +1,4 @@
1
- require 'rails_admin/config/lazy_model'
1
+ require 'rails_admin/config/model'
2
2
  require 'rails_admin/config/sections/list'
3
3
  require 'active_support/core_ext/module/attribute_accessors'
4
4
 
@@ -20,6 +20,10 @@ module RailsAdmin
20
20
 
21
21
  DEFAULT_CURRENT_USER = proc {}
22
22
 
23
+ # Variables to track initialization process
24
+ @initialized = false
25
+ @deferred_blocks = []
26
+
23
27
  class << self
24
28
  # Application title, can be an array of two elements
25
29
  attr_accessor :main_app_name
@@ -27,8 +31,8 @@ module RailsAdmin
27
31
  # Configuration option to specify which models you want to exclude.
28
32
  attr_accessor :excluded_models
29
33
 
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
34
+ # Configuration option to specify a allowlist of models you want to RailsAdmin to work with.
35
+ # The excluded_models list applies against the allowlist as well and further reduces the models
32
36
  # RailsAdmin will use.
33
37
  # If included_models is left empty ([]), then RailsAdmin will automatically use all the models
34
38
  # in your application (less any excluded_models you may have specified).
@@ -56,14 +60,8 @@ module RailsAdmin
56
60
  # Tell browsers whether to use the native HTML5 validations (novalidate form option).
57
61
  attr_accessor :browser_validations
58
62
 
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
63
  # set parent controller
66
- attr_accessor :parent_controller
64
+ attr_reader :parent_controller
67
65
 
68
66
  # set settings for `protect_from_forgery` method
69
67
  # By default, it raises exception upon invalid CSRF tokens
@@ -82,6 +80,25 @@ module RailsAdmin
82
80
  attr_accessor :navigation_static_links
83
81
  attr_accessor :navigation_static_label
84
82
 
83
+ # Set where RailsAdmin fetches JS/CSS from, defaults to :sprockets
84
+ attr_accessor :asset_source
85
+
86
+ # Finish initialization by executing deferred configuration blocks
87
+ def initialize!
88
+ @deferred_blocks.each { |block| block.call(self) }
89
+ @deferred_blocks.clear
90
+ @initialized = true
91
+ end
92
+
93
+ # Evaluate the given block either immediately or lazily, based on initialization status.
94
+ def apply(&block)
95
+ if @initialized
96
+ yield(self)
97
+ else
98
+ @deferred_blocks << block
99
+ end
100
+ end
101
+
85
102
  # Setup authentication to be run as a before filter
86
103
  # This is run inside the controller instance so you can setup any authentication you need to
87
104
  #
@@ -110,7 +127,7 @@ module RailsAdmin
110
127
  @authenticate || DEFAULT_AUTHENTICATION
111
128
  end
112
129
 
113
- # Setup auditing/history/versioning provider that observe objects lifecycle
130
+ # Setup auditing/versioning provider that observe objects lifecycle
114
131
  def audit_with(*args, &block)
115
132
  extension = args.shift
116
133
  if extension
@@ -145,7 +162,7 @@ module RailsAdmin
145
162
  # config.authorize_with :cancancan
146
163
  # end
147
164
  #
148
- # See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
165
+ # See the wiki[https://github.com/railsadminteam/rails_admin/wiki] for more on authorization.
149
166
  #
150
167
  # @see RailsAdmin::Config::DEFAULT_AUTHORIZE
151
168
  def authorize_with(*args, &block)
@@ -198,10 +215,10 @@ module RailsAdmin
198
215
  end
199
216
 
200
217
  def default_search_operator=(operator)
201
- if %w(default like starts_with ends_with is =).include? operator
218
+ if %w[default like not_like starts_with ends_with is =].include? operator
202
219
  @default_search_operator = operator
203
220
  else
204
- raise(ArgumentError.new("Search operator '#{operator}' not supported"))
221
+ raise ArgumentError.new("Search operator '#{operator}' not supported")
205
222
  end
206
223
  end
207
224
 
@@ -223,20 +240,20 @@ module RailsAdmin
223
240
  #
224
241
  # @see RailsAdmin::Config.registry
225
242
  def model(entity, &block)
226
- key = begin
227
- if entity.is_a?(RailsAdmin::AbstractModel)
243
+ key =
244
+ case entity
245
+ when RailsAdmin::AbstractModel
228
246
  entity.model.try(:name).try :to_sym
229
- elsif entity.is_a?(Class)
247
+ when Class
230
248
  entity.name.to_sym
231
- elsif entity.is_a?(String) || entity.is_a?(Symbol)
249
+ when String, Symbol
232
250
  entity.to_sym
233
251
  else
234
252
  entity.class.name.to_sym
235
253
  end
236
- end
237
254
 
238
- @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
239
- @registry[key].add_deferred_block(&block) if block
255
+ @registry[key] ||= RailsAdmin::Config::Model.new(entity)
256
+ @registry[key].instance_eval(&block) if block && @registry[key].abstract_model
240
257
  @registry[key]
241
258
  end
242
259
 
@@ -250,9 +267,28 @@ module RailsAdmin
250
267
  end
251
268
  end
252
269
 
253
- # Returns action configuration object
270
+ def parent_controller=(name)
271
+ @parent_controller = name
272
+ if defined?(RailsAdmin::ApplicationController)
273
+ RailsAdmin.send(:remove_const, :ApplicationController)
274
+ load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
275
+ end
276
+ end
277
+
278
+ def total_columns_width=(_)
279
+ ActiveSupport::Deprecation.warn('The total_columns_width configuration option is deprecated and has no effect.')
280
+ end
281
+
282
+ def sidescroll=(_)
283
+ ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
284
+ end
285
+
286
+ # Setup actions to be used.
254
287
  def actions(&block)
255
- RailsAdmin::Config::Actions.instance_eval(&block) if block
288
+ return unless block
289
+
290
+ RailsAdmin::Config::Actions.reset
291
+ RailsAdmin::Config::Actions.instance_eval(&block)
256
292
  end
257
293
 
258
294
  # Returns all model configurations
@@ -274,24 +310,24 @@ module RailsAdmin
274
310
  @current_user = nil
275
311
  @default_hidden_fields = {}
276
312
  @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]
313
+ @default_hidden_fields[:edit] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
314
+ @default_hidden_fields[:show] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
279
315
  @default_items_per_page = 20
280
316
  @default_associated_collection_limit = 100
281
317
  @default_search_operator = 'default'
282
318
  @excluded_models = []
283
319
  @included_models = []
284
- @total_columns_width = 697
285
- @sidescroll = nil
286
- @label_methods = [:name, :title]
320
+ @label_methods = %i[name title]
287
321
  @main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
288
322
  @registry = {}
289
323
  @show_gravatar = true
290
324
  @navigation_static_links = {}
291
325
  @navigation_static_label = nil
326
+ @asset_source = (defined?(Webpacker) ? :webpacker : :sprockets)
292
327
  @parent_controller = '::ActionController::Base'
293
328
  @forgery_protection_settings = {with: :exception}
294
329
  RailsAdmin::Config::Actions.reset
330
+ RailsAdmin::AbstractModel.reset
295
331
  end
296
332
 
297
333
  # Reset a provided model's configuration.
@@ -302,22 +338,21 @@ module RailsAdmin
302
338
  @registry.delete(key)
303
339
  end
304
340
 
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 = {}
341
+ # Perform reset, then load RailsAdmin initializer again
342
+ def reload!
343
+ @initialized = false
344
+ reset
345
+ load RailsAdmin::Engine.config.initializer_path
346
+ initialize!
311
347
  end
312
348
 
313
349
  # Get all models that are configured as visible sorted by their weight and label.
314
350
  #
315
351
  # @see RailsAdmin::Config::Hideable
316
-
317
352
  def visible_models(bindings)
318
353
  visible_models_with_bindings(bindings).sort do |a, b|
319
354
  if (weight_order = a.weight <=> b.weight) == 0
320
- a.label.downcase <=> b.label.downcase
355
+ a.label.casecmp(b.label)
321
356
  else
322
357
  weight_order
323
358
  end
@@ -334,9 +369,9 @@ module RailsAdmin
334
369
  included_models.collect(&:to_s).presence || begin
335
370
  @@system_models ||= # memoization for tests
336
371
  ([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|
372
+ (app.paths['app/models'].to_a + app.config.eager_load_paths).collect do |load_path|
338
373
  Dir.glob(app.root.join(load_path)).collect do |load_dir|
339
- Dir.glob(load_dir + '/**/*.rb').collect do |filename|
374
+ Dir.glob("#{load_dir}/**/*.rb").collect do |filename|
340
375
  # app/models/module/class.rb => module/class.rb => module/class => Module::Class
341
376
  lchomp(filename, "#{app.root.join(load_dir)}/").chomp('.rb').camelize
342
377
  end
@@ -1,11 +1,8 @@
1
- require 'jquery-rails'
2
- require 'jquery-ui-rails'
3
1
  require 'kaminari'
4
2
  require 'nested_form'
5
3
  require 'rack-pjax'
6
4
  require 'rails'
7
5
  require 'rails_admin'
8
- require 'remotipart'
9
6
 
10
7
  module RailsAdmin
11
8
  class Engine < Rails::Engine
@@ -14,27 +11,38 @@ module RailsAdmin
14
11
  config.action_dispatch.rescue_responses['RailsAdmin::ActionNotAllowed'] = :forbidden
15
12
 
16
13
  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
- )
14
+ if app.config.respond_to?(:assets)
15
+ app.config.assets.precompile += %w[
16
+ rails_admin.js
17
+ rails_admin.css
18
+ ]
19
+ app.config.assets.paths << RailsAdmin::Engine.root.join('src')
20
+ require 'rails_admin/support/esmodule_preprocessor'
21
+ Sprockets.register_preprocessor 'application/javascript', RailsAdmin::ESModulePreprocessor
22
+ end
23
23
  end
24
24
 
25
25
  initializer 'RailsAdmin setup middlewares' do |app|
26
26
  app.config.middleware.use Rack::Pjax
27
27
  end
28
28
 
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
29
+ initializer 'RailsAdmin reload config in development' do |app|
30
+ config.initializer_path = app.root.join('config/initializers/rails_admin.rb')
31
+
32
+ unless Rails.application.config.cache_classes
33
+ ActiveSupport::Reloader.before_class_unload do
34
+ RailsAdmin::Config.reload!
35
+ end
36
+
37
+ reloader = app.config.file_watcher.new([config.initializer_path], []) do
38
+ # Do nothing, ActiveSupport::Reloader will trigger class_unload! anyway
37
39
  end
40
+
41
+ app.reloaders << reloader
42
+ app.reloader.to_run do
43
+ reloader.execute_if_updated { require_unload_lock! }
44
+ end
45
+ reloader.execute
38
46
  end
39
47
  end
40
48
 
@@ -49,20 +57,25 @@ module RailsAdmin
49
57
  m.klass.name =~ /^ActionDispatch::Session::/
50
58
  end
51
59
  loaded = app.config.middleware.to_a.map(&:name)
52
- required = %w(ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride)
60
+ required = %w[ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride]
53
61
  missing = required - loaded
54
62
  unless missing.empty? && has_session_store
55
63
  configs = missing.map { |m| "config.middleware.use #{m}" }
56
64
  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
65
+ raise <<~EOM
66
+ Required middlewares for RailsAdmin are not added
67
+ To fix this, add
60
68
 
61
- #{configs.join("\n ")}
69
+ #{configs.join("\n ")}
62
70
 
63
- to config/application.rb.
71
+ to config/application.rb.
64
72
  EOM
65
73
  end
74
+
75
+ RailsAdmin::Config.initialize!
76
+
77
+ # Force route reload, since it doesn't reflect RailsAdmin action configuration yet
78
+ app.reload_routes!
66
79
  end
67
80
  end
68
81
  end
@@ -15,27 +15,19 @@ module RailsAdmin
15
15
 
16
16
  EXTENSIONS << extension_key
17
17
 
18
- if options[:authorization]
19
- AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter
20
- end
18
+ AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter if options[:authorization]
21
19
 
22
- if options[:configuration]
23
- CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter
24
- end
20
+ CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter if options[:configuration]
25
21
 
26
- if options[:auditing]
27
- AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter
28
- end
22
+ AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter if options[:auditing]
29
23
  end
30
24
 
31
25
  # Setup all extensions for testing
32
26
  def self.setup_all_extensions
33
27
  (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
28
+ klass.setup if klass.respond_to? :setup
29
+ rescue # rubocop:disable Style/RescueStandardError
30
+ # ignore errors
39
31
  end
40
32
  end
41
33
  end
@@ -26,6 +26,7 @@ module RailsAdmin
26
26
  # instance if it is available.
27
27
  def authorize(action, abstract_model = nil, model_object = nil)
28
28
  return unless action
29
+
29
30
  action, subject = resolve_action_and_subject(action, abstract_model, model_object)
30
31
  @controller.current_ability.authorize!(action, subject)
31
32
  end
@@ -36,6 +37,7 @@ module RailsAdmin
36
37
  # return a boolean whereas +authorize+ will raise an exception when not authorized.
37
38
  def authorized?(action, abstract_model = nil, model_object = nil)
38
39
  return unless action
40
+
39
41
  action, subject = resolve_action_and_subject(action, abstract_model, model_object)
40
42
  @controller.current_ability.can?(action, subject)
41
43
  end
@@ -51,13 +53,13 @@ module RailsAdmin
51
53
  # records. It should return a hash of attributes which match what the user
52
54
  # is authorized to create.
53
55
  def attributes_for(action, abstract_model)
54
- @controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
56
+ @controller.current_ability.attributes_for(action, abstract_model&.model)
55
57
  end
56
58
 
57
59
  private
58
60
 
59
61
  def resolve_action_and_subject(action, abstract_model, model_object)
60
- subject = model_object || abstract_model && abstract_model.model
62
+ subject = model_object || abstract_model&.model
61
63
  if subject
62
64
  [action, subject]
63
65
  else