rails_admin 2.2.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -11
  3. data/README.md +42 -43
  4. data/Rakefile +15 -2
  5. data/app/assets/javascripts/rails_admin/application.js.erb +29 -0
  6. data/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
  7. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  9. data/app/controllers/rails_admin/application_controller.rb +6 -3
  10. data/app/controllers/rails_admin/main_controller.rb +55 -50
  11. data/app/helpers/rails_admin/application_helper.rb +129 -63
  12. data/app/helpers/rails_admin/form_builder.rb +17 -6
  13. data/app/helpers/rails_admin/main_helper.rb +18 -42
  14. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  15. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  16. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  17. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
  18. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  19. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  20. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
  21. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  22. data/app/views/layouts/rails_admin/_head.html.erb +29 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/content.html.erb +22 -0
  28. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  29. data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  30. data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  31. data/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
  33. data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
  34. data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  35. data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
  38. data/app/views/rails_admin/main/_form_field.html.erb +1 -0
  39. data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  40. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +49 -0
  41. data/app/views/rails_admin/main/_form_filtering_select.html.erb +33 -0
  42. data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  43. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  44. data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  45. data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  46. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +32 -0
  47. data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  48. data/app/views/rails_admin/main/_form_text.html.erb +1 -0
  49. data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  50. data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  51. data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  52. data/app/views/rails_admin/main/dashboard.html.erb +64 -0
  53. data/app/views/rails_admin/main/delete.html.erb +21 -0
  54. data/app/views/rails_admin/main/edit.html.erb +3 -0
  55. data/app/views/rails_admin/main/export.html.erb +149 -0
  56. data/app/views/rails_admin/main/history.html.erb +80 -0
  57. data/app/views/rails_admin/main/index.html.erb +184 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +30 -0
  60. data/config/initializers/active_record_extensions.rb +25 -0
  61. data/config/initializers/mongoid_extensions.rb +3 -1
  62. data/config/locales/rails_admin.en.yml +8 -3
  63. data/config/routes.rb +2 -0
  64. data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  65. data/lib/generators/rails_admin/install_generator.rb +117 -5
  66. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  67. data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  68. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  69. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  70. data/lib/generators/rails_admin/utils.rb +2 -0
  71. data/lib/rails_admin/abstract_model.rb +35 -15
  72. data/lib/rails_admin/adapters/active_record/association.rb +31 -2
  73. data/lib/rails_admin/adapters/active_record/object_extension.rb +31 -0
  74. data/lib/rails_admin/adapters/active_record/property.rb +4 -2
  75. data/lib/rails_admin/adapters/active_record.rb +60 -28
  76. data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
  77. data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
  78. data/lib/rails_admin/adapters/mongoid/association.rb +52 -13
  79. data/lib/rails_admin/adapters/mongoid/bson.rb +6 -5
  80. data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
  81. data/lib/rails_admin/adapters/mongoid/object_extension.rb +34 -0
  82. data/lib/rails_admin/adapters/mongoid/property.rb +7 -5
  83. data/lib/rails_admin/adapters/mongoid.rb +33 -23
  84. data/lib/rails_admin/config/actions/base.rb +11 -4
  85. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -2
  86. data/lib/rails_admin/config/actions/dashboard.rb +16 -9
  87. data/lib/rails_admin/config/actions/delete.rb +11 -9
  88. data/lib/rails_admin/config/actions/edit.rb +13 -7
  89. data/lib/rails_admin/config/actions/export.rb +6 -3
  90. data/lib/rails_admin/config/actions/history_index.rb +4 -2
  91. data/lib/rails_admin/config/actions/history_show.rb +4 -2
  92. data/lib/rails_admin/config/actions/index.rb +9 -8
  93. data/lib/rails_admin/config/actions/new.rb +18 -10
  94. data/lib/rails_admin/config/actions/show.rb +3 -1
  95. data/lib/rails_admin/config/actions/show_in_app.rb +9 -3
  96. data/lib/rails_admin/config/actions.rb +6 -4
  97. data/lib/rails_admin/config/configurable.rb +4 -2
  98. data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
  99. data/lib/rails_admin/config/fields/association.rb +21 -11
  100. data/lib/rails_admin/config/fields/base.rb +86 -36
  101. data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
  102. data/lib/rails_admin/config/fields/factories/active_storage.rb +5 -1
  103. data/lib/rails_admin/config/fields/factories/association.rb +12 -13
  104. data/lib/rails_admin/config/fields/factories/carrierwave.rb +6 -2
  105. data/lib/rails_admin/config/fields/factories/devise.rb +6 -2
  106. data/lib/rails_admin/config/fields/factories/dragonfly.rb +6 -2
  107. data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
  108. data/lib/rails_admin/config/fields/factories/paperclip.rb +6 -2
  109. data/lib/rails_admin/config/fields/factories/password.rb +2 -0
  110. data/lib/rails_admin/config/fields/factories/shrine.rb +3 -1
  111. data/lib/rails_admin/config/fields/group.rb +3 -2
  112. data/lib/rails_admin/config/fields/types/action_text.rb +7 -1
  113. data/lib/rails_admin/config/fields/types/active_record_enum.rb +4 -0
  114. data/lib/rails_admin/config/fields/types/active_storage.rb +23 -7
  115. data/lib/rails_admin/config/fields/types/all.rb +4 -0
  116. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +9 -15
  117. data/lib/rails_admin/config/fields/types/boolean.rb +38 -8
  118. data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
  119. data/lib/rails_admin/config/fields/types/carrierwave.rb +3 -0
  120. data/lib/rails_admin/config/fields/types/citext.rb +15 -0
  121. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
  122. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
  123. data/lib/rails_admin/config/fields/types/color.rb +8 -2
  124. data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
  125. data/lib/rails_admin/config/fields/types/date.rb +12 -6
  126. data/lib/rails_admin/config/fields/types/datetime.rb +36 -21
  127. data/lib/rails_admin/config/fields/types/decimal.rb +11 -2
  128. data/lib/rails_admin/config/fields/types/dragonfly.rb +5 -1
  129. data/lib/rails_admin/config/fields/types/enum.rb +16 -3
  130. data/lib/rails_admin/config/fields/types/file_upload.rb +6 -3
  131. data/lib/rails_admin/config/fields/types/float.rb +11 -2
  132. data/lib/rails_admin/config/fields/types/froala.rb +2 -0
  133. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
  134. data/lib/rails_admin/config/fields/types/has_many_association.rb +7 -5
  135. data/lib/rails_admin/config/fields/types/has_one_association.rb +12 -14
  136. data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
  137. data/lib/rails_admin/config/fields/types/inet.rb +2 -0
  138. data/lib/rails_admin/config/fields/types/integer.rb +4 -6
  139. data/lib/rails_admin/config/fields/types/json.rb +2 -0
  140. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +30 -6
  141. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
  142. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +6 -3
  143. data/lib/rails_admin/config/fields/types/numeric.rb +24 -0
  144. data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
  145. data/lib/rails_admin/config/fields/types/password.rb +2 -0
  146. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +5 -2
  147. data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
  148. data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
  149. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
  150. data/lib/rails_admin/config/fields/types/string.rb +3 -1
  151. data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
  152. data/lib/rails_admin/config/fields/types/text.rb +2 -0
  153. data/lib/rails_admin/config/fields/types/time.rb +16 -4
  154. data/lib/rails_admin/config/fields/types/timestamp.rb +2 -4
  155. data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
  156. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
  157. data/lib/rails_admin/config/fields/types.rb +3 -1
  158. data/lib/rails_admin/config/fields.rb +6 -2
  159. data/lib/rails_admin/config/groupable.rb +2 -0
  160. data/lib/rails_admin/config/has_description.rb +2 -0
  161. data/lib/rails_admin/config/has_fields.rb +12 -7
  162. data/lib/rails_admin/config/has_groups.rb +2 -0
  163. data/lib/rails_admin/config/hideable.rb +3 -1
  164. data/lib/rails_admin/config/inspectable.rb +3 -3
  165. data/lib/rails_admin/config/lazy_model.rb +13 -7
  166. data/lib/rails_admin/config/model.rb +22 -10
  167. data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
  168. data/lib/rails_admin/config/proxyable.rb +2 -0
  169. data/lib/rails_admin/config/sections/base.rb +4 -3
  170. data/lib/rails_admin/config/sections/create.rb +2 -0
  171. data/lib/rails_admin/config/sections/edit.rb +2 -0
  172. data/lib/rails_admin/config/sections/export.rb +2 -0
  173. data/lib/rails_admin/config/sections/list.rb +14 -19
  174. data/lib/rails_admin/config/sections/modal.rb +2 -0
  175. data/lib/rails_admin/config/sections/nested.rb +2 -0
  176. data/lib/rails_admin/config/sections/show.rb +2 -0
  177. data/lib/rails_admin/config/sections/update.rb +2 -0
  178. data/lib/rails_admin/config/sections.rb +3 -1
  179. data/lib/rails_admin/config.rb +81 -44
  180. data/lib/rails_admin/engine.rb +43 -32
  181. data/lib/rails_admin/extension.rb +8 -14
  182. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +25 -6
  183. data/lib/rails_admin/extensions/cancancan.rb +2 -0
  184. data/lib/rails_admin/extensions/controller_extension.rb +2 -0
  185. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +61 -34
  186. data/lib/rails_admin/extensions/paper_trail.rb +2 -0
  187. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +8 -7
  188. data/lib/rails_admin/extensions/pundit.rb +2 -0
  189. data/lib/rails_admin/support/csv_converter.rb +14 -15
  190. data/lib/rails_admin/support/datetime.rb +50 -85
  191. data/lib/rails_admin/support/es_module_processor.rb +23 -0
  192. data/lib/rails_admin/support/hash_helper.rb +8 -5
  193. data/lib/rails_admin/version.rb +42 -3
  194. data/lib/rails_admin.rb +7 -5
  195. data/lib/tasks/rails_admin.rake +5 -3
  196. data/package.json +30 -0
  197. data/src/rails_admin/base.js +29 -0
  198. data/src/rails_admin/filter-box.js +360 -0
  199. data/src/rails_admin/filtering-multiselect.js +389 -0
  200. data/src/rails_admin/filtering-select.js +308 -0
  201. data/src/rails_admin/i18n.js +18 -0
  202. data/src/rails_admin/jquery.js +3 -0
  203. data/src/rails_admin/nested-form-hooks.js +110 -0
  204. data/src/rails_admin/remote-form.js +193 -0
  205. data/src/rails_admin/sidescroll.js +20 -0
  206. data/src/rails_admin/styles/base/theming.scss +342 -0
  207. data/src/rails_admin/styles/base/variables.scss +3 -0
  208. data/src/rails_admin/styles/base.scss +27 -0
  209. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  210. data/src/rails_admin/styles/filtering-select.scss +70 -0
  211. data/src/rails_admin/styles/widgets.scss +26 -0
  212. data/src/rails_admin/ui.js +176 -0
  213. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  214. data/src/rails_admin/widgets.js +507 -0
  215. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  216. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  217. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  218. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  219. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  220. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  221. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  222. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  223. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  224. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  225. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  226. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  227. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  228. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  229. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  230. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  231. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  232. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  233. data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  234. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  251. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  252. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  253. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  254. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  255. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  256. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  257. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  258. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  259. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  260. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  261. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  262. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  263. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  264. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  265. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  266. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  267. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  268. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  269. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  270. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  271. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  272. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  273. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  274. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  275. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  276. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  277. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  278. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  279. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  280. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  281. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  282. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  283. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  284. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  285. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  286. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  287. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  288. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  289. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  290. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  291. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  292. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  293. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  294. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  295. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  296. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  297. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  298. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  299. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  300. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  301. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  302. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  303. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  304. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  305. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  306. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  307. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  308. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  309. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  310. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  311. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  312. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  313. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  314. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  315. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  316. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  317. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  318. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
  319. metadata +180 -328
  320. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  321. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  322. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  323. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  324. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  325. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  326. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  327. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  328. data/app/assets/images/rails_admin/calendar.png +0 -0
  329. data/app/assets/images/rails_admin/clock.png +0 -0
  330. data/app/assets/images/rails_admin/logo.png +0 -0
  331. data/app/assets/images/rails_admin/magnifier.png +0 -0
  332. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  333. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  334. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  335. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  336. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  337. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  338. data/app/assets/javascripts/rails_admin/jquery.migrate.js +0 -3
  339. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -246
  340. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  341. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  342. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  343. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  344. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  345. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  346. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  347. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -21
  348. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  349. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  354. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  355. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  356. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  357. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  358. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  359. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  360. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  361. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  362. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  364. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  365. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  366. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  367. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  368. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  369. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  370. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  371. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  372. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  373. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  375. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  376. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  377. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  378. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  379. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  380. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  381. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  382. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  383. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  384. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  385. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  386. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  387. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  388. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  389. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  390. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
  391. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  392. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  393. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -49
  394. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  395. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  396. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  397. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  398. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  399. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  400. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  401. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  402. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  403. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  404. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  405. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  406. data/app/views/rails_admin/main/delete.html.haml +0 -18
  407. data/app/views/rails_admin/main/edit.html.haml +0 -2
  408. data/app/views/rails_admin/main/export.html.haml +0 -92
  409. data/app/views/rails_admin/main/history.html.haml +0 -51
  410. data/app/views/rails_admin/main/index.html.haml +0 -126
  411. data/app/views/rails_admin/main/new.html.haml +0 -2
  412. data/app/views/rails_admin/main/show.html.haml +0 -15
  413. data/config/initializers/haml.rb +0 -5
  414. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -38
  415. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  416. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  417. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  418. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  419. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  420. data/lib/rails_admin/extensions/history/history.rb +0 -44
  421. data/lib/rails_admin/extensions/history.rb +0 -3
  422. data/lib/rails_admin/support/i18n.rb +0 -43
  423. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  424. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  425. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  426. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  427. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  428. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  429. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  430. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  431. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  432. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  433. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  434. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  435. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  436. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  437. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  438. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  439. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  440. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  441. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  442. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  443. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  444. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  445. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  446. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  447. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  448. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  449. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  450. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  451. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  452. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  453. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  454. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  455. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  456. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -164
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
  467. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  468. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  469. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  470. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2611
  471. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  472. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
  473. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
  474. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  475. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  476. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  477. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  478. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  479. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  480. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  481. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  482. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  483. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  484. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  485. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  486. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  487. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  488. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  489. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  490. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  491. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  492. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  493. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  494. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  495. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  496. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  497. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  498. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  499. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  500. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  501. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  502. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  503. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  504. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  505. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  506. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  507. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  508. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  509. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  510. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  511. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  512. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  513. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  514. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  515. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  516. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  517. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  518. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  519. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
  520. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  521. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  522. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
@@ -1,9 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
4
6
  class Association
5
7
  attr_reader :association, :model
6
8
 
9
+ delegate :autosave?, to: :association
10
+
7
11
  def initialize(association, model)
8
12
  @association = association
9
13
  @model = model
@@ -28,12 +32,20 @@ module RailsAdmin
28
32
  when :has_and_belongs_to_many, :references_and_referenced_in_many
29
33
  :has_and_belongs_to_many
30
34
  else
31
- raise("Unknown association type: #{macro.inspect}")
35
+ raise "Unknown association type: #{macro.inspect}"
36
+ end
37
+ end
38
+
39
+ def field_type
40
+ if polymorphic?
41
+ :polymorphic_association
42
+ else
43
+ :"#{type}_association"
32
44
  end
33
45
  end
34
46
 
35
47
  def klass
36
- if polymorphic? && [:referenced_in, :belongs_to].include?(macro)
48
+ if polymorphic? && %i[referenced_in belongs_to].include?(macro)
37
49
  polymorphic_parents(:mongoid, model.name, name) || []
38
50
  else
39
51
  association.klass
@@ -41,35 +53,61 @@ module RailsAdmin
41
53
  end
42
54
 
43
55
  def primary_key
44
- association.primary_key.to_sym rescue :_id
56
+ case type
57
+ when :belongs_to, :has_and_belongs_to_many
58
+ association.primary_key.to_sym
59
+ else
60
+ :_id
61
+ end
45
62
  end
46
63
 
47
64
  def foreign_key
48
65
  return if embeds?
49
- association.foreign_key.to_sym rescue nil
66
+
67
+ begin
68
+ association.foreign_key.to_sym
69
+ rescue StandardError
70
+ nil
71
+ end
50
72
  end
51
73
 
52
74
  def foreign_key_nullable?
53
75
  return if foreign_key.nil?
76
+
54
77
  true
55
78
  end
56
79
 
57
80
  def foreign_type
58
- return unless polymorphic? && [:referenced_in, :belongs_to].include?(macro)
81
+ return unless polymorphic? && %i[referenced_in belongs_to].include?(macro)
82
+
59
83
  association.inverse_type.try(:to_sym) || :"#{name}_type"
60
84
  end
61
85
 
62
86
  def foreign_inverse_of
63
- return unless polymorphic? && [:referenced_in, :belongs_to].include?(macro)
87
+ return unless polymorphic? && %i[referenced_in belongs_to].include?(macro)
88
+
64
89
  inverse_of_field.try(:to_sym)
65
90
  end
66
91
 
92
+ def key_accessor
93
+ case macro.to_sym
94
+ when :has_many
95
+ "#{name.to_s.singularize}_ids".to_sym
96
+ when :has_one
97
+ "#{name}_id".to_sym
98
+ when :embedded_in, :embeds_one, :embeds_many
99
+ nil
100
+ else
101
+ foreign_key
102
+ end
103
+ end
104
+
67
105
  def as
68
106
  association.as.try :to_sym
69
107
  end
70
108
 
71
109
  def polymorphic?
72
- association.polymorphic? && [:referenced_in, :belongs_to].include?(macro)
110
+ association.polymorphic? && %i[referenced_in belongs_to].include?(macro)
73
111
  end
74
112
 
75
113
  def inverse_of
@@ -82,13 +120,14 @@ module RailsAdmin
82
120
 
83
121
  def nested_options
84
122
  nested = nested_attributes_options.try { |o| o[name] }
85
- if !nested && [:embeds_one, :embeds_many].include?(macro.to_sym) && !cyclic?
86
- raise <<-MSG.gsub(/^\s+/, '')
87
- Embbeded association without accepts_nested_attributes_for can't be handled by RailsAdmin,
88
- because embedded model doesn't have top-level access.
89
- Please add `accepts_nested_attributes_for :#{association.name}' line to `#{model}' model.
123
+ if !nested && %i[embeds_one embeds_many].include?(macro.to_sym) && !cyclic?
124
+ raise <<~MSG
125
+ Embedded association without accepts_nested_attributes_for can't be handled by RailsAdmin,
126
+ because embedded model doesn't have top-level access.
127
+ Please add `accepts_nested_attributes_for :#{association.name}' line to `#{model}' model.
90
128
  MSG
91
129
  end
130
+
92
131
  nested
93
132
  end
94
133
 
@@ -101,7 +140,7 @@ module RailsAdmin
101
140
  end
102
141
 
103
142
  def embeds?
104
- [:embeds_one, :embeds_many].include?(macro)
143
+ %i[embeds_one embeds_many].include?(macro)
105
144
  end
106
145
 
107
146
  private
@@ -1,26 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
4
 
3
5
  module RailsAdmin
4
6
  module Adapters
5
7
  module Mongoid
6
8
  class Bson
7
- OBJECT_ID = begin
9
+ OBJECT_ID =
8
10
  if defined?(Moped::BSON)
9
11
  Moped::BSON::ObjectId
10
12
  elsif defined?(BSON::ObjectId)
11
13
  BSON::ObjectId
12
14
  end
13
- end
14
15
 
15
16
  class << self
16
17
  def parse_object_id(value)
17
18
  OBJECT_ID.from_string(value)
18
- rescue => e
19
- raise e if %w(
19
+ rescue StandardError => e
20
+ raise e if %w[
20
21
  Moped::Errors::InvalidObjectId
21
22
  BSON::ObjectId::Invalid
22
23
  BSON::InvalidObjectId
23
- ).exclude?(e.class.to_s)
24
+ ].exclude?(e.class.to_s)
24
25
  end
25
26
  end
26
27
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAdmin
4
+ module Adapters
5
+ module Mongoid
6
+ module ObjectExtension
7
+ def self.extended(object)
8
+ object.associations.each do |name, association|
9
+ association = Association.new(association, object.class)
10
+ case association.macro
11
+ when :has_many
12
+ unless association.autosave?
13
+ object.singleton_class.after_create do
14
+ send(name).each(&:save)
15
+ end
16
+ end
17
+ when :has_one
18
+ unless association.autosave?
19
+ object.singleton_class.after_create do
20
+ send(name)&.save
21
+ end
22
+ end
23
+ object.instance_eval <<-RUBY, __FILE__, __LINE__ + 1
24
+ def #{name}_id=(item_id)
25
+ self.#{name} = (#{association.klass}.find(item_id) rescue nil)
26
+ end
27
+ RUBY
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
4
6
  class Property
5
- STRING_TYPE_COLUMN_NAMES = [:name, :title, :subject].freeze
7
+ STRING_TYPE_COLUMN_NAMES = %i[name title subject].freeze
6
8
  attr_reader :property, :model
7
9
 
8
10
  def initialize(property, model)
@@ -11,11 +13,11 @@ module RailsAdmin
11
13
  end
12
14
 
13
15
  def name
14
- property.name.to_sym
16
+ (property.options[:as] || property.name).to_sym
15
17
  end
16
18
 
17
19
  def pretty_name
18
- property.name.to_s.tr('_', ' ').capitalize
20
+ (property.options[:as] || property.name).to_s.tr('_', ' ').capitalize
19
21
  end
20
22
 
21
23
  def type
@@ -64,14 +66,14 @@ module RailsAdmin
64
66
  end
65
67
 
66
68
  def read_only?
67
- false
69
+ model.readonly_attributes.include? property.name.to_s
68
70
  end
69
71
 
70
72
  private
71
73
 
72
74
  def object_field_type
73
75
  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)
76
+ if %i[belongs_to referenced_in embedded_in].include?(association.macro)
75
77
  :bson_object_id
76
78
  else
77
79
  :string
@@ -1,32 +1,37 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
4
  require 'rails_admin/config/sections/list'
3
- require 'rails_admin/adapters/mongoid/abstract_object'
4
5
  require 'rails_admin/adapters/mongoid/association'
6
+ require 'rails_admin/adapters/mongoid/object_extension'
5
7
  require 'rails_admin/adapters/mongoid/property'
6
8
  require 'rails_admin/adapters/mongoid/bson'
7
9
 
8
10
  module RailsAdmin
9
11
  module Adapters
10
12
  module Mongoid
11
- DISABLED_COLUMN_TYPES = %w(Range Moped::BSON::Binary BSON::Binary Mongoid::Geospatial::Point).freeze
13
+ DISABLED_COLUMN_TYPES = %w[Range Moped::BSON::Binary BSON::Binary Mongoid::Geospatial::Point].freeze
12
14
 
13
15
  def parse_object_id(value)
14
16
  Bson.parse_object_id(value)
15
17
  end
16
18
 
17
19
  def new(params = {})
18
- AbstractObject.new(model.new(params))
20
+ model.new(params).extend(ObjectExtension)
19
21
  end
20
22
 
21
- def get(id)
22
- AbstractObject.new(model.find(id))
23
- rescue => e
24
- raise e if %w(
23
+ def get(id, scope = scoped)
24
+ object = scope.find(id)
25
+ return nil unless object
26
+
27
+ object.extend(ObjectExtension)
28
+ rescue StandardError => e
29
+ raise e if %w[
25
30
  Mongoid::Errors::DocumentNotFound
26
31
  Mongoid::Errors::InvalidFind
27
32
  Moped::Errors::InvalidObjectId
28
33
  BSON::InvalidObjectId
29
- ).exclude?(e.class.to_s)
34
+ ].exclude?(e.class.to_s)
30
35
  end
31
36
 
32
37
  def scoped
@@ -44,17 +49,15 @@ module RailsAdmin
44
49
  scope = scope.any_in(_id: options[:bulk_ids]) if options[:bulk_ids]
45
50
  scope = query_scope(scope, options[:query]) if options[:query]
46
51
  scope = filter_scope(scope, options[:filters]) if options[:filters]
47
- if options[:page] && options[:per]
48
- scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per])
49
- end
52
+ scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per]) if options[:page] && options[:per]
50
53
  scope = sort_by(options, scope) if options[:sort]
51
54
  scope
52
55
  rescue NoMethodError => e
53
- if e.message =~ /page/
54
- e = e.exception <<-EOM.gsub(/^\s{12}/, '')
56
+ if /page/.match?(e.message)
57
+ e = e.exception <<~ERROR
55
58
  #{e.message}
56
59
  If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
57
- EOM
60
+ ERROR
58
61
  end
59
62
  raise e
60
63
  end
@@ -120,6 +123,7 @@ module RailsAdmin
120
123
  collection_name, column_name = parse_collection_name(column_infos[:column])
121
124
  statement = build_statement(column_name, column_infos[:type], value, operator)
122
125
  next unless statement
126
+
123
127
  conditions_per_collection[collection_name] ||= []
124
128
  conditions_per_collection[collection_name] << statement
125
129
  end
@@ -151,6 +155,7 @@ module RailsAdmin
151
155
  filters_dump.each do |_, filter_dump|
152
156
  field = fields.detect { |f| f.name.to_s == field_name }
153
157
  next unless field
158
+
154
159
  value = parse_field_value(field, filter_dump[:v])
155
160
  conditions_per_collection = make_field_conditions(field, value, (filter_dump[:o] || 'default'))
156
161
  field_statements = make_condition_for_current_collection(field, conditions_per_collection)
@@ -191,11 +196,12 @@ module RailsAdmin
191
196
  def perform_search_on_associated_collection(field_name, conditions)
192
197
  target_association = associations.detect { |a| a.name == field_name }
193
198
  return [] unless target_association
199
+
194
200
  model = target_association.klass
195
201
  case target_association.type
196
202
  when :belongs_to, :has_and_belongs_to_many
197
203
  [{target_association.foreign_key.to_s => {'$in' => model.where('$or' => conditions).all.collect { |r| r.send(target_association.primary_key) }}}]
198
- when :has_many
204
+ when :has_many, :has_one
199
205
  [{target_association.primary_key.to_s => {'$in' => model.where('$or' => conditions).all.collect { |r| r.send(target_association.foreign_key) }}}]
200
206
  end
201
207
  end
@@ -206,9 +212,7 @@ module RailsAdmin
206
212
  case options[:sort]
207
213
  when String
208
214
  field_name, collection_name = options[:sort].split('.').reverse
209
- if collection_name && collection_name != table_name
210
- raise('sorting by associated model column is not supported in Non-Relational databases')
211
- end
215
+ raise 'sorting by associated model column is not supported in Non-Relational databases' if collection_name && collection_name != table_name
212
216
  when Symbol
213
217
  field_name = options[:sort].to_s
214
218
  end
@@ -246,8 +250,8 @@ module RailsAdmin
246
250
  end
247
251
 
248
252
  def build_statement_for_boolean
249
- return {@column => false} if %w(false f 0).include?(@value)
250
- return {@column => true} if %w(true t 1).include?(@value)
253
+ return {@column => false} if %w[false f 0].include?(@value)
254
+ return {@column => true} if %w[true t 1].include?(@value)
251
255
  end
252
256
 
253
257
  def column_for_value(value)
@@ -256,8 +260,11 @@ module RailsAdmin
256
260
 
257
261
  def build_statement_for_string_or_text
258
262
  return if @value.blank?
259
- @value = begin
263
+
264
+ @value =
260
265
  case @operator
266
+ when 'not_like'
267
+ Regexp.compile("^((?!#{Regexp.escape(@value)}).)*$", Regexp::IGNORECASE)
261
268
  when 'default', 'like'
262
269
  Regexp.compile(Regexp.escape(@value), Regexp::IGNORECASE)
263
270
  when 'starts_with'
@@ -269,12 +276,13 @@ module RailsAdmin
269
276
  else
270
277
  return
271
278
  end
272
- end
279
+
273
280
  {@column => @value}
274
281
  end
275
282
 
276
283
  def build_statement_for_enum
277
284
  return if @value.blank?
285
+
278
286
  {@column => {'$in' => Array.wrap(@value)}}
279
287
  end
280
288
 
@@ -283,7 +291,9 @@ module RailsAdmin
283
291
  end
284
292
 
285
293
  def range_filter(min, max)
286
- if min && max
294
+ if min && max && min == max
295
+ {@column => min}
296
+ elsif min && max
287
297
  {@column => {'$gte' => min, '$lte' => max}}
288
298
  elsif min
289
299
  {@column => {'$gte' => min}}
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/proxyable'
2
4
  require 'rails_admin/config/configurable'
3
5
  require 'rails_admin/config/hideable'
@@ -36,7 +38,7 @@ module RailsAdmin
36
38
 
37
39
  # http://getbootstrap.com/2.3.2/base-css.html#icons
38
40
  register_instance_option :link_icon do
39
- 'icon-question-sign'
41
+ 'fas fa-question'
40
42
  end
41
43
 
42
44
  # Should the action be visible
@@ -49,7 +51,7 @@ module RailsAdmin
49
51
  (only.nil? || [only].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s)) &&
50
52
  ![except].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s) &&
51
53
  !bindings[:abstract_model].config.excluded?
52
- )
54
+ ) && (!respond_to?(:writable?) || writable?)
53
55
  end
54
56
 
55
57
  register_instance_option :authorized? do
@@ -73,8 +75,13 @@ module RailsAdmin
73
75
  false
74
76
  end
75
77
 
76
- # Render via pjax?
77
- register_instance_option :pjax? do
78
+ # Target window [_self, _blank]
79
+ register_instance_option :link_target do
80
+ nil
81
+ end
82
+
83
+ # Determines whether to navigate via Turbo Drive or not
84
+ register_instance_option :turbo? do
78
85
  true
79
86
  end
80
87
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -9,7 +11,7 @@ module RailsAdmin
9
11
  end
10
12
 
11
13
  register_instance_option :http_methods do
12
- [:post, :delete]
14
+ %i[post delete]
13
15
  end
14
16
 
15
17
  register_instance_option :controller do
@@ -36,7 +38,7 @@ module RailsAdmin
36
38
  destroyed = processed_objects.select(&:destroyed?)
37
39
  not_destroyed = processed_objects - destroyed
38
40
  destroyed.each do |object|
39
- @auditing_adapter && @auditing_adapter.delete_object(object, @abstract_model, _current_user)
41
+ @auditing_adapter&.delete_object(object, @abstract_model, _current_user)
40
42
  end
41
43
  end
42
44
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -18,20 +20,21 @@ module RailsAdmin
18
20
 
19
21
  register_instance_option :controller do
20
22
  proc do
21
- @history = @auditing_adapter && @auditing_adapter.latest(@action.auditing_versions_limit) || []
23
+ @history = @auditing_adapter&.latest(@action.auditing_versions_limit) if @action.history?
22
24
  if @action.statistics?
23
- @abstract_models = RailsAdmin::Config.visible_models(controller: self).collect(&:abstract_model)
25
+ model_configs = RailsAdmin::Config.visible_models(controller: self)
24
26
 
27
+ @abstract_models = model_configs.map(&:abstract_model)
25
28
  @most_recent_created = {}
26
29
  @count = {}
27
30
  @max = 0
28
- @abstract_models.each do |t|
29
- scope = @authorization_adapter && @authorization_adapter.query(:index, t)
30
- current_count = t.count({}, scope)
31
+ model_configs.each do |config|
32
+ scope = @authorization_adapter&.query(:index, config.abstract_model)
33
+ current_count = config.abstract_model.count({}, scope)
31
34
  @max = current_count > @max ? current_count : @max
32
- @count[t.model.name] = current_count
33
- next unless t.properties.detect { |c| c.name == :created_at }
34
- @most_recent_created[t.model.name] = t.model.last.try(:created_at)
35
+ name = config.abstract_model.model.name
36
+ @count[name] = current_count
37
+ @most_recent_created[name] = config.last_created_at
35
38
  end
36
39
  end
37
40
  render @action.template_name, status: @status_code || :ok
@@ -43,12 +46,16 @@ module RailsAdmin
43
46
  end
44
47
 
45
48
  register_instance_option :link_icon do
46
- 'icon-home'
49
+ 'fas fa-home'
47
50
  end
48
51
 
49
52
  register_instance_option :statistics? do
50
53
  true
51
54
  end
55
+
56
+ register_instance_option :history? do
57
+ true
58
+ end
52
59
  end
53
60
  end
54
61
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -13,7 +15,7 @@ module RailsAdmin
13
15
  end
14
16
 
15
17
  register_instance_option :http_methods do
16
- [:get, :delete]
18
+ %i[get delete]
17
19
  end
18
20
 
19
21
  register_instance_option :authorization_key do
@@ -31,24 +33,24 @@ module RailsAdmin
31
33
 
32
34
  elsif request.delete? # DESTROY
33
35
 
34
- redirect_path = nil
35
- @auditing_adapter && @auditing_adapter.delete_object(@object, @abstract_model, _current_user)
36
+ @auditing_adapter&.delete_object(@object, @abstract_model, _current_user)
36
37
  if @object.destroy
37
38
  flash[:success] = t('admin.flash.successful', name: @model_config.label, action: t('admin.actions.delete.done'))
38
- redirect_path = index_path
39
+ redirect_to index_path
39
40
  else
40
- flash[:error] = t('admin.flash.error', name: @model_config.label, action: t('admin.actions.delete.done'))
41
- redirect_path = back_or_index
41
+ handle_save_error :delete
42
42
  end
43
43
 
44
- redirect_to redirect_path
45
-
46
44
  end
47
45
  end
48
46
  end
49
47
 
50
48
  register_instance_option :link_icon do
51
- 'icon-remove'
49
+ 'fas fa-times'
50
+ end
51
+
52
+ register_instance_option :writable? do
53
+ !(bindings[:object] && bindings[:object].readonly?)
52
54
  end
53
55
  end
54
56
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -9,7 +11,7 @@ module RailsAdmin
9
11
  end
10
12
 
11
13
  register_instance_option :http_methods do
12
- [:get, :put]
14
+ %i[get put]
13
15
  end
14
16
 
15
17
  register_instance_option :controller do
@@ -18,20 +20,20 @@ module RailsAdmin
18
20
 
19
21
  respond_to do |format|
20
22
  format.html { render @action.template_name }
21
- format.js { render @action.template_name, layout: false }
23
+ format.js { render @action.template_name, layout: 'rails_admin/modal', content_type: Mime[:html].to_s }
22
24
  end
23
25
 
24
26
  elsif request.put? # UPDATE
25
27
  sanitize_params_for!(request.xhr? ? :modal : :update)
26
28
 
27
- @object.set_attributes(params[@abstract_model.param_key])
28
- @authorization_adapter && @authorization_adapter.authorize(:update, @abstract_model, @object)
29
+ @object.assign_attributes(params[@abstract_model.param_key])
30
+ @authorization_adapter&.authorize(:update, @abstract_model, @object)
29
31
  changes = @object.changes
30
32
  if @object.save
31
- @auditing_adapter && @auditing_adapter.update_object(@object, @abstract_model, _current_user, changes)
33
+ @auditing_adapter&.update_object(@object, @abstract_model, _current_user, changes)
32
34
  respond_to do |format|
33
35
  format.html { redirect_to_on_success }
34
- format.js { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} }
36
+ format.json { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} }
35
37
  end
36
38
  else
37
39
  handle_save_error :edit
@@ -42,7 +44,11 @@ module RailsAdmin
42
44
  end
43
45
 
44
46
  register_instance_option :link_icon do
45
- 'icon-pencil'
47
+ 'fas fa-pencil-alt'
48
+ end
49
+
50
+ register_instance_option :writable? do
51
+ !(bindings[:object] && bindings[:object].readonly?)
46
52
  end
47
53
  end
48
54
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -9,12 +11,13 @@ module RailsAdmin
9
11
  end
10
12
 
11
13
  register_instance_option :http_methods do
12
- [:get, :post]
14
+ %i[get post]
13
15
  end
14
16
 
15
17
  register_instance_option :controller do
16
18
  proc do
17
- if format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
19
+ format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
20
+ if format
18
21
  request.format = format
19
22
  @schema = HashHelper.symbolize(params[:schema].slice(:except, :include, :methods, :only).permit!.to_h) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
20
23
  @objects = list_entries(@model_config, :export)
@@ -30,7 +33,7 @@ module RailsAdmin
30
33
  end
31
34
 
32
35
  register_instance_option :link_icon do
33
- 'icon-share'
36
+ 'fas fa-file-export'
34
37
  end
35
38
  end
36
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -19,7 +21,7 @@ module RailsAdmin
19
21
  register_instance_option :controller do
20
22
  proc do
21
23
  @general = true
22
- @history = @auditing_adapter && @auditing_adapter.listing_for_model(@abstract_model, params[:query], params[:sort], params[:sort_reverse], params[:all], params[:page]) || []
24
+ @history = @auditing_adapter&.listing_for_model(@abstract_model, params[:query], params[:sort], params[:sort_reverse], params[:all], params[Kaminari.config.param_name]) || []
23
25
 
24
26
  render @action.template_name
25
27
  end
@@ -30,7 +32,7 @@ module RailsAdmin
30
32
  end
31
33
 
32
34
  register_instance_option :link_icon do
33
- 'icon-book'
35
+ 'fas fa-book'
34
36
  end
35
37
  end
36
38
  end