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.
- data/.document +5 -0
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.rdoc +76 -0
- data/Gemfile +39 -0
- data/LICENSE +25 -0
- data/README.rdoc +487 -0
- data/Rakefile +27 -0
- data/activeadmin.gemspec +28 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/1-general-configuration.md +52 -0
- data/docs/2-resource-customization.md +35 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +74 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +22 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +81 -0
- data/features/index/index_blank_slate.feature +55 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +26 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +90 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +74 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +14 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +137 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +109 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/settings.rb +63 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +39 -0
- data/lib/active_admin/locales/it.yml +39 -0
- data/lib/active_admin/locales/pt-BR.yml +36 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +151 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +36 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +103 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +144 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +40 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/blank_slate.rb +33 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +70 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +53 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +148 -0
- data/lib/active_admin/views/pages/base.rb +155 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +74 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +58 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +45 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +157 -0
- data/spec/support/detect_rails_version.rb +11 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/html/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +210 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +182 -0
- data/spec/unit/form_builder_spec.rb +239 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +28 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +56 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +260 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +85 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +31 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +31 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +81 -0
- data/spec/unit/views/components/table_for_spec.rb +130 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +49 -0
- data/tasks/yard.rake +6 -0
- 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
|
data/docs/7-sidebars.md
ADDED
|
@@ -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"
|