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
@@ -6,7 +6,7 @@ require 'rails_admin/adapters/active_record/property'
6
6
  module RailsAdmin
7
7
  module Adapters
8
8
  module ActiveRecord
9
- DISABLED_COLUMN_TYPES = [:tsvector, :blob, :binary, :spatial, :hstore, :geometry]
9
+ DISABLED_COLUMN_TYPES = [:tsvector, :blob, :binary, :spatial, :hstore, :geometry].freeze
10
10
 
11
11
  def new(params = {})
12
12
  AbstractObject.new(model.new(params))
@@ -56,20 +56,37 @@ module RailsAdmin
56
56
  def properties
57
57
  columns = model.columns.reject do |c|
58
58
  c.type.blank? ||
59
- DISABLED_COLUMN_TYPES.include?(c.type.to_sym) ||
60
- c.try(:array)
59
+ DISABLED_COLUMN_TYPES.include?(c.type.to_sym) ||
60
+ c.try(:array)
61
61
  end
62
62
  columns.collect do |property|
63
63
  Property.new(property, model)
64
64
  end
65
65
  end
66
66
 
67
+ def base_class
68
+ model.base_class
69
+ end
70
+
67
71
  delegate :primary_key, :table_name, to: :model, prefix: false
68
72
 
69
73
  def encoding
70
- encoding = ::ActiveRecord::Base.connection.try(:encoding)
71
- encoding ||= ::ActiveRecord::Base.connection.try(:charset) # mysql2
72
- encoding || 'UTF-8'
74
+ adapter =
75
+ if ::ActiveRecord::Base.respond_to?(:connection_db_config)
76
+ ::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter]
77
+ else
78
+ ::ActiveRecord::Base.connection_config[:adapter]
79
+ end
80
+ case adapter
81
+ when 'postgresql'
82
+ ::ActiveRecord::Base.connection.select_one("SELECT ''::text AS str;").values.first.encoding
83
+ when 'mysql2'
84
+ ::ActiveRecord::Base.connection.raw_connection.encoding
85
+ when 'oracle_enhanced'
86
+ ::ActiveRecord::Base.connection.select_one("SELECT dummy FROM DUAL").values.first.encoding
87
+ else
88
+ ::ActiveRecord::Base.connection.select_one("SELECT '' AS str;").values.first.encoding
89
+ end
73
90
  end
74
91
 
75
92
  def embedded?
@@ -94,12 +111,7 @@ module RailsAdmin
94
111
 
95
112
  def add(field, value, operator)
96
113
  field.searchable_columns.flatten.each do |column_infos|
97
- if value.is_a?(Array)
98
- value = value.map { |v| field.parse_value(v) }
99
- else
100
- value = field.parse_value(value)
101
- end
102
- statement, value1, value2 = StatementBuilder.new(column_infos[:column], column_infos[:type], value, operator).to_statement
114
+ statement, value1, value2 = StatementBuilder.new(column_infos[:column], column_infos[:type], value, operator, @scope.connection.adapter_name).to_statement
103
115
  @statements << statement if statement.present?
104
116
  @values << value1 unless value1.nil?
105
117
  @values << value2 unless value2.nil?
@@ -110,18 +122,23 @@ module RailsAdmin
110
122
 
111
123
  def build
112
124
  scope = @scope.where(@statements.join(' OR '), *@values)
113
- scope = scope.references(*(@tables.uniq)) if @tables.any?
125
+ scope = scope.references(*@tables.uniq) if @tables.any?
114
126
  scope
115
127
  end
116
128
  end
117
129
 
118
130
  def query_scope(scope, query, fields = config.list.fields.select(&:queryable?))
119
- wb = WhereBuilder.new(scope)
120
- fields.each do |field|
121
- wb.add(field, field.parse_value(query), field.search_operator)
131
+ if config.list.search_by
132
+ scope.send(config.list.search_by, query)
133
+ else
134
+ wb = WhereBuilder.new(scope)
135
+ fields.each do |field|
136
+ value = parse_field_value(field, query)
137
+ wb.add(field, value, field.search_operator)
138
+ end
139
+ # OR all query statements
140
+ wb.build
122
141
  end
123
- # OR all query statements
124
- wb.build
125
142
  end
126
143
 
127
144
  # filters example => {"string_field"=>{"0055"=>{"o"=>"like", "v"=>"test_value"}}, ...}
@@ -133,7 +150,7 @@ module RailsAdmin
133
150
  field = fields.detect { |f| f.name.to_s == field_name }
134
151
  value = parse_field_value(field, filter_dump[:v])
135
152
 
136
- wb.add(field, value, (filter_dump[:o] || 'default'))
153
+ wb.add(field, value, (filter_dump[:o] || RailsAdmin::Config.default_search_operator))
137
154
  # AND current filter statements to other filter statements
138
155
  scope = wb.build
139
156
  end
@@ -142,13 +159,31 @@ module RailsAdmin
142
159
  end
143
160
 
144
161
  def build_statement(column, type, value, operator)
145
- StatementBuilder.new(column, type, value, operator).to_statement
162
+ StatementBuilder.new(column, type, value, operator, model.connection.adapter_name).to_statement
146
163
  end
147
164
 
148
165
  class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
166
+ def initialize(column, type, value, operator, adapter_name)
167
+ super column, type, value, operator
168
+ @adapter_name = adapter_name
169
+ end
170
+
149
171
  protected
150
172
 
151
173
  def unary_operators
174
+ case @type
175
+ when :boolean
176
+ boolean_unary_operators
177
+ when :integer, :decimal, :float
178
+ numeric_unary_operators
179
+ else
180
+ generic_unary_operators
181
+ end
182
+ end
183
+
184
+ private
185
+
186
+ def generic_unary_operators
152
187
  {
153
188
  '_blank' => ["(#{@column} IS NULL OR #{@column} = '')"],
154
189
  '_present' => ["(#{@column} IS NOT NULL AND #{@column} != '')"],
@@ -159,7 +194,15 @@ module RailsAdmin
159
194
  }
160
195
  end
161
196
 
162
- private
197
+ def boolean_unary_operators
198
+ generic_unary_operators.merge(
199
+ '_blank' => ["(#{@column} IS NULL)"],
200
+ '_empty' => ["(#{@column} IS NULL)"],
201
+ '_present' => ["(#{@column} IS NOT NULL)"],
202
+ '_not_empty' => ["(#{@column} IS NOT NULL)"],
203
+ )
204
+ end
205
+ alias_method :numeric_unary_operators, :boolean_unary_operators
163
206
 
164
207
  def range_filter(min, max)
165
208
  if min && max
@@ -178,6 +221,7 @@ module RailsAdmin
178
221
  when :string, :text then build_statement_for_string_or_text
179
222
  when :enum then build_statement_for_enum
180
223
  when :belongs_to_association then build_statement_for_belongs_to_association
224
+ when :uuid then build_statement_for_uuid
181
225
  end
182
226
  end
183
227
 
@@ -197,22 +241,27 @@ module RailsAdmin
197
241
 
198
242
  def build_statement_for_string_or_text
199
243
  return if @value.blank?
244
+
245
+ return ["(#{@column} = ?)", @value] if ['is', '='].include?(@operator)
246
+
247
+ unless ['postgresql', 'postgis'].include? ar_adapter
248
+ @value = @value.mb_chars.downcase
249
+ end
250
+
200
251
  @value = begin
201
252
  case @operator
202
253
  when 'default', 'like'
203
- "%#{@value.downcase}%"
254
+ "%#{@value}%"
204
255
  when 'starts_with'
205
- "#{@value.downcase}%"
256
+ "#{@value}%"
206
257
  when 'ends_with'
207
- "%#{@value.downcase}"
208
- when 'is', '='
209
- "#{@value.downcase}"
258
+ "%#{@value}"
210
259
  else
211
260
  return
212
261
  end
213
262
  end
214
263
 
215
- if ar_adapter == 'postgresql'
264
+ if ['postgresql', 'postgis'].include? ar_adapter
216
265
  ["(#{@column} ILIKE ?)", @value]
217
266
  else
218
267
  ["(LOWER(#{@column}) LIKE ?)", @value]
@@ -224,8 +273,14 @@ module RailsAdmin
224
273
  ["(#{@column} IN (?))", Array.wrap(@value)]
225
274
  end
226
275
 
276
+ def build_statement_for_uuid
277
+ if @value.to_s =~ /\A[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}\z/
278
+ column_for_value(@value)
279
+ end
280
+ end
281
+
227
282
  def ar_adapter
228
- ::ActiveRecord::Base.connection.adapter_name.downcase
283
+ @adapter_name.downcase
229
284
  end
230
285
  end
231
286
  end
@@ -1,4 +1,5 @@
1
1
  require 'rails_admin/adapters/active_record/abstract_object'
2
+
2
3
  module RailsAdmin
3
4
  module Adapters
4
5
  module Mongoid
@@ -6,6 +7,7 @@ module RailsAdmin
6
7
  def initialize(object)
7
8
  super
8
9
  object.associations.each do |name, association|
10
+ association = Association.new(association, object.class)
9
11
  if [:has_many, :references_many].include? association.macro
10
12
  instance_eval <<-RUBY, __FILE__, __LINE__ + 1
11
13
  def #{name.to_s.singularize}_ids
@@ -27,9 +29,7 @@ RUBY
27
29
  def #{name}_id=(item_id)
28
30
  item = (#{association.klass}.find(item_id) rescue nil)
29
31
  return unless item
30
- unless persisted?
31
- item.update_attribute('#{association.foreign_key}', id)
32
- end
32
+ item.update_attribute('#{association.foreign_key}', id) unless persisted?
33
33
  super item.id
34
34
  end
35
35
  RUBY
@@ -3,6 +3,7 @@ module RailsAdmin
3
3
  module Mongoid
4
4
  class Association
5
5
  attr_reader :association, :model
6
+
6
7
  def initialize(association, model)
7
8
  @association = association
8
9
  @model = model
@@ -27,7 +28,7 @@ module RailsAdmin
27
28
  when :has_and_belongs_to_many, :references_and_referenced_in_many
28
29
  :has_and_belongs_to_many
29
30
  else
30
- fail("Unknown association type: #{macro.inspect}")
31
+ raise("Unknown association type: #{macro.inspect}")
31
32
  end
32
33
  end
33
34
 
@@ -40,11 +41,11 @@ module RailsAdmin
40
41
  end
41
42
 
42
43
  def primary_key
43
- :_id
44
+ association.primary_key.to_sym rescue :_id
44
45
  end
45
46
 
46
47
  def foreign_key
47
- return unless [:embeds_one, :embeds_many].exclude?(macro.to_sym)
48
+ return if embeds?
48
49
  association.foreign_key.to_sym rescue nil
49
50
  end
50
51
 
@@ -81,8 +82,8 @@ module RailsAdmin
81
82
 
82
83
  def nested_options
83
84
  nested = nested_attributes_options.try { |o| o[name] }
84
- if !nested && [:embeds_one, :embeds_many].include?(macro.to_sym) && !association.cyclic
85
- fail <<-MSG.gsub(/^\s+/, '')
85
+ if !nested && [:embeds_one, :embeds_many].include?(macro.to_sym) && !cyclic?
86
+ raise <<-MSG.gsub(/^\s+/, '')
86
87
  Embbeded association without accepts_nested_attributes_for can't be handled by RailsAdmin,
87
88
  because embedded model doesn't have top-level access.
88
89
  Please add `accepts_nested_attributes_for :#{association.name}' line to `#{model}' model.
@@ -95,13 +96,24 @@ module RailsAdmin
95
96
  true
96
97
  end
97
98
 
99
+ def macro
100
+ association.try(:macro) || association.class.name.split('::').last.underscore.to_sym
101
+ end
102
+
103
+ def embeds?
104
+ [:embeds_one, :embeds_many].include?(macro)
105
+ end
106
+
98
107
  private
99
108
 
100
109
  def inverse_of_field
101
110
  association.respond_to?(:inverse_of_field) && association.inverse_of_field
102
111
  end
103
112
 
104
- delegate :macro, :options, to: :association, prefix: false
113
+ def cyclic?
114
+ association.respond_to?(:cyclic?) ? association.cyclic? : association.cyclic
115
+ end
116
+
105
117
  delegate :nested_attributes_options, to: :model, prefix: false
106
118
  delegate :polymorphic_parents, to: RailsAdmin::AbstractModel
107
119
  end
@@ -0,0 +1,29 @@
1
+ require 'mongoid'
2
+
3
+ module RailsAdmin
4
+ module Adapters
5
+ module Mongoid
6
+ class Bson
7
+ OBJECT_ID = begin
8
+ if defined?(Moped::BSON)
9
+ Moped::BSON::ObjectId
10
+ elsif defined?(BSON::ObjectId)
11
+ BSON::ObjectId
12
+ end
13
+ end
14
+
15
+ class << self
16
+ def parse_object_id(value)
17
+ OBJECT_ID.from_string(value)
18
+ rescue => e
19
+ raise e if %w(
20
+ Moped::Errors::InvalidObjectId
21
+ BSON::ObjectId::Invalid
22
+ BSON::InvalidObjectId
23
+ ).exclude?(e.class.to_s)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -11,12 +11,14 @@ module RailsAdmin
11
11
  def rails_admin(&block)
12
12
  RailsAdmin.config(self, &block)
13
13
  end
14
- alias_method_chain :accepts_nested_attributes_for, :rails_admin
14
+
15
+ alias_method :accepts_nested_attributes_for_without_rails_admin, :accepts_nested_attributes_for
16
+ alias_method :accepts_nested_attributes_for, :accepts_nested_attributes_for_with_rails_admin
15
17
  end
16
18
  end
17
19
 
18
20
  def rails_admin_default_object_label_method
19
- self.new_record? ? "new #{self.class}" : "#{self.class} ##{id}"
21
+ new_record? ? "new #{self.class}" : "#{self.class} ##{id}"
20
22
  end
21
23
 
22
24
  def safe_send(value)
@@ -2,7 +2,7 @@ module RailsAdmin
2
2
  module Adapters
3
3
  module Mongoid
4
4
  class Property
5
- STRING_TYPE_COLUMN_NAMES = [:name, :title, :subject]
5
+ STRING_TYPE_COLUMN_NAMES = [:name, :title, :subject].freeze
6
6
  attr_reader :property, :model
7
7
 
8
8
  def initialize(property, model)
@@ -70,8 +70,8 @@ module RailsAdmin
70
70
  private
71
71
 
72
72
  def object_field_type
73
- if [:belongs_to, :referenced_in, :embedded_in].
74
- include?(model.relations.values.detect { |r| r.foreign_key.try(:to_sym) == name }.try(:macro).try(:to_sym))
73
+ association = Association.new model.relations.values.detect { |r| r.try(:foreign_key).try(:to_sym) == name }, model
74
+ if [:belongs_to, :referenced_in, :embedded_in].include?(association.macro)
75
75
  :bson_object_id
76
76
  else
77
77
  :string
@@ -3,11 +3,16 @@ require 'rails_admin/config/sections/list'
3
3
  require 'rails_admin/adapters/mongoid/abstract_object'
4
4
  require 'rails_admin/adapters/mongoid/association'
5
5
  require 'rails_admin/adapters/mongoid/property'
6
+ require 'rails_admin/adapters/mongoid/bson'
6
7
 
7
8
  module RailsAdmin
8
9
  module Adapters
9
10
  module Mongoid
10
- DISABLED_COLUMN_TYPES = ['Range', 'Moped::BSON::Binary', 'BSON::Binary', 'Mongoid::Geospatial::Point']
11
+ DISABLED_COLUMN_TYPES = %w(Range Moped::BSON::Binary BSON::Binary Mongoid::Geospatial::Point).freeze
12
+
13
+ def parse_object_id(value)
14
+ Bson.parse_object_id(value)
15
+ end
11
16
 
12
17
  def new(params = {})
13
18
  AbstractObject.new(model.new(params))
@@ -17,10 +22,10 @@ module RailsAdmin
17
22
  AbstractObject.new(model.find(id))
18
23
  rescue => e
19
24
  raise e if %w(
20
- BSON::InvalidObjectId
21
25
  Mongoid::Errors::DocumentNotFound
22
26
  Mongoid::Errors::InvalidFind
23
27
  Moped::Errors::InvalidObjectId
28
+ BSON::InvalidObjectId
24
29
  ).exclude?(e.class.to_s)
25
30
  end
26
31
 
@@ -37,13 +42,21 @@ module RailsAdmin
37
42
  scope = scope.includes(*options[:include]) if options[:include]
38
43
  scope = scope.limit(options[:limit]) if options[:limit]
39
44
  scope = scope.any_in(_id: options[:bulk_ids]) if options[:bulk_ids]
40
- scope = scope.where(query_conditions(options[:query])) if options[:query]
41
- scope = scope.where(filter_conditions(options[:filters])) if options[:filters]
45
+ scope = query_scope(scope, options[:query]) if options[:query]
46
+ scope = filter_scope(scope, options[:filters]) if options[:filters]
42
47
  if options[:page] && options[:per]
43
48
  scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per])
44
49
  end
45
50
  scope = sort_by(options, scope) if options[:sort]
46
51
  scope
52
+ rescue NoMethodError => e
53
+ if e.message =~ /page/
54
+ e = e.exception <<-EOM.gsub(/^\s{12}/, '')
55
+ #{e.message}
56
+ If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
57
+ EOM
58
+ end
59
+ raise e
47
60
  end
48
61
 
49
62
  def count(options = {}, scope = nil)
@@ -69,16 +82,22 @@ module RailsAdmin
69
82
  fields.collect { |_name, field| Property.new(field, model) }
70
83
  end
71
84
 
85
+ def base_class
86
+ klass = model
87
+ klass = klass.superclass while klass.hereditary?
88
+ klass
89
+ end
90
+
72
91
  def table_name
73
92
  model.collection_name.to_s
74
93
  end
75
94
 
76
95
  def encoding
77
- 'UTF-8'
96
+ Encoding::UTF_8
78
97
  end
79
98
 
80
99
  def embedded?
81
- model.relations.values.detect { |a| a.macro.to_sym == :embedded_in }
100
+ associations.detect { |a| a.macro == :embedded_in }
82
101
  end
83
102
 
84
103
  def cyclic?
@@ -99,7 +118,6 @@ module RailsAdmin
99
118
  conditions_per_collection = {}
100
119
  field.searchable_columns.each do |column_infos|
101
120
  collection_name, column_name = parse_collection_name(column_infos[:column])
102
- value = parse_field_value(field, value)
103
121
  statement = build_statement(column_name, column_infos[:type], value, operator)
104
122
  next unless statement
105
123
  conditions_per_collection[collection_name] ||= []
@@ -108,25 +126,25 @@ module RailsAdmin
108
126
  conditions_per_collection
109
127
  end
110
128
 
111
- def query_conditions(query, fields = config.list.fields.select(&:queryable?))
112
- statements = []
129
+ def query_scope(scope, query, fields = config.list.fields.select(&:queryable?))
130
+ if config.list.search_by
131
+ scope.send(config.list.search_by, query)
132
+ else
133
+ statements = []
113
134
 
114
- fields.each do |field|
115
- value = parse_field_value(field, query)
116
- conditions_per_collection = make_field_conditions(field, value, field.search_operator)
117
- statements.concat make_condition_for_current_collection(field, conditions_per_collection)
118
- end
135
+ fields.each do |field|
136
+ value = parse_field_value(field, query)
137
+ conditions_per_collection = make_field_conditions(field, value, field.search_operator)
138
+ statements.concat make_condition_for_current_collection(field, conditions_per_collection)
139
+ end
119
140
 
120
- if statements.any?
121
- {'$or' => statements}
122
- else
123
- {}
141
+ scope.where(statements.any? ? {'$or' => statements} : {})
124
142
  end
125
143
  end
126
144
 
127
145
  # filters example => {"string_field"=>{"0055"=>{"o"=>"like", "v"=>"test_value"}}, ...}
128
146
  # "0055" is the filter index, no use here. o is the operator, v the value
129
- def filter_conditions(filters, fields = config.list.fields.select(&:filterable?))
147
+ def filter_scope(scope, filters, fields = config.list.fields.select(&:filterable?))
130
148
  statements = []
131
149
 
132
150
  filters.each_pair do |field_name, filters_dump|
@@ -144,16 +162,12 @@ module RailsAdmin
144
162
  end
145
163
  end
146
164
 
147
- if statements.any?
148
- {'$and' => statements}
149
- else
150
- {}
151
- end
165
+ scope.where(statements.any? ? {'$and' => statements} : {})
152
166
  end
153
167
 
154
168
  def parse_collection_name(column)
155
169
  collection_name, column_name = column.split('.')
156
- if [:embeds_one, :embeds_many].include?(model.relations[collection_name].try(:macro).try(:to_sym))
170
+ if associations.detect { |a| a.name == collection_name.to_sym }.try(:embeds?)
157
171
  [table_name, column]
158
172
  else
159
173
  [collection_name, column_name]
@@ -193,7 +207,7 @@ module RailsAdmin
193
207
  when String
194
208
  field_name, collection_name = options[:sort].split('.').reverse
195
209
  if collection_name && collection_name != table_name
196
- fail('sorting by associated model column is not supported in Non-Relational databases')
210
+ raise('sorting by associated model column is not supported in Non-Relational databases')
197
211
  end
198
212
  when Symbol
199
213
  field_name = options[:sort].to_s
@@ -8,7 +8,7 @@ module Sass
8
8
  image_url(source, Sass::Script::Bool.new(true))
9
9
  else
10
10
  # Revert to the old compass-agnostic path determination
11
- asset_sans_quotes = source.value.gsub('"', '')
11
+ asset_sans_quotes = source.value.delete('"')
12
12
  Sass::Script::String.new("/images/#{asset_sans_quotes}", :string)
13
13
  end
14
14
  end
@@ -1,5 +1,3 @@
1
- require 'sass'
2
-
3
1
  module Sass
4
2
  module Script
5
3
  module Functions
@@ -12,7 +10,7 @@ module Sass
12
10
  alphastr = alpha.to_s(16).rjust(2, '0')
13
11
  Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase)
14
12
  end
15
- declare :ie_hex_str, [:color]
13
+ declare :ie_hex_str, [:color] if respond_to?(:declare)
16
14
  end
17
15
  end
18
16
  end
@@ -11,18 +11,20 @@ module RailsAdmin
11
11
  require 'rails_admin/bootstrap-sass/sass_functions'
12
12
  end
13
13
 
14
- require 'sass-rails' if rails?
14
+ require 'sassc-rails' if rails?
15
15
 
16
16
  unless rails? || compass?
17
- fail(Bootstrap::FrameworkNotFound.new('bootstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded'))
17
+ raise(Bootstrap::FrameworkNotFound.new('bootstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded'))
18
18
  end
19
19
 
20
- stylesheets = File.expand_path(File.join('..', 'vendor', 'assets', 'stylesheets'))
21
- ::Sass.load_paths << stylesheets
20
+ if defined?(::Sass) && ::Sass.respond_to?(:load_paths)
21
+ stylesheets = File.expand_path(File.join('..', 'vendor', 'assets', 'stylesheets'))
22
+ fonts = File.expand_path(File.join('..', 'vendor', 'assets', 'fonts'))
23
+ ::Sass.load_paths << stylesheets
24
+ ::Sass.load_paths << fonts
25
+ end
22
26
  end
23
27
 
24
- private
25
-
26
28
  def self.asset_pipeline?
27
29
  defined?(::Sprockets)
28
30
  end
@@ -18,6 +18,22 @@ module RailsAdmin
18
18
  []
19
19
  end
20
20
 
21
+ register_instance_option :show_in_navigation do
22
+ root?
23
+ end
24
+
25
+ register_instance_option :show_in_sidebar do
26
+ !show_in_navigation
27
+ end
28
+
29
+ register_instance_option :show_in_menu do
30
+ true
31
+ end
32
+
33
+ register_instance_option :sidebar_label do
34
+ nil
35
+ end
36
+
21
37
  # http://getbootstrap.com/2.3.2/base-css.html#icons
22
38
  register_instance_option :link_icon do
23
39
  'icon-question-sign'
@@ -83,7 +99,7 @@ module RailsAdmin
83
99
  key.to_sym
84
100
  end
85
101
 
86
- # For Cancan and the like
102
+ # For CanCanCan and the like
87
103
  register_instance_option :authorization_key do
88
104
  key.to_sym
89
105
  end
@@ -115,12 +131,11 @@ module RailsAdmin
115
131
 
116
132
  # Breadcrumb parent
117
133
  register_instance_option :breadcrumb_parent do
118
- case
119
- when root?
134
+ if root?
120
135
  [:dashboard]
121
- when collection?
136
+ elsif collection?
122
137
  [:index, bindings[:abstract_model]]
123
- when member?
138
+ elsif member?
124
139
  [:show, bindings[:abstract_model], bindings[:object]]
125
140
  end
126
141
  end
@@ -42,14 +42,12 @@ module RailsAdmin
42
42
  end
43
43
 
44
44
  if destroyed.nil?
45
- msg = t('admin.flash.error', name: pluralize(0, @model_config.label), action: t('admin.actions.delete.done'))
46
- render text: msg, status: :not_found
45
+ flash[:error] = t('admin.flash.error', name: pluralize(0, @model_config.label), action: t('admin.actions.delete.done'))
47
46
  else
48
47
  flash[:success] = t('admin.flash.successful', name: pluralize(destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless destroyed.empty?
49
48
  flash[:error] = t('admin.flash.error', name: pluralize(not_destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless not_destroyed.empty?
50
- redirect_to back_or_index
51
49
  end
52
-
50
+ redirect_to back_or_index
53
51
  end
54
52
  end
55
53
  end
@@ -12,13 +12,17 @@ module RailsAdmin
12
12
  nil
13
13
  end
14
14
 
15
+ register_instance_option :auditing_versions_limit do
16
+ 100
17
+ end
18
+
15
19
  register_instance_option :controller do
16
20
  proc do
17
- @history = @auditing_adapter && @auditing_adapter.latest || []
21
+ @history = @auditing_adapter && @auditing_adapter.latest(@action.auditing_versions_limit) || []
18
22
  if @action.statistics?
19
23
  @abstract_models = RailsAdmin::Config.visible_models(controller: self).collect(&:abstract_model)
20
24
 
21
- @most_recent_changes = {}
25
+ @most_recent_created = {}
22
26
  @count = {}
23
27
  @max = 0
24
28
  @abstract_models.each do |t|
@@ -26,11 +30,11 @@ module RailsAdmin
26
30
  current_count = t.count({}, scope)
27
31
  @max = current_count > @max ? current_count : @max
28
32
  @count[t.model.name] = current_count
29
- next unless t.properties.detect { |c| c.name == :updated_at }
30
- @most_recent_changes[t.model.name] = t.first(sort: "#{t.table_name}.updated_at").try(:updated_at)
33
+ next unless t.properties.detect { |c| c.name == :created_at }
34
+ @most_recent_created[t.model.name] = t.model.last.try(:created_at)
31
35
  end
32
36
  end
33
- render @action.template_name, status: (flash[:error].present? ? :not_found : 200)
37
+ render @action.template_name, status: @status_code || :ok
34
38
  end
35
39
  end
36
40