activeadmin 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- data/CHANGELOG.rdoc +15 -1
- data/Gemfile +41 -11
- data/LICENSE +5 -0
- data/README.rdoc +202 -87
- data/Rakefile +51 -15
- data/activeadmin.gemspec +310 -131
- data/cucumber.yml +1 -0
- data/features/comments/commenting.feature +81 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/edit_page.feature +77 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/formats.feature +10 -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 +79 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +23 -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 +128 -0
- data/features/specifying_actions.feature +16 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +67 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +15 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/factory_steps.rb +28 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +7 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +88 -0
- data/features/support/paths.rb +48 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +155 -79
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +4 -15
- 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 +8 -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 +129 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments.rb +73 -0
- data/lib/active_admin/comments/comment.rb +15 -0
- data/lib/active_admin/comments/configuration.rb +16 -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/dashboards.rb +0 -2
- data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
- data/lib/active_admin/dashboards/section.rb +5 -14
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +202 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +68 -50
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/namespace.rb +102 -16
- data/lib/active_admin/renderer.rb +18 -3
- data/lib/active_admin/resource.rb +110 -9
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource_controller.rb +45 -260
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +53 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +142 -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 +38 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +8 -47
- data/lib/active_admin/stylesheets/active_admin.scss +418 -0
- data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
- data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
- data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
- data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers.rb +17 -100
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -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 +174 -0
- data/lib/active_admin/view_helpers/form_helper.rb +12 -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/status_tag_helper.rb +13 -0
- data/lib/active_admin/view_helpers/table_helper.rb +12 -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/columns.rb +49 -0
- data/lib/active_admin/views/components/paginated_collection.rb +74 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +64 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/table_for.rb +174 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +37 -0
- data/lib/active_admin/views/index_as_block.rb +24 -0
- data/lib/active_admin/views/index_as_blog.rb +89 -0
- data/lib/active_admin/views/index_as_grid.rb +49 -0
- data/lib/active_admin/views/index_as_table.rb +73 -0
- data/lib/active_admin/views/pages/base.rb +138 -0
- data/lib/active_admin/views/pages/dashboard.rb +61 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +64 -0
- data/lib/active_admin/views/pages/new.rb +27 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +52 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
- data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
- data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
- data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
- data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
- data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
- data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
- data/lib/generators/active_admin/install/install_generator.rb +18 -3
- data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
- data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
- data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
- data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
- data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/orderable.png +0 -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/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/index_as_table_spec.rb +0 -119
- data/spec/integration/layout_spec.rb +3 -37
- data/spec/spec_helper.rb +89 -50
- data/spec/support/integration_example_group.rb +37 -0
- data/spec/support/rails_template.rb +21 -9
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +28 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +19 -7
- data/spec/unit/action_items_spec.rb +16 -30
- data/spec/unit/active_admin_spec.rb +10 -22
- 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 +185 -0
- data/spec/unit/auto_link_spec.rb +38 -0
- data/spec/unit/belongs_to_spec.rb +44 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +53 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/components/attributes_table_spec.rb +100 -0
- data/spec/unit/components/columns_spec.rb +75 -0
- data/spec/unit/components/panel_spec.rb +31 -0
- data/spec/unit/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +10 -17
- 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 +99 -77
- data/spec/unit/form_builder_spec.rb +69 -69
- data/spec/unit/namespace_spec.rb +61 -3
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +40 -1
- data/spec/unit/renderer_spec.rb +8 -0
- data/spec/unit/resource_controller_spec.rb +105 -6
- data/spec/unit/resource_spec.rb +78 -11
- data/spec/unit/routing_spec.rb +82 -6
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +24 -2
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +268 -82
- data/.gitignore +0 -25
- data/active_admin.gemspec +0 -22
- data/lib/active_admin/action_builder.rb +0 -60
- data/lib/active_admin/breadcrumbs.rb +0 -26
- data/lib/active_admin/dashboards/renderer.rb +0 -45
- data/lib/active_admin/dashboards/section_renderer.rb +0 -28
- data/lib/active_admin/filters.rb +0 -189
- data/lib/active_admin/pages.rb +0 -11
- data/lib/active_admin/pages/base.rb +0 -92
- data/lib/active_admin/pages/edit.rb +0 -21
- data/lib/active_admin/pages/index.rb +0 -58
- data/lib/active_admin/pages/index/blog.rb +0 -65
- data/lib/active_admin/pages/index/table.rb +0 -48
- data/lib/active_admin/pages/index/thumbnails.rb +0 -40
- data/lib/active_admin/pages/new.rb +0 -21
- data/lib/active_admin/pages/show.rb +0 -54
- data/lib/active_admin/table_builder.rb +0 -162
- data/lib/active_admin/tabs_renderer.rb +0 -39
- data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
- data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
- data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
- data/spec/integration/index_as_blog_spec.rb +0 -65
- data/spec/integration/index_as_thumbnails_spec.rb +0 -43
- data/spec/integration/new_view_spec.rb +0 -52
- data/spec/integration/show_view_spec.rb +0 -91
- data/spec/unit/sidebar_spec.rb +0 -96
- data/spec/unit/table_builder_spec.rb +0 -162
@@ -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,37 @@
|
|
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', ActiveAdmin.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
|
+
content_tag(:span, display_name(current_active_admin_user), :class => "current_user") +
|
30
|
+
link_to("Logout", "/#{ActiveAdmin.default_namespace}/logout")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
# Simplest rendering possible. Calls the block for each element in the collection.
|
5
|
+
#
|
6
|
+
# Example:
|
7
|
+
#
|
8
|
+
# ActiveAdmin.register Post do
|
9
|
+
# index :as => :block do |post|
|
10
|
+
# # render the post partial (app/views/admin/posts/_post)
|
11
|
+
# render 'post', :post => post
|
12
|
+
# end
|
13
|
+
# end
|
14
|
+
class IndexAsBlock < ActiveAdmin::Component
|
15
|
+
|
16
|
+
def build(page_config, collection)
|
17
|
+
collection.each do |obj|
|
18
|
+
instance_exec(obj, &page_config.block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class IndexAsBlog < ActiveAdmin::Component
|
4
|
+
|
5
|
+
def build(page_config, collection)
|
6
|
+
@page_config = page_config
|
7
|
+
@collection = collection
|
8
|
+
|
9
|
+
# Call the block passed in. This will set the
|
10
|
+
# title and body methods
|
11
|
+
instance_eval &page_config.block if page_config.block
|
12
|
+
|
13
|
+
build_posts
|
14
|
+
end
|
15
|
+
|
16
|
+
# Setter method for the configuration of the title
|
17
|
+
#
|
18
|
+
# index :as => :blog do
|
19
|
+
# title :a_method_to_call #=> Calls #a_method_to_call on the resource
|
20
|
+
#
|
21
|
+
# # OR
|
22
|
+
#
|
23
|
+
# title do |post|
|
24
|
+
# post.a_method_to_call
|
25
|
+
# end
|
26
|
+
# end
|
27
|
+
def title(method = nil, &block)
|
28
|
+
if block_given? || method
|
29
|
+
@title = block_given? ? block : method
|
30
|
+
end
|
31
|
+
@title
|
32
|
+
end
|
33
|
+
|
34
|
+
# Setter method for the configuration of the body
|
35
|
+
#
|
36
|
+
# index :as => :blog do
|
37
|
+
# title :my_title
|
38
|
+
#
|
39
|
+
# body :a_method_to_call #=> Calls #a_method_to_call on the resource
|
40
|
+
#
|
41
|
+
# # OR
|
42
|
+
#
|
43
|
+
# title do |post|
|
44
|
+
# post.a_method_to_call
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
def body(method = nil, &block)
|
48
|
+
if block_given? || method
|
49
|
+
@body = block_given? ? block : method
|
50
|
+
end
|
51
|
+
@body
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def build_posts
|
57
|
+
@collection.each do |post|
|
58
|
+
build_post(post)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def build_post(post)
|
63
|
+
div :for => post do
|
64
|
+
build_title(post)
|
65
|
+
build_body(post)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def build_title(post)
|
70
|
+
if @title
|
71
|
+
h3 do
|
72
|
+
link_to(call_method_or_proc_on(post, @title), resource_path(post))
|
73
|
+
end
|
74
|
+
else
|
75
|
+
h3 do
|
76
|
+
auto_link(post)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def build_body(post)
|
82
|
+
if @body
|
83
|
+
div(call_method_or_proc_on(post, @body), :class => 'content')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end # Posts
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class IndexAsGrid < ActiveAdmin::Component
|
4
|
+
|
5
|
+
def build(page_config, collection)
|
6
|
+
@page_config = page_config
|
7
|
+
@collection = collection
|
8
|
+
build_table
|
9
|
+
end
|
10
|
+
|
11
|
+
def number_of_columns
|
12
|
+
@page_config[:columns] || default_number_of_columns
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def build_table
|
18
|
+
table :class => "index_grid" do
|
19
|
+
collection.in_groups_of(number_of_columns).each do |group|
|
20
|
+
build_row(group)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def build_row(group)
|
26
|
+
tr do
|
27
|
+
group.each do |item|
|
28
|
+
item ? build_item(item) : build_empty_cell
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def build_item(item)
|
34
|
+
td :for => item do
|
35
|
+
instance_exec(item, &@page_config.block)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_empty_cell
|
40
|
+
td ' '.html_safe
|
41
|
+
end
|
42
|
+
|
43
|
+
def default_number_of_columns
|
44
|
+
3
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
class IndexAsTable < ActiveAdmin::Component
|
5
|
+
|
6
|
+
def build(page_config, collection)
|
7
|
+
table_options = {
|
8
|
+
:id => active_admin_config.plural_resource_name.underscore,
|
9
|
+
:sortable => true,
|
10
|
+
:class => "index_table"
|
11
|
+
}
|
12
|
+
table_for collection, table_options do |t|
|
13
|
+
instance_exec(t, &page_config.block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def table_for(*args, &block)
|
18
|
+
insert_tag IndexTableFor, *args, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
# Extend the default ActiveAdmin::Views::TableFor with some
|
23
|
+
# methods for quickly displaying items on the index page
|
24
|
+
#
|
25
|
+
class IndexTableFor < ::ActiveAdmin::Views::TableFor
|
26
|
+
|
27
|
+
# Display a column for the id
|
28
|
+
def id_column
|
29
|
+
column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
|
30
|
+
end
|
31
|
+
|
32
|
+
# Adds links to View, Edit and Delete
|
33
|
+
def default_actions(options = {})
|
34
|
+
options = {
|
35
|
+
:name => ""
|
36
|
+
}.merge(options)
|
37
|
+
column options[:name] do |resource|
|
38
|
+
links = link_to icon(:arrow_right_alt1) + "View", resource_path(resource), :class => "view_link"
|
39
|
+
links += link_to icon(:pen) + "Edit", edit_resource_path(resource), :class => "edit_link"
|
40
|
+
links += link_to icon(:trash_stroke) + "Delete", resource_path(resource), :method => :delete, :confirm => "Are you sure you want to delete this?", :class => "delete_link"
|
41
|
+
links
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Display A Status Tag Column
|
46
|
+
#
|
47
|
+
# index do |i|
|
48
|
+
# i.status_tag :state
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# index do |i|
|
52
|
+
# i.status_tag "State", :status_name
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# index do |i|
|
56
|
+
# i.status_tag do |post|
|
57
|
+
# post.published? ? 'published' : 'draft'
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
#
|
61
|
+
def status_tag(*args, &block)
|
62
|
+
col = Column.new(*args, &block)
|
63
|
+
data = col.data
|
64
|
+
col.data = proc do |resource|
|
65
|
+
status_tag call_method_or_proc_on(resource, data)
|
66
|
+
end
|
67
|
+
add_column col
|
68
|
+
end
|
69
|
+
end # TableBuilder
|
70
|
+
|
71
|
+
end # Table
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
module Pages
|
4
|
+
class Base < Arbre::HTML::Document
|
5
|
+
|
6
|
+
def build(*args)
|
7
|
+
super
|
8
|
+
build_active_admin_head
|
9
|
+
build_page
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def build_active_admin_head
|
15
|
+
within @head do
|
16
|
+
meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
|
17
|
+
insert_tag Arbre::HTML::Title, [title, ActiveAdmin.site_title].join(" | ")
|
18
|
+
ActiveAdmin.stylesheets.each do |path|
|
19
|
+
link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
|
20
|
+
end
|
21
|
+
ActiveAdmin.javascripts.each do |path|
|
22
|
+
script :src => javascript_path(path), :type => "text/javascript"
|
23
|
+
end
|
24
|
+
text_node csrf_meta_tag
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def build_page
|
29
|
+
within @body do
|
30
|
+
div :id => "wrapper" do
|
31
|
+
build_header
|
32
|
+
build_title_bar
|
33
|
+
build_page_content
|
34
|
+
build_footer
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_header
|
40
|
+
div :id => "header" do
|
41
|
+
render view_factory.header
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_title_bar
|
46
|
+
div :id => "title_bar" do
|
47
|
+
build_breadcrumb
|
48
|
+
build_title_tag
|
49
|
+
build_action_items
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_breadcrumb(separator = "/")
|
54
|
+
links = breadcrumb_links
|
55
|
+
return if links.empty?
|
56
|
+
span :class => "breadcrumb" do
|
57
|
+
links.each do |link|
|
58
|
+
text_node link
|
59
|
+
span(separator, :class => "breadcrumb_sep")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def build_title_tag
|
65
|
+
h2(title, :id => 'page_title')
|
66
|
+
end
|
67
|
+
|
68
|
+
def build_action_items
|
69
|
+
items = controller.class.action_items_for(params[:action])
|
70
|
+
insert_tag view_factory.action_items, items
|
71
|
+
end
|
72
|
+
|
73
|
+
def build_page_content
|
74
|
+
# TODO: Skip sidebar
|
75
|
+
div :id => "content", :class => "with_sidebar" do
|
76
|
+
build_flash_messages
|
77
|
+
build_main_content_wrapper
|
78
|
+
build_sidebar
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def build_flash_messages
|
83
|
+
if flash.keys.any?
|
84
|
+
div :class => 'flashes' do
|
85
|
+
flash.each do |type, message|
|
86
|
+
div message, :class => "flash flash_#{type}"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def build_main_content_wrapper
|
93
|
+
div :id => "main_content_wrapper" do
|
94
|
+
div :id => "main_content" do
|
95
|
+
main_content
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def main_content
|
101
|
+
"Please implement #{self.class.name}#main_content to display content.".html_safe
|
102
|
+
end
|
103
|
+
|
104
|
+
def title
|
105
|
+
self.class.name
|
106
|
+
end
|
107
|
+
|
108
|
+
# Set's the page title for the layout to render
|
109
|
+
def set_page_title
|
110
|
+
set_ivar_on_view "@page_title", title
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
# Returns the sidebar sections to render for the current action
|
115
|
+
def sidebar_sections_for_action
|
116
|
+
controller.class.sidebar_sections_for(params[:action])
|
117
|
+
end
|
118
|
+
|
119
|
+
# Renders the sidebar
|
120
|
+
def build_sidebar
|
121
|
+
div :id => "sidebar" do
|
122
|
+
sidebar_sections_for_action.collect do |section|
|
123
|
+
sidebar_section(section)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Renders the content for the footer
|
129
|
+
def build_footer
|
130
|
+
div :id => "footer" do
|
131
|
+
para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,61 @@
|
|
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
|
+
"Dashboard"
|
21
|
+
end
|
22
|
+
|
23
|
+
def render_sections(sections)
|
24
|
+
p "Rendering sections"
|
25
|
+
p sections.count
|
26
|
+
table :class => "dashboard" do
|
27
|
+
sections.in_groups_of(3, false).each do |row|
|
28
|
+
tr do
|
29
|
+
row.each do |section|
|
30
|
+
td do
|
31
|
+
render_section(section)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Renders each section using their renderer
|
40
|
+
def render_section(section)
|
41
|
+
insert_tag section_renderer(section), section
|
42
|
+
end
|
43
|
+
|
44
|
+
def section_renderer(section)
|
45
|
+
if section.options[:as]
|
46
|
+
view_factory["dashboard_section_as_#{section.options[:as]}"]
|
47
|
+
else
|
48
|
+
view_factory.dashboard_section
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_welcome_section
|
53
|
+
para :id => "dashboard_default_message" do
|
54
|
+
"Welcome to Active Admin. This is the default dashboard page. To add dashboard sections, checkout 'app/admin/dashboards.rb'"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|