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,47 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
module Callbacks
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
include ::ActiveAdmin::Callbacks
|
7
|
+
|
8
|
+
included do
|
9
|
+
define_active_admin_callbacks :build, :create, :update, :save, :destroy
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def build_resource
|
15
|
+
object = super
|
16
|
+
run_build_callbacks object
|
17
|
+
object
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_resource(object)
|
21
|
+
run_create_callbacks object do
|
22
|
+
save_resource(object)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def save_resource(object)
|
27
|
+
run_save_callbacks object do
|
28
|
+
object.save
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def update_resource(object, attributes)
|
33
|
+
object.attributes = attributes
|
34
|
+
run_update_callbacks object do
|
35
|
+
save_resource(object)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy_resource(object)
|
40
|
+
run_destroy_callbacks object do
|
41
|
+
object.destroy
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
# This module deals with the retrieval of collections for resources
|
5
|
+
# within the resource controller.
|
6
|
+
module Collection
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
before_filter :setup_pagination_for_csv
|
11
|
+
end
|
12
|
+
|
13
|
+
module BaseCollection
|
14
|
+
protected
|
15
|
+
|
16
|
+
def collection
|
17
|
+
get_collection_ivar || set_collection_ivar(active_admin_collection)
|
18
|
+
end
|
19
|
+
|
20
|
+
def active_admin_collection
|
21
|
+
scoped_collection
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
# Override this method in your controllers to modify the start point
|
26
|
+
# of our searches and index.
|
27
|
+
#
|
28
|
+
# This method should return an ActiveRecord::Relation object so that
|
29
|
+
# the searching and filtering can be applied on top
|
30
|
+
#
|
31
|
+
# Note, unless you are doing something special, you should use the
|
32
|
+
# scope_to method from the Scoping module instead of overriding this
|
33
|
+
# method.
|
34
|
+
def scoped_collection
|
35
|
+
end_of_association_chain
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
module Sorting
|
41
|
+
protected
|
42
|
+
|
43
|
+
def active_admin_collection
|
44
|
+
sort_order(super)
|
45
|
+
end
|
46
|
+
|
47
|
+
def sort_order(chain)
|
48
|
+
params[:order] ||= active_admin_config.sort_order
|
49
|
+
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
|
50
|
+
chain.order("#{$1} #{$2}")
|
51
|
+
else
|
52
|
+
chain # just return the chain
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
module Search
|
59
|
+
protected
|
60
|
+
|
61
|
+
def active_admin_collection
|
62
|
+
search(super)
|
63
|
+
end
|
64
|
+
|
65
|
+
def search(chain)
|
66
|
+
@search = chain.search(clean_search_params(params[:q]))
|
67
|
+
@search.relation
|
68
|
+
end
|
69
|
+
|
70
|
+
def clean_search_params(search_params)
|
71
|
+
return {} unless search_params.is_a?(Hash)
|
72
|
+
search_params = search_params.dup
|
73
|
+
search_params.delete_if do |key, value|
|
74
|
+
value == ""
|
75
|
+
end
|
76
|
+
search_params
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
module Scoping
|
82
|
+
protected
|
83
|
+
|
84
|
+
def active_admin_collection
|
85
|
+
scope_collection(super)
|
86
|
+
end
|
87
|
+
|
88
|
+
def scope_collection(chain)
|
89
|
+
if current_scope
|
90
|
+
@before_scope_collection = chain
|
91
|
+
|
92
|
+
# ActiveRecord::Base isn't a relation, so let's help you out
|
93
|
+
return chain if current_scope.scope_method == :all
|
94
|
+
|
95
|
+
if current_scope.scope_method
|
96
|
+
chain.send(current_scope.scope_method)
|
97
|
+
else
|
98
|
+
instance_exec chain, ¤t_scope.scope_block
|
99
|
+
end
|
100
|
+
else
|
101
|
+
chain
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def current_scope
|
106
|
+
@current_scope ||= if params[:scope]
|
107
|
+
active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
|
108
|
+
else
|
109
|
+
active_admin_config.default_scope
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
module Pagination
|
116
|
+
protected
|
117
|
+
|
118
|
+
def active_admin_collection
|
119
|
+
paginate(super)
|
120
|
+
end
|
121
|
+
|
122
|
+
# Allow more records for csv files
|
123
|
+
def setup_pagination_for_csv
|
124
|
+
@per_page = 10_000 if request.format == 'text/csv'
|
125
|
+
end
|
126
|
+
|
127
|
+
def paginate(chain)
|
128
|
+
chain.paginate(:page => params[:page], :per_page => @per_page || ActiveAdmin.default_per_page)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# Include all the Modules. BaseCollection must be first
|
133
|
+
# and pagination should be last
|
134
|
+
include BaseCollection
|
135
|
+
include Sorting
|
136
|
+
include Search
|
137
|
+
include Scoping
|
138
|
+
include Pagination
|
139
|
+
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
module Filters
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
helper_method :filters_config
|
9
|
+
end
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
def filter(attribute, options = {})
|
13
|
+
return false if attribute.nil?
|
14
|
+
@filters ||= []
|
15
|
+
@filters << options.merge(:attribute => attribute)
|
16
|
+
end
|
17
|
+
|
18
|
+
def filters_config
|
19
|
+
@filters && @filters.any? ? @filters : default_filters_config
|
20
|
+
end
|
21
|
+
|
22
|
+
def reset_filters!
|
23
|
+
@filters = []
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a sane set of filters by default for the object
|
27
|
+
def default_filters_config
|
28
|
+
default_association_filters + default_content_filters
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns a default set of filters for the associations
|
32
|
+
def default_association_filters
|
33
|
+
if resource_class.respond_to?(:reflections)
|
34
|
+
resource_class.reflections.collect{|name, r| { :attribute => name }}
|
35
|
+
else
|
36
|
+
[]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns a default set of filters for the content columns
|
41
|
+
def default_content_filters
|
42
|
+
if resource_class.respond_to?(:content_columns)
|
43
|
+
resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
|
44
|
+
else
|
45
|
+
[]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
protected
|
51
|
+
|
52
|
+
def filters_config
|
53
|
+
self.class.filters_config
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
module Form
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
helper_method :form_config
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
|
12
|
+
def form_config=(config)
|
13
|
+
@form_config = config
|
14
|
+
end
|
15
|
+
|
16
|
+
def form_config
|
17
|
+
@form_config ||= default_form_config
|
18
|
+
end
|
19
|
+
|
20
|
+
def reset_form_config!
|
21
|
+
@form_config = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def default_form_config
|
25
|
+
config = {}
|
26
|
+
config[:block] = lambda do |f|
|
27
|
+
f.inputs
|
28
|
+
f.buttons
|
29
|
+
end
|
30
|
+
config
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def form_config
|
37
|
+
@form_config ||= self.class.form_config
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
module Menu
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
before_filter :set_current_tab
|
8
|
+
helper_method :current_menu
|
9
|
+
end
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def current_menu
|
14
|
+
active_admin_config.namespace.menu
|
15
|
+
end
|
16
|
+
|
17
|
+
# Set's @current_tab to be name of the tab to mark as current
|
18
|
+
# Get's called through a before filter
|
19
|
+
def set_current_tab
|
20
|
+
@current_tab = if active_admin_config.belongs_to? && parent?
|
21
|
+
active_admin_config.belongs_to_config.target.menu_item_name
|
22
|
+
else
|
23
|
+
[active_admin_config.parent_menu_item_name, active_admin_config.menu_item_name].compact.join("/")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
module PageConfigurations
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
helper_method :index_config
|
9
|
+
helper_method :show_config
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
|
14
|
+
def set_page_config(page, options, &block)
|
15
|
+
active_admin_config.page_configs[page] = ActiveAdmin::PageConfig.new(options, &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_page_config(page)
|
19
|
+
active_admin_config.page_configs[page]
|
20
|
+
end
|
21
|
+
|
22
|
+
def reset_page_config!(page)
|
23
|
+
active_admin_config.page_configs[page] = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
# Define the getting and re-setter for each configurable page
|
27
|
+
[:index, :show].each do |page|
|
28
|
+
# eg: index_config
|
29
|
+
define_method :"#{page}_config" do
|
30
|
+
get_page_config(page)
|
31
|
+
end
|
32
|
+
|
33
|
+
# eg: reset_index_config!
|
34
|
+
define_method :"reset_#{page}_config!" do
|
35
|
+
reset_page_config! page
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
|
43
|
+
def index_config
|
44
|
+
@index_config ||= self.class.index_config
|
45
|
+
end
|
46
|
+
|
47
|
+
def show_config
|
48
|
+
@show_config ||= self.class.show_config
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
# This module deals with scoping entire controllers to a relation
|
5
|
+
module Scoping
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
# Override the default InheritedResource #begin_of_association_chain to allow
|
11
|
+
# the scope to be defined in the active admin configuration.
|
12
|
+
#
|
13
|
+
# If scope_to is a proc, we eval it, otherwise we call the method on the controller.
|
14
|
+
def begin_of_association_chain
|
15
|
+
return nil unless active_admin_config.scope_to
|
16
|
+
case active_admin_config.scope_to
|
17
|
+
when Proc
|
18
|
+
instance_eval &active_admin_config.scope_to
|
19
|
+
when Symbol
|
20
|
+
send active_admin_config.scope_to
|
21
|
+
else
|
22
|
+
raise ArgumentError, "#scope_to accepts a symbol or a block"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Overriding from InheritedResources::BaseHelpers
|
27
|
+
#
|
28
|
+
# Returns the method for the association chain when using
|
29
|
+
# the scope_to option
|
30
|
+
def method_for_association_chain
|
31
|
+
active_admin_config.scope_to_association_method || super
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < ::InheritedViews::Base
|
3
|
+
|
4
|
+
module Sidebars
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
self.class_inheritable_accessor :sidebar_sections
|
9
|
+
self.sidebar_sections = []
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
def sidebar(name, options = {}, &block)
|
14
|
+
self.sidebar_sections << ActiveAdmin::Sidebar::Section.new(name, options, &block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def clear_sidebar_sections!
|
18
|
+
self.sidebar_sections = []
|
19
|
+
end
|
20
|
+
|
21
|
+
def sidebar_sections_for(action)
|
22
|
+
sidebar_sections.select{|section| section.display_on?(action) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
|
28
|
+
def skip_sidebar!
|
29
|
+
@skip_sidebar = true
|
30
|
+
end
|
31
|
+
|
32
|
+
def skip_sidebar?
|
33
|
+
@skip_sidebar == true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|