rails_admin 0.8.1 → 2.2.1

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

Potentially problematic release.


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

Files changed (313) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -34
  3. data/LICENSE.md +1 -1
  4. data/README.md +34 -26
  5. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  9. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  10. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  11. data/app/assets/images/rails_admin/calendar.png +0 -0
  12. data/app/assets/images/rails_admin/clock.png +0 -0
  13. data/app/assets/images/rails_admin/magnifier.png +0 -0
  14. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  15. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  16. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  17. data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  18. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +8 -0
  19. data/app/assets/javascripts/rails_admin/jquery.migrate.js +3 -0
  20. data/app/assets/javascripts/rails_admin/ra.filter-box.js +148 -60
  21. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +31 -26
  22. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +211 -110
  23. data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
  24. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +59 -0
  25. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  26. data/app/assets/javascripts/rails_admin/ra.widgets.js +379 -0
  27. data/app/assets/javascripts/rails_admin/rails_admin.js +5 -5
  28. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  29. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  30. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  31. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  32. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  33. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +5 -5
  34. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
  35. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +9 -1
  36. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
  37. data/app/controllers/rails_admin/application_controller.rb +14 -8
  38. data/app/controllers/rails_admin/main_controller.rb +9 -9
  39. data/app/helpers/rails_admin/application_helper.rb +26 -11
  40. data/app/helpers/rails_admin/form_builder.rb +20 -12
  41. data/app/helpers/rails_admin/main_helper.rb +8 -7
  42. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_gap.html.haml +0 -0
  43. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_next_page.html.haml +0 -0
  44. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_page.html.haml +0 -0
  45. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_paginator.html.haml +0 -0
  46. data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_prev_page.html.haml +0 -0
  47. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +4 -0
  48. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +4 -0
  49. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +4 -0
  50. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  51. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +2 -2
  52. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  53. data/app/views/layouts/rails_admin/application.html.haml +4 -10
  54. data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
  55. data/app/views/rails_admin/main/_delete_notice.html.haml +14 -9
  56. data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
  57. data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -1
  58. data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -3
  59. data/app/views/rails_admin/main/_form_file_upload.html.haml +5 -5
  60. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +7 -6
  61. data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
  62. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +16 -0
  63. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
  64. data/app/views/rails_admin/main/_form_simple_mde.haml +8 -0
  65. data/app/views/rails_admin/main/dashboard.html.haml +5 -6
  66. data/app/views/rails_admin/main/export.html.haml +45 -36
  67. data/app/views/rails_admin/main/history.html.haml +3 -3
  68. data/app/views/rails_admin/main/index.html.haml +37 -26
  69. data/app/views/rails_admin/main/show.html.haml +6 -7
  70. data/config/initializers/active_record_extensions.rb +3 -3
  71. data/config/initializers/haml.rb +4 -1
  72. data/config/locales/rails_admin.en.yml +5 -2
  73. data/lib/generators/rails_admin/templates/initializer.erb +6 -2
  74. data/lib/rails_admin/abstract_model.rb +9 -10
  75. data/lib/rails_admin/adapters/active_record/abstract_object.rb +9 -3
  76. data/lib/rails_admin/adapters/active_record/property.rb +1 -5
  77. data/lib/rails_admin/adapters/active_record.rb +83 -28
  78. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +3 -3
  79. data/lib/rails_admin/adapters/mongoid/association.rb +18 -6
  80. data/lib/rails_admin/adapters/mongoid/bson.rb +29 -0
  81. data/lib/rails_admin/adapters/mongoid/extension.rb +4 -2
  82. data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
  83. data/lib/rails_admin/adapters/mongoid.rb +40 -26
  84. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +1 -1
  85. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
  86. data/lib/rails_admin/bootstrap-sass.rb +8 -6
  87. data/lib/rails_admin/config/actions/base.rb +20 -5
  88. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -4
  89. data/lib/rails_admin/config/actions/dashboard.rb +9 -5
  90. data/lib/rails_admin/config/actions/edit.rb +1 -3
  91. data/lib/rails_admin/config/actions/export.rb +1 -1
  92. data/lib/rails_admin/config/actions/index.rb +5 -3
  93. data/lib/rails_admin/config/actions/new.rb +4 -5
  94. data/lib/rails_admin/config/actions.rb +1 -1
  95. data/lib/rails_admin/config/configurable.rb +25 -18
  96. data/lib/rails_admin/config/fields/association.rb +11 -3
  97. data/lib/rails_admin/config/fields/base.rb +20 -27
  98. data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
  99. data/lib/rails_admin/config/fields/factories/active_storage.rb +30 -0
  100. data/lib/rails_admin/config/fields/factories/carrierwave.rb +4 -2
  101. data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
  102. data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
  103. data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
  104. data/lib/rails_admin/config/fields/types/active_record_enum.rb +19 -2
  105. data/lib/rails_admin/config/fields/types/active_storage.rb +49 -0
  106. data/lib/rails_admin/config/fields/types/all.rb +7 -1
  107. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -0
  108. data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -15
  109. data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
  110. data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
  111. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  112. data/lib/rails_admin/config/fields/types/datetime.rb +6 -3
  113. data/lib/rails_admin/config/fields/types/file_upload.rb +12 -4
  114. data/lib/rails_admin/config/fields/types/froala.rb +9 -11
  115. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -1
  116. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  117. data/lib/rails_admin/config/fields/types/json.rb +9 -1
  118. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +53 -0
  119. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +56 -0
  120. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +125 -0
  121. data/lib/rails_admin/config/fields/types/password.rb +5 -1
  122. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +12 -1
  123. data/lib/rails_admin/config/fields/types/serialized.rb +2 -2
  124. data/lib/rails_admin/config/fields/types/shrine.rb +54 -0
  125. data/lib/rails_admin/config/fields/types/simple_mde.rb +36 -0
  126. data/lib/rails_admin/config/fields/types/string.rb +8 -7
  127. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  128. data/lib/rails_admin/config/fields/types/text.rb +2 -20
  129. data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
  130. data/lib/rails_admin/config/fields/types.rb +1 -1
  131. data/lib/rails_admin/config/fields.rb +3 -1
  132. data/lib/rails_admin/config/has_fields.rb +1 -1
  133. data/lib/rails_admin/config/has_groups.rb +1 -1
  134. data/lib/rails_admin/config/hideable.rb +1 -1
  135. data/lib/rails_admin/config/inspectable.rb +39 -0
  136. data/lib/rails_admin/config/lazy_model.rb +48 -8
  137. data/lib/rails_admin/config/model.rb +10 -22
  138. data/lib/rails_admin/config/proxyable/proxy.rb +7 -9
  139. data/lib/rails_admin/config/proxyable.rb +13 -1
  140. data/lib/rails_admin/config/sections/base.rb +4 -17
  141. data/lib/rails_admin/config/sections/list.rb +37 -0
  142. data/lib/rails_admin/config.rb +46 -25
  143. data/lib/rails_admin/engine.rb +37 -4
  144. data/lib/rails_admin/extension.rb +16 -4
  145. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +23 -7
  146. data/lib/rails_admin/extensions/cancancan.rb +1 -1
  147. data/lib/rails_admin/extensions/controller_extension.rb +6 -0
  148. data/lib/rails_admin/extensions/history/auditing_adapter.rb +2 -2
  149. data/lib/rails_admin/extensions/history/history.rb +2 -2
  150. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +59 -17
  151. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +11 -3
  152. data/lib/rails_admin/support/csv_converter.rb +20 -14
  153. data/lib/rails_admin/support/datetime.rb +7 -6
  154. data/lib/rails_admin/support/i18n.rb +7 -5
  155. data/lib/rails_admin/version.rb +2 -2
  156. data/lib/rails_admin.rb +23 -1
  157. data/lib/tasks/rails_admin.rake +16 -7
  158. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  159. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  160. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +2671 -0
  161. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  162. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  163. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  164. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  165. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  166. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  167. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  168. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  169. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  170. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  171. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  172. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  173. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  174. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  175. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  176. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  177. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  178. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  179. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  180. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  181. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  182. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  183. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  184. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  185. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  186. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  187. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  188. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  189. data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  190. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  191. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  192. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  193. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  194. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  195. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  196. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  197. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  198. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  199. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  200. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  201. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  202. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  203. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  204. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  205. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  206. data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  207. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +316 -161
  208. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +16528 -8420
  209. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  210. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  211. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  212. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  213. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  214. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  215. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  216. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  217. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  218. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  219. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  220. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  221. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  222. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  223. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  224. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  225. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  226. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  227. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  228. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  229. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  230. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  231. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  232. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  233. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  234. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  235. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  236. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  237. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  238. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  239. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  240. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  241. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  242. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  243. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  244. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  245. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  246. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  247. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  248. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  249. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  250. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  251. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  252. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  253. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  254. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  255. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  256. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  257. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  258. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  259. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  260. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  261. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  262. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  263. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  264. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  265. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  266. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  267. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  268. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  269. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  270. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  271. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  272. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  273. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  274. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  275. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  276. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  277. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  278. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  279. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +2342 -0
  280. data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
  281. metadata +214 -199
  282. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  283. data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  284. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  285. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  286. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  287. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  288. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  289. data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  290. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  291. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  292. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  293. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  294. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  295. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  296. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  297. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  298. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  299. data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  300. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  301. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  302. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  303. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  304. data/app/assets/javascripts/rails_admin/jquery.remotipart.fixed.js +0 -72
  305. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -8
  306. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -52
  307. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -308
  308. data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
  309. data/config/initializers/devise_patch.rb +0 -9
  310. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  311. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  312. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
  313. data/lib/rails_admin/extensions/cancan.rb +0 -3
@@ -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