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
@@ -1,21 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Edit < Base
|
4
|
-
|
5
|
-
def title
|
6
|
-
"Edit #{active_admin_config.resource_name}"
|
7
|
-
end
|
8
|
-
|
9
|
-
def main_content
|
10
|
-
config = self.form_config.dup
|
11
|
-
config.delete(:block)
|
12
|
-
config.reverse_merge!({
|
13
|
-
:url => resource_path(resource)
|
14
|
-
})
|
15
|
-
|
16
|
-
active_admin_form_for resource, config, &form_config[:block]
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
|
4
|
-
class Index < Base
|
5
|
-
|
6
|
-
# Default Index config styles. Each of these are what
|
7
|
-
# actually gets rendered in the main content and configured
|
8
|
-
# through the :as option when configuring your index
|
9
|
-
autoload :Table, 'active_admin/pages/index/table'
|
10
|
-
autoload :Blog, 'active_admin/pages/index/blog'
|
11
|
-
autoload :Thumbnails, 'active_admin/pages/index/thumbnails'
|
12
|
-
|
13
|
-
def title
|
14
|
-
active_admin_config.plural_resource_name
|
15
|
-
end
|
16
|
-
|
17
|
-
def config
|
18
|
-
index_config || default_index_config
|
19
|
-
end
|
20
|
-
|
21
|
-
# Render's the index configuration that was set in the
|
22
|
-
# controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
|
23
|
-
def main_content
|
24
|
-
renderer_class = find_index_renderer_class(config[:as])
|
25
|
-
renderer_class.new(self).to_html(config, collection)
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# Creates a default configuration for the resource class. This is a table
|
31
|
-
# with each column displayed as well as all the default actions
|
32
|
-
def default_index_config
|
33
|
-
@default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
|
34
|
-
display.id
|
35
|
-
resource_class.content_columns.each do |column|
|
36
|
-
display.column column.name.to_sym
|
37
|
-
end
|
38
|
-
display.default_actions
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Returns the actual class for renderering the main content on the index
|
43
|
-
# page. To set this, use the :as option in the page_config block.
|
44
|
-
def find_index_renderer_class(symbol_or_class)
|
45
|
-
case symbol_or_class
|
46
|
-
when Symbol
|
47
|
-
::ActiveAdmin::Pages::Index.const_get(symbol_or_class.to_s.camelcase)
|
48
|
-
when Class
|
49
|
-
symbol_or_class
|
50
|
-
else
|
51
|
-
raise ArgumentError, "'as' requires a class or a symbol"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Index
|
4
|
-
|
5
|
-
class Blog < Renderer
|
6
|
-
|
7
|
-
def to_html(page_config, collection)
|
8
|
-
@page_config = page_config
|
9
|
-
@config = Builder.new
|
10
|
-
@page_config.block.call(@config) if @page_config.block
|
11
|
-
|
12
|
-
wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
|
13
|
-
content_tag :div do
|
14
|
-
collection.collect{|item| render_post(item) }.join
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def render_post(post)
|
22
|
-
content_tag_for :div, post do
|
23
|
-
title = content_tag :h3, link_to(post_title_content(post), resource_path(post))
|
24
|
-
main_content = content_tag(:div, post_content(post), :class => 'content')
|
25
|
-
title + main_content
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def post_title_content(post)
|
30
|
-
call_method_or_proc_on(post, @config.title) || "#{active_admin_config.resource_name} #{post.id}"
|
31
|
-
end
|
32
|
-
|
33
|
-
def post_content(post)
|
34
|
-
call_method_or_proc_on(post, @config.content) || ""
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
# A small builder class which gets passed into the block when defining
|
39
|
-
# the options to display as posts.
|
40
|
-
#
|
41
|
-
# ActiveAdmin.register Post
|
42
|
-
# index :as => :posts do |i|
|
43
|
-
# # i is an instance of Builder
|
44
|
-
# end
|
45
|
-
# end
|
46
|
-
class Builder
|
47
|
-
def title(method = nil, &block)
|
48
|
-
if block_given? || method
|
49
|
-
@title = block_given? ? block : method
|
50
|
-
end
|
51
|
-
@title
|
52
|
-
end
|
53
|
-
|
54
|
-
def content(method = nil, &block)
|
55
|
-
if block_given? || method
|
56
|
-
@content = block_given? ? block : method
|
57
|
-
end
|
58
|
-
@content
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
end # Posts
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Index
|
4
|
-
|
5
|
-
class Table < Renderer
|
6
|
-
|
7
|
-
def to_html(page_config, collection)
|
8
|
-
wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
|
9
|
-
table_options = {
|
10
|
-
:id => active_admin_config.plural_resource_name.underscore,
|
11
|
-
:sortable => true,
|
12
|
-
:class => "index_table"
|
13
|
-
}
|
14
|
-
TableBuilder.new(&page_config.block).to_html(self, collection, table_options)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
#
|
19
|
-
# Extend the default ActiveAdmin::TableBuilder with some
|
20
|
-
# methods for quickly displaying items on the index page
|
21
|
-
#
|
22
|
-
class TableBuilder < ::ActiveAdmin::TableBuilder
|
23
|
-
|
24
|
-
# Display a column for the id
|
25
|
-
def id
|
26
|
-
column 'ID', :id
|
27
|
-
end
|
28
|
-
|
29
|
-
# Adds links to View, Edit and Delete
|
30
|
-
def default_actions(options = {})
|
31
|
-
options = {
|
32
|
-
:name => ""
|
33
|
-
}.merge(options)
|
34
|
-
column options[:name] do |resource|
|
35
|
-
links = link_to "View", resource_path(resource)
|
36
|
-
links += " | "
|
37
|
-
links += link_to "Edit", edit_resource_path(resource)
|
38
|
-
links += " | "
|
39
|
-
links += link_to "Delete", resource_path(resource), :method => :delete, :confirm => "Are you sure you want to delete this?"
|
40
|
-
links
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end # TableBuilder
|
44
|
-
|
45
|
-
end # Table
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Index
|
4
|
-
|
5
|
-
class Thumbnails < Renderer
|
6
|
-
|
7
|
-
def to_html(page_config, collection)
|
8
|
-
@page_config = page_config
|
9
|
-
@config = Builder.new
|
10
|
-
@page_config.block.call(@config) if @page_config.block
|
11
|
-
|
12
|
-
wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
|
13
|
-
content_tag :div, :style => "clear:both;" do
|
14
|
-
collection.collect{|item| render_image(item) }.join
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def render_image(item)
|
20
|
-
link_to tag("img", :src => thumbnail_url(item), :width => 200, :height => 200),
|
21
|
-
resource_path(item)
|
22
|
-
end
|
23
|
-
|
24
|
-
def thumbnail_url(item)
|
25
|
-
call_method_or_proc_on(item, @config.image)
|
26
|
-
end
|
27
|
-
|
28
|
-
class Builder
|
29
|
-
def image(method = nil, &block)
|
30
|
-
if block_given? || method
|
31
|
-
@image = block_given? ? block : method
|
32
|
-
end
|
33
|
-
@image
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class New < Base
|
4
|
-
|
5
|
-
def title
|
6
|
-
"New #{active_admin_config.resource_name}"
|
7
|
-
end
|
8
|
-
|
9
|
-
def main_content
|
10
|
-
config = self.form_config.dup
|
11
|
-
config.delete(:block)
|
12
|
-
config.reverse_merge!({
|
13
|
-
:url => collection_path
|
14
|
-
})
|
15
|
-
|
16
|
-
active_admin_form_for resource, config, &form_config[:block]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Show < Base
|
4
|
-
|
5
|
-
def config
|
6
|
-
active_admin_config.page_configs[:show] || ::ActiveAdmin::PageConfig.new
|
7
|
-
end
|
8
|
-
|
9
|
-
def title
|
10
|
-
case config[:title]
|
11
|
-
when Symbol, Proc
|
12
|
-
call_method_or_proc_on(resource, config[:title])
|
13
|
-
when String
|
14
|
-
config[:title]
|
15
|
-
else
|
16
|
-
default_title
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def main_content
|
21
|
-
if config.block
|
22
|
-
# Eval the show config from the controller
|
23
|
-
instance_eval &config.block
|
24
|
-
else
|
25
|
-
default_main_content
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
protected
|
30
|
-
|
31
|
-
def default_title
|
32
|
-
"#{active_admin_config.resource_name} ##{resource.id}"
|
33
|
-
end
|
34
|
-
|
35
|
-
def default_main_content
|
36
|
-
table_options = {
|
37
|
-
:border => 0,
|
38
|
-
:cellpadding => 0,
|
39
|
-
:cellspacing => 0,
|
40
|
-
:id => "#{resource_class.name.underscore}_attributes",
|
41
|
-
:class => "resource_attributes"
|
42
|
-
}
|
43
|
-
content_tag :table, table_options do
|
44
|
-
show_view_columns.collect do |attr|
|
45
|
-
content_tag :tr do
|
46
|
-
content_tag(:th, attr.to_s.titlecase) + content_tag(:td, resource.send(attr))
|
47
|
-
end
|
48
|
-
end.join
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,162 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
class TableBuilder
|
3
|
-
|
4
|
-
attr_reader :columns
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@columns = []
|
8
|
-
yield self if block_given?
|
9
|
-
end
|
10
|
-
|
11
|
-
def column(*args, &block)
|
12
|
-
@columns << Column.new(*args, &block)
|
13
|
-
end
|
14
|
-
|
15
|
-
# This method allows you to add many columns at
|
16
|
-
# once or returns the list of all columns.
|
17
|
-
#
|
18
|
-
# TableBuilder.new do |t|
|
19
|
-
# t.columns :first, :second, :third
|
20
|
-
# end
|
21
|
-
#
|
22
|
-
# OR
|
23
|
-
#
|
24
|
-
# builder.columns #=> [:first, :second, :third]
|
25
|
-
def columns(first_column = nil, *more)
|
26
|
-
return @columns unless first_column
|
27
|
-
[first_column, more].flatten.each do |c|
|
28
|
-
column(c)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# Helper method to quickly render a table builder
|
33
|
-
def to_html(view, collection, options)
|
34
|
-
Renderer.new(view).to_html(self, collection, options)
|
35
|
-
end
|
36
|
-
|
37
|
-
class Renderer < ActiveAdmin::Renderer
|
38
|
-
def to_html(builder, collection, options = {})
|
39
|
-
@builder, @collection = builder, collection
|
40
|
-
@sortable = options.delete(:sortable) || false
|
41
|
-
table_options = {
|
42
|
-
:border => 0,
|
43
|
-
:cellpadding => 0,
|
44
|
-
:cellspacing => 0
|
45
|
-
}.merge(options)
|
46
|
-
content_tag :table, table_options do
|
47
|
-
table_head + table_body
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def columns
|
52
|
-
@columns ||= @builder.columns.select do |column|
|
53
|
-
instance_eval &column.conditional_block
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def sortable?
|
58
|
-
@sortable
|
59
|
-
end
|
60
|
-
|
61
|
-
def table_head
|
62
|
-
content_tag :thead do
|
63
|
-
columns.collect do |column|
|
64
|
-
if sortable? && column.sortable?
|
65
|
-
sortable_header_for column.title, column.sort_key
|
66
|
-
else
|
67
|
-
content_tag :th, column.title
|
68
|
-
end
|
69
|
-
end.join
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def table_body
|
74
|
-
content_tag :tbody do
|
75
|
-
@collection.collect{|item| table_row(item) }.join
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def table_row(item)
|
80
|
-
content_tag :tr, :class => cycle('odd', 'even') do
|
81
|
-
columns.collect{|column| table_cell(column, item) }.join
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def resource
|
86
|
-
@resource
|
87
|
-
end
|
88
|
-
|
89
|
-
def table_cell(column, item)
|
90
|
-
row_content = call_method_or_proc_on(item, column.data) || ""
|
91
|
-
l(row_content) if [Date, DateTime, Time].include?(row_content)
|
92
|
-
content_tag :td, row_content
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
class Column
|
98
|
-
|
99
|
-
attr_accessor :title, :data
|
100
|
-
|
101
|
-
def initialize(*args, &block)
|
102
|
-
@options = default_options.merge(args.last.is_a?(::Hash) ? args.pop : {})
|
103
|
-
@title = pretty_title args[0]
|
104
|
-
@data = args[1] || args[0]
|
105
|
-
@data = block if block
|
106
|
-
end
|
107
|
-
|
108
|
-
def sortable?
|
109
|
-
if @data.is_a?(Proc)
|
110
|
-
[String, Symbol].include?(@options[:sortable].class)
|
111
|
-
else
|
112
|
-
@options[:sortable]
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
#
|
117
|
-
# Returns the key to be used for sorting this column
|
118
|
-
#
|
119
|
-
# Defaults to the column's method if its a symbol
|
120
|
-
# column :username
|
121
|
-
# # => Sort key will be set to 'username'
|
122
|
-
#
|
123
|
-
# You can set the sort key by passing a string or symbol
|
124
|
-
# to the sortable option:
|
125
|
-
# column :username, :sortable => 'other_column_to_sort_on'
|
126
|
-
#
|
127
|
-
# If you pass a block to be rendered for this column, the column
|
128
|
-
# will not be sortable unless you pass a string to sortable to
|
129
|
-
# sort the column on:
|
130
|
-
#
|
131
|
-
# column('Username', :sortable => 'login'){ @user.pretty_name }
|
132
|
-
# # => Sort key will be 'login'
|
133
|
-
#
|
134
|
-
def sort_key
|
135
|
-
if @options[:sortable] == true || @options[:sortable] == false
|
136
|
-
@data.to_s
|
137
|
-
else
|
138
|
-
@options[:sortable].to_s
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def conditional_block
|
143
|
-
@options[:if]
|
144
|
-
end
|
145
|
-
|
146
|
-
private
|
147
|
-
|
148
|
-
def pretty_title(raw)
|
149
|
-
raw.is_a?(Symbol) ? raw.to_s.split('_').collect{|s| s.capitalize }.join(' ') : raw
|
150
|
-
end
|
151
|
-
|
152
|
-
def default_options
|
153
|
-
{
|
154
|
-
:sortable => true,
|
155
|
-
:if => proc{ true }
|
156
|
-
}
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
end
|
162
|
-
end
|