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
data/.document
ADDED
data/.gitignore
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## MAC OS
|
|
2
|
+
.DS_Store
|
|
3
|
+
|
|
4
|
+
## TEXTMATE
|
|
5
|
+
*.tmproj
|
|
6
|
+
tmtags
|
|
7
|
+
|
|
8
|
+
## EMACS
|
|
9
|
+
*~
|
|
10
|
+
\#*
|
|
11
|
+
.\#*
|
|
12
|
+
|
|
13
|
+
## VIM
|
|
14
|
+
*.swp
|
|
15
|
+
|
|
16
|
+
## PROJECT::GENERAL
|
|
17
|
+
tags
|
|
18
|
+
coverage
|
|
19
|
+
rdoc
|
|
20
|
+
doc
|
|
21
|
+
.yardoc
|
|
22
|
+
pkg
|
|
23
|
+
|
|
24
|
+
## PROJECT::SPECIFIC
|
|
25
|
+
.bundle
|
|
26
|
+
spec/rails
|
|
27
|
+
*.sqlite3-journal
|
|
28
|
+
Gemfile.lock
|
|
29
|
+
Gemfile-*.lock
|
|
30
|
+
capybara*
|
|
31
|
+
viewcumber
|
|
32
|
+
test-rails*
|
|
33
|
+
public
|
|
34
|
+
.rvmrc
|
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/CHANGELOG.rdoc
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
== 0.2.2 (2011-05-26)
|
|
2
|
+
|
|
3
|
+
68 Commits by 13 Contributors
|
|
4
|
+
|
|
5
|
+
=== Features & Enhancements
|
|
6
|
+
|
|
7
|
+
* Arbre includes self closing tags (#100)
|
|
8
|
+
* Controller class & action added to body as CSS classes (#99)
|
|
9
|
+
* HAML is not required by default (#92)
|
|
10
|
+
* Devise login now respects Devise.authentication_keys (#69)
|
|
11
|
+
* Active Admin no longer uses <tt>ActiveRecord::Base#search</tt> (#28)
|
|
12
|
+
* Resource's can now override the label in the menu (#48)
|
|
13
|
+
* Subdirectories are now loaded in the Active Admin load path
|
|
14
|
+
|
|
15
|
+
=== Bug Fixes
|
|
16
|
+
|
|
17
|
+
* Sort order now includes table name (#38)
|
|
18
|
+
* Fixed table_for 'odd', 'even' row classes (#96)
|
|
19
|
+
* Fixed Devise installation if AdminUser already exists (#95)
|
|
20
|
+
* Fixed issues when ActiveAdmin.default_namespaces is false (#32)
|
|
21
|
+
* Added styles for missing HTML 5 inputs (#31)
|
|
22
|
+
* Fixed issue if adding empty Active Admin Comment (#21)
|
|
23
|
+
* Fixed layout issues in FF 4 (#22)
|
|
24
|
+
* Use Sass::Plugin.options[:css_location] instead of Rails.root (#55)
|
|
25
|
+
|
|
26
|
+
=== Test Suite
|
|
27
|
+
|
|
28
|
+
* Update RSpec to latest & fix specs (Thanks Ben Marini & Jeremt Ruppel!) (#100)
|
|
29
|
+
* Added tests for STI models (#52)
|
|
30
|
+
|
|
31
|
+
=== Contributors
|
|
32
|
+
|
|
33
|
+
* Ben Marini
|
|
34
|
+
* Bookis Smuin
|
|
35
|
+
* Caley Woods
|
|
36
|
+
* Doug Puchalski
|
|
37
|
+
* Federico Romero
|
|
38
|
+
* Greg Bell
|
|
39
|
+
* Ian MacLeod
|
|
40
|
+
* Jeremy Ruppel
|
|
41
|
+
* Jordan Sitkin
|
|
42
|
+
* Juha Suuraho
|
|
43
|
+
* Mathieu Martin
|
|
44
|
+
* Paul Annesley
|
|
45
|
+
* Philippe Creux
|
|
46
|
+
|
|
47
|
+
== 0.2.1 (2011-05-12)
|
|
48
|
+
|
|
49
|
+
=== Bug Fixes
|
|
50
|
+
* Fixed issue with dashboard rendering a sidebar
|
|
51
|
+
|
|
52
|
+
== 0.2.0 (2011-05-12)
|
|
53
|
+
|
|
54
|
+
0.2.0 is essentially an entire re-write of Active Admin. Here are some
|
|
55
|
+
of the highlights. 250 commits. Enough said.
|
|
56
|
+
|
|
57
|
+
=== Features & Enhancements
|
|
58
|
+
|
|
59
|
+
* Full visual redesign
|
|
60
|
+
* Integrated Devise for authentication
|
|
61
|
+
* Brand new view and component layer called Arbre (Project coming soon)
|
|
62
|
+
* Added ActiveAdmin::Comments
|
|
63
|
+
|
|
64
|
+
=== Bug Fixes
|
|
65
|
+
|
|
66
|
+
* Too many to list! Been in production for close to a year
|
|
67
|
+
|
|
68
|
+
== 0.1.1 (2010-09-15)
|
|
69
|
+
|
|
70
|
+
=== Bug Fixes
|
|
71
|
+
|
|
72
|
+
* Fixed issues running on Ruby 1.9.2
|
|
73
|
+
|
|
74
|
+
== 0.1.0
|
|
75
|
+
|
|
76
|
+
* Initial release
|
data/Gemfile
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
source 'http://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gemspec
|
|
4
|
+
|
|
5
|
+
require File.expand_path('../spec/support/detect_rails_version', __FILE__)
|
|
6
|
+
|
|
7
|
+
case detect_rails_version
|
|
8
|
+
when /3.0.(\d)*/
|
|
9
|
+
gem 'rails', "= 3.0.#{$1}"
|
|
10
|
+
gem "meta_search", '~> 1.0.0'
|
|
11
|
+
when /3.1.(.*)/
|
|
12
|
+
gem 'rails', "= 3.1.#{$1}"
|
|
13
|
+
gem "meta_search", '>= 1.1.0.pre'
|
|
14
|
+
gem "uglifier"
|
|
15
|
+
gem 'sass-rails', "~> 3.1.0.rc"
|
|
16
|
+
gem 'coffee-script'
|
|
17
|
+
gem 'execjs'
|
|
18
|
+
gem 'therubyracer'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
group :development, :test do
|
|
22
|
+
gem 'sqlite3-ruby', :require => 'sqlite3'
|
|
23
|
+
gem 'rake', '0.8.7', :require => false
|
|
24
|
+
gem 'haml', '~> 3.1.1', :require => false
|
|
25
|
+
gem 'yard'
|
|
26
|
+
gem 'rdiscount' # For yard
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
group :test do
|
|
30
|
+
gem 'rspec', '~> 2.6.0'
|
|
31
|
+
gem 'rspec-rails', '~> 2.6.0'
|
|
32
|
+
gem 'capybara', '1.0.0'
|
|
33
|
+
gem 'cucumber', '0.10.6'
|
|
34
|
+
gem 'cucumber-rails', '0.5.2'
|
|
35
|
+
gem 'database_cleaner'
|
|
36
|
+
gem 'shoulda', '2.11.2', :require => nil
|
|
37
|
+
gem 'launchy'
|
|
38
|
+
gem 'jslint_on_rails', '~> 1.0.6'
|
|
39
|
+
end
|
data/LICENSE
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Copyright (c) 2010 Greg Bell, VersaPay Corporation
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
22
|
+
Iconic Icons are designed by P.J. Onori and are shared under
|
|
23
|
+
the Creative Commons Attribution-Share Alike 3.0 license:
|
|
24
|
+
http://creativecommons.org/licenses/by-sa/3.0/us
|
|
25
|
+
http://somerandomdude.com/projects/iconic/
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
= Active Admin
|
|
2
|
+
|
|
3
|
+
Active Admin is a framework for creating administration style interfaces. It
|
|
4
|
+
abstracts common business application patterns to make it simple for developers
|
|
5
|
+
to implement beautiful and elegant interfaces with very little effort.
|
|
6
|
+
|
|
7
|
+
== Help / Support / Demo
|
|
8
|
+
* Mailing list: http://groups.google.com/group/activeadmin
|
|
9
|
+
* Bug reports: https://github.com/gregbell/active_admin/issues
|
|
10
|
+
* RDoc: http://rubydoc.info/github/gregbell/active_admin/master/frames
|
|
11
|
+
* Guides: http://activeadmin.info/documentation.html
|
|
12
|
+
* Live demo: http://demo.activeadmin.info/admin
|
|
13
|
+
* Website: http://www.activeadmin.info
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
== Goals
|
|
17
|
+
|
|
18
|
+
1. Allow developers to quickly create gorgeous administration interfaces
|
|
19
|
+
<strong>(Not Just CRUD)</strong>
|
|
20
|
+
2. Build a DSL for developers and an interface for businesses.
|
|
21
|
+
3. Ensure that developers can easily customize every nook and cranny of the interface.
|
|
22
|
+
4. Build common interfaces as shareable gems so that the entire community benefits.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
== Getting Started
|
|
26
|
+
|
|
27
|
+
Active Admin is released as a Ruby Gem. The gem is to be installed within a Ruby
|
|
28
|
+
on Rails 3 application. To install, simply add the following to your Gemfile:
|
|
29
|
+
|
|
30
|
+
# Gemfile
|
|
31
|
+
gem 'activeadmin'
|
|
32
|
+
|
|
33
|
+
After updating your bundle, run the installer
|
|
34
|
+
|
|
35
|
+
$> rails generate active_admin:install
|
|
36
|
+
|
|
37
|
+
The installer creates an initializer used for configuring defaults used by Active Admin as well
|
|
38
|
+
as a new folder at <tt>app/admin</tt> to put all your admin configurations.
|
|
39
|
+
|
|
40
|
+
Migrate your db and start the server:
|
|
41
|
+
|
|
42
|
+
$> rake db:migrate
|
|
43
|
+
$> rails server
|
|
44
|
+
|
|
45
|
+
Visit http://localhost:3000/admin and log in using:
|
|
46
|
+
|
|
47
|
+
* *User*: admin@example.com
|
|
48
|
+
* *Password*: password
|
|
49
|
+
|
|
50
|
+
Voila! You're on your brand new Active Admin dashboard.
|
|
51
|
+
|
|
52
|
+
To register your first model, run:
|
|
53
|
+
|
|
54
|
+
$> rails generate active_admin:resource [MyModelName]
|
|
55
|
+
|
|
56
|
+
This creates a file at <tt>app/admin/my_model_names.rb</tt> for configuring the resource.
|
|
57
|
+
Refresh your web browser to see the interface.
|
|
58
|
+
|
|
59
|
+
To learn how to further configure your admin section, keep on reading!
|
|
60
|
+
|
|
61
|
+
== General Configuration
|
|
62
|
+
|
|
63
|
+
=== Admin Users
|
|
64
|
+
|
|
65
|
+
By default Active Admin will include Devise and create a new model called
|
|
66
|
+
AdminUser. If you would like to use another name, you can pass it in to the
|
|
67
|
+
installer through the user option:
|
|
68
|
+
|
|
69
|
+
$> rails generate active_admin:install UserClassName
|
|
70
|
+
|
|
71
|
+
If you don't want the generator to create any user classes:
|
|
72
|
+
|
|
73
|
+
$> rails generate active_admin:install --skip-users
|
|
74
|
+
|
|
75
|
+
=== Authentication
|
|
76
|
+
|
|
77
|
+
Active Admin requires two settings to authenticate and use the current user
|
|
78
|
+
within your application. Both are set in
|
|
79
|
+
<tt>config/initializers/active_admin.rb</tt>. By default they are setup for use
|
|
80
|
+
with Devise and a model named AdminUser. If you chose a different model name,
|
|
81
|
+
you will need to update these settings.
|
|
82
|
+
|
|
83
|
+
Set the method that controllers should call to authenticate the current user
|
|
84
|
+
with:
|
|
85
|
+
|
|
86
|
+
# config/initializers/active_admin.rb
|
|
87
|
+
config.authentication_method = :authenticate_admin_user!
|
|
88
|
+
|
|
89
|
+
Set the method to call within the view to access the current admin user
|
|
90
|
+
|
|
91
|
+
# config/initializers/active_admin.rb
|
|
92
|
+
config.current_user_method = :current_admin_user
|
|
93
|
+
|
|
94
|
+
Both of these settings can be set to false to turn off authentication.
|
|
95
|
+
|
|
96
|
+
# Turn off authentication all together
|
|
97
|
+
config.authentication_method = false
|
|
98
|
+
config.current_user_method = false
|
|
99
|
+
|
|
100
|
+
=== Site Title
|
|
101
|
+
|
|
102
|
+
You can update the title used for the site in the initializer also. By default
|
|
103
|
+
it is set to the name of your Rails.application class name.
|
|
104
|
+
|
|
105
|
+
# config/initializers/active_admin.rb
|
|
106
|
+
config.site_title = "My Admin Site"
|
|
107
|
+
|
|
108
|
+
== Customize The Resource
|
|
109
|
+
|
|
110
|
+
=== Rename the Resource
|
|
111
|
+
|
|
112
|
+
By default, any references to the resource (menu, routes, buttons, etc) in the
|
|
113
|
+
interface will use the name of the class. You can rename the resource by using
|
|
114
|
+
the <tt>:as</tt> option.
|
|
115
|
+
|
|
116
|
+
ActiveAdmin.register Post, :as => "Article"
|
|
117
|
+
|
|
118
|
+
The resource will then be available as /admin/articles
|
|
119
|
+
|
|
120
|
+
=== Customize the Navigation
|
|
121
|
+
|
|
122
|
+
The resource will be displayed in the global navigation by default.
|
|
123
|
+
|
|
124
|
+
To disable the resource from being displayed in the global navigation:
|
|
125
|
+
|
|
126
|
+
ActiveAdmin.register Post do
|
|
127
|
+
menu false
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
To change the name of the label in the menu:
|
|
131
|
+
|
|
132
|
+
ActiveAdmin.register Post do
|
|
133
|
+
menu :label => "My Posts"
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
To add the menu as a child of another menu:
|
|
137
|
+
|
|
138
|
+
ActiveAdmin.register Post do
|
|
139
|
+
menu :parent => "Blog"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
This will create the menu item if it doesn't exist yet.
|
|
143
|
+
|
|
144
|
+
== Customizing the Index Page
|
|
145
|
+
|
|
146
|
+
Filtering and listing resources is one of the most important tasks for
|
|
147
|
+
administering a web application. Active Admin provides many different tools for
|
|
148
|
+
you to build a compelling interface into your data for the admin staff.
|
|
149
|
+
|
|
150
|
+
Built in, Active Admin has the following index renderers:
|
|
151
|
+
|
|
152
|
+
* *Table*: A table drawn with each row being a resource
|
|
153
|
+
* *Grid*: A set of rows and columns each cell being a resource
|
|
154
|
+
* *Blocks*: A set of rows (not tabular) each row being a resource
|
|
155
|
+
* *Blog*: A title and body content, similar to a blog index
|
|
156
|
+
|
|
157
|
+
All index pages also support scopes, filters, pagination, action items, and
|
|
158
|
+
sidebar sections.
|
|
159
|
+
|
|
160
|
+
=== Index as a Table
|
|
161
|
+
|
|
162
|
+
By default, the index page is a table with each of the models content columns and links to
|
|
163
|
+
show, edit and delete the object. There are many ways to customize what gets
|
|
164
|
+
displayed.
|
|
165
|
+
|
|
166
|
+
==== Defining Columns
|
|
167
|
+
|
|
168
|
+
To display an attribute or a method on a resource, simply pass a symbol into the
|
|
169
|
+
column method:
|
|
170
|
+
|
|
171
|
+
index do
|
|
172
|
+
column :title
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
If the default title does not work for you, pass it as the first argument:
|
|
176
|
+
|
|
177
|
+
index do
|
|
178
|
+
column "My Custom Title", :title
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
Sometimes calling methods just isn't enough and you need to write some view
|
|
182
|
+
specific code. For example, say we wanted a colum called Title which holds a
|
|
183
|
+
link to the posts admin screen.
|
|
184
|
+
|
|
185
|
+
The column method accepts a block as an argument which will then be rendered
|
|
186
|
+
within the context of the view for each of the objects in the collection.
|
|
187
|
+
|
|
188
|
+
index do
|
|
189
|
+
column "Title" do |post|
|
|
190
|
+
link_to post.title, admin_post_path(post)
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
The block gets called once for each resource in the collection. The resource gets passed into
|
|
195
|
+
the block as an argument.
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
==== Sorting
|
|
199
|
+
|
|
200
|
+
When a column is generated from an Active Record attribute, the table is
|
|
201
|
+
sortable by default. If you are creating a custom column, you may need to give
|
|
202
|
+
Active Admin a hint for how to sort the table.
|
|
203
|
+
|
|
204
|
+
If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
205
|
+
is the attribute which gets used to sort objects using Active Record.
|
|
206
|
+
|
|
207
|
+
index do
|
|
208
|
+
column "Title", :sortable => :title do |post|
|
|
209
|
+
link_to post.title, admin_post_path(post)
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
You can turn off sorting on any column by passing false:
|
|
214
|
+
|
|
215
|
+
index do
|
|
216
|
+
column :title, :sortable => false
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
==== Showing and Hiding Columns
|
|
220
|
+
|
|
221
|
+
The entire index block is rendered within the context of the view, so you can
|
|
222
|
+
easily do things that show or hide columns based on the current context.
|
|
223
|
+
|
|
224
|
+
For example, if you were using CanCan:
|
|
225
|
+
|
|
226
|
+
index do
|
|
227
|
+
column :title, :sortable => false
|
|
228
|
+
if can? :manage, Post
|
|
229
|
+
column :some_secret_data
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
=== Index as a Grid
|
|
234
|
+
|
|
235
|
+
Sometimes you want to display the index screen for a set of resources as a grid
|
|
236
|
+
(possibly a grid of thumbnail images). To do so, use the :grid option for the
|
|
237
|
+
index block.
|
|
238
|
+
|
|
239
|
+
index :as => :grid do |product|
|
|
240
|
+
link_to(image_tag(product.image_path), admin_products_path(product))
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
The block is rendered within a cell in the grid once for each resource in the
|
|
244
|
+
collection. The resource is passed into the block for you to use in the view.
|
|
245
|
+
|
|
246
|
+
You can customize the number of colums that are rendered using the columns
|
|
247
|
+
option:
|
|
248
|
+
|
|
249
|
+
index :as => :grid, :columns => 5 do |product|
|
|
250
|
+
link_to(image_tag(product.image_path), admin_products_path(product))
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
=== Index as a Block
|
|
255
|
+
|
|
256
|
+
If you want to fully customize the display of your resources on the index
|
|
257
|
+
screen, Index as a Block allows you to render a block of content for each
|
|
258
|
+
resource.
|
|
259
|
+
|
|
260
|
+
index :as => :block do |product|
|
|
261
|
+
div :for => product do
|
|
262
|
+
h2 auto_link(product.title)
|
|
263
|
+
div do
|
|
264
|
+
simple_format product.description
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
=== Index Filters
|
|
270
|
+
|
|
271
|
+
By default the index screen includes a "Filters" sidebar on the right hand side
|
|
272
|
+
with a filter for each attribute of the registered model. You can customize the
|
|
273
|
+
filters that are displayed as well as the type of widgets they use.
|
|
274
|
+
|
|
275
|
+
To display a filter for an attribute, use the filter method
|
|
276
|
+
|
|
277
|
+
ActiveAdmin.register Post do
|
|
278
|
+
filter :title
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
Out of the box, Active Admin supports the following filter types:
|
|
282
|
+
|
|
283
|
+
* *:string* - A search field
|
|
284
|
+
* *:date_range* - A start and end date field with calendar inputs
|
|
285
|
+
* *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
|
|
286
|
+
Than" and an input for a value.
|
|
287
|
+
* *:select* - A drop down which filters based on a selected item in a collection
|
|
288
|
+
or all.
|
|
289
|
+
* *:check_boxes* - A list of check boxes users can turn on and off to filter
|
|
290
|
+
|
|
291
|
+
By default, Active Admin will pick the most relevant filter based on the
|
|
292
|
+
attribute type. You can force the type by passing the :as option.
|
|
293
|
+
|
|
294
|
+
filter :author, :as => :check_boxes
|
|
295
|
+
|
|
296
|
+
The :check_boxes and :select types accept options for the collection. By default
|
|
297
|
+
it attempts to create a collection based on an association. But you can pass in
|
|
298
|
+
the collection as a proc to be called at render time.
|
|
299
|
+
|
|
300
|
+
# Will call available
|
|
301
|
+
filter :author, :as => :check_boxes, :collection => proc { Author.all }
|
|
302
|
+
|
|
303
|
+
You can change the filter label by passing a label option:
|
|
304
|
+
|
|
305
|
+
filter :author, :label => 'Author'
|
|
306
|
+
|
|
307
|
+
By default, Active Admin will try to use ActiveModel I18n to determine the label.
|
|
308
|
+
|
|
309
|
+
== Customizing the CSV format
|
|
310
|
+
|
|
311
|
+
Customizing the CSV format is as simple as customizing the index page.
|
|
312
|
+
|
|
313
|
+
csv do
|
|
314
|
+
column :name
|
|
315
|
+
column("Author") { |post| post.author.full_name }
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
== Customizing the Form
|
|
319
|
+
|
|
320
|
+
Active Admin gives complete control over the output of the form by creating a thin DSL on top of
|
|
321
|
+
the fabulous DSL created by Formtastic (http://github.com/justinfrench/formtastic).
|
|
322
|
+
|
|
323
|
+
ActiveAdmin.register Post do
|
|
324
|
+
|
|
325
|
+
form do |f|
|
|
326
|
+
f.inputs "Details" do
|
|
327
|
+
f.input :title
|
|
328
|
+
f.input :published_at, :label => "Publish Post At"
|
|
329
|
+
f.input :category
|
|
330
|
+
end
|
|
331
|
+
f.inputs "Content" do
|
|
332
|
+
f.input :body
|
|
333
|
+
end
|
|
334
|
+
f.buttons
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
Please view the documentation for Formtastic to see all the wonderful things you can do:
|
|
340
|
+
http://github.com/justinfrench/formtastic
|
|
341
|
+
|
|
342
|
+
If you require a more custom form than can be provided through the DSL, you can pass
|
|
343
|
+
a partial in to render the form yourself.
|
|
344
|
+
|
|
345
|
+
For example:
|
|
346
|
+
|
|
347
|
+
ActiveAdmin.register Post do
|
|
348
|
+
form :partial => "form"
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
Then implement app/views/admin/posts/_form.html.erb:
|
|
352
|
+
|
|
353
|
+
<%= semantic_form_for [:admin, @post] do |f| %>
|
|
354
|
+
<%= f.inputs :title, :body %>
|
|
355
|
+
<%= f.buttons :commit %>
|
|
356
|
+
<% end %>
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
== Customizing the Show Screen
|
|
360
|
+
|
|
361
|
+
Customizing the show screen is as simple as implementing the show block:
|
|
362
|
+
|
|
363
|
+
ActiveAdmin.register Post do
|
|
364
|
+
show do
|
|
365
|
+
h3 post.title
|
|
366
|
+
div do
|
|
367
|
+
simple_format post.body
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
The show block is rendered within the context of the view and uses the Arbre HTML DSL. You
|
|
373
|
+
can also render a partial at any point.
|
|
374
|
+
|
|
375
|
+
ActiveAdmin.register Post do
|
|
376
|
+
show do
|
|
377
|
+
# renders app/views/admin/posts/_some_partial.html.erb
|
|
378
|
+
render "some_partial"
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
== Sidebar Sections
|
|
384
|
+
|
|
385
|
+
To add a sidebar section to all the screen within a section, use the sidebar method:
|
|
386
|
+
|
|
387
|
+
sidebar :help do
|
|
388
|
+
"Need help? Email us at help@example.com"
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
This will generate a sidebar section on each screen of the resource. With the block as
|
|
392
|
+
the contents of the section. The first argument is the section title.
|
|
393
|
+
|
|
394
|
+
You can also use Arbre syntax to define the content.
|
|
395
|
+
|
|
396
|
+
sidebar :help do
|
|
397
|
+
ul do
|
|
398
|
+
li "Second List First Item"
|
|
399
|
+
li "Second List Second Item"
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
Sidebar sections can be rendered on a specific action by using the :only or :except
|
|
404
|
+
options.
|
|
405
|
+
|
|
406
|
+
sidebar :help, :only => :index do
|
|
407
|
+
"Need help? Email us at help@example.com"
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
If you only pass a symbol, Active Admin will attempt to locate a partial to render.
|
|
411
|
+
|
|
412
|
+
# Will render app/views/admin/posts/_help_sidebar.html.erb
|
|
413
|
+
sidebar :help
|
|
414
|
+
|
|
415
|
+
Or you can pass your own custom partial to render.
|
|
416
|
+
|
|
417
|
+
sidebar :help, :partial => "custom_help_partial"
|
|
418
|
+
|
|
419
|
+
== Add collection and member actions
|
|
420
|
+
|
|
421
|
+
To add a collection action, use the collection_action method:
|
|
422
|
+
|
|
423
|
+
collection_action :import_csv do
|
|
424
|
+
# do csv import
|
|
425
|
+
redirect_to :action => :index, :notice => "CSV imported successfully!"
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
To add a member action, use the member_action method:
|
|
429
|
+
|
|
430
|
+
member_action :lock, :method => :post do
|
|
431
|
+
resource.lock!
|
|
432
|
+
redirect_to :action => :show, :notice => "Locked!"
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
== Internationalization (I18n)
|
|
436
|
+
|
|
437
|
+
To internationalize Active Admin or to change default strings, you can copy
|
|
438
|
+
lib/active_admin/locales/en.yml to your application config/locales directory and
|
|
439
|
+
change its content. You can contribute to the project with your translations to!
|
|
440
|
+
|
|
441
|
+
== Tools Being Used
|
|
442
|
+
|
|
443
|
+
We believe strongly in not writing code unless we have to, so Active Admin is built using many
|
|
444
|
+
other open source projects:
|
|
445
|
+
|
|
446
|
+
InheritedResources::
|
|
447
|
+
Inherited Resources speeds up development by making your controllers inherit all restful
|
|
448
|
+
actions so you just have to focus on what is important.
|
|
449
|
+
InheritedViews::
|
|
450
|
+
Inherited Views is a thin addition to Inherited Resources which adds in html views to the mix
|
|
451
|
+
Formtastic::
|
|
452
|
+
A DSL for semantically building amazing forms.
|
|
453
|
+
Devise::
|
|
454
|
+
User authentication is done using Devise
|
|
455
|
+
Kaminari::
|
|
456
|
+
Pagination for rails apps
|
|
457
|
+
Iconic Icons::
|
|
458
|
+
Excellent SVG icon set designed by P.J. Onori: http://somerandomdude.com/projects/iconic
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
== Contributors
|
|
462
|
+
|
|
463
|
+
* Greg Bell http://github.com/gregbell
|
|
464
|
+
* Philippe Creux http://github.com/pcreux
|
|
465
|
+
* Sam Vincent http://github.com/samvincent
|
|
466
|
+
* Matt Vague http://github.com/mattvague
|
|
467
|
+
* Dan Kubb http://github.com/dkubb
|
|
468
|
+
* Sam Reh http://github.com/samuelreh
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
== Roadmap & Issue Tracking
|
|
472
|
+
|
|
473
|
+
We are using the awesome Github issues!
|
|
474
|
+
|
|
475
|
+
== Note on Patches/Pull Requests
|
|
476
|
+
|
|
477
|
+
* Fork the project.
|
|
478
|
+
* Make your feature addition or bug fix on a new topic branch
|
|
479
|
+
* Add specs and cukes for it. This is important so I don't break it in a
|
|
480
|
+
future version unintentionally.
|
|
481
|
+
* Commit, do not mess with rakefile, version, or history.
|
|
482
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
|
483
|
+
* Send me a pull request.
|
|
484
|
+
|
|
485
|
+
== Copyright
|
|
486
|
+
|
|
487
|
+
Copyright (c) 2010 Greg Bell, VersaPay Corporation. See LICENSE for details.
|