andrewroth_activeadmin 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -0
- data/activeadmin.gemspec +28 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +81 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +96 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +50 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +105 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +138 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +45 -0
- data/lib/active_admin/scope.rb +31 -0
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +69 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +57 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +91 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabbed_navigation.rb +94 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +209 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +182 -0
- data/spec/unit/form_builder_spec.rb +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +80 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +75 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,164 @@
|
|
|
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
|
+
# To setup links to View, Edit and Delete a resource, use the default_actions method:
|
|
42
|
+
#
|
|
43
|
+
# index do
|
|
44
|
+
# column :title
|
|
45
|
+
# default_actions
|
|
46
|
+
# end
|
|
47
|
+
#
|
|
48
|
+
# Alternatively, you can create a column with custom links:
|
|
49
|
+
#
|
|
50
|
+
# index do
|
|
51
|
+
# column :title
|
|
52
|
+
# column "Actions" do |post|
|
|
53
|
+
# link_to "View", admin_post_path(post)
|
|
54
|
+
# end
|
|
55
|
+
# end
|
|
56
|
+
#
|
|
57
|
+
#
|
|
58
|
+
# == Sorting
|
|
59
|
+
#
|
|
60
|
+
# When a column is generated from an Active Record attribute, the table is
|
|
61
|
+
# sortable by default. If you are creating a custom column, you may need to give
|
|
62
|
+
# Active Admin a hint for how to sort the table.
|
|
63
|
+
#
|
|
64
|
+
# If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
65
|
+
# is the attribute which gets used to sort objects using Active Record.
|
|
66
|
+
#
|
|
67
|
+
# index do
|
|
68
|
+
# column "Title", :sortable => :title do |post|
|
|
69
|
+
# link_to post.title, admin_post_path(post)
|
|
70
|
+
# end
|
|
71
|
+
# end
|
|
72
|
+
#
|
|
73
|
+
# You can turn off sorting on any column by passing false:
|
|
74
|
+
#
|
|
75
|
+
# index do
|
|
76
|
+
# column :title, :sortable => false
|
|
77
|
+
# end
|
|
78
|
+
#
|
|
79
|
+
# == Showing and Hiding Columns
|
|
80
|
+
#
|
|
81
|
+
# The entire index block is rendered within the context of the view, so you can
|
|
82
|
+
# easily do things that show or hide columns based on the current context.
|
|
83
|
+
#
|
|
84
|
+
# For example, if you were using CanCan:
|
|
85
|
+
#
|
|
86
|
+
# index do
|
|
87
|
+
# column :title, :sortable => false
|
|
88
|
+
# if can? :manage, Post
|
|
89
|
+
# column :some_secret_data
|
|
90
|
+
# end
|
|
91
|
+
# end
|
|
92
|
+
#
|
|
93
|
+
class IndexAsTable < ActiveAdmin::Component
|
|
94
|
+
|
|
95
|
+
def build(page_config, collection)
|
|
96
|
+
table_options = {
|
|
97
|
+
:id => active_admin_config.plural_underscored_resource_name,
|
|
98
|
+
:sortable => true,
|
|
99
|
+
:class => "index_table",
|
|
100
|
+
:i18n => active_admin_config.resource
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
table_for collection, table_options do |t|
|
|
104
|
+
instance_exec(t, &page_config.block)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def table_for(*args, &block)
|
|
109
|
+
insert_tag IndexTableFor, *args, &block
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
#
|
|
113
|
+
# Extend the default ActiveAdmin::Views::TableFor with some
|
|
114
|
+
# methods for quickly displaying items on the index page
|
|
115
|
+
#
|
|
116
|
+
class IndexTableFor < ::ActiveAdmin::Views::TableFor
|
|
117
|
+
|
|
118
|
+
# Display a column for the id
|
|
119
|
+
def id_column
|
|
120
|
+
column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Adds links to View, Edit and Delete
|
|
124
|
+
def default_actions(options = {})
|
|
125
|
+
options = {
|
|
126
|
+
:name => ""
|
|
127
|
+
}.merge(options)
|
|
128
|
+
column options[:name] do |resource|
|
|
129
|
+
links = link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
|
|
130
|
+
links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
|
|
131
|
+
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"
|
|
132
|
+
links
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Display A Status Tag Column
|
|
137
|
+
#
|
|
138
|
+
# index do |i|
|
|
139
|
+
# i.status_tag :state
|
|
140
|
+
# end
|
|
141
|
+
#
|
|
142
|
+
# index do |i|
|
|
143
|
+
# i.status_tag "State", :status_name
|
|
144
|
+
# end
|
|
145
|
+
#
|
|
146
|
+
# index do |i|
|
|
147
|
+
# i.status_tag do |post|
|
|
148
|
+
# post.published? ? 'published' : 'draft'
|
|
149
|
+
# end
|
|
150
|
+
# end
|
|
151
|
+
#
|
|
152
|
+
def status_tag(*args, &block)
|
|
153
|
+
col = Column.new(*args, &block)
|
|
154
|
+
data = col.data
|
|
155
|
+
col.data = proc do |resource|
|
|
156
|
+
status_tag call_method_or_proc_on(resource, data)
|
|
157
|
+
end
|
|
158
|
+
add_column col
|
|
159
|
+
end
|
|
160
|
+
end # TableBuilder
|
|
161
|
+
|
|
162
|
+
end # Table
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Base < Arbre::HTML::Document
|
|
5
|
+
|
|
6
|
+
def build(*args)
|
|
7
|
+
super
|
|
8
|
+
add_classes_to_body
|
|
9
|
+
build_active_admin_head
|
|
10
|
+
build_page
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def add_classes_to_body
|
|
17
|
+
@body.add_class(params[:action])
|
|
18
|
+
@body.add_class(params[:controller].gsub('/', '_'))
|
|
19
|
+
@body.add_class("logged_in")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def build_active_admin_head
|
|
23
|
+
within @head do
|
|
24
|
+
meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
|
|
25
|
+
insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ")
|
|
26
|
+
active_admin_application.stylesheets.each do |path|
|
|
27
|
+
link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
|
|
28
|
+
end
|
|
29
|
+
active_admin_application.javascripts.each do |path|
|
|
30
|
+
script :src => javascript_path(path), :type => "text/javascript"
|
|
31
|
+
end
|
|
32
|
+
text_node csrf_meta_tag
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def build_page
|
|
37
|
+
within @body do
|
|
38
|
+
div :id => "wrapper" do
|
|
39
|
+
build_header
|
|
40
|
+
build_title_bar
|
|
41
|
+
build_page_content
|
|
42
|
+
build_footer
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def build_header
|
|
48
|
+
div :id => "header" do
|
|
49
|
+
render view_factory.header
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def build_title_bar
|
|
54
|
+
div :id => "title_bar" do
|
|
55
|
+
build_titlebar_left
|
|
56
|
+
build_titlebar_right
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def build_titlebar_left
|
|
61
|
+
div :id => "titlebar_left" do
|
|
62
|
+
build_breadcrumb
|
|
63
|
+
build_title_tag
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def build_titlebar_right
|
|
68
|
+
div :id => "titlebar_right" do
|
|
69
|
+
build_action_items
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_breadcrumb(separator = "/")
|
|
74
|
+
links = breadcrumb_links
|
|
75
|
+
return if links.empty?
|
|
76
|
+
span :class => "breadcrumb" do
|
|
77
|
+
links.each do |link|
|
|
78
|
+
text_node link
|
|
79
|
+
span(separator, :class => "breadcrumb_sep")
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def build_title_tag
|
|
85
|
+
h2(title, :id => 'page_title')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def build_action_items
|
|
89
|
+
if active_admin_config
|
|
90
|
+
items = active_admin_config.action_items_for(params[:action])
|
|
91
|
+
insert_tag view_factory.action_items, items
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def build_page_content
|
|
96
|
+
build_flash_messages
|
|
97
|
+
div :id => "active_admin_content", :class => (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
|
|
98
|
+
build_main_content_wrapper
|
|
99
|
+
build_sidebar unless skip_sidebar?
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def build_flash_messages
|
|
104
|
+
if flash.keys.any?
|
|
105
|
+
div :class => 'flashes' do
|
|
106
|
+
flash.each do |type, message|
|
|
107
|
+
div message, :class => "flash flash_#{type}"
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def build_main_content_wrapper
|
|
114
|
+
div :id => "main_content_wrapper" do
|
|
115
|
+
div :id => "main_content" do
|
|
116
|
+
main_content
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def main_content
|
|
122
|
+
I18n.t('active_admin.main_content', :model => self.class.name).html_safe
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def title
|
|
126
|
+
self.class.name
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Set's the page title for the layout to render
|
|
130
|
+
def set_page_title
|
|
131
|
+
set_ivar_on_view "@page_title", title
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
# Returns the sidebar sections to render for the current action
|
|
136
|
+
def sidebar_sections_for_action
|
|
137
|
+
if active_admin_config
|
|
138
|
+
active_admin_config.sidebar_sections_for(params[:action])
|
|
139
|
+
else
|
|
140
|
+
[]
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Renders the sidebar
|
|
145
|
+
def build_sidebar
|
|
146
|
+
div :id => "sidebar" do
|
|
147
|
+
sidebar_sections_for_action.collect do |section|
|
|
148
|
+
sidebar_section(section)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def skip_sidebar?
|
|
154
|
+
sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Renders the content for the footer
|
|
158
|
+
def build_footer
|
|
159
|
+
div :id => "footer" do
|
|
160
|
+
para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Dashboard < Base
|
|
5
|
+
|
|
6
|
+
def main_content
|
|
7
|
+
if assigns[:dashboard_sections] && assigns[:dashboard_sections].any?
|
|
8
|
+
render_sections(assigns[:dashboard_sections])
|
|
9
|
+
else
|
|
10
|
+
default_welcome_section
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
# Dashboards don't have a sidebar
|
|
17
|
+
def build_sidebar; end
|
|
18
|
+
|
|
19
|
+
def title
|
|
20
|
+
I18n.t("active_admin.dashboard")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def render_sections(sections)
|
|
24
|
+
table :class => "dashboard" do
|
|
25
|
+
sections.in_groups_of(3, false).each do |row|
|
|
26
|
+
tr do
|
|
27
|
+
row.each do |section|
|
|
28
|
+
td do
|
|
29
|
+
render_section(section)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Renders each section using their renderer
|
|
38
|
+
def render_section(section)
|
|
39
|
+
insert_tag section_renderer(section), section
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def section_renderer(section)
|
|
43
|
+
if section.options[:as]
|
|
44
|
+
view_factory["dashboard_section_as_#{section.options[:as]}"]
|
|
45
|
+
else
|
|
46
|
+
view_factory.dashboard_section
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def default_welcome_section
|
|
51
|
+
div :class => "blank_slate_container", :id => "dashboard_default_message" do
|
|
52
|
+
span :class => "blank_slate" do
|
|
53
|
+
span I18n.t('active_admin.dashboard_welcome.welcome')
|
|
54
|
+
small I18n.t('active_admin.dashboard_welcome.call_to_action')
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Edit < Base
|
|
5
|
+
|
|
6
|
+
def title
|
|
7
|
+
I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def main_content
|
|
11
|
+
config = self.form_config.dup
|
|
12
|
+
config.delete(:block)
|
|
13
|
+
config.reverse_merge!({
|
|
14
|
+
:url => resource_path(resource),
|
|
15
|
+
:as => active_admin_config.underscored_resource_name
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
if form_config[:partial]
|
|
19
|
+
render form_config[:partial]
|
|
20
|
+
else
|
|
21
|
+
active_admin_form_for resource, config, &form_config[:block]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
|
|
5
|
+
class Index < Base
|
|
6
|
+
|
|
7
|
+
def title
|
|
8
|
+
active_admin_config.plural_resource_name
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def config
|
|
12
|
+
index_config || default_index_config
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Render's the index configuration that was set in the
|
|
16
|
+
# controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
|
|
17
|
+
def main_content
|
|
18
|
+
build_scopes
|
|
19
|
+
|
|
20
|
+
if collection.any?
|
|
21
|
+
render_index
|
|
22
|
+
else
|
|
23
|
+
if params[:q]
|
|
24
|
+
render_empty_results
|
|
25
|
+
else
|
|
26
|
+
render_blank_slate
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
protected
|
|
32
|
+
|
|
33
|
+
def build_scopes
|
|
34
|
+
if active_admin_config.scopes.any?
|
|
35
|
+
scopes_renderer active_admin_config.scopes
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Creates a default configuration for the resource class. This is a table
|
|
40
|
+
# with each column displayed as well as all the default actions
|
|
41
|
+
def default_index_config
|
|
42
|
+
@default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
|
|
43
|
+
id_column
|
|
44
|
+
resource_class.content_columns.each do |col|
|
|
45
|
+
column col.name.to_sym
|
|
46
|
+
end
|
|
47
|
+
default_actions
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Returns the actual class for renderering the main content on the index
|
|
52
|
+
# page. To set this, use the :as option in the page_config block.
|
|
53
|
+
def find_index_renderer_class(symbol_or_class)
|
|
54
|
+
case symbol_or_class
|
|
55
|
+
when Symbol
|
|
56
|
+
::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
|
|
57
|
+
when Class
|
|
58
|
+
symbol_or_class
|
|
59
|
+
else
|
|
60
|
+
raise ArgumentError, "'as' requires a class or a symbol"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def render_blank_slate
|
|
65
|
+
blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.resource_name.pluralize)
|
|
66
|
+
if controller.action_methods.include?('new')
|
|
67
|
+
blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
|
|
68
|
+
end
|
|
69
|
+
insert_tag(view_factory.blank_slate, blank_slate_content)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def render_empty_results
|
|
73
|
+
empty_results_content = I18n.t("active_admin.pagination.empty", :model => active_admin_config.resource_name.pluralize)
|
|
74
|
+
insert_tag(view_factory.blank_slate, empty_results_content)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def render_index
|
|
78
|
+
renderer_class = find_index_renderer_class(config[:as])
|
|
79
|
+
|
|
80
|
+
paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
|
|
81
|
+
div :class => 'index_content' do
|
|
82
|
+
insert_tag(renderer_class, config, collection)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|