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 @@
|
|
|
1
|
+
render renderer_for(:edit)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%-
|
|
2
|
+
csv_lib = if RUBY_VERSION =~ /^1.8/
|
|
3
|
+
require 'fastercsv'
|
|
4
|
+
FasterCSV
|
|
5
|
+
else
|
|
6
|
+
require 'csv'
|
|
7
|
+
CSV
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
csv_output = csv_lib.generate do |csv|
|
|
11
|
+
columns = active_admin_config.csv_builder.columns
|
|
12
|
+
csv << columns.map(&:name)
|
|
13
|
+
collection.each do |resource|
|
|
14
|
+
csv << columns.map do |column|
|
|
15
|
+
call_method_or_proc_on resource, column.data
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
%>
|
|
20
|
+
<%= csv_output.html_safe %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:index)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:new)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:show)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render view_factory.layout
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
|
5
|
+
|
|
6
|
+
<title><%= [@page_title, active_admin_application.site_title].join(" | ") %></title>
|
|
7
|
+
|
|
8
|
+
<% ActiveAdmin.application.stylesheets.each do |path| %>
|
|
9
|
+
<%= stylesheet_link_tag path %>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% ActiveAdmin.application.javascripts.each do |path| %>
|
|
12
|
+
<%= javascript_include_tag path %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<%= csrf_meta_tag %>
|
|
16
|
+
</head>
|
|
17
|
+
<body class="logged_out <%= controller.action_name %>">
|
|
18
|
+
<div id="wrapper">
|
|
19
|
+
|
|
20
|
+
<div id="content_wrapper">
|
|
21
|
+
<% if flash.keys.any? %>
|
|
22
|
+
<% flash.each do |type, message| %>
|
|
23
|
+
<%= content_tag :div, message, :class => "flash flash_#{type}" %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<div id="active_admin_content">
|
|
27
|
+
<%= yield %>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div id="footer">
|
|
31
|
+
<%= yield :footer %>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</body>
|
|
35
|
+
</html>
|
data/cucumber.yml
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# General Configuration
|
|
2
|
+
|
|
3
|
+
## Admin Users
|
|
4
|
+
|
|
5
|
+
By default Active Admin will include Devise and create a new model called
|
|
6
|
+
AdminUser. If you would like to use another name, you can pass it in to the
|
|
7
|
+
installer through the user option:
|
|
8
|
+
|
|
9
|
+
$> rails generate active_admin:install UserClassName
|
|
10
|
+
|
|
11
|
+
If you don't want the generator to create any user classes:
|
|
12
|
+
|
|
13
|
+
$> rails generate active_admin:install --skip-users
|
|
14
|
+
|
|
15
|
+
## Authentication
|
|
16
|
+
|
|
17
|
+
Active Admin requires two settings to authenticate and use the current user
|
|
18
|
+
within your application. Both are set in
|
|
19
|
+
<tt>config/initializers/active_admin.rb</tt>. By default they are setup for use
|
|
20
|
+
with Devise and a model named AdminUser. If you chose a different model name,
|
|
21
|
+
you will need to update these settings.
|
|
22
|
+
|
|
23
|
+
Set the method that controllers should call to authenticate the current user
|
|
24
|
+
with:
|
|
25
|
+
|
|
26
|
+
# config/initializers/active_admin.rb
|
|
27
|
+
config.authentication_method = :authenticate_admin_user!
|
|
28
|
+
|
|
29
|
+
Set the method to call within the view to access the current admin user
|
|
30
|
+
|
|
31
|
+
# config/initializers/active_admin.rb
|
|
32
|
+
config.current_user_method = :current_admin_user
|
|
33
|
+
|
|
34
|
+
Both of these settings can be set to false to turn off authentication.
|
|
35
|
+
|
|
36
|
+
# Turn off authentication all together
|
|
37
|
+
config.authentication_method = false
|
|
38
|
+
config.current_user_method = false
|
|
39
|
+
|
|
40
|
+
## Site Title
|
|
41
|
+
|
|
42
|
+
You can update the title used for the site in the initializer also. By default
|
|
43
|
+
it is set to the name of your Rails.application class name.
|
|
44
|
+
|
|
45
|
+
# config/initializers/active_admin.rb
|
|
46
|
+
config.site_title = "My Admin Site"
|
|
47
|
+
|
|
48
|
+
## Internationalization (I18n)
|
|
49
|
+
|
|
50
|
+
To internationalize Active Admin or to change default strings, you can copy
|
|
51
|
+
lib/active_admin/locales/en.yml to your application config/locales directory and
|
|
52
|
+
change its content. You can contribute to the project with your translations to!
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Customize The Resource
|
|
2
|
+
|
|
3
|
+
## Rename the Resource
|
|
4
|
+
|
|
5
|
+
By default, any references to the resource (menu, routes, buttons, etc) in the
|
|
6
|
+
interface will use the name of the class. You can rename the resource by using
|
|
7
|
+
the <tt>:as</tt> option.
|
|
8
|
+
|
|
9
|
+
ActiveAdmin.register Post, :as => "Article"
|
|
10
|
+
|
|
11
|
+
The resource will then be available as /admin/articles
|
|
12
|
+
|
|
13
|
+
## Customize the Navigation
|
|
14
|
+
|
|
15
|
+
The resource will be displayed in the global navigation by default.
|
|
16
|
+
|
|
17
|
+
To disable the resource from being displayed in the global navigation:
|
|
18
|
+
|
|
19
|
+
ActiveAdmin.register Post do
|
|
20
|
+
menu false
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
To change the name of the label in the menu:
|
|
24
|
+
|
|
25
|
+
ActiveAdmin.register Post do
|
|
26
|
+
menu :label => "My Posts"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
To add the menu as a child of another menu:
|
|
30
|
+
|
|
31
|
+
ActiveAdmin.register Post do
|
|
32
|
+
menu :parent => "Blog"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
This will create the menu item if it doesn't exist yet.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Customizing the Index Page
|
|
2
|
+
|
|
3
|
+
Filtering and listing resources is one of the most important tasks for
|
|
4
|
+
administering a web application. Active Admin provides many different tools for
|
|
5
|
+
you to build a compelling interface into your data for the admin staff.
|
|
6
|
+
|
|
7
|
+
Built in, Active Admin has the following index renderers:
|
|
8
|
+
|
|
9
|
+
* *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
|
|
10
|
+
* *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
|
|
11
|
+
* *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-blocks.md))
|
|
12
|
+
* *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
|
|
13
|
+
|
|
14
|
+
All index pages also support scopes, filters, pagination, action items, and
|
|
15
|
+
sidebar sections.
|
|
16
|
+
|
|
17
|
+
## Index Filters
|
|
18
|
+
|
|
19
|
+
By default the index screen includes a "Filters" sidebar on the right hand side
|
|
20
|
+
with a filter for each attribute of the registered model. You can customize the
|
|
21
|
+
filters that are displayed as well as the type of widgets they use.
|
|
22
|
+
|
|
23
|
+
To display a filter for an attribute, use the filter method
|
|
24
|
+
|
|
25
|
+
ActiveAdmin.register Post do
|
|
26
|
+
filter :title
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Out of the box, Active Admin supports the following filter types:
|
|
30
|
+
|
|
31
|
+
* *:string* - A search field
|
|
32
|
+
* *:date_range* - A start and end date field with calendar inputs
|
|
33
|
+
* *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
|
|
34
|
+
Than" and an input for a value.
|
|
35
|
+
* *:select* - A drop down which filters based on a selected item in a collection
|
|
36
|
+
or all.
|
|
37
|
+
* *:check_boxes* - A list of check boxes users can turn on and off to filter
|
|
38
|
+
|
|
39
|
+
By default, Active Admin will pick the most relevant filter based on the
|
|
40
|
+
attribute type. You can force the type by passing the :as option.
|
|
41
|
+
|
|
42
|
+
filter :author, :as => :check_boxes
|
|
43
|
+
|
|
44
|
+
The :check_boxes and :select types accept options for the collection. By default
|
|
45
|
+
it attempts to create a collection based on an association. But you can pass in
|
|
46
|
+
the collection as a proc to be called at render time.
|
|
47
|
+
|
|
48
|
+
# Will call available
|
|
49
|
+
filter :author, :as => :check_boxes, :collection => proc { Author.all }
|
|
50
|
+
|
|
51
|
+
You can change the filter label by passing a label option:
|
|
52
|
+
|
|
53
|
+
filter :author, :label => 'Author'
|
|
54
|
+
|
|
55
|
+
By default, Active Admin will try to use ActiveModel I18n to determine the label.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as a Block
|
|
4
|
+
|
|
5
|
+
If you want to fully customize the display of your resources on the index
|
|
6
|
+
screen, Index as a Block allows you to render a block of content for each
|
|
7
|
+
resource.
|
|
8
|
+
|
|
9
|
+
index :as => :block do |product|
|
|
10
|
+
div :for => product do
|
|
11
|
+
h2 auto_link(product.title)
|
|
12
|
+
div do
|
|
13
|
+
simple_format product.description
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as Blog
|
|
4
|
+
|
|
5
|
+
Render your index page as a set of posts. The post has two main options:
|
|
6
|
+
title and body.
|
|
7
|
+
|
|
8
|
+
index :as => :blog do
|
|
9
|
+
title :my_title # Calls #my_title on each resource
|
|
10
|
+
body :my_body # Calls #my_body on each resource
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
## Post Title
|
|
14
|
+
|
|
15
|
+
The title is the content that will be rendered within a link to the
|
|
16
|
+
resource. There are two main ways to set the content for the title
|
|
17
|
+
|
|
18
|
+
First, you can pass in a method to be called on your
|
|
19
|
+
resource. For example:
|
|
20
|
+
|
|
21
|
+
index :as => :blog do
|
|
22
|
+
title :a_method_to_call
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
This will result in the title of the post being the return value of
|
|
26
|
+
Resource#a_method_to_call
|
|
27
|
+
|
|
28
|
+
Second, you can pass a block to the tile option which will then be
|
|
29
|
+
used as the contents fo the title. The resource being rendered
|
|
30
|
+
is passed in to the block. For Example:
|
|
31
|
+
|
|
32
|
+
index :as => :blog do
|
|
33
|
+
title do |post|
|
|
34
|
+
span post.title, :class => 'title'
|
|
35
|
+
span post.created_at, :class => 'created_at'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
## Post Body
|
|
40
|
+
|
|
41
|
+
The body is rendered underneath the title of each post. The same two
|
|
42
|
+
style of options work as the Post Title above.
|
|
43
|
+
|
|
44
|
+
Call a method on the resource as the body:
|
|
45
|
+
|
|
46
|
+
index :as => :blog do
|
|
47
|
+
title :my_title
|
|
48
|
+
body :my_body # Return value of #my_body will be the body
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
Or, render a block as the body:
|
|
52
|
+
|
|
53
|
+
index :as => :blog do
|
|
54
|
+
title :my_title
|
|
55
|
+
body do |post|
|
|
56
|
+
div truncate(post.title)
|
|
57
|
+
div :class => 'meta' do
|
|
58
|
+
span "Post in #{post.categories.join(', ')}"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -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,74 @@
|
|
|
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
|
+
|
|
41
|
+
## Sorting
|
|
42
|
+
|
|
43
|
+
When a column is generated from an Active Record attribute, the table is
|
|
44
|
+
sortable by default. If you are creating a custom column, you may need to give
|
|
45
|
+
Active Admin a hint for how to sort the table.
|
|
46
|
+
|
|
47
|
+
If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
48
|
+
is the attribute which gets used to sort objects using Active Record.
|
|
49
|
+
|
|
50
|
+
index do
|
|
51
|
+
column "Title", :sortable => :title do |post|
|
|
52
|
+
link_to post.title, admin_post_path(post)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
You can turn off sorting on any column by passing false:
|
|
57
|
+
|
|
58
|
+
index do
|
|
59
|
+
column :title, :sortable => false
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
## Showing and Hiding Columns
|
|
63
|
+
|
|
64
|
+
The entire index block is rendered within the context of the view, so you can
|
|
65
|
+
easily do things that show or hide columns based on the current context.
|
|
66
|
+
|
|
67
|
+
For example, if you were using CanCan:
|
|
68
|
+
|
|
69
|
+
index do
|
|
70
|
+
column :title, :sortable => false
|
|
71
|
+
if can? :manage, Post
|
|
72
|
+
column :some_secret_data
|
|
73
|
+
end
|
|
74
|
+
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 %>
|