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
data/.gitignore
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
## MAC OS
|
2
|
-
.DS_Store
|
3
|
-
|
4
|
-
## TEXTMATE
|
5
|
-
*.tmproj
|
6
|
-
tmtags
|
7
|
-
|
8
|
-
## EMACS
|
9
|
-
*~
|
10
|
-
\#*
|
11
|
-
.\#*
|
12
|
-
|
13
|
-
## VIM
|
14
|
-
*.swp
|
15
|
-
|
16
|
-
## PROJECT::GENERAL
|
17
|
-
coverage
|
18
|
-
rdoc
|
19
|
-
pkg
|
20
|
-
|
21
|
-
## PROJECT::SPECIFIC
|
22
|
-
.bundle
|
23
|
-
spec/rails
|
24
|
-
*.sqlite3-journal
|
25
|
-
Gemfile.lock
|
data/active_admin.gemspec
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path('../lib/', __FILE__)
|
3
|
-
$:.unshift lib unless $:.include?(lib)
|
4
|
-
|
5
|
-
require 'active_admin/version'
|
6
|
-
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.name = "active_admin"
|
9
|
-
s.version = ActiveAdmin::VERSION
|
10
|
-
s.platform = Gem::Platform::RUBY
|
11
|
-
s.authors = ["Greg Bell"]
|
12
|
-
s.email = ["gregdbell@gmail.com"]
|
13
|
-
s.homepage = "http://github.com/gregbell/active_admin"
|
14
|
-
s.summary = "The missing administration framework for Ruby on Rails"
|
15
|
-
s.description = "ActiveAdmin DRY's your administration UI so that you can concentrate on what's actually important"
|
16
|
-
|
17
|
-
s.add_dependency 'inherited_views', '>= 0.0.1'
|
18
|
-
s.add_dependency 'meta_search'
|
19
|
-
|
20
|
-
s.files = Dir.glob("lib/**/*") + %w(LICENSE README.rdoc)
|
21
|
-
s.require_path = 'lib'
|
22
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
|
3
|
-
# Member Actions give you the functionality of defining both the
|
4
|
-
# action and the route directly from your ActiveAdmin registration
|
5
|
-
# block.
|
6
|
-
#
|
7
|
-
# For example:
|
8
|
-
#
|
9
|
-
# ActiveAdmin.register Post do
|
10
|
-
# member_action :comments do
|
11
|
-
# @post = Post.find(params[:id]
|
12
|
-
# @comments = @post.comments
|
13
|
-
# end
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# Will create a new controller action comments and will hook it up to
|
17
|
-
# the named route (comments_admin_post_path) /admin/posts/:id/comments
|
18
|
-
#
|
19
|
-
# You can treat everything within the block as a standard Rails controller
|
20
|
-
# action.
|
21
|
-
#
|
22
|
-
module ActionBuilder
|
23
|
-
|
24
|
-
def self.included(base)
|
25
|
-
base.extend ClassMethods
|
26
|
-
end
|
27
|
-
|
28
|
-
module ClassMethods
|
29
|
-
def member_action(name, options = {}, &block)
|
30
|
-
active_admin_config.member_actions << ControllerAction.new(name, options)
|
31
|
-
define_method(name, &block || Proc.new{})
|
32
|
-
end
|
33
|
-
|
34
|
-
def clear_member_actions!
|
35
|
-
active_admin_config.clear_member_actions!
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
def collection_action(name, options = {}, &block)
|
40
|
-
active_admin_config.collection_actions << ControllerAction.new(name, options)
|
41
|
-
define_method(name, &block || Proc.new{})
|
42
|
-
end
|
43
|
-
|
44
|
-
def clear_collection_actions!
|
45
|
-
active_admin_config.clear_collection_actions!
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class ControllerAction
|
50
|
-
attr_reader :name
|
51
|
-
def initialize(name, options = {})
|
52
|
-
@name, @options = name, options
|
53
|
-
end
|
54
|
-
|
55
|
-
def http_verb
|
56
|
-
@options[:method] ||= :get
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Breadcrumbs
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
base.send :extend, ClassMethods
|
6
|
-
end
|
7
|
-
|
8
|
-
protected
|
9
|
-
|
10
|
-
def add_breadcrumb(name, url = '')
|
11
|
-
@breadcrumbs ||= []
|
12
|
-
url = send(url) if url.is_a?(Symbol)
|
13
|
-
@breadcrumbs << [name, url]
|
14
|
-
end
|
15
|
-
|
16
|
-
module ClassMethods
|
17
|
-
|
18
|
-
def add_breadcrumb(name, url, options = {})
|
19
|
-
before_filter options do |controller|
|
20
|
-
controller.send(:add_breadcrumb, name, url)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Dashboards
|
3
|
-
class Renderer < ::ActiveAdmin::Pages::Base
|
4
|
-
|
5
|
-
def main_content
|
6
|
-
if @dashboard_sections && @dashboard_sections.any?
|
7
|
-
render_sections(@dashboard_sections)
|
8
|
-
else
|
9
|
-
default_welcome_section
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
protected
|
14
|
-
|
15
|
-
def title
|
16
|
-
"Dashboard"
|
17
|
-
end
|
18
|
-
|
19
|
-
def render_sections(sections)
|
20
|
-
content_tag :table, :class => "dashboard" do
|
21
|
-
sections.in_groups_of(3, false).collect do |row|
|
22
|
-
content_tag :tr do
|
23
|
-
row.collect do |section|
|
24
|
-
content_tag :td, render_section(section)
|
25
|
-
end.join
|
26
|
-
end
|
27
|
-
end.join
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Renders each section using their renderer
|
32
|
-
def render_section(section)
|
33
|
-
renderer = section.renderer.new(self)
|
34
|
-
renderer.to_html(section)
|
35
|
-
end
|
36
|
-
|
37
|
-
def default_welcome_section
|
38
|
-
content_tag :p, :id => "dashboard_default_message" do
|
39
|
-
"Welcome to Active Admin. This is the default dashboard page. To add dashboard sections, checkout 'app/admin/dashboards.rb'"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Dashboards
|
3
|
-
class SectionRenderer < ::ActiveAdmin::Renderer
|
4
|
-
|
5
|
-
def to_html(section)
|
6
|
-
@section = section
|
7
|
-
content_tag :div, title_wrapped + content_wrapped, :class => 'dashboard_section', :id => "#{section.name.to_s.downcase.gsub(' ', '_')}_dashboard_section"
|
8
|
-
end
|
9
|
-
|
10
|
-
def title_wrapped
|
11
|
-
content_tag :h3, title
|
12
|
-
end
|
13
|
-
|
14
|
-
def title
|
15
|
-
@section.name.to_s.titleize
|
16
|
-
end
|
17
|
-
|
18
|
-
def content_wrapped
|
19
|
-
content_tag :div, content, :class => 'dashboard_section_content'
|
20
|
-
end
|
21
|
-
|
22
|
-
def content
|
23
|
-
instance_eval(&@section.block)
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/lib/active_admin/filters.rb
DELETED
@@ -1,189 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Filters
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
base.extend ClassMethods
|
6
|
-
base.send :helper_method, :filters_config
|
7
|
-
end
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
def filter(attribute, options = {})
|
11
|
-
return false if attribute.nil?
|
12
|
-
@filters ||= []
|
13
|
-
@filters << options.merge(:attribute => attribute)
|
14
|
-
end
|
15
|
-
|
16
|
-
def filters_config
|
17
|
-
@filters && @filters.any? ? @filters : default_filters_config
|
18
|
-
end
|
19
|
-
|
20
|
-
def reset_filters!
|
21
|
-
@filters = []
|
22
|
-
end
|
23
|
-
|
24
|
-
# Returns a sane set of filters by default for the object
|
25
|
-
def default_filters_config
|
26
|
-
default_association_filters + default_content_filters
|
27
|
-
end
|
28
|
-
|
29
|
-
# Returns a default set of filters for the associations
|
30
|
-
def default_association_filters
|
31
|
-
if resource_class.respond_to?(:reflections)
|
32
|
-
resource_class.reflections.collect{|name, r| { :attribute => name }}
|
33
|
-
else
|
34
|
-
[]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Returns a default set of filters for the content columns
|
39
|
-
def default_content_filters
|
40
|
-
if resource_class.respond_to?(:content_columns)
|
41
|
-
resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
|
42
|
-
else
|
43
|
-
[]
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
def filters_config
|
50
|
-
self.class.filters_config
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
class FormBuilder < FormBuilder
|
55
|
-
|
56
|
-
def filter(method, options = {})
|
57
|
-
return "" if method.nil? || method == ""
|
58
|
-
options[:as] ||= default_filter_type(method)
|
59
|
-
return "" unless options[:as]
|
60
|
-
content = skip_form_buffers do
|
61
|
-
send("filter_#{options.delete(:as)}_input", method, options)
|
62
|
-
end
|
63
|
-
@form_buffers.last << template.content_tag(:div, content, :class => "filter-form-field")
|
64
|
-
end
|
65
|
-
|
66
|
-
protected
|
67
|
-
|
68
|
-
def filter_string_input(method, options = {})
|
69
|
-
field_name = "#{method}_contains"
|
70
|
-
|
71
|
-
[ label(field_name, "Search #{method.to_s.titlecase}"),
|
72
|
-
text_field(field_name)
|
73
|
-
].join("\n").html_safe
|
74
|
-
end
|
75
|
-
|
76
|
-
def filter_date_range_input(method, options = {})
|
77
|
-
gt_field_name = "#{method}_gte"
|
78
|
-
lt_field_name = "#{method}_lte"
|
79
|
-
|
80
|
-
[ label(gt_field_name, method.to_s.titlecase),
|
81
|
-
filter_date_text_field(gt_field_name),
|
82
|
-
" - ",
|
83
|
-
filter_date_text_field(lt_field_name)
|
84
|
-
].join("\n").html_safe
|
85
|
-
end
|
86
|
-
|
87
|
-
def filter_date_text_field(method)
|
88
|
-
current_value = @object.send(method)
|
89
|
-
text_field(method, :size => 12, :class => "datepicker", :max => 10, :value => current_value.respond_to?(:strftime) ? current_value.strftime("%Y-%m-%d") : "")
|
90
|
-
end
|
91
|
-
|
92
|
-
def filter_numeric_input(method, options = {})
|
93
|
-
filters = numeric_filters_for_method(method, options.delete(:filters) || default_numeric_filters)
|
94
|
-
current_filter = current_numeric_scope(filters)
|
95
|
-
filter_select = @template.select_tag '', @template.options_for_select(filters, current_filter),
|
96
|
-
:onchange => "document.getElementById('#{method}_numeric').name = 'q[' + this.value + ']';"
|
97
|
-
filter_input = text_field current_filter, :size => 10, :id => "#{method}_numeric"
|
98
|
-
|
99
|
-
[ label(method),
|
100
|
-
filter_select,
|
101
|
-
" ",
|
102
|
-
filter_input
|
103
|
-
].join("\n").html_safe
|
104
|
-
end
|
105
|
-
|
106
|
-
def numeric_filters_for_method(method, filters)
|
107
|
-
filters.collect{|scope| [scope[0], [method,scope[1]].join("_") ] }
|
108
|
-
end
|
109
|
-
|
110
|
-
# Returns the scope for which we are currently searching. If no search is available
|
111
|
-
# it returns the first scope
|
112
|
-
def current_numeric_scope(filters)
|
113
|
-
filters[1..-1].inject(filters.first){|a,b| object.send(b[1].to_sym) ? b : a }[1]
|
114
|
-
end
|
115
|
-
|
116
|
-
def default_numeric_filters
|
117
|
-
[['Equal To', 'eq'], ['Greater Than', 'gt'], ['Less Than', 'lt']]
|
118
|
-
end
|
119
|
-
|
120
|
-
def filter_select_input(method, options = {})
|
121
|
-
association_name = method.to_s.gsub(/_id$/, '').to_sym
|
122
|
-
input_name = (generate_association_input_name(method).to_s + "_eq").to_sym
|
123
|
-
collection = find_collection_for_column(association_name, options)
|
124
|
-
|
125
|
-
[ label(input_name, method.to_s.titlecase),
|
126
|
-
select(input_name, collection, options.merge(:include_blank => 'Any'))
|
127
|
-
].join("\n").html_safe
|
128
|
-
end
|
129
|
-
|
130
|
-
def filter_check_boxes_input(method, options = {})
|
131
|
-
input_name = (generate_association_input_name(method).to_s + "_in").to_sym
|
132
|
-
collection = find_collection_for_column(method, options)
|
133
|
-
selected_values = @object.send(input_name) || []
|
134
|
-
checkboxes = collection.map do |c|
|
135
|
-
label = c.is_a?(Array) ? c.first : c
|
136
|
-
value = c.is_a?(Array) ? c.last : c
|
137
|
-
"<label><input type=\"checkbox\" name=\"q[#{input_name}][]\" value=\"#{value}\" #{selected_values.include?(value) ? "checked" : ""}/> #{label}</label>"
|
138
|
-
end.join("\n").html_safe
|
139
|
-
|
140
|
-
[ label(input_name, method.to_s.titlecase),
|
141
|
-
checkboxes
|
142
|
-
].join("\n").html_safe
|
143
|
-
end
|
144
|
-
|
145
|
-
# Override the standard finder to accept a proc
|
146
|
-
def find_collection_for_column(method, options = {})
|
147
|
-
options = options.dup
|
148
|
-
case options[:collection]
|
149
|
-
when Proc
|
150
|
-
options[:collection] = options[:collection].call
|
151
|
-
end
|
152
|
-
super(method, options)
|
153
|
-
end
|
154
|
-
|
155
|
-
# Returns the default filter type for a given attribute
|
156
|
-
def default_filter_type(method)
|
157
|
-
if column = column_for(method)
|
158
|
-
case column.type
|
159
|
-
when :date, :datetime
|
160
|
-
return :date_range
|
161
|
-
when :string, :text
|
162
|
-
return :string
|
163
|
-
when :integer
|
164
|
-
return :select if method.to_s =~ /_id$/
|
165
|
-
return :numeric
|
166
|
-
when :float, :decimal
|
167
|
-
return :numeric
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
if reflection = reflection_for(method)
|
172
|
-
return :select if reflection.macro == :belongs_to
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# Returns the column for an attribute on the object being searched
|
177
|
-
# if it exists. Otherwise returns nil
|
178
|
-
def column_for(method)
|
179
|
-
@object.base.columns_hash[method.to_s] if @object.base.respond_to?(:columns_hash)
|
180
|
-
end
|
181
|
-
|
182
|
-
# Returns the association reflection for the method if it exists
|
183
|
-
def reflection_for(method)
|
184
|
-
@object.base.reflect_on_association(method) if @object.base.respond_to?(:reflect_on_association)
|
185
|
-
end
|
186
|
-
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
data/lib/active_admin/pages.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
|
4
|
-
autoload :Base, 'active_admin/pages/base'
|
5
|
-
autoload :Index, 'active_admin/pages/index'
|
6
|
-
autoload :New, 'active_admin/pages/new'
|
7
|
-
autoload :Show, 'active_admin/pages/show'
|
8
|
-
autoload :Edit, 'active_admin/pages/edit'
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Pages
|
3
|
-
class Base < ::ActiveAdmin::Renderer
|
4
|
-
|
5
|
-
def breadcrumb(separator = "/")
|
6
|
-
content_tag :span, :class => "breadcrumb" do
|
7
|
-
@breadcrumbs.map { |txt, path| link_to_unless((path.blank? || current_page?(path)), h(txt), path) }.join(" #{content_tag(:span, separator, :class => "breadcrumb_sep")} ")
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def main_content
|
12
|
-
"Please implement #{self.class.name}#main_content to display content.".html_safe
|
13
|
-
end
|
14
|
-
|
15
|
-
def title_bar
|
16
|
-
content_for :title_bar do
|
17
|
-
[breadcrumb, title_tag, action_items].join.html_safe
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def title_tag
|
22
|
-
content_tag :h2, title, :id => 'page_title'
|
23
|
-
end
|
24
|
-
|
25
|
-
def title
|
26
|
-
self.class.name
|
27
|
-
end
|
28
|
-
|
29
|
-
# Set's the page title for the layout to render
|
30
|
-
def set_page_title
|
31
|
-
set_ivar_on_view "@page_title", title
|
32
|
-
end
|
33
|
-
|
34
|
-
def action_items_renderer
|
35
|
-
ActiveAdmin::ActionItems::Renderer
|
36
|
-
end
|
37
|
-
|
38
|
-
def action_items
|
39
|
-
items = controller.class.action_items_for(params[:action])
|
40
|
-
action_items_renderer.new(self).to_html(items)
|
41
|
-
end
|
42
|
-
|
43
|
-
# Returns the renderer class to use to render the sidebar
|
44
|
-
#
|
45
|
-
# You could override this method and return your own custom
|
46
|
-
# sidebar renderer
|
47
|
-
def sidebar_renderer
|
48
|
-
ActiveAdmin::Sidebar::Renderer
|
49
|
-
end
|
50
|
-
|
51
|
-
# Returns the sidebar sections to render for the current action
|
52
|
-
def sidebar_sections
|
53
|
-
controller.class.sidebar_sections_for(params[:action])
|
54
|
-
end
|
55
|
-
|
56
|
-
# Renders the sidebar
|
57
|
-
def sidebar
|
58
|
-
content_for :sidebar do
|
59
|
-
sidebar_renderer.new(self).to_html(sidebar_sections)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# Renders the content for the footer
|
64
|
-
def footer
|
65
|
-
content_for :footer do
|
66
|
-
content_tag :p, "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def flash_messages
|
71
|
-
content_for :flash_messages do
|
72
|
-
if flash.keys.any?
|
73
|
-
content_tag :div, :class => 'flashes' do
|
74
|
-
flash.collect do |type, message|
|
75
|
-
content_tag :div, message, :class => "flash flash_#{type}"
|
76
|
-
end.join
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def to_html
|
83
|
-
set_page_title
|
84
|
-
title_bar
|
85
|
-
flash_messages
|
86
|
-
footer
|
87
|
-
sidebar
|
88
|
-
main_content
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|