rails_admin 0.8.1 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (313) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -34
  3. data/LICENSE.md +1 -1
  4. data/README.md +34 -26
  5. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  9. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  10. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  11. data/app/assets/images/rails_admin/calendar.png +0 -0
  12. data/app/assets/images/rails_admin/clock.png +0 -0
  13. data/app/assets/images/rails_admin/magnifier.png +0 -0
  14. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  15. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  16. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  17. data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  18. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +8 -0
  19. data/app/assets/javascripts/rails_admin/jquery.migrate.js +3 -0
  20. data/app/assets/javascripts/rails_admin/ra.filter-box.js +148 -60
  21. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +31 -26
  22. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +211 -110
  23. data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
  24. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +59 -0
  25. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  26. data/app/assets/javascripts/rails_admin/ra.widgets.js +379 -0
  27. data/app/assets/javascripts/rails_admin/rails_admin.js +5 -5
  28. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  29. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  30. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  31. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  32. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  33. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +5 -5
  34. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
  35. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +9 -1
  36. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
  37. data/app/controllers/rails_admin/application_controller.rb +14 -8
  38. data/app/controllers/rails_admin/main_controller.rb +9 -9
  39. data/app/helpers/rails_admin/application_helper.rb +26 -11
  40. data/app/helpers/rails_admin/form_builder.rb +20 -12
  41. data/app/helpers/rails_admin/main_helper.rb +8 -7
  42. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_gap.html.haml +0 -0
  43. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_next_page.html.haml +0 -0
  44. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_page.html.haml +0 -0
  45. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_paginator.html.haml +0 -0
  46. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_prev_page.html.haml +0 -0
  47. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +4 -0
  48. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +4 -0
  49. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +4 -0
  50. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  51. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +2 -2
  52. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  53. data/app/views/layouts/rails_admin/application.html.haml +4 -10
  54. data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
  55. data/app/views/rails_admin/main/_delete_notice.html.haml +14 -9
  56. data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
  57. data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -1
  58. data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -3
  59. data/app/views/rails_admin/main/_form_file_upload.html.haml +5 -5
  60. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +7 -6
  61. data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
  62. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +16 -0
  63. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
  64. data/app/views/rails_admin/main/_form_simple_mde.haml +8 -0
  65. data/app/views/rails_admin/main/dashboard.html.haml +5 -6
  66. data/app/views/rails_admin/main/export.html.haml +45 -36
  67. data/app/views/rails_admin/main/history.html.haml +3 -3
  68. data/app/views/rails_admin/main/index.html.haml +37 -26
  69. data/app/views/rails_admin/main/show.html.haml +6 -7
  70. data/config/initializers/active_record_extensions.rb +3 -3
  71. data/config/initializers/haml.rb +4 -1
  72. data/config/locales/rails_admin.en.yml +5 -2
  73. data/lib/generators/rails_admin/templates/initializer.erb +6 -2
  74. data/lib/rails_admin/abstract_model.rb +9 -10
  75. data/lib/rails_admin/adapters/active_record/abstract_object.rb +9 -3
  76. data/lib/rails_admin/adapters/active_record/property.rb +1 -5
  77. data/lib/rails_admin/adapters/active_record.rb +83 -28
  78. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +3 -3
  79. data/lib/rails_admin/adapters/mongoid/association.rb +18 -6
  80. data/lib/rails_admin/adapters/mongoid/bson.rb +29 -0
  81. data/lib/rails_admin/adapters/mongoid/extension.rb +4 -2
  82. data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
  83. data/lib/rails_admin/adapters/mongoid.rb +40 -26
  84. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +1 -1
  85. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
  86. data/lib/rails_admin/bootstrap-sass.rb +8 -6
  87. data/lib/rails_admin/config/actions/base.rb +20 -5
  88. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -4
  89. data/lib/rails_admin/config/actions/dashboard.rb +9 -5
  90. data/lib/rails_admin/config/actions/edit.rb +1 -3
  91. data/lib/rails_admin/config/actions/export.rb +1 -1
  92. data/lib/rails_admin/config/actions/index.rb +5 -3
  93. data/lib/rails_admin/config/actions/new.rb +4 -5
  94. data/lib/rails_admin/config/actions.rb +1 -1
  95. data/lib/rails_admin/config/configurable.rb +25 -18
  96. data/lib/rails_admin/config/fields/association.rb +11 -3
  97. data/lib/rails_admin/config/fields/base.rb +20 -27
  98. data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
  99. data/lib/rails_admin/config/fields/factories/active_storage.rb +30 -0
  100. data/lib/rails_admin/config/fields/factories/carrierwave.rb +4 -2
  101. data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
  102. data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
  103. data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
  104. data/lib/rails_admin/config/fields/types/active_record_enum.rb +19 -2
  105. data/lib/rails_admin/config/fields/types/active_storage.rb +49 -0
  106. data/lib/rails_admin/config/fields/types/all.rb +7 -1
  107. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -0
  108. data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -15
  109. data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
  110. data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
  111. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  112. data/lib/rails_admin/config/fields/types/datetime.rb +6 -3
  113. data/lib/rails_admin/config/fields/types/file_upload.rb +12 -4
  114. data/lib/rails_admin/config/fields/types/froala.rb +9 -11
  115. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -1
  116. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  117. data/lib/rails_admin/config/fields/types/json.rb +9 -1
  118. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +53 -0
  119. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +56 -0
  120. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +125 -0
  121. data/lib/rails_admin/config/fields/types/password.rb +5 -1
  122. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +12 -1
  123. data/lib/rails_admin/config/fields/types/serialized.rb +2 -2
  124. data/lib/rails_admin/config/fields/types/shrine.rb +54 -0
  125. data/lib/rails_admin/config/fields/types/simple_mde.rb +36 -0
  126. data/lib/rails_admin/config/fields/types/string.rb +8 -7
  127. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  128. data/lib/rails_admin/config/fields/types/text.rb +2 -20
  129. data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
  130. data/lib/rails_admin/config/fields/types.rb +1 -1
  131. data/lib/rails_admin/config/fields.rb +3 -1
  132. data/lib/rails_admin/config/has_fields.rb +1 -1
  133. data/lib/rails_admin/config/has_groups.rb +1 -1
  134. data/lib/rails_admin/config/hideable.rb +1 -1
  135. data/lib/rails_admin/config/inspectable.rb +39 -0
  136. data/lib/rails_admin/config/lazy_model.rb +48 -8
  137. data/lib/rails_admin/config/model.rb +10 -22
  138. data/lib/rails_admin/config/proxyable/proxy.rb +7 -9
  139. data/lib/rails_admin/config/proxyable.rb +13 -1
  140. data/lib/rails_admin/config/sections/base.rb +4 -17
  141. data/lib/rails_admin/config/sections/list.rb +37 -0
  142. data/lib/rails_admin/config.rb +46 -25
  143. data/lib/rails_admin/engine.rb +37 -4
  144. data/lib/rails_admin/extension.rb +16 -4
  145. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +23 -7
  146. data/lib/rails_admin/extensions/cancancan.rb +1 -1
  147. data/lib/rails_admin/extensions/controller_extension.rb +6 -0
  148. data/lib/rails_admin/extensions/history/auditing_adapter.rb +2 -2
  149. data/lib/rails_admin/extensions/history/history.rb +2 -2
  150. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +59 -17
  151. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +11 -3
  152. data/lib/rails_admin/support/csv_converter.rb +20 -14
  153. data/lib/rails_admin/support/datetime.rb +7 -6
  154. data/lib/rails_admin/support/i18n.rb +7 -5
  155. data/lib/rails_admin/version.rb +2 -2
  156. data/lib/rails_admin.rb +23 -1
  157. data/lib/tasks/rails_admin.rake +16 -7
  158. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  159. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  160. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +2671 -0
  161. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  162. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  163. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  164. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  165. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  166. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  167. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  168. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  169. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  170. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  171. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  172. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  173. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  174. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  175. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  176. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  177. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  178. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  179. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  180. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  181. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  182. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  183. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  184. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  185. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  186. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  187. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  188. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  189. data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  190. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  191. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  192. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  193. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  194. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  195. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  196. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  197. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  198. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  199. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  200. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  201. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  202. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  203. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  204. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  205. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  206. data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  207. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +316 -161
  208. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +16528 -8420
  209. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  210. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  211. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  212. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  213. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  214. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  215. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  216. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  217. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  218. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  219. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  220. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  221. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  222. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  223. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  224. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  225. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  226. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  227. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  228. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  229. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  230. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  231. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  232. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  233. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  234. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  235. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  236. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  237. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  238. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  239. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  240. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  241. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  242. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  243. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  244. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  245. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  246. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  247. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  248. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  249. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  250. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  251. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  252. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  253. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  254. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  255. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  256. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  257. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  258. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  259. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  260. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  261. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  262. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  263. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  264. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  265. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  266. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  267. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  268. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  269. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  270. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  271. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  272. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  273. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  274. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  275. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  276. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  277. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  278. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  279. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +2342 -0
  280. data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
  281. metadata +214 -199
  282. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  283. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  284. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  285. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  286. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  287. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  288. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  289. data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  290. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  291. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  292. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  293. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  294. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  295. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  296. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  297. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  298. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  299. data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  300. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  301. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  302. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  303. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  304. data/app/assets/javascripts/rails_admin/jquery.remotipart.fixed.js +0 -72
  305. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -8
  306. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -52
  307. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -308
  308. data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
  309. data/config/initializers/devise_patch.rb +0 -9
  310. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  311. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  312. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
  313. data/lib/rails_admin/extensions/cancan.rb +0 -3
@@ -1,31 +1,13 @@
1
- require 'rails_admin/config/fields/base'
1
+ require 'rails_admin/config/fields/types/string_like'
2
2
 
3
3
  module RailsAdmin
4
4
  module Config
5
5
  module Fields
6
6
  module Types
7
- class Text < RailsAdmin::Config::Fields::Base
7
+ class Text < StringLike
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
- [:ckeditor, :ckeditor_base_location, :ckeditor_config_js, :ckeditor_location].each do |key|
12
- register_deprecated_instance_option key do
13
- fail("The 'field(:foo){ ckeditor true }' style DSL is deprecated. Please use 'field :foo, :ck_editor' instead.")
14
- end
15
- end
16
-
17
- [:codemirror, :codemirror_assets, :codemirror_config, :codemirror_css_location, :codemirror_js_location].each do |key|
18
- register_deprecated_instance_option key do
19
- fail("The 'field(:foo){ codemirror true }' style DSL is deprecated. Please use 'field :foo, :code_mirror' instead.")
20
- end
21
- end
22
-
23
- [:bootstrap_wysihtml5, :bootstrap_wysihtml5_config_options, :bootstrap_wysihtml5_css_location, :bootstrap_wysihtml5_js_location].each do |key|
24
- register_deprecated_instance_option key do
25
- fail("The 'field(:foo){ bootstrap_wysihtml5 true }' style DSL is deprecated. Please use 'field :foo, :wysihtml5' instead.")
26
- end
27
- end
28
-
29
11
  register_instance_option :html_attributes do
30
12
  {
31
13
  required: required?,
@@ -1,35 +1,39 @@
1
- require 'rails_admin/config/fields/base'
1
+ require 'rails_admin/config/fields/types/text'
2
2
 
3
3
  module RailsAdmin
4
4
  module Config
5
5
  module Fields
6
6
  module Types
7
- class Wysihtml5 < RailsAdmin::Config::Fields::Types::Text
7
+ class Wysihtml5 < Text
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
11
  # If you want to have a different toolbar configuration for wysihtml5
12
12
  # you can use a Ruby hash to configure these options:
13
- # https://github.com/jhollingworth/bootstrap-wysihtml5/#advanced
13
+ # https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg
14
14
  register_instance_option :config_options do
15
- nil
15
+ {
16
+ toolbar: {
17
+ fa: true,
18
+ },
19
+ }
20
+ end
21
+
22
+ register_instance_option :version do
23
+ '0.3.3'
16
24
  end
17
25
 
18
26
  register_instance_option :css_location do
19
- ActionController::Base.helpers.asset_path('bootstrap-wysihtml5.css')
27
+ "https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-wysiwyg/#{version}/bootstrap3-wysihtml5.min.css"
20
28
  end
21
29
 
22
30
  register_instance_option :js_location do
23
- ActionController::Base.helpers.asset_path('bootstrap-wysihtml5.js')
31
+ "https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-wysiwyg/#{version}/bootstrap3-wysihtml5.all.min.js"
24
32
  end
25
33
 
26
34
  register_instance_option :partial do
27
35
  :form_wysihtml5
28
36
  end
29
-
30
- [:config_options, :css_location, :js_location].each do |key|
31
- register_deprecated_instance_option :"bootstrap_wysihtml5_#{key}", key
32
- end
33
37
  end
34
38
  end
35
39
  end
@@ -9,7 +9,7 @@ module RailsAdmin
9
9
  @@registry = {}
10
10
 
11
11
  def self.load(type)
12
- @@registry[type.to_sym] || fail("Unsupported field datatype: #{type}")
12
+ @@registry[type.to_sym] || raise("Unsupported field datatype: #{type}")
13
13
  end
14
14
 
15
15
  def self.register(type, klass = nil)
@@ -82,5 +82,7 @@ require 'rails_admin/config/fields/factories/devise'
82
82
  require 'rails_admin/config/fields/factories/paperclip'
83
83
  require 'rails_admin/config/fields/factories/dragonfly'
84
84
  require 'rails_admin/config/fields/factories/carrierwave'
85
- require 'rails_admin/config/fields/factories/refile'
85
+ require 'rails_admin/config/fields/factories/active_storage'
86
+ require 'rails_admin/config/fields/factories/shrine'
87
+ require 'rails_admin/config/fields/factories/action_text'
86
88
  require 'rails_admin/config/fields/factories/association'
@@ -130,7 +130,7 @@ module RailsAdmin
130
130
  @_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
131
131
  else
132
132
  # parent is RailsAdmin::Config::Model, recursion is on Section's classes
133
- @_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true).freeze
133
+ @_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true).clone.freeze
134
134
  end
135
135
  readonly ? @_ro_fields : (@_fields ||= @_ro_fields.collect(&:clone))
136
136
  end
@@ -16,7 +16,7 @@ module RailsAdmin
16
16
 
17
17
  # Reader for groups that are marked as visible
18
18
  def visible_groups
19
- parent.groups.collect { |f| f.section = self; f.with(bindings) }.select(&:visible?).select do |g| # rubocop:disable Semicolon
19
+ parent.groups.collect { |f| f.section = self; f.with(bindings) }.select(&:visible?).select do |g| # rubocop:disable Style/Semicolon
20
20
  g.visible_fields.present?
21
21
  end
22
22
  end
@@ -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 { false == instance_eval(&block) } : false
20
20
  end
21
21
 
22
22
  # Writer to show field.
@@ -0,0 +1,39 @@
1
+ module RailsAdmin
2
+ module Config
3
+ module Inspectable
4
+ def inspect
5
+ set_named_instance_variables
6
+
7
+ instance_name = try(:name) || try(:abstract_model).try(:model).try(:name)
8
+ instance_name = instance_name ? "[#{instance_name}]" : ''
9
+
10
+ instance_vars = instance_variables.collect do |v|
11
+ instance_variable_name(v)
12
+ end.join(', ')
13
+
14
+ "#<#{self.class.name}#{instance_name} #{instance_vars}>"
15
+ end
16
+
17
+ private
18
+
19
+ def instance_variable_name(variable)
20
+ value = instance_variable_get(variable)
21
+ if self.class::NAMED_INSTANCE_VARIABLES.include?(variable)
22
+ if value.respond_to?(:name)
23
+ "#{variable}=#{value.name.inspect}"
24
+ else
25
+ "#{variable}=#{value.class.name}"
26
+ end
27
+ else
28
+ "#{variable}=#{value.inspect}"
29
+ end
30
+ end
31
+
32
+ def set_named_instance_variables
33
+ unless defined?(self.class::NAMED_INSTANCE_VARIABLES)
34
+ self.class.const_set('NAMED_INSTANCE_VARIABLES', [])
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -5,23 +5,63 @@ module RailsAdmin
5
5
  class LazyModel < BasicObject
6
6
  def initialize(entity, &block)
7
7
  @entity = entity
8
- @deferred_block = block
8
+ @deferred_blocks = [*block]
9
+ @existing_blocks = []
10
+ end
11
+
12
+ def add_deferred_block(&block)
13
+ @deferred_blocks << block
9
14
  end
10
15
 
11
16
  def target
12
- unless @model
13
- @model = ::RailsAdmin::Config::Model.new(@entity)
14
- @model.instance_eval(&@deferred_block) if @deferred_block
17
+ @model ||= ::RailsAdmin::Config::Model.new(@entity)
18
+ # When evaluating multiple configuration blocks, the order of
19
+ # execution is important. As one would expect (in my opinion),
20
+ # options defined within a resource should take precedence over
21
+ # more general options defined in an initializer. This way,
22
+ # general settings for a number of resources could be specified
23
+ # in the initializer, while models could override these settings
24
+ # later, if required.
25
+ #
26
+ # CAVEAT: It cannot be guaranteed that blocks defined in an initializer
27
+ # will be loaded (and adde to @deferred_blocks) first. For instance, if
28
+ # the initializer references a model class before defining
29
+ # a RailsAdmin configuration block, the configuration from the
30
+ # resource will get added to @deferred_blocks first:
31
+ #
32
+ # # app/models/some_model.rb
33
+ # class SomeModel
34
+ # rails_admin do
35
+ # :
36
+ # end
37
+ # end
38
+ #
39
+ # # config/initializers/rails_admin.rb
40
+ # model = 'SomeModel'.constantize # blocks from SomeModel get loaded
41
+ # model.config model do # blocks from initializer gets loaded
42
+ # :
43
+ # end
44
+ #
45
+ # Thus, sort all blocks to excute for a resource by Proc.source_path,
46
+ # to guarantee that blocks from 'config/initializers' evaluate before
47
+ # blocks defined within a model class.
48
+ unless @deferred_blocks.empty?
49
+ @existing_blocks += @deferred_blocks
50
+ @existing_blocks.
51
+ partition { |block| block.source_location.first =~ %r{config\/initializers} }.
52
+ flatten.
53
+ each { |block| @model.instance_eval(&block) }
54
+ @deferred_blocks = []
15
55
  end
16
56
  @model
17
57
  end
18
58
 
19
- def method_missing(method, *args, &block)
20
- target.send(method, *args, &block)
59
+ def method_missing(method_name, *args, &block)
60
+ target.send(method_name, *args, &block)
21
61
  end
22
62
 
23
- def respond_to?(method, include_private = false)
24
- super || target.respond_to?(method, include_private)
63
+ def respond_to?(method_name, include_private = false)
64
+ super || target.respond_to?(method_name, include_private)
25
65
  end
26
66
  end
27
67
  end
@@ -9,6 +9,7 @@ require 'rails_admin/config/has_fields'
9
9
  require 'rails_admin/config/has_description'
10
10
  require 'rails_admin/config/sections'
11
11
  require 'rails_admin/config/actions'
12
+ require 'rails_admin/config/inspectable'
12
13
 
13
14
  module RailsAdmin
14
15
  module Config
@@ -18,11 +19,14 @@ module RailsAdmin
18
19
  include RailsAdmin::Config::Configurable
19
20
  include RailsAdmin::Config::Hideable
20
21
  include RailsAdmin::Config::Sections
22
+ include RailsAdmin::Config::Inspectable
21
23
 
22
24
  attr_reader :abstract_model
23
25
  attr_accessor :groups
24
26
  attr_reader :parent, :root
25
27
 
28
+ NAMED_INSTANCE_VARIABLES = [:@parent, :@root].freeze
29
+
26
30
  def initialize(entity)
27
31
  @parent = nil
28
32
  @root = self
@@ -40,7 +44,8 @@ module RailsAdmin
40
44
  end
41
45
 
42
46
  def excluded?
43
- @excluded ||= !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
47
+ return @excluded if defined?(@excluded)
48
+ @excluded = !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
44
49
  end
45
50
 
46
51
  def object_label
@@ -61,7 +66,7 @@ module RailsAdmin
61
66
  end
62
67
 
63
68
  register_instance_option :label_plural do
64
- (@label_plural ||= {})[::I18n.locale] ||= abstract_model.model.model_name.human(count: Float::INFINITY, default: label.pluralize)
69
+ (@label_plural ||= {})[::I18n.locale] ||= abstract_model.model.model_name.human(count: Float::INFINITY, default: label.pluralize(::I18n.locale))
65
70
  end
66
71
 
67
72
  def pluralize(count)
@@ -83,7 +88,7 @@ module RailsAdmin
83
88
 
84
89
  register_instance_option :navigation_label do
85
90
  @navigation_label ||= begin
86
- if (parent_module = abstract_model.model.parent) != Object
91
+ if (parent_module = abstract_model.model.try(:module_parent) || abstract_model.model.try!(:parent)) != Object
87
92
  parent_module.to_s
88
93
  end
89
94
  end
@@ -95,25 +100,8 @@ module RailsAdmin
95
100
 
96
101
  # Act as a proxy for the base section configuration that actually
97
102
  # store the configurations.
98
- def method_missing(m, *args, &block)
99
- send(:base).send(m, *args, &block)
100
- end
101
-
102
- def inspect
103
- "#<#{self.class.name}[#{abstract_model.model.name}] #{
104
- instance_variables.collect do |v|
105
- value = instance_variable_get(v)
106
- if [:@parent, :@root].include? v
107
- if value.respond_to? :name
108
- "#{v}=#{value.name.inspect}"
109
- else
110
- "#{v}=#{value.class.name}"
111
- end
112
- else
113
- "#{v}=#{value.inspect}"
114
- end
115
- end.join(', ')
116
- }>"
103
+ def method_missing(method_name, *args, &block)
104
+ send(:base).send(method_name, *args, &block)
117
105
  end
118
106
  end
119
107
  end
@@ -2,8 +2,6 @@ module RailsAdmin
2
2
  module Config
3
3
  module Proxyable
4
4
  class Proxy < BasicObject
5
- attr_reader :bindings
6
-
7
5
  def initialize(object, bindings = {})
8
6
  @object = object
9
7
  @bindings = bindings
@@ -19,18 +17,18 @@ module RailsAdmin
19
17
  self
20
18
  end
21
19
 
22
- def method_missing(name, *args, &block)
23
- if @object.respond_to?(name)
24
- reset = @object.instance_variable_get('@bindings')
20
+ def method_missing(method_name, *args, &block)
21
+ if @object.respond_to?(method_name)
22
+ reset = @object.bindings
25
23
  begin
26
- @object.instance_variable_set('@bindings', @bindings)
27
- response = @object.__send__(name, *args, &block)
24
+ @object.bindings = @bindings
25
+ response = @object.__send__(method_name, *args, &block)
28
26
  ensure
29
- @object.instance_variable_set('@bindings', reset)
27
+ @object.bindings = reset
30
28
  end
31
29
  response
32
30
  else
33
- super(name, *args, &block)
31
+ super(method_name, *args, &block)
34
32
  end
35
33
  end
36
34
  end
@@ -2,7 +2,19 @@ require 'rails_admin/config/proxyable/proxy'
2
2
  module RailsAdmin
3
3
  module Config
4
4
  module Proxyable
5
- attr_accessor :bindings
5
+ def bindings
6
+ Thread.current[:rails_admin_bindings] ||= {}
7
+ Thread.current[:rails_admin_bindings][self]
8
+ end
9
+
10
+ def bindings=(new_bindings)
11
+ Thread.current[:rails_admin_bindings] ||= {}
12
+ if new_bindings.nil?
13
+ Thread.current[:rails_admin_bindings].delete(self)
14
+ else
15
+ Thread.current[:rails_admin_bindings][self] = new_bindings
16
+ end
17
+ end
6
18
 
7
19
  def with(bindings = {})
8
20
  RailsAdmin::Config::Proxyable::Proxy.new(self, bindings)
@@ -1,5 +1,6 @@
1
1
  require 'rails_admin/config/proxyable'
2
2
  require 'rails_admin/config/configurable'
3
+ require 'rails_admin/config/inspectable'
3
4
  require 'rails_admin/config/has_fields'
4
5
  require 'rails_admin/config/has_groups'
5
6
  require 'rails_admin/config/has_description'
@@ -11,6 +12,7 @@ module RailsAdmin
11
12
  class Base
12
13
  include RailsAdmin::Config::Proxyable
13
14
  include RailsAdmin::Config::Configurable
15
+ include RailsAdmin::Config::Inspectable
14
16
 
15
17
  include RailsAdmin::Config::HasFields
16
18
  include RailsAdmin::Config::HasGroups
@@ -19,29 +21,14 @@ module RailsAdmin
19
21
  attr_reader :abstract_model
20
22
  attr_reader :parent, :root
21
23
 
24
+ NAMED_INSTANCE_VARIABLES = [:@parent, :@root, :@abstract_model].freeze
25
+
22
26
  def initialize(parent)
23
27
  @parent = parent
24
28
  @root = parent.root
25
29
 
26
30
  @abstract_model = root.abstract_model
27
31
  end
28
-
29
- def inspect
30
- "#<#{self.class.name} #{
31
- instance_variables.collect do |v|
32
- value = instance_variable_get(v)
33
- if [:@parent, :@root, :@abstract_model].include? v
34
- if value.respond_to? :name
35
- "#{v}=#{value.name.inspect}"
36
- else
37
- "#{v}=#{value.class.name}"
38
- end
39
- else
40
- "#{v}=#{value.inspect}"
41
- end
42
- end.join(', ')
43
- }>"
44
- end
45
32
  end
46
33
  end
47
34
  end
@@ -5,6 +5,10 @@ module RailsAdmin
5
5
  module Sections
6
6
  # Configuration of the list view
7
7
  class List < RailsAdmin::Config::Sections::Base
8
+ register_instance_option :checkboxes? do
9
+ true
10
+ end
11
+
8
12
  register_instance_option :filters do
9
13
  []
10
14
  end
@@ -14,6 +18,16 @@ module RailsAdmin
14
18
  RailsAdmin::Config.default_items_per_page
15
19
  end
16
20
 
21
+ # Positive value shows only prev, next links in pagination.
22
+ # This is for avoiding count(*) query.
23
+ register_instance_option :limited_pagination do
24
+ false
25
+ end
26
+
27
+ register_instance_option :search_by do
28
+ nil
29
+ end
30
+
17
31
  register_instance_option :sort_by do
18
32
  parent.abstract_model.primary_key
19
33
  end
@@ -25,6 +39,29 @@ module RailsAdmin
25
39
  register_instance_option :scopes do
26
40
  []
27
41
  end
42
+
43
+ register_instance_option :row_css_class do
44
+ ''
45
+ end
46
+
47
+ register_instance_option :sidescroll do
48
+ nil
49
+ end
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
64
+ end
28
65
  end
29
66
  end
30
67
  end
@@ -41,6 +41,9 @@ module RailsAdmin
41
41
  # been configured
42
42
  attr_accessor :default_items_per_page
43
43
 
44
+ # Default association limit
45
+ attr_accessor :default_associated_collection_limit
46
+
44
47
  attr_reader :default_search_operator
45
48
 
46
49
  # Configuration option to specify which method names will be searched for
@@ -56,22 +59,29 @@ module RailsAdmin
56
59
  # Set the max width of columns in list view before a new set is created
57
60
  attr_accessor :total_columns_width
58
61
 
62
+ # Enable horizontal-scrolling table in list view, ignore total_columns_width
63
+ attr_accessor :sidescroll
64
+
59
65
  # set parent controller
60
66
  attr_accessor :parent_controller
61
67
 
68
+ # set settings for `protect_from_forgery` method
69
+ # By default, it raises exception upon invalid CSRF tokens
70
+ attr_accessor :forgery_protection_settings
71
+
62
72
  # Stores model configuration objects in a hash identified by model's class
63
73
  # name.
64
74
  #
65
75
  # @see RailsAdmin.config
66
76
  attr_reader :registry
67
77
 
78
+ # show Gravatar in Navigation bar
79
+ attr_accessor :show_gravatar
80
+
68
81
  # accepts a hash of static links to be shown below the main navigation
69
82
  attr_accessor :navigation_static_links
70
83
  attr_accessor :navigation_static_label
71
84
 
72
- # yell about fields that are not marked as accessible
73
- attr_accessor :yell_for_non_accessible_fields
74
-
75
85
  # Setup authentication to be run as a before filter
76
86
  # This is run inside the controller instance so you can setup any authentication you need to
77
87
  #
@@ -104,11 +114,13 @@ module RailsAdmin
104
114
  def audit_with(*args, &block)
105
115
  extension = args.shift
106
116
  if extension
117
+ klass = RailsAdmin::AUDITING_ADAPTERS[extension]
118
+ klass.setup if klass.respond_to? :setup
107
119
  @audit = proc do
108
- @auditing_adapter = RailsAdmin::AUDITING_ADAPTERS[extension].new(*([self] + args).compact)
120
+ @auditing_adapter = klass.new(*([self] + args).compact)
109
121
  end
110
- else
111
- @audit = block if block
122
+ elsif block
123
+ @audit = block
112
124
  end
113
125
  @audit || DEFAULT_AUDIT
114
126
  end
@@ -126,11 +138,11 @@ module RailsAdmin
126
138
  # end
127
139
  #
128
140
  # To use an authorization adapter, pass the name of the adapter. For example,
129
- # to use with CanCan[https://github.com/ryanb/cancan], pass it like this.
141
+ # to use with CanCanCan[https://github.com/CanCanCommunity/cancancan/], pass it like this.
130
142
  #
131
- # @example CanCan
143
+ # @example CanCanCan
132
144
  # RailsAdmin.config do |config|
133
- # config.authorize_with :cancan
145
+ # config.authorize_with :cancancan
134
146
  # end
135
147
  #
136
148
  # See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
@@ -139,11 +151,13 @@ module RailsAdmin
139
151
  def authorize_with(*args, &block)
140
152
  extension = args.shift
141
153
  if extension
154
+ klass = RailsAdmin::AUTHORIZATION_ADAPTERS[extension]
155
+ klass.setup if klass.respond_to? :setup
142
156
  @authorize = proc do
143
- @authorization_adapter = RailsAdmin::AUTHORIZATION_ADAPTERS[extension].new(*([self] + args).compact)
157
+ @authorization_adapter = klass.new(*([self] + args).compact)
144
158
  end
145
- else
146
- @authorize = block if block
159
+ elsif block
160
+ @authorize = block
147
161
  end
148
162
  @authorize || DEFAULT_AUTHORIZE
149
163
  end
@@ -187,15 +201,13 @@ module RailsAdmin
187
201
  if %w(default like starts_with ends_with is =).include? operator
188
202
  @default_search_operator = operator
189
203
  else
190
- fail(ArgumentError.new("Search operator '#{operator}' not supported"))
204
+ raise(ArgumentError.new("Search operator '#{operator}' not supported"))
191
205
  end
192
206
  end
193
207
 
194
208
  # pool of all found model names from the whole application
195
209
  def models_pool
196
- excluded = (excluded_models.collect(&:to_s) + ['RailsAdmin::History'])
197
-
198
- (viable_models - excluded).uniq.sort
210
+ (viable_models - excluded_models.collect(&:to_s)).uniq.sort
199
211
  end
200
212
 
201
213
  # Loads a model configuration instance from the registry or registers
@@ -223,11 +235,9 @@ module RailsAdmin
223
235
  end
224
236
  end
225
237
 
226
- if block
227
- @registry[key] = RailsAdmin::Config::LazyModel.new(entity, &block)
228
- else
229
- @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
230
- end
238
+ @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
239
+ @registry[key].add_deferred_block(&block) if block
240
+ @registry[key]
231
241
  end
232
242
 
233
243
  def default_hidden_fields=(fields)
@@ -258,7 +268,6 @@ module RailsAdmin
258
268
  def reset
259
269
  @compact_show_view = true
260
270
  @browser_validations = true
261
- @yell_for_non_accessible_fields = true
262
271
  @authenticate = nil
263
272
  @authorize = nil
264
273
  @audit = nil
@@ -268,16 +277,20 @@ module RailsAdmin
268
277
  @default_hidden_fields[:edit] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
269
278
  @default_hidden_fields[:show] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
270
279
  @default_items_per_page = 20
280
+ @default_associated_collection_limit = 100
271
281
  @default_search_operator = 'default'
272
282
  @excluded_models = []
273
283
  @included_models = []
274
284
  @total_columns_width = 697
285
+ @sidescroll = nil
275
286
  @label_methods = [:name, :title]
276
287
  @main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
277
288
  @registry = {}
289
+ @show_gravatar = true
278
290
  @navigation_static_links = {}
279
291
  @navigation_static_label = nil
280
- @parent_controller = '::ApplicationController'
292
+ @parent_controller = '::ActionController::Base'
293
+ @forgery_protection_settings = {with: :exception}
281
294
  RailsAdmin::Config::Actions.reset
282
295
  end
283
296
 
@@ -289,6 +302,14 @@ module RailsAdmin
289
302
  @registry.delete(key)
290
303
  end
291
304
 
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 = {}
311
+ end
312
+
292
313
  # Get all models that are configured as visible sorted by their weight and label.
293
314
  #
294
315
  # @see RailsAdmin::Config::Hideable
@@ -313,7 +334,7 @@ module RailsAdmin
313
334
  included_models.collect(&:to_s).presence || begin
314
335
  @@system_models ||= # memoization for tests
315
336
  ([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
316
- (app.paths['app/models'].to_a + app.config.autoload_paths).collect do |load_path|
337
+ (app.paths['app/models'].to_a + app.paths.eager_load).collect do |load_path|
317
338
  Dir.glob(app.root.join(load_path)).collect do |load_dir|
318
339
  Dir.glob(load_dir + '/**/*.rb').collect do |filename|
319
340
  # app/models/module/class.rb => module/class.rb => module/class => Module::Class
@@ -321,7 +342,7 @@ module RailsAdmin
321
342
  end
322
343
  end
323
344
  end
324
- end.flatten.reject { |m| m.starts_with?('Concerns::') } # rubocop:disable MultilineBlockChain
345
+ end.flatten.reject { |m| m.starts_with?('Concerns::') } # rubocop:disable Style/MultilineBlockChain
325
346
  end
326
347
  end
327
348