rails_admin 2.2.1 → 3.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (328) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -11
  3. data/README.md +37 -31
  4. data/Rakefile +2 -2
  5. data/app/assets/javascripts/rails_admin.js +21 -0
  6. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  7. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin.scss.erb +76 -0
  9. data/app/controllers/rails_admin/application_controller.rb +4 -3
  10. data/app/controllers/rails_admin/main_controller.rb +43 -24
  11. data/app/helpers/rails_admin/application_helper.rb +69 -52
  12. data/app/helpers/rails_admin/form_builder.rb +5 -4
  13. data/app/helpers/rails_admin/main_helper.rb +27 -43
  14. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  15. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  16. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  17. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +13 -0
  18. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  19. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  20. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +6 -0
  21. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  22. data/app/views/layouts/rails_admin/_head.html.erb +17 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +21 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +24 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +9 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  28. data/app/views/layouts/rails_admin/pjax.html.erb +20 -0
  29. data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  30. data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  31. data/app/views/rails_admin/main/_form_action_text.html.erb +7 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +16 -0
  33. data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
  34. data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  35. data/app/views/rails_admin/main/_form_colorpicker.html.erb +1 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +9 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +21 -0
  38. data/app/views/rails_admin/main/_form_field.html.erb +1 -0
  39. data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  40. data/app/views/rails_admin/main/{_form_filtering_multiselect.html.haml → _form_filtering_multiselect.html.erb} +11 -11
  41. data/app/views/rails_admin/main/{_form_filtering_select.html.haml → _form_filtering_select.html.erb} +13 -12
  42. data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  43. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  44. data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  45. data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  46. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +27 -0
  47. data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  48. data/app/views/rails_admin/main/_form_text.html.erb +1 -0
  49. data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  50. data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  51. data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  52. data/app/views/rails_admin/main/dashboard.html.erb +64 -0
  53. data/app/views/rails_admin/main/delete.html.erb +21 -0
  54. data/app/views/rails_admin/main/edit.html.erb +3 -0
  55. data/app/views/rails_admin/main/export.html.erb +146 -0
  56. data/app/views/rails_admin/main/history.html.erb +78 -0
  57. data/app/views/rails_admin/main/index.html.erb +193 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +28 -0
  60. data/config/initializers/active_record_extensions.rb +3 -1
  61. data/config/initializers/mongoid_extensions.rb +1 -1
  62. data/config/locales/rails_admin.en.yml +6 -1
  63. data/lib/generators/rails_admin/install_generator.rb +51 -3
  64. data/lib/generators/rails_admin/templates/environment.js +6 -0
  65. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  66. data/lib/generators/rails_admin/templates/rails_admin.js.erb +2 -0
  67. data/lib/generators/rails_admin/templates/rails_admin.scss +1 -0
  68. data/lib/generators/rails_admin/templates/webpack.config.js +32 -0
  69. data/lib/rails_admin/abstract_model.rb +24 -10
  70. data/lib/rails_admin/adapters/active_record/association.rb +20 -1
  71. data/lib/rails_admin/adapters/active_record/object_extension.rb +29 -0
  72. data/lib/rails_admin/adapters/active_record/property.rb +1 -1
  73. data/lib/rails_admin/adapters/active_record.rb +27 -23
  74. data/lib/rails_admin/adapters/mongoid/association.rb +38 -9
  75. data/lib/rails_admin/adapters/mongoid/bson.rb +4 -5
  76. data/lib/rails_admin/adapters/mongoid/extension.rb +3 -1
  77. data/lib/rails_admin/adapters/mongoid/object_extension.rb +32 -0
  78. data/lib/rails_admin/adapters/mongoid/property.rb +2 -2
  79. data/lib/rails_admin/adapters/mongoid.rb +27 -19
  80. data/lib/rails_admin/config/actions/base.rb +7 -2
  81. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -2
  82. data/lib/rails_admin/config/actions/dashboard.rb +4 -3
  83. data/lib/rails_admin/config/actions/delete.rb +5 -9
  84. data/lib/rails_admin/config/actions/edit.rb +7 -7
  85. data/lib/rails_admin/config/actions/export.rb +2 -2
  86. data/lib/rails_admin/config/actions/history_index.rb +2 -2
  87. data/lib/rails_admin/config/actions/history_show.rb +2 -2
  88. data/lib/rails_admin/config/actions/index.rb +5 -7
  89. data/lib/rails_admin/config/actions/new.rb +9 -9
  90. data/lib/rails_admin/config/actions/show.rb +1 -1
  91. data/lib/rails_admin/config/actions/show_in_app.rb +6 -2
  92. data/lib/rails_admin/config/actions.rb +4 -4
  93. data/lib/rails_admin/config/configurable.rb +2 -2
  94. data/lib/rails_admin/config/fields/association.rb +15 -12
  95. data/lib/rails_admin/config/fields/base.rb +44 -24
  96. data/lib/rails_admin/config/fields/factories/active_storage.rb +1 -0
  97. data/lib/rails_admin/config/fields/factories/association.rb +6 -8
  98. data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -1
  99. data/lib/rails_admin/config/fields/factories/devise.rb +2 -1
  100. data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -1
  101. data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -1
  102. data/lib/rails_admin/config/fields/factories/shrine.rb +1 -1
  103. data/lib/rails_admin/config/fields/group.rb +1 -2
  104. data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
  105. data/lib/rails_admin/config/fields/types/active_storage.rb +9 -7
  106. data/lib/rails_admin/config/fields/types/all.rb +1 -0
  107. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -12
  108. data/lib/rails_admin/config/fields/types/boolean.rb +32 -8
  109. data/lib/rails_admin/config/fields/types/carrierwave.rb +1 -0
  110. data/lib/rails_admin/config/fields/types/citext.rb +13 -0
  111. data/lib/rails_admin/config/fields/types/color.rb +6 -2
  112. data/lib/rails_admin/config/fields/types/date.rb +5 -8
  113. data/lib/rails_admin/config/fields/types/datetime.rb +18 -21
  114. data/lib/rails_admin/config/fields/types/decimal.rb +9 -2
  115. data/lib/rails_admin/config/fields/types/dragonfly.rb +3 -1
  116. data/lib/rails_admin/config/fields/types/enum.rb +1 -1
  117. data/lib/rails_admin/config/fields/types/file_upload.rb +4 -3
  118. data/lib/rails_admin/config/fields/types/float.rb +9 -2
  119. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -5
  120. data/lib/rails_admin/config/fields/types/has_one_association.rb +1 -13
  121. data/lib/rails_admin/config/fields/types/integer.rb +2 -6
  122. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +8 -6
  123. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +1 -0
  124. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +4 -3
  125. data/lib/rails_admin/config/fields/types/numeric.rb +18 -0
  126. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +3 -2
  127. data/lib/rails_admin/config/fields/types/string.rb +1 -1
  128. data/lib/rails_admin/config/fields/types/time.rb +1 -4
  129. data/lib/rails_admin/config/fields/types/timestamp.rb +0 -4
  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 +5 -6
  133. data/lib/rails_admin/config/hideable.rb +1 -1
  134. data/lib/rails_admin/config/inspectable.rb +1 -3
  135. data/lib/rails_admin/config/model.rb +10 -10
  136. data/lib/rails_admin/config/sections/base.rb +2 -3
  137. data/lib/rails_admin/config/sections/list.rb +4 -15
  138. data/lib/rails_admin/config/sections.rb +1 -1
  139. data/lib/rails_admin/config.rb +73 -38
  140. data/lib/rails_admin/engine.rb +36 -23
  141. data/lib/rails_admin/extension.rb +6 -14
  142. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +4 -2
  143. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +12 -7
  144. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +6 -7
  145. data/lib/rails_admin/support/csv_converter.rb +12 -13
  146. data/lib/rails_admin/support/datetime.rb +40 -74
  147. data/lib/rails_admin/support/esmodule_preprocessor.rb +32 -0
  148. data/lib/rails_admin/support/hash_helper.rb +6 -5
  149. data/lib/rails_admin/version.rb +8 -4
  150. data/lib/rails_admin.rb +1 -4
  151. data/lib/tasks/rails_admin.rake +3 -3
  152. data/package.json +28 -0
  153. data/src/rails_admin/base.js +21 -0
  154. data/src/rails_admin/filter-box.js +405 -0
  155. data/src/rails_admin/filtering-multiselect.js +394 -0
  156. data/src/rails_admin/filtering-select.js +302 -0
  157. data/src/rails_admin/i18n.js +19 -0
  158. data/src/rails_admin/nested-form-hooks.js +100 -0
  159. data/src/rails_admin/remote-form.js +190 -0
  160. data/src/rails_admin/sidescroll.js +20 -0
  161. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  162. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
  163. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/theming.scss +93 -34
  164. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/variables.scss +0 -0
  165. data/src/rails_admin/styles/base.scss +64 -0
  166. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  167. data/src/rails_admin/styles/filtering-select.scss +70 -0
  168. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/mixins.scss +0 -0
  169. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/theming.scss +23 -21
  170. data/src/rails_admin/styles/themes/cerulean/variables.scss +830 -0
  171. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/mixins.scss +1 -1
  172. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/theming.scss +0 -0
  173. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/variables.scss +1 -1
  174. data/src/rails_admin/styles/widgets.scss +35 -0
  175. data/src/rails_admin/ui.js +172 -0
  176. data/src/rails_admin/vendor/jquery.pjax.js +899 -0
  177. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  178. data/src/rails_admin/widgets.js +512 -0
  179. data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
  180. data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +5034 -0
  181. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  182. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
  183. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  184. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  185. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  186. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  187. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  188. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  189. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  190. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  191. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  192. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  193. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  194. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  195. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  196. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  197. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  198. data/vendor/assets/javascripts/rails_admin/jquery3.js +10872 -0
  199. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4476 -2216
  200. metadata +118 -262
  201. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  202. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  203. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  204. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  205. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  206. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  207. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  208. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  209. data/app/assets/images/rails_admin/calendar.png +0 -0
  210. data/app/assets/images/rails_admin/clock.png +0 -0
  211. data/app/assets/images/rails_admin/logo.png +0 -0
  212. data/app/assets/images/rails_admin/magnifier.png +0 -0
  213. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  214. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  215. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  216. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  217. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  218. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  219. data/app/assets/javascripts/rails_admin/jquery.migrate.js +0 -3
  220. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -246
  221. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  222. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  223. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  224. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  225. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  226. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  227. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  228. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -21
  229. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  230. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  231. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  232. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  233. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  234. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  235. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  236. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  237. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  238. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  239. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  240. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  241. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  242. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  243. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  244. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  245. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  246. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  247. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  248. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  249. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  250. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  251. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  252. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  253. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  254. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  255. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  256. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  257. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  258. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  259. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  260. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  261. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  262. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  263. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  264. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
  265. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  266. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  267. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  268. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  269. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  270. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  271. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  272. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  273. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  274. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  275. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  276. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  277. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  278. data/app/views/rails_admin/main/delete.html.haml +0 -18
  279. data/app/views/rails_admin/main/edit.html.haml +0 -2
  280. data/app/views/rails_admin/main/export.html.haml +0 -92
  281. data/app/views/rails_admin/main/history.html.haml +0 -51
  282. data/app/views/rails_admin/main/index.html.haml +0 -126
  283. data/app/views/rails_admin/main/new.html.haml +0 -2
  284. data/app/views/rails_admin/main/show.html.haml +0 -15
  285. data/config/initializers/haml.rb +0 -5
  286. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -38
  287. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  288. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  289. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  290. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  291. data/lib/rails_admin/config/lazy_model.rb +0 -68
  292. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  293. data/lib/rails_admin/extensions/history/history.rb +0 -44
  294. data/lib/rails_admin/extensions/history.rb +0 -3
  295. data/lib/rails_admin/support/i18n.rb +0 -43
  296. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  297. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  298. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  299. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  300. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  301. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  302. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  303. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  304. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  305. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  306. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  307. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  308. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  309. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  310. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  311. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  312. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  313. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  314. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  315. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  316. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  317. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  318. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  319. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  320. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  321. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  322. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  323. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  324. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  325. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  326. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  327. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  328. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
@@ -5,12 +5,13 @@ require 'rails_admin/config/fields/types/password'
5
5
  # Register a custom field factory for devise model
6
6
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
7
7
  if properties.name == :encrypted_password
8
- extensions = [:password_salt, :reset_password_token, :remember_token]
8
+ extensions = %i[password_salt reset_password_token remember_token]
9
9
  fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password, properties)
10
10
  fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password_confirmation, properties)
11
11
  extensions.each do |ext|
12
12
  properties = parent.abstract_model.properties.detect { |p| ext == p.name }
13
13
  next unless properties
14
+
14
15
  unless field = fields.detect { |f| f.name == ext }
15
16
  RailsAdmin::Config::Fields.default_factory.call(parent, properties, fields)
16
17
  field = fields.last
@@ -3,13 +3,14 @@ require 'rails_admin/config/fields/types'
3
3
  require 'rails_admin/config/fields/types/file_upload'
4
4
 
5
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
- extensions = [:name, :uid]
6
+ extensions = %i[name uid]
7
7
  if (properties.name.to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.respond_to?(:dragonfly_attachment_classes) && parent.abstract_model.model.dragonfly_attachment_classes.collect(&:attribute).include?(attachment_name = Regexp.last_match[1].to_sym)
8
8
  field = RailsAdmin::Config::Fields::Types.load(:dragonfly).new(parent, attachment_name, properties)
9
9
  children_fields = []
10
10
  extensions.each do |ext|
11
11
  children_column_name = "#{attachment_name}_#{ext}".to_sym
12
12
  next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
13
+
13
14
  children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
14
15
  children_field.hide
15
16
  children_field.filterable(false)
@@ -3,7 +3,7 @@ require 'rails_admin/config/fields/types'
3
3
  require 'rails_admin/config/fields/types/file_upload'
4
4
 
5
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
- extensions = [:file_name, :content_type, :file_size, :updated_at, :fingerprint]
6
+ extensions = %i[file_name content_type file_size updated_at fingerprint]
7
7
  model = parent.abstract_model.model
8
8
  if (properties.name.to_s =~ /^(.+)_file_name$/) && defined?(::Paperclip) && model.try(:attachment_definitions) && model.attachment_definitions.key?(attachment_name = Regexp.last_match[1].to_sym)
9
9
  field = RailsAdmin::Config::Fields::Types.load(:paperclip).new(parent, attachment_name, properties)
@@ -11,6 +11,7 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
11
11
  extensions.each do |ext|
12
12
  children_column_name = "#{attachment_name}_#{ext}".to_sym
13
13
  next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
14
+
14
15
  children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
15
16
  children_field.hide
16
17
  children_field.filterable(false)
@@ -5,7 +5,7 @@ require 'rails_admin/config/fields/types/file_upload'
5
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
6
  next false unless defined?(::Shrine)
7
7
 
8
- attachment_names = parent.abstract_model.model.ancestors.select { |m| m.is_a?(Shrine::Attachment) }.map { |a| a.instance_variable_get("@name") }
8
+ attachment_names = parent.abstract_model.model.ancestors.select { |m| m.is_a?(Shrine::Attachment) }.map { |a| a.instance_variable_get('@name') }
9
9
  next false if attachment_names.blank?
10
10
 
11
11
  attachment_name = attachment_names.detect { |a| a == properties.name.to_s.chomp('_data').to_sym }
@@ -12,9 +12,8 @@ module RailsAdmin
12
12
  include RailsAdmin::Config::Configurable
13
13
  include RailsAdmin::Config::Hideable
14
14
 
15
- attr_reader :name, :abstract_model
15
+ attr_reader :name, :abstract_model, :parent, :root
16
16
  attr_accessor :section
17
- attr_reader :parent, :root
18
17
 
19
18
  def initialize(parent, name)
20
19
  @parent = parent
@@ -29,12 +29,14 @@ module RailsAdmin
29
29
 
30
30
  def parse_value(value)
31
31
  return unless value.present?
32
+
32
33
  abstract_model.model.attribute_types[name.to_s].serialize(value)
33
34
  end
34
35
 
35
36
  def parse_input(params)
36
37
  value = params[name]
37
38
  return unless value
39
+
38
40
  params[name] = parse_input_value(value)
39
41
  end
40
42
 
@@ -8,11 +8,7 @@ module RailsAdmin
8
8
  RailsAdmin::Config::Fields::Types.register(self)
9
9
 
10
10
  register_instance_option :thumb_method do
11
- if ::ActiveStorage::VERSION::MAJOR >= 6
12
- {resize_to_limit: [100, 100]}
13
- else
14
- {resize: '100x100>'}
15
- end
11
+ {resize_to_limit: [100, 100]}
16
12
  end
17
13
 
18
14
  register_instance_option :delete_method do
@@ -21,12 +17,18 @@ module RailsAdmin
21
17
 
22
18
  register_instance_option :image? do
23
19
  if value
24
- value.filename.to_s.split('.').last =~ /jpg|jpeg|png|gif|svg/i
20
+ mime_type = Mime::Type.lookup_by_extension(value.filename.extension_without_delimiter)
21
+ mime_type.to_s.match?(/^image/)
25
22
  end
26
23
  end
27
24
 
25
+ register_instance_option :eager_load do
26
+ {"#{name}_attachment": :blob}
27
+ end
28
+
28
29
  def resource_url(thumb = false)
29
30
  return nil unless value
31
+
30
32
  if thumb && value.variable?
31
33
  thumb = thumb_method if thumb == true
32
34
  variant = value.variant(thumb)
@@ -40,7 +42,7 @@ module RailsAdmin
40
42
 
41
43
  def value
42
44
  attachment = super
43
- attachment if attachment && attachment.attached?
45
+ attachment if attachment&.attached?
44
46
  end
45
47
  end
46
48
  end
@@ -38,3 +38,4 @@ require 'rails_admin/config/fields/types/froala'
38
38
  require 'rails_admin/config/fields/types/json'
39
39
  require 'rails_admin/config/fields/types/inet'
40
40
  require 'rails_admin/config/fields/types/uuid'
41
+ require 'rails_admin/config/fields/types/citext'
@@ -23,28 +23,20 @@ module RailsAdmin
23
23
  nested_form ? :form_nested_one : :form_filtering_select
24
24
  end
25
25
 
26
- register_instance_option :inline_add do
27
- true
28
- end
29
-
30
- register_instance_option :inline_edit do
31
- true
32
- end
33
-
34
- register_instance_option :eager_load? do
26
+ register_instance_option :eager_load do
35
27
  true
36
28
  end
37
29
 
38
30
  def associated_primary_key
39
- @associated_primary_key ||= association.primary_key
31
+ association.primary_key
40
32
  end
41
33
 
42
34
  def selected_id
43
- bindings[:object].send(foreign_key)
35
+ bindings[:object].send(association.key_accessor)
44
36
  end
45
37
 
46
38
  def method_name
47
- nested_form ? "#{name}_attributes".to_sym : association.foreign_key
39
+ nested_form ? "#{name}_attributes".to_sym : super
48
40
  end
49
41
 
50
42
  def multiple?
@@ -6,19 +6,32 @@ module RailsAdmin
6
6
  # Register field type for the type loader
7
7
  RailsAdmin::Config::Fields::Types.register(self)
8
8
 
9
+ register_instance_option :labels do
10
+ {
11
+ true => %(<span class="fas fa-check"></span>),
12
+ false => %(<span class="fas fa-times"></span>),
13
+ nil => %(<span class="fas fa-minus"></span>),
14
+ }
15
+ end
16
+
17
+ register_instance_option :css_classes do
18
+ {
19
+ true => 'success',
20
+ false => 'danger',
21
+ nil => 'default',
22
+ }
23
+ end
24
+
25
+ register_instance_option :nullable? do
26
+ properties&.nullable?
27
+ end
28
+
9
29
  register_instance_option :view_helper do
10
30
  :check_box
11
31
  end
12
32
 
13
33
  register_instance_option :pretty_value do
14
- case value
15
- when nil
16
- %(<span class='label label-default'>&#x2012;</span>)
17
- when false
18
- %(<span class='label label-danger'>&#x2718;</span>)
19
- when true
20
- %(<span class='label label-success'>&#x2713;</span>)
21
- end.html_safe
34
+ %(<span class="label label-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
22
35
  end
23
36
 
24
37
  register_instance_option :export_value do
@@ -29,10 +42,21 @@ module RailsAdmin
29
42
  :form_boolean
30
43
  end
31
44
 
45
+ def form_value
46
+ case value
47
+ when true, false
48
+ value
49
+ end
50
+ end
51
+
32
52
  # Accessor for field's help text displayed below input field.
33
53
  def generic_help
34
54
  ''
35
55
  end
56
+
57
+ def parse_input(params)
58
+ params[name] = params[name].presence if params.key?(name)
59
+ end
36
60
  end
37
61
  end
38
62
  end
@@ -22,6 +22,7 @@ module RailsAdmin
22
22
 
23
23
  def resource_url(thumb = false)
24
24
  return nil unless (uploader = bindings[:object].send(name)).present?
25
+
25
26
  thumb.present? ? uploader.send(thumb).url : uploader.url
26
27
  end
27
28
  end
@@ -0,0 +1,13 @@
1
+ require 'rails_admin/config/fields/types/text'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Citext < Text
8
+ RailsAdmin::Config::Fields::Types.register(:citext, self)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -15,10 +15,14 @@ module RailsAdmin
15
15
  :form_colorpicker
16
16
  end
17
17
 
18
+ register_instance_option :view_helper do
19
+ :color_field
20
+ end
21
+
18
22
  register_instance_option :color do
19
23
  if value.present?
20
- if value =~ /^[0-9a-fA-F]{3,6}$/
21
- '#' + value
24
+ if /^[0-9a-fA-F]{3,6}$/.match?(value)
25
+ "##{value}"
22
26
  else
23
27
  value
24
28
  end
@@ -7,19 +7,16 @@ module RailsAdmin
7
7
  class Date < RailsAdmin::Config::Fields::Types::Datetime
8
8
  RailsAdmin::Config::Fields::Types.register(self)
9
9
 
10
+ def parse_value(value)
11
+ ::Date.parse(value) if value.present?
12
+ end
13
+
10
14
  register_instance_option :date_format do
11
15
  :long
12
16
  end
13
17
 
14
18
  register_instance_option :i18n_scope do
15
- [:date, :formats]
16
- end
17
-
18
- register_instance_option :datepicker_options do
19
- {
20
- showTodayButton: true,
21
- format: parser.to_momentjs,
22
- }
19
+ %i[date formats]
23
20
  end
24
21
 
25
22
  register_instance_option :html_attributes do
@@ -8,47 +8,36 @@ module RailsAdmin
8
8
  class Datetime < RailsAdmin::Config::Fields::Base
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
- def parser
12
- RailsAdmin::Support::Datetime.new(strftime_format)
13
- end
14
-
15
11
  def parse_value(value)
16
- parser.parse_string(value)
12
+ ::Time.zone.parse(value)
17
13
  end
18
14
 
19
15
  def parse_input(params)
20
16
  params[name] = parse_value(params[name]) if params[name]
21
17
  end
22
18
 
23
- def value
24
- parent_value = super
25
- if %w(DateTime Date Time).include?(parent_value.class.name)
26
- parent_value.in_time_zone
27
- else
28
- parent_value
29
- end
30
- end
31
-
32
19
  register_instance_option :date_format do
33
20
  :long
34
21
  end
35
22
 
36
23
  register_instance_option :i18n_scope do
37
- [:time, :formats]
24
+ %i[time formats]
38
25
  end
39
26
 
40
27
  register_instance_option :strftime_format do
41
- begin
42
- ::I18n.t(date_format, scope: i18n_scope, raise: true)
43
- rescue ::I18n::ArgumentError
44
- "%B %d, %Y %H:%M"
45
- end
28
+ ::I18n.t(date_format, scope: i18n_scope, raise: true)
29
+ rescue ::I18n::ArgumentError
30
+ '%B %d, %Y %H:%M'
31
+ end
32
+
33
+ register_instance_option :momentjs_format do
34
+ RailsAdmin::Support::Datetime.to_momentjs(strftime_format)
46
35
  end
47
36
 
48
37
  register_instance_option :datepicker_options do
49
38
  {
50
39
  showTodayButton: true,
51
- format: parser.to_momentjs,
40
+ format: momentjs_format,
52
41
  }
53
42
  end
54
43
 
@@ -63,6 +52,10 @@ module RailsAdmin
63
52
  true
64
53
  end
65
54
 
55
+ register_instance_option :queryable? do
56
+ false
57
+ end
58
+
66
59
  register_instance_option :formatted_value do
67
60
  if time = (value || default_value)
68
61
  ::I18n.l(time, format: strftime_format)
@@ -74,6 +67,10 @@ module RailsAdmin
74
67
  register_instance_option :partial do
75
68
  :form_datetime
76
69
  end
70
+
71
+ def form_value
72
+ value&.in_time_zone&.strftime('%FT%T') || form_default_value
73
+ end
77
74
  end
78
75
  end
79
76
  end
@@ -1,12 +1,19 @@
1
- require 'rails_admin/config/fields/base'
1
+ require 'rails_admin/config/fields/types/numeric'
2
2
 
3
3
  module RailsAdmin
4
4
  module Config
5
5
  module Fields
6
6
  module Types
7
- class Decimal < RailsAdmin::Config::Fields::Base
7
+ class Decimal < RailsAdmin::Config::Fields::Types::Numeric
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :html_attributes do
12
+ {
13
+ required: required?,
14
+ step: 'any',
15
+ }
16
+ end
10
17
  end
11
18
  end
12
19
  end
@@ -12,7 +12,8 @@ module RailsAdmin
12
12
  register_instance_option :image? do
13
13
  false unless value
14
14
  if abstract_model.model.new.respond_to?("#{name}_name")
15
- bindings[:object].send("#{name}_name").to_s.split('.').last =~ /jpg|jpeg|png|gif/i
15
+ mime_type = Mime::Type.lookup_by_extension(bindings[:object].send("#{name}_name").to_s.split('.').last)
16
+ mime_type.to_s.match?(/^image/)
16
17
  else
17
18
  true # Dragonfly really is image oriented
18
19
  end
@@ -32,6 +33,7 @@ module RailsAdmin
32
33
 
33
34
  def resource_url(thumb = false)
34
35
  return nil unless (v = value)
36
+
35
37
  thumb ? v.thumb(thumb).try(:url) : v.url
36
38
  end
37
39
  end
@@ -21,7 +21,7 @@ module RailsAdmin
21
21
 
22
22
  register_instance_option :pretty_value do
23
23
  if enum.is_a?(::Hash)
24
- enum.reject { |_k, v| v.to_s != value.to_s }.keys.first.to_s.presence || value.presence || ' - '
24
+ enum.select { |_k, v| v.to_s == value.to_s }.keys.first.to_s.presence || value.presence || ' - '
25
25
  elsif enum.is_a?(::Array) && enum.first.is_a?(::Array)
26
26
  enum.detect { |e| e[1].to_s == value.to_s }.try(:first).to_s.presence || value.presence || ' - '
27
27
  else
@@ -42,7 +42,7 @@ module RailsAdmin
42
42
  if image
43
43
  thumb_url = resource_url(thumb_method)
44
44
  image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
45
- url != thumb_url ? v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer') : image_html
45
+ url == thumb_url ? image_html : v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer')
46
46
  else
47
47
  v.link_to(link_name, url, target: '_blank', rel: 'noopener noreferrer')
48
48
  end
@@ -50,7 +50,8 @@ module RailsAdmin
50
50
  end
51
51
 
52
52
  register_instance_option :image? do
53
- (url = resource_url.to_s) && url.split('.').last =~ /jpg|jpeg|png|gif|svg/i
53
+ mime_type = Mime::Type.lookup_by_extension(resource_url.to_s.split('.').last)
54
+ mime_type.to_s.match?(/^image/)
54
55
  end
55
56
 
56
57
  register_instance_option :allowed_methods do
@@ -65,7 +66,7 @@ module RailsAdmin
65
66
 
66
67
  # virtual class
67
68
  def resource_url
68
- raise('not implemented')
69
+ raise 'not implemented'
69
70
  end
70
71
 
71
72
  def virtual?
@@ -1,12 +1,19 @@
1
- require 'rails_admin/config/fields/base'
1
+ require 'rails_admin/config/fields/types/numeric'
2
2
 
3
3
  module RailsAdmin
4
4
  module Config
5
5
  module Fields
6
6
  module Types
7
- class Float < RailsAdmin::Config::Fields::Base
7
+ class Float < RailsAdmin::Config::Fields::Types::Numeric
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :html_attributes do
12
+ {
13
+ required: required?,
14
+ step: 'any',
15
+ }
16
+ end
10
17
  end
11
18
  end
12
19
  end
@@ -17,12 +17,8 @@ module RailsAdmin
17
17
  false
18
18
  end
19
19
 
20
- register_instance_option :inline_add do
21
- true
22
- end
23
-
24
20
  def method_name
25
- nested_form ? "#{super}_attributes".to_sym : "#{super.to_s.singularize}_ids".to_sym # name_ids
21
+ nested_form ? "#{name}_attributes".to_sym : super
26
22
  end
27
23
 
28
24
  # Reader for validation errors of the bound object
@@ -17,24 +17,12 @@ module RailsAdmin
17
17
  (o = value) && o.send(associated_model_config.object_label_method)
18
18
  end
19
19
 
20
- register_instance_option :inline_add do
21
- true
22
- end
23
-
24
- register_instance_option :inline_edit do
25
- true
26
- end
27
-
28
- def editable?
29
- (nested_form || abstract_model.model.new.respond_to?("#{name}_id=")) && super
30
- end
31
-
32
20
  def selected_id
33
21
  value.try :id
34
22
  end
35
23
 
36
24
  def method_name
37
- nested_form ? "#{name}_attributes".to_sym : "#{name}_id".to_sym
25
+ nested_form ? "#{name}_attributes".to_sym : super
38
26
  end
39
27
 
40
28
  def multiple?
@@ -1,17 +1,13 @@
1
- require 'rails_admin/config/fields/base'
1
+ require 'rails_admin/config/fields/types/numeric'
2
2
 
3
3
  module RailsAdmin
4
4
  module Config
5
5
  module Fields
6
6
  module Types
7
- class Integer < RailsAdmin::Config::Fields::Base
7
+ class Integer < RailsAdmin::Config::Fields::Types::Numeric
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
- register_instance_option :view_helper do
12
- :number_field
13
- end
14
-
15
11
  register_instance_option :sort_reverse? do
16
12
  serial?
17
13
  end
@@ -9,11 +9,7 @@ module RailsAdmin
9
9
 
10
10
  class ActiveStorageAttachment < RailsAdmin::Config::Fields::Types::MultipleFileUpload::AbstractAttachment
11
11
  register_instance_option :thumb_method do
12
- if ::ActiveStorage::VERSION::MAJOR >= 6
13
- {resize_to_limit: [100, 100]}
14
- else
15
- {resize: '100x100>'}
16
- end
12
+ {resize_to_limit: [100, 100]}
17
13
  end
18
14
 
19
15
  register_instance_option :delete_value do
@@ -22,12 +18,14 @@ module RailsAdmin
22
18
 
23
19
  register_instance_option :image? do
24
20
  if value
25
- value.filename.to_s.split('.').last =~ /jpg|jpeg|png|gif|svg/i
21
+ mime_type = Mime::Type.lookup_by_extension(value.filename.extension_without_delimiter)
22
+ mime_type.to_s.match?(/^image/)
26
23
  end
27
24
  end
28
25
 
29
26
  def resource_url(thumb = false)
30
27
  return nil unless value
28
+
31
29
  if thumb && value.variable?
32
30
  variant = value.variant(thumb_method)
33
31
  Rails.application.routes.url_helpers.rails_blob_representation_path(
@@ -46,6 +44,10 @@ module RailsAdmin
46
44
  register_instance_option :delete_method do
47
45
  "remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
48
46
  end
47
+
48
+ register_instance_option :eager_load do
49
+ {"#{name}_attachments": :blob}
50
+ end
49
51
  end
50
52
  end
51
53
  end
@@ -22,6 +22,7 @@ module RailsAdmin
22
22
 
23
23
  def resource_url(thumb = false)
24
24
  return nil unless value
25
+
25
26
  thumb.present? ? value.send(thumb).url : value.url
26
27
  end
27
28
  end
@@ -36,7 +36,7 @@ module RailsAdmin
36
36
  if image
37
37
  thumb_url = resource_url(thumb_method)
38
38
  image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
39
- url != thumb_url ? v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer') : image_html
39
+ url == thumb_url ? image_html : v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer')
40
40
  else
41
41
  display_value = value.respond_to?(:filename) ? value.filename : value
42
42
  v.link_to(display_value, url, target: '_blank', rel: 'noopener noreferrer')
@@ -45,11 +45,12 @@ module RailsAdmin
45
45
  end
46
46
 
47
47
  register_instance_option :image? do
48
- (url = resource_url.to_s) && url.split('.').last =~ /jpg|jpeg|png|gif|svg/i
48
+ mime_type = Mime::Type.lookup_by_extension(resource_url.to_s.split('.').last)
49
+ mime_type.to_s.match?(/^image/)
49
50
  end
50
51
 
51
52
  def resource_url(_thumb = false)
52
- raise('not implemented')
53
+ raise 'not implemented'
53
54
  end
54
55
  end
55
56
 
@@ -0,0 +1,18 @@
1
+ require 'rails_admin/config/fields/base'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Numeric < RailsAdmin::Config::Fields::Base
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :view_helper do
12
+ :number_field
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -45,12 +45,13 @@ module RailsAdmin
45
45
  [children_fields]
46
46
  end
47
47
 
48
- register_instance_option :eager_load? do
48
+ register_instance_option :eager_load do
49
49
  false
50
50
  end
51
51
 
52
52
  def associated_collection(type)
53
53
  return [] if type.blank?
54
+
54
55
  config = RailsAdmin.config(type)
55
56
  config.abstract_model.all.collect do |object|
56
57
  [object.send(config.object_label_method), object.id]
@@ -58,7 +59,7 @@ module RailsAdmin
58
59
  end
59
60
 
60
61
  def associated_model_config
61
- @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.select { |config| !config.excluded? }
62
+ @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.reject(&:excluded?)
62
63
  end
63
64
 
64
65
  def polymorphic_type_collection