activeadmin 3.1.0 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (340) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -1
  3. data/CONTRIBUTING.md +25 -108
  4. data/README.md +17 -30
  5. data/app/assets/config/active_admin_manifest.js +2 -0
  6. data/app/controllers/active_admin/base_controller/menu.rb +39 -0
  7. data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
  8. data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
  9. data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
  10. data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +2 -2
  11. data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
  13. data/app/controllers/active_admin/resource_controller.rb +102 -0
  14. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  15. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  16. data/app/helpers/active_admin/display_helper.rb +117 -0
  17. data/app/helpers/active_admin/form_helper.rb +95 -0
  18. data/app/helpers/active_admin/index_helper.rb +40 -0
  19. data/app/helpers/active_admin/layout_helper.rb +63 -0
  20. data/app/javascript/active_admin/features/batch_actions.js +89 -0
  21. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  22. data/app/javascript/active_admin/features/filters.js +34 -0
  23. data/app/javascript/active_admin/features/has_many.js +28 -0
  24. data/app/javascript/active_admin/features/main_menu.js +12 -0
  25. data/app/javascript/active_admin/features/per_page.js +9 -0
  26. data/app/javascript/active_admin/utils/dom.js +17 -0
  27. data/app/javascript/active_admin.js +10 -0
  28. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  29. data/app/views/active_admin/_html_head.html.erb +13 -0
  30. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  31. data/app/views/active_admin/_page_header.html.erb +27 -0
  32. data/app/views/active_admin/_sidebar.html.erb +5 -0
  33. data/app/views/active_admin/_site_footer.html.erb +7 -0
  34. data/app/views/active_admin/_site_header.html.erb +30 -0
  35. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  36. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  37. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  38. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  39. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  40. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  41. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  42. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  43. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  44. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  45. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  46. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  47. data/app/views/active_admin/page/index.html.arb +5 -1
  48. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  49. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  50. data/app/views/active_admin/resource/_form.html.arb +16 -0
  51. data/app/views/active_admin/resource/_form_default.html.arb +12 -0
  52. data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -0
  53. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  54. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  55. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  56. data/app/views/active_admin/resource/_show_default.html.arb +3 -0
  57. data/app/views/active_admin/resource/edit.html.arb +1 -1
  58. data/app/views/active_admin/resource/index.html.arb +94 -1
  59. data/app/views/active_admin/resource/new.html.arb +1 -1
  60. data/app/views/active_admin/resource/show.html.arb +12 -1
  61. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  62. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  63. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  64. data/app/views/active_admin/shared/_sidebar_section.html.arb +7 -0
  65. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  66. data/app/views/layouts/active_admin.html.erb +20 -0
  67. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  68. data/config/locales/ar.yml +0 -16
  69. data/config/locales/az.yml +0 -16
  70. data/config/locales/bg.yml +0 -9
  71. data/config/locales/bs.yml +0 -7
  72. data/config/locales/ca.yml +0 -9
  73. data/config/locales/cs.yml +0 -9
  74. data/config/locales/da.yml +0 -16
  75. data/config/locales/de-CH.yml +0 -10
  76. data/config/locales/de.yml +0 -16
  77. data/config/locales/el.yml +0 -13
  78. data/config/locales/en-CA.yml +0 -16
  79. data/config/locales/en-GB.yml +0 -16
  80. data/config/locales/en.yml +18 -28
  81. data/config/locales/eo.yml +0 -17
  82. data/config/locales/es-MX.yml +0 -9
  83. data/config/locales/es.yml +0 -16
  84. data/config/locales/fa.yml +0 -9
  85. data/config/locales/fi.yml +0 -9
  86. data/config/locales/fr.yml +32 -26
  87. data/config/locales/he.yml +0 -16
  88. data/config/locales/hr.yml +0 -9
  89. data/config/locales/hu.yml +0 -6
  90. data/config/locales/id.yml +0 -16
  91. data/config/locales/it.yml +0 -16
  92. data/config/locales/ja.yml +0 -16
  93. data/config/locales/ko.yml +0 -9
  94. data/config/locales/lt.yml +0 -16
  95. data/config/locales/lv.yml +0 -6
  96. data/config/locales/mk.yml +0 -15
  97. data/config/locales/nb.yml +0 -12
  98. data/config/locales/nl.yml +21 -29
  99. data/config/locales/pl.yml +0 -16
  100. data/config/locales/pt-BR.yml +0 -16
  101. data/config/locales/pt-PT.yml +0 -6
  102. data/config/locales/ro.yml +0 -6
  103. data/config/locales/ru.yml +0 -16
  104. data/config/locales/sk.yml +0 -16
  105. data/config/locales/sv-SE.yml +0 -16
  106. data/config/locales/tr.yml +0 -16
  107. data/config/locales/uk.yml +0 -16
  108. data/config/locales/vi.yml +0 -16
  109. data/config/locales/zh-CN.yml +0 -16
  110. data/config/locales/zh-TW.yml +0 -16
  111. data/lib/active_admin/application.rb +1 -9
  112. data/lib/active_admin/batch_actions/controller.rb +1 -4
  113. data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
  114. data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
  115. data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
  116. data/lib/active_admin/batch_actions.rb +0 -5
  117. data/lib/active_admin/callbacks.rb +6 -4
  118. data/lib/active_admin/component.rb +0 -1
  119. data/lib/active_admin/csv_builder.rb +23 -2
  120. data/lib/active_admin/devise.rb +3 -3
  121. data/lib/active_admin/dsl.rb +2 -2
  122. data/lib/active_admin/dynamic_settings_node.rb +4 -4
  123. data/lib/active_admin/engine.rb +19 -6
  124. data/lib/active_admin/filters/active.rb +6 -4
  125. data/lib/active_admin/filters/active_filter.rb +1 -3
  126. data/lib/active_admin/filters/forms.rb +2 -43
  127. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  128. data/lib/active_admin/filters/resource_extension.rb +17 -9
  129. data/lib/active_admin/filters.rb +0 -2
  130. data/lib/active_admin/form_builder.rb +15 -14
  131. data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
  132. data/lib/active_admin/inputs/filters/base.rb +1 -1
  133. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  134. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  135. data/lib/active_admin/inputs/filters/select_input.rb +2 -0
  136. data/lib/active_admin/inputs.rb +0 -3
  137. data/lib/active_admin/menu.rb +11 -7
  138. data/lib/active_admin/menu_collection.rb +1 -1
  139. data/lib/active_admin/menu_item.rb +24 -3
  140. data/lib/active_admin/namespace.rb +2 -44
  141. data/lib/active_admin/namespace_settings.rb +2 -35
  142. data/lib/active_admin/order_clause.rb +4 -1
  143. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
  144. data/lib/active_admin/orm/active_record/comments.rb +10 -5
  145. data/lib/active_admin/resource/action_items.rb +15 -20
  146. data/lib/active_admin/resource/naming.rb +1 -2
  147. data/lib/active_admin/resource.rb +1 -0
  148. data/lib/active_admin/resource_dsl.rb +1 -1
  149. data/lib/active_admin/scope.rb +1 -1
  150. data/lib/active_admin/settings_node.rb +1 -1
  151. data/lib/active_admin/sidebar_section.rb +0 -5
  152. data/lib/active_admin/version.rb +1 -1
  153. data/lib/active_admin/view_helpers.rb +0 -12
  154. data/lib/active_admin/views/components/active_admin_form.rb +20 -16
  155. data/lib/active_admin/views/components/attributes_table.rb +4 -12
  156. data/lib/active_admin/views/components/index_list.rb +10 -23
  157. data/lib/active_admin/views/components/paginated_collection.rb +34 -39
  158. data/lib/active_admin/views/components/panel.rb +2 -10
  159. data/lib/active_admin/views/components/scopes.rb +12 -21
  160. data/lib/active_admin/views/components/status_tag.rb +22 -19
  161. data/lib/active_admin/views/components/table_for.rb +19 -24
  162. data/lib/active_admin/views/components/tabs.rb +10 -11
  163. data/lib/active_admin/views/index_as_table.rb +24 -97
  164. data/lib/active_admin.rb +7 -11
  165. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  166. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  167. data/lib/generators/active_admin/assets/templates/tailwind.config.js +18 -0
  168. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  169. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  170. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  171. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  172. data/lib/generators/active_admin/resource/resource_generator.rb +46 -7
  173. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  174. data/lib/generators/active_admin/views_generator.rb +18 -0
  175. metadata +66 -200
  176. data/app/assets/javascripts/active_admin/base.js +0 -521
  177. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  178. data/app/assets/stylesheets/active_admin/_forms.scss +0 -316
  179. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  180. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  181. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  182. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  183. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  184. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  185. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  186. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  187. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  188. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  189. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  190. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  191. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -151
  192. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  193. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  194. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  195. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  196. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  197. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -55
  198. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  199. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  200. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  201. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -67
  202. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  203. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -65
  204. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  205. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  206. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  207. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  208. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  209. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  210. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  211. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  212. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  213. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  214. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  215. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  216. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  217. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -40
  218. data/app/javascript/active_admin/base.js +0 -28
  219. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  220. data/app/javascript/active_admin/ext/jquery.js +0 -9
  221. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  222. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  223. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  224. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  225. data/app/javascript/active_admin/initializers/filters.js +0 -10
  226. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  227. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  228. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  229. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  230. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  231. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  232. data/app/javascript/active_admin/lib/filters.js +0 -39
  233. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  234. data/app/javascript/active_admin/lib/per-page.js +0 -38
  235. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  236. data/app/javascript/active_admin/lib/utils.js +0 -40
  237. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  238. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  239. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  240. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  241. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  242. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  243. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  244. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  245. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  246. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  247. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  248. data/app/views/layouts/active_admin.html.arb +0 -2
  249. data/lib/active_admin/abstract_view_factory.rb +0 -48
  250. data/lib/active_admin/asset_registration.rb +0 -30
  251. data/lib/active_admin/base_controller/menu.rb +0 -35
  252. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  253. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  254. data/lib/active_admin/generators/boilerplate.rb +0 -54
  255. data/lib/active_admin/helpers/collection.rb +0 -21
  256. data/lib/active_admin/helpers/i18n.rb +0 -8
  257. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  258. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  259. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  260. data/lib/active_admin/orm/mongoid.rb +0 -2
  261. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  262. data/lib/active_admin/resource_controller.rb +0 -68
  263. data/lib/active_admin/view_factory.rb +0 -28
  264. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  265. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  266. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  267. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  268. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  269. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  270. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  271. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  272. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  273. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  274. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  275. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  276. data/lib/active_admin/views/action_items.rb +0 -18
  277. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  278. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  279. data/lib/active_admin/views/components/columns.rb +0 -162
  280. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  281. data/lib/active_admin/views/components/menu.rb +0 -33
  282. data/lib/active_admin/views/components/menu_item.rb +0 -59
  283. data/lib/active_admin/views/components/sidebar.rb +0 -14
  284. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  285. data/lib/active_admin/views/components/site_title.rb +0 -55
  286. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  287. data/lib/active_admin/views/footer.rb +0 -32
  288. data/lib/active_admin/views/header.rb +0 -20
  289. data/lib/active_admin/views/index_as_block.rb +0 -37
  290. data/lib/active_admin/views/index_as_blog.rb +0 -156
  291. data/lib/active_admin/views/index_as_grid.rb +0 -81
  292. data/lib/active_admin/views/pages/base.rb +0 -134
  293. data/lib/active_admin/views/pages/form.rb +0 -65
  294. data/lib/active_admin/views/pages/index.rb +0 -166
  295. data/lib/active_admin/views/pages/layout.rb +0 -27
  296. data/lib/active_admin/views/pages/page.rb +0 -31
  297. data/lib/active_admin/views/pages/show.rb +0 -60
  298. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  299. data/lib/active_admin/views/title_bar.rb +0 -56
  300. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  301. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  302. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  303. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  304. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  305. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  306. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  307. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  308. data/vendor/assets/javascripts/jquery-ui/data.js +0 -41
  309. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -48
  310. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
  311. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -86
  312. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -80
  313. data/vendor/assets/javascripts/jquery-ui/form.js +0 -22
  314. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -17
  315. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -47
  316. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -65
  317. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -46
  318. data/vendor/assets/javascripts/jquery-ui/position.js +0 -500
  319. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -42
  320. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -23
  321. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -47
  322. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -38
  323. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -51
  324. data/vendor/assets/javascripts/jquery-ui/version.js +0 -17
  325. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -735
  326. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -391
  327. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -291
  328. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -300
  329. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2123
  330. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -954
  331. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1259
  332. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -230
  333. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1207
  334. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1561
  335. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  336. /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
  337. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  338. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  339. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  340. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f41c15703a7796ce3b6395820049062ffd4f9fbfe7e95baeffadf283b1262d93
4
- data.tar.gz: 6d78d624d8cf0fb7e8cc629b9d3145abf4a3180d2b1df206f4a765db5e2f66dd
3
+ metadata.gz: 7854f33fa96f9ceb3ef104d2ce30dc2a347ab345037e1864fcbf25b7139f9da6
4
+ data.tar.gz: 8553d9a6fcfd189d3b60dd03526f68c8527115e7af1a4dfdca4b2ed9da78f8c2
5
5
  SHA512:
6
- metadata.gz: c530b7246911f1e83c9181795a969eafa11a83dc2ca7271e67d8944bb7d4a1391b5880c050bb77e6bb5535e44fc70460a53e42e838e6d694d2542f42efb37555
7
- data.tar.gz: 8ca9cd7d704eb7c1eeda4b4210f6db07d8f9ce72caacdd8bc46ae9b188fe518316d8a2714350986960492b6aafc56dd9462ab2ac3272b25361b7e8777034525f
6
+ metadata.gz: 25117be07ec53152259ab5b7308897d8e6288978ac8eb4bf113cbb9d38a41a2c10701604056cbebeb8d087257b5acc2bc6066e4dc2fc2d4eae42183e15463793
7
+ data.tar.gz: 0b62aafe018b86b4493a01c636dd6831c73fa54a6269977497a904fb7afe8a0ee06acb26da23f134cd4a41a699be29252b324b64c73365e324f0cdb431216c45
data/CHANGELOG.md CHANGED
@@ -595,7 +595,7 @@ _No changes_.
595
595
 
596
596
  * Prevents access to formats that the user not permitted to see. [#4867] by [@Fivell] and [@timoschilling]
597
597
  * Prevents potential DOS attack via Ruby symbols. [#1926] by [@seanlinsley]
598
- * [this isn't an issue for those using Ruby >= 2.2](http://rubykaigi.org/2014/presentation/S-NarihiroNakamura)
598
+ * [this isn't an issue for those using Ruby >= 2.2](https://rubykaigi.org/2014/presentation/S-NarihiroNakamura)
599
599
 
600
600
  ### Bug Fixes
601
601
 
@@ -878,6 +878,7 @@ Please check [0-6-stable] for previous changes.
878
878
  [#8105]: https://github.com/activeadmin/activeadmin/pull/8105
879
879
  [#8106]: https://github.com/activeadmin/activeadmin/pull/8106
880
880
 
881
+
881
882
  [@1000ship]: https://github.com/1000ship
882
883
  [@5t111111]: https://github.com/5t111111
883
884
  [@aarek]: https://github.com/aarek
data/CONTRIBUTING.md CHANGED
@@ -1,54 +1,36 @@
1
- ## Contributing
1
+ # Contributing
2
2
 
3
- First off, thank you for considering contributing to Active Admin. It's people
4
- like you that make Active Admin such a great tool.
3
+ Thanks for your interest in contributing to ActiveAdmin! Please take a moment to review this document **before submitting a pull request**.
5
4
 
6
- ### Where do I go from here?
5
+ ## Pull requests
7
6
 
8
- If you've noticed a bug or have a feature request, [make one][new issue]! It's
9
- generally best if you get confirmation of your bug or approval for your feature
10
- request this way before starting to code.
7
+ **Please ask first before starting work on any significant new features.**
11
8
 
12
- If you have a general question about activeadmin, you can post it on [Stack
13
- Overflow], the issue tracker is only for bugs and feature requests.
9
+ It's never a fun experience to have your pull request declined after investing a lot of time and effort into a new feature. To avoid this from happening, we request that contributors create [a feature request](https://github.com/activeadmin/activeadmin/discussions/new?category=ideas) to first discuss any new ideas. Your ideas and suggestions are welcome!
14
10
 
15
- ### Fork & create a branch
11
+ Please ensure that the tests are passing when submitting a pull request. If you're adding new features to ActiveAdmin, please include tests.
16
12
 
17
- If this is something you think you can fix, then [fork Active Admin] and create
18
- a branch with a descriptive name.
13
+ ## Where do I go from here?
19
14
 
20
- A good branch name would be (where issue #325 is the ticket you're working on):
15
+ For any questions, support, or ideas, etc. [please create a GitHub discussion](https://github.com/activeadmin/activeadmin/discussions/new). If you've noticed a bug, [please submit an issue][new issue].
21
16
 
22
- ```sh
23
- git checkout -b 325-add-japanese-translations
24
- ```
17
+ ### Fork and create a branch
25
18
 
26
- ### Get the test suite running
19
+ If this is something you think you can fix, then [fork Active Admin] and create
20
+ a branch with a descriptive name.
27
21
 
28
- Make sure you're using a recent Ruby version.
22
+ ### Get the test suite running
29
23
 
30
- You'll also need chrome installed in order to run cucumber scenarios.
24
+ Make sure you're using a recent Ruby and Node version. You'll also need Chrome installed in order to run Cucumber scenarios.
31
25
 
32
26
  Now install the development dependencies:
33
27
 
34
28
  ```sh
29
+ gem install foreman
35
30
  bundle install
36
- ```
37
-
38
- Then install javascript dependencies with [Yarn] (requires a current version of [Node.js]):
39
-
40
- ```sh
41
31
  bin/yarn install
42
32
  ```
43
33
 
44
- JS assets are located in `app/javascript/active_admin`. The config will take care of compiling a complete bundle with [Rollup] using the `build` script and exported to `app/assets/javascripts/active_admin/base.js` ready to be used by Sprockets.
45
-
46
- To update javascript bundle run (add `-w` flag for watch mode):
47
-
48
- ```sh
49
- bin/yarn build
50
- ```
51
-
52
34
  Now you should be able to run the entire suite using:
53
35
 
54
36
  ```sh
@@ -65,20 +47,13 @@ you use the correct Gemfile, for example:
65
47
  export BUNDLE_GEMFILE=gemfiles/rails_61/Gemfile
66
48
  ```
67
49
 
68
- **Warning** SCSS assets are aimed to be used indifferently with Sprockets **and** webpacker.
69
- As such, make sure not to use any sass-rails directives such as `asset-url` or `image-url`.
70
-
71
50
  ### Implement your fix or feature
72
51
 
73
- At this point, you're ready to make your changes! Feel free to ask for help;
74
- everyone is a beginner at first :smile_cat:
52
+ At this point, you're ready to make your changes. Feel free to ask for help.
75
53
 
76
54
  ### View your changes in a Rails application
77
55
 
78
- Active Admin is meant to be used by humans, not cucumbers. So make sure to take
79
- a look at your changes in a browser.
80
-
81
- To boot up a test Rails app:
56
+ Make sure to take a look at your changes in a browser. To boot up a test Rails app:
82
57
 
83
58
  ```sh
84
59
  bin/rake local server
@@ -87,11 +62,7 @@ bin/rake local server
87
62
  This will automatically create a Rails app if none already exists, and store it
88
63
  in the `tmp/development_apps` folder.
89
64
 
90
- You should now be able to open <http://localhost:3000/admin> in your browser.
91
- You can log in using:
92
-
93
- *User*: admin@example.com
94
- *Password*: password
65
+ You should now be able to open <http://localhost:3000/admin> in your browser and log in using `admin@example.com` and `password`.
95
66
 
96
67
  If you need to perform any other commands on the test application, just pass
97
68
  them to the `local` rake task. For example, to boot the rails console:
@@ -100,69 +71,24 @@ them to the `local` rake task. For example, to boot the rails console:
100
71
  bin/rake local console
101
72
  ```
102
73
 
103
- Or to migrate the database, if you create a new migration or just play around
104
- with the db:
74
+ Or to migrate the database for a new migration:
105
75
 
106
76
  ```sh
107
77
  bin/rake local db:migrate
108
78
  ```
109
79
 
110
- ### Make a Pull Request
111
-
112
- At this point, you should switch back to your master branch and make sure it's
113
- up to date with Active Admin's master branch:
114
-
115
- ```sh
116
- git remote add upstream git@github.com:activeadmin/activeadmin.git
117
- git checkout master
118
- git pull upstream master
119
- ```
120
-
121
- Then update your feature branch from your local copy of master, and push it!
122
-
123
- ```sh
124
- git checkout 325-add-japanese-translations
125
- git rebase master
126
- git push --set-upstream origin 325-add-japanese-translations
127
- ```
128
-
129
- Finally, go to GitHub and [make a Pull Request][] :D
130
-
131
- Github Actions will run our test suite against all supported Rails versions. We
132
- care about quality, so your PR won't be merged until all tests pass. It's
133
- unlikely, but it's possible that your changes pass tests in one Rails version
134
- but fail in another. In that case, you'll have to setup your development
135
- environment (as explained in step 3) to use the problematic Rails version, and
136
- investigate what's going on!
137
-
138
- ### Keeping your Pull Request updated
139
-
140
- If a maintainer asks you to "rebase" your PR, they're saying that a lot of code
141
- has changed, and that you need to update your branch so it's easier to merge.
142
-
143
- To learn more about rebasing in Git, there are a lot of [good][git rebasing]
144
- [resources][interactive rebase] but here's the suggested workflow:
145
-
146
- ```sh
147
- git checkout 325-add-japanese-translations
148
- git pull --rebase upstream master
149
- git push --force-with-lease 325-add-japanese-translations
150
- ```
80
+ ### Create a Pull Request
151
81
 
152
- ### Merging a PR (maintainers only)
82
+ At this point, if your changes look good and tests are passing, you are ready to create a pull request.
153
83
 
154
- A PR can only be merged into master by a maintainer if:
84
+ Github Actions will run our test suite against all supported Rails versions. It's possible that your changes pass tests in one Rails version but fail in another. In that case, you'll have to setup your development
85
+ environment with the Gemfile for the problematic Rails version, and investigate what's going on.
155
86
 
156
- * It is passing CI.
157
- * It has been approved by at least two maintainers. If it was a maintainer who
158
- opened the PR, only one extra approval is needed.
159
- * It has no requested changes.
160
- * It is up to date with current master.
87
+ ## Merging a PR (maintainers only)
161
88
 
162
- Any maintainer is allowed to merge a PR if all of these conditions are
163
- met.
89
+ A PR can only be merged into master by a maintainer if: CI is passing, approved by another maintainer and is up to date with the default branch. Any maintainer is allowed to merge a PR if all of these conditions ae met.
164
90
 
165
- ### Shipping a release (maintainers only)
91
+ ## Shipping a release (maintainers only)
166
92
 
167
93
  Maintainers need to do the following to push out a release:
168
94
 
@@ -175,13 +101,4 @@ Maintainers need to do the following to push out a release:
175
101
  * Run `bin/rake release` from the target branch once the PR is merged.
176
102
 
177
103
  [chandler]: https://github.com/mattbrictson/chandler#2-configure-credentials
178
- [Stack Overflow]: http://stackoverflow.com/questions/tagged/activeadmin
179
104
  [new issue]: https://github.com/activeadmin/activeadmin/issues/new
180
- [fork Active Admin]: https://help.github.com/articles/fork-a-repo
181
- [make a pull request]: https://help.github.com/articles/creating-a-pull-request
182
- [git rebasing]: http://git-scm.com/book/en/Git-Branching-Rebasing
183
- [interactive rebase]: https://help.github.com/en/github/using-git/about-git-rebase
184
- [shortcut reference links]: https://github.github.com/gfm/#shortcut-reference-link
185
- [Rollup]: https://rollupjs.org/guide/en/#quick-start
186
- [Yarn]: https://yarnpkg.com/en/docs/install
187
- [Node.js]: https://nodejs.org/en/
data/README.md CHANGED
@@ -3,11 +3,10 @@
3
3
  [Active Admin](https://activeadmin.info) is a Ruby on Rails framework for
4
4
  creating elegant backends for website administration.
5
5
 
6
- [![Version ][rubygems_badge]][rubygems]
7
- [![Github Actions ][actions_badge]][actions]
8
- [![Coverage ][coverage_badge]][coverage]
9
- [![Tidelift ][tidelift_badge]][tidelift]
10
- [![Inch CI ][inch_badge]][inch]
6
+ [![Version][rubygems_badge]][rubygems]
7
+ [![Github Actions][actions_badge]][actions]
8
+ [![Coverage][coverage_badge]][coverage]
9
+ [![Tidelift][tidelift_badge]][tidelift]
11
10
 
12
11
  ## Goals
13
12
 
@@ -17,8 +16,8 @@ creating elegant backends for website administration.
17
16
 
18
17
  ## Getting started
19
18
 
20
- * Check out [the docs][docs].
21
- * Try the [live demo][demo].
19
+ * Review [the documentation][docs].
20
+ * For help, questions, etc. [discuss ActiveAdmin on GitHub](https://github.com/activeadmin/activeadmin/discussions) or use [StackOverflow][stackoverflow]
22
21
  * The [wiki] includes links to tutorials, articles and sample projects.
23
22
 
24
23
  ## For enterprise
@@ -26,15 +25,6 @@ creating elegant backends for website administration.
26
25
  Active Admin for enterprise is available via the Tidelift subscription. [Learn
27
26
  More][tidelift_enterprise].
28
27
 
29
- ## Need help?
30
-
31
- Please use [StackOverflow][stackoverflow] for help requests and how-to questions.
32
-
33
- Please open GitHub issues for bugs and enhancements only, not general help requests.
34
- Please search previous issues (and Google and StackOverflow) before creating a new issue.
35
-
36
- Google Groups, IRC #activeadmin and Gitter are not actively monitored.
37
-
38
28
  ## Want to contribute?
39
29
 
40
30
  If you want to contribute through code or documentation, the [Contributing
@@ -58,14 +48,14 @@ sponsor for the project, and also submit expenses to it.
58
48
 
59
49
  We try not to reinvent the wheel, so Active Admin is built with other open source projects:
60
50
 
61
- Tool | Description
62
- --------------------- | -----------
63
- [Arbre] | Ruby -> HTML, just like that.
64
- [Devise] | Powerful, extensible user authentication
65
- [Formtastic] | A Rails form builder plugin with semantically rich and accessible markup
66
- [Inherited Resources] | Simplifies controllers with pre-built RESTful controller actions
67
- [Kaminari] | Elegant pagination for any sort of collection
68
- [Ransack] | Provides a simple search API to query your data
51
+ * [Arbre]
52
+ * [Devise]
53
+ * [Flowbite](https://flowbite.com)
54
+ * [Formtastic]
55
+ * [Inherited Resources]
56
+ * [Kaminari]
57
+ * [Ransack]
58
+ * [TailwindCSS](https://tailwindcss.com)
69
59
 
70
60
  ## Security contact information
71
61
 
@@ -91,23 +81,20 @@ Thanks to [Open Collective][opencollective contributors] and all our Open Collec
91
81
  [Kaminari]: https://github.com/kaminari/kaminari
92
82
  [Ransack]: https://github.com/activerecord-hackery/ransack
93
83
 
94
- [rubygems_badge]: http://img.shields.io/gem/v/activeadmin.svg
84
+ [rubygems_badge]: https://img.shields.io/gem/v/activeadmin.svg
95
85
  [rubygems]: https://rubygems.org/gems/activeadmin
96
86
  [actions_badge]: https://github.com/activeadmin/activeadmin/workflows/ci/badge.svg
97
87
  [actions]: https://github.com/activeadmin/activeadmin/actions
98
88
  [coverage_badge]: https://codecov.io/gh/activeadmin/activeadmin/branch/master/graph/badge.svg?token=NAjeBdkQXW
99
89
  [coverage]: https://codecov.io/gh/activeadmin/activeadmin
100
- [inch_badge]: http://inch-ci.org/github/activeadmin/activeadmin.svg?branch=master
101
- [inch]: http://inch-ci.org/github/activeadmin/activeadmin
102
90
  [tidelift_badge]: https://tidelift.com/badges/github/activeadmin/activeadmin
103
91
  [tidelift]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=readme
104
92
  [tidelift_enterprise]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise
105
93
  [tidelift_support]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=github&utm_content=support
106
94
 
107
- [docs]: http://activeadmin.info/0-installation.html
108
- [demo]: http://demo.activeadmin.info/admin
95
+ [docs]: https://activeadmin.info/0-installation.html
109
96
  [wiki]: https://github.com/activeadmin/activeadmin/wiki
110
- [stackoverflow]: http://stackoverflow.com/questions/tagged/activeadmin
97
+ [stackoverflow]: https://stackoverflow.com/questions/tagged/activeadmin
111
98
  [contributing]: https://github.com/activeadmin/activeadmin/blob/master/CONTRIBUTING.md
112
99
  [Liberapay]: https://liberapay.com/Active-Admin/donate
113
100
  [Tidelift security contact]: https://tidelift.com/security
@@ -0,0 +1,2 @@
1
+ //= link_tree ../../javascript .js
2
+ //= link_tree ../../../vendor/javascript .js
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class BaseController < ::InheritedResources::Base
4
+ module Menu
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ before_action :set_current_menu_item
9
+
10
+ helper_method :current_menu
11
+ helper_method :current_menu_item?
12
+ end
13
+
14
+ protected
15
+
16
+ def current_menu
17
+ active_admin_config.navigation_menu
18
+ end
19
+
20
+ def current_menu_item?(item)
21
+ item.current?(@current_menu_item)
22
+ end
23
+
24
+ def set_current_menu_item
25
+ @current_menu_item = if current_menu && active_admin_config.belongs_to? && parent?
26
+ parent_item = active_admin_config.belongs_to_config.target.menu_item
27
+ if current_menu.include? parent_item
28
+ parent_item
29
+ else
30
+ active_admin_config.menu_item
31
+ end
32
+ else
33
+ active_admin_config.menu_item
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -1,14 +1,17 @@
1
1
  # frozen_string_literal: true
2
- require "active_admin/base_controller/authorization"
3
- require "active_admin/base_controller/menu"
4
-
5
2
  module ActiveAdmin
6
3
  # BaseController for ActiveAdmin.
7
4
  # It implements ActiveAdmin controllers core features.
8
5
  class BaseController < ::InheritedResources::Base
9
- helper ::ActiveAdmin::ViewHelpers
6
+ helper MethodOrProcHelper
7
+ helper LayoutHelper
8
+ helper FormHelper
9
+ helper BreadcrumbHelper
10
+ helper AutoLinkHelper
11
+ helper DisplayHelper
12
+ helper IndexHelper
10
13
 
11
- layout :determine_active_admin_layout
14
+ layout "active_admin"
12
15
 
13
16
  before_action :only_render_implemented_actions
14
17
  before_action :authenticate_active_admin_user
@@ -22,8 +25,8 @@ module ActiveAdmin
22
25
  attr_accessor :active_admin_config
23
26
  end
24
27
 
25
- include Authorization
26
- include Menu
28
+ include BaseController::Authorization
29
+ include BaseController::Menu
27
30
 
28
31
  private
29
32
 
@@ -61,22 +64,47 @@ module ActiveAdmin
61
64
 
62
65
  ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
63
66
 
64
- # Determine which layout to use.
65
- #
66
- # 1. If we're rendering a standard Active Admin action, we want layout(false)
67
- # because these actions are subclasses of the Base page (which implements
68
- # all the required layout code)
69
- # 2. If we're rendering a custom action, we'll use the active_admin layout so
70
- # that users can render any template inside Active Admin.
71
- def determine_active_admin_layout
72
- ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : "active_admin"
73
- end
74
-
75
67
  def active_admin_root
76
68
  controller, action = active_admin_namespace.root_to.split "#"
77
69
  { controller: controller, action: action }
78
70
  end
79
71
 
72
+ def page_presenter
73
+ active_admin_config.get_page_presenter(params[:action].to_sym) || default_page_presenter
74
+ end
75
+ helper_method :page_presenter
76
+
77
+ def default_page_presenter
78
+ PagePresenter.new
79
+ end
80
+
81
+ def page_title
82
+ if page_presenter[:title]
83
+ helpers.render_or_call_method_or_proc_on(self, page_presenter[:title])
84
+ else
85
+ default_page_title
86
+ end
87
+ end
88
+ helper_method :page_title
89
+
90
+ def default_page_title
91
+ active_admin_config.name
92
+ end
93
+
94
+ DEFAULT_DOWNLOAD_FORMATS = [:csv, :xml, :json]
95
+
96
+ def build_download_formats(download_links)
97
+ download_links = instance_exec(&download_links) if download_links.is_a?(Proc)
98
+ if download_links.is_a?(Array) && !download_links.empty?
99
+ download_links
100
+ elsif download_links == false
101
+ []
102
+ else
103
+ DEFAULT_DOWNLOAD_FORMATS
104
+ end
105
+ end
106
+ helper_method :build_download_formats
107
+
80
108
  ActiveSupport.run_load_hooks(:active_admin_controller, self)
81
109
  end
82
110
  end
@@ -15,10 +15,6 @@ module ActiveAdmin
15
15
  render "active_admin/page/index"
16
16
  end
17
17
 
18
- def clear_page_actions!
19
- active_admin_config.clear_page_actions!
20
- end
21
-
22
18
  private
23
19
 
24
20
  def authorize_access!
@@ -20,7 +20,7 @@ module ActiveAdmin
20
20
  private
21
21
 
22
22
  def remove_action_methods(actions_type)
23
- active_admin_config.public_send("#{actions_type}_actions").each do |action|
23
+ active_admin_config.public_send(:"#{actions_type}_actions").each do |action|
24
24
  remove_method action.name
25
25
  end
26
26
  end
@@ -57,7 +57,7 @@ module ActiveAdmin
57
57
  def find_collection(options = {})
58
58
  collection = scoped_collection
59
59
  collection_applies(options).each do |applyer|
60
- collection = send("apply_#{applyer}", collection)
60
+ collection = send(:"apply_#{applyer}", collection)
61
61
  end
62
62
  collection
63
63
  end
@@ -215,7 +215,7 @@ module ActiveAdmin
215
215
  # Applies any Ransack search methods to the currently scoped collection.
216
216
  # Both `search` and `ransack` are provided, but we use `ransack` to prevent conflicts.
217
217
  def apply_filtering(chain)
218
- @search = chain.ransack(params[:q] || {})
218
+ @search = chain.ransack(params[:q] || {}, auth_object: active_admin_authorization)
219
219
  @search.result
220
220
  end
221
221
 
@@ -16,7 +16,7 @@ module ActiveAdmin
16
16
  # Collection can be scoped conditionally with an :if or :unless proc.
17
17
  def begin_of_association_chain
18
18
  return nil unless active_admin_config.scope_to?(self)
19
- MethodOrProcHelper.render_in_context(self, active_admin_config.scope_to_method)
19
+ helpers.render_in_context(self, active_admin_config.scope_to_method)
20
20
  end
21
21
 
22
22
  # Overriding from InheritedResources::BaseHelpers
@@ -24,14 +24,14 @@ module ActiveAdmin
24
24
  headers["Last-Modified"] = Time.current.httpdate
25
25
 
26
26
  if ActiveAdmin.application.disable_streaming_in.include? Rails.env
27
- self.response_body = block[String.new]
27
+ self.response_body = block[String.new] # rubocop:disable Performance/UnfreezeString to preserve encoding
28
28
  else
29
29
  self.response_body = Enumerator.new &block
30
30
  end
31
31
  end
32
32
 
33
33
  def csv_filename
34
- "#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s}.csv"
34
+ "#{resource_collection_name.to_s.tr('_', '-')}-#{Time.zone.now.to_date.to_s}.csv"
35
35
  end
36
36
 
37
37
  def stream_csv
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/collection_decorator"
3
+
4
+ module ActiveAdmin
5
+ # All Resources Controller inherits from this controller.
6
+ # It implements actions and helpers for resources.
7
+ class ResourceController < BaseController
8
+ respond_to :html, :xml, :json
9
+ respond_to :csv, only: :index
10
+
11
+ before_action :restrict_download_format_access!, only: [:index, :show]
12
+
13
+ include ResourceController::ActionBuilder
14
+ include ResourceController::Decorators
15
+ include ResourceController::DataAccess
16
+ include ResourceController::PolymorphicRoutes
17
+ include ResourceController::Scoping
18
+ include ResourceController::Streaming
19
+ extend ResourceClassMethods
20
+
21
+ def self.active_admin_config=(config)
22
+ if @active_admin_config = config
23
+ defaults resource_class: config.resource_class,
24
+ route_prefix: config.route_prefix,
25
+ instance_name: config.resource_name.singular
26
+ end
27
+ end
28
+
29
+ # Inherited Resources uses the `self.inherited(base)` hook to add
30
+ # in `self.resource_class`. To override it, we need to install
31
+ # our resource_class method each time we're inherited from.
32
+ def self.inherited(base)
33
+ super(base)
34
+ base.override_resource_class_methods!
35
+ end
36
+
37
+ private
38
+
39
+ def page_presenter
40
+ case params[:action].to_sym
41
+ when :index
42
+ active_admin_config.get_page_presenter(params[:action], params[:as])
43
+ when :new, :edit
44
+ active_admin_config.get_page_presenter(:form)
45
+ end || super
46
+ end
47
+
48
+ def default_page_presenter
49
+ case params[:action].to_sym
50
+ when :index
51
+ PagePresenter.new(as: :table)
52
+ when :new, :edit
53
+ PagePresenter.new
54
+ end || super
55
+ end
56
+
57
+ def page_title
58
+ if page_presenter[:title]
59
+ case params[:action].to_sym
60
+ when :index
61
+ case page_presenter[:title]
62
+ when Symbol, Proc
63
+ instance_exec(&page_presenter[:title])
64
+ else
65
+ page_presenter[:title]
66
+ end
67
+ else
68
+ helpers.render_or_call_method_or_proc_on(resource, page_presenter[:title])
69
+ end
70
+ else
71
+ default_page_title
72
+ end
73
+ end
74
+
75
+ def default_page_title
76
+ case params[:action].to_sym
77
+ when :index
78
+ active_admin_config.plural_resource_label
79
+ when :show
80
+ helpers.display_name(resource)
81
+ when :new, :edit, :create, :update
82
+ normalized_action = params[:action]
83
+ normalized_action = 'new' if normalized_action == 'create'
84
+ normalized_action = 'edit' if normalized_action == 'update'
85
+
86
+ ActiveAdmin::Localizers.resource(active_admin_config).t("#{normalized_action}_model")
87
+ else
88
+ I18n.t("active_admin.#{params[:action]}", default: params[:action].to_s.titleize)
89
+ end
90
+ end
91
+
92
+ def restrict_download_format_access!
93
+ unless request.format.html?
94
+ presenter = active_admin_config.get_page_presenter(:index)
95
+ download_formats = (presenter || {}).fetch(:download_links, active_admin_config.namespace.download_links)
96
+ unless build_download_formats(download_formats).include?(request.format.symbol)
97
+ raise ActiveAdmin::AccessDenied.new(current_active_admin_user, :index)
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end