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,31 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Resource
|
3
|
+
class BelongsTo
|
4
|
+
|
5
|
+
class TargetNotFound < StandardError; end
|
6
|
+
|
7
|
+
# The resource which initiated this relationship
|
8
|
+
attr_reader :owner
|
9
|
+
|
10
|
+
def initialize(owner_resource, target_name, options = {})
|
11
|
+
@owner, @target_name = owner_resource, target_name
|
12
|
+
@options = options
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns the target resource class or raises an exception if it doesn't exist
|
16
|
+
def target
|
17
|
+
namespace.resources[@target_name.to_s.camelize] or
|
18
|
+
raise TargetNotFound, "Could not find registered resource #{@target_name} in #{namespace.name} with #{namespace.resources.keys.inspect}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def namespace
|
22
|
+
@owner.namespace
|
23
|
+
end
|
24
|
+
|
25
|
+
def optional?
|
26
|
+
@options[:optional]
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,323 +1,108 @@
|
|
1
1
|
require 'inherited_views'
|
2
|
-
require 'active_admin/
|
2
|
+
require 'active_admin/resource_controller/actions'
|
3
|
+
require 'active_admin/resource_controller/action_builder'
|
4
|
+
require 'active_admin/resource_controller/callbacks'
|
5
|
+
require 'active_admin/resource_controller/collection'
|
6
|
+
require 'active_admin/resource_controller/filters'
|
7
|
+
require 'active_admin/resource_controller/form'
|
8
|
+
require 'active_admin/resource_controller/menu'
|
9
|
+
require 'active_admin/resource_controller/page_configurations'
|
10
|
+
require 'active_admin/resource_controller/scoping'
|
11
|
+
require 'active_admin/resource_controller/sidebars'
|
3
12
|
|
4
13
|
module ActiveAdmin
|
5
14
|
class ResourceController < ::InheritedViews::Base
|
6
15
|
|
7
|
-
# Add our views to the view path
|
8
|
-
ActionController::Base.append_view_path File.expand_path('../views', __FILE__)
|
9
16
|
self.default_views = 'active_admin_default'
|
10
17
|
|
11
18
|
helper ::ActiveAdmin::ViewHelpers
|
12
19
|
|
13
|
-
layout
|
20
|
+
layout false
|
14
21
|
|
15
|
-
class_inheritable_accessor :form_config
|
16
|
-
|
17
|
-
include ActiveAdmin::Breadcrumbs
|
18
|
-
include ActiveAdmin::Sidebar
|
19
|
-
include ActiveAdmin::ActionItems
|
20
|
-
include ActiveAdmin::Filters
|
21
|
-
include ActiveAdmin::ActionBuilder
|
22
|
-
|
23
22
|
respond_to :html, :xml, :json
|
24
23
|
respond_to :csv, :only => :index
|
25
24
|
|
26
|
-
|
25
|
+
before_filter :authenticate_active_admin_user
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
include ActiveAdmin::ActionItems
|
28
|
+
include Actions
|
29
|
+
include ActionBuilder
|
30
|
+
include Callbacks
|
31
|
+
include Collection
|
32
|
+
include Filters
|
33
|
+
include Form
|
34
|
+
include Menu
|
35
|
+
include PageConfigurations
|
36
|
+
include Scoping
|
37
|
+
include Sidebars
|
31
38
|
|
32
39
|
class << self
|
40
|
+
|
33
41
|
# Reference to the Resource object which initialized
|
34
42
|
# this controller
|
35
43
|
attr_accessor :active_admin_config
|
36
44
|
|
37
45
|
def active_admin_config=(config)
|
38
46
|
@active_admin_config = config
|
39
|
-
defaults
|
40
|
-
|
41
|
-
|
42
|
-
def set_page_config(page, config)
|
43
|
-
active_admin_config.page_configs[page] = config
|
44
|
-
end
|
45
|
-
|
46
|
-
def get_page_config(page)
|
47
|
-
active_admin_config.page_configs[page]
|
47
|
+
defaults :resource_class => config.resource,
|
48
|
+
:route_prefix => config.route_prefix,
|
49
|
+
:instance_name => config.underscored_resource_name
|
48
50
|
end
|
49
51
|
|
50
|
-
|
51
|
-
active_admin_config.page_configs[page] = nil
|
52
|
-
end
|
53
|
-
|
54
|
-
|
55
|
-
# Setting the menu options
|
56
|
-
def menu(options = {})
|
57
|
-
active_admin_config.menu(options)
|
58
|
-
end
|
59
|
-
|
60
|
-
# Scope this controller to some object which has a relation
|
61
|
-
# to the resource. Can either accept a block or a symbol
|
62
|
-
# of a method to call.
|
63
|
-
#
|
64
|
-
# Eg:
|
65
|
-
#
|
66
|
-
# ActiveAdmin.register Post do
|
67
|
-
# scope_to :current_user
|
68
|
-
# end
|
69
|
-
#
|
70
|
-
# Then every time we instantiate and object, it would call
|
71
|
-
#
|
72
|
-
# current_user.posts.build
|
73
|
-
#
|
74
|
-
# By default Active Admin will use the resource name to build a
|
75
|
-
# method to call as the association. If its different, you can
|
76
|
-
# pass in the association_method as an option.
|
77
|
-
#
|
78
|
-
# scope_to :current_user, :association_method => :blog_posts
|
79
|
-
#
|
80
|
-
# will result in the following
|
81
|
-
#
|
82
|
-
# current_user.blog_posts.build
|
83
|
-
#
|
84
|
-
def scope_to(*args, &block)
|
85
|
-
options = args.extract_options!
|
86
|
-
method = args.first
|
87
|
-
|
88
|
-
active_admin_config.scope_to = block_given? ? block : method
|
89
|
-
active_admin_config.scope_to_association_method = options[:association_method]
|
90
|
-
end
|
91
|
-
|
92
|
-
#
|
93
|
-
# Index Config
|
94
|
-
#
|
95
|
-
|
96
|
-
# Configure the index page for the resource
|
97
|
-
def index(options = {}, &block)
|
98
|
-
options[:as] ||= :table
|
99
|
-
set_page_config :index, ActiveAdmin::PageConfig.new(options, &block)
|
100
|
-
end
|
101
|
-
|
102
|
-
# Configure the show page for the resource
|
103
|
-
def show(options = {}, &block)
|
104
|
-
set_page_config :show, ActiveAdmin::PageConfig.new(options, &block)
|
105
|
-
end
|
106
|
-
|
107
|
-
# Define the getting and re-setter for each configurable page
|
108
|
-
[:index, :show].each do |page|
|
109
|
-
# eg: index_config
|
110
|
-
define_method :"#{page}_config" do
|
111
|
-
get_page_config(page)
|
112
|
-
end
|
113
|
-
|
114
|
-
# eg: reset_index_config!
|
115
|
-
define_method :"reset_#{page}_config!" do
|
116
|
-
reset_page_config! page
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
|
121
|
-
#
|
122
|
-
# Form Config
|
123
|
-
#
|
124
|
-
|
125
|
-
def form(options = {}, &block)
|
126
|
-
options[:block] = block
|
127
|
-
self.form_config = options
|
128
|
-
end
|
129
|
-
|
130
|
-
def form_config
|
131
|
-
read_inheritable_attribute(:form_config) || default_form_config
|
132
|
-
end
|
133
|
-
|
134
|
-
def reset_form_config!
|
135
|
-
self.form_config = nil
|
136
|
-
end
|
137
|
-
|
138
|
-
def default_form_config
|
139
|
-
config = {}
|
140
|
-
config[:block] = lambda do |f|
|
141
|
-
f.inputs
|
142
|
-
f.buttons
|
143
|
-
end
|
144
|
-
config
|
145
|
-
end
|
146
|
-
|
52
|
+
public :belongs_to
|
147
53
|
end
|
148
54
|
|
149
55
|
# Default Sidebar Sections
|
150
|
-
sidebar :filters, :only => :index do
|
151
|
-
active_admin_filters_form_for
|
56
|
+
sidebar :filters, :only => :index, :icon => :magnifying_glass do
|
57
|
+
active_admin_filters_form_for assigns["search"], filters_config
|
152
58
|
end
|
153
59
|
|
154
60
|
# Default Action Item Links
|
155
61
|
action_item :only => :show do
|
156
62
|
if controller.action_methods.include?('edit')
|
157
|
-
link_to "Edit #{active_admin_config.resource_name}", edit_resource_path(resource)
|
63
|
+
link_to(icon(:pen) + "Edit #{active_admin_config.resource_name}", edit_resource_path(resource))
|
158
64
|
end
|
159
65
|
end
|
160
66
|
|
161
67
|
action_item :only => :show do
|
162
68
|
if controller.action_methods.include?("destroy")
|
163
|
-
link_to "Delete #{active_admin_config.resource_name}",
|
69
|
+
link_to(icon(:trash_stroke) + "Delete #{active_admin_config.resource_name}",
|
164
70
|
resource_path(resource),
|
165
|
-
:method => :delete, :confirm => "Are you sure you want to delete this?"
|
71
|
+
:method => :delete, :confirm => "Are you sure you want to delete this?")
|
166
72
|
end
|
167
73
|
end
|
168
74
|
|
169
75
|
action_item :except => [:new, :show] do
|
170
76
|
if controller.action_methods.include?('new')
|
171
|
-
link_to "New #{active_admin_config.resource_name}", new_resource_path
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
#
|
176
|
-
# Actions
|
177
|
-
#
|
178
|
-
|
179
|
-
def index
|
180
|
-
index! do |format|
|
181
|
-
format.html { render_or_default 'index' }
|
182
|
-
format.csv {
|
183
|
-
@csv_columns = resource_class.columns.collect{ |column| column.name.to_sym }
|
184
|
-
render_or_default 'index'
|
185
|
-
}
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
private
|
190
|
-
|
191
|
-
def collection
|
192
|
-
get_collection_ivar || set_collection_ivar(active_admin_collection)
|
193
|
-
end
|
194
|
-
|
195
|
-
def active_admin_collection
|
196
|
-
chain = scoped_collection
|
197
|
-
chain = sort_order(chain)
|
198
|
-
chain = search(chain)
|
199
|
-
chain = paginate(chain)
|
200
|
-
chain
|
201
|
-
end
|
202
|
-
|
203
|
-
# Override this method in your controllers to modify the start point
|
204
|
-
# of our searches and index.
|
205
|
-
#
|
206
|
-
# This method should return an ActiveRecord::Relation object so that
|
207
|
-
# the searching and filtering can be applied on top
|
208
|
-
def scoped_collection
|
209
|
-
end_of_association_chain
|
210
|
-
end
|
211
|
-
|
212
|
-
def begin_of_association_chain
|
213
|
-
return nil unless active_admin_config.scope_to
|
214
|
-
case active_admin_config.scope_to
|
215
|
-
when Proc
|
216
|
-
instance_eval &active_admin_config.scope_to
|
217
|
-
when Symbol
|
218
|
-
send active_admin_config.scope_to
|
219
|
-
else
|
220
|
-
raise ArgumentError, "#scope_to accepts a symbol or a block"
|
77
|
+
link_to(icon(:plus_alt) + "New #{active_admin_config.resource_name}", new_resource_path)
|
221
78
|
end
|
222
79
|
end
|
223
80
|
|
224
|
-
|
225
|
-
#
|
226
|
-
# Returns the method for the association chain when using
|
227
|
-
# the scope_to option
|
228
|
-
def method_for_association_chain
|
229
|
-
active_admin_config.scope_to_association_method || super
|
230
|
-
end
|
81
|
+
protected
|
231
82
|
|
232
|
-
#
|
233
|
-
def
|
234
|
-
|
83
|
+
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
84
|
+
def authenticate_active_admin_user
|
85
|
+
send(ActiveAdmin.authentication_method) if ActiveAdmin.authentication_method
|
235
86
|
end
|
236
87
|
|
237
|
-
def
|
238
|
-
|
88
|
+
def current_active_admin_user
|
89
|
+
send(ActiveAdmin.current_user_method) if ActiveAdmin.current_user_method
|
239
90
|
end
|
91
|
+
helper_method :current_active_admin_user
|
240
92
|
|
241
|
-
def
|
242
|
-
|
243
|
-
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
|
244
|
-
chain.order("#{$1} #{$2}")
|
245
|
-
else
|
246
|
-
chain # just return the chain
|
247
|
-
end
|
248
|
-
end
|
249
|
-
|
250
|
-
def search(chain)
|
251
|
-
@search = chain.search(clean_search_params(params[:q]))
|
252
|
-
end
|
253
|
-
|
254
|
-
def clean_search_params(search_params)
|
255
|
-
return {} unless search_params.is_a?(Hash)
|
256
|
-
search_params = search_params.dup
|
257
|
-
search_params.delete_if do |key, value|
|
258
|
-
value == ""
|
259
|
-
end
|
260
|
-
search_params
|
261
|
-
end
|
262
|
-
|
263
|
-
# Gets called as a before filter to set the section's breadcrumb
|
264
|
-
def add_section_breadcrumb
|
265
|
-
add_breadcrumb active_admin_config.plural_resource_name, collection_path
|
266
|
-
end
|
267
|
-
|
268
|
-
# Set's @current_tab to be name of the tab to mark as current
|
269
|
-
# Get's called through a before filter
|
270
|
-
def set_current_tab
|
271
|
-
@current_tab = active_admin_config.parent_menu_item_name ||
|
272
|
-
active_admin_config.menu_item_name
|
93
|
+
def current_active_admin_user?
|
94
|
+
!current_active_admin_user.nil?
|
273
95
|
end
|
96
|
+
helper_method :current_active_admin_user?
|
274
97
|
|
275
98
|
def active_admin_config
|
276
99
|
self.class.active_admin_config
|
277
100
|
end
|
278
101
|
helper_method :active_admin_config
|
279
102
|
|
280
|
-
def index_config
|
281
|
-
@index_config ||= self.class.index_config
|
282
|
-
end
|
283
|
-
helper_method :index_config
|
284
|
-
|
285
|
-
def show_config
|
286
|
-
@show_config ||= self.class.show_config
|
287
|
-
end
|
288
|
-
helper_method :show_config
|
289
|
-
|
290
|
-
def form_config
|
291
|
-
@form_config ||= self.class.form_config
|
292
|
-
end
|
293
|
-
helper_method :form_config
|
294
|
-
|
295
|
-
def current_menu
|
296
|
-
active_admin_config.namespace.menu
|
297
|
-
end
|
298
|
-
helper_method :current_menu
|
299
|
-
|
300
|
-
def skip_sidebar!
|
301
|
-
@skip_sidebar = true
|
302
|
-
end
|
303
|
-
helper_method :skip_sidebar!
|
304
|
-
|
305
|
-
def skip_sidebar?
|
306
|
-
@skip_sidebar == true
|
307
|
-
end
|
308
|
-
helper_method :skip_sidebar?
|
309
|
-
|
310
103
|
# Returns the renderer class to use for the given action.
|
311
|
-
#
|
312
|
-
# TODO: This needs to be wrapped into a default config as well
|
313
|
-
# as overrideable on each controller
|
314
104
|
def renderer_for(action)
|
315
|
-
{
|
316
|
-
:index => ::ActiveAdmin::Pages::Index,
|
317
|
-
:new => ::ActiveAdmin::Pages::New,
|
318
|
-
:show => ::ActiveAdmin::Pages::Show,
|
319
|
-
:edit => ::ActiveAdmin::Pages::Edit
|
320
|
-
}[action]
|
105
|
+
ActiveAdmin.view_factory["#{action}_page"]
|
321
106
|
end
|
322
107
|
helper_method :renderer_for
|
323
108
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
module ActionBuilder
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
|
9
|
+
def clear_member_actions!
|
10
|
+
active_admin_config.clear_member_actions!
|
11
|
+
end
|
12
|
+
|
13
|
+
def clear_collection_actions!
|
14
|
+
active_admin_config.clear_collection_actions!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
# All the controller actions are defined here. They all use
|
5
|
+
# the render_or_default method provided by InheritedViews which
|
6
|
+
# tries to render the view in the user's application, then falls
|
7
|
+
# back the view declared by Active Admin.
|
8
|
+
module Actions
|
9
|
+
def index
|
10
|
+
index! do |format|
|
11
|
+
format.html do
|
12
|
+
render_or_default 'index'
|
13
|
+
end
|
14
|
+
format.csv do
|
15
|
+
@csv_columns = resource_class.columns.collect{ |column| column.name.to_sym }
|
16
|
+
render_or_default 'index'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def new
|
22
|
+
new! do |format|
|
23
|
+
format.html { render_or_default 'new' }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def create
|
28
|
+
create! do |success, failure|
|
29
|
+
failure.html { render_or_default 'new' }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def show
|
34
|
+
show! do |format|
|
35
|
+
format.html { render_or_default 'show' }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def edit
|
40
|
+
edit! do |format|
|
41
|
+
format.html { render_or_default 'edit' }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def update
|
46
|
+
update! do |success, failure|
|
47
|
+
failure.html { render_or_default 'edit' }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|