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,19 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
class DashboardSection < ActiveAdmin::Views::Panel
|
|
4
|
+
|
|
5
|
+
def build(section)
|
|
6
|
+
@section = section
|
|
7
|
+
super(title, :icon => @section.icon)
|
|
8
|
+
instance_eval &@section.block
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
protected
|
|
12
|
+
|
|
13
|
+
def title
|
|
14
|
+
@section.name.to_s.titleize
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# Renderer for the header of the application. Includes the page
|
|
5
|
+
# title, global navigation and utility navigation.
|
|
6
|
+
class HeaderRenderer < ::ActiveAdmin::Renderer
|
|
7
|
+
|
|
8
|
+
def to_html
|
|
9
|
+
title + global_navigation + utility_navigation
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def title
|
|
15
|
+
content_tag 'h1', active_admin_application.site_title, :id => 'site_title'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Renders the global navigation returned by
|
|
19
|
+
# ActiveAdmin::ResourceController#current_menu
|
|
20
|
+
#
|
|
21
|
+
# It uses the ActiveAdmin.tabs_renderer option
|
|
22
|
+
def global_navigation
|
|
23
|
+
render view_factory.global_navigation, current_menu
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def utility_navigation
|
|
27
|
+
content_tag 'p', :id => "utility_nav" do
|
|
28
|
+
if current_active_admin_user?
|
|
29
|
+
html = content_tag(:span, display_name(current_active_admin_user), :class => "current_user")
|
|
30
|
+
|
|
31
|
+
if active_admin_application.logout_link_path
|
|
32
|
+
html << link_to(I18n.t('active_admin.logout'), logout_path, :method => logout_method)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Returns the logout path from the application settings
|
|
39
|
+
def logout_path
|
|
40
|
+
if active_admin_application.logout_link_path.is_a?(Symbol)
|
|
41
|
+
send(active_admin_application.logout_link_path)
|
|
42
|
+
else
|
|
43
|
+
active_admin_application.logout_link_path
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def logout_method
|
|
48
|
+
active_admin_application.logout_link_method || :get
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# = Index as a Block
|
|
5
|
+
#
|
|
6
|
+
# If you want to fully customize the display of your resources on the index
|
|
7
|
+
# screen, Index as a Block allows you to render a block of content for each
|
|
8
|
+
# resource.
|
|
9
|
+
#
|
|
10
|
+
# index :as => :block do |product|
|
|
11
|
+
# div :for => product do
|
|
12
|
+
# h2 auto_link(product.title)
|
|
13
|
+
# div do
|
|
14
|
+
# simple_format product.description
|
|
15
|
+
# end
|
|
16
|
+
# end
|
|
17
|
+
# end
|
|
18
|
+
#
|
|
19
|
+
class IndexAsBlock < ActiveAdmin::Component
|
|
20
|
+
|
|
21
|
+
def build(page_config, collection)
|
|
22
|
+
collection.each do |obj|
|
|
23
|
+
instance_exec(obj, &page_config.block)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# = Index as Blog
|
|
5
|
+
#
|
|
6
|
+
# Render your index page as a set of posts. The post has two main options:
|
|
7
|
+
# title and body.
|
|
8
|
+
#
|
|
9
|
+
# index :as => :blog do
|
|
10
|
+
# title :my_title # Calls #my_title on each resource
|
|
11
|
+
# body :my_body # Calls #my_body on each resource
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# == Post Title
|
|
15
|
+
#
|
|
16
|
+
# The title is the content that will be rendered within a link to the
|
|
17
|
+
# resource. There are two main ways to set the content for the title
|
|
18
|
+
#
|
|
19
|
+
# First, you can pass in a method to be called on your
|
|
20
|
+
# resource. For example:
|
|
21
|
+
#
|
|
22
|
+
# index :as => :blog do
|
|
23
|
+
# title :a_method_to_call
|
|
24
|
+
# end
|
|
25
|
+
#
|
|
26
|
+
# This will result in the title of the post being the return value of
|
|
27
|
+
# Resource#a_method_to_call
|
|
28
|
+
#
|
|
29
|
+
# Second, you can pass a block to the tile option which will then be
|
|
30
|
+
# used as the contents fo the title. The resource being rendered
|
|
31
|
+
# is passed in to the block. For Example:
|
|
32
|
+
#
|
|
33
|
+
# index :as => :blog do
|
|
34
|
+
# title do |post|
|
|
35
|
+
# span post.title, :class => 'title'
|
|
36
|
+
# span post.created_at, :class => 'created_at'
|
|
37
|
+
# end
|
|
38
|
+
# end
|
|
39
|
+
#
|
|
40
|
+
# == Post Body
|
|
41
|
+
#
|
|
42
|
+
# The body is rendered underneath the title of each post. The same two
|
|
43
|
+
# style of options work as the Post Title above.
|
|
44
|
+
#
|
|
45
|
+
# Call a method on the resource as the body:
|
|
46
|
+
#
|
|
47
|
+
# index :as => :blog do
|
|
48
|
+
# title :my_title
|
|
49
|
+
# body :my_body # Return value of #my_body will be the body
|
|
50
|
+
# end
|
|
51
|
+
#
|
|
52
|
+
# Or, render a block as the body:
|
|
53
|
+
#
|
|
54
|
+
# index :as => :blog do
|
|
55
|
+
# title :my_title
|
|
56
|
+
# body do |post|
|
|
57
|
+
# div truncate(post.title)
|
|
58
|
+
# div :class => 'meta' do
|
|
59
|
+
# span "Post in #{post.categories.join(', ')}"
|
|
60
|
+
# end
|
|
61
|
+
# end
|
|
62
|
+
# end
|
|
63
|
+
#
|
|
64
|
+
class IndexAsBlog < ActiveAdmin::Component
|
|
65
|
+
|
|
66
|
+
def build(page_config, collection)
|
|
67
|
+
@page_config = page_config
|
|
68
|
+
@collection = collection
|
|
69
|
+
|
|
70
|
+
# Call the block passed in. This will set the
|
|
71
|
+
# title and body methods
|
|
72
|
+
instance_eval &page_config.block if page_config.block
|
|
73
|
+
|
|
74
|
+
build_posts
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Setter method for the configuration of the title
|
|
78
|
+
def title(method = nil, &block)
|
|
79
|
+
if block_given? || method
|
|
80
|
+
@title = block_given? ? block : method
|
|
81
|
+
end
|
|
82
|
+
@title
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Setter method for the configuration of the body
|
|
86
|
+
#
|
|
87
|
+
def body(method = nil, &block)
|
|
88
|
+
if block_given? || method
|
|
89
|
+
@body = block_given? ? block : method
|
|
90
|
+
end
|
|
91
|
+
@body
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def build_posts
|
|
97
|
+
@collection.each do |post|
|
|
98
|
+
build_post(post)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def build_post(post)
|
|
103
|
+
div :for => post do
|
|
104
|
+
build_title(post)
|
|
105
|
+
build_body(post)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def build_title(post)
|
|
110
|
+
if @title
|
|
111
|
+
h3 do
|
|
112
|
+
link_to(call_method_or_proc_on(post, @title), resource_path(post))
|
|
113
|
+
end
|
|
114
|
+
else
|
|
115
|
+
h3 do
|
|
116
|
+
auto_link(post)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def build_body(post)
|
|
122
|
+
if @body
|
|
123
|
+
div(call_method_or_proc_on(post, @body), :class => 'content')
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end # Posts
|
|
128
|
+
end
|
|
129
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# = Index as a Grid
|
|
5
|
+
#
|
|
6
|
+
# Sometimes you want to display the index screen for a set of resources as a grid
|
|
7
|
+
# (possibly a grid of thumbnail images). To do so, use the :grid option for the
|
|
8
|
+
# index block.
|
|
9
|
+
#
|
|
10
|
+
# index :as => :grid do |product|
|
|
11
|
+
# link_to(image_tag(product.image_path), admin_products_path(product))
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# The block is rendered within a cell in the grid once for each resource in the
|
|
15
|
+
# collection. The resource is passed into the block for you to use in the view.
|
|
16
|
+
#
|
|
17
|
+
# You can customize the number of colums that are rendered using the columns
|
|
18
|
+
# option:
|
|
19
|
+
#
|
|
20
|
+
# index :as => :grid, :columns => 5 do |product|
|
|
21
|
+
# link_to(image_tag(product.image_path), admin_products_path(product))
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
class IndexAsGrid < ActiveAdmin::Component
|
|
25
|
+
|
|
26
|
+
def build(page_config, collection)
|
|
27
|
+
@page_config = page_config
|
|
28
|
+
@collection = collection
|
|
29
|
+
build_table
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def number_of_columns
|
|
33
|
+
@page_config[:columns] || default_number_of_columns
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
protected
|
|
37
|
+
|
|
38
|
+
def build_table
|
|
39
|
+
table :class => "index_grid" do
|
|
40
|
+
collection.in_groups_of(number_of_columns).each do |group|
|
|
41
|
+
build_row(group)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def build_row(group)
|
|
47
|
+
tr do
|
|
48
|
+
group.each do |item|
|
|
49
|
+
item ? build_item(item) : build_empty_cell
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def build_item(item)
|
|
55
|
+
td :for => item do
|
|
56
|
+
instance_exec(item, &@page_config.block)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def build_empty_cell
|
|
61
|
+
td ' '.html_safe
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def default_number_of_columns
|
|
65
|
+
3
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# = Index as a Table
|
|
5
|
+
#
|
|
6
|
+
# By default, the index page is a table with each of the models content columns and links to
|
|
7
|
+
# show, edit and delete the object. There are many ways to customize what gets
|
|
8
|
+
# displayed.
|
|
9
|
+
#
|
|
10
|
+
# == Defining Columns
|
|
11
|
+
#
|
|
12
|
+
# To display an attribute or a method on a resource, simply pass a symbol into the
|
|
13
|
+
# column method:
|
|
14
|
+
#
|
|
15
|
+
# index do
|
|
16
|
+
# column :title
|
|
17
|
+
# end
|
|
18
|
+
#
|
|
19
|
+
# If the default title does not work for you, pass it as the first argument:
|
|
20
|
+
#
|
|
21
|
+
# index do
|
|
22
|
+
# column "My Custom Title", :title
|
|
23
|
+
# end
|
|
24
|
+
#
|
|
25
|
+
# Sometimes calling methods just isn't enough and you need to write some view
|
|
26
|
+
# specific code. For example, say we wanted a colum called Title which holds a
|
|
27
|
+
# link to the posts admin screen.
|
|
28
|
+
#
|
|
29
|
+
# The column method accepts a block as an argument which will then be rendered
|
|
30
|
+
# within the context of the view for each of the objects in the collection.
|
|
31
|
+
#
|
|
32
|
+
# index do
|
|
33
|
+
# column "Title" do |post|
|
|
34
|
+
# link_to post.title, admin_post_path(post)
|
|
35
|
+
# end
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# The block gets called once for each resource in the collection. The resource gets passed into
|
|
39
|
+
# the block as an argument.
|
|
40
|
+
#
|
|
41
|
+
#
|
|
42
|
+
# == Sorting
|
|
43
|
+
#
|
|
44
|
+
# When a column is generated from an Active Record attribute, the table is
|
|
45
|
+
# sortable by default. If you are creating a custom column, you may need to give
|
|
46
|
+
# Active Admin a hint for how to sort the table.
|
|
47
|
+
#
|
|
48
|
+
# If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
49
|
+
# is the attribute which gets used to sort objects using Active Record.
|
|
50
|
+
#
|
|
51
|
+
# index do
|
|
52
|
+
# column "Title", :sortable => :title do |post|
|
|
53
|
+
# link_to post.title, admin_post_path(post)
|
|
54
|
+
# end
|
|
55
|
+
# end
|
|
56
|
+
#
|
|
57
|
+
# You can turn off sorting on any column by passing false:
|
|
58
|
+
#
|
|
59
|
+
# index do
|
|
60
|
+
# column :title, :sortable => false
|
|
61
|
+
# end
|
|
62
|
+
#
|
|
63
|
+
# == Showing and Hiding Columns
|
|
64
|
+
#
|
|
65
|
+
# The entire index block is rendered within the context of the view, so you can
|
|
66
|
+
# easily do things that show or hide columns based on the current context.
|
|
67
|
+
#
|
|
68
|
+
# For example, if you were using CanCan:
|
|
69
|
+
#
|
|
70
|
+
# index do
|
|
71
|
+
# column :title, :sortable => false
|
|
72
|
+
# if can? :manage, Post
|
|
73
|
+
# column :some_secret_data
|
|
74
|
+
# end
|
|
75
|
+
# end
|
|
76
|
+
#
|
|
77
|
+
class IndexAsTable < ActiveAdmin::Component
|
|
78
|
+
|
|
79
|
+
def build(page_config, collection)
|
|
80
|
+
table_options = {
|
|
81
|
+
:id => active_admin_config.plural_resource_name.underscore,
|
|
82
|
+
:sortable => true,
|
|
83
|
+
:class => "index_table",
|
|
84
|
+
:i18n => active_admin_config.resource
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
table_for collection, table_options do |t|
|
|
88
|
+
instance_exec(t, &page_config.block)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def table_for(*args, &block)
|
|
93
|
+
insert_tag IndexTableFor, *args, &block
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
#
|
|
97
|
+
# Extend the default ActiveAdmin::Views::TableFor with some
|
|
98
|
+
# methods for quickly displaying items on the index page
|
|
99
|
+
#
|
|
100
|
+
class IndexTableFor < ::ActiveAdmin::Views::TableFor
|
|
101
|
+
|
|
102
|
+
# Display a column for the id
|
|
103
|
+
def id_column
|
|
104
|
+
column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Adds links to View, Edit and Delete
|
|
108
|
+
def default_actions(options = {})
|
|
109
|
+
options = {
|
|
110
|
+
:name => ""
|
|
111
|
+
}.merge(options)
|
|
112
|
+
column options[:name] do |resource|
|
|
113
|
+
links = link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
|
|
114
|
+
links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
|
|
115
|
+
links += link_to I18n.t('active_admin.delete'), resource_path(resource), :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'), :class => "member_link delete_link"
|
|
116
|
+
links
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Display A Status Tag Column
|
|
121
|
+
#
|
|
122
|
+
# index do |i|
|
|
123
|
+
# i.status_tag :state
|
|
124
|
+
# end
|
|
125
|
+
#
|
|
126
|
+
# index do |i|
|
|
127
|
+
# i.status_tag "State", :status_name
|
|
128
|
+
# end
|
|
129
|
+
#
|
|
130
|
+
# index do |i|
|
|
131
|
+
# i.status_tag do |post|
|
|
132
|
+
# post.published? ? 'published' : 'draft'
|
|
133
|
+
# end
|
|
134
|
+
# end
|
|
135
|
+
#
|
|
136
|
+
def status_tag(*args, &block)
|
|
137
|
+
col = Column.new(*args, &block)
|
|
138
|
+
data = col.data
|
|
139
|
+
col.data = proc do |resource|
|
|
140
|
+
status_tag call_method_or_proc_on(resource, data)
|
|
141
|
+
end
|
|
142
|
+
add_column col
|
|
143
|
+
end
|
|
144
|
+
end # TableBuilder
|
|
145
|
+
|
|
146
|
+
end # Table
|
|
147
|
+
end
|
|
148
|
+
end
|