activeadmin-orac 1.0.0.pre4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (529) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +49 -0
  3. data/.hound.yml +14 -0
  4. data/.travis.yml +40 -0
  5. data/.yardopts +8 -0
  6. data/CHANGELOG.md +120 -0
  7. data/CODE_OF_CONDUCT.md +22 -0
  8. data/CONTRIBUTING.md +144 -0
  9. data/Gemfile +78 -0
  10. data/Guardfile +8 -0
  11. data/LICENSE +20 -0
  12. data/README.md +102 -0
  13. data/Rakefile +33 -0
  14. data/activeadmin.gemspec +31 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  16. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  17. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  18. data/app/assets/images/active_admin/orderable.png +0 -0
  19. data/app/assets/javascripts/active_admin/base.js.coffee +9 -0
  20. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  21. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  22. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +7 -0
  23. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +10 -0
  24. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +22 -0
  25. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +3 -0
  26. data/app/assets/javascripts/active_admin/jquery_ui.js.erb +11 -0
  27. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  28. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +44 -0
  29. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  30. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  31. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  32. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +45 -0
  33. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +42 -0
  34. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +24 -0
  35. data/app/assets/stylesheets/active_admin/_base.scss +41 -0
  36. data/app/assets/stylesheets/active_admin/_forms.scss +333 -0
  37. data/app/assets/stylesheets/active_admin/_header.scss +156 -0
  38. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
  39. data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
  40. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  41. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
  42. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  43. data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
  44. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  45. data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
  46. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
  47. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
  48. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  49. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  50. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  51. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  52. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  53. data/app/assets/stylesheets/active_admin/components/_pagination.scss +44 -0
  54. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  55. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  56. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +16 -0
  57. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  58. data/app/assets/stylesheets/active_admin/components/_tables.scss +110 -0
  59. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  60. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  61. data/app/assets/stylesheets/active_admin/mixins/_all.scss +10 -0
  62. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +165 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
  71. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  72. data/app/assets/stylesheets/active_admin/print.scss +288 -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 +41 -0
  76. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -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 +18 -0
  80. data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  81. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  82. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  83. data/app/views/active_admin/devise/shared/_links.erb +27 -0
  84. data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  85. data/app/views/active_admin/page/index.html.arb +1 -0
  86. data/app/views/active_admin/resource/edit.html.arb +1 -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 +39 -0
  92. data/config/locales/ar.yml +136 -0
  93. data/config/locales/bg.yml +121 -0
  94. data/config/locales/bs.yml +122 -0
  95. data/config/locales/ca.yml +107 -0
  96. data/config/locales/cs.yml +110 -0
  97. data/config/locales/da.yml +106 -0
  98. data/config/locales/de-CH.yml +102 -0
  99. data/config/locales/de.yml +135 -0
  100. data/config/locales/el.yml +127 -0
  101. data/config/locales/en-GB.yml +98 -0
  102. data/config/locales/en.yml +136 -0
  103. data/config/locales/es-MX.yml +94 -0
  104. data/config/locales/es.yml +136 -0
  105. data/config/locales/fa.yml +120 -0
  106. data/config/locales/fi.yml +113 -0
  107. data/config/locales/fr.yml +119 -0
  108. data/config/locales/he.yml +95 -0
  109. data/config/locales/hr.yml +124 -0
  110. data/config/locales/hu.yml +99 -0
  111. data/config/locales/id.yml +136 -0
  112. data/config/locales/it.yml +136 -0
  113. data/config/locales/ja.yml +136 -0
  114. data/config/locales/ko.yml +121 -0
  115. data/config/locales/lt.yml +121 -0
  116. data/config/locales/lv.yml +93 -0
  117. data/config/locales/nb.yml +121 -0
  118. data/config/locales/nl.yml +134 -0
  119. data/config/locales/pl.yml +98 -0
  120. data/config/locales/pt-BR.yml +136 -0
  121. data/config/locales/pt-PT.yml +93 -0
  122. data/config/locales/ro.yml +97 -0
  123. data/config/locales/ru.yml +140 -0
  124. data/config/locales/sv-SE.yml +134 -0
  125. data/config/locales/tr.yml +136 -0
  126. data/config/locales/uk.yml +137 -0
  127. data/config/locales/vi.yml +94 -0
  128. data/config/locales/zh-CN.yml +112 -0
  129. data/config/locales/zh-TW.yml +136 -0
  130. data/cucumber.yml +3 -0
  131. data/docs/0-installation.md +112 -0
  132. data/docs/1-general-configuration.md +171 -0
  133. data/docs/10-custom-pages.md +106 -0
  134. data/docs/11-decorators.md +55 -0
  135. data/docs/12-arbre-components.md +150 -0
  136. data/docs/13-authorization-adapter.md +248 -0
  137. data/docs/14-gotchas.md +116 -0
  138. data/docs/2-resource-customization.md +422 -0
  139. data/docs/3-index-pages.md +272 -0
  140. data/docs/3-index-pages/custom-index.md +31 -0
  141. data/docs/3-index-pages/index-as-block.md +21 -0
  142. data/docs/3-index-pages/index-as-blog.md +71 -0
  143. data/docs/3-index-pages/index-as-grid.md +29 -0
  144. data/docs/3-index-pages/index-as-table.md +213 -0
  145. data/docs/4-csv-format.md +58 -0
  146. data/docs/5-forms.md +172 -0
  147. data/docs/6-show-pages.md +105 -0
  148. data/docs/7-sidebars.md +71 -0
  149. data/docs/8-custom-actions.md +160 -0
  150. data/docs/9-batch-actions.md +233 -0
  151. data/docs/README.md +24 -0
  152. data/features/action_item.feature +73 -0
  153. data/features/authorization.feature +64 -0
  154. data/features/authorization_cancan.feature +52 -0
  155. data/features/authorization_pundit.feature +37 -0
  156. data/features/belongs_to.feature +66 -0
  157. data/features/breadcrumb.feature +75 -0
  158. data/features/comments/commenting.feature +171 -0
  159. data/features/comments/viewing_index.feature +19 -0
  160. data/features/dashboard.feature +16 -0
  161. data/features/decorators.feature +43 -0
  162. data/features/development_reloading.feature +30 -0
  163. data/features/edit_page.feature +117 -0
  164. data/features/favicon.feature +20 -0
  165. data/features/first_boot.feature +16 -0
  166. data/features/global_navigation.feature +29 -0
  167. data/features/i18n.feature +43 -0
  168. data/features/index/batch_actions.feature +196 -0
  169. data/features/index/filters.feature +161 -0
  170. data/features/index/format_as_csv.feature +203 -0
  171. data/features/index/formats.feature +66 -0
  172. data/features/index/index_as_block.feature +15 -0
  173. data/features/index/index_as_blog.feature +69 -0
  174. data/features/index/index_as_grid.feature +45 -0
  175. data/features/index/index_as_table.feature +291 -0
  176. data/features/index/index_blank_slate.feature +83 -0
  177. data/features/index/index_parameters.feature +75 -0
  178. data/features/index/index_scope_to.feature +56 -0
  179. data/features/index/index_scopes.feature +251 -0
  180. data/features/index/page_title.feature +42 -0
  181. data/features/index/pagination.feature +63 -0
  182. data/features/index/switch_index_view.feature +73 -0
  183. data/features/menu.feature +53 -0
  184. data/features/meta_tags.feature +21 -0
  185. data/features/new_page.feature +109 -0
  186. data/features/registering_assets.feature +34 -0
  187. data/features/registering_pages.feature +148 -0
  188. data/features/registering_resources.feature +33 -0
  189. data/features/renamed_resource.feature +32 -0
  190. data/features/root_to.feature +17 -0
  191. data/features/show/columns.feature +40 -0
  192. data/features/show/default_content.feature +44 -0
  193. data/features/show/page_title.feature +59 -0
  194. data/features/show/tabs.feature +27 -0
  195. data/features/sidebar_sections.feature +210 -0
  196. data/features/site_title.feature +47 -0
  197. data/features/specifying_actions.feature +93 -0
  198. data/features/step_definitions/action_item_steps.rb +7 -0
  199. data/features/step_definitions/action_link_steps.rb +20 -0
  200. data/features/step_definitions/additional_web_steps.rb +81 -0
  201. data/features/step_definitions/asset_steps.rb +15 -0
  202. data/features/step_definitions/attribute_steps.rb +18 -0
  203. data/features/step_definitions/batch_action_steps.rb +81 -0
  204. data/features/step_definitions/blog_steps.rb +3 -0
  205. data/features/step_definitions/breadcrumb_steps.rb +3 -0
  206. data/features/step_definitions/column_steps.rb +8 -0
  207. data/features/step_definitions/comment_steps.rb +12 -0
  208. data/features/step_definitions/configuration_steps.rb +100 -0
  209. data/features/step_definitions/dashboard_steps.rb +15 -0
  210. data/features/step_definitions/factory_steps.rb +35 -0
  211. data/features/step_definitions/filter_steps.rb +39 -0
  212. data/features/step_definitions/flash_steps.rb +11 -0
  213. data/features/step_definitions/format_steps.rb +52 -0
  214. data/features/step_definitions/i18n_steps.rb +3 -0
  215. data/features/step_definitions/index_scope_steps.rb +21 -0
  216. data/features/step_definitions/index_views_steps.rb +3 -0
  217. data/features/step_definitions/layout_steps.rb +3 -0
  218. data/features/step_definitions/member_link_steps.rb +7 -0
  219. data/features/step_definitions/menu_steps.rb +11 -0
  220. data/features/step_definitions/meta_tag_steps.rb +3 -0
  221. data/features/step_definitions/pagination_steps.rb +15 -0
  222. data/features/step_definitions/sidebar_steps.rb +13 -0
  223. data/features/step_definitions/site_title_steps.rb +17 -0
  224. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  225. data/features/step_definitions/tab_steps.rb +8 -0
  226. data/features/step_definitions/table_steps.rb +116 -0
  227. data/features/step_definitions/user_steps.rb +52 -0
  228. data/features/step_definitions/web_steps.rb +85 -0
  229. data/features/sti_resource.feature +65 -0
  230. data/features/strong_parameters.feature +73 -0
  231. data/features/support/env.rb +162 -0
  232. data/features/support/paths.rb +71 -0
  233. data/features/support/selectors.rb +45 -0
  234. data/features/symbol_leak.feature +35 -0
  235. data/features/users/logging_in.feature +36 -0
  236. data/features/users/logging_out.feature +13 -0
  237. data/features/users/resetting_password.feature +34 -0
  238. data/lib/active_admin.rb +130 -0
  239. data/lib/active_admin/abstract_view_factory.rb +85 -0
  240. data/lib/active_admin/application.rb +324 -0
  241. data/lib/active_admin/asset_registration.rb +29 -0
  242. data/lib/active_admin/authorization_adapter.rb +132 -0
  243. data/lib/active_admin/base_controller.rb +87 -0
  244. data/lib/active_admin/base_controller/authorization.rb +130 -0
  245. data/lib/active_admin/base_controller/menu.rb +38 -0
  246. data/lib/active_admin/batch_actions.rb +16 -0
  247. data/lib/active_admin/batch_actions/controller.rb +40 -0
  248. data/lib/active_admin/batch_actions/resource_extension.rb +159 -0
  249. data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
  250. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
  251. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  252. data/lib/active_admin/callbacks.rb +88 -0
  253. data/lib/active_admin/cancan_adapter.rb +36 -0
  254. data/lib/active_admin/component.rb +5 -0
  255. data/lib/active_admin/controller_action.rb +12 -0
  256. data/lib/active_admin/csv_builder.rb +129 -0
  257. data/lib/active_admin/dependency.rb +168 -0
  258. data/lib/active_admin/deprecation.rb +35 -0
  259. data/lib/active_admin/devise.rb +80 -0
  260. data/lib/active_admin/dsl.rb +173 -0
  261. data/lib/active_admin/engine.rb +16 -0
  262. data/lib/active_admin/error.rb +62 -0
  263. data/lib/active_admin/event.rb +24 -0
  264. data/lib/active_admin/filters.rb +9 -0
  265. data/lib/active_admin/filters/active.rb +30 -0
  266. data/lib/active_admin/filters/dsl.rb +21 -0
  267. data/lib/active_admin/filters/forms.rb +83 -0
  268. data/lib/active_admin/filters/formtastic_addons.rb +79 -0
  269. data/lib/active_admin/filters/humanized.rb +68 -0
  270. data/lib/active_admin/filters/resource_extension.rb +194 -0
  271. data/lib/active_admin/form_builder.rb +145 -0
  272. data/lib/active_admin/generators/boilerplate.rb +45 -0
  273. data/lib/active_admin/helpers/collection.rb +17 -0
  274. data/lib/active_admin/helpers/i18n.rb +7 -0
  275. data/lib/active_admin/helpers/optional_display.rb +38 -0
  276. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  277. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  278. data/lib/active_admin/helpers/settings.rb +115 -0
  279. data/lib/active_admin/inputs.rb +20 -0
  280. data/lib/active_admin/inputs/datepicker_input.rb +20 -0
  281. data/lib/active_admin/inputs/filters/base.rb +44 -0
  282. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  283. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  284. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  285. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  286. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  287. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  288. data/lib/active_admin/inputs/filters/select_input.rb +55 -0
  289. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  290. data/lib/active_admin/menu.rb +108 -0
  291. data/lib/active_admin/menu_collection.rb +93 -0
  292. data/lib/active_admin/menu_item.rb +97 -0
  293. data/lib/active_admin/namespace.rb +247 -0
  294. data/lib/active_admin/order_clause.rb +26 -0
  295. data/lib/active_admin/orm/active_record.rb +5 -0
  296. data/lib/active_admin/orm/active_record/comments.rb +95 -0
  297. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  298. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  299. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  300. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  301. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  302. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +88 -0
  303. data/lib/active_admin/orm/mongoid.rb +1 -0
  304. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  305. data/lib/active_admin/page.rb +92 -0
  306. data/lib/active_admin/page_controller.rb +33 -0
  307. data/lib/active_admin/page_dsl.rb +28 -0
  308. data/lib/active_admin/page_presenter.rb +32 -0
  309. data/lib/active_admin/pundit_adapter.rb +68 -0
  310. data/lib/active_admin/reloader.rb +25 -0
  311. data/lib/active_admin/resource.rb +168 -0
  312. data/lib/active_admin/resource/action_items.rb +108 -0
  313. data/lib/active_admin/resource/belongs_to.rb +44 -0
  314. data/lib/active_admin/resource/controllers.rb +19 -0
  315. data/lib/active_admin/resource/includes.rb +12 -0
  316. data/lib/active_admin/resource/menu.rb +64 -0
  317. data/lib/active_admin/resource/naming.rb +62 -0
  318. data/lib/active_admin/resource/page_presenters.rb +82 -0
  319. data/lib/active_admin/resource/pagination.rb +23 -0
  320. data/lib/active_admin/resource/routes.rb +115 -0
  321. data/lib/active_admin/resource/scope_to.rb +74 -0
  322. data/lib/active_admin/resource/scopes.rb +50 -0
  323. data/lib/active_admin/resource/sidebars.rb +28 -0
  324. data/lib/active_admin/resource_collection.rb +72 -0
  325. data/lib/active_admin/resource_controller.rb +51 -0
  326. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  327. data/lib/active_admin/resource_controller/data_access.rb +317 -0
  328. data/lib/active_admin/resource_controller/decorators.rb +102 -0
  329. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  330. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  331. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  332. data/lib/active_admin/resource_controller/streaming.rb +43 -0
  333. data/lib/active_admin/resource_dsl.rb +190 -0
  334. data/lib/active_admin/router.rb +106 -0
  335. data/lib/active_admin/scope.rb +56 -0
  336. data/lib/active_admin/sidebar_section.rb +37 -0
  337. data/lib/active_admin/version.rb +3 -0
  338. data/lib/active_admin/view_factory.rb +27 -0
  339. data/lib/active_admin/view_helpers.rb +19 -0
  340. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  341. data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
  342. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +33 -0
  343. data/lib/active_admin/view_helpers/display_helper.rb +97 -0
  344. data/lib/active_admin/view_helpers/download_format_links_helper.rb +46 -0
  345. data/lib/active_admin/view_helpers/fields_for.rb +51 -0
  346. data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
  347. data/lib/active_admin/view_helpers/form_helper.rb +20 -0
  348. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +97 -0
  349. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  350. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  351. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  352. data/lib/active_admin/views.rb +8 -0
  353. data/lib/active_admin/views/action_items.rb +17 -0
  354. data/lib/active_admin/views/components/active_admin_form.rb +124 -0
  355. data/lib/active_admin/views/components/attributes_table.rb +94 -0
  356. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  357. data/lib/active_admin/views/components/columns.rb +161 -0
  358. data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
  359. data/lib/active_admin/views/components/index_list.rb +68 -0
  360. data/lib/active_admin/views/components/paginated_collection.rb +163 -0
  361. data/lib/active_admin/views/components/panel.rb +38 -0
  362. data/lib/active_admin/views/components/scopes.rb +66 -0
  363. data/lib/active_admin/views/components/sidebar_section.rb +34 -0
  364. data/lib/active_admin/views/components/site_title.rb +55 -0
  365. data/lib/active_admin/views/components/status_tag.rb +80 -0
  366. data/lib/active_admin/views/components/table_for.rb +218 -0
  367. data/lib/active_admin/views/components/tabs.rb +28 -0
  368. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  369. data/lib/active_admin/views/footer.rb +20 -0
  370. data/lib/active_admin/views/header.rb +32 -0
  371. data/lib/active_admin/views/index_as_block.rb +36 -0
  372. data/lib/active_admin/views/index_as_blog.rb +156 -0
  373. data/lib/active_admin/views/index_as_grid.rb +80 -0
  374. data/lib/active_admin/views/index_as_table.rb +373 -0
  375. data/lib/active_admin/views/pages/base.rb +147 -0
  376. data/lib/active_admin/views/pages/form.rb +65 -0
  377. data/lib/active_admin/views/pages/index.rb +163 -0
  378. data/lib/active_admin/views/pages/layout.rb +26 -0
  379. data/lib/active_admin/views/pages/page.rb +30 -0
  380. data/lib/active_admin/views/pages/show.rb +59 -0
  381. data/lib/active_admin/views/tabbed_navigation.rb +66 -0
  382. data/lib/active_admin/views/title_bar.rb +55 -0
  383. data/lib/activeadmin.rb +1 -0
  384. data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
  385. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  386. data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  387. data/lib/generators/active_admin/devise/devise_generator.rb +65 -0
  388. data/lib/generators/active_admin/install/install_generator.rb +45 -0
  389. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +272 -0
  390. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +30 -0
  391. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  392. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  393. data/lib/generators/active_admin/page/USAGE +8 -0
  394. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  395. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  396. data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
  397. data/lib/generators/active_admin/resource/templates/admin.rb +45 -0
  398. data/lib/ransack_ext.rb +20 -0
  399. data/script/local +53 -0
  400. data/script/travis_cache +107 -0
  401. data/script/use_rails +53 -0
  402. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  403. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  404. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  405. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  406. data/spec/javascripts/fixtures/flashes.html +2 -0
  407. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  408. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  409. data/spec/javascripts/support/jasmine.yml +74 -0
  410. data/spec/javascripts/support/jasmine_config.rb +23 -0
  411. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  412. data/spec/rails_helper.rb +161 -0
  413. data/spec/requests/default_namespace_spec.rb +61 -0
  414. data/spec/requests/javascript_spec.rb +22 -0
  415. data/spec/requests/memory_spec.rb +21 -0
  416. data/spec/requests/stylesheets_spec.rb +18 -0
  417. data/spec/spec_helper.rb +17 -0
  418. data/spec/support/active_admin_request_helpers.rb +27 -0
  419. data/spec/support/deferred_garbage_collection.rb +19 -0
  420. data/spec/support/detect_rails_version.rb +34 -0
  421. data/spec/support/jslint.yml +80 -0
  422. data/spec/support/rails_template.rb +162 -0
  423. data/spec/support/rails_template_with_data.rb +74 -0
  424. data/spec/support/templates/admin/stores.rb +9 -0
  425. data/spec/support/templates/en.yml +8 -0
  426. data/spec/support/templates/manifest.js +3 -0
  427. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  428. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  429. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  430. data/spec/support/templates/policies/application_policy.rb +45 -0
  431. data/spec/support/templates/policies/category_policy.rb +7 -0
  432. data/spec/support/templates/policies/post_policy.rb +15 -0
  433. data/spec/support/templates/policies/store_policy.rb +11 -0
  434. data/spec/support/templates/policies/user_policy.rb +11 -0
  435. data/spec/support/templates/post_decorator.rb +11 -0
  436. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  437. data/spec/unit/action_builder_spec.rb +134 -0
  438. data/spec/unit/active_admin_spec.rb +11 -0
  439. data/spec/unit/application_spec.rb +165 -0
  440. data/spec/unit/asset_registration_spec.rb +52 -0
  441. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  442. data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
  443. data/spec/unit/authorization/index_overriding_spec.rb +23 -0
  444. data/spec/unit/auto_link_spec.rb +69 -0
  445. data/spec/unit/batch_actions/resource_spec.rb +97 -0
  446. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  447. data/spec/unit/belongs_to_spec.rb +65 -0
  448. data/spec/unit/cancan_adapter_spec.rb +43 -0
  449. data/spec/unit/comments_spec.rb +188 -0
  450. data/spec/unit/component_spec.rb +18 -0
  451. data/spec/unit/config_shared_examples.rb +59 -0
  452. data/spec/unit/controller_filters_spec.rb +41 -0
  453. data/spec/unit/csv_builder_spec.rb +303 -0
  454. data/spec/unit/dependency_spec.rb +135 -0
  455. data/spec/unit/devise_spec.rb +96 -0
  456. data/spec/unit/dsl_spec.rb +122 -0
  457. data/spec/unit/filters/filter_form_builder_spec.rb +434 -0
  458. data/spec/unit/filters/humanized_spec.rb +64 -0
  459. data/spec/unit/filters/resource_spec.rb +128 -0
  460. data/spec/unit/form_builder_spec.rb +932 -0
  461. data/spec/unit/generators/install_spec.rb +24 -0
  462. data/spec/unit/helpers/collection_spec.rb +65 -0
  463. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  464. data/spec/unit/helpers/settings_spec.rb +30 -0
  465. data/spec/unit/i18n_spec.rb +12 -0
  466. data/spec/unit/menu_collection_spec.rb +62 -0
  467. data/spec/unit/menu_item_spec.rb +143 -0
  468. data/spec/unit/menu_spec.rb +71 -0
  469. data/spec/unit/namespace/authorization_spec.rb +27 -0
  470. data/spec/unit/namespace/register_page_spec.rb +73 -0
  471. data/spec/unit/namespace/register_resource_spec.rb +160 -0
  472. data/spec/unit/namespace_spec.rb +103 -0
  473. data/spec/unit/order_clause_spec.rb +81 -0
  474. data/spec/unit/page_controller_spec.rb +5 -0
  475. data/spec/unit/page_spec.rb +78 -0
  476. data/spec/unit/pretty_format_spec.rb +77 -0
  477. data/spec/unit/pundit_adapter_spec.rb +98 -0
  478. data/spec/unit/resource/action_items_spec.rb +65 -0
  479. data/spec/unit/resource/includes_spec.rb +21 -0
  480. data/spec/unit/resource/menu_spec.rb +18 -0
  481. data/spec/unit/resource/naming_spec.rb +122 -0
  482. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  483. data/spec/unit/resource/pagination_spec.rb +38 -0
  484. data/spec/unit/resource/routes_spec.rb +77 -0
  485. data/spec/unit/resource/scopes_spec.rb +50 -0
  486. data/spec/unit/resource/sidebars_spec.rb +43 -0
  487. data/spec/unit/resource_collection_spec.rb +175 -0
  488. data/spec/unit/resource_controller/data_access_spec.rb +140 -0
  489. data/spec/unit/resource_controller/decorators_spec.rb +94 -0
  490. data/spec/unit/resource_controller/sidebars_spec.rb +38 -0
  491. data/spec/unit/resource_controller_spec.rb +269 -0
  492. data/spec/unit/resource_registration_spec.rb +56 -0
  493. data/spec/unit/resource_spec.rb +337 -0
  494. data/spec/unit/routing_spec.rb +185 -0
  495. data/spec/unit/scope_spec.rb +185 -0
  496. data/spec/unit/settings_spec.rb +118 -0
  497. data/spec/unit/view_factory_spec.rb +19 -0
  498. data/spec/unit/view_helpers/breadcrumbs_spec.rb +217 -0
  499. data/spec/unit/view_helpers/display_helper_spec.rb +165 -0
  500. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  501. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  502. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  503. data/spec/unit/view_helpers/form_helper_spec.rb +43 -0
  504. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +139 -0
  505. data/spec/unit/views/components/attributes_table_spec.rb +272 -0
  506. data/spec/unit/views/components/batch_action_selector_spec.rb +43 -0
  507. data/spec/unit/views/components/blank_slate_spec.rb +27 -0
  508. data/spec/unit/views/components/columns_spec.rb +189 -0
  509. data/spec/unit/views/components/index_list_spec.rb +35 -0
  510. data/spec/unit/views/components/index_table_for_spec.rb +127 -0
  511. data/spec/unit/views/components/paginated_collection_spec.rb +249 -0
  512. data/spec/unit/views/components/panel_spec.rb +58 -0
  513. data/spec/unit/views/components/sidebar_section_spec.rb +68 -0
  514. data/spec/unit/views/components/site_title_spec.rb +78 -0
  515. data/spec/unit/views/components/status_tag_spec.rb +249 -0
  516. data/spec/unit/views/components/table_for_spec.rb +434 -0
  517. data/spec/unit/views/components/tabs_spec.rb +39 -0
  518. data/spec/unit/views/components/unsupported_browser_spec.rb +41 -0
  519. data/spec/unit/views/index_as_blog_spec.rb +76 -0
  520. data/spec/unit/views/pages/form_spec.rb +51 -0
  521. data/spec/unit/views/pages/index_spec.rb +60 -0
  522. data/spec/unit/views/pages/layout_spec.rb +59 -0
  523. data/spec/unit/views/pages/show_spec.rb +33 -0
  524. data/spec/unit/views/tabbed_navigation_spec.rb +158 -0
  525. data/tasks/docs.rake +37 -0
  526. data/tasks/parallel_tests.rake +66 -0
  527. data/tasks/test.rake +91 -0
  528. data/tasks/yard.rake +9 -0
  529. metadata +974 -0
@@ -0,0 +1,272 @@
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
+ 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
+ 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
+ ## Custom Index
52
+
53
+ Active Admin does not limit the index page to be a table, block, blog or grid.
54
+ If you've created your own [custom index](3-index-pages/custom-index.md) page it
55
+ can be included by setting `:as` to the class of the index component you created.
56
+
57
+ ```ruby
58
+ index as: ActiveAdmin::Views::IndexAsMyIdea do
59
+ column :image_title
60
+ actions
61
+ end
62
+ ```
63
+
64
+ ## Index Filters
65
+
66
+ By default the index screen includes a "Filters" sidebar on the right hand side
67
+ with a filter for each attribute of the registered model. You can customize the
68
+ filters that are displayed as well as the type of widgets they use.
69
+
70
+ To display a filter for an attribute, use the `filter` method
71
+
72
+ ```ruby
73
+ ActiveAdmin.register Post do
74
+ filter :title
75
+ end
76
+ ```
77
+
78
+ Out of the box, Active Admin supports the following filter types:
79
+
80
+ * *:string* - A search field
81
+ * *:date_range* - A start and end date field with calendar inputs
82
+ * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
83
+ Than" and an input for a value.
84
+ * *:select* - A drop down which filters based on a selected item in a collection
85
+ or all.
86
+ * *:check_boxes* - A list of check boxes users can turn on and off to filter
87
+
88
+ By default, Active Admin will pick the most relevant filter based on the
89
+ attribute type. You can force the type by passing the `:as` option.
90
+
91
+ ```ruby
92
+ filter :author, as: :check_boxes
93
+ ```
94
+
95
+ The `:check_boxes` and `:select` types accept options for the collection. By default
96
+ it attempts to create a collection based on an association. But you can pass in
97
+ the collection as a proc to be called at render time.
98
+
99
+ ```ruby
100
+ filter :author, as: :check_boxes, collection: proc { Author.all }
101
+ ```
102
+
103
+ You can change the filter label by passing a label option:
104
+
105
+ ```ruby
106
+ filter :author, label: 'Something else'
107
+ ```
108
+
109
+ By default, Active Admin will try to use ActiveModel I18n to determine the label.
110
+
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.
114
+
115
+ ```ruby
116
+ filter :first_name_or_last_name_cont, as: :string, label: "Name"
117
+ ```
118
+
119
+ Filters can also be disabled for a resource, a namespace or the entire
120
+ application.
121
+
122
+ To disable for a specific resource:
123
+
124
+ ```ruby
125
+ ActiveAdmin.register Post do
126
+ config.filters = false
127
+ end
128
+ ```
129
+
130
+ To disable for a namespace, in the initializer:
131
+
132
+ ```ruby
133
+ ActiveAdmin.setup do |config|
134
+ config.namespace :my_namespace do |my_namespace|
135
+ my_namespace.filters = false
136
+ end
137
+ end
138
+ ```
139
+
140
+ Or to disable for the entire application:
141
+
142
+ ```ruby
143
+ ActiveAdmin.setup do |config|
144
+ config.filters = false
145
+ end
146
+ ```
147
+
148
+ You can also add a filter and still preserve the default filters:
149
+
150
+ ```ruby
151
+ preserve_default_filters!
152
+ filter :author
153
+ ```
154
+
155
+ Or you can also remove a filter and still preserve the default filters:
156
+
157
+ ```ruby
158
+ preserve_default_filters!
159
+ remove_filter :id
160
+ ```
161
+
162
+ ## Index Scopes
163
+
164
+ You can define custom scopes for your index page. This will add a tab bar above
165
+ the index table to quickly filter your collection on pre-defined scopes. There are
166
+ a number of ways to define your scopes:
167
+
168
+ ```ruby
169
+ scope :all, default: true
170
+
171
+ # assumes the model has a scope called ':active'
172
+ scope :active
173
+
174
+ # renames model scope ':leaves' to ':subcategories'
175
+ scope "Subcategories", :leaves
176
+
177
+ # Dynamic scope name
178
+ scope ->{ Date.today.strftime '%A' }, :published_today
179
+
180
+ # custom scope not defined on the model
181
+ scope("Inactive") { |scope| scope.where(active: false) }
182
+
183
+ # conditionally show a custom controller scope
184
+ scope "Published", if: proc { current_admin_user.can? :manage, Posts } do |posts|
185
+ posts.published
186
+ end
187
+ ```
188
+
189
+ ## Index default sort order
190
+
191
+ You can define the default sort order for index pages:
192
+
193
+ ```ruby
194
+ ActiveAdmin.register Post do
195
+ config.sort_order = 'name_asc'
196
+ end
197
+ ```
198
+
199
+ ## Index pagination
200
+
201
+ You can set the number of records per page as default:
202
+
203
+ ```ruby
204
+ ActiveAdmin.setup do |config|
205
+ config.default_per_page = 30
206
+ end
207
+ ```
208
+
209
+ You can set the number of records per page per resources:
210
+
211
+ ```ruby
212
+ ActiveAdmin.register Post do
213
+ config.per_page = 10
214
+ end
215
+ ```
216
+
217
+ You can change it per request / action too:
218
+
219
+ ```ruby
220
+ controller do
221
+ before_action only: :index do
222
+ @per_page = 100
223
+ end
224
+ end
225
+ ```
226
+
227
+ You can also disable pagination:
228
+
229
+ ```ruby
230
+ ActiveAdmin.register Post do
231
+ config.paginate = false
232
+ end
233
+ ```
234
+
235
+ If you have a very large database, you might want to disable `SELECT COUNT(*)`
236
+ queries caused by the pagination info at the bottom of the page:
237
+
238
+ ```ruby
239
+ ActiveAdmin.register Post do
240
+ index pagination_total: false do
241
+ # ...
242
+ end
243
+ end
244
+ ```
245
+
246
+ ## Customizing Download Links
247
+
248
+ You can easily remove or customize the download links you want displayed:
249
+
250
+ ```ruby
251
+ # Per resource:
252
+ ActiveAdmin.register Post do
253
+
254
+ index download_links: false
255
+ index download_links: [:pdf]
256
+ index download_links: proc{ current_user.can_view_download_links? }
257
+
258
+ end
259
+
260
+ # For the entire application:
261
+ ActiveAdmin.setup do |config|
262
+
263
+ config.download_links = false
264
+ config.download_links = [:csv, :xml, :json, :pdf]
265
+ config.download_links = proc { current_user.can_view_download_links? }
266
+
267
+ end
268
+ ```
269
+
270
+ 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.
271
+
272
+ You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the PDF generation you want.
@@ -0,0 +1,31 @@
1
+ # Custom Index
2
+
3
+ If the supplied Active Admin index components are insufficient for your project
4
+ feel free to define your own. Index classes inherit from `ActiveAdmin::Component`
5
+ and require a `build` method and an `index_name` class method.
6
+
7
+ ```ruby
8
+ module ActiveAdmin
9
+ module Views
10
+ class IndexAsMyIdea < ActiveAdmin::Component
11
+
12
+ def build(page_presenter, collection)
13
+ # ...
14
+ end
15
+
16
+ def self.index_name
17
+ "my_idea"
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ ```
24
+
25
+ The build method takes a PagePresenter object and collection of whatever you
26
+ choose.
27
+
28
+ 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
30
+ index component will not be able take advantage of Active Admin's
31
+ *multiple index pages* feature.
@@ -0,0 +1,21 @@
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 Block
8
+
9
+ If you want to fully customize the display of your resources on the index
10
+ screen, Index as a Block allows you to render a block of content for each
11
+ resource.
12
+
13
+ ```ruby
14
+ index as: :block do |product|
15
+ div for: product do
16
+ resource_selection_cell product
17
+ h2 auto_link product.title
18
+ div simple_format product.description
19
+ end
20
+ end
21
+ ```
@@ -0,0 +1,71 @@
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 Blog
8
+
9
+ Render your index page as a set of posts. The post has two main options:
10
+ title and body.
11
+
12
+ ```ruby
13
+ index as: :blog do
14
+ title :my_title # Calls #my_title on each resource
15
+ body :my_body # Calls #my_body on each resource
16
+ end
17
+ ```
18
+
19
+ ## Post Title
20
+
21
+ The title is the content that will be rendered within a link to the
22
+ resource. There are two main ways to set the content for the title
23
+
24
+ First, you can pass in a method to be called on your resource. For example:
25
+
26
+ ```ruby
27
+ index as: :blog do
28
+ title :a_method_to_call
29
+ end
30
+ ```
31
+
32
+ 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
34
+ is passed in to the block. For Example:
35
+
36
+ ```ruby
37
+ index as: :blog do
38
+ title do |post|
39
+ span post.title, class: 'title'
40
+ span post.created_at, class: 'created_at'
41
+ end
42
+ end
43
+ ```
44
+
45
+ ## Post Body
46
+
47
+ The body is rendered underneath the title of each post. The same two
48
+ style of options work as the Post Title above.
49
+
50
+ Call a method on the resource as the body:
51
+
52
+ ```ruby
53
+ index as: :blog do
54
+ title :my_title
55
+ body :my_body
56
+ end
57
+ ```
58
+
59
+ Or, render a block as the body:
60
+
61
+ ```ruby
62
+ index as: :blog do
63
+ title :my_title
64
+ body do |post|
65
+ div truncate post.title
66
+ div class: 'meta' do
67
+ span "Post in #{post.categories.join(', ')}"
68
+ end
69
+ end
70
+ end
71
+ ```
@@ -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,213 @@
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
+ ## Defining Actions
59
+
60
+ To setup links to View, Edit and Delete a resource, use the `actions` method:
61
+
62
+ ```ruby
63
+ index do
64
+ selectable_column
65
+ column :title
66
+ actions
67
+ end
68
+ ```
69
+
70
+ You can also append custom links to the default links:
71
+
72
+ ```ruby
73
+ index do
74
+ selectable_column
75
+ column :title
76
+ actions do |post|
77
+ item "Preview", admin_preview_post_path(post), class: "member_link"
78
+ end
79
+ end
80
+ ```
81
+
82
+ Or forego the default links entirely:
83
+
84
+ ```ruby
85
+ index do
86
+ column :title
87
+ actions defaults: false do |post|
88
+ item "View", admin_post_path(post)
89
+ item "Edit", edit_admin_post_path(post)
90
+ item "Delete", admin_post_path(post), method: :delete
91
+ end
92
+ end
93
+ ```
94
+
95
+ Or append custom action with custom html via arbre:
96
+
97
+ ```ruby
98
+ index do
99
+ column :title
100
+ actions do |post|
101
+ a "View", href: admin_post_path(post)
102
+ end
103
+ end
104
+ ```
105
+
106
+ In case you prefer to list actions links in a dropdown menu:
107
+
108
+ ```ruby
109
+ index do
110
+ selectable_column
111
+ column :title
112
+ actions dropdown: true do |post|
113
+ item "Preview", admin_preview_post_path(post)
114
+ end
115
+ end
116
+ ```
117
+
118
+ In addition, you can insert the position of the row in the greater collection by using the index_column special command:
119
+
120
+ ```ruby
121
+ index do
122
+ selectable_column
123
+ index_column
124
+ column :title
125
+ end
126
+ ```
127
+
128
+ index_column take an optional offset parameter to allow a developer to set the starting number for the index (default is 1).
129
+
130
+ ## Sorting
131
+
132
+ When a column is generated from an Active Record attribute, the table is
133
+ sortable by default. If you are creating a custom column, you may need to give
134
+ Active Admin a hint for how to sort the table.
135
+
136
+ If a column is defined using a block, you must pass the key to turn on sorting. The key
137
+ is the attribute which gets used to sort objects using Active Record.
138
+
139
+ By default, this is the column on the resource's table that the attribute corresponds to.
140
+ Otherwise, any attribute that the resource collection responds to can be used.
141
+
142
+ ```ruby
143
+ index do
144
+ column :title, sortable: :title do |post|
145
+ link_to post.title, admin_post_path(post)
146
+ end
147
+ end
148
+ ```
149
+
150
+ You can turn off sorting on any column by passing false:
151
+
152
+ ```ruby
153
+ index do
154
+ column :title, sortable: false
155
+ end
156
+ ```
157
+
158
+ It's also possible to sort by PostgreSQL's hstore column key. You should set `sortable`
159
+ option to a `column->'key'` value:
160
+
161
+ ```ruby
162
+ index do
163
+ column :keywords, sortable: "meta->'keywords'"
164
+ end
165
+ ```
166
+
167
+ ## Associated Sorting
168
+
169
+ You're normally able to sort columns alphabetically, but by default you
170
+ can't sort by associated objects. Though with a few simple changes, you can.
171
+
172
+ Assuming you're on the Books index page, and Book has_one Publisher:
173
+
174
+ ```ruby
175
+ controller do
176
+ def scoped_collection
177
+ super.includes :publisher # prevents N+1 queries to your database
178
+ end
179
+ end
180
+ ```
181
+
182
+ Then it's simple to sort by any Publisher attribute from within the index table:
183
+
184
+ ```ruby
185
+ index do
186
+ column :publisher, sortable: 'publishers.name'
187
+ end
188
+ ```
189
+
190
+ ## Showing and Hiding Columns
191
+
192
+ The entire index block is rendered within the context of the view, so you can
193
+ easily do things that show or hide columns based on the current context.
194
+
195
+ For example, if you were using CanCan:
196
+
197
+ ```ruby
198
+ index do
199
+ column :title, sortable: false
200
+ column :secret_data if can? :manage, Post
201
+ end
202
+ ```
203
+
204
+ ## Custom row class
205
+
206
+ In order to add special class to table rows pass the proc object as a `:row_class` option
207
+ of the `index` method.
208
+
209
+ ```ruby
210
+ index row_class: ->elem { 'active' if elem.active? } do
211
+ # columns
212
+ end
213
+ ```