activeadmin 1.0.0.pre1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +587 -939
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +110 -59
  5. data/LICENSE +0 -5
  6. data/README.md +80 -61
  7. data/app/assets/javascripts/active_admin/base.js +517 -0
  8. data/app/assets/stylesheets/active_admin/_base.scss +31 -34
  9. data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
  10. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  11. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  12. data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
  15. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  16. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  19. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  20. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  21. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
  22. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  23. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
  25. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
  26. data/app/assets/stylesheets/active_admin/print.scss +3 -4
  27. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
  29. data/app/javascript/active_admin/base.js +28 -0
  30. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  31. data/app/javascript/active_admin/ext/jquery.js +9 -0
  32. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  33. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  34. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  35. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  36. data/app/javascript/active_admin/initializers/filters.js +10 -0
  37. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  38. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  39. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  40. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  41. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  42. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  43. data/app/javascript/active_admin/lib/filters.js +39 -0
  44. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  45. data/app/javascript/active_admin/lib/per-page.js +38 -0
  46. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  47. data/app/javascript/active_admin/lib/utils.js +40 -0
  48. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  50. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  51. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  52. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
  54. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  55. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  56. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  57. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  58. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  59. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  60. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  61. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  64. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  66. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  67. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  69. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  70. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  71. data/app/views/layouts/active_admin_logged_out.html.erb +21 -7
  72. data/config/locales/ar.yml +62 -47
  73. data/config/locales/az.yml +138 -0
  74. data/config/locales/bg.yml +1 -3
  75. data/config/locales/bs.yml +1 -2
  76. data/config/locales/ca.yml +2 -4
  77. data/config/locales/cs.yml +1 -2
  78. data/config/locales/da.yml +45 -14
  79. data/config/locales/de-CH.yml +4 -3
  80. data/config/locales/de.yml +46 -3
  81. data/config/locales/el.yml +3 -4
  82. data/config/locales/en-CA.yml +139 -0
  83. data/config/locales/en-GB.yml +46 -5
  84. data/config/locales/en.yml +44 -9
  85. data/config/locales/eo.yml +145 -0
  86. data/config/locales/es-MX.yml +9 -6
  87. data/config/locales/es.yml +63 -14
  88. data/config/locales/fa.yml +1 -2
  89. data/config/locales/fi.yml +2 -3
  90. data/config/locales/fr.yml +36 -8
  91. data/config/locales/he.yml +53 -7
  92. data/config/locales/hr.yml +1 -2
  93. data/config/locales/hu.yml +6 -3
  94. data/config/locales/id.yml +135 -0
  95. data/config/locales/it.yml +49 -4
  96. data/config/locales/ja.yml +31 -7
  97. data/config/locales/ko.yml +66 -36
  98. data/config/locales/lt.yml +27 -6
  99. data/config/locales/lv.yml +3 -4
  100. data/config/locales/mk.yml +134 -0
  101. data/config/locales/nb.yml +22 -8
  102. data/config/locales/nl.yml +26 -3
  103. data/config/locales/pl.yml +75 -5
  104. data/config/locales/pt-BR.yml +24 -2
  105. data/config/locales/pt-PT.yml +1 -2
  106. data/config/locales/ro.yml +1 -2
  107. data/config/locales/ru.yml +21 -4
  108. data/config/locales/sk.yml +168 -0
  109. data/config/locales/sv-SE.yml +50 -8
  110. data/config/locales/tr.yml +92 -45
  111. data/config/locales/uk.yml +30 -16
  112. data/config/locales/vi.yml +53 -12
  113. data/config/locales/zh-CN.yml +44 -7
  114. data/config/locales/zh-TW.yml +42 -3
  115. data/docs/.gitignore +1 -0
  116. data/docs/0-installation.md +68 -18
  117. data/docs/1-general-configuration.md +88 -4
  118. data/docs/10-custom-pages.md +56 -2
  119. data/docs/11-decorators.md +20 -5
  120. data/docs/12-arbre-components.md +75 -11
  121. data/docs/13-authorization-adapter.md +73 -36
  122. data/docs/14-gotchas.md +64 -18
  123. data/docs/2-resource-customization.md +91 -23
  124. data/docs/3-index-pages/custom-index.md +5 -1
  125. data/docs/3-index-pages/index-as-block.md +3 -5
  126. data/docs/3-index-pages/index-as-blog.md +4 -6
  127. data/docs/3-index-pages/index-as-grid.md +3 -5
  128. data/docs/3-index-pages/index-as-table.md +46 -9
  129. data/docs/3-index-pages.md +73 -10
  130. data/docs/4-csv-format.md +35 -0
  131. data/docs/5-forms.md +96 -18
  132. data/docs/6-show-pages.md +13 -25
  133. data/docs/7-sidebars.md +13 -1
  134. data/docs/8-custom-actions.md +18 -1
  135. data/docs/9-batch-actions.md +9 -5
  136. data/docs/CNAME +1 -0
  137. data/docs/Gemfile +3 -0
  138. data/docs/Gemfile.lock +259 -0
  139. data/docs/_config.yml +4 -0
  140. data/docs/_includes/footer.html +8 -0
  141. data/docs/_includes/google-analytics.html +16 -0
  142. data/docs/_includes/head.html +7 -0
  143. data/docs/_includes/toc.html +98 -0
  144. data/docs/_includes/top-menu.html +17 -0
  145. data/docs/_layouts/default.html +21 -0
  146. data/docs/documentation.md +60 -0
  147. data/docs/images/activeadmin.png +0 -0
  148. data/docs/images/code-header.png +0 -0
  149. data/docs/images/divider.png +0 -0
  150. data/docs/images/features.png +0 -0
  151. data/docs/images/tidelift.svg +14 -0
  152. data/docs/index.html +226 -0
  153. data/docs/stylesheets/main.css +1205 -0
  154. data/lib/active_admin/abstract_view_factory.rb +13 -51
  155. data/lib/active_admin/application.rb +105 -138
  156. data/lib/active_admin/application_settings.rb +42 -0
  157. data/lib/active_admin/authorization_adapter.rb +4 -7
  158. data/lib/active_admin/base_controller/authorization.rb +16 -21
  159. data/lib/active_admin/base_controller/menu.rb +10 -10
  160. data/lib/active_admin/base_controller.rb +15 -11
  161. data/lib/active_admin/batch_actions/controller.rb +6 -7
  162. data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
  163. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
  164. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
  165. data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
  166. data/lib/active_admin/batch_actions.rb +0 -1
  167. data/lib/active_admin/callbacks.rb +2 -2
  168. data/lib/active_admin/cancan_adapter.rb +1 -1
  169. data/lib/active_admin/collection_decorator.rb +31 -0
  170. data/lib/active_admin/controller_action.rb +2 -1
  171. data/lib/active_admin/csv_builder.rb +30 -20
  172. data/lib/active_admin/dependency.rb +36 -29
  173. data/lib/active_admin/deprecation.rb +0 -25
  174. data/lib/active_admin/devise.rb +9 -9
  175. data/lib/active_admin/dsl.rb +5 -18
  176. data/lib/active_admin/dynamic_setting.rb +38 -0
  177. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  178. data/lib/active_admin/engine.rb +14 -7
  179. data/lib/active_admin/error.rb +6 -6
  180. data/lib/active_admin/filters/active.rb +29 -0
  181. data/lib/active_admin/filters/active_filter.rb +123 -0
  182. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  183. data/lib/active_admin/filters/forms.rb +17 -10
  184. data/lib/active_admin/filters/formtastic_addons.rb +2 -7
  185. data/lib/active_admin/filters/resource_extension.rb +50 -14
  186. data/lib/active_admin/filters.rb +7 -5
  187. data/lib/active_admin/form_builder.rb +112 -67
  188. data/lib/active_admin/generators/boilerplate.rb +53 -0
  189. data/lib/active_admin/helpers/collection.rb +2 -0
  190. data/lib/active_admin/helpers/optional_display.rb +2 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
  192. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +13 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
  195. data/lib/active_admin/inputs/filters/base.rb +3 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
  200. data/lib/active_admin/inputs/filters/select_input.rb +8 -4
  201. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  202. data/lib/active_admin/inputs.rb +2 -0
  203. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  204. data/lib/active_admin/localizers.rb +11 -0
  205. data/lib/active_admin/menu.rb +13 -15
  206. data/lib/active_admin/menu_collection.rb +0 -2
  207. data/lib/active_admin/menu_item.rb +10 -38
  208. data/lib/active_admin/namespace.rb +51 -32
  209. data/lib/active_admin/namespace_settings.rb +126 -0
  210. data/lib/active_admin/order_clause.rb +30 -8
  211. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
  212. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
  213. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  214. data/lib/active_admin/orm/active_record/comments.rb +49 -29
  215. data/lib/active_admin/orm/active_record.rb +1 -1
  216. data/lib/active_admin/page.rb +24 -5
  217. data/lib/active_admin/page_controller.rb +2 -2
  218. data/lib/active_admin/page_dsl.rb +5 -1
  219. data/lib/active_admin/page_presenter.rb +2 -1
  220. data/lib/active_admin/pundit_adapter.rb +22 -9
  221. data/lib/active_admin/resource/action_items.rb +34 -12
  222. data/lib/active_admin/resource/attributes.rb +47 -0
  223. data/lib/active_admin/resource/belongs_to.rb +17 -4
  224. data/lib/active_admin/resource/controllers.rb +1 -1
  225. data/lib/active_admin/resource/menu.rb +9 -6
  226. data/lib/active_admin/resource/model.rb +15 -0
  227. data/lib/active_admin/resource/naming.rb +5 -5
  228. data/lib/active_admin/resource/ordering.rb +11 -0
  229. data/lib/active_admin/resource/page_presenters.rb +1 -1
  230. data/lib/active_admin/resource/pagination.rb +4 -0
  231. data/lib/active_admin/resource/routes.rb +56 -26
  232. data/lib/active_admin/resource/scope_to.rb +7 -7
  233. data/lib/active_admin/resource/scopes.rb +5 -3
  234. data/lib/active_admin/resource/sidebars.rb +2 -2
  235. data/lib/active_admin/resource.rb +80 -22
  236. data/lib/active_admin/resource_collection.rb +5 -3
  237. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  238. data/lib/active_admin/resource_controller/data_access.rb +56 -43
  239. data/lib/active_admin/resource_controller/decorators.rb +9 -31
  240. data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
  241. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  242. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  243. data/lib/active_admin/resource_controller/streaming.rb +12 -5
  244. data/lib/active_admin/resource_controller.rb +26 -10
  245. data/lib/active_admin/resource_dsl.rb +67 -21
  246. data/lib/active_admin/router.rb +90 -82
  247. data/lib/active_admin/scope.rb +21 -14
  248. data/lib/active_admin/settings_node.rb +19 -0
  249. data/lib/active_admin/sidebar_section.rb +6 -12
  250. data/lib/active_admin/version.rb +1 -1
  251. data/lib/active_admin/view_factory.rb +17 -18
  252. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
  253. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
  254. data/lib/active_admin/view_helpers/display_helper.rb +51 -9
  255. data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
  256. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  257. data/lib/active_admin/view_helpers/form_helper.rb +2 -2
  258. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
  259. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  260. data/lib/active_admin/view_helpers.rb +2 -2
  261. data/lib/active_admin/views/action_items.rb +1 -1
  262. data/lib/active_admin/views/components/active_admin_form.rb +45 -13
  263. data/lib/active_admin/views/components/attributes_table.rb +11 -29
  264. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  265. data/lib/active_admin/views/components/columns.rb +12 -7
  266. data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
  267. data/lib/active_admin/views/components/index_list.rb +6 -5
  268. data/lib/active_admin/views/components/menu.rb +32 -0
  269. data/lib/active_admin/views/components/menu_item.rb +58 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +52 -33
  271. data/lib/active_admin/views/components/panel.rb +2 -4
  272. data/lib/active_admin/views/components/scopes.rb +20 -12
  273. data/lib/active_admin/views/components/sidebar.rb +13 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +6 -1
  275. data/lib/active_admin/views/components/site_title.rb +6 -7
  276. data/lib/active_admin/views/components/status_tag.rb +19 -23
  277. data/lib/active_admin/views/components/table_for.rb +31 -57
  278. data/lib/active_admin/views/components/tabs.rb +17 -5
  279. data/lib/active_admin/views/footer.rb +15 -4
  280. data/lib/active_admin/views/header.rb +3 -16
  281. data/lib/active_admin/views/index_as_blog.rb +3 -4
  282. data/lib/active_admin/views/index_as_grid.rb +28 -28
  283. data/lib/active_admin/views/index_as_table.rb +76 -28
  284. data/lib/active_admin/views/pages/base.rb +45 -58
  285. data/lib/active_admin/views/pages/form.rb +5 -2
  286. data/lib/active_admin/views/pages/index.rb +15 -13
  287. data/lib/active_admin/views/pages/layout.rb +1 -1
  288. data/lib/active_admin/views/pages/show.rb +9 -3
  289. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  290. data/lib/active_admin/views/title_bar.rb +6 -6
  291. data/lib/active_admin/views.rb +1 -1
  292. data/lib/active_admin.rb +69 -67
  293. data/lib/activeadmin.rb +1 -1
  294. data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
  295. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  296. data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
  297. data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
  298. data/lib/generators/active_admin/install/install_generator.rb +18 -8
  299. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
  300. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
  301. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  302. data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
  303. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  304. data/lib/generators/active_admin/page/templates/page.rb +1 -1
  305. data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
  306. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  307. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  308. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  309. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  310. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  311. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  312. data/lib/ransack_ext.rb +11 -3
  313. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  314. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  315. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  316. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  317. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  318. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  319. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  320. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  321. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  322. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  323. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  324. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  325. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  326. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  327. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  328. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  329. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  330. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  331. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  332. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  333. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  334. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  335. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  336. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  337. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  338. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  339. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  340. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  341. metadata +182 -553
  342. data/.gitignore +0 -49
  343. data/.hound.yml +0 -11
  344. data/.travis.yml +0 -42
  345. data/.yardopts +0 -8
  346. data/Gemfile +0 -54
  347. data/Guardfile +0 -8
  348. data/Rakefile +0 -33
  349. data/activeadmin.gemspec +0 -28
  350. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  351. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  352. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  353. data/app/assets/images/active_admin/orderable.png +0 -0
  354. data/app/assets/javascripts/active_admin/application.js.coffee +0 -32
  355. data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
  356. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  357. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  358. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  359. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
  360. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  361. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  362. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  363. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -37
  364. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
  365. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
  366. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  367. data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
  368. data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
  369. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  370. data/cucumber.yml +0 -3
  371. data/features/action_item.feature +0 -73
  372. data/features/authorization.feature +0 -64
  373. data/features/authorization_cancan.feature +0 -52
  374. data/features/authorization_pundit.feature +0 -37
  375. data/features/belongs_to.feature +0 -66
  376. data/features/breadcrumb.feature +0 -75
  377. data/features/comments/commenting.feature +0 -171
  378. data/features/comments/viewing_index.feature +0 -19
  379. data/features/dashboard.feature +0 -16
  380. data/features/decorators.feature +0 -41
  381. data/features/development_reloading.feature +0 -30
  382. data/features/edit_page.feature +0 -117
  383. data/features/favicon.feature +0 -20
  384. data/features/first_boot.feature +0 -16
  385. data/features/global_navigation.feature +0 -29
  386. data/features/i18n.feature +0 -43
  387. data/features/index/batch_actions.feature +0 -164
  388. data/features/index/filters.feature +0 -161
  389. data/features/index/format_as_csv.feature +0 -203
  390. data/features/index/formats.feature +0 -66
  391. data/features/index/index_as_block.feature +0 -15
  392. data/features/index/index_as_blog.feature +0 -69
  393. data/features/index/index_as_grid.feature +0 -45
  394. data/features/index/index_as_table.feature +0 -291
  395. data/features/index/index_blank_slate.feature +0 -83
  396. data/features/index/index_parameters.feature +0 -75
  397. data/features/index/index_scope_to.feature +0 -56
  398. data/features/index/index_scopes.feature +0 -251
  399. data/features/index/page_title.feature +0 -41
  400. data/features/index/pagination.feature +0 -59
  401. data/features/index/switch_index_view.feature +0 -73
  402. data/features/menu.feature +0 -53
  403. data/features/new_page.feature +0 -109
  404. data/features/registering_assets.feature +0 -35
  405. data/features/registering_pages.feature +0 -148
  406. data/features/registering_resources.feature +0 -33
  407. data/features/renamed_resource.feature +0 -32
  408. data/features/root_to.feature +0 -17
  409. data/features/show/default_content.feature +0 -43
  410. data/features/show/page_title.feature +0 -58
  411. data/features/show/tabs.feature +0 -27
  412. data/features/sidebar_sections.feature +0 -210
  413. data/features/site_title.feature +0 -47
  414. data/features/specifying_actions.feature +0 -93
  415. data/features/step_definitions/action_item_steps.rb +0 -7
  416. data/features/step_definitions/action_link_steps.rb +0 -20
  417. data/features/step_definitions/additional_web_steps.rb +0 -81
  418. data/features/step_definitions/asset_steps.rb +0 -15
  419. data/features/step_definitions/attribute_steps.rb +0 -18
  420. data/features/step_definitions/batch_action_steps.rb +0 -72
  421. data/features/step_definitions/blog_steps.rb +0 -3
  422. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  423. data/features/step_definitions/comment_steps.rb +0 -12
  424. data/features/step_definitions/configuration_steps.rb +0 -100
  425. data/features/step_definitions/dashboard_steps.rb +0 -15
  426. data/features/step_definitions/factory_steps.rb +0 -34
  427. data/features/step_definitions/filter_steps.rb +0 -39
  428. data/features/step_definitions/flash_steps.rb +0 -11
  429. data/features/step_definitions/format_steps.rb +0 -52
  430. data/features/step_definitions/i18n_steps.rb +0 -3
  431. data/features/step_definitions/index_scope_steps.rb +0 -21
  432. data/features/step_definitions/index_views_steps.rb +0 -3
  433. data/features/step_definitions/layout_steps.rb +0 -3
  434. data/features/step_definitions/member_link_steps.rb +0 -7
  435. data/features/step_definitions/menu_steps.rb +0 -11
  436. data/features/step_definitions/pagination_steps.rb +0 -7
  437. data/features/step_definitions/sidebar_steps.rb +0 -13
  438. data/features/step_definitions/site_title_steps.rb +0 -17
  439. data/features/step_definitions/symbol_leak_steps.rb +0 -3
  440. data/features/step_definitions/tab_steps.rb +0 -8
  441. data/features/step_definitions/table_steps.rb +0 -119
  442. data/features/step_definitions/user_steps.rb +0 -45
  443. data/features/step_definitions/web_steps.rb +0 -85
  444. data/features/sti_resource.feature +0 -65
  445. data/features/strong_parameters.feature +0 -73
  446. data/features/support/env.rb +0 -145
  447. data/features/support/paths.rb +0 -71
  448. data/features/support/selectors.rb +0 -45
  449. data/features/symbol_leak.feature +0 -35
  450. data/features/users/logging_in.feature +0 -34
  451. data/features/users/logging_out.feature +0 -13
  452. data/features/users/resetting_password.feature +0 -34
  453. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
  454. data/lib/active_admin/event.rb +0 -33
  455. data/lib/active_admin/helpers/settings.rb +0 -115
  456. data/lib/active_admin/iconic/icons.rb +0 -142
  457. data/lib/active_admin/iconic.rb +0 -53
  458. data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
  459. data/lib/active_admin/views/components/action_list_popover.rb +0 -29
  460. data/lib/active_admin/views/components/popover.rb +0 -27
  461. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  462. data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
  463. data/script/local +0 -44
  464. data/script/travis_cache +0 -107
  465. data/script/use_rails +0 -53
  466. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  467. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  468. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +0 -82
  469. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  470. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  471. data/spec/javascripts/fixtures/flashes.html +0 -2
  472. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  473. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  474. data/spec/javascripts/support/jasmine.yml +0 -74
  475. data/spec/javascripts/support/jasmine_config.rb +0 -23
  476. data/spec/javascripts/support/jasmine_runner.rb +0 -32
  477. data/spec/rails_helper.rb +0 -154
  478. data/spec/requests/default_namespace_spec.rb +0 -61
  479. data/spec/requests/javascript_spec.rb +0 -20
  480. data/spec/requests/memory_spec.rb +0 -23
  481. data/spec/requests/stylesheets_spec.rb +0 -18
  482. data/spec/spec_helper.rb +0 -17
  483. data/spec/support/deferred_garbage_collection.rb +0 -19
  484. data/spec/support/detect_rails_version.rb +0 -34
  485. data/spec/support/integration_example_group.rb +0 -31
  486. data/spec/support/jslint.yml +0 -80
  487. data/spec/support/rails_template.rb +0 -138
  488. data/spec/support/rails_template_with_data.rb +0 -59
  489. data/spec/support/templates/admin/stores.rb +0 -9
  490. data/spec/support/templates/cucumber.rb +0 -24
  491. data/spec/support/templates/cucumber_with_reloading.rb +0 -5
  492. data/spec/support/templates/en.yml +0 -8
  493. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  494. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  495. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  496. data/spec/support/templates/policies/application_policy.rb +0 -45
  497. data/spec/support/templates/policies/category_policy.rb +0 -7
  498. data/spec/support/templates/policies/post_policy.rb +0 -15
  499. data/spec/support/templates/policies/store_policy.rb +0 -11
  500. data/spec/support/templates/policies/user_policy.rb +0 -11
  501. data/spec/support/templates/post_decorator.rb +0 -11
  502. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  503. data/spec/unit/action_builder_spec.rb +0 -132
  504. data/spec/unit/active_admin_spec.rb +0 -11
  505. data/spec/unit/application_spec.rb +0 -140
  506. data/spec/unit/asset_registration_spec.rb +0 -52
  507. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  508. data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
  509. data/spec/unit/authorization/index_overriding_spec.rb +0 -22
  510. data/spec/unit/auto_link_spec.rb +0 -69
  511. data/spec/unit/batch_actions/resource_spec.rb +0 -92
  512. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  513. data/spec/unit/belongs_to_spec.rb +0 -51
  514. data/spec/unit/cancan_adapter_spec.rb +0 -43
  515. data/spec/unit/comments_spec.rb +0 -166
  516. data/spec/unit/component_spec.rb +0 -18
  517. data/spec/unit/config_shared_examples.rb +0 -59
  518. data/spec/unit/controller_filters_spec.rb +0 -44
  519. data/spec/unit/csv_builder_spec.rb +0 -244
  520. data/spec/unit/dependency_spec.rb +0 -135
  521. data/spec/unit/devise_spec.rb +0 -96
  522. data/spec/unit/dsl_spec.rb +0 -122
  523. data/spec/unit/event_spec.rb +0 -47
  524. data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
  525. data/spec/unit/filters/resource_spec.rb +0 -121
  526. data/spec/unit/form_builder_spec.rb +0 -752
  527. data/spec/unit/generators/install_spec.rb +0 -23
  528. data/spec/unit/helpers/collection_spec.rb +0 -65
  529. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  530. data/spec/unit/helpers/settings_spec.rb +0 -30
  531. data/spec/unit/i18n_spec.rb +0 -12
  532. data/spec/unit/menu_collection_spec.rb +0 -62
  533. data/spec/unit/menu_item_spec.rb +0 -143
  534. data/spec/unit/menu_spec.rb +0 -71
  535. data/spec/unit/namespace/authorization_spec.rb +0 -27
  536. data/spec/unit/namespace/register_page_spec.rb +0 -74
  537. data/spec/unit/namespace/register_resource_spec.rb +0 -161
  538. data/spec/unit/namespace_spec.rb +0 -103
  539. data/spec/unit/order_clause_spec.rb +0 -81
  540. data/spec/unit/page_controller_spec.rb +0 -5
  541. data/spec/unit/page_spec.rb +0 -78
  542. data/spec/unit/pretty_format_spec.rb +0 -63
  543. data/spec/unit/pundit_adapter_spec.rb +0 -98
  544. data/spec/unit/resource/action_items_spec.rb +0 -65
  545. data/spec/unit/resource/includes_spec.rb +0 -21
  546. data/spec/unit/resource/menu_spec.rb +0 -18
  547. data/spec/unit/resource/naming_spec.rb +0 -122
  548. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  549. data/spec/unit/resource/pagination_spec.rb +0 -38
  550. data/spec/unit/resource/routes_spec.rb +0 -73
  551. data/spec/unit/resource/scopes_spec.rb +0 -50
  552. data/spec/unit/resource/sidebars_spec.rb +0 -43
  553. data/spec/unit/resource_collection_spec.rb +0 -158
  554. data/spec/unit/resource_controller/data_access_spec.rb +0 -140
  555. data/spec/unit/resource_controller/decorators_spec.rb +0 -83
  556. data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
  557. data/spec/unit/resource_controller_spec.rb +0 -269
  558. data/spec/unit/resource_registration_spec.rb +0 -56
  559. data/spec/unit/resource_spec.rb +0 -278
  560. data/spec/unit/routing_spec.rb +0 -180
  561. data/spec/unit/scope_spec.rb +0 -190
  562. data/spec/unit/settings_spec.rb +0 -118
  563. data/spec/unit/view_factory_spec.rb +0 -21
  564. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
  565. data/spec/unit/view_helpers/display_name_spec.rb +0 -69
  566. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  567. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  568. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  569. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  570. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  571. data/spec/unit/views/components/action_list_popover_spec.rb +0 -40
  572. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  573. data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
  574. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  575. data/spec/unit/views/components/columns_spec.rb +0 -172
  576. data/spec/unit/views/components/index_list_spec.rb +0 -35
  577. data/spec/unit/views/components/index_table_for_spec.rb +0 -46
  578. data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
  579. data/spec/unit/views/components/panel_spec.rb +0 -62
  580. data/spec/unit/views/components/popover_spec.rb +0 -33
  581. data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
  582. data/spec/unit/views/components/site_title_spec.rb +0 -78
  583. data/spec/unit/views/components/status_tag_spec.rb +0 -235
  584. data/spec/unit/views/components/table_for_spec.rb +0 -384
  585. data/spec/unit/views/components/tabs_spec.rb +0 -39
  586. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
  587. data/spec/unit/views/pages/form_spec.rb +0 -42
  588. data/spec/unit/views/pages/index_spec.rb +0 -60
  589. data/spec/unit/views/pages/layout_spec.rb +0 -59
  590. data/spec/unit/views/pages/show_spec.rb +0 -33
  591. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  592. data/tasks/docs.rake +0 -37
  593. data/tasks/parallel_tests.rake +0 -66
  594. data/tasks/test.rake +0 -83
  595. data/tasks/yard.rake +0 -9
@@ -1,3 +1,7 @@
1
+ ---
2
+ redirect_from: /docs/2-resource-customization.html
3
+ ---
4
+
1
5
  # Working with Resources
2
6
 
3
7
  Every Active Admin resource corresponds to a Rails model. So before creating a
@@ -6,7 +10,7 @@ resource you must first create a Rails model for it.
6
10
  ## Create a Resource
7
11
 
8
12
  The basic command for creating a resource is `rails g active_admin:resource Post`.
9
- The generator will produce an empty `app/admin/post.rb` file like so:
13
+ The generator will produce an empty `app/admin/posts.rb` file like so:
10
14
 
11
15
  ```ruby
12
16
  ActiveAdmin.register Post do
@@ -16,9 +20,6 @@ end
16
20
 
17
21
  ## Setting up Strong Parameters
18
22
 
19
- Rails 4 replaces `attr_accessible` with [Strong Parameters](https://github.com/rails/strong_parameters),
20
- which moves attribute whitelisting from the model to the controller.
21
-
22
23
  Use the `permit_params` method to define which attributes may be changed:
23
24
 
24
25
  ```ruby
@@ -27,12 +28,14 @@ ActiveAdmin.register Post do
27
28
  end
28
29
  ```
29
30
 
30
- Any form field that sends multiple values (such as a HABTM association, or an array attribute)
31
- needs to pass an empty array to `permit_params`:
31
+ Any form field that sends multiple values (such as a HABTM association, or an
32
+ array attribute) needs to pass an empty array to `permit_params`:
33
+
34
+ If your HABTM is `roles`, you should permit `role_ids: []`
32
35
 
33
36
  ```ruby
34
37
  ActiveAdmin.register Post do
35
- permit_params :title, :content, :publisher_id, roles: []
38
+ permit_params :title, :content, :publisher_id, role_ids: []
36
39
  end
37
40
  ```
38
41
 
@@ -63,7 +66,17 @@ ActiveAdmin.register Post do
63
66
  end
64
67
  ```
65
68
 
66
- The `permit_params` call creates a method called `permitted_params`. You should use this method when overriding `create` or `update` actions:
69
+ If your resource is nested, declare `permit_params` after `belongs_to`:
70
+
71
+ ```ruby
72
+ ActiveAdmin.register Post do
73
+ belongs_to :user
74
+ permit_params :title, :content, :publisher_id
75
+ end
76
+ ```
77
+
78
+ The `permit_params` call creates a method called `permitted_params`. You should
79
+ use this method when overriding `create` or `update` actions:
67
80
 
68
81
  ```ruby
69
82
  ActiveAdmin.register Post do
@@ -92,6 +105,26 @@ ActiveAdmin.register Post do
92
105
  end
93
106
  ```
94
107
 
108
+ ## Renaming Action Items
109
+
110
+ You can use translations to override labels and page titles for actions such as
111
+ new, edit, and destroy by providing a resource specific translation. For
112
+ example, to change 'New Offer' to 'Make an Offer' add the following in
113
+ config/locales/[en].yml:
114
+
115
+ ```yaml
116
+ en:
117
+ active_admin:
118
+ resources:
119
+ offer: # Registered resource
120
+ new_model: 'Make an Offer' # new action item
121
+ edit_model: 'Change Offer' # edit action item
122
+ delete_model: 'Cancel Offer' # delete action item
123
+ ```
124
+
125
+ See the [default en.yml](/config/locales/en.yml) locale file for
126
+ existing translations and examples.
127
+
95
128
  ## Rename the Resource
96
129
 
97
130
  By default, any references to the resource (menu, routes, buttons, etc) in the
@@ -131,7 +164,8 @@ The menu method accepts a hash with the following options:
131
164
 
132
165
  * `:label` - The string or proc label to display in the menu. If it's a proc, it
133
166
  will be called each time the menu is rendered.
134
- * `:parent` - The string id (or label) of the parent used for this menu
167
+ * `:parent` - The string id (or label) of the parent used for this menu, or an array
168
+ of string ids (or labels) for a nested menu
135
169
  * `:if` - A block or a symbol of a method to call to decide if the menu item
136
170
  should be displayed
137
171
  * `:priority` - The integer value of the priority, which defaults to `10`
@@ -170,6 +204,7 @@ end
170
204
  ### Conditionally Showing / Hiding Menu Items
171
205
 
172
206
  Menu items can be shown or hidden at runtime using the `:if` option.
207
+
173
208
  ```ruby
174
209
  ActiveAdmin.register Post do
175
210
  menu if: proc{ current_user.can_edit_posts? }
@@ -193,6 +228,14 @@ end
193
228
  Note that the "Blog" parent menu item doesn't even have to exist yet; it can be
194
229
  dynamically generated for you.
195
230
 
231
+ To further nest an item under a submenu, provide an array of parents.
232
+
233
+ ```ruby
234
+ ActiveAdmin.register Post do
235
+ menu parent: ["Admin", "Blog"]
236
+ end
237
+ ```
238
+
196
239
  ### Customizing Parent Menu Items
197
240
 
198
241
  All of the options given to a standard menu item are also available to
@@ -244,9 +287,15 @@ config.namespace :admin do |admin|
244
287
  menu.add label: "The Application", url: "/", priority: 0
245
288
 
246
289
  menu.add label: "Sites" do |sites|
247
- sites.add label: "Google", url: "http://google.com", html_options: { target: :blank }
248
- sites.add label: "Facebook", url: "http://facebook.com"
249
- sites.add label: "Github", url: "http://github.com"
290
+ sites.add label: "Google",
291
+ url: "http://google.com",
292
+ html_options: { target: :blank }
293
+
294
+ sites.add label: "Facebook",
295
+ url: "http://facebook.com"
296
+
297
+ sites.add label: "Github",
298
+ url: "http://github.com"
250
299
  end
251
300
  end
252
301
  end
@@ -285,7 +334,8 @@ end
285
334
 
286
335
  ## Eager loading
287
336
 
288
- A common way to increase page performance is to elimate N+1 queries by eager loading associations:
337
+ A common way to increase page performance is to eliminate N+1 queries by eager
338
+ loading associations:
289
339
 
290
340
  ```ruby
291
341
  ActiveAdmin.register Post do
@@ -295,7 +345,13 @@ end
295
345
 
296
346
  ## Customizing resource retrieval
297
347
 
298
- If you need to customize the collection properties, you can overwrite the `scoped_collection` method.
348
+ Our controllers are built on [Inherited
349
+ Resources](https://github.com/activeadmin/inherited_resources), so you can use
350
+ [all of its
351
+ features](https://github.com/activeadmin/inherited_resources#overwriting-defaults).
352
+
353
+ If you need to customize the collection properties, you can overwrite the
354
+ `scoped_collection` method.
299
355
 
300
356
  ```ruby
301
357
  ActiveAdmin.register Post do
@@ -307,21 +363,33 @@ ActiveAdmin.register Post do
307
363
  end
308
364
  ```
309
365
 
310
- If you need to completely replace the record retrieving code (e.g., you have a custom
311
- `to_param` implementation in your models), override the `resource` method on the controller:
366
+ If you need to completely replace the record retrieving code (e.g., you have a
367
+ custom `to_param` implementation in your models), override the `find_resource` method
368
+ on the controller:
312
369
 
313
370
  ```ruby
314
371
  ActiveAdmin.register Post do
315
372
  controller do
316
373
  def find_resource
317
- Post.where(id: params[:id]).first!
374
+ scoped_collection.where(id: params[:id]).first!
318
375
  end
319
376
  end
320
377
  end
321
378
  ```
322
379
 
323
- Our controllers are built on [Inherited Resources](https://github.com/josevalim/inherited_resources),
324
- so you can use [all of its features](https://github.com/josevalim/inherited_resources#overwriting-defaults).
380
+ Note that if you use an authorization library like CanCan, you should be careful
381
+ to not write code like this, otherwise **your authorization rules won't be
382
+ applied**:
383
+
384
+ ```ruby
385
+ ActiveAdmin.register Post do
386
+ controller do
387
+ def find_resource
388
+ Post.where(id: params[:id]).first!
389
+ end
390
+ end
391
+ end
392
+ ```
325
393
 
326
394
  ## Belongs To
327
395
 
@@ -336,7 +404,7 @@ ActiveAdmin.register Ticket do
336
404
  end
337
405
  ```
338
406
 
339
- Projects will be available as usual and tickets will be availble by visiting
407
+ Projects will be available as usual and tickets will be available by visiting
340
408
  `/admin/projects/1/tickets` assuming that a Project with the id of 1 exists.
341
409
  Active Admin does not add "Tickets" to the global navigation because the routes
342
410
  can only be generated when there is a project id.
@@ -349,8 +417,8 @@ ActiveAdmin.register Project do
349
417
 
350
418
  sidebar "Project Details", only: [:show, :edit] do
351
419
  ul do
352
- li link_to "Tickets", admin_project_tickets_path(project)
353
- li link_to "Milestones", admin_project_milestones_path(project)
420
+ li link_to "Tickets", admin_project_tickets_path(resource)
421
+ li link_to "Milestones", admin_project_milestones_path(resource)
354
422
  end
355
423
  end
356
424
  end
@@ -367,7 +435,7 @@ end
367
435
  In some cases (like Projects), there are many sub resources and you would
368
436
  actually like the global navigation to switch when the user navigates "into" a
369
437
  project. To accomplish this, Active Admin stores the `belongs_to` resources in a
370
- seperate menu which you can use if you so wish. To use:
438
+ separate menu which you can use if you so wish. To use:
371
439
 
372
440
  ```ruby
373
441
  ActiveAdmin.register Ticket do
@@ -1,3 +1,7 @@
1
+ ---
2
+ redirect_from: /docs/3-index-pages/custom-index.html
3
+ ---
4
+
1
5
  # Custom Index
2
6
 
3
7
  If the supplied Active Admin index components are insufficient for your project
@@ -26,6 +30,6 @@ The build method takes a PagePresenter object and collection of whatever you
26
30
  choose.
27
31
 
28
32
  The `index_name` class method takes no arguments and returns a string that should
29
- be representative of the the class name. If this method is not defined, your
33
+ be representative of the class name. If this method is not defined, your
30
34
  index component will not be able take advantage of Active Admin's
31
35
  *multiple index pages* feature.
@@ -1,8 +1,6 @@
1
- <!--
2
- WARNING: Please DO NOT edit this file! Update
3
- source documentation in lib/active_admin/views
4
- and execute rake yard to regenerate it.
5
- -->
1
+ ---
2
+ redirect_from: /docs/3-index-pages/index-as-block.html
3
+ ---
6
4
 
7
5
  # Index as a Block
8
6
 
@@ -1,8 +1,6 @@
1
- <!--
2
- WARNING: Please DO NOT edit this file! Update
3
- source documentation in lib/active_admin/views
4
- and execute rake yard to regenerate it.
5
- -->
1
+ ---
2
+ redirect_from: /docs/3-index-pages/index-as-blog.html
3
+ ---
6
4
 
7
5
  # Index as Blog
8
6
 
@@ -30,7 +28,7 @@ end
30
28
  ```
31
29
 
32
30
  Second, you can pass a block to the tile option which will then be
33
- used as the contents fo the title. The resource being rendered
31
+ used as the contents of the title. The resource being rendered
34
32
  is passed in to the block. For Example:
35
33
 
36
34
  ```ruby
@@ -1,8 +1,6 @@
1
- <!--
2
- WARNING: Please DO NOT edit this file! Update
3
- source documentation in lib/active_admin/views
4
- and execute rake yard to regenerate it.
5
- -->
1
+ ---
2
+ redirect_from: /docs/3-index-pages/index-as-grid.html
3
+ ---
6
4
 
7
5
  # Index as a Grid
8
6
 
@@ -1,8 +1,6 @@
1
- <!--
2
- WARNING: Please DO NOT edit this file! Update
3
- source documentation in lib/active_admin/views
4
- and execute rake yard to regenerate it.
5
- -->
1
+ ---
2
+ redirect_from: /docs/3-index-pages/index-as-table.html
3
+ ---
6
4
 
7
5
  # Index as a Table
8
6
 
@@ -55,6 +53,8 @@ index do
55
53
  end
56
54
  ```
57
55
 
56
+ ## Defining Actions
57
+
58
58
  To setup links to View, Edit and Delete a resource, use the `actions` method:
59
59
 
60
60
  ```ruby
@@ -94,7 +94,7 @@ Or append custom action with custom html via arbre:
94
94
  index do
95
95
  column :title
96
96
  actions do |post|
97
- a link_to "View", admin_post_path(post)
97
+ a "View", href: admin_post_path(post)
98
98
  end
99
99
  end
100
100
  ```
@@ -111,15 +111,27 @@ index do
111
111
  end
112
112
  ```
113
113
 
114
+ In addition, you can insert the position of the row in the greater
115
+ collection by using the index_column special command:
116
+
117
+ ```ruby
118
+ index do
119
+ selectable_column
120
+ index_column
121
+ column :title
122
+ end
123
+ ```
124
+
125
+ index_column take an optional offset parameter to allow a developer to set
126
+ the starting number for the index (default is 1).
127
+
114
128
  ## Sorting
115
129
 
116
130
  When a column is generated from an Active Record attribute, the table is
117
131
  sortable by default. If you are creating a custom column, you may need to give
118
132
  Active Admin a hint for how to sort the table.
119
133
 
120
- If a column is defined using a block, you must pass the key to turn on sorting. The key
121
- is the attribute which gets used to sort objects using Active Record.
122
-
134
+ You can pass the key specifying the attribute which gets used to sort objects using Active Record.
123
135
  By default, this is the column on the resource's table that the attribute corresponds to.
124
136
  Otherwise, any attribute that the resource collection responds to can be used.
125
137
 
@@ -148,6 +160,24 @@ index do
148
160
  end
149
161
  ```
150
162
 
163
+ ## Custom sorting
164
+
165
+ It is also possible to use database specific expressions and options for sorting by column
166
+
167
+ ```ruby
168
+ order_by(:title) do |order_clause|
169
+ if order_clause.order == 'desc'
170
+ [order_clause.to_sql, 'NULLS LAST'].join(' ')
171
+ else
172
+ [order_clause.to_sql, 'NULLS FIRST'].join(' ')
173
+ end
174
+ end
175
+
176
+ index do
177
+ column :title
178
+ end
179
+ ```
180
+
151
181
  ## Associated Sorting
152
182
 
153
183
  You're normally able to sort columns alphabetically, but by default you
@@ -163,6 +193,13 @@ controller do
163
193
  end
164
194
  ```
165
195
 
196
+ You can also define associated objects to include outside of the
197
+ `scoped_collection` method:
198
+
199
+ ```ruby
200
+ includes :publisher
201
+ ```
202
+
166
203
  Then it's simple to sort by any Publisher attribute from within the index table:
167
204
 
168
205
  ```ruby
@@ -1,3 +1,7 @@
1
+ ---
2
+ redirect_from: /docs/3-index-pages.html
3
+ ---
4
+
1
5
  # Customizing the Index Page
2
6
 
3
7
  Filtering and listing resources is one of the most important tasks for
@@ -77,7 +81,8 @@ end
77
81
 
78
82
  Out of the box, Active Admin supports the following filter types:
79
83
 
80
- * *:string* - A search field
84
+ * *:string* - A drop down for selecting "Contains", "Equals", "Starts with",
85
+ "Ends with" and an input for a value.
81
86
  * *:date_range* - A start and end date field with calendar inputs
82
87
  * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
83
88
  Than" and an input for a value.
@@ -100,6 +105,24 @@ the collection as a proc to be called at render time.
100
105
  filter :author, as: :check_boxes, collection: proc { Author.all }
101
106
  ```
102
107
 
108
+ To override options for string or numeric filter pass `filters` option.
109
+
110
+ ```ruby
111
+ filter :title, filters: [:starts_with, :ends_with]
112
+ ```
113
+
114
+ Also, if you don't need the select with the options 'contains', 'equals',
115
+ 'starts_with' or 'ends_with' just add the option to the filter name with an
116
+ underscore.
117
+
118
+ For example:
119
+
120
+ ```ruby
121
+ filter :name_equals
122
+ # or
123
+ filter :name_contains
124
+ ```
125
+
103
126
  You can change the filter label by passing a label option:
104
127
 
105
128
  ```ruby
@@ -108,9 +131,11 @@ filter :author, label: 'Something else'
108
131
 
109
132
  By default, Active Admin will try to use ActiveModel I18n to determine the label.
110
133
 
111
- You can also filter on more than one attribute of a model using the
112
- [Ransack search predicate syntax](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching). If using a custom search method, you will
113
- also need to specify the field type using `:as` and the label.
134
+ You can also filter on more than one attribute of a model using the [Ransack
135
+ search predicate
136
+ syntax](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching).
137
+ If using a custom search method, you will also need to specify the field type
138
+ using `:as` and the label.
114
139
 
115
140
  ```ruby
116
141
  filter :first_name_or_last_name_cont, as: :string, label: "Name"
@@ -152,11 +177,18 @@ preserve_default_filters!
152
177
  filter :author
153
178
  ```
154
179
 
180
+ Or you can also remove a filter and still preserve the default filters:
181
+
182
+ ```ruby
183
+ preserve_default_filters!
184
+ remove_filter :id
185
+ ```
186
+
155
187
  ## Index Scopes
156
188
 
157
189
  You can define custom scopes for your index page. This will add a tab bar above
158
- the index table to quickly filter your collection on pre-defined scopes. There are
159
- a number of ways to define your scopes:
190
+ the index table to quickly filter your collection on pre-defined scopes. There
191
+ are a number of ways to define your scopes:
160
192
 
161
193
  ```ruby
162
194
  scope :all, default: true
@@ -174,11 +206,31 @@ scope ->{ Date.today.strftime '%A' }, :published_today
174
206
  scope("Inactive") { |scope| scope.where(active: false) }
175
207
 
176
208
  # conditionally show a custom controller scope
177
- scope "Published", if: proc { current_admin_user.can? :manage, Posts } do |posts|
209
+ scope "Published", if: -> { current_admin_user.can? :manage, Posts } do |posts|
178
210
  posts.published
179
211
  end
180
212
  ```
181
213
 
214
+ Scopes can be labelled with a translation, e.g.
215
+ `active_admin.scopes.scope_method`.
216
+
217
+ ### Scopes groups
218
+
219
+ You can assign group names to scopes to keep related scopes together and separate them from the rest.
220
+
221
+ ```ruby
222
+ # a scope in the default group
223
+ scope :all
224
+
225
+ # two scopes used to filter by status
226
+ scope :active, group: :status
227
+ scope :inactive, group: :status
228
+
229
+ # two scopes used to filter by date
230
+ scope :today, group: :date
231
+ scope :tomorrow, group: :date
232
+ ```
233
+
182
234
  ## Index default sort order
183
235
 
184
236
  You can define the default sort order for index pages:
@@ -207,11 +259,19 @@ ActiveAdmin.register Post do
207
259
  end
208
260
  ```
209
261
 
262
+ Or allow users to choose themselves using dropdown with values
263
+
264
+ ```ruby
265
+ ActiveAdmin.register Post do
266
+ config.per_page = [10, 50, 100]
267
+ end
268
+ ```
269
+
210
270
  You can change it per request / action too:
211
271
 
212
272
  ```ruby
213
273
  controller do
214
- before_filter :only => :index do
274
+ before_action only: :index do
215
275
  @per_page = 100
216
276
  end
217
277
  end
@@ -260,6 +320,9 @@ ActiveAdmin.setup do |config|
260
320
  end
261
321
  ```
262
322
 
263
- Note: you have to actually implement PDF rendering for your action, ActiveAdmin does not provide this feature. This setting just allows you to specify formats that you want to show up under the index collection.
323
+ Note: you have to actually implement PDF rendering for your action, ActiveAdmin
324
+ does not provide this feature. This setting just allows you to specify formats
325
+ that you want to show up under the index collection.
264
326
 
265
- You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the PDF generation you want.
327
+ You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the
328
+ PDF generation you want.
data/docs/4-csv-format.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ redirect_from: /docs/4-csv-format.html
3
+ ---
4
+
1
5
  # Customizing the CSV format
2
6
 
3
7
  Active Admin provides CSV file downloads on the index screen for each Resource.
@@ -11,6 +15,7 @@ ActiveAdmin.register Post do
11
15
  csv do
12
16
  column :title
13
17
  column(:author) { |post| post.author.full_name }
18
+ column('bODY', humanize_name: false) # preserve case
14
19
  end
15
20
  end
16
21
  ```
@@ -37,3 +42,33 @@ config.csv_options = { col_sep: ';' }
37
42
  # Force the use of quotes
38
43
  config.csv_options = { force_quotes: true }
39
44
  ```
45
+
46
+ You can customize the filename by overriding `csv_filename` in the controller block.
47
+
48
+ ```ruby
49
+ ActiveAdmin.register User do
50
+ controller do
51
+ def csv_filename
52
+ 'User Details.csv'
53
+ end
54
+ end
55
+ end
56
+ ```
57
+
58
+ ## Streaming
59
+
60
+ By default Active Admin streams the CSV response to your browser as it's generated.
61
+ This is good because it prevents request timeouts, for example the infamous H12
62
+ error on Heroku.
63
+
64
+ However if an exception occurs while generating the CSV, the request will eventually
65
+ time out, with the last line containing the exception message. CSV streaming is
66
+ disabled in development to help debug these exceptions. That lets you use tools like
67
+ better_errors and web-console to debug the issue. If you want to customize the
68
+ environments where CSV streaming is disabled, you can change this setting:
69
+
70
+ ```ruby
71
+ # config/initializers/active_admin.rb
72
+
73
+ config.disable_streaming_in = ['development', 'staging']
74
+ ```