nsm-activeadmin 0.2.2

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 (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -0,0 +1,22 @@
1
+ # Customizing the Show Screen
2
+
3
+ Customizing the show screen is as simple as implementing the show block:
4
+
5
+ ActiveAdmin.register Post do
6
+ show do
7
+ h3 post.title
8
+ div do
9
+ simple_format post.body
10
+ end
11
+ end
12
+ end
13
+
14
+ The show block is rendered within the context of the view and uses the Arbre HTML DSL. You
15
+ can also render a partial at any point.
16
+
17
+ ActiveAdmin.register Post do
18
+ show do
19
+ # renders app/views/admin/posts/_some_partial.html.erb
20
+ render "some_partial"
21
+ end
22
+ end
@@ -0,0 +1,35 @@
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 section on each screen of the resource. With the block as
10
+ the contents of the section. The first argument is the section title.
11
+
12
+ You can also use Arbre syntax to define the 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 only pass a symbol, Active Admin will attempt to locate a partial to render.
29
+
30
+ # Will render app/views/admin/posts/_help_sidebar.html.erb
31
+ sidebar :help
32
+
33
+ Or you can pass your own custom partial to render.
34
+
35
+ sidebar :help, :partial => "custom_help_partial"
@@ -0,0 +1,123 @@
1
+ # Custom Controller Actions
2
+
3
+ Active Admin allows you to override and modify the underlying controller which
4
+ is generated for you. There are helpers to add collection and member actions, or
5
+ you can drop right in to the controller and modify its behavior.
6
+
7
+ ## Collection Actions
8
+
9
+ A collection action is a controller action which operates on the collection of
10
+ resources. This method adds both the action to the controller as well as
11
+ generating a route for you.
12
+
13
+ To add a collection action, use the collection_action method:
14
+
15
+
16
+ ActiveAdmin.register Post do
17
+
18
+ collection_action :import_csv, :method => :post do
19
+ # Do some CSV importing work here...
20
+ redirect_to :action => :index, :notice => "CSV imported successfully!"
21
+ end
22
+
23
+ end
24
+
25
+ This collection action will generate a route at "/admin/posts/import_csv"
26
+ pointing to the Admin::PostsController#import_csv controller action.
27
+
28
+ ## Member Actions
29
+
30
+ A member action is a controller action which operates on a single resource.
31
+
32
+ For example, to add a lock action to a user resource, you would do the
33
+ following:
34
+
35
+ ActiveAdmin.register User do
36
+
37
+ member_action :lock, :method => :put do
38
+ user = User.find(params[:id])
39
+ user.lock!
40
+ redirect_to :action => :show, :notice => "Locked!"
41
+ end
42
+
43
+ end
44
+
45
+ This will generate a route at "/admin/users/:id/lock" pointing to the
46
+ Admin::UserController#lock controller action.
47
+
48
+ ## Controller Action HTTP Verb
49
+
50
+ The collection_action and member_actions methods both accept the "method"
51
+ argument to set the HTTP verb for the controller action and route.
52
+
53
+ The generated routes will be scoped to the given method you pass in. By default
54
+ your action will use the :get verb.
55
+
56
+ ## Rendering in Custom Actions
57
+
58
+ Custom controller actions support rendering within the standard Active Admin
59
+ layout.
60
+
61
+ ActiveAdmin.register Post do
62
+
63
+ # /admin/posts/:id/comments
64
+ member_action :comments do
65
+ @post = Post.find(params[:id])
66
+
67
+ # This will render app/views/admin/posts/comments.html.erb
68
+ end
69
+
70
+ end
71
+
72
+ If you would like to use the same view syntax as the rest of Active Admin, you
73
+ can use the Arbre file extension: .arb.
74
+
75
+ For example, create app/views/admin/posts/comments.html.arb with:
76
+
77
+ table_for assigns[:post].comments do
78
+ column :id
79
+ column :author
80
+ column :body do |comment|
81
+ simple_format comment.body
82
+ end
83
+ end
84
+
85
+ ### Page Titles
86
+
87
+ The page title for the custom action will be the internationalized version of
88
+ the controller action name. For example, a member_action named "upload_csv" will
89
+ look up a translation key of "active_admin.upload_csv". If none are found, it
90
+ just title cases the controller action's name.
91
+
92
+ If this method doesn't work for your requirements, you can always set the
93
+ @page_title instance variable in your controller action to customize the page
94
+ title.
95
+
96
+ ActiveAdmin.register Post do
97
+
98
+ # /admin/posts/:id/comments
99
+ member_action :comments do
100
+ @post = Post.find(params[:id])
101
+ @page_title = "#{@post.title}: Comments" # Set the page title
102
+
103
+ # This will render app/views/admin/posts/comments.html.erb
104
+ end
105
+
106
+ end
107
+
108
+ ## Modify the Controller
109
+
110
+ The generated controller is available to you within the registration block by
111
+ using the #controller method.
112
+
113
+ ActiveAdmin.register Post do
114
+
115
+ controller do
116
+ # This code is evaluated within the controller class
117
+
118
+ def define_a_method
119
+ # Instance method
120
+ end
121
+ end
122
+
123
+ end
@@ -0,0 +1,112 @@
1
+ Feature: Commenting
2
+
3
+ As a user
4
+ In order to document changes and have a discussion
5
+ I want to store and view comments on a resource
6
+
7
+ Background:
8
+ Given a post with the title "Hello World" written by "Jane Doe" exists
9
+
10
+ Scenario: View a resource with no comments
11
+ Given a show configuration of:
12
+ """
13
+ ActiveAdmin.register Post
14
+ """
15
+ Then I should see "Comments (0)"
16
+ And I should see "No comments yet."
17
+
18
+ Scenario: Create a new comment
19
+ Given a show configuration of:
20
+ """
21
+ ActiveAdmin.register Post
22
+ """
23
+ When I add a comment "Hello from Comment"
24
+ Then I should see a flash with "Comment was successfully created"
25
+ And I should be in the resource section for posts
26
+ And I should see "Comments (1)"
27
+ And I should see "Hello from Comment"
28
+ And I should see a comment by "admin@example.com"
29
+
30
+ Scenario: View resource with comments turned off
31
+ Given a show configuration of:
32
+ """
33
+ ActiveAdmin.register Post do
34
+ config.comments = false
35
+ end
36
+ """
37
+ Then I should not see "Comments"
38
+
39
+ Scenario: View a resource in a namespace that doesn't have comments
40
+ Given a configuration of:
41
+ """
42
+ ActiveAdmin.register Post, :namespace => :new_namespace
43
+ """
44
+ Given I am logged in
45
+ When I am on the index page for posts in the new_namespace namespace
46
+ And I follow "View"
47
+ Then I should not see "Comments"
48
+
49
+ Scenario: Creating a comment in one namespace does not create it in another
50
+ Given a show configuration of:
51
+ """
52
+ ActiveAdmin.application.allow_comments_in << :public
53
+ ActiveAdmin.register Post
54
+ ActiveAdmin.register Post, :namespace => :public
55
+ """
56
+ When I add a comment "Hello world in admin namespace"
57
+ Then I should see "Hello world in admin namespace"
58
+ When I am on the index page for posts in the public namespace
59
+ And I follow "View"
60
+ Then I should not see "Hello world in admin namespace"
61
+ And I should see "Comments (0)"
62
+
63
+ When I add a comment "Hello world in public namespace"
64
+ Then I should see "Hello world in public namespace"
65
+ When I am on the index page for posts in the admin namespace
66
+ And I follow "View"
67
+ Then I should not see "Hello world in public namespace"
68
+ And I should see "Comments (1)"
69
+
70
+ Scenario: Creating a comment on an aliased resource
71
+ Given a configuration of:
72
+ """
73
+ ActiveAdmin.register Post, :as => "Article"
74
+ """
75
+ Given I am logged in
76
+ When I am on the index page for articles
77
+ And I follow "View"
78
+ When I add a comment "Hello from Comment"
79
+ Then I should see a flash with "Comment was successfully created"
80
+ And I should be in the resource section for articles
81
+
82
+ Scenario: Create an empty comment
83
+ Given a show configuration of:
84
+ """
85
+ ActiveAdmin.register Post
86
+ """
87
+ When I add a comment ""
88
+ Then I should see a flash with "Comment wasn't saved, text was empty."
89
+ And I should see "Comments (0)"
90
+
91
+ Scenario: Viewing all commments for a namespace
92
+ Given a show configuration of:
93
+ """
94
+ ActiveAdmin.register Post
95
+ """
96
+ When I add a comment "Hello from Comment"
97
+ When I am on the index page for comments
98
+ Then I should see a table header with "Body"
99
+ And I should see "Hello from Comment"
100
+
101
+ Scenario: Commenting on a STI subclass
102
+ Given a configuration of:
103
+ """
104
+ ActiveAdmin.register User
105
+ """
106
+ Given I am logged in
107
+ And a publisher named "Pragmatic Publishers" exists
108
+ When I am on the index page for users
109
+ And I follow "View"
110
+ When I add a comment "Hello World"
111
+ Then I should see a flash with "Comment was successfully created"
112
+ And I should be in the resource section for users
@@ -0,0 +1,19 @@
1
+ Feature: Viewing Index of Comments
2
+
3
+ Background:
4
+ Given a post with the title "Hello World" written by "Jane Doe" exists
5
+ Given a show configuration of:
6
+ """
7
+ ActiveAdmin.register Post
8
+ """
9
+
10
+ Scenario: Viewing all commments for a namespace
11
+ When I add a comment "Hello from Comment"
12
+ When I am on the index page for comments
13
+ Then I should see a table header with "Body"
14
+ And I should see a table header with "Resource"
15
+ And I should see a table header with "Author"
16
+ And I should see "Hello from Comment"
17
+ And I should see a link to "Hello World"
18
+ And I should see "admin@example.com"
19
+ And I should not see an action item button "New Comment"
@@ -0,0 +1,26 @@
1
+ Feature: Dashboard
2
+
3
+ Background:
4
+ Given I am logged in
5
+
6
+
7
+ Scenario: With no configuration
8
+ Given a configuration of:
9
+ """
10
+ """
11
+ When I go to the dashboard
12
+ Then I should see the default welcome message
13
+
14
+ Scenario: Displaying a dashboard widget
15
+ Given a configuration of:
16
+ """
17
+ ActiveAdmin::Dashboards.build do
18
+ section 'Hello World' do
19
+ para "Hello world from the content"
20
+ end
21
+ end
22
+ """
23
+ When I go to the dashboard
24
+ Then I should not see the default welcome message
25
+ And I should see a dashboard widget "Hello World"
26
+ And I should see "Hello world from the content"
@@ -0,0 +1,106 @@
1
+ Feature: Edit Page
2
+
3
+ Customizing the form to edit resources
4
+
5
+ Background:
6
+ Given a category named "Music" exists
7
+ And a user named "John Doe" exists
8
+ And a post with the title "Hello World" written by "John Doe" exists
9
+ And I am logged in
10
+ Given a configuration of:
11
+ """
12
+ ActiveAdmin.register Post
13
+ """
14
+ When I am on the index page for posts
15
+
16
+ Scenario: Default form with no config
17
+ Given I follow "Edit"
18
+ Then the "Title" field should contain "Hello World"
19
+ And the "Body" field should contain ""
20
+ And the "Category" field should contain ""
21
+ And the "Author" field should contain the option "John Doe"
22
+ When I fill in "Title" with "Hello World from update"
23
+ When I press "Update Post"
24
+ Then I should see "Post was successfully updated."
25
+ And I should see the attribute "Title" with "Hello World from update"
26
+ And I should see the attribute "Author" with "John Doe"
27
+
28
+ Scenario: Generating a custom form
29
+ Given a configuration of:
30
+ """
31
+ ActiveAdmin.register Post do
32
+ form do |f|
33
+ f.inputs "Your Post" do
34
+ f.input :title
35
+ f.input :body
36
+ end
37
+ f.inputs "Publishing" do
38
+ f.input :published_at
39
+ end
40
+ f.buttons
41
+ end
42
+ end
43
+ """
44
+ Given I follow "Edit"
45
+ Then I should see a fieldset titled "Your Post"
46
+ And I should see a fieldset titled "Publishing"
47
+ And the "Title" field should contain "Hello World"
48
+ And the "Body" field should contain ""
49
+ When I fill in "Title" with "Hello World from update"
50
+ When I press "Update Post"
51
+ Then I should see "Post was successfully updated."
52
+ And I should see the attribute "Title" with "Hello World from update"
53
+ And I should see the attribute "Author" with "John Doe"
54
+
55
+ Scenario: Generating a custom form with :html set, visiting the new page first (bug probing issue #109)
56
+ Given a configuration of:
57
+ """
58
+ ActiveAdmin.register Post do
59
+ form :html => {} do |f|
60
+ f.inputs "Your Post" do
61
+ f.input :title
62
+ f.input :body
63
+ end
64
+ f.inputs "Publishing" do
65
+ f.input :published_at
66
+ end
67
+ f.buttons
68
+ end
69
+ end
70
+ """
71
+ Given I follow "New"
72
+ Then I follow "Posts"
73
+ Then I follow "Edit"
74
+ Then I should see a fieldset titled "Your Post"
75
+ And I should see a fieldset titled "Publishing"
76
+ And the "Title" field should contain "Hello World"
77
+ And the "Body" field should contain ""
78
+ When I fill in "Title" with "Hello World from update"
79
+ When I press "Update Post"
80
+ Then I should see "Post was successfully updated."
81
+ And I should see the attribute "Title" with "Hello World from update"
82
+ And I should see the attribute "Author" with "John Doe"
83
+
84
+ Scenario: Generating a form from a partial
85
+ Given "app/views/admin/posts/_form.html.erb" contains:
86
+ """
87
+ <% url = @post.new_record? ? admin_posts_path : admin_post_path(@post) %>
88
+ <%= active_admin_form_for @post, :url => url do |f|
89
+ f.inputs :title, :body
90
+ f.buttons
91
+ end %>
92
+ """
93
+ Given a configuration of:
94
+ """
95
+ ActiveAdmin.register Post do
96
+ form :partial => "form"
97
+ end
98
+ """
99
+ Given I follow "Edit"
100
+ Then the "Title" field should contain "Hello World"
101
+ And the "Body" field should contain ""
102
+ When I fill in "Title" with "Hello World from update"
103
+ When I press "Update Post"
104
+ Then I should see "Post was successfully updated."
105
+ And I should see the attribute "Title" with "Hello World from update"
106
+ And I should see the attribute "Author" with "John Doe"