rails_admin 2.0.2 → 3.0.0.beta

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 (344) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -16
  3. data/README.md +40 -33
  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 +14 -12
  13. data/app/helpers/rails_admin/main_helper.rb +27 -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 +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} +18 -17
  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 -2
  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 +35 -25
  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 -20
  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 -3
  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 +9 -4
  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 -2
  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 +6 -4
  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/shrine.rb +13 -11
  128. data/lib/rails_admin/config/fields/types/string.rb +1 -1
  129. data/lib/rails_admin/config/fields/types/time.rb +1 -4
  130. data/lib/rails_admin/config/fields/types/timestamp.rb +0 -4
  131. data/lib/rails_admin/config/fields/types.rb +1 -1
  132. data/lib/rails_admin/config/fields.rb +3 -1
  133. data/lib/rails_admin/config/has_fields.rb +5 -6
  134. data/lib/rails_admin/config/hideable.rb +1 -1
  135. data/lib/rails_admin/config/inspectable.rb +1 -3
  136. data/lib/rails_admin/config/model.rb +10 -10
  137. data/lib/rails_admin/config/sections/base.rb +2 -3
  138. data/lib/rails_admin/config/sections/list.rb +4 -15
  139. data/lib/rails_admin/config/sections.rb +1 -1
  140. data/lib/rails_admin/config.rb +72 -41
  141. data/lib/rails_admin/engine.rb +36 -23
  142. data/lib/rails_admin/extension.rb +6 -14
  143. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +4 -2
  144. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +13 -8
  145. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +6 -7
  146. data/lib/rails_admin/support/csv_converter.rb +12 -13
  147. data/lib/rails_admin/support/datetime.rb +40 -74
  148. data/lib/rails_admin/support/esmodule_preprocessor.rb +32 -0
  149. data/lib/rails_admin/support/hash_helper.rb +6 -5
  150. data/lib/rails_admin/version.rb +7 -3
  151. data/lib/rails_admin.rb +1 -4
  152. data/lib/tasks/rails_admin.rake +17 -8
  153. data/package.json +28 -0
  154. data/src/rails_admin/base.js +21 -0
  155. data/src/rails_admin/filter-box.js +405 -0
  156. data/src/rails_admin/filtering-multiselect.js +394 -0
  157. data/src/rails_admin/filtering-select.js +302 -0
  158. data/src/rails_admin/i18n.js +19 -0
  159. data/src/rails_admin/nested-form-hooks.js +100 -0
  160. data/src/rails_admin/remote-form.js +190 -0
  161. data/src/rails_admin/sidescroll.js +20 -0
  162. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/theming.scss +93 -34
  163. data/src/rails_admin/styles/base.scss +64 -0
  164. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  165. data/src/rails_admin/styles/filtering-select.scss +70 -0
  166. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/theming.scss +23 -21
  167. data/src/rails_admin/styles/themes/cerulean/variables.scss +830 -0
  168. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/mixins.scss +1 -1
  169. data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/variables.scss +1 -1
  170. data/src/rails_admin/styles/widgets.scss +35 -0
  171. data/src/rails_admin/ui.js +172 -0
  172. data/src/rails_admin/vendor/jquery.pjax.js +899 -0
  173. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  174. data/src/rails_admin/widgets.js +512 -0
  175. data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
  176. data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +5034 -0
  177. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  178. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
  179. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  180. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
  181. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
  182. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
  183. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
  184. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
  185. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
  186. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
  187. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
  188. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
  189. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
  190. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
  191. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
  192. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
  193. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  194. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  195. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  196. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  197. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  198. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  199. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  200. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  201. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  202. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  203. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  204. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  205. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  206. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  207. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +317 -160
  208. data/vendor/assets/javascripts/rails_admin/jquery3.js +10872 -0
  209. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +11210 -9290
  210. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4476 -2216
  211. metadata +121 -265
  212. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  213. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  214. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  215. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  216. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  217. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  218. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  219. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  220. data/app/assets/images/rails_admin/calendar.png +0 -0
  221. data/app/assets/images/rails_admin/clock.png +0 -0
  222. data/app/assets/images/rails_admin/logo.png +0 -0
  223. data/app/assets/images/rails_admin/magnifier.png +0 -0
  224. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  225. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  226. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  227. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  228. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  229. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  230. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -226
  231. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  232. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  233. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  234. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  235. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  236. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  237. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  238. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  239. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  240. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  241. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  242. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  243. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  244. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  245. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  246. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  247. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  248. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  249. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  250. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  251. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  252. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  253. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  254. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  255. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  256. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  257. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  258. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  259. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  260. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  261. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  262. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  263. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  264. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  265. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  266. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  267. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  268. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  269. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  270. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  271. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  272. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  273. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  274. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -18
  275. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  276. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  277. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  278. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  279. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  280. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  281. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  282. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  283. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  284. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  285. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  286. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  287. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  288. data/app/views/rails_admin/main/delete.html.haml +0 -18
  289. data/app/views/rails_admin/main/edit.html.haml +0 -2
  290. data/app/views/rails_admin/main/export.html.haml +0 -92
  291. data/app/views/rails_admin/main/history.html.haml +0 -51
  292. data/app/views/rails_admin/main/index.html.haml +0 -126
  293. data/app/views/rails_admin/main/new.html.haml +0 -2
  294. data/app/views/rails_admin/main/show.html.haml +0 -15
  295. data/config/initializers/devise_patch.rb +0 -9
  296. data/config/initializers/haml.rb +0 -5
  297. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  298. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  299. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  300. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  301. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  302. data/lib/rails_admin/config/lazy_model.rb +0 -68
  303. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  304. data/lib/rails_admin/extensions/history/history.rb +0 -44
  305. data/lib/rails_admin/extensions/history.rb +0 -3
  306. data/lib/rails_admin/support/i18n.rb +0 -43
  307. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  308. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  309. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  310. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  311. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  312. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  313. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  314. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  315. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  316. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  317. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  318. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  319. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  320. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  321. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  322. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  323. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  324. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  325. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  326. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  327. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  328. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  329. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  330. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  331. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  332. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  333. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  334. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  335. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  336. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  337. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  338. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  339. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  340. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  341. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
  342. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/variables.scss +0 -0
  343. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/cerulean/mixins.scss +0 -0
  344. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/themes/default/theming.scss +0 -0
@@ -1,17 +1,5 @@
1
- require 'rails_admin/support/i18n'
2
-
3
1
  module RailsAdmin
4
2
  module ApplicationHelper
5
- include RailsAdmin::Support::I18n
6
-
7
- def capitalize_first_letter(wording)
8
- return nil unless wording.present? && wording.is_a?(String)
9
-
10
- wording = wording.dup
11
- wording[0] = wording[0].mb_chars.capitalize.to_s
12
- wording
13
- end
14
-
15
3
  def authorized?(action_name, abstract_model = nil, object = nil)
16
4
  object = nil if object.try :new_record?
17
5
  action(action_name, abstract_model, object).try(:authorized?)
@@ -34,19 +22,26 @@ module RailsAdmin
34
22
  def edit_user_link
35
23
  return nil unless _current_user.respond_to?(:email)
36
24
  return nil unless abstract_model = RailsAdmin.config(_current_user.class).abstract_model
37
- return nil unless (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
38
- link_to rails_admin.url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
39
- html = []
40
- html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if RailsAdmin::Config.show_gravatar && _current_user.email.present?
41
- html << content_tag(:span, _current_user.email)
42
- html.join.html_safe
25
+
26
+ content = [
27
+ RailsAdmin::Config.show_gravatar && _current_user.email.present? && image_tag("#{request.ssl? ? 'https://secure' : 'http://www'}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: ''),
28
+ content_tag(:span, _current_user.email),
29
+ ].compact.join.html_safe
30
+ if (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
31
+ link_to content, rails_admin.url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main')
32
+ else
33
+ content_tag :span, content
43
34
  end
44
35
  end
45
36
 
46
37
  def logout_path
47
38
  if defined?(Devise)
48
39
  scope = Devise::Mapping.find_scope!(_current_user)
49
- main_app.send("destroy_#{scope}_session_path") rescue false
40
+ begin
41
+ main_app.send("destroy_#{scope}_session_path")
42
+ rescue StandardError
43
+ false
44
+ end
50
45
  elsif main_app.respond_to?(:logout_path)
51
46
  main_app.logout_path
52
47
  end
@@ -54,18 +49,19 @@ module RailsAdmin
54
49
 
55
50
  def logout_method
56
51
  return [Devise.sign_out_via].flatten.first if defined?(Devise)
52
+
57
53
  :delete
58
54
  end
59
55
 
60
56
  def wording_for(label, action = @action, abstract_model = @abstract_model, object = @object)
61
57
  model_config = abstract_model.try(:config)
62
- object = abstract_model && object.is_a?(abstract_model.model) ? object : nil
58
+ object = nil unless abstract_model && object.is_a?(abstract_model.model)
63
59
  action = RailsAdmin::Config::Actions.find(action.to_sym) if action.is_a?(Symbol) || action.is_a?(String)
64
60
 
65
- capitalize_first_letter I18n.t(
61
+ I18n.t(
66
62
  "admin.actions.#{action.i18n_key}.#{label}",
67
- model_label: model_config && model_config.label,
68
- model_label_plural: model_config && model_config.label_plural,
63
+ model_label: model_config&.label,
64
+ model_label_plural: model_config&.label_plural,
69
65
  object_label: model_config && object.try(model_config.object_label_method),
70
66
  )
71
67
  end
@@ -73,21 +69,22 @@ module RailsAdmin
73
69
  def main_navigation
74
70
  nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
75
71
  node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
72
+ parent_groups = nodes_stack.group_by { |n| n.parent&.to_s }
76
73
 
77
74
  nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
78
75
  nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
79
- li_stack = navigation nodes_stack, nodes
76
+ li_stack = navigation parent_groups, nodes
80
77
 
81
78
  label = navigation_label || t('admin.misc.navigation')
82
79
 
83
- %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
80
+ %(<li class='dropdown-header'>#{label}</li>#{li_stack}) if li_stack.present?
84
81
  end.join.html_safe
85
82
  end
86
83
 
87
84
  def root_navigation
88
85
  actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
89
86
  li_stack = nodes.map do |node|
90
- url = rails_admin.url_for(action: node.action_name, controller: "rails_admin/main")
87
+ url = rails_admin.url_for(action: node.action_name, controller: 'rails_admin/main')
91
88
  nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
92
89
  content_tag :li do
93
90
  link_to nav_icon + " " + wording_for(:menu, node), url, class: "pjax"
@@ -95,7 +92,7 @@ module RailsAdmin
95
92
  end.join.html_safe
96
93
  label ||= t('admin.misc.root_navigation')
97
94
 
98
- %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
95
+ %(<li class='dropdown-header'>#{label}</li>#{li_stack}) if li_stack.present?
99
96
  end.join.html_safe
100
97
  end
101
98
 
@@ -109,16 +106,18 @@ module RailsAdmin
109
106
  li_stack
110
107
  end
111
108
 
112
- def navigation(nodes_stack, nodes, level = 0)
109
+ def navigation(parent_groups, nodes, level = 0)
113
110
  nodes.collect do |node|
114
- model_param = node.abstract_model.to_param
111
+ abstract_model = node.abstract_model
112
+ model_param = abstract_model.to_param
115
113
  url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
116
114
  level_class = " nav-level-#{level}" if level > 0
117
115
  nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
118
116
  li = content_tag :li, data: {model: model_param} do
119
- link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}"
117
+ link_to nav_icon + node.label_plural, url, class: "pjax#{level_class}"
120
118
  end
121
- li + navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1)
119
+ child_nodes = parent_groups[abstract_model.model_name]
120
+ child_nodes ? li + navigation(parent_groups, child_nodes, level + 1) : li
122
121
  end.join.html_safe
123
122
  end
124
123
 
@@ -132,44 +131,50 @@ module RailsAdmin
132
131
  am = a.send(:eval, 'bindings[:abstract_model]')
133
132
  o = a.send(:eval, 'bindings[:object]')
134
133
  content_tag(:li, class: current_action?(a, am, o) && 'active') do
135
- crumb = begin
136
- if !current_action?(a, am, o)
137
- if a.http_methods.include?(:get)
138
- link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
139
- wording_for(:breadcrumb, a, am, o)
140
- end
141
- else
142
- content_tag(:span, wording_for(:breadcrumb, a, am, o))
143
- end
144
- else
134
+ if current_action?(a, am, o)
135
+ wording_for(:breadcrumb, a, am, o)
136
+ elsif a.http_methods.include?(:get)
137
+ link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
145
138
  wording_for(:breadcrumb, a, am, o)
146
139
  end
140
+ else
141
+ content_tag(:span, wording_for(:breadcrumb, a, am, o))
147
142
  end
148
- crumb
149
143
  end
150
144
  end.reverse.join.html_safe
151
145
  end
152
146
  end
153
147
 
154
148
  # parent => :root, :collection, :member
155
- def menu_for(parent, abstract_model = nil, object = nil, only_icon = false) # perf matters here (no action view trickery)
149
+ # perf matters here (no action view trickery)
150
+ def menu_for(parent, abstract_model = nil, object = nil, only_icon = false)
156
151
  actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
157
152
  actions.collect do |action|
158
153
  wording = wording_for(:menu, action)
159
- %(
160
- <li title="#{wording if only_icon}" rel="#{'tooltip' if only_icon}" class="icon #{action.key}_#{parent}_link #{'active' if current_action?(action)}">
161
- <a class="#{action.pjax? ? 'pjax' : ''}" href="#{rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))}">
162
- <i class="#{action.link_icon}"></i>
163
- <span#{only_icon ? " style='display:none'" : ''}>#{wording}</span>
164
- </a>
165
- </li>
166
- )
167
- end.join.html_safe
154
+ li_class = ['icon', "#{action.key}_#{parent}_link"].
155
+ concat(current_action?(action) ? ['active'] : []).
156
+ concat(action.enabled? ? [] : ['disabled'])
157
+ content_tag(:li, {class: li_class}.merge(only_icon ? {title: wording, rel: 'tooltip'} : {})) do
158
+ label = content_tag(:i, '', {class: action.link_icon}) + content_tag(:span, wording, (only_icon ? {style: 'display:none'} : {}))
159
+ if action.enabled? || !only_icon
160
+ href =
161
+ if action.enabled?
162
+ rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))
163
+ else
164
+ 'javascript:void(0)'
165
+ end
166
+ content_tag(:a, label, {href: href, target: action.link_target}.merge(action.pjax? ? {class: ['pjax']} : {}))
167
+ else
168
+ content_tag(:span, label)
169
+ end
170
+ end
171
+ end.join(' ').html_safe
168
172
  end
169
173
 
170
174
  def bulk_menu(abstract_model = @abstract_model)
171
175
  actions = actions(:bulkable, abstract_model)
172
176
  return '' if actions.empty?
177
+
173
178
  content_tag :li, class: 'dropdown', style: 'float:right' do
174
179
  content_tag(:a, class: 'dropdown-toggle', data: {toggle: 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + '<b class="caret"></b>'.html_safe } +
175
180
  content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
@@ -190,5 +195,17 @@ module RailsAdmin
190
195
  else "alert-#{flash_key}"
191
196
  end
192
197
  end
198
+
199
+ def handle_asset_dependency_error
200
+ yield
201
+ rescue LoadError => e
202
+ if /sassc/.match?(e.message)
203
+ e = e.exception <<-MSG.gsub(/^\s{10}/, '')
204
+ #{e.message}
205
+ RailsAdmin requires the gem sassc-rails, make sure to put `gem 'sassc-rails'` to Gemfile.
206
+ MSG
207
+ end
208
+ raise e
209
+ end
193
210
  end
194
211
  end
@@ -1,3 +1,5 @@
1
+ require 'nested_form/builder_mixin'
2
+
1
3
  module RailsAdmin
2
4
  class FormBuilder < ::ActionView::Helpers::FormBuilder
3
5
  include ::NestedForm::BuilderMixin
@@ -30,7 +32,7 @@ module RailsAdmin
30
32
 
31
33
  @template.content_tag :fieldset do
32
34
  contents = []
33
- contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
35
+ contents << @template.content_tag(:legend, %(<i class="fas fa-chevron-#{fieldset.active? ? 'down' : 'right'}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
34
36
  contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
35
37
  contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
36
38
  contents.join.html_safe
@@ -38,16 +40,16 @@ module RailsAdmin
38
40
  end
39
41
 
40
42
  def field_wrapper_for(field, nested_in)
41
- if field.label
42
- # do not show nested field if the target is the origin
43
- unless nested_field_association?(field, nested_in)
44
- @template.content_tag(:div, class: "form-group control-group #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
45
- label(field.method_name, capitalize_first_letter(field.label), class: 'col-sm-2 control-label') +
46
- (field.nested_form ? field_for(field) : input_for(field))
47
- end
43
+ # do not show nested field if the target is the origin
44
+ return if nested_field_association?(field, nested_in)
45
+
46
+ @template.content_tag(:div, class: "form-group control-group #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
47
+ if field.label
48
+ label(field.method_name, field.label, class: 'col-sm-2 control-label') +
49
+ (field.nested_form ? field_for(field) : input_for(field))
50
+ else
51
+ field.nested_form ? field_for(field) : input_for(field)
48
52
  end
49
- else
50
- field.nested_form ? field_for(field) : input_for(field)
51
53
  end
52
54
  end
53
55
 
@@ -76,13 +78,13 @@ module RailsAdmin
76
78
  def object_infos
77
79
  model_config = RailsAdmin.config(object)
78
80
  model_label = model_config.label
79
- object_label = begin
81
+ object_label =
80
82
  if object.new_record?
81
83
  I18n.t('admin.form.new_model', name: model_label)
82
84
  else
83
85
  object.send(model_config.object_label_method).presence || "#{model_config.label} ##{object.id}"
84
86
  end
85
- end
87
+
86
88
  %(<span style="display:none" class="object-infos" data-model-label="#{model_label}" data-object-label="#{CGI.escapeHTML(object_label.to_s)}"></span>).html_safe
87
89
  end
88
90
 
@@ -1,5 +1,3 @@
1
- require 'builder'
2
-
3
1
  module RailsAdmin
4
2
  module MainHelper
5
3
  def rails_admin_form_for(*args, &block)
@@ -14,26 +12,8 @@ module RailsAdmin
14
12
  return 'info' if percent < 34 # < 1/100 of max
15
13
  return 'success' if percent < 67 # < 1/10 of max
16
14
  return 'warning' if percent < 84 # < 1/3 of max
17
- 'danger' # > 1/3 of max
18
- end
19
-
20
- def get_column_sets(properties)
21
- sets = []
22
- property_index = 0
23
- set_index = 0
24
15
 
25
- while property_index < properties.length
26
- current_set_width = 0
27
- loop do
28
- sets[set_index] ||= []
29
- sets[set_index] << properties[property_index]
30
- current_set_width += (properties[property_index].column_width || 120)
31
- property_index += 1
32
- break if current_set_width >= RailsAdmin::Config.total_columns_width || property_index >= properties.length
33
- end
34
- set_index += 1
35
- end
36
- sets
16
+ 'danger' # > 1/3 of max
37
17
  end
38
18
 
39
19
  def filterable_fields
@@ -42,6 +22,7 @@ module RailsAdmin
42
22
 
43
23
  def ordered_filters
44
24
  return @ordered_filters if @ordered_filters.present?
25
+
45
26
  @index = 0
46
27
  @ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).inject({}) do |memo, filter|
47
28
  field_name = filter.is_a?(Array) ? filter.first : filter
@@ -57,28 +38,32 @@ module RailsAdmin
57
38
  end
58
39
 
59
40
  def ordered_filter_options
60
- @ordered_filter_options ||= ordered_filters.map do |duplet|
61
- options = {index: duplet[0]}
62
- filter_for_field = duplet[1]
63
- filter_name = filter_for_field.keys.first
64
- filter_hash = filter_for_field.values.first
65
- unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
66
- raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
67
- end
68
- case field.type
69
- when :enum
70
- options[:select_options] = options_for_select(field.with(object: @abstract_model.model.new).enum, filter_hash['v'])
71
- when :date, :datetime, :time
72
- options[:datetimepicker_format] = field.parser.to_momentjs
41
+ if ordered_filters
42
+ @ordered_filter_options ||= ordered_filters.map do |duplet|
43
+ options = {index: duplet[0]}
44
+ filter_for_field = duplet[1]
45
+ filter_name = filter_for_field.keys.first
46
+ filter_hash = filter_for_field.values.first
47
+ unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
48
+ raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
49
+ end
50
+
51
+ case field.type
52
+ when :enum
53
+ options[:select_options] = options_for_select(field.with(object: @abstract_model.model.new).enum, filter_hash['v'])
54
+ when :date, :datetime, :time
55
+ options[:datetimepicker_format] = field.momentjs_format
56
+ end
57
+ options[:label] = field.label
58
+ options[:name] = field.name
59
+ options[:type] = field.type
60
+ options[:value] = filter_hash['v']
61
+ options[:label] = field.label
62
+ options[:operator] = filter_hash['o'] || field.default_filter_operator
63
+ options[:required] = field.required
64
+ options
73
65
  end
74
- options[:label] = field.label
75
- options[:name] = field.name
76
- options[:type] = field.type
77
- options[:value] = filter_hash['v']
78
- options[:label] = field.label
79
- options[:operator] = filter_hash['o']
80
- options
81
- end if ordered_filters
66
+ end
82
67
  end
83
68
  end
84
69
  end
@@ -0,0 +1,5 @@
1
+ <li class="disabled">
2
+ <a href="#">
3
+ <%= raw(t 'admin.pagination.truncate') %>
4
+ </a>
5
+ </li>
@@ -0,0 +1,9 @@
1
+ <% if current_page.last? %>
2
+ <li class="next disabled">
3
+ <%= link_to raw(t 'admin.pagination.next'), '#' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="next">
7
+ <%= link_to raw(t 'admin.pagination.next'), url, class: (remote ? 'pjax' : '') %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if page.current? %>
2
+ <li class="active">
3
+ <%= link_to page, url, class: (remote ? 'pjax' : '') %>
4
+ </li>
5
+ <% else %>
6
+ <li>
7
+ <%= link_to page, url, class: (remote ? 'pjax' : '') %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <%= paginator.render do %>
2
+ <ul class="pagination">
3
+ <%= prev_page_tag %>
4
+ <% each_page do |page| %>
5
+ <% if page.left_outer? or page.right_outer? or page.inside_window? %>
6
+ <%= page_tag page %>
7
+ <% elsif !page.was_truncated? %>
8
+ <%= gap_tag %>
9
+ <% end %>
10
+ <% end %>
11
+ <%= next_page_tag %>
12
+ </ul>
13
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.first? %>
2
+ <li class="prev disabled">
3
+ <%= link_to raw(t 'admin.pagination.previous'), '#' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="prev">
7
+ <%= link_to raw(t 'admin.pagination.previous'), url, class: (remote ? 'pjax' : '') %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.last? %>
2
+ <li class="next disabled">
3
+ <%= link_to raw(t 'admin.pagination.next'), '#' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="next">
7
+ <%= link_to raw(t 'admin.pagination.next'), url, class: (remote ? 'pjax' : '') %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= paginator.render do %>
2
+ <ul class="pagination">
3
+ <%= prev_page_tag if !current_page.first? %>
4
+ <%= next_page_tag %>
5
+ </ul>
6
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.first? %>
2
+ <li class="prev disabled">
3
+ <%= link_to raw(t 'admin.pagination.previous'), '#' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="prev">
7
+ <%= link_to raw(t 'admin.pagination.previous'), url, class: (remote ? 'pjax' : '') %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
2
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
3
+ <meta content="width=device-width, initial-scale=1" name="viewport; charset=utf-8"/>
4
+ <meta content="NONE,NOARCHIVE" name="robots"/>
5
+ <%= csrf_meta_tag %>
6
+ <% case RailsAdmin::config.asset_source
7
+ when :webpacker %>
8
+ <%= stylesheet_pack_tag "rails_admin" %>
9
+ <%= javascript_pack_tag "rails_admin", async: true %>
10
+ <% when :webpack, :sprockets %>
11
+ <% handle_asset_dependency_error do %>
12
+ <%= stylesheet_link_tag "rails_admin.css", media: :all %>
13
+ <%= javascript_include_tag "rails_admin.js", async: true %>
14
+ <% end %>
15
+ <% else
16
+ raise "Unknown asset_source: #{RailsAdmin::config.asset_source}"
17
+ end %>
@@ -0,0 +1,21 @@
1
+ <div class="container-fluid">
2
+ <div class="navbar-header">
3
+ <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#secondary-navigation">
4
+ <span class="sr-only">
5
+ <%= t('admin.toggle_navigation') %>
6
+ </span>
7
+ <span class="icon-bar"></span>
8
+ <span class="icon-bar"></span>
9
+ <span class="icon-bar"></span>
10
+ </button>
11
+ <a class="navbar-brand pjax" href="<%= dashboard_path %>">
12
+ <%= _get_plugin_name[0] || 'Rails' %>
13
+ <small>
14
+ <%= _get_plugin_name[1] || 'Admin' %>
15
+ </small>
16
+ </a>
17
+ </div>
18
+ <div class="collapse navbar-collapse" id="secondary-navigation">
19
+ <%= render partial: 'layouts/rails_admin/secondary_navigation' %>
20
+ </div>
21
+ </div>
@@ -0,0 +1,24 @@
1
+ <ul class="nav navbar-nav navbar-right root_links">
2
+ <% actions(:root).select(&:show_in_navigation).each do |action| %>
3
+ <li class="<%= action.action_name %>_root_link">
4
+ <%= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: action.pjax? ? "pjax" : "" %>
5
+ </li>
6
+ <% end %>
7
+ <% if main_app_root_path = (main_app.root_path rescue false) %>
8
+ <li>
9
+ <%= link_to t('admin.home.name'), main_app_root_path %>
10
+ </li>
11
+ <% end %>
12
+ <% if _current_user %>
13
+ <% if user_link = edit_user_link %>
14
+ <li class="edit_user_root_link">
15
+ <%= user_link %>
16
+ </li>
17
+ <% end %>
18
+ <% if logout_path.present? %>
19
+ <li>
20
+ <%= link_to content_tag('span', t('admin.misc.log_out'), class: 'label label-danger'), logout_path, method: logout_method %>
21
+ </li>
22
+ <% end %>
23
+ <% end %>
24
+ </ul>
@@ -0,0 +1,9 @@
1
+ <ul class="nav nav-pills nav-stacked">
2
+ <%= main_navigation %>
3
+ </ul>
4
+ <ul class="nav nav-pills nav-stacked">
5
+ <%= root_navigation %>
6
+ </ul>
7
+ <ul class="nav nav-pills nav-stacked">
8
+ <%= static_navigation %>
9
+ </ul>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="<%= I18n.locale %>">
3
+ <head>
4
+ <%= render "layouts/rails_admin/head" %>
5
+ </head>
6
+ <body class="rails_admin">
7
+ <div data-i18n-options="<%= I18n.t("admin.js").to_json %>" id="admin-js"></div>
8
+ <div class="label label-warning" id="loading" style="display:none; position:fixed; right:20px; bottom:20px; z-index:100000">
9
+ <%= t('admin.loading') %>
10
+ </div>
11
+ <nav class="navbar navbar-default navbar-fixed-top">
12
+ <%= render "layouts/rails_admin/navigation" %>
13
+ </nav>
14
+ <div class="container-fluid">
15
+ <div class="row">
16
+ <div class="col-sm-3 col-md-2 sidebar-nav">
17
+ <%= render "layouts/rails_admin/sidebar_navigation" %>
18
+ </div>
19
+ <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2">
20
+ <div class="content" data-pjax-container="<%= true %>">
21
+ <%= render template: 'layouts/rails_admin/pjax' %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </body>
27
+ </html>
@@ -0,0 +1,7 @@
1
+ <% flash && flash.each do |key, value| %>
2
+ <div class="<%= flash_alert_class(key) %> alert alert-dismissible">
3
+ <button class="close" data-dismiss="alert" type="button">&times;</button>
4
+ <%= value %>
5
+ </div>
6
+ <% end %>
7
+ <%= yield %>
@@ -0,0 +1,20 @@
1
+ <title>
2
+ <%= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}" %>
3
+ </title>
4
+ <div class="page-header" data-model="<%= @abstract_model.to_param %>">
5
+ <h1>
6
+ <%= @page_name %>
7
+ </h1>
8
+ </div>
9
+ <% flash && flash.each do |key, value| %>
10
+ <div class="<%= flash_alert_class(key) %> alert alert-dismissible">
11
+ <button class="close" data-dismiss="alert" type="button">&times;</button>
12
+ <%= value %>
13
+ </div>
14
+ <% end %>
15
+ <%= breadcrumb %>
16
+ <ul class="nav nav-tabs">
17
+ <%= menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object) %>
18
+ <%= content_for :contextual_tabs %>
19
+ </ul>
20
+ <%= yield %>
@@ -0,0 +1,45 @@
1
+ <table class="table table-condensed table-striped table-hover">
2
+ <thead>
3
+ <tr>
4
+ <th class="shrink user">
5
+ <%= t("admin.table_headers.username") %>
6
+ </th>
7
+ <th class="shrink items">
8
+ <%= t("admin.table_headers.item") %>
9
+ </th>
10
+ <th class="changes">
11
+ <%= t("admin.table_headers.changes") %>
12
+ </th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <% @history.each do |t| %>
17
+ <% abstract_model = RailsAdmin.config(t.table).abstract_model %>
18
+ <tr>
19
+ <td>
20
+ <%= t.try :username %>
21
+ </td>
22
+ <% if o = abstract_model.try(:get, t.item) %>
23
+ <% label = o.send(abstract_model.config.object_label_method) %>
24
+ <% if show_action = action(:show, abstract_model, o) %>
25
+ <td>
26
+ <%= link_to(label, url_for(action: show_action.action_name, model_name: abstract_model.to_param, id: o.id), class: 'pjax') %>
27
+ </td>
28
+ <% else %>
29
+ <td>
30
+ <%= label %>
31
+ </td>
32
+ <% end %>
33
+ <% else %>
34
+ <% label = Object.const_defined?(t.table) ? t.table.constantize.model_name.human : t.table %>
35
+ <td>
36
+ <%= "#{label} ##{t.item}" %>
37
+ </td>
38
+ <% end %>
39
+ <td>
40
+ <%= t.message %>
41
+ </td>
42
+ </tr>
43
+ <% end %>
44
+ </tbody>
45
+ </table>