activeadmin 0.2.2 → 0.3.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/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +177 -0
- data/Gemfile +21 -32
- data/Guardfile +8 -0
- data/README.rdoc +75 -14
- data/Rakefile +7 -100
- data/activeadmin.gemspec +21 -353
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
- data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
- data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
- data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
- data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
- data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
- data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +35 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +22 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +31 -4
- data/features/edit_page.feature +30 -1
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +2 -0
- data/features/index/index_as_block.feature +1 -1
- data/features/index/index_as_grid.feature +1 -1
- data/features/index/index_as_table.feature +2 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/pagination.feature +0 -6
- data/features/registering_assets.feature +2 -2
- data/features/sidebar_sections.feature +7 -8
- data/features/specifying_actions.feature +72 -1
- data/features/step_definitions/action_item_steps.rb +2 -2
- data/features/step_definitions/additional_web_steps.rb +26 -16
- data/features/step_definitions/attribute_steps.rb +5 -7
- data/features/step_definitions/configuration_steps.rb +9 -9
- data/features/step_definitions/factory_steps.rb +4 -3
- data/features/step_definitions/format_steps.rb +29 -1
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +2 -2
- data/features/step_definitions/sidebar_steps.rb +1 -5
- data/features/step_definitions/user_steps.rb +8 -2
- data/features/step_definitions/web_steps.rb +82 -90
- data/features/sti_resource.feature +12 -0
- data/features/support/env.rb +12 -10
- data/features/support/paths.rb +2 -0
- data/features/support/selectors.rb +45 -0
- data/lib/active_admin.rb +33 -263
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +10 -10
- data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
- data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
- data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
- data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
- data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
- data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
- data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
- data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
- data/lib/active_admin/asset_registration.rb +1 -1
- data/lib/active_admin/callbacks.rb +5 -3
- data/lib/active_admin/comments.rb +3 -3
- data/lib/active_admin/comments/comment.rb +6 -0
- data/lib/active_admin/comments/configuration.rb +8 -6
- data/lib/active_admin/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +1 -1
- data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
- data/lib/active_admin/dependency_checker.rb +28 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +14 -3
- data/lib/active_admin/dsl.rb +26 -4
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/form_builder.rb +18 -9
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/locales/cs.yml +34 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +39 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu_item.rb +6 -0
- data/lib/active_admin/namespace.rb +14 -5
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +1 -1
- data/lib/active_admin/resource.rb +45 -88
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +46 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +32 -37
- data/lib/active_admin/resource_controller/action_builder.rb +1 -1
- data/lib/active_admin/resource_controller/actions.rb +66 -40
- data/lib/active_admin/resource_controller/callbacks.rb +1 -1
- data/lib/active_admin/resource_controller/collection.rb +9 -14
- data/lib/active_admin/resource_controller/filters.rb +1 -1
- data/lib/active_admin/resource_controller/form.rb +1 -1
- data/lib/active_admin/resource_controller/menu.rb +1 -1
- data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -21
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +45 -0
- data/lib/active_admin/scope.rb +16 -2
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +5 -3
- data/lib/active_admin/view_helpers.rb +1 -2
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/attributes_table.rb +2 -2
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +1 -3
- data/lib/active_admin/views/components/paginated_collection.rb +26 -8
- data/lib/active_admin/views/components/scopes.rb +13 -8
- data/lib/active_admin/views/components/sidebar_section.rb +1 -3
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +25 -6
- data/lib/active_admin/views/header_renderer.rb +20 -4
- data/lib/active_admin/views/index_as_block.rb +12 -7
- data/lib/active_admin/views/index_as_blog.rb +61 -21
- data/lib/active_admin/views/index_as_grid.rb +22 -1
- data/lib/active_admin/views/index_as_table.rb +97 -6
- data/lib/active_admin/views/pages/base.rb +20 -9
- data/lib/active_admin/views/pages/dashboard.rb +7 -4
- data/lib/active_admin/views/pages/edit.rb +3 -2
- data/lib/active_admin/views/pages/index.rb +30 -5
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +3 -2
- data/lib/active_admin/views/pages/show.rb +1 -1
- data/lib/active_admin/views/tabbed_navigation.rb +94 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/install/install_generator.rb +2 -4
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
- data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +1 -1
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +21 -11
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +1 -1
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +1 -1
- data/spec/support/rails_template_with_data.rb +2 -1
- data/spec/support/templates/cucumber.rb +0 -4
- data/spec/unit/active_admin_spec.rb +8 -44
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
- data/spec/unit/arbre/html/element_spec.rb +2 -3
- data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
- data/spec/unit/arbre/html/tag_spec.rb +2 -2
- data/spec/unit/arbre/html_spec.rb +2 -3
- data/spec/unit/auto_link_spec.rb +2 -1
- data/spec/unit/belongs_to_spec.rb +2 -1
- data/spec/unit/comments_spec.rb +43 -39
- data/spec/unit/controller_filters_spec.rb +11 -3
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +2 -2
- data/spec/unit/filter_form_builder_spec.rb +6 -3
- data/spec/unit/form_builder_spec.rb +20 -2
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +6 -0
- data/spec/unit/namespace_spec.rb +68 -19
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +18 -27
- data/spec/unit/reloader_spec.rb +28 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +64 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +1 -1
- data/spec/unit/resource_controller_spec.rb +29 -24
- data/spec/unit/resource_spec.rb +78 -94
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +11 -1
- data/spec/unit/view_factory_spec.rb +4 -1
- data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
- data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
- data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +55 -0
- data/tasks/yard.rake +6 -0
- metadata +310 -189
- data/CHANGELOG.rdoc +0 -76
- data/lib/active_admin/action_items.rb +0 -37
- data/lib/active_admin/sidebar.rb +0 -39
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
- data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
- data/lib/active_admin/view_helpers/table_helper.rb +0 -12
- data/lib/active_admin/views/tabs_renderer.rb +0 -52
- data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
- data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
- data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
- data/spec/controllers/index_as_csv_spec.rb +0 -35
- data/spec/unit/action_items_spec.rb +0 -27
- data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'inherited_resources'
|
2
2
|
require 'active_admin/resource_controller/actions'
|
3
3
|
require 'active_admin/resource_controller/action_builder'
|
4
4
|
require 'active_admin/resource_controller/callbacks'
|
@@ -8,23 +8,22 @@ require 'active_admin/resource_controller/form'
|
|
8
8
|
require 'active_admin/resource_controller/menu'
|
9
9
|
require 'active_admin/resource_controller/page_configurations'
|
10
10
|
require 'active_admin/resource_controller/scoping'
|
11
|
-
require 'active_admin/resource_controller/sidebars'
|
12
11
|
|
13
12
|
module ActiveAdmin
|
14
|
-
class ResourceController < ::
|
13
|
+
class ResourceController < ::InheritedResources::Base
|
15
14
|
|
16
|
-
self.default_views = 'active_admin_default'
|
17
|
-
|
18
15
|
helper ::ActiveAdmin::ViewHelpers
|
19
16
|
|
20
|
-
layout
|
21
|
-
|
17
|
+
layout :determine_active_admin_layout
|
18
|
+
|
22
19
|
respond_to :html, :xml, :json
|
23
20
|
respond_to :csv, :only => :index
|
24
21
|
|
22
|
+
before_filter :only_render_implemented_actions
|
25
23
|
before_filter :authenticate_active_admin_user
|
26
24
|
|
27
|
-
|
25
|
+
ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
|
26
|
+
|
28
27
|
include Actions
|
29
28
|
include ActionBuilder
|
30
29
|
include Callbacks
|
@@ -34,14 +33,15 @@ module ActiveAdmin
|
|
34
33
|
include Menu
|
35
34
|
include PageConfigurations
|
36
35
|
include Scoping
|
37
|
-
include Sidebars
|
38
36
|
|
39
37
|
class << self
|
38
|
+
# Ensure that this method is available for the DSL
|
39
|
+
public :actions
|
40
40
|
|
41
41
|
# Reference to the Resource object which initialized
|
42
42
|
# this controller
|
43
43
|
attr_accessor :active_admin_config
|
44
|
-
|
44
|
+
|
45
45
|
def active_admin_config=(config)
|
46
46
|
@active_admin_config = config
|
47
47
|
defaults :resource_class => config.resource,
|
@@ -52,41 +52,33 @@ module ActiveAdmin
|
|
52
52
|
public :belongs_to
|
53
53
|
end
|
54
54
|
|
55
|
-
|
56
|
-
sidebar :filters, :only => :index do
|
57
|
-
active_admin_filters_form_for assigns["search"], filters_config
|
58
|
-
end
|
55
|
+
protected
|
59
56
|
|
60
|
-
#
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
# By default Rails will render un-implemented actions when the view exists. Becuase Active
|
58
|
+
# Admin allows you to not render any of the actions by using the #actions method, we need
|
59
|
+
# to check if they are implemented.
|
60
|
+
def only_render_implemented_actions
|
61
|
+
raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
|
65
62
|
end
|
66
63
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
64
|
+
# Determine which layout to use.
|
65
|
+
#
|
66
|
+
# 1. If we're rendering a standard Active Admin action, we want layout(false)
|
67
|
+
# because these actions are subclasses of the Base page (which implementes
|
68
|
+
# all the required layout code)
|
69
|
+
# 2. If we're rendering a custom action, we'll use the active_admin layout so
|
70
|
+
# that users can render any template inside Active Admin.
|
71
|
+
def determine_active_admin_layout
|
72
|
+
ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : 'active_admin'
|
73
73
|
end
|
74
74
|
|
75
|
-
action_item :except => [:new, :show] do
|
76
|
-
if controller.action_methods.include?('new')
|
77
|
-
link_to("New #{active_admin_config.resource_name}", new_resource_path)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
protected
|
82
|
-
|
83
75
|
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
84
76
|
def authenticate_active_admin_user
|
85
|
-
send(
|
77
|
+
send(active_admin_application.authentication_method) if active_admin_application.authentication_method
|
86
78
|
end
|
87
79
|
|
88
80
|
def current_active_admin_user
|
89
|
-
send(
|
81
|
+
send(active_admin_application.current_user_method) if active_admin_application.current_user_method
|
90
82
|
end
|
91
83
|
helper_method :current_active_admin_user
|
92
84
|
|
@@ -100,11 +92,14 @@ module ActiveAdmin
|
|
100
92
|
end
|
101
93
|
helper_method :active_admin_config
|
102
94
|
|
95
|
+
def active_admin_application
|
96
|
+
ActiveAdmin.application
|
97
|
+
end
|
98
|
+
|
103
99
|
# Returns the renderer class to use for the given action.
|
104
100
|
def renderer_for(action)
|
105
|
-
|
101
|
+
active_admin_application.view_factory["#{action}_page"]
|
106
102
|
end
|
107
103
|
helper_method :renderer_for
|
108
|
-
|
109
104
|
end
|
110
105
|
end
|
@@ -1,53 +1,79 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
-
class ResourceController < ::
|
3
|
-
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
3
|
+
|
4
|
+
# Override the InheritedResources actions to use the
|
5
|
+
# Active Admin templates.
|
6
|
+
#
|
7
|
+
# We ensure that the functionality provided by Inherited
|
8
|
+
# Resources is still available within any ResourceController
|
9
|
+
|
10
|
+
def index(options={}, &block)
|
11
|
+
super(options) do |format|
|
12
|
+
block.call(format) if block
|
13
|
+
format.html { render active_admin_template('index.html.arb') }
|
14
|
+
format.csv do
|
15
|
+
headers['Content-Type'] = 'text/csv; charset=utf-8'
|
16
|
+
headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
|
17
|
+
render active_admin_template('index.csv.erb')
|
18
18
|
end
|
19
19
|
end
|
20
|
+
end
|
21
|
+
alias :index! :index
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
def show(options={}, &block)
|
24
|
+
super do |format|
|
25
|
+
block.call(format) if block
|
26
|
+
format.html { render active_admin_template('show.html.arb') }
|
25
27
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
end
|
29
|
+
alias :show! :show
|
30
|
+
|
31
|
+
def new(options={}, &block)
|
32
|
+
super do |format|
|
33
|
+
block.call(format) if block
|
34
|
+
format.html { render active_admin_template('new.html.arb') }
|
31
35
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
36
|
+
end
|
37
|
+
alias :new! :new
|
38
|
+
|
39
|
+
def edit(options={}, &block)
|
40
|
+
super do |format|
|
41
|
+
block.call(format) if block
|
42
|
+
format.html { render active_admin_template('edit.html.arb') }
|
37
43
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
44
|
+
end
|
45
|
+
alias :edit! :edit
|
46
|
+
|
47
|
+
def create(options={}, &block)
|
48
|
+
super(options) do |success, failure|
|
49
|
+
block.call(success, failure) if block
|
50
|
+
failure.html { render active_admin_template('new.html.arb') }
|
43
51
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
52
|
+
end
|
53
|
+
alias :create! :create
|
54
|
+
|
55
|
+
def update(options={}, &block)
|
56
|
+
super do |success, failure|
|
57
|
+
block.call(success, failure) if block
|
58
|
+
failure.html { render active_admin_template('edit.html.arb') }
|
49
59
|
end
|
50
60
|
end
|
61
|
+
alias :update! :update
|
51
62
|
|
63
|
+
# Make aliases protected
|
64
|
+
protected :index!, :show!, :new!, :create!, :edit!, :update!
|
65
|
+
|
66
|
+
protected
|
67
|
+
|
68
|
+
# Returns the full location to the Active Admin template path
|
69
|
+
def active_admin_template(template)
|
70
|
+
"active_admin/resource/#{template}"
|
71
|
+
end
|
72
|
+
|
73
|
+
# Returns a filename for the csv file using the collection_name
|
74
|
+
# and current date such as 'my-articles-2011-06-24.csv'.
|
75
|
+
def csv_filename
|
76
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.now.strftime("%Y-%m-%d")}.csv"
|
77
|
+
end
|
52
78
|
end
|
53
79
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
-
class ResourceController < ::
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
3
3
|
|
4
4
|
# This module deals with the retrieval of collections for resources
|
5
5
|
# within the resource controller.
|
@@ -28,7 +28,7 @@ module ActiveAdmin
|
|
28
28
|
# This method should return an ActiveRecord::Relation object so that
|
29
29
|
# the searching and filtering can be applied on top
|
30
30
|
#
|
31
|
-
# Note, unless you are doing something special, you should use the
|
31
|
+
# Note, unless you are doing something special, you should use the
|
32
32
|
# scope_to method from the Scoping module instead of overriding this
|
33
33
|
# method.
|
34
34
|
def scoped_collection
|
@@ -83,26 +83,20 @@ module ActiveAdmin
|
|
83
83
|
protected
|
84
84
|
|
85
85
|
def active_admin_collection
|
86
|
-
|
86
|
+
scope_current_collection(super)
|
87
87
|
end
|
88
88
|
|
89
|
-
def
|
89
|
+
def scope_current_collection(chain)
|
90
90
|
if current_scope
|
91
91
|
@before_scope_collection = chain
|
92
|
-
|
93
|
-
# ActiveRecord::Base isn't a relation, so let's help you out
|
94
|
-
return chain if current_scope.scope_method == :all
|
95
|
-
|
96
|
-
if current_scope.scope_method
|
97
|
-
chain.send(current_scope.scope_method)
|
98
|
-
else
|
99
|
-
instance_exec chain, ¤t_scope.scope_block
|
100
|
-
end
|
92
|
+
scope_chain(current_scope, chain)
|
101
93
|
else
|
102
94
|
chain
|
103
95
|
end
|
104
96
|
end
|
105
97
|
|
98
|
+
include ActiveAdmin::ScopeChain
|
99
|
+
|
106
100
|
def current_scope
|
107
101
|
@current_scope ||= if params[:scope]
|
108
102
|
active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
|
@@ -126,7 +120,7 @@ module ActiveAdmin
|
|
126
120
|
end
|
127
121
|
|
128
122
|
def paginate(chain)
|
129
|
-
chain.
|
123
|
+
chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
|
130
124
|
end
|
131
125
|
end
|
132
126
|
|
@@ -141,3 +135,4 @@ module ActiveAdmin
|
|
141
135
|
end
|
142
136
|
end
|
143
137
|
end
|
138
|
+
|
@@ -1,27 +1,7 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
-
class ResourceController < ::
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
3
3
|
|
4
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
5
|
|
26
6
|
protected
|
27
7
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Router
|
3
|
+
|
4
|
+
def initialize(application)
|
5
|
+
@application = application
|
6
|
+
end
|
7
|
+
|
8
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
9
|
+
#
|
10
|
+
# Use this within the routes.rb file:
|
11
|
+
#
|
12
|
+
# Application.routes.draw do |map|
|
13
|
+
# ActiveAdmin.routes(self)
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
def apply(router)
|
17
|
+
# Define any necessary dashboard routes
|
18
|
+
router.instance_exec(@application.namespaces.values) do |namespaces|
|
19
|
+
namespaces.each do |namespace|
|
20
|
+
if namespace.root?
|
21
|
+
match '/' => 'dashboard#index', :as => 'dashboard'
|
22
|
+
else
|
23
|
+
name = namespace.name
|
24
|
+
match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Now define the routes for each resource
|
30
|
+
router.instance_exec(@application.namespaces) do |namespaces|
|
31
|
+
resources = namespaces.values.collect{|n| n.resources.values }.flatten
|
32
|
+
resources.each do |config|
|
33
|
+
|
34
|
+
# Define the block the will get eval'd within the namespace
|
35
|
+
route_definition_block = Proc.new do
|
36
|
+
resources config.underscored_resource_name.pluralize do
|
37
|
+
|
38
|
+
# Define any member actions
|
39
|
+
member do
|
40
|
+
config.member_actions.each do |action|
|
41
|
+
# eg: get :comment
|
42
|
+
send(action.http_verb, action.name)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Define any collection actions
|
47
|
+
collection do
|
48
|
+
config.collection_actions.each do |action|
|
49
|
+
send(action.http_verb, action.name)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Add in the parent if it exists
|
56
|
+
if config.belongs_to?
|
57
|
+
routes_for_belongs_to = route_definition_block.dup
|
58
|
+
route_definition_block = Proc.new do
|
59
|
+
# If its optional, make the normal resource routes
|
60
|
+
instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
|
61
|
+
|
62
|
+
# Make the nested belongs_to routes
|
63
|
+
resources config.belongs_to_config.target.underscored_resource_name.pluralize do
|
64
|
+
instance_eval &routes_for_belongs_to
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Add on the namespace if required
|
70
|
+
if !config.namespace.root?
|
71
|
+
routes_in_namespace = route_definition_block.dup
|
72
|
+
route_definition_block = Proc.new do
|
73
|
+
namespace config.namespace.name do
|
74
|
+
instance_eval(&routes_in_namespace)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
instance_eval &route_definition_block
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|