andrewroth_activeadmin 0.3.4
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 +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -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 +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -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/_utilities.scss +17 -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/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -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 +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -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/filters.feature +35 -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 +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -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 +96 -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 +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/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/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -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 +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -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 +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.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 +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -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 +50 -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 +105 -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 +138 -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 +45 -0
- data/lib/active_admin/scope.rb +31 -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 +17 -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 +69 -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 +57 -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 +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -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 +91 -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/tabbed_navigation.rb +94 -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 +103 -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 +46 -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/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -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/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -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 +209 -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/devise_spec.rb +66 -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 +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -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 +80 -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 +75 -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 +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -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 +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as a Grid
|
|
4
|
+
|
|
5
|
+
Sometimes you want to display the index screen for a set of resources as a grid
|
|
6
|
+
(possibly a grid of thumbnail images). To do so, use the :grid option for the
|
|
7
|
+
index block.
|
|
8
|
+
|
|
9
|
+
index :as => :grid do |product|
|
|
10
|
+
link_to(image_tag(product.image_path), admin_products_path(product))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
The block is rendered within a cell in the grid once for each resource in the
|
|
14
|
+
collection. The resource is passed into the block for you to use in the view.
|
|
15
|
+
|
|
16
|
+
You can customize the number of colums that are rendered using the columns
|
|
17
|
+
option:
|
|
18
|
+
|
|
19
|
+
index :as => :grid, :columns => 5 do |product|
|
|
20
|
+
link_to(image_tag(product.image_path), admin_products_path(product))
|
|
21
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as a Table
|
|
4
|
+
|
|
5
|
+
By default, the index page is a table with each of the models content columns and links to
|
|
6
|
+
show, edit and delete the object. There are many ways to customize what gets
|
|
7
|
+
displayed.
|
|
8
|
+
|
|
9
|
+
## Defining Columns
|
|
10
|
+
|
|
11
|
+
To display an attribute or a method on a resource, simply pass a symbol into the
|
|
12
|
+
column method:
|
|
13
|
+
|
|
14
|
+
index do
|
|
15
|
+
column :title
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
If the default title does not work for you, pass it as the first argument:
|
|
19
|
+
|
|
20
|
+
index do
|
|
21
|
+
column "My Custom Title", :title
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Sometimes calling methods just isn't enough and you need to write some view
|
|
25
|
+
specific code. For example, say we wanted a colum called Title which holds a
|
|
26
|
+
link to the posts admin screen.
|
|
27
|
+
|
|
28
|
+
The column method accepts a block as an argument which will then be rendered
|
|
29
|
+
within the context of the view for each of the objects in the collection.
|
|
30
|
+
|
|
31
|
+
index do
|
|
32
|
+
column "Title" do |post|
|
|
33
|
+
link_to post.title, admin_post_path(post)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
The block gets called once for each resource in the collection. The resource gets passed into
|
|
38
|
+
the block as an argument.
|
|
39
|
+
|
|
40
|
+
To setup links to View, Edit and Delete a resource, use the default_actions method:
|
|
41
|
+
|
|
42
|
+
index do
|
|
43
|
+
column :title
|
|
44
|
+
default_actions
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
Alternatively, you can create a column with custom links:
|
|
48
|
+
|
|
49
|
+
index do
|
|
50
|
+
column :title
|
|
51
|
+
column "Actions" do |post|
|
|
52
|
+
link_to "View", admin_post_path(post)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Sorting
|
|
58
|
+
|
|
59
|
+
When a column is generated from an Active Record attribute, the table is
|
|
60
|
+
sortable by default. If you are creating a custom column, you may need to give
|
|
61
|
+
Active Admin a hint for how to sort the table.
|
|
62
|
+
|
|
63
|
+
If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
64
|
+
is the attribute which gets used to sort objects using Active Record.
|
|
65
|
+
|
|
66
|
+
index do
|
|
67
|
+
column "Title", :sortable => :title do |post|
|
|
68
|
+
link_to post.title, admin_post_path(post)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
You can turn off sorting on any column by passing false:
|
|
73
|
+
|
|
74
|
+
index do
|
|
75
|
+
column :title, :sortable => false
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
## Showing and Hiding Columns
|
|
79
|
+
|
|
80
|
+
The entire index block is rendered within the context of the view, so you can
|
|
81
|
+
easily do things that show or hide columns based on the current context.
|
|
82
|
+
|
|
83
|
+
For example, if you were using CanCan:
|
|
84
|
+
|
|
85
|
+
index do
|
|
86
|
+
column :title, :sortable => false
|
|
87
|
+
if can? :manage, Post
|
|
88
|
+
column :some_secret_data
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Customizing the CSV format
|
|
2
|
+
|
|
3
|
+
Active Admin provides CSV file downloads on the index screen for each Resource.
|
|
4
|
+
By default it will render a CSV file with all the content columns of your
|
|
5
|
+
registered model.
|
|
6
|
+
|
|
7
|
+
Customizing the CSV format is as simple as customizing the index page.
|
|
8
|
+
|
|
9
|
+
ActiveAdmin.register Post do
|
|
10
|
+
csv do
|
|
11
|
+
column :title
|
|
12
|
+
column("Author") { |post| post.author.full_name }
|
|
13
|
+
end
|
|
14
|
+
end
|
data/docs/5-forms.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Customizing the Form
|
|
2
|
+
|
|
3
|
+
Active Admin gives complete control over the output of the form by creating a thin DSL on top of
|
|
4
|
+
the fabulous DSL created by Formtastic (http://github.com/justinfrench/formtastic).
|
|
5
|
+
|
|
6
|
+
ActiveAdmin.register Post do
|
|
7
|
+
|
|
8
|
+
form do |f|
|
|
9
|
+
f.inputs "Details" do
|
|
10
|
+
f.input :title
|
|
11
|
+
f.input :published_at, :label => "Publish Post At"
|
|
12
|
+
f.input :category
|
|
13
|
+
end
|
|
14
|
+
f.inputs "Content" do
|
|
15
|
+
f.input :body
|
|
16
|
+
end
|
|
17
|
+
f.buttons
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Please view the documentation for Formtastic to see all the wonderful things you can do:
|
|
23
|
+
http://github.com/justinfrench/formtastic
|
|
24
|
+
|
|
25
|
+
If you require a more custom form than can be provided through the DSL, you can pass
|
|
26
|
+
a partial in to render the form yourself.
|
|
27
|
+
|
|
28
|
+
For example:
|
|
29
|
+
|
|
30
|
+
ActiveAdmin.register Post do
|
|
31
|
+
form :partial => "form"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
Then implement app/views/admin/posts/_form.html.erb:
|
|
35
|
+
|
|
36
|
+
<%= semantic_form_for [:admin, @post] do |f| %>
|
|
37
|
+
<%= f.inputs :title, :body %>
|
|
38
|
+
<%= f.buttons :commit %>
|
|
39
|
+
<% end %>
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
|
23
|
+
|
|
24
|
+
If you'd like to keep the default active_admin look, you can also use "attributes_table":
|
|
25
|
+
|
|
26
|
+
ActiveAdmin.register Ad do
|
|
27
|
+
show do |ad|
|
|
28
|
+
attributes_table do
|
|
29
|
+
row :title
|
|
30
|
+
row :image do
|
|
31
|
+
image_tag(ad.image.url)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
active_admin_comments
|
|
35
|
+
end
|
|
36
|
+
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
|