activeadmin 1.3.0 → 2.13.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (582) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +764 -135
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +83 -61
  5. data/README.md +73 -19
  6. data/app/assets/javascripts/active_admin/base.js +524 -0
  7. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  8. data/app/assets/stylesheets/active_admin/_forms.scss +3 -25
  9. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  10. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  11. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  12. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  14. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  15. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  16. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  17. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  18. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  19. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  20. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  21. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  23. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  25. data/app/javascript/active_admin/base.js +28 -0
  26. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  27. data/app/javascript/active_admin/ext/jquery.js +9 -0
  28. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  29. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  30. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  31. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  32. data/app/javascript/active_admin/initializers/filters.js +10 -0
  33. data/app/javascript/active_admin/initializers/has-many.js +98 -0
  34. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  35. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  36. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  37. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  38. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  39. data/app/javascript/active_admin/lib/filters.js +39 -0
  40. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  41. data/app/javascript/active_admin/lib/per-page.js +38 -0
  42. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  43. data/app/javascript/active_admin/lib/utils.js +40 -0
  44. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  45. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  46. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  47. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  48. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  50. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  51. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  52. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  53. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  54. data/app/views/active_admin/page/index.html.arb +1 -0
  55. data/app/views/active_admin/resource/edit.html.arb +1 -0
  56. data/app/views/active_admin/resource/index.html.arb +1 -0
  57. data/app/views/active_admin/resource/new.html.arb +1 -0
  58. data/app/views/active_admin/resource/show.html.arb +1 -0
  59. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  60. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  61. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  64. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  65. data/app/views/layouts/active_admin.html.arb +1 -0
  66. data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
  67. data/config/locales/ar.yml +9 -8
  68. data/config/locales/az.yml +138 -0
  69. data/config/locales/bg.yml +1 -1
  70. data/config/locales/bs.yml +1 -0
  71. data/config/locales/ca.yml +1 -1
  72. data/config/locales/cs.yml +1 -0
  73. data/config/locales/da.yml +1 -0
  74. data/config/locales/de-CH.yml +1 -0
  75. data/config/locales/de.yml +29 -0
  76. data/config/locales/el.yml +1 -0
  77. data/config/locales/en-CA.yml +4 -3
  78. data/config/locales/en-GB.yml +4 -3
  79. data/config/locales/en.yml +23 -4
  80. data/config/locales/eo.yml +1 -0
  81. data/config/locales/es-MX.yml +3 -1
  82. data/config/locales/es.yml +26 -6
  83. data/config/locales/fa.yml +1 -0
  84. data/config/locales/fi.yml +2 -1
  85. data/config/locales/fr.yml +6 -5
  86. data/config/locales/he.yml +1 -1
  87. data/config/locales/hr.yml +1 -0
  88. data/config/locales/hu.yml +5 -0
  89. data/config/locales/id.yml +1 -0
  90. data/config/locales/it.yml +23 -0
  91. data/config/locales/ja.yml +4 -3
  92. data/config/locales/ko.yml +2 -1
  93. data/config/locales/lt.yml +3 -2
  94. data/config/locales/lv.yml +3 -2
  95. data/config/locales/mk.yml +134 -0
  96. data/config/locales/nb.yml +16 -5
  97. data/config/locales/nl.yml +13 -1
  98. data/config/locales/pl.yml +72 -3
  99. data/config/locales/pt-BR.yml +1 -0
  100. data/config/locales/pt-PT.yml +1 -0
  101. data/config/locales/ro.yml +4 -2
  102. data/config/locales/ru.yml +3 -0
  103. data/config/locales/sk.yml +60 -0
  104. data/config/locales/sv-SE.yml +1 -0
  105. data/config/locales/tr.yml +10 -0
  106. data/config/locales/uk.yml +3 -0
  107. data/config/locales/vi.yml +7 -5
  108. data/config/locales/zh-CN.yml +34 -5
  109. data/config/locales/zh-TW.yml +1 -0
  110. data/docs/.gitignore +1 -0
  111. data/docs/0-installation.md +29 -5
  112. data/docs/1-general-configuration.md +36 -1
  113. data/docs/10-custom-pages.md +14 -0
  114. data/docs/11-decorators.md +16 -5
  115. data/docs/12-arbre-components.md +41 -1
  116. data/docs/13-authorization-adapter.md +41 -22
  117. data/docs/2-resource-customization.md +19 -5
  118. data/docs/3-index-pages/custom-index.md +1 -1
  119. data/docs/3-index-pages/index-as-blog.md +1 -1
  120. data/docs/3-index-pages/index-as-table.md +12 -5
  121. data/docs/3-index-pages.md +18 -1
  122. data/docs/5-forms.md +25 -5
  123. data/docs/6-show-pages.md +12 -0
  124. data/docs/8-custom-actions.md +12 -1
  125. data/docs/9-batch-actions.md +2 -2
  126. data/docs/CNAME +1 -1
  127. data/docs/Gemfile +4 -2
  128. data/docs/Gemfile.lock +283 -0
  129. data/docs/_config.yml +3 -1
  130. data/docs/_includes/toc.html +1 -1
  131. data/docs/_includes/top-menu.html +9 -1
  132. data/docs/documentation.md +2 -2
  133. data/docs/images/tidelift.svg +14 -0
  134. data/docs/index.html +110 -9
  135. data/docs/stylesheets/main.css +55 -2
  136. data/lib/active_admin/abstract_view_factory.rb +14 -51
  137. data/lib/active_admin/application.rb +65 -172
  138. data/lib/active_admin/application_settings.rb +43 -0
  139. data/lib/active_admin/asset_registration.rb +1 -8
  140. data/lib/active_admin/authorization_adapter.rb +4 -3
  141. data/lib/active_admin/base_controller/authorization.rb +18 -18
  142. data/lib/active_admin/base_controller/menu.rb +1 -0
  143. data/lib/active_admin/base_controller.rb +12 -11
  144. data/lib/active_admin/batch_actions/controller.rb +6 -5
  145. data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
  146. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  147. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  148. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  149. data/lib/active_admin/batch_actions.rb +1 -0
  150. data/lib/active_admin/callbacks.rb +2 -1
  151. data/lib/active_admin/cancan_adapter.rb +2 -1
  152. data/lib/active_admin/collection_decorator.rb +32 -0
  153. data/lib/active_admin/component.rb +1 -0
  154. data/lib/active_admin/controller_action.rb +3 -1
  155. data/lib/active_admin/csv_builder.rb +15 -23
  156. data/lib/active_admin/dependency.rb +14 -77
  157. data/lib/active_admin/deprecation.rb +1 -25
  158. data/lib/active_admin/devise.rb +16 -5
  159. data/lib/active_admin/dsl.rb +3 -9
  160. data/lib/active_admin/dynamic_setting.rb +39 -0
  161. data/lib/active_admin/dynamic_settings_node.rb +29 -0
  162. data/lib/active_admin/engine.rb +16 -7
  163. data/lib/active_admin/error.rb +5 -4
  164. data/lib/active_admin/filters/active.rb +2 -1
  165. data/lib/active_admin/filters/active_filter.rb +12 -11
  166. data/lib/active_admin/filters/active_sidebar.rb +8 -30
  167. data/lib/active_admin/filters/dsl.rb +1 -0
  168. data/lib/active_admin/filters/forms.rb +13 -9
  169. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  170. data/lib/active_admin/filters/resource_extension.rb +30 -5
  171. data/lib/active_admin/filters.rb +8 -7
  172. data/lib/active_admin/form_builder.rb +110 -70
  173. data/lib/active_admin/generators/boilerplate.rb +13 -4
  174. data/lib/active_admin/helpers/collection.rb +2 -0
  175. data/lib/active_admin/helpers/i18n.rb +1 -0
  176. data/lib/active_admin/helpers/optional_display.rb +3 -2
  177. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  178. data/lib/active_admin/helpers/scope_chain.rb +2 -0
  179. data/lib/active_admin/inputs/datepicker_input.rb +10 -2
  180. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  181. data/lib/active_admin/inputs/filters/base.rb +2 -1
  182. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  183. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  184. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  185. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  186. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  187. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  188. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  189. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  190. data/lib/active_admin/inputs.rb +1 -0
  191. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  192. data/lib/active_admin/localizers.rb +2 -1
  193. data/lib/active_admin/menu.rb +9 -11
  194. data/lib/active_admin/menu_collection.rb +1 -0
  195. data/lib/active_admin/menu_item.rb +11 -38
  196. data/lib/active_admin/namespace.rb +33 -20
  197. data/lib/active_admin/namespace_settings.rb +127 -0
  198. data/lib/active_admin/order_clause.rb +3 -2
  199. data/lib/active_admin/orm/active_record/comments/comment.rb +5 -4
  200. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  201. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  202. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  203. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +30 -24
  204. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  205. data/lib/active_admin/orm/active_record/comments.rb +35 -23
  206. data/lib/active_admin/orm/active_record.rb +2 -1
  207. data/lib/active_admin/orm/mongoid.rb +1 -0
  208. data/lib/active_admin/page.rb +2 -1
  209. data/lib/active_admin/page_controller.rb +1 -0
  210. data/lib/active_admin/page_dsl.rb +2 -1
  211. data/lib/active_admin/page_presenter.rb +3 -1
  212. data/lib/active_admin/pundit_adapter.rb +73 -16
  213. data/lib/active_admin/resource/action_items.rb +12 -6
  214. data/lib/active_admin/resource/attributes.rb +9 -5
  215. data/lib/active_admin/resource/belongs_to.rb +9 -3
  216. data/lib/active_admin/resource/controllers.rb +2 -1
  217. data/lib/active_admin/resource/includes.rb +1 -0
  218. data/lib/active_admin/resource/menu.rb +6 -5
  219. data/lib/active_admin/resource/model.rb +16 -0
  220. data/lib/active_admin/resource/naming.rb +6 -5
  221. data/lib/active_admin/resource/ordering.rb +1 -0
  222. data/lib/active_admin/resource/page_presenters.rb +1 -0
  223. data/lib/active_admin/resource/pagination.rb +1 -0
  224. data/lib/active_admin/resource/routes.rb +26 -14
  225. data/lib/active_admin/resource/scope_to.rb +8 -7
  226. data/lib/active_admin/resource/scopes.rb +4 -3
  227. data/lib/active_admin/resource/sidebars.rb +3 -2
  228. data/lib/active_admin/resource.rb +37 -22
  229. data/lib/active_admin/resource_collection.rb +3 -2
  230. data/lib/active_admin/resource_controller/action_builder.rb +11 -0
  231. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  232. data/lib/active_admin/resource_controller/decorators.rb +10 -31
  233. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  234. data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
  235. data/lib/active_admin/resource_controller/scoping.rb +2 -1
  236. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  237. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  238. data/lib/active_admin/resource_controller.rb +14 -10
  239. data/lib/active_admin/resource_dsl.rb +16 -28
  240. data/lib/active_admin/router.rb +91 -84
  241. data/lib/active_admin/scope.rb +20 -11
  242. data/lib/active_admin/settings_node.rb +20 -0
  243. data/lib/active_admin/sidebar_section.rb +4 -1
  244. data/lib/active_admin/version.rb +2 -1
  245. data/lib/active_admin/view_factory.rb +18 -17
  246. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  247. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  248. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
  249. data/lib/active_admin/view_helpers/display_helper.rb +25 -8
  250. data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
  251. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  252. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  253. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  254. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
  255. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  256. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  257. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  258. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  259. data/lib/active_admin/view_helpers.rb +2 -1
  260. data/lib/active_admin/views/action_items.rb +1 -0
  261. data/lib/active_admin/views/components/active_admin_form.rb +14 -8
  262. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  263. data/lib/active_admin/views/components/attributes_table.rb +9 -8
  264. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  265. data/lib/active_admin/views/components/columns.rb +1 -0
  266. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  267. data/lib/active_admin/views/components/index_list.rb +4 -3
  268. data/lib/active_admin/views/components/menu.rb +33 -0
  269. data/lib/active_admin/views/components/menu_item.rb +59 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +22 -20
  271. data/lib/active_admin/views/components/panel.rb +2 -1
  272. data/lib/active_admin/views/components/scopes.rb +18 -8
  273. data/lib/active_admin/views/components/sidebar.rb +14 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +1 -3
  275. data/lib/active_admin/views/components/site_title.rb +7 -7
  276. data/lib/active_admin/views/components/status_tag.rb +14 -26
  277. data/lib/active_admin/views/components/table_for.rb +22 -29
  278. data/lib/active_admin/views/components/tabs.rb +18 -5
  279. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  280. data/lib/active_admin/views/footer.rb +6 -8
  281. data/lib/active_admin/views/header.rb +4 -15
  282. data/lib/active_admin/views/index_as_block.rb +1 -0
  283. data/lib/active_admin/views/index_as_blog.rb +3 -2
  284. data/lib/active_admin/views/index_as_grid.rb +27 -26
  285. data/lib/active_admin/views/index_as_table.rb +34 -25
  286. data/lib/active_admin/views/pages/base.rb +44 -60
  287. data/lib/active_admin/views/pages/form.rb +1 -0
  288. data/lib/active_admin/views/pages/index.rb +16 -13
  289. data/lib/active_admin/views/pages/layout.rb +1 -0
  290. data/lib/active_admin/views/pages/page.rb +1 -0
  291. data/lib/active_admin/views/pages/show.rb +1 -0
  292. data/lib/active_admin/views/tabbed_navigation.rb +5 -59
  293. data/lib/active_admin/views/title_bar.rb +2 -1
  294. data/lib/active_admin/views.rb +2 -1
  295. data/lib/active_admin.rb +68 -63
  296. data/lib/activeadmin.rb +2 -1
  297. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  298. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  299. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  300. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  301. data/lib/generators/active_admin/install/install_generator.rb +19 -8
  302. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  303. data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
  304. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  305. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  306. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  308. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  309. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  310. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  311. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  312. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  313. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  314. data/lib/ransack_ext.rb +10 -9
  315. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  316. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  317. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  318. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  319. metadata +126 -558
  320. data/.github/ISSUE_TEMPLATE.md +0 -20
  321. data/.gitignore +0 -49
  322. data/.mdlrc +0 -1
  323. data/.rubocop.yml +0 -76
  324. data/.simplecov +0 -13
  325. data/.travis.yml +0 -51
  326. data/.yardopts +0 -7
  327. data/Gemfile +0 -58
  328. data/Rakefile +0 -54
  329. data/activeadmin.gemspec +0 -32
  330. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  331. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  332. data/app/assets/images/active_admin/orderable.png +0 -0
  333. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  334. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  335. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  336. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  337. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  338. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  339. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  340. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  341. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  342. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  343. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  344. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  345. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  346. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  347. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  348. data/codecov.yml +0 -25
  349. data/config/i18n-tasks.yml +0 -26
  350. data/config/mdl_style.rb +0 -9
  351. data/cucumber.yml +0 -3
  352. data/features/action_item.feature +0 -73
  353. data/features/authorization.feature +0 -64
  354. data/features/authorization_cancan.feature +0 -52
  355. data/features/authorization_pundit.feature +0 -37
  356. data/features/belongs_to.feature +0 -124
  357. data/features/breadcrumb.feature +0 -75
  358. data/features/comments/commenting.feature +0 -178
  359. data/features/comments/viewing_index.feature +0 -19
  360. data/features/create_another.feature +0 -55
  361. data/features/dashboard.feature +0 -16
  362. data/features/decorators.feature +0 -43
  363. data/features/development_reloading.feature +0 -28
  364. data/features/edit_page.feature +0 -116
  365. data/features/favicon.feature +0 -20
  366. data/features/first_boot.feature +0 -16
  367. data/features/footer.feature +0 -28
  368. data/features/global_navigation.feature +0 -29
  369. data/features/i18n.feature +0 -55
  370. data/features/index/batch_actions.feature +0 -218
  371. data/features/index/filters.feature +0 -250
  372. data/features/index/format_as_csv.feature +0 -220
  373. data/features/index/formats.feature +0 -88
  374. data/features/index/index_as_block.feature +0 -15
  375. data/features/index/index_as_blog.feature +0 -69
  376. data/features/index/index_as_grid.feature +0 -45
  377. data/features/index/index_as_table.feature +0 -291
  378. data/features/index/index_blank_slate.feature +0 -83
  379. data/features/index/index_parameters.feature +0 -75
  380. data/features/index/index_scope_to.feature +0 -56
  381. data/features/index/index_scopes.feature +0 -285
  382. data/features/index/page_title.feature +0 -41
  383. data/features/index/pagination.feature +0 -63
  384. data/features/index/switch_index_view.feature +0 -73
  385. data/features/menu.feature +0 -72
  386. data/features/meta_tags.feature +0 -21
  387. data/features/new_page.feature +0 -136
  388. data/features/registering_assets.feature +0 -38
  389. data/features/registering_pages.feature +0 -237
  390. data/features/registering_resources.feature +0 -33
  391. data/features/renamed_resource.feature +0 -30
  392. data/features/root_to.feature +0 -17
  393. data/features/show/attributes_table_title.feature +0 -54
  394. data/features/show/columns.feature +0 -40
  395. data/features/show/default_content.feature +0 -44
  396. data/features/show/page_title.feature +0 -58
  397. data/features/show/tabs.feature +0 -33
  398. data/features/sidebar_sections.feature +0 -210
  399. data/features/site_title.feature +0 -47
  400. data/features/specifying_actions.feature +0 -118
  401. data/features/step_definitions/action_item_steps.rb +0 -7
  402. data/features/step_definitions/action_link_steps.rb +0 -19
  403. data/features/step_definitions/additional_web_steps.rb +0 -81
  404. data/features/step_definitions/asset_steps.rb +0 -15
  405. data/features/step_definitions/attribute_steps.rb +0 -18
  406. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  407. data/features/step_definitions/batch_action_steps.rb +0 -81
  408. data/features/step_definitions/blog_steps.rb +0 -3
  409. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  410. data/features/step_definitions/column_steps.rb +0 -8
  411. data/features/step_definitions/comment_steps.rb +0 -32
  412. data/features/step_definitions/configuration_steps.rb +0 -100
  413. data/features/step_definitions/dashboard_steps.rb +0 -15
  414. data/features/step_definitions/factory_steps.rb +0 -35
  415. data/features/step_definitions/filter_steps.rb +0 -47
  416. data/features/step_definitions/flash_steps.rb +0 -11
  417. data/features/step_definitions/footer_steps.rb +0 -11
  418. data/features/step_definitions/format_steps.rb +0 -56
  419. data/features/step_definitions/i18n_steps.rb +0 -11
  420. data/features/step_definitions/index_scope_steps.rb +0 -29
  421. data/features/step_definitions/index_views_steps.rb +0 -3
  422. data/features/step_definitions/layout_steps.rb +0 -3
  423. data/features/step_definitions/member_link_steps.rb +0 -7
  424. data/features/step_definitions/menu_steps.rb +0 -11
  425. data/features/step_definitions/meta_tag_steps.rb +0 -3
  426. data/features/step_definitions/pagination_steps.rb +0 -15
  427. data/features/step_definitions/sidebar_steps.rb +0 -11
  428. data/features/step_definitions/site_title_steps.rb +0 -17
  429. data/features/step_definitions/tab_steps.rb +0 -8
  430. data/features/step_definitions/table_steps.rb +0 -116
  431. data/features/step_definitions/user_steps.rb +0 -52
  432. data/features/step_definitions/web_steps.rb +0 -86
  433. data/features/sti_resource.feature +0 -65
  434. data/features/strong_parameters.feature +0 -69
  435. data/features/support/env.rb +0 -122
  436. data/features/support/paths.rb +0 -73
  437. data/features/support/regular_env.rb +0 -7
  438. data/features/support/reload_env.rb +0 -7
  439. data/features/support/selectors.rb +0 -45
  440. data/features/users/logging_in.feature +0 -36
  441. data/features/users/logging_out.feature +0 -13
  442. data/features/users/resetting_password.feature +0 -34
  443. data/gemfiles/rails_42.gemfile +0 -10
  444. data/gemfiles/rails_50.gemfile +0 -10
  445. data/gemfiles/rails_51.gemfile +0 -10
  446. data/gemfiles/rails_52.gemfile +0 -11
  447. data/lib/active_admin/event.rb +0 -24
  448. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  449. data/lib/active_admin/helpers/settings.rb +0 -114
  450. data/lib/active_admin/reloader.rb +0 -25
  451. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  452. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  453. data/spec/bug_report_templates_spec.rb +0 -26
  454. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  455. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  456. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  457. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  458. data/spec/javascripts/fixtures/flashes.html +0 -2
  459. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  460. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  461. data/spec/javascripts/support/jasmine.yml +0 -74
  462. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  463. data/spec/rails_helper.rb +0 -59
  464. data/spec/requests/default_namespace_spec.rb +0 -81
  465. data/spec/requests/memory_spec.rb +0 -25
  466. data/spec/requests/stylesheets_spec.rb +0 -18
  467. data/spec/spec_helper.rb +0 -1
  468. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  469. data/spec/support/active_admin_request_helpers.rb +0 -39
  470. data/spec/support/rails_template.rb +0 -153
  471. data/spec/support/rails_template_with_data.rb +0 -327
  472. data/spec/support/templates/admin/stores.rb +0 -7
  473. data/spec/support/templates/en.yml +0 -8
  474. data/spec/support/templates/manifest.js +0 -3
  475. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  476. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  477. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  478. data/spec/support/templates/policies/application_policy.rb +0 -44
  479. data/spec/support/templates/policies/category_policy.rb +0 -7
  480. data/spec/support/templates/policies/post_policy.rb +0 -15
  481. data/spec/support/templates/policies/store_policy.rb +0 -11
  482. data/spec/support/templates/policies/user_policy.rb +0 -11
  483. data/spec/support/templates/post_decorator.rb +0 -24
  484. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  485. data/spec/unit/action_builder_spec.rb +0 -158
  486. data/spec/unit/active_admin_spec.rb +0 -11
  487. data/spec/unit/application_spec.rb +0 -184
  488. data/spec/unit/asset_registration_spec.rb +0 -81
  489. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  490. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  491. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  492. data/spec/unit/auto_link_spec.rb +0 -93
  493. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  494. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  495. data/spec/unit/belongs_to_spec.rb +0 -76
  496. data/spec/unit/cancan_adapter_spec.rb +0 -43
  497. data/spec/unit/comments_spec.rb +0 -176
  498. data/spec/unit/component_spec.rb +0 -18
  499. data/spec/unit/config_shared_examples.rb +0 -59
  500. data/spec/unit/controller_filters_spec.rb +0 -41
  501. data/spec/unit/csv_builder_spec.rb +0 -313
  502. data/spec/unit/dependency_spec.rb +0 -135
  503. data/spec/unit/devise_spec.rb +0 -110
  504. data/spec/unit/dsl_spec.rb +0 -120
  505. data/spec/unit/filters/active_filter_spec.rb +0 -189
  506. data/spec/unit/filters/active_spec.rb +0 -24
  507. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  508. data/spec/unit/filters/resource_spec.rb +0 -128
  509. data/spec/unit/form_builder_spec.rb +0 -990
  510. data/spec/unit/generators/install_spec.rb +0 -31
  511. data/spec/unit/helpers/collection_spec.rb +0 -68
  512. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  513. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  514. data/spec/unit/helpers/settings_spec.rb +0 -30
  515. data/spec/unit/i18n_spec.rb +0 -29
  516. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  517. data/spec/unit/menu_collection_spec.rb +0 -62
  518. data/spec/unit/menu_item_spec.rb +0 -141
  519. data/spec/unit/menu_spec.rb +0 -71
  520. data/spec/unit/namespace/authorization_spec.rb +0 -27
  521. data/spec/unit/namespace/register_page_spec.rb +0 -99
  522. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  523. data/spec/unit/namespace_spec.rb +0 -124
  524. data/spec/unit/order_clause_spec.rb +0 -81
  525. data/spec/unit/page_controller_spec.rb +0 -5
  526. data/spec/unit/page_spec.rb +0 -128
  527. data/spec/unit/pretty_format_spec.rb +0 -82
  528. data/spec/unit/pundit_adapter_spec.rb +0 -98
  529. data/spec/unit/resource/action_items_spec.rb +0 -69
  530. data/spec/unit/resource/attributes_spec.rb +0 -49
  531. data/spec/unit/resource/includes_spec.rb +0 -21
  532. data/spec/unit/resource/menu_spec.rb +0 -18
  533. data/spec/unit/resource/naming_spec.rb +0 -122
  534. data/spec/unit/resource/ordering_spec.rb +0 -35
  535. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  536. data/spec/unit/resource/pagination_spec.rb +0 -38
  537. data/spec/unit/resource/routes_spec.rb +0 -125
  538. data/spec/unit/resource/scopes_spec.rb +0 -50
  539. data/spec/unit/resource/sidebars_spec.rb +0 -43
  540. data/spec/unit/resource_collection_spec.rb +0 -175
  541. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  542. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  543. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  544. data/spec/unit/resource_controller_spec.rb +0 -273
  545. data/spec/unit/resource_registration_spec.rb +0 -61
  546. data/spec/unit/resource_spec.rb +0 -320
  547. data/spec/unit/routing_spec.rb +0 -211
  548. data/spec/unit/scope_spec.rb +0 -209
  549. data/spec/unit/settings_spec.rb +0 -117
  550. data/spec/unit/view_factory_spec.rb +0 -19
  551. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  552. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  553. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  554. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  555. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  556. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  557. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  558. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  559. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  560. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  561. data/spec/unit/views/components/columns_spec.rb +0 -187
  562. data/spec/unit/views/components/index_list_spec.rb +0 -49
  563. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  564. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  565. data/spec/unit/views/components/panel_spec.rb +0 -58
  566. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  567. data/spec/unit/views/components/site_title_spec.rb +0 -76
  568. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  569. data/spec/unit/views/components/table_for_spec.rb +0 -436
  570. data/spec/unit/views/components/tabs_spec.rb +0 -67
  571. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  572. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  573. data/spec/unit/views/pages/form_spec.rb +0 -54
  574. data/spec/unit/views/pages/index_spec.rb +0 -60
  575. data/spec/unit/views/pages/layout_spec.rb +0 -59
  576. data/spec/unit/views/pages/show_spec.rb +0 -32
  577. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  578. data/tasks/docs.rake +0 -64
  579. data/tasks/lint.rake +0 -21
  580. data/tasks/local.rake +0 -25
  581. data/tasks/parallel_tests.rake +0 -66
  582. data/tasks/test.rake +0 -29
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module BatchActions
3
4
  module Controller
@@ -5,10 +6,10 @@ module ActiveAdmin
5
6
  # Controller action that is called when submitting the batch action form
6
7
  def batch_action
7
8
  if action_present?
8
- selection = params[:collection_selection] || []
9
- inputs = JSON.parse params[:batch_action_inputs] || '{}'
10
- valid_keys = render_in_context(self, current_batch_action.inputs).try(:keys)
11
- inputs = inputs.with_indifferent_access.slice *valid_keys
9
+ selection = params[:collection_selection] || []
10
+ inputs = JSON.parse params[:batch_action_inputs] || "{}"
11
+ valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
12
+ inputs = inputs.with_indifferent_access.slice *valid_keys
12
13
  instance_exec selection, inputs, &current_batch_action.block
13
14
  else
14
15
  raise "Couldn't find batch action \"#{params[:batch_action]}\""
@@ -22,7 +23,7 @@ module ActiveAdmin
22
23
  end
23
24
 
24
25
  def current_batch_action
25
- active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
26
+ active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
26
27
  end
27
28
 
28
29
  COLLECTION_APPLIES = [
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  module BatchActions
@@ -57,21 +58,22 @@ module ActiveAdmin
57
58
  def add_default_batch_action
58
59
  destroy_options = {
59
60
  priority: 100,
60
- confirm: proc{ I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
61
- if: proc{ controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
61
+ confirm: proc { I18n.t("active_admin.batch_actions.delete_confirmation", plural_model: active_admin_config.plural_resource_label.downcase) },
62
+ if: proc { controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
62
63
  }
63
64
 
64
- add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
65
+ add_batch_action :destroy, proc { I18n.t("active_admin.delete") }, destroy_options do |selected_ids|
65
66
  batch_action_collection.find(selected_ids).each do |record|
66
67
  authorize! ActiveAdmin::Auth::DESTROY, record
67
68
  destroy_resource(record)
68
69
  end
69
70
 
70
71
  redirect_to active_admin_config.route_collection_path(params),
71
- notice: I18n.t("active_admin.batch_actions.succesfully_destroyed",
72
- count: selected_ids.count,
73
- model: active_admin_config.resource_label.downcase,
74
- plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
72
+ notice: I18n.t(
73
+ "active_admin.batch_actions.succesfully_destroyed",
74
+ count: selected_ids.count,
75
+ model: active_admin_config.resource_label.downcase,
76
+ plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
75
77
  end
76
78
  end
77
79
 
@@ -84,7 +86,7 @@ module ActiveAdmin
84
86
 
85
87
  attr_reader :block, :title, :sym
86
88
 
87
- DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t 'active_admin.batch_actions.default_confirmation' }
89
+ DEFAULT_CONFIRM_MESSAGE = proc { I18n.t "active_admin.batch_actions.default_confirmation" }
88
90
 
89
91
  # Create a Batch Action
90
92
  #
@@ -112,7 +114,11 @@ module ActiveAdmin
112
114
  # => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
113
115
  #
114
116
  def initialize(sym, title, options = {}, &block)
115
- @sym, @title, @options, @block, @confirm = sym, title, options, block, options[:confirm]
117
+ @sym = sym
118
+ @title = title
119
+ @options = options
120
+ @block = block
121
+ @confirm = options[:confirm]
116
122
  @block ||= proc {}
117
123
  end
118
124
 
@@ -133,7 +139,7 @@ module ActiveAdmin
133
139
  # Returns the display if block. If the block was not explicitly defined
134
140
  # a default block always returning true will be returned.
135
141
  def display_if_block
136
- @options[:if] || proc{ true }
142
+ @options[:if] || proc { true }
137
143
  end
138
144
 
139
145
  # Used for sorting
@@ -1,4 +1,5 @@
1
- require 'active_admin/component'
1
+ # frozen_string_literal: true
2
+ require "active_admin/component"
2
3
 
3
4
  module ActiveAdmin
4
5
  module BatchActions
@@ -16,7 +17,7 @@ module ActiveAdmin
16
17
  # batch_action => name of the specific action called
17
18
  # batch_action_inputs => a JSON string of any requested confirmation values
18
19
  text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
19
- input name: :batch_action, id: :batch_action, type: :hidden
20
+ input name: :batch_action, id: :batch_action, type: :hidden
20
21
  input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
21
22
 
22
23
  super(options)
@@ -30,7 +31,7 @@ module ActiveAdmin
30
31
  private
31
32
 
32
33
  def closing_form_tag
33
- '</form>'.html_safe
34
+ "</form>".html_safe
34
35
  end
35
36
 
36
37
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/component'
1
+ # frozen_string_literal: true
2
+ require "active_admin/component"
2
3
 
3
4
  module ActiveAdmin
4
5
  module BatchActions
@@ -31,17 +32,17 @@ module ActiveAdmin
31
32
  confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
32
33
 
33
34
  options = {
34
- :class => "batch_action",
35
- "data-action" => batch_action.sym,
36
- "data-confirm" => confirmation_text,
37
- "data-inputs" => render_in_context(self, batch_action.inputs).to_json
35
+ class: "batch_action",
36
+ "data-action": batch_action.sym,
37
+ "data-confirm": confirmation_text,
38
+ "data-inputs": render_in_context(self, batch_action.inputs).to_json
38
39
  }
39
40
 
40
41
  default_title = render_or_call_method_or_proc_on(self, batch_action.title)
41
42
  title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
42
43
  label = I18n.t("active_admin.batch_actions.action_label", title: title)
43
44
 
44
- item label, "#", options
45
+ item label, "#", **options
45
46
  end
46
47
  end
47
48
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/component'
1
+ # frozen_string_literal: true
2
+ require "active_admin/component"
2
3
 
3
4
  module ActiveAdmin
4
5
  module BatchActions
@@ -7,7 +8,7 @@ module ActiveAdmin
7
8
  class ResourceSelectionToggleCell < ActiveAdmin::Component
8
9
  builder_method :resource_selection_toggle_cell
9
10
 
10
- def build(label_text = '')
11
+ def build(label_text = "")
11
12
  label do
12
13
  input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
13
14
  text_node label_text if label_text.present?
@@ -30,7 +31,7 @@ module ActiveAdmin
30
31
 
31
32
  def build
32
33
  super(id: "collection_selection_toggle_panel")
33
- resource_selection_toggle_cell(I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)"))
34
+ resource_selection_toggle_cell(I18n.t("active_admin.batch_actions.selection_toggle_explanation", default: "(Toggle Selection)"))
34
35
  end
35
36
  end
36
37
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ActiveAdmin.before_load do |app|
2
3
  require "active_admin/batch_actions/resource_extension"
3
4
  require "active_admin/batch_actions/controller"
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Callbacks
3
4
  extend ActiveSupport::Concern
@@ -75,7 +76,7 @@ module ActiveAdmin
75
76
 
76
77
  # def run_create_callbacks
77
78
  define_method "run_#{name}_callbacks" do |*args, &block|
78
- self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
79
+ self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
79
80
  value = block.try :call
80
81
  self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
82
  return value
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  unless ActiveAdmin::Dependency.cancan? || ActiveAdmin::Dependency.cancancan?
2
3
  ActiveAdmin::Dependency.cancan!
3
4
  end
4
5
 
5
- require 'cancan'
6
+ require "cancan"
6
7
 
7
8
  # Add a setting to the application to configure the ability
8
9
  ActiveAdmin::Application.inheritable_setting :cancan_ability_class, "Ability"
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ # This class decorates a collection of objects delegating
4
+ # mehods to behave like an Array. It's used to decouple ActiveAdmin
5
+ # from Draper and thus being able to use PORO decorators as well.
6
+ #
7
+ # It's implementation is heavily based on the Draper::CollectionDecorator
8
+ # https://github.com/drapergem/draper/blob/aaa06bd2f1e219838b241a5534e7ca513edd1fe2/lib/draper/collection_decorator.rb
9
+ class CollectionDecorator
10
+ # @return the collection being decorated.
11
+ attr_reader :object
12
+
13
+ # @return [Class] the decorator class used to decorate each item, as set by {#initialize}.
14
+ attr_reader :decorator_class
15
+
16
+ array_methods = Array.instance_methods - Object.instance_methods
17
+ delegate :==, :as_json, *array_methods, to: :decorated_collection
18
+
19
+ def initialize(object, with:)
20
+ @object = object
21
+ @decorator_class = with
22
+ end
23
+
24
+ class << self
25
+ alias_method :decorate, :new
26
+ end
27
+
28
+ def decorated_collection
29
+ @decorated_collection ||= object.map { |item| decorator_class.new(item) }
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Component < Arbre::Component
3
4
 
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class ControllerAction
3
4
  attr_reader :name
4
5
  def initialize(name, options = {})
5
- @name, @options = name, options
6
+ @name = name
7
+ @options = options
6
8
  end
7
9
 
8
10
  def http_verb
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  # CSVBuilder stores CSV configuration
3
4
  #
@@ -32,7 +33,9 @@ module ActiveAdmin
32
33
 
33
34
  def initialize(options = {}, &block)
34
35
  @resource = options.delete(:resource)
35
- @columns, @options, @block = [], options, block
36
+ @columns = []
37
+ @options = ActiveAdmin.application.csv_options.merge options
38
+ @block = block
36
39
  end
37
40
 
38
41
  def column(name, options = {}, &block)
@@ -40,26 +43,19 @@ module ActiveAdmin
40
43
  end
41
44
 
42
45
  def build(controller, csv)
43
- @collection = controller.send :find_collection, except: :pagination
44
- columns = exec_columns controller.view_context
45
- options = ActiveAdmin.application.csv_options.merge self.options
46
- bom = options.delete :byte_order_mark
46
+ columns = exec_columns controller.view_context
47
+ bom = options[:byte_order_mark]
47
48
  column_names = options.delete(:column_names) { true }
48
- csv_options = options.except :encoding_options, :humanize_name
49
+ csv_options = options.except :encoding_options, :humanize_name, :byte_order_mark
49
50
 
50
51
  csv << bom if bom
51
52
 
52
53
  if column_names
53
- csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
54
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, **csv_options)
54
55
  end
55
56
 
56
- ActiveRecord::Base.uncached do
57
- (1..paginated_collection.total_pages).each do |page|
58
- paginated_collection(page).each do |resource|
59
- resource = controller.send :apply_decorator, resource
60
- csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
61
- end
62
- end
57
+ controller.send(:in_paginated_batches) do |resource|
58
+ csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
63
59
  end
64
60
 
65
61
  csv
@@ -80,7 +76,11 @@ module ActiveAdmin
80
76
 
81
77
  def encode(content, options)
82
78
  if options[:encoding]
83
- content.to_s.encode options[:encoding], options[:encoding_options]
79
+ if options[:encoding_options]
80
+ content.to_s.encode options[:encoding], **options[:encoding_options]
81
+ else
82
+ content.to_s.encode options[:encoding]
83
+ end
84
84
  else
85
85
  content
86
86
  end
@@ -119,13 +119,5 @@ module ActiveAdmin
119
119
  def column_transitive_options
120
120
  @column_transitive_options ||= @options.slice(*COLUMN_TRANSITIVE_OPTIONS)
121
121
  end
122
-
123
- def paginated_collection(page_no = 1)
124
- @collection.public_send(Kaminari.config.page_method_name, page_no).per(batch_size)
125
- end
126
-
127
- def batch_size
128
- 1000
129
- end
130
122
  end
131
123
  end
@@ -1,27 +1,28 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Dependency
3
4
  module Requirements
4
- DEVISE = '>= 3.2', '< 5'
5
+ DEVISE = ">= 4.0", "< 5"
5
6
  end
6
7
 
7
8
  # Provides a clean interface to check for gem dependencies at runtime.
8
9
  #
9
- # ActiveAdmin::Dependency.draper
10
- # => #<ActiveAdmin::Dependency::Matcher for draper 1.2.1>
10
+ # ActiveAdmin::Dependency.rails
11
+ # => #<ActiveAdmin::Dependency::Matcher for rails 6.0.3.2>
11
12
  #
12
- # ActiveAdmin::Dependency.draper?
13
+ # ActiveAdmin::Dependency.rails?
13
14
  # => true
14
15
  #
15
- # ActiveAdmin::Dependency.draper? '>= 1.5.0'
16
+ # ActiveAdmin::Dependency.rails? '>= 6.1'
16
17
  # => false
17
18
  #
18
- # ActiveAdmin::Dependency.draper? '= 1.2.1'
19
+ # ActiveAdmin::Dependency.rails? '= 6.0.3.2'
19
20
  # => true
20
21
  #
21
- # ActiveAdmin::Dependency.draper? '~> 1.2.0'
22
+ # ActiveAdmin::Dependency.rails? '~> 6.0.3'
22
23
  # => true
23
24
  #
24
- # ActiveAdmin::Dependency.rails? '>= 4.2.7', '<= 5.0.2'
25
+ # ActiveAdmin::Dependency.rails? '>= 6.0.3', '<= 6.1.0'
25
26
  # => true
26
27
  #
27
28
  # ActiveAdmin::Dependency.rails! '5'
@@ -42,9 +43,9 @@ module ActiveAdmin
42
43
  # => false
43
44
  #
44
45
  def self.method_missing(name, *args)
45
- if name[-1] == '?'
46
+ if name[-1] == "?"
46
47
  Matcher.new(name[0..-2]).match? args
47
- elsif name[-1] == '!'
48
+ elsif name[-1] == "!"
48
49
  Matcher.new(name[0..-2]).match! args
49
50
  else
50
51
  Matcher.new name.to_s
@@ -55,8 +56,8 @@ module ActiveAdmin
55
56
  Matcher.new name.to_s
56
57
  end
57
58
 
58
- def self.rails5?
59
- rails >= '5.x'
59
+ def self.supports_zeitwerk?
60
+ RUBY_ENGINE != "jruby"
60
61
  end
61
62
 
62
63
  class Matcher
@@ -91,73 +92,9 @@ module ActiveAdmin
91
92
  end
92
93
 
93
94
  def inspect
94
- info = spec ? "#{spec.name} #{spec.version}" : '(missing)'
95
+ info = spec ? "#{spec.name} #{spec.version}" : "(missing)"
95
96
  "<ActiveAdmin::Dependency::Matcher for #{info}>"
96
97
  end
97
-
98
- def adapter
99
- @adapter ||= Adapter.const_get(@name.camelize).new self
100
- end
101
-
102
- def method_missing(method, *args, &block)
103
- if respond_to_missing?(method)
104
- adapter.send method, *args, &block
105
- else
106
- super
107
- end
108
- end
109
-
110
- def respond_to_missing?(method, include_private = false)
111
- adapter.respond_to?(method) || super
112
- rescue NameError
113
- # 🐾
114
- end
115
- end
116
-
117
- # Dependency adapters provide an easy way to wrap the conditional logic
118
- # necessary to support multiple versions of a gem.
119
- #
120
- # ActiveAdmin::Dependency.rails.adapter.parameterize 'a b'
121
- # => 'a_b'
122
- #
123
- # ActiveAdmin::Dependency.rails.parameterize 'a b'
124
- # => 'a_b'
125
- #
126
- # ActiveAdmin::Dependency.devise.adapter
127
- # -> NameError: uninitialized constant ActiveAdmin::Dependency::Adapter::Devise
128
- #
129
- module Adapter
130
- class Base
131
- def initialize(version)
132
- @version = version
133
- end
134
- end
135
-
136
- class Rails < Base
137
- def parameterize(string)
138
- if Dependency.rails5?
139
- string.parameterize separator: '_'
140
- else
141
- string.parameterize '_'
142
- end
143
- end
144
-
145
- def redirect_back(controller, fallback_location)
146
- controller.instance_exec do
147
- if Dependency.rails5?
148
- redirect_back fallback_location: fallback_location
149
- elsif controller.request.headers.key? 'HTTP_REFERER'
150
- redirect_to :back
151
- else
152
- redirect_to fallback_location
153
- end
154
- end
155
- end
156
-
157
- def render_key
158
- Dependency.rails5? ? :body : :text
159
- end
160
- end
161
98
  end
162
99
 
163
100
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Deprecation
3
4
  module_function
@@ -6,30 +7,5 @@ module ActiveAdmin
6
7
  ActiveSupport::Deprecation.warn "Active Admin: #{message}", callstack
7
8
  end
8
9
 
9
- # Deprecate a method.
10
- #
11
- # @param [Module] klass the Class or Module to deprecate the method on
12
- # @param [Symbol] method the method to deprecate
13
- # @param [String] message the message to display to the end user
14
- #
15
- # Example:
16
- #
17
- # class MyClass
18
- # def my_method
19
- # # ...
20
- # end
21
- # ActiveAdmin::Deprecation.deprecate self, :my_method,
22
- # "MyClass#my_method is being removed in the next release"
23
- # end
24
- #
25
- def deprecate(klass, method, message)
26
- klass.send :define_method, "deprecated_#{method}", klass.instance_method(method)
27
-
28
- klass.send :define_method, method do |*args|
29
- ActiveAdmin::Deprecation.warn "#{message}", caller
30
- send "deprecated_#{method}", *args
31
- end
32
- end
33
-
34
10
  end
35
11
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  ActiveAdmin::Dependency.devise! ActiveAdmin::Dependency::Requirements::DEVISE
2
3
 
3
- require 'devise'
4
+ require "devise"
4
5
 
5
6
  module ActiveAdmin
6
7
  module Devise
@@ -9,7 +10,7 @@ module ActiveAdmin
9
10
  {
10
11
  path: ActiveAdmin.application.default_namespace || "/",
11
12
  controllers: ActiveAdmin::Devise.controllers,
12
- path_names: { sign_in: 'login', sign_out: "logout" },
13
+ path_names: { sign_in: "login", sign_out: "logout" },
13
14
  sign_out_via: [*::Devise.sign_out_via, ActiveAdmin.application.logout_link_method].uniq
14
15
  }
15
16
  end
@@ -27,14 +28,14 @@ module ActiveAdmin
27
28
  module Controller
28
29
  extend ::ActiveSupport::Concern
29
30
  included do
30
- layout 'active_admin_logged_out'
31
+ layout "active_admin_logged_out"
31
32
  helper ::ActiveAdmin::ViewHelpers
32
33
  end
33
34
 
34
35
  # Redirect to the default namespace on logout
35
36
  def root_path
36
37
  namespace = ActiveAdmin.application.default_namespace.presence
37
- root_path_method = [namespace, :root_path].compact.join('_')
38
+ root_path_method = [namespace, :root_path].compact.join("_")
38
39
 
39
40
  path = if Helpers::Routes.respond_to? root_path_method
40
41
  Helpers::Routes.send root_path_method
@@ -45,29 +46,39 @@ module ActiveAdmin
45
46
 
46
47
  # NOTE: `relative_url_root` is deprecated by Rails.
47
48
  # Remove prefix here if it is removed completely.
48
- prefix = Rails.configuration.action_controller[:relative_url_root] || ''
49
+ prefix = Rails.configuration.action_controller[:relative_url_root] || ""
49
50
  prefix + path
50
51
  end
51
52
  end
52
53
 
53
54
  class SessionsController < ::Devise::SessionsController
54
55
  include ::ActiveAdmin::Devise::Controller
56
+
57
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
55
58
  end
56
59
 
57
60
  class PasswordsController < ::Devise::PasswordsController
58
61
  include ::ActiveAdmin::Devise::Controller
62
+
63
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
59
64
  end
60
65
 
61
66
  class UnlocksController < ::Devise::UnlocksController
62
67
  include ::ActiveAdmin::Devise::Controller
68
+
69
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
63
70
  end
64
71
 
65
72
  class RegistrationsController < ::Devise::RegistrationsController
66
73
  include ::ActiveAdmin::Devise::Controller
74
+
75
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
67
76
  end
68
77
 
69
78
  class ConfirmationsController < ::Devise::ConfirmationsController
70
79
  include ::ActiveAdmin::Devise::Controller
80
+
81
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
71
82
  end
72
83
 
73
84
  def self.controllers_for_filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  # The Active Admin DSL. This class is where all the registration blocks
@@ -83,14 +84,7 @@ module ActiveAdmin
83
84
  # this action item on.
84
85
  # :except: A single or array of controller actions not to
85
86
  # display this action item on.
86
- def action_item(name = nil, options = {}, &block)
87
- if name.is_a?(Hash)
88
- options = name
89
- name = nil
90
- end
91
-
92
- Deprecation.warn "using `action_item` without a name is deprecated! Use `action_item(:edit)`." unless name
93
-
87
+ def action_item(name, options = {}, &block)
94
88
  config.add_action_item(name, options, &block)
95
89
  end
96
90
 
@@ -108,7 +102,7 @@ module ActiveAdmin
108
102
  def batch_action(title, options = {}, &block)
109
103
  # Create symbol & title information
110
104
  if title.is_a? String
111
- sym = title.titleize.tr(' ', '').underscore.to_sym
105
+ sym = title.titleize.tr(" ", "").underscore.to_sym
112
106
  else
113
107
  sym = title
114
108
  title = sym.to_s.titleize
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+
4
+ class DynamicSetting
5
+ def self.build(setting, type)
6
+ (type ? klass(type) : self).new(setting)
7
+ end
8
+
9
+ def self.klass(type)
10
+ klass = "#{type.to_s.camelcase}Setting"
11
+ raise ArgumentError, "Unknown type: #{type}" unless ActiveAdmin.const_defined?(klass)
12
+ ActiveAdmin.const_get(klass)
13
+ end
14
+
15
+ def initialize(setting)
16
+ @setting = setting
17
+ end
18
+
19
+ def value(*_args)
20
+ @setting
21
+ end
22
+ end
23
+
24
+ # Many configuration options (Ex: site_title, title_image) could either be
25
+ # static (String), methods (Symbol) or procs (Proc). This wrapper takes care of
26
+ # returning the content when String or using instance_eval when Symbol or Proc.
27
+ #
28
+ class StringSymbolOrProcSetting < DynamicSetting
29
+ def value(context = self)
30
+ case @setting
31
+ when Symbol, Proc
32
+ context.instance_eval(&@setting)
33
+ else
34
+ @setting
35
+ end
36
+ end
37
+ end
38
+
39
+ end