rails_admin 2.0.2 → 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.
Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -16
  3. data/README.md +40 -33
  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 +14 -12
  13. data/app/helpers/rails_admin/main_helper.rb +27 -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 +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} +18 -17
  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 -2
  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 +35 -25
  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 -20
  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 -3
  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 +9 -4
  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 -2
  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 +6 -4
  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/shrine.rb +13 -11
  128. data/lib/rails_admin/config/fields/types/string.rb +1 -1
  129. data/lib/rails_admin/config/fields/types/time.rb +1 -4
  130. data/lib/rails_admin/config/fields/types/timestamp.rb +0 -4
  131. data/lib/rails_admin/config/fields/types.rb +1 -1
  132. data/lib/rails_admin/config/fields.rb +3 -1
  133. data/lib/rails_admin/config/has_fields.rb +5 -6
  134. data/lib/rails_admin/config/hideable.rb +1 -1
  135. data/lib/rails_admin/config/inspectable.rb +1 -3
  136. data/lib/rails_admin/config/model.rb +10 -10
  137. data/lib/rails_admin/config/sections/base.rb +2 -3
  138. data/lib/rails_admin/config/sections/list.rb +4 -15
  139. data/lib/rails_admin/config/sections.rb +1 -1
  140. data/lib/rails_admin/config.rb +72 -41
  141. data/lib/rails_admin/engine.rb +36 -23
  142. data/lib/rails_admin/extension.rb +6 -14
  143. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +4 -2
  144. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +13 -8
  145. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +6 -7
  146. data/lib/rails_admin/support/csv_converter.rb +12 -13
  147. data/lib/rails_admin/support/datetime.rb +40 -74
  148. data/lib/rails_admin/support/esmodule_preprocessor.rb +32 -0
  149. data/lib/rails_admin/support/hash_helper.rb +6 -5
  150. data/lib/rails_admin/version.rb +7 -3
  151. data/lib/rails_admin.rb +1 -4
  152. data/lib/tasks/rails_admin.rake +17 -8
  153. data/package.json +28 -0
  154. data/src/rails_admin/base.js +21 -0
  155. data/src/rails_admin/filter-box.js +405 -0
  156. data/src/rails_admin/filtering-multiselect.js +394 -0
  157. data/src/rails_admin/filtering-select.js +302 -0
  158. data/src/rails_admin/i18n.js +19 -0
  159. data/src/rails_admin/nested-form-hooks.js +100 -0
  160. data/src/rails_admin/remote-form.js +190 -0
  161. data/src/rails_admin/sidescroll.js +20 -0
  162. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/theming.scss +93 -34
  163. data/src/rails_admin/styles/base.scss +64 -0
  164. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  165. data/src/rails_admin/styles/filtering-select.scss +70 -0
  166. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/theming.scss +23 -21
  167. data/src/rails_admin/styles/themes/cerulean/variables.scss +830 -0
  168. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/mixins.scss +1 -1
  169. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/variables.scss +1 -1
  170. data/src/rails_admin/styles/widgets.scss +35 -0
  171. data/src/rails_admin/ui.js +172 -0
  172. data/src/rails_admin/vendor/jquery.pjax.js +899 -0
  173. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  174. data/src/rails_admin/widgets.js +512 -0
  175. data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
  176. data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +5034 -0
  177. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  178. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
  179. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  180. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  181. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  182. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  183. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  184. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  185. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  186. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  187. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  188. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  189. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  190. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  191. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  192. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  193. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  194. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  195. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  196. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  197. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  198. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  199. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  200. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  201. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  202. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  203. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  204. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  205. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  206. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  207. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +317 -160
  208. data/vendor/assets/javascripts/rails_admin/jquery3.js +10872 -0
  209. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +11210 -9290
  210. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4476 -2216
  211. metadata +121 -265
  212. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  213. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  214. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  215. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  216. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  217. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  218. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  219. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  220. data/app/assets/images/rails_admin/calendar.png +0 -0
  221. data/app/assets/images/rails_admin/clock.png +0 -0
  222. data/app/assets/images/rails_admin/logo.png +0 -0
  223. data/app/assets/images/rails_admin/magnifier.png +0 -0
  224. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  225. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  226. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  227. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  228. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  229. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  230. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -226
  231. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  232. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  233. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  234. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  235. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  236. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  237. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  238. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  239. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  240. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  241. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  242. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  243. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  244. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  245. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  246. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  247. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  248. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  249. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  250. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  251. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  252. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  253. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  254. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  255. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  256. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  257. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  258. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  259. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  260. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  261. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  262. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  263. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  264. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  265. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  266. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  267. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  268. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  269. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  270. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  271. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  272. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  273. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  274. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -18
  275. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  276. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  277. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  278. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  279. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  280. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  281. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  282. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  283. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  284. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  285. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  286. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  287. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  288. data/app/views/rails_admin/main/delete.html.haml +0 -18
  289. data/app/views/rails_admin/main/edit.html.haml +0 -2
  290. data/app/views/rails_admin/main/export.html.haml +0 -92
  291. data/app/views/rails_admin/main/history.html.haml +0 -51
  292. data/app/views/rails_admin/main/index.html.haml +0 -126
  293. data/app/views/rails_admin/main/new.html.haml +0 -2
  294. data/app/views/rails_admin/main/show.html.haml +0 -15
  295. data/config/initializers/devise_patch.rb +0 -9
  296. data/config/initializers/haml.rb +0 -5
  297. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  298. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  299. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  300. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  301. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  302. data/lib/rails_admin/config/lazy_model.rb +0 -68
  303. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  304. data/lib/rails_admin/extensions/history/history.rb +0 -44
  305. data/lib/rails_admin/extensions/history.rb +0 -3
  306. data/lib/rails_admin/support/i18n.rb +0 -43
  307. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  308. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  309. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  310. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  311. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  312. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  313. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  314. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  315. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  316. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  317. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  318. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  319. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  320. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  321. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  322. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  323. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  324. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  325. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  326. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  327. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  328. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  329. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  330. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  331. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  332. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  333. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  334. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  335. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  336. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  337. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  338. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  339. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  340. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  341. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
  342. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/variables.scss +0 -0
  343. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/mixins.scss +0 -0
  344. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/theming.scss +0 -0
@@ -45,12 +45,13 @@ module RailsAdmin
45
45
  [children_fields]
46
46
  end
47
47
 
48
- register_instance_option :eager_load? do
48
+ register_instance_option :eager_load do
49
49
  false
50
50
  end
51
51
 
52
52
  def associated_collection(type)
53
53
  return [] if type.blank?
54
+
54
55
  config = RailsAdmin.config(type)
55
56
  config.abstract_model.all.collect do |object|
56
57
  [object.send(config.object_label_method), object.id]
@@ -58,7 +59,7 @@ module RailsAdmin
58
59
  end
59
60
 
60
61
  def associated_model_config
61
- @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.select { |config| !config.excluded? }
62
+ @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.reject(&:excluded?)
62
63
  end
63
64
 
64
65
  def polymorphic_type_collection
@@ -10,14 +10,16 @@ module RailsAdmin
10
10
  register_instance_option :thumb_method do
11
11
  unless defined? @thumb_method
12
12
  @thumb_method = begin
13
- next nil unless value.is_a?(Hash)
13
+ next nil unless bindings[:object].respond_to?("#{name}_derivatives")
14
14
 
15
- if value.key?(:thumb)
15
+ derivatives = bindings[:object].public_send("#{name}_derivatives")
16
+
17
+ if derivatives.key?(:thumb)
16
18
  :thumb
17
- elsif value.key?(:thumbnail)
19
+ elsif derivatives.key?(:thumbnail)
18
20
  :thumbnail
19
21
  else
20
- value.keys.first
22
+ derivatives.keys.first
21
23
  end
22
24
  end
23
25
  end
@@ -29,21 +31,21 @@ module RailsAdmin
29
31
  end
30
32
 
31
33
  register_instance_option :cache_method do
32
- name
34
+ name if bindings[:object].try("cached_#{name}_data")
33
35
  end
34
36
 
35
37
  register_instance_option :cache_value do
36
- bindings[:object].public_send("cached_#{name}_data") if bindings[:object].respond_to?("cached_#{name}_data")
38
+ bindings[:object].try("cached_#{name}_data")
39
+ end
40
+
41
+ register_instance_option :link_name do
42
+ value.original_filename
37
43
  end
38
44
 
39
45
  def resource_url(thumb = nil)
40
46
  return nil unless value
41
47
 
42
- if value.is_a?(Hash)
43
- value[thumb || value.keys.first].url
44
- else
45
- value.url
46
- end
48
+ thumb && bindings[:object].public_send(:"#{name}", thumb).try(:url) || value.url
47
49
  end
48
50
  end
49
51
  end
@@ -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,8 +80,24 @@ module RailsAdmin
82
80
  attr_accessor :navigation_static_links
83
81
  attr_accessor :navigation_static_label
84
82
 
85
- # yell about fields that are not marked as accessible
86
- attr_accessor :yell_for_non_accessible_fields
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
87
101
 
88
102
  # Setup authentication to be run as a before filter
89
103
  # This is run inside the controller instance so you can setup any authentication you need to
@@ -113,7 +127,7 @@ module RailsAdmin
113
127
  @authenticate || DEFAULT_AUTHENTICATION
114
128
  end
115
129
 
116
- # Setup auditing/history/versioning provider that observe objects lifecycle
130
+ # Setup auditing/versioning provider that observe objects lifecycle
117
131
  def audit_with(*args, &block)
118
132
  extension = args.shift
119
133
  if extension
@@ -148,7 +162,7 @@ module RailsAdmin
148
162
  # config.authorize_with :cancancan
149
163
  # end
150
164
  #
151
- # 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.
152
166
  #
153
167
  # @see RailsAdmin::Config::DEFAULT_AUTHORIZE
154
168
  def authorize_with(*args, &block)
@@ -201,10 +215,10 @@ module RailsAdmin
201
215
  end
202
216
 
203
217
  def default_search_operator=(operator)
204
- 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
205
219
  @default_search_operator = operator
206
220
  else
207
- raise(ArgumentError.new("Search operator '#{operator}' not supported"))
221
+ raise ArgumentError.new("Search operator '#{operator}' not supported")
208
222
  end
209
223
  end
210
224
 
@@ -226,20 +240,20 @@ module RailsAdmin
226
240
  #
227
241
  # @see RailsAdmin::Config.registry
228
242
  def model(entity, &block)
229
- key = begin
230
- if entity.is_a?(RailsAdmin::AbstractModel)
243
+ key =
244
+ case entity
245
+ when RailsAdmin::AbstractModel
231
246
  entity.model.try(:name).try :to_sym
232
- elsif entity.is_a?(Class)
247
+ when Class
233
248
  entity.name.to_sym
234
- elsif entity.is_a?(String) || entity.is_a?(Symbol)
249
+ when String, Symbol
235
250
  entity.to_sym
236
251
  else
237
252
  entity.class.name.to_sym
238
253
  end
239
- end
240
254
 
241
- @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
242
- @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
243
257
  @registry[key]
244
258
  end
245
259
 
@@ -253,9 +267,28 @@ module RailsAdmin
253
267
  end
254
268
  end
255
269
 
256
- # 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.
257
287
  def actions(&block)
258
- 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)
259
292
  end
260
293
 
261
294
  # Returns all model configurations
@@ -271,31 +304,30 @@ module RailsAdmin
271
304
  def reset
272
305
  @compact_show_view = true
273
306
  @browser_validations = true
274
- @yell_for_non_accessible_fields = true
275
307
  @authenticate = nil
276
308
  @authorize = nil
277
309
  @audit = nil
278
310
  @current_user = nil
279
311
  @default_hidden_fields = {}
280
312
  @default_hidden_fields[:base] = [:_type]
281
- @default_hidden_fields[:edit] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
282
- @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]
283
315
  @default_items_per_page = 20
284
316
  @default_associated_collection_limit = 100
285
317
  @default_search_operator = 'default'
286
318
  @excluded_models = []
287
319
  @included_models = []
288
- @total_columns_width = 697
289
- @sidescroll = nil
290
- @label_methods = [:name, :title]
320
+ @label_methods = %i[name title]
291
321
  @main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
292
322
  @registry = {}
293
323
  @show_gravatar = true
294
324
  @navigation_static_links = {}
295
325
  @navigation_static_label = nil
326
+ @asset_source = (defined?(Webpacker) ? :webpacker : :sprockets)
296
327
  @parent_controller = '::ActionController::Base'
297
328
  @forgery_protection_settings = {with: :exception}
298
329
  RailsAdmin::Config::Actions.reset
330
+ RailsAdmin::AbstractModel.reset
299
331
  end
300
332
 
301
333
  # Reset a provided model's configuration.
@@ -306,22 +338,21 @@ module RailsAdmin
306
338
  @registry.delete(key)
307
339
  end
308
340
 
309
- # Reset all models configuration
310
- # Used to clear all configurations when reloading code in development.
311
- # @see RailsAdmin::Engine
312
- # @see RailsAdmin::Config.registry
313
- def reset_all_models
314
- @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!
315
347
  end
316
348
 
317
349
  # Get all models that are configured as visible sorted by their weight and label.
318
350
  #
319
351
  # @see RailsAdmin::Config::Hideable
320
-
321
352
  def visible_models(bindings)
322
353
  visible_models_with_bindings(bindings).sort do |a, b|
323
354
  if (weight_order = a.weight <=> b.weight) == 0
324
- a.label.downcase <=> b.label.downcase
355
+ a.label.casecmp(b.label)
325
356
  else
326
357
  weight_order
327
358
  end
@@ -338,9 +369,9 @@ module RailsAdmin
338
369
  included_models.collect(&:to_s).presence || begin
339
370
  @@system_models ||= # memoization for tests
340
371
  ([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
341
- (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|
342
373
  Dir.glob(app.root.join(load_path)).collect do |load_dir|
343
- Dir.glob(load_dir + '/**/*.rb').collect do |filename|
374
+ Dir.glob("#{load_dir}/**/*.rb").collect do |filename|
344
375
  # app/models/module/class.rb => module/class.rb => module/class => Module::Class
345
376
  lchomp(filename, "#{app.root.join(load_dir)}/").chomp('.rb').camelize
346
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