andrewroth_activeadmin 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -0
- data/activeadmin.gemspec +28 -0
- data/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/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -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 +36 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -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 +81 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -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 +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +96 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -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/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -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 +40 -0
- data/lib/active_admin/locales/ja.yml +40 -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/sv-SE.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +50 -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 +105 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +138 -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 +18 -0
- 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 +31 -0
- 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 +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -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 +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -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/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/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +69 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +57 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +91 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabbed_navigation.rb +94 -0
- data/lib/activeadmin.rb +1 -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/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -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/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -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 +209 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/devise_spec.rb +66 -0
- 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 +182 -0
- data/spec/unit/form_builder_spec.rb +256 -0
- 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 +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +80 -0
- data/spec/unit/renderer_spec.rb +108 -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 +75 -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 +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- 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 +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module Scopes
|
|
4
|
+
|
|
5
|
+
# Return an array of scopes for this resource
|
|
6
|
+
def scopes
|
|
7
|
+
@scopes ||= []
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Returns a scope for this object by its identifier
|
|
11
|
+
def get_scope_by_id(id)
|
|
12
|
+
id = id.to_s
|
|
13
|
+
scopes.find{|s| s.id == id }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def default_scope
|
|
17
|
+
@default_scope
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Create a new scope object for this resource.
|
|
21
|
+
# If you want to internationalize the scope name, you can add
|
|
22
|
+
# to your i18n files a key like "active_admin.scopes.scope_method".
|
|
23
|
+
def scope(*args, &block)
|
|
24
|
+
options = args.extract_options!
|
|
25
|
+
self.scopes << ActiveAdmin::Scope.new(*args, &block)
|
|
26
|
+
if options[:default]
|
|
27
|
+
@default_scope = scopes.last
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
|
|
5
|
+
class Resource
|
|
6
|
+
module Sidebars
|
|
7
|
+
|
|
8
|
+
def initialize(*args)
|
|
9
|
+
super
|
|
10
|
+
add_default_sidebar_sections
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def sidebar_sections
|
|
14
|
+
@sidebar_sections ||= []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def clear_sidebar_sections!
|
|
18
|
+
@sidebar_sections = []
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def sidebar_sections_for(action)
|
|
22
|
+
sidebar_sections.select{|section| section.display_on?(action) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def add_default_sidebar_sections
|
|
28
|
+
self.sidebar_sections << ActiveAdmin::SidebarSection.new(:filters, :only => :index) do
|
|
29
|
+
active_admin_filters_form_for assigns["search"], filters_config
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require 'inherited_resources'
|
|
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
|
+
|
|
12
|
+
module ActiveAdmin
|
|
13
|
+
class ResourceController < ::InheritedResources::Base
|
|
14
|
+
|
|
15
|
+
helper ::ActiveAdmin::ViewHelpers
|
|
16
|
+
|
|
17
|
+
layout :determine_active_admin_layout
|
|
18
|
+
|
|
19
|
+
respond_to :html, :xml, :json
|
|
20
|
+
respond_to :csv, :only => :index
|
|
21
|
+
|
|
22
|
+
before_filter :only_render_implemented_actions
|
|
23
|
+
before_filter :authenticate_active_admin_user
|
|
24
|
+
|
|
25
|
+
ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
|
|
26
|
+
|
|
27
|
+
include Actions
|
|
28
|
+
include ActionBuilder
|
|
29
|
+
include Callbacks
|
|
30
|
+
include Collection
|
|
31
|
+
include Filters
|
|
32
|
+
include Form
|
|
33
|
+
include Menu
|
|
34
|
+
include PageConfigurations
|
|
35
|
+
include Scoping
|
|
36
|
+
|
|
37
|
+
class << self
|
|
38
|
+
# Ensure that this method is available for the DSL
|
|
39
|
+
public :actions
|
|
40
|
+
|
|
41
|
+
# Reference to the Resource object which initialized
|
|
42
|
+
# this controller
|
|
43
|
+
attr_accessor :active_admin_config
|
|
44
|
+
|
|
45
|
+
def active_admin_config=(config)
|
|
46
|
+
@active_admin_config = config
|
|
47
|
+
defaults :resource_class => config.resource,
|
|
48
|
+
:route_prefix => config.route_prefix,
|
|
49
|
+
:instance_name => config.underscored_resource_name
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
public :belongs_to
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
protected
|
|
56
|
+
|
|
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])
|
|
62
|
+
end
|
|
63
|
+
|
|
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
|
+
end
|
|
74
|
+
|
|
75
|
+
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
|
76
|
+
def authenticate_active_admin_user
|
|
77
|
+
send(active_admin_application.authentication_method) if active_admin_application.authentication_method
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def current_active_admin_user
|
|
81
|
+
send(active_admin_application.current_user_method) if active_admin_application.current_user_method
|
|
82
|
+
end
|
|
83
|
+
helper_method :current_active_admin_user
|
|
84
|
+
|
|
85
|
+
def current_active_admin_user?
|
|
86
|
+
!current_active_admin_user.nil?
|
|
87
|
+
end
|
|
88
|
+
helper_method :current_active_admin_user?
|
|
89
|
+
|
|
90
|
+
def active_admin_config
|
|
91
|
+
self.class.active_admin_config
|
|
92
|
+
end
|
|
93
|
+
helper_method :active_admin_config
|
|
94
|
+
|
|
95
|
+
def active_admin_application
|
|
96
|
+
ActiveAdmin.application
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Returns the renderer class to use for the given action.
|
|
100
|
+
def renderer_for(action)
|
|
101
|
+
active_admin_application.view_factory["#{action}_page"]
|
|
102
|
+
end
|
|
103
|
+
helper_method :renderer_for
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::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,79 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
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
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
alias :index! :index
|
|
22
|
+
|
|
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') }
|
|
27
|
+
end
|
|
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') }
|
|
35
|
+
end
|
|
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') }
|
|
43
|
+
end
|
|
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') }
|
|
51
|
+
end
|
|
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') }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
alias :update! :update
|
|
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
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::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,138 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::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
|
+
table_name = active_admin_config.resource_table_name
|
|
50
|
+
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
|
|
51
|
+
chain.order("#{table_name}.#{$1} #{$2}")
|
|
52
|
+
else
|
|
53
|
+
chain # just return the chain
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
module Search
|
|
60
|
+
protected
|
|
61
|
+
|
|
62
|
+
def active_admin_collection
|
|
63
|
+
search(super)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def search(chain)
|
|
67
|
+
@search = chain.metasearch(clean_search_params(params[:q]))
|
|
68
|
+
@search.relation
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def clean_search_params(search_params)
|
|
72
|
+
return {} unless search_params.is_a?(Hash)
|
|
73
|
+
search_params = search_params.dup
|
|
74
|
+
search_params.delete_if do |key, value|
|
|
75
|
+
value == ""
|
|
76
|
+
end
|
|
77
|
+
search_params
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
module Scoping
|
|
83
|
+
protected
|
|
84
|
+
|
|
85
|
+
def active_admin_collection
|
|
86
|
+
scope_current_collection(super)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def scope_current_collection(chain)
|
|
90
|
+
if current_scope
|
|
91
|
+
@before_scope_collection = chain
|
|
92
|
+
scope_chain(current_scope, chain)
|
|
93
|
+
else
|
|
94
|
+
chain
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
include ActiveAdmin::ScopeChain
|
|
99
|
+
|
|
100
|
+
def current_scope
|
|
101
|
+
@current_scope ||= if params[:scope]
|
|
102
|
+
active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
|
|
103
|
+
else
|
|
104
|
+
active_admin_config.default_scope
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
module Pagination
|
|
111
|
+
protected
|
|
112
|
+
|
|
113
|
+
def active_admin_collection
|
|
114
|
+
paginate(super)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Allow more records for csv files
|
|
118
|
+
def setup_pagination_for_csv
|
|
119
|
+
@per_page = 10_000 if request.format == 'text/csv'
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def paginate(chain)
|
|
123
|
+
chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Include all the Modules. BaseCollection must be first
|
|
128
|
+
# and pagination should be last
|
|
129
|
+
include BaseCollection
|
|
130
|
+
include Sorting
|
|
131
|
+
include Search
|
|
132
|
+
include Scoping
|
|
133
|
+
include Pagination
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|