yousty-activeadmin 1.0.0.pre

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 (490) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +43 -0
  3. data/.travis.yml +8 -0
  4. data/.yardopts +9 -0
  5. data/CHANGELOG.md +1056 -0
  6. data/CONTRIBUTING.md +110 -0
  7. data/Gemfile +41 -0
  8. data/Guardfile +7 -0
  9. data/LICENSE +25 -0
  10. data/README.md +67 -0
  11. data/Rakefile +25 -0
  12. data/activeadmin.gemspec +33 -0
  13. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  18. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  19. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
  20. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
  21. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
  22. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
  23. data/app/assets/images/active_admin/loading.gif +0 -0
  24. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  25. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  26. data/app/assets/images/active_admin/orderable.png +0 -0
  27. data/app/assets/javascripts/active_admin/application.js.coffee +6 -0
  28. data/app/assets/javascripts/active_admin/base.js.coffee +5 -0
  29. data/app/assets/javascripts/active_admin/components/application.js.coffee +23 -0
  30. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +26 -0
  31. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +41 -0
  32. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +37 -0
  33. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +105 -0
  34. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +97 -0
  35. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +25 -0
  36. data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
  37. data/app/assets/stylesheets/active_admin/_forms.css.scss +293 -0
  38. data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
  39. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  40. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  41. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  42. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  43. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  44. data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
  45. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  46. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
  47. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  48. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  49. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  50. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  51. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  52. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  53. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  54. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  55. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  56. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  57. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  58. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
  59. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +110 -0
  60. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
  61. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
  62. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +32 -0
  71. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  72. data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
  73. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  74. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  75. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
  76. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  77. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  78. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  79. data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
  80. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  81. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  82. data/app/views/active_admin/devise/shared/_links.erb +27 -0
  83. data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
  84. data/app/views/active_admin/page/index.html.arb +1 -0
  85. data/app/views/active_admin/resource/edit.html.arb +1 -0
  86. data/app/views/active_admin/resource/index.csv.erb +17 -0
  87. data/app/views/active_admin/resource/index.html.arb +1 -0
  88. data/app/views/active_admin/resource/new.html.arb +1 -0
  89. data/app/views/active_admin/resource/show.html.arb +1 -0
  90. data/app/views/layouts/active_admin.html.arb +1 -0
  91. data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
  92. data/config/locales/bg.yml +101 -0
  93. data/config/locales/ca.yml +98 -0
  94. data/config/locales/cs.yml +105 -0
  95. data/config/locales/da.yml +102 -0
  96. data/config/locales/de-CH.yml +117 -0
  97. data/config/locales/de.yml +119 -0
  98. data/config/locales/en-GB.yml +91 -0
  99. data/config/locales/en.yml +110 -0
  100. data/config/locales/es.yml +106 -0
  101. data/config/locales/es_MX.yml +104 -0
  102. data/config/locales/fi.yml +109 -0
  103. data/config/locales/fr.yml +97 -0
  104. data/config/locales/he.yml +91 -0
  105. data/config/locales/hr.yml +93 -0
  106. data/config/locales/hu.yml +92 -0
  107. data/config/locales/it.yml +89 -0
  108. data/config/locales/ja.yml +104 -0
  109. data/config/locales/ko.yml +84 -0
  110. data/config/locales/lt.yml +90 -0
  111. data/config/locales/lv.yml +89 -0
  112. data/config/locales/nl.yml +90 -0
  113. data/config/locales/no-NB.yml +85 -0
  114. data/config/locales/pl.yml +93 -0
  115. data/config/locales/pt-BR.yml +90 -0
  116. data/config/locales/pt-PT.yml +89 -0
  117. data/config/locales/ro.yml +93 -0
  118. data/config/locales/ru.yml +103 -0
  119. data/config/locales/sv-SE.yml +89 -0
  120. data/config/locales/tr.yml +90 -0
  121. data/config/locales/uk.yml +100 -0
  122. data/config/locales/vi.yml +90 -0
  123. data/config/locales/zh-CN.yml +90 -0
  124. data/config/locales/zh-TW.yml +90 -0
  125. data/cucumber.yml +3 -0
  126. data/docs/0-installation.md +84 -0
  127. data/docs/1-general-configuration.md +137 -0
  128. data/docs/10-custom-pages.md +98 -0
  129. data/docs/11-decorators.md +66 -0
  130. data/docs/12-arbre-components.md +144 -0
  131. data/docs/13-authorization-adapter.md +227 -0
  132. data/docs/2-resource-customization.md +340 -0
  133. data/docs/3-index-pages/create-an-index.md +29 -0
  134. data/docs/3-index-pages/index-as-block.md +21 -0
  135. data/docs/3-index-pages/index-as-blog.md +71 -0
  136. data/docs/3-index-pages/index-as-grid.md +29 -0
  137. data/docs/3-index-pages/index-as-table.md +154 -0
  138. data/docs/3-index-pages.md +206 -0
  139. data/docs/4-csv-format.md +39 -0
  140. data/docs/5-forms.md +110 -0
  141. data/docs/6-show-pages.md +77 -0
  142. data/docs/7-sidebars.md +42 -0
  143. data/docs/8-custom-actions.md +139 -0
  144. data/docs/9-batch-actions.md +155 -0
  145. data/features/action_item.feature +73 -0
  146. data/features/authorization.feature +64 -0
  147. data/features/authorization_cancan.feature +52 -0
  148. data/features/belongs_to.feature +63 -0
  149. data/features/breadcrumb.feature +27 -0
  150. data/features/comments/commenting.feature +140 -0
  151. data/features/comments/viewing_index.feature +19 -0
  152. data/features/dashboard.feature +16 -0
  153. data/features/decorators.feature +41 -0
  154. data/features/development_reloading.feature +31 -0
  155. data/features/edit_page.feature +127 -0
  156. data/features/favicon.feature +20 -0
  157. data/features/first_boot.feature +16 -0
  158. data/features/global_navigation.feature +29 -0
  159. data/features/i18n.feature +38 -0
  160. data/features/index/batch_actions.feature +123 -0
  161. data/features/index/filters.feature +138 -0
  162. data/features/index/format_as_csv.feature +117 -0
  163. data/features/index/formats.feature +66 -0
  164. data/features/index/index_as_block.feature +15 -0
  165. data/features/index/index_as_blog.feature +69 -0
  166. data/features/index/index_as_grid.feature +45 -0
  167. data/features/index/index_as_table.feature +195 -0
  168. data/features/index/index_blank_slate.feature +61 -0
  169. data/features/index/index_parameters.feature +75 -0
  170. data/features/index/index_scope_to.feature +56 -0
  171. data/features/index/index_scopes.feature +251 -0
  172. data/features/index/page_title.feature +30 -0
  173. data/features/index/pagination.feature +59 -0
  174. data/features/index/switch_index_view.feature +73 -0
  175. data/features/menu.feature +53 -0
  176. data/features/new_page.feature +119 -0
  177. data/features/registering_assets.feature +35 -0
  178. data/features/registering_pages.feature +148 -0
  179. data/features/registering_resources.feature +33 -0
  180. data/features/root_to.feature +17 -0
  181. data/features/show/default_content.feature +43 -0
  182. data/features/show/page_title.feature +47 -0
  183. data/features/sidebar_sections.feature +198 -0
  184. data/features/site_title.feature +47 -0
  185. data/features/specifying_actions.feature +93 -0
  186. data/features/step_definitions/action_item_steps.rb +7 -0
  187. data/features/step_definitions/action_link_steps.rb +7 -0
  188. data/features/step_definitions/additional_web_steps.rb +82 -0
  189. data/features/step_definitions/asset_steps.rb +15 -0
  190. data/features/step_definitions/attribute_steps.rb +13 -0
  191. data/features/step_definitions/batch_action_steps.rb +55 -0
  192. data/features/step_definitions/breadcrumb_steps.rb +3 -0
  193. data/features/step_definitions/comment_steps.rb +12 -0
  194. data/features/step_definitions/configuration_steps.rb +100 -0
  195. data/features/step_definitions/dashboard_steps.rb +15 -0
  196. data/features/step_definitions/factory_steps.rb +34 -0
  197. data/features/step_definitions/filter_steps.rb +17 -0
  198. data/features/step_definitions/flash_steps.rb +11 -0
  199. data/features/step_definitions/format_steps.rb +45 -0
  200. data/features/step_definitions/i18n_steps.rb +3 -0
  201. data/features/step_definitions/index_scope_steps.rb +21 -0
  202. data/features/step_definitions/index_views_steps.rb +3 -0
  203. data/features/step_definitions/layout_steps.rb +3 -0
  204. data/features/step_definitions/member_link_steps.rb +7 -0
  205. data/features/step_definitions/menu_steps.rb +11 -0
  206. data/features/step_definitions/pagination_steps.rb +8 -0
  207. data/features/step_definitions/sidebar_steps.rb +8 -0
  208. data/features/step_definitions/site_title_steps.rb +15 -0
  209. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  210. data/features/step_definitions/tab_steps.rb +3 -0
  211. data/features/step_definitions/table_steps.rb +119 -0
  212. data/features/step_definitions/user_steps.rb +39 -0
  213. data/features/step_definitions/web_steps.rb +86 -0
  214. data/features/sti_resource.feature +73 -0
  215. data/features/support/env.rb +112 -0
  216. data/features/support/paths.rb +71 -0
  217. data/features/support/selectors.rb +45 -0
  218. data/features/symbol_leak.feature +35 -0
  219. data/features/users/logging_in.feature +34 -0
  220. data/features/users/logging_out.feature +13 -0
  221. data/features/users/resetting_password.feature +34 -0
  222. data/lib/active_admin/abstract_view_factory.rb +95 -0
  223. data/lib/active_admin/application.rb +242 -0
  224. data/lib/active_admin/asset_registration.rb +29 -0
  225. data/lib/active_admin/authorization_adapter.rb +132 -0
  226. data/lib/active_admin/base_controller/authorization.rb +151 -0
  227. data/lib/active_admin/base_controller/menu.rb +34 -0
  228. data/lib/active_admin/base_controller.rb +78 -0
  229. data/lib/active_admin/batch_actions/controller.rb +24 -0
  230. data/lib/active_admin/batch_actions/resource_extension.rb +127 -0
  231. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  232. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  233. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +66 -0
  234. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  235. data/lib/active_admin/batch_actions.rb +17 -0
  236. data/lib/active_admin/callbacks.rb +87 -0
  237. data/lib/active_admin/cancan_adapter.rb +40 -0
  238. data/lib/active_admin/component.rb +5 -0
  239. data/lib/active_admin/controller_action.rb +12 -0
  240. data/lib/active_admin/csv_builder.rb +49 -0
  241. data/lib/active_admin/deprecation.rb +36 -0
  242. data/lib/active_admin/devise.rb +70 -0
  243. data/lib/active_admin/dsl.rb +166 -0
  244. data/lib/active_admin/engine.rb +7 -0
  245. data/lib/active_admin/event.rb +33 -0
  246. data/lib/active_admin/filters/dsl.rb +21 -0
  247. data/lib/active_admin/filters/forms.rb +89 -0
  248. data/lib/active_admin/filters/formtastic_addons.rb +70 -0
  249. data/lib/active_admin/filters/resource_extension.rb +136 -0
  250. data/lib/active_admin/filters.rb +9 -0
  251. data/lib/active_admin/form_builder.rb +152 -0
  252. data/lib/active_admin/helpers/collection.rb +23 -0
  253. data/lib/active_admin/helpers/optional_display.rb +38 -0
  254. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  255. data/lib/active_admin/helpers/settings.rb +108 -0
  256. data/lib/active_admin/iconic/icons.rb +142 -0
  257. data/lib/active_admin/iconic.rb +51 -0
  258. data/lib/active_admin/inputs/datepicker_input.rb +20 -0
  259. data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
  260. data/lib/active_admin/inputs/filter_base.rb +33 -0
  261. data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
  262. data/lib/active_admin/inputs/filter_check_boxes_input.rb +51 -0
  263. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  264. data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
  265. data/lib/active_admin/inputs/filter_select_input.rb +61 -0
  266. data/lib/active_admin/inputs/filter_string_input.rb +24 -0
  267. data/lib/active_admin/inputs.rb +15 -0
  268. data/lib/active_admin/menu.rb +107 -0
  269. data/lib/active_admin/menu_collection.rb +96 -0
  270. data/lib/active_admin/menu_item.rb +97 -0
  271. data/lib/active_admin/namespace.rb +224 -0
  272. data/lib/active_admin/orm/active_record/comments/comment.rb +39 -0
  273. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  274. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  275. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  276. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
  277. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  278. data/lib/active_admin/orm/active_record/comments.rb +84 -0
  279. data/lib/active_admin/orm/active_record.rb +3 -0
  280. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  281. data/lib/active_admin/orm/mongoid.rb +1 -0
  282. data/lib/active_admin/page.rb +88 -0
  283. data/lib/active_admin/page_controller.rb +29 -0
  284. data/lib/active_admin/page_dsl.rb +28 -0
  285. data/lib/active_admin/page_presenter.rb +32 -0
  286. data/lib/active_admin/resource/action_items.rb +91 -0
  287. data/lib/active_admin/resource/belongs_to.rb +36 -0
  288. data/lib/active_admin/resource/controllers.rb +18 -0
  289. data/lib/active_admin/resource/menu.rb +64 -0
  290. data/lib/active_admin/resource/naming.rb +84 -0
  291. data/lib/active_admin/resource/page_presenters.rb +82 -0
  292. data/lib/active_admin/resource/pagination.rb +19 -0
  293. data/lib/active_admin/resource/routes.rb +99 -0
  294. data/lib/active_admin/resource/scope_to.rb +74 -0
  295. data/lib/active_admin/resource/scopes.rb +50 -0
  296. data/lib/active_admin/resource/sidebars.rb +27 -0
  297. data/lib/active_admin/resource.rb +153 -0
  298. data/lib/active_admin/resource_collection.rb +42 -0
  299. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  300. data/lib/active_admin/resource_controller/data_access.rb +298 -0
  301. data/lib/active_admin/resource_controller/decorators.rb +20 -0
  302. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  303. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  304. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  305. data/lib/active_admin/resource_controller.rb +50 -0
  306. data/lib/active_admin/resource_dsl.rb +134 -0
  307. data/lib/active_admin/router.rb +106 -0
  308. data/lib/active_admin/scope.rb +57 -0
  309. data/lib/active_admin/sidebar_section.rb +37 -0
  310. data/lib/active_admin/version.rb +3 -0
  311. data/lib/active_admin/view_factory.rb +27 -0
  312. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  313. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  314. data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
  315. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
  316. data/lib/active_admin/view_helpers/display_helper.rb +49 -0
  317. data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
  318. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  319. data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
  320. data/lib/active_admin/view_helpers/form_helper.rb +24 -0
  321. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  322. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
  323. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  324. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  325. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  326. data/lib/active_admin/view_helpers.rb +21 -0
  327. data/lib/active_admin/views/action_items.rb +17 -0
  328. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  329. data/lib/active_admin/views/components/attributes_table.rb +103 -0
  330. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  331. data/lib/active_admin/views/components/columns.rb +150 -0
  332. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  333. data/lib/active_admin/views/components/index_list.rb +68 -0
  334. data/lib/active_admin/views/components/paginated_collection.rb +125 -0
  335. data/lib/active_admin/views/components/panel.rb +34 -0
  336. data/lib/active_admin/views/components/popover.rb +27 -0
  337. data/lib/active_admin/views/components/scopes.rb +66 -0
  338. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  339. data/lib/active_admin/views/components/site_title.rb +55 -0
  340. data/lib/active_admin/views/components/status_tag.rb +56 -0
  341. data/lib/active_admin/views/components/table_for.rb +191 -0
  342. data/lib/active_admin/views/footer.rb +20 -0
  343. data/lib/active_admin/views/header.rb +32 -0
  344. data/lib/active_admin/views/index_as_block.rb +36 -0
  345. data/lib/active_admin/views/index_as_blog.rb +156 -0
  346. data/lib/active_admin/views/index_as_grid.rb +80 -0
  347. data/lib/active_admin/views/index_as_table.rb +264 -0
  348. data/lib/active_admin/views/pages/base.rb +139 -0
  349. data/lib/active_admin/views/pages/form.rb +51 -0
  350. data/lib/active_admin/views/pages/index.rb +147 -0
  351. data/lib/active_admin/views/pages/layout.rb +26 -0
  352. data/lib/active_admin/views/pages/page.rb +30 -0
  353. data/lib/active_admin/views/pages/show.rb +59 -0
  354. data/lib/active_admin/views/tabbed_navigation.rb +62 -0
  355. data/lib/active_admin/views/title_bar.rb +53 -0
  356. data/lib/active_admin/views.rb +8 -0
  357. data/lib/active_admin.rb +125 -0
  358. data/lib/activeadmin.rb +1 -0
  359. data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
  360. data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
  361. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  362. data/lib/generators/active_admin/devise/devise_generator.rb +86 -0
  363. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  364. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +235 -0
  365. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
  366. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  367. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  368. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  369. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  370. data/lib/ransack_ext.rb +12 -0
  371. data/script/local +44 -0
  372. data/script/use_rails +53 -0
  373. data/spec/integration/default_namespace_spec.rb +61 -0
  374. data/spec/integration/javascript_spec.rb +20 -0
  375. data/spec/integration/memory_spec.rb +29 -0
  376. data/spec/integration/stylesheets_spec.rb +41 -0
  377. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  378. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  379. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  380. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  381. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  382. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  383. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  384. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  385. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  386. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  387. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  388. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  389. data/spec/javascripts/support/jasmine.yml +74 -0
  390. data/spec/javascripts/support/jasmine_config.rb +23 -0
  391. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  392. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  393. data/spec/javascripts/support/jquery.min.js +4 -0
  394. data/spec/spec_helper.rb +175 -0
  395. data/spec/spec_helper_without_rails.rb +16 -0
  396. data/spec/support/deferred_garbage_collection.rb +19 -0
  397. data/spec/support/detect_rails_version.rb +42 -0
  398. data/spec/support/integration_example_group.rb +31 -0
  399. data/spec/support/jslint.yml +80 -0
  400. data/spec/support/rails_template.rb +111 -0
  401. data/spec/support/rails_template_with_data.rb +59 -0
  402. data/spec/support/templates/admin/stores.rb +11 -0
  403. data/spec/support/templates/cucumber.rb +24 -0
  404. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  405. data/spec/support/templates/en.yml +8 -0
  406. data/spec/support/templates/post_decorator.rb +53 -0
  407. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  408. data/spec/unit/action_builder_spec.rb +126 -0
  409. data/spec/unit/active_admin_spec.rb +11 -0
  410. data/spec/unit/application_spec.rb +141 -0
  411. data/spec/unit/asset_registration_spec.rb +52 -0
  412. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  413. data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
  414. data/spec/unit/auto_link_spec.rb +32 -0
  415. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  416. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  417. data/spec/unit/belongs_to_spec.rb +42 -0
  418. data/spec/unit/cancan_adapter_spec.rb +43 -0
  419. data/spec/unit/comments_spec.rb +106 -0
  420. data/spec/unit/component_spec.rb +18 -0
  421. data/spec/unit/config_shared_examples.rb +59 -0
  422. data/spec/unit/controller_filters_spec.rb +32 -0
  423. data/spec/unit/csv_builder_spec.rb +103 -0
  424. data/spec/unit/devise_spec.rb +116 -0
  425. data/spec/unit/dsl_spec.rb +61 -0
  426. data/spec/unit/event_spec.rb +47 -0
  427. data/spec/unit/filters/filter_form_builder_spec.rb +423 -0
  428. data/spec/unit/filters/resource_spec.rb +119 -0
  429. data/spec/unit/form_builder_spec.rb +514 -0
  430. data/spec/unit/generators/install_spec.rb +23 -0
  431. data/spec/unit/helpers/collection_spec.rb +65 -0
  432. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  433. data/spec/unit/helpers/settings_spec.rb +30 -0
  434. data/spec/unit/menu_collection_spec.rb +62 -0
  435. data/spec/unit/menu_item_spec.rb +143 -0
  436. data/spec/unit/menu_spec.rb +71 -0
  437. data/spec/unit/namespace/authorization_spec.rb +27 -0
  438. data/spec/unit/namespace/register_page_spec.rb +74 -0
  439. data/spec/unit/namespace/register_resource_spec.rb +163 -0
  440. data/spec/unit/namespace_spec.rb +103 -0
  441. data/spec/unit/page_controller_spec.rb +5 -0
  442. data/spec/unit/page_spec.rb +72 -0
  443. data/spec/unit/pretty_format_spec.rb +35 -0
  444. data/spec/unit/resource/action_items_spec.rb +62 -0
  445. data/spec/unit/resource/menu_spec.rb +18 -0
  446. data/spec/unit/resource/naming_spec.rb +122 -0
  447. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  448. data/spec/unit/resource/pagination_spec.rb +38 -0
  449. data/spec/unit/resource/routes_spec.rb +73 -0
  450. data/spec/unit/resource/scopes_spec.rb +43 -0
  451. data/spec/unit/resource/sidebars_spec.rb +43 -0
  452. data/spec/unit/resource_collection_spec.rb +160 -0
  453. data/spec/unit/resource_controller/data_access_spec.rb +73 -0
  454. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  455. data/spec/unit/resource_controller_spec.rb +265 -0
  456. data/spec/unit/resource_registration_spec.rb +56 -0
  457. data/spec/unit/resource_spec.rb +243 -0
  458. data/spec/unit/routing_spec.rb +172 -0
  459. data/spec/unit/scope_spec.rb +108 -0
  460. data/spec/unit/settings_spec.rb +88 -0
  461. data/spec/unit/view_factory_spec.rb +21 -0
  462. data/spec/unit/view_helpers/breadcrumbs_spec.rb +149 -0
  463. data/spec/unit/view_helpers/display_name_spec.rb +41 -0
  464. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  465. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  466. data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
  467. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +101 -0
  468. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  469. data/spec/unit/views/components/attributes_table_spec.rb +230 -0
  470. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  471. data/spec/unit/views/components/blank_slate_spec.rb +17 -0
  472. data/spec/unit/views/components/columns_spec.rb +142 -0
  473. data/spec/unit/views/components/index_list_spec.rb +32 -0
  474. data/spec/unit/views/components/paginated_collection_spec.rb +227 -0
  475. data/spec/unit/views/components/panel_spec.rb +51 -0
  476. data/spec/unit/views/components/popover_spec.rb +33 -0
  477. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  478. data/spec/unit/views/components/site_title_spec.rb +78 -0
  479. data/spec/unit/views/components/status_tag_spec.rb +95 -0
  480. data/spec/unit/views/components/table_for_spec.rb +201 -0
  481. data/spec/unit/views/pages/form_spec.rb +35 -0
  482. data/spec/unit/views/pages/layout_spec.rb +63 -0
  483. data/spec/unit/views/pages/show_spec.rb +20 -0
  484. data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
  485. data/tasks/docs.rake +37 -0
  486. data/tasks/js.rake +32 -0
  487. data/tasks/parallel_tests.rake +60 -0
  488. data/tasks/test.rake +79 -0
  489. data/tasks/yard.rake +7 -0
  490. metadata +896 -0
@@ -0,0 +1,29 @@
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
+ -->
6
+
7
+ # Index as a Grid
8
+
9
+ Sometimes you want to display the index screen for a set of resources as a grid
10
+ (possibly a grid of thumbnail images). To do so, use the :grid option for the
11
+ index block.
12
+
13
+ ```ruby
14
+ index as: :grid do |product|
15
+ link_to image_tag(product.image_path), admin_product_path(product)
16
+ end
17
+ ```
18
+
19
+ The block is rendered within a cell in the grid once for each resource in the
20
+ collection. The resource is passed into the block for you to use in the view.
21
+
22
+ You can customize the number of columns that are rendered using the columns
23
+ option:
24
+
25
+ ```ruby
26
+ index as: :grid, columns: 5 do |product|
27
+ link_to image_tag(product.image_path), admin_product_path(product)
28
+ end
29
+ ```
@@ -0,0 +1,154 @@
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
+ -->
6
+
7
+ # Index as a Table
8
+
9
+ By default, the index page is a table with each of the models content columns and links to
10
+ show, edit and delete the object. There are many ways to customize what gets
11
+ displayed.
12
+
13
+ ## Defining Columns
14
+
15
+ To display an attribute or a method on a resource, simply pass a symbol into the
16
+ column method:
17
+
18
+ ```ruby
19
+ index do
20
+ selectable_column
21
+ column :title
22
+ end
23
+ ```
24
+
25
+ For association columns we make an educated guess on what to display by
26
+ calling the following methods in the following order:
27
+
28
+ ```ruby
29
+ :display_name, :full_name, :name, :username, :login, :title, :email, :to_s
30
+ ```
31
+
32
+ This can be customized in `config/initializers/active_admin.rb`.
33
+
34
+ If the default title does not work for you, pass it as the first argument:
35
+
36
+ ```ruby
37
+ index do
38
+ selectable_column
39
+ column "My Custom Title", :title
40
+ end
41
+ ```
42
+
43
+ Sometimes that just isn't enough and you need to write some view-specific code.
44
+ For example, say we wanted a "Title" column that links to the posts admin screen.
45
+
46
+ `column` accepts a block that will be rendered for each of the objects in the collection.
47
+ The block is called once for each resource, which is passed as an argument to the block.
48
+
49
+ ```ruby
50
+ index do
51
+ selectable_column
52
+ column "Title" do |post|
53
+ link_to post.title, admin_post_path(post)
54
+ end
55
+ end
56
+ ```
57
+
58
+ To setup links to View, Edit and Delete a resource, use the `actions` method:
59
+
60
+ ```ruby
61
+ index do
62
+ selectable_column
63
+ column :title
64
+ actions
65
+ end
66
+ ```
67
+
68
+ You can also append custom links to the default links:
69
+
70
+ ```ruby
71
+ index do
72
+ selectable_column
73
+ column :title
74
+ actions do |post|
75
+ link_to "Preview", admin_preview_post_path(post), class: "member_link"
76
+ end
77
+ end
78
+ ```
79
+
80
+ Or forego the default links entirely:
81
+
82
+ ```ruby
83
+ index do
84
+ column :title
85
+ actions defaults: false do |post|
86
+ link_to "View", admin_post_path(post)
87
+ end
88
+ end
89
+ ```
90
+
91
+ ## Sorting
92
+
93
+ When a column is generated from an Active Record attribute, the table is
94
+ sortable by default. If you are creating a custom column, you may need to give
95
+ Active Admin a hint for how to sort the table.
96
+
97
+ If a column is defined using a block, you must pass the key to turn on sorting. The key
98
+ is the attribute which gets used to sort objects using Active Record.
99
+
100
+ By default, this is the column on the resource's table that the attribute corresponds to.
101
+ Otherwise, any attribute that the resource collection responds to can be used.
102
+
103
+ ```ruby
104
+ index do
105
+ column :title, sortable: :title do |post|
106
+ link_to post.title, admin_post_path(post)
107
+ end
108
+ end
109
+ ```
110
+
111
+ You can turn off sorting on any column by passing false:
112
+
113
+ ```ruby
114
+ index do
115
+ column :title, sortable: false
116
+ end
117
+ ```
118
+
119
+ ## Associated Sorting
120
+
121
+ You're normally able to sort columns alphabetically, but by default you
122
+ can't sort by associated objects. Though with a few simple changes, you can.
123
+
124
+ Assuming you're on the Books index page, and Book has_one Publisher:
125
+
126
+ ```ruby
127
+ controller do
128
+ def scoped_collection
129
+ super.includes :publisher # prevents N+1 queries to your database
130
+ end
131
+ end
132
+ ```
133
+
134
+ Then it's simple to sort by any Publisher attribute from within the index table:
135
+
136
+ ```ruby
137
+ index do
138
+ column :publisher, sortable: 'publishers.name'
139
+ end
140
+ ```
141
+
142
+ ## Showing and Hiding Columns
143
+
144
+ The entire index block is rendered within the context of the view, so you can
145
+ easily do things that show or hide columns based on the current context.
146
+
147
+ For example, if you were using CanCan:
148
+
149
+ ```ruby
150
+ index do
151
+ column :title, sortable: false
152
+ column :secret_data if can? :manage, Post
153
+ end
154
+ ```
@@ -0,0 +1,206 @@
1
+ # Customizing the Index Page
2
+
3
+ Filtering and listing resources is one of the most important tasks for
4
+ administering a web application. Active Admin provides many different tools for
5
+ you to build a compelling interface into your data for the admin staff.
6
+
7
+ Built in, Active Admin has the following index renderers:
8
+
9
+ * *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
10
+ * *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
11
+ * *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-block.md))
12
+ * *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
13
+
14
+ All index pages also support scopes, filters, pagination, action items, and
15
+ sidebar sections.
16
+
17
+ ## Multiple Index Pages
18
+
19
+ Sometime you may want more than one index page for a resource to represent
20
+ different views to the user. If multiple index pages exist, Active Admin will
21
+ automatically build links at the top of the default index page. Including
22
+ multiple views is simple and requires creating multiple index components in
23
+ your resource.
24
+
25
+ ```ruby
26
+ index do
27
+ id_column
28
+ column :image_title
29
+ default_actions
30
+ end
31
+
32
+ index as: :grid do |product|
33
+ link_to image_tag(product.image_path), admin_product_path(product)
34
+ end
35
+ ```
36
+
37
+ The first index component will be the default index page unless you indicate
38
+ otherwise by setting :default to true.
39
+
40
+ ```ruby
41
+ index do
42
+ column :image_title
43
+ default_actions
44
+ end
45
+
46
+ index as: :grid, default: true do |product|
47
+ link_to image_tag(product.image_path), admin_product_path(product)
48
+ end
49
+ ```
50
+
51
+ Active Admin does not limit the index page to be a table, block, blog or grid.
52
+ If you've [created your own index page](3-index-pages/create-an-index.md) it
53
+ can be included by setting :as to the class of the index component you created.
54
+
55
+ ```ruby
56
+ index as: ActiveAdmin::Views::IndexAsTable do
57
+ column :image_title
58
+ default_actions
59
+ end
60
+ ```
61
+
62
+ ## Index Filters
63
+
64
+ By default the index screen includes a "Filters" sidebar on the right hand side
65
+ with a filter for each attribute of the registered model. You can customize the
66
+ filters that are displayed as well as the type of widgets they use.
67
+
68
+ To display a filter for an attribute, use the filter method
69
+
70
+ ```ruby
71
+ ActiveAdmin.register Post do
72
+ filter :title
73
+ end
74
+ ```
75
+
76
+ Out of the box, Active Admin supports the following filter types:
77
+
78
+ * *:string* - A search field
79
+ * *:date_range* - A start and end date field with calendar inputs
80
+ * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
81
+ Than" and an input for a value.
82
+ * *:select* - A drop down which filters based on a selected item in a collection
83
+ or all.
84
+ * *:check_boxes* - A list of check boxes users can turn on and off to filter
85
+
86
+ By default, Active Admin will pick the most relevant filter based on the
87
+ attribute type. You can force the type by passing the :as option.
88
+
89
+ ```ruby
90
+ filter :author, as: :check_boxes
91
+ ```
92
+
93
+ The :check_boxes and :select types accept options for the collection. By default
94
+ it attempts to create a collection based on an association. But you can pass in
95
+ the collection as a proc to be called at render time.
96
+
97
+ ```ruby
98
+ filter :author, as: :check_boxes, collection: proc { Author.all }
99
+ ```
100
+
101
+ You can change the filter label by passing a label option:
102
+
103
+ ```ruby
104
+ filter :author, label: 'Something else'
105
+ ```
106
+
107
+ By default, Active Admin will try to use ActiveModel I18n to determine the label.
108
+
109
+ Filters can also be disabled for a resource, a namespace or the entire
110
+ application.
111
+
112
+ To disable for a specific resource:
113
+
114
+ ```ruby
115
+ ActiveAdmin.register Post do
116
+ config.filters = false
117
+ end
118
+ ```
119
+
120
+ To disable for a namespace, in the initializer:
121
+
122
+ ```ruby
123
+ ActiveAdmin.setup do |config|
124
+ config.namespace :my_namespace do |my_namespace|
125
+ my_namespace.filters = false
126
+ end
127
+ end
128
+ ```
129
+
130
+ Or to disable for the entire application:
131
+
132
+ ```ruby
133
+ ActiveAdmin.setup do |config|
134
+ config.filters = false
135
+ end
136
+ ```
137
+
138
+ You can also add a filter and still preserve the default filters:
139
+
140
+ ```ruby
141
+ preserve_default_filters!
142
+ filter :author
143
+ ```
144
+
145
+ ## Index default sort order
146
+
147
+ You can define the default sort order for index pages:
148
+
149
+ ```ruby
150
+ ActiveAdmin.register Post do
151
+ config.sort_order = 'name asc'
152
+ end
153
+ ```
154
+
155
+ ## Index pagination
156
+
157
+ You can set the number of records per page per resources:
158
+
159
+ ```ruby
160
+ ActiveAdmin.register Post do
161
+ config.per_page = 10
162
+ end
163
+ ```
164
+
165
+ You can also disable pagination:
166
+
167
+ ```ruby
168
+ ActiveAdmin.register Post do
169
+ config.paginate = false
170
+ end
171
+ ```
172
+
173
+ If you have a very large database, you might want to disable SELECT COUNT(*)
174
+ queries caused by the pagination info at the bottom of the page:
175
+
176
+ ```ruby
177
+ ActiveAdmin.register Post do
178
+ index pagination_total: false do
179
+ # ...
180
+ end
181
+ end
182
+ ```
183
+
184
+ ## Customizing Download Links
185
+
186
+ You can easily remove or customize the download links you want displayed:
187
+
188
+ ```ruby
189
+ # Per resource:
190
+ ActiveAdmin.register Post do
191
+
192
+ index download_links: false
193
+ index download_links: [:pdf]
194
+ index download_links: proc{ current_user.can_view_download_links? }
195
+
196
+ end
197
+
198
+ # For the entire application:
199
+ ActiveAdmin.setup do |config|
200
+
201
+ config.download_links = false
202
+ config.download_links = [:csv, :xml, :json, :pdf]
203
+ config.download_links = proc { current_user.can_view_download_links? }
204
+
205
+ end
206
+ ```
@@ -0,0 +1,39 @@
1
+ # Customizing the CSV format
2
+
3
+ Active Admin provides CSV file downloads on the index screen for each Resource.
4
+ By default it will render a CSV file with all the content columns of your
5
+ registered model.
6
+
7
+ Customizing the CSV format is as simple as customizing the index page.
8
+
9
+ ```ruby
10
+ ActiveAdmin.register Post do
11
+ csv do
12
+ column :title
13
+ column(:author) { |post| post.author.full_name }
14
+ end
15
+ end
16
+ ```
17
+
18
+ You can also set custom CSV settings for an individual resource:
19
+
20
+ ```ruby
21
+ ActiveAdmin.register Post do
22
+ csv force_quotes: true, col_sep: ';' do
23
+ column :title
24
+ column(:author) { |post| post.author.full_name }
25
+ end
26
+ end
27
+ ```
28
+
29
+ Or system-wide:
30
+
31
+ ```ruby
32
+ # config/initializers/active_admin.rb
33
+
34
+ # Set the CSV builder separator
35
+ config.csv_options = { col_sep: ';' }
36
+
37
+ # Force the use of quotes
38
+ config.csv_options = { force_quotes: true }
39
+ ```
data/docs/5-forms.md ADDED
@@ -0,0 +1,110 @@
1
+ # Customizing the Form
2
+
3
+ Active Admin gives you complete control over the output of the form by creating
4
+ a thin DSL on top of [Formtastic](https://github.com/justinfrench/formtastic):
5
+
6
+ ```ruby
7
+ ActiveAdmin.register Post do
8
+
9
+ form do |f|
10
+ f.inputs 'Details' do
11
+ f.input :title
12
+ f.input :published_at, label: "Publish Post At"
13
+ f.input :category
14
+ end
15
+ f.inputs 'Content', :body
16
+ f.actions
17
+ end
18
+
19
+ end
20
+ ```
21
+
22
+ Please view [the documentation](http://github.com/justinfrench/formtastic)
23
+ for Formtastic to see all the wonderful things you can do.
24
+
25
+ If you require a more custom form than can be provided through the DSL, you can
26
+ user a partial instead:
27
+
28
+ ```ruby
29
+ ActiveAdmin.register Post do
30
+ form partial: 'form'
31
+ end
32
+ ```
33
+
34
+ Which looks for something like this:
35
+
36
+ ```erb
37
+ <%# app/views/admin/posts/_form.html.erb %>
38
+ <%= semantic_form_for [:admin, @post] do |f| %>
39
+ <%= f.inputs :title, :body %>
40
+ <%= f.actions do %>
41
+ <%= f.action :submit %>
42
+ <li class="cancel"><%= link_to 'Cancel', collection_path %></li>
43
+ <% end %>
44
+ <% end %>
45
+ ```
46
+
47
+ ## Nested Resources
48
+
49
+ You can create forms with nested models using the `has_many` method:
50
+
51
+ ```ruby
52
+ ActiveAdmin.register Post do
53
+
54
+ form do |f|
55
+ f.inputs 'Details' do
56
+ f.input :title
57
+ f.input :published_at, label: 'Publish Post At'
58
+ end
59
+ f.inputs 'Content', :body
60
+ f.inputs do
61
+ f.has_many :categories, heading: 'Themes', allow_destroy: true, new_record: false do |a|
62
+ a.input :title
63
+ end
64
+ end
65
+ f.inputs do
66
+ f.has_many :comment, new_record: 'Leave Comment' do |b|
67
+ b.input :body
68
+ end
69
+ end
70
+ f.actions
71
+ end
72
+
73
+ end
74
+ ```
75
+
76
+ The `:allow_destroy` option adds a checkbox to the end of the nested form allowing
77
+ removal of the child object upon submission. Be sure to set `allow_destroy: true`
78
+ on the association to use this option.
79
+
80
+ The `:heading` option adds a custom heading. You can hide it entirely by passing `false`.
81
+
82
+ The `:new_record` option controls the visibility of the new record button (shown by default).
83
+ If you pass a string, it will be used as the text for the new record button.
84
+
85
+ ## DatePicker
86
+
87
+ ActiveAdmin offers the `datepicker` input, which uses the [jQueryUI Datepicker](http://jqueryui.com/datepicker/).
88
+ The datepicker input accepts any of the options available to the standard
89
+ jQueryUI Datepicker, e.g.
90
+
91
+ ```ruby
92
+ form do |f|
93
+ f.input :starts_at, as: :datepicker, datepicker_options: { min_date: "2013-10-8", max_date: 3.days.from_now.to_date }
94
+ f.input :ends_at, as: :datepicker, datepicker_options: { min_date: 3.days.ago.to_date, max_date: "+1W +5D" }
95
+ end
96
+ ```
97
+
98
+ ## Displaying Errors
99
+
100
+ To display a list of all validation errors:
101
+
102
+ ```ruby
103
+ form do |f|
104
+ f.semantic_errors *f.object.errors.keys
105
+ f.inputs
106
+ f.actions
107
+ end
108
+ ```
109
+
110
+ This is particularly useful to display errors on virtual or hidden attributes.
@@ -0,0 +1,77 @@
1
+ # Customize the Show Page
2
+
3
+ The show block is rendered within the context of the view and uses [Arbre](https://github.com/gregbell/arbre) syntax.
4
+
5
+ With the `show` block, you can render anything you want.
6
+
7
+ ```ruby
8
+ ActiveAdmin.register Post do
9
+ show do
10
+ h3 post.title
11
+ div do
12
+ simple_format post.body
13
+ end
14
+ end
15
+ end
16
+ ```
17
+
18
+ You can render a partial at any point:
19
+
20
+ ```ruby
21
+ ActiveAdmin.register Post do
22
+ show do
23
+ # renders app/views/admin/posts/_some_partial.html.erb
24
+ render 'some_partial'
25
+ end
26
+ end
27
+ ```
28
+
29
+ If you'd like to keep the default AA look, you can use `attributes_table`:
30
+
31
+ ```ruby
32
+ ActiveAdmin.register Ad do
33
+ show do
34
+ attributes_table do
35
+ row :title
36
+ row :image do
37
+ image_tag ad.image.url
38
+ end
39
+ end
40
+ active_admin_comments
41
+ end
42
+ end
43
+ ```
44
+
45
+ You can also customize the title of the object in the show screen:
46
+
47
+ ```ruby
48
+ show title: :name do
49
+ # ...
50
+ end
51
+ ```
52
+
53
+ If you want a more data-dense page, you can combine a sidebar:
54
+
55
+ ```ruby
56
+ ActiveAdmin.register Book do
57
+ show do
58
+ panel "Table of Contents" do
59
+ table_for book.chapters do
60
+ column :number
61
+ column :title
62
+ column :page
63
+ end
64
+ end
65
+ active_admin_comments
66
+ end
67
+
68
+ sidebar "Details", only: :show do
69
+ attributes_table_for book do
70
+ row :title
71
+ row :author
72
+ row :publisher
73
+ row('Published?') { |b| status_tag b.published? ? 'Yes' : 'No' }
74
+ end
75
+ end
76
+ end
77
+ ```
@@ -0,0 +1,42 @@
1
+ # Sidebar Sections
2
+
3
+ To add a sidebar section to all the screen within a section, use the sidebar method:
4
+
5
+ sidebar :help do
6
+ "Need help? Email us at help@example.com"
7
+ end
8
+
9
+ This will generate a sidebar on every page for that resource. The first
10
+ argument is used as the title, and can be a symbol, string, or lambda.
11
+
12
+ You can also use [Arbre](https://github.com/gregbell/arbre) to define HTML content.
13
+
14
+ sidebar :help do
15
+ ul do
16
+ li "Second List First Item"
17
+ li "Second List Second Item"
18
+ end
19
+ end
20
+
21
+ Sidebar sections can be rendered on a specific action by using the :only or :except
22
+ options.
23
+
24
+ sidebar :help, only: :index do
25
+ "Need help? Email us at help@example.com"
26
+ end
27
+
28
+ If you want to conditionally display a sidebar section, use the :if option and
29
+ pass it a proc which will be rendered within the context of the view.
30
+
31
+ sidebar :help, if: proc{ current_admin_user.super_admin? } do
32
+ "Only for super admins!"
33
+ end
34
+
35
+ If you only pass a symbol, Active Admin will attempt to locate a partial to render.
36
+
37
+ # Will render app/views/admin/posts/_help_sidebar.html.erb
38
+ sidebar :help
39
+
40
+ Or you can pass your own custom partial to render.
41
+
42
+ sidebar :help, partial: "custom_help_partial"