activeadmin 1.3.0 → 2.0.0.rc1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +307 -123
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +90 -46
- data/README.md +66 -19
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
- data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/config/locales/bg.yml +0 -1
- data/config/locales/de.yml +10 -0
- data/config/locales/en.yml +19 -1
- data/config/locales/es.yml +20 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/he.yml +0 -1
- data/config/locales/hu.yml +4 -0
- data/config/locales/it.yml +4 -0
- data/config/locales/lt.yml +2 -2
- data/config/locales/nb.yml +15 -5
- data/config/locales/nl.yml +11 -0
- data/config/locales/pl.yml +71 -3
- data/config/locales/ru.yml +2 -0
- data/config/locales/tr.yml +9 -0
- data/config/locales/uk.yml +2 -0
- data/config/locales/zh-CN.yml +33 -5
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +2 -2
- data/docs/1-general-configuration.md +16 -1
- data/docs/10-custom-pages.md +14 -0
- data/docs/12-arbre-components.md +28 -1
- data/docs/13-authorization-adapter.md +40 -21
- data/docs/2-resource-customization.md +8 -3
- data/docs/3-index-pages/custom-index.md +1 -1
- data/docs/3-index-pages/index-as-blog.md +1 -1
- data/docs/3-index-pages/index-as-table.md +5 -5
- data/docs/3-index-pages.md +17 -0
- data/docs/5-forms.md +16 -2
- data/docs/8-custom-actions.md +11 -0
- data/docs/CNAME +1 -1
- data/docs/Gemfile +2 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/_config.yml +1 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +1 -1
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +2 -2
- data/docs/stylesheets/main.css +26 -2
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +49 -155
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/base_controller/authorization.rb +3 -6
- data/lib/active_admin/base_controller.rb +6 -6
- data/lib/active_admin/batch_actions/controller.rb +2 -2
- data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/csv_builder.rb +1 -1
- data/lib/active_admin/dependency.rb +1 -69
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/dsl.rb +1 -8
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +5 -0
- data/lib/active_admin/error.rb +1 -1
- data/lib/active_admin/filters/active_filter.rb +4 -2
- data/lib/active_admin/filters/active_sidebar.rb +5 -1
- data/lib/active_admin/filters/forms.rb +7 -4
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +4 -4
- data/lib/active_admin/form_builder.rb +97 -62
- data/lib/active_admin/generators/boilerplate.rb +1 -1
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +8 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/menu.rb +2 -8
- data/lib/active_admin/menu_item.rb +4 -32
- data/lib/active_admin/namespace.rb +20 -8
- data/lib/active_admin/namespace_settings.rb +110 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
- data/lib/active_admin/orm/active_record/comments.rb +15 -4
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/pundit_adapter.rb +13 -4
- data/lib/active_admin/resource/action_items.rb +7 -2
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +9 -4
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +2 -2
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/decorators.rb +3 -3
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +5 -3
- data/lib/active_admin/router.rb +89 -84
- data/lib/active_admin/scope.rb +9 -5
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/display_helper.rb +10 -2
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +9 -4
- data/lib/active_admin/views/components/attributes_table.rb +3 -3
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/paginated_collection.rb +1 -1
- data/lib/active_admin/views/components/scopes.rb +11 -4
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/status_tag.rb +1 -18
- data/lib/active_admin/views/components/table_for.rb +3 -12
- data/lib/active_admin/views/components/tabs.rb +15 -3
- data/lib/active_admin/views/footer.rb +3 -7
- data/lib/active_admin/views/header.rb +3 -15
- data/lib/active_admin/views/index_as_blog.rb +1 -1
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +11 -10
- data/lib/active_admin/views/pages/base.rb +30 -53
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +9 -4
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +6 -2
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/ransack_ext.rb +3 -3
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +120 -523
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -49
- data/.mdlrc +0 -1
- data/.rubocop.yml +0 -76
- data/.simplecov +0 -13
- data/.travis.yml +0 -51
- data/.yardopts +0 -7
- data/Gemfile +0 -58
- data/Rakefile +0 -54
- data/activeadmin.gemspec +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -9
- data/cucumber.yml +0 -3
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -178
- data/features/comments/viewing_index.feature +0 -19
- data/features/create_another.feature +0 -55
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -28
- data/features/edit_page.feature +0 -116
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/footer.feature +0 -28
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -55
- data/features/index/batch_actions.feature +0 -218
- data/features/index/filters.feature +0 -250
- data/features/index/format_as_csv.feature +0 -220
- data/features/index/formats.feature +0 -88
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -285
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -72
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -136
- data/features/registering_assets.feature +0 -38
- data/features/registering_pages.feature +0 -237
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -30
- data/features/root_to.feature +0 -17
- data/features/show/attributes_table_title.feature +0 -54
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -33
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -118
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -19
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/attributes_table_title_steps.rb +0 -11
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -32
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -47
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/footer_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -56
- data/features/step_definitions/i18n_steps.rb +0 -11
- data/features/step_definitions/index_scope_steps.rb +0 -29
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- data/features/step_definitions/sidebar_steps.rb +0 -11
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -116
- data/features/step_definitions/user_steps.rb +0 -52
- data/features/step_definitions/web_steps.rb +0 -86
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -69
- data/features/support/env.rb +0 -122
- data/features/support/paths.rb +0 -73
- data/features/support/regular_env.rb +0 -7
- data/features/support/reload_env.rb +0 -7
- data/features/support/selectors.rb +0 -45
- data/features/users/logging_in.feature +0 -36
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_52.gemfile +0 -11
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/lib/bug_report_templates/active_admin_master.rb +0 -112
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/spec/bug_report_templates_spec.rb +0 -26
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_runner.rb +0 -19
- data/spec/rails_helper.rb +0 -59
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -1
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/rails_template.rb +0 -153
- data/spec/support/rails_template_with_data.rb +0 -327
- data/spec/support/templates/admin/stores.rb +0 -7
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/manifest.js +0 -3
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -44
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -24
- data/spec/unit/abstract_view_factory_spec.rb +0 -78
- data/spec/unit/action_builder_spec.rb +0 -158
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -184
- data/spec/unit/asset_registration_spec.rb +0 -81
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -93
- data/spec/unit/batch_actions/resource_spec.rb +0 -84
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -76
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -176
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -41
- data/spec/unit/csv_builder_spec.rb +0 -313
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -120
- data/spec/unit/filters/active_filter_spec.rb +0 -189
- data/spec/unit/filters/active_spec.rb +0 -24
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -990
- data/spec/unit/generators/install_spec.rb +0 -31
- data/spec/unit/helpers/collection_spec.rb +0 -68
- data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
- data/spec/unit/helpers/scope_chain_spec.rb +0 -35
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -29
- data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -141
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -124
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -128
- data/spec/unit/pretty_format_spec.rb +0 -82
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -69
- data/spec/unit/resource/attributes_spec.rb +0 -49
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/ordering_spec.rb +0 -35
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -125
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -234
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
- data/spec/unit/resource_controller_spec.rb +0 -273
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -320
- data/spec/unit/routing_spec.rb +0 -211
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -117
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
- data/spec/unit/views/components/attributes_table_spec.rb +0 -271
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -187
- data/spec/unit/views/components/index_list_spec.rb +0 -49
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -76
- data/spec/unit/views/components/status_tag_spec.rb +0 -265
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -67
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -54
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -32
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/docs.rake +0 -64
- data/tasks/lint.rake +0 -21
- data/tasks/local.rake +0 -25
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -29
@@ -1,9 +1,6 @@
|
|
1
|
-
require 'active_admin/view_helpers/method_or_proc_helper'
|
2
|
-
|
3
1
|
module ActiveAdmin
|
4
2
|
class MenuItem
|
5
3
|
include Menu::MenuNode
|
6
|
-
include MethodOrProcHelper
|
7
4
|
|
8
5
|
attr_reader :html_options, :parent, :priority
|
9
6
|
|
@@ -53,7 +50,7 @@ module ActiveAdmin
|
|
53
50
|
@url = options[:url] || '#'
|
54
51
|
@priority = options[:priority] || 10
|
55
52
|
@html_options = options[:html_options] || {}
|
56
|
-
@should_display = options[:if] || proc{true}
|
53
|
+
@should_display = options[:if] || proc { true }
|
57
54
|
@parent = options[:parent]
|
58
55
|
|
59
56
|
yield(self) if block_given? # Builder style syntax
|
@@ -63,35 +60,10 @@ module ActiveAdmin
|
|
63
60
|
@id ||= normalize_id @dirty_id
|
64
61
|
end
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
def url(context = nil)
|
71
|
-
render_in_context context, @url
|
72
|
-
end
|
63
|
+
attr_reader :label
|
64
|
+
attr_reader :url
|
73
65
|
|
74
66
|
# Don't display if the :if option passed says so
|
75
|
-
|
76
|
-
def display?(context = nil)
|
77
|
-
return false unless render_in_context(context, @should_display)
|
78
|
-
return false if !real_url?(context) && @children.any? && !items(context).any?
|
79
|
-
true
|
80
|
-
end
|
81
|
-
|
82
|
-
# Returns an array of the ancestry of this menu item.
|
83
|
-
# The first item is the immediate parent of the item.
|
84
|
-
def ancestors
|
85
|
-
parent ? [parent, parent.ancestors].flatten : []
|
86
|
-
end
|
87
|
-
|
88
|
-
private
|
89
|
-
|
90
|
-
# URL is not nil, empty, or '#'
|
91
|
-
def real_url?(context = nil)
|
92
|
-
url = url context
|
93
|
-
url.present? && url != '#'
|
94
|
-
end
|
95
|
-
|
67
|
+
attr_reader :should_display
|
96
68
|
end
|
97
69
|
end
|
@@ -25,6 +25,12 @@ module ActiveAdmin
|
|
25
25
|
# resource will be accessible from "/posts" and the controller will be PostsController.
|
26
26
|
#
|
27
27
|
class Namespace
|
28
|
+
class << self
|
29
|
+
def setting(name, default)
|
30
|
+
Deprecation.warn "This method does not do anything and will be removed."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
28
34
|
RegisterEvent = 'active_admin.namespace.register'.freeze
|
29
35
|
|
30
36
|
attr_reader :application, :resources, :menus
|
@@ -41,6 +47,18 @@ module ActiveAdmin
|
|
41
47
|
@name.to_sym
|
42
48
|
end
|
43
49
|
|
50
|
+
def settings
|
51
|
+
@settings ||= SettingsNode.build(application.namespace_settings)
|
52
|
+
end
|
53
|
+
|
54
|
+
def respond_to_missing?(method, include_private = false)
|
55
|
+
settings.respond_to?(method) || super
|
56
|
+
end
|
57
|
+
|
58
|
+
def method_missing(method, *args)
|
59
|
+
settings.respond_to?(method) ? settings.send(method, *args) : super
|
60
|
+
end
|
61
|
+
|
44
62
|
# Register a resource into this namespace. The preffered method to access this is to
|
45
63
|
# use the global registration ActiveAdmin.register which delegates to the proper
|
46
64
|
# namespace instance.
|
@@ -100,12 +118,6 @@ module ActiveAdmin
|
|
100
118
|
resources[klass]
|
101
119
|
end
|
102
120
|
|
103
|
-
# Override from ActiveAdmin::Settings to inherit default attributes
|
104
|
-
# from the application
|
105
|
-
def read_default_setting(name)
|
106
|
-
application.public_send name
|
107
|
-
end
|
108
|
-
|
109
121
|
def fetch_menu(name)
|
110
122
|
@menus.fetch(name)
|
111
123
|
end
|
@@ -138,8 +150,8 @@ module ActiveAdmin
|
|
138
150
|
if logout_link_path
|
139
151
|
html_options = html_options.reverse_merge(method: logout_link_method || :get)
|
140
152
|
menu.add id: 'logout', priority: priority, html_options: html_options,
|
141
|
-
label: ->{ I18n.t 'active_admin.logout' },
|
142
|
-
url: ->{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
153
|
+
label: -> { I18n.t 'active_admin.logout' },
|
154
|
+
url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
143
155
|
if: :current_active_admin_user?
|
144
156
|
end
|
145
157
|
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'active_admin/dynamic_settings_node'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
class NamespaceSettings < DynamicSettingsNode
|
5
|
+
# The default number of resources to display on index pages
|
6
|
+
register :default_per_page, 30
|
7
|
+
|
8
|
+
# The max number of resources to display on index pages and batch exports
|
9
|
+
register :max_per_page, 10_000
|
10
|
+
|
11
|
+
# The title which gets displayed in the main layout
|
12
|
+
register :site_title, "", :string_symbol_or_proc
|
13
|
+
|
14
|
+
# Set the site title link href (defaults to AA dashboard)
|
15
|
+
register :site_title_link, ""
|
16
|
+
|
17
|
+
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
18
|
+
register :site_title_image, "", :string_symbol_or_proc
|
19
|
+
|
20
|
+
# Add to the site head
|
21
|
+
register :head, "", :string_symbol_or_proc
|
22
|
+
|
23
|
+
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
24
|
+
register :footer, "", :string_symbol_or_proc
|
25
|
+
|
26
|
+
# Set a favicon
|
27
|
+
register :favicon, false
|
28
|
+
|
29
|
+
# Additional meta tags to place in head of logged in pages
|
30
|
+
register :meta_tags, {}
|
31
|
+
|
32
|
+
# Additional meta tags to place in head of logged out pages
|
33
|
+
register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
34
|
+
|
35
|
+
# The view factory to use to generate all the view classes. Take
|
36
|
+
# a look at ActiveAdmin::ViewFactory
|
37
|
+
register :view_factory, ActiveAdmin::ViewFactory.new
|
38
|
+
|
39
|
+
# The method to call in controllers to get the current user
|
40
|
+
register :current_user_method, false
|
41
|
+
|
42
|
+
# The method to call in the controllers to ensure that there
|
43
|
+
# is a currently authenticated admin user
|
44
|
+
register :authentication_method, false
|
45
|
+
|
46
|
+
# The path to log user's out with. If set to a symbol, we assume
|
47
|
+
# that it's a method to call which returns the path
|
48
|
+
register :logout_link_path, :destroy_admin_user_session_path
|
49
|
+
|
50
|
+
# The method to use when generating the link for user logout
|
51
|
+
register :logout_link_method, :get
|
52
|
+
|
53
|
+
# Whether the batch actions are enabled or not
|
54
|
+
register :batch_actions, false
|
55
|
+
|
56
|
+
# Whether filters are enabled
|
57
|
+
register :filters, true
|
58
|
+
|
59
|
+
# The namespace root
|
60
|
+
register :root_to, 'dashboard#index'
|
61
|
+
|
62
|
+
# Options that are passed to root_to
|
63
|
+
register :root_to_options, {}
|
64
|
+
|
65
|
+
# Options passed to the routes, i.e. { path: '/custom' }
|
66
|
+
register :route_options, {}
|
67
|
+
|
68
|
+
# Display breadcrumbs
|
69
|
+
register :breadcrumb, true
|
70
|
+
|
71
|
+
# Display create another checkbox on a new page
|
72
|
+
# @return [Boolean] (true)
|
73
|
+
register :create_another, false
|
74
|
+
|
75
|
+
# Default CSV options
|
76
|
+
register :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
77
|
+
|
78
|
+
# Default Download Links options
|
79
|
+
register :download_links, true
|
80
|
+
|
81
|
+
# The authorization adapter to use
|
82
|
+
register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
83
|
+
|
84
|
+
# A proc to be used when a user is not authorized to view the current resource
|
85
|
+
register :on_unauthorized_access, :rescue_active_admin_access_denied
|
86
|
+
|
87
|
+
# A regex to detect unsupported browser, set to false to disable
|
88
|
+
register :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
89
|
+
|
90
|
+
# Whether to display 'Current Filters' on search screen
|
91
|
+
register :current_filters, true
|
92
|
+
|
93
|
+
# class to handle ordering
|
94
|
+
register :order_clause, ActiveAdmin::OrderClause
|
95
|
+
|
96
|
+
# default show_count for scopes
|
97
|
+
register :scopes_show_count, true
|
98
|
+
|
99
|
+
# Request parameters that are permitted by default
|
100
|
+
register :permitted_params, [
|
101
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
102
|
+
]
|
103
|
+
|
104
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
105
|
+
register :flash_keys_to_except, ['timedout']
|
106
|
+
|
107
|
+
# Include association filters by default
|
108
|
+
register :include_default_association_filters, true
|
109
|
+
end
|
110
|
+
end
|
@@ -3,7 +3,7 @@ module ActiveAdmin
|
|
3
3
|
|
4
4
|
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
5
5
|
|
6
|
-
belongs_to :resource, polymorphic: true
|
6
|
+
belongs_to :resource, polymorphic: true, optional: true
|
7
7
|
belongs_to :author, polymorphic: true
|
8
8
|
|
9
9
|
validates_presence_of :body, :namespace, :resource
|
@@ -18,7 +18,7 @@ module ActiveAdmin
|
|
18
18
|
def self.find_for_resource_in_namespace(resource, namespace)
|
19
19
|
where(
|
20
20
|
resource_type: resource_type(resource),
|
21
|
-
resource_id: resource,
|
21
|
+
resource_id: resource.id,
|
22
22
|
namespace: namespace.to_s
|
23
23
|
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
24
24
|
end
|
@@ -11,10 +11,12 @@ module ActiveAdmin
|
|
11
11
|
attr_accessor :resource
|
12
12
|
|
13
13
|
def build(resource)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
15
|
+
@resource = resource
|
16
|
+
@comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
17
|
+
super(title, for: resource)
|
18
|
+
build_comments
|
19
|
+
end
|
18
20
|
end
|
19
21
|
|
20
22
|
protected
|
@@ -32,7 +34,10 @@ module ActiveAdmin
|
|
32
34
|
end
|
33
35
|
|
34
36
|
text_node paginate @comments
|
35
|
-
|
37
|
+
|
38
|
+
if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
|
39
|
+
build_comment_form
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
def build_comment(comment)
|
@@ -17,6 +17,17 @@ ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comme
|
|
17
17
|
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
18
18
|
ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
19
19
|
|
20
|
+
# Hint i18n-tasks about model and attribute translations used by default install
|
21
|
+
# i18n-tasks-use t('activerecord.models.comment')
|
22
|
+
# i18n-tasks-use t('activerecord.models.active_admin/comment')
|
23
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
|
24
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
|
25
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
|
26
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
|
27
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
|
28
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
|
29
|
+
# i18n-tasks-use t('active_admin.scopes.all')
|
30
|
+
|
20
31
|
# Walk through all the loaded namespaces after they're loaded
|
21
32
|
ActiveAdmin.after_load do |app|
|
22
33
|
app.namespaces.each do |namespace|
|
@@ -53,21 +64,21 @@ ActiveAdmin.after_load do |app|
|
|
53
64
|
def create
|
54
65
|
create! do |success, failure|
|
55
66
|
success.html do
|
56
|
-
|
67
|
+
redirect_back fallback_location: active_admin_root
|
57
68
|
end
|
58
69
|
failure.html do
|
59
70
|
flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
|
60
|
-
|
71
|
+
redirect_back fallback_location: active_admin_root
|
61
72
|
end
|
62
73
|
end
|
63
74
|
|
64
75
|
def destroy
|
65
76
|
destroy! do |success, failure|
|
66
77
|
success.html do
|
67
|
-
|
78
|
+
redirect_back fallback_location: active_admin_root
|
68
79
|
end
|
69
80
|
failure.html do
|
70
|
-
|
81
|
+
redirect_back fallback_location: active_admin_root
|
71
82
|
end
|
72
83
|
end
|
73
84
|
end
|
@@ -4,6 +4,7 @@ require 'pundit'
|
|
4
4
|
|
5
5
|
# Add a setting to the application to configure the pundit default policy
|
6
6
|
ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
|
7
|
+
ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
|
7
8
|
|
8
9
|
module ActiveAdmin
|
9
10
|
|
@@ -19,7 +20,7 @@ module ActiveAdmin
|
|
19
20
|
def scope_collection(collection, action = Auth::READ)
|
20
21
|
# scoping is appliable only to read/index action
|
21
22
|
# which means there is no way how to scope other actions
|
22
|
-
Pundit.policy_scope!(user, collection)
|
23
|
+
Pundit.policy_scope!(user, namespace(collection))
|
23
24
|
rescue Pundit::NotDefinedError => e
|
24
25
|
if default_policy_class && default_policy_class.const_defined?(:Scope)
|
25
26
|
default_policy_class::Scope.new(user, collection).resolve
|
@@ -30,9 +31,9 @@ module ActiveAdmin
|
|
30
31
|
|
31
32
|
def retrieve_policy(subject)
|
32
33
|
case subject
|
33
|
-
when nil then Pundit.policy!(user, resource)
|
34
|
-
when Class then Pundit.policy!(user, subject.new)
|
35
|
-
else Pundit.policy!(user, subject)
|
34
|
+
when nil then Pundit.policy!(user, namespace(resource))
|
35
|
+
when Class then Pundit.policy!(user, namespace(subject.new))
|
36
|
+
else Pundit.policy!(user, namespace(subject))
|
36
37
|
end
|
37
38
|
rescue Pundit::NotDefinedError => e
|
38
39
|
if default_policy_class
|
@@ -55,6 +56,14 @@ module ActiveAdmin
|
|
55
56
|
|
56
57
|
private
|
57
58
|
|
59
|
+
def namespace(object)
|
60
|
+
if ActiveAdmin.application.pundit_policy_namespace
|
61
|
+
[ActiveAdmin.application.pundit_policy_namespace.to_sym, object]
|
62
|
+
else
|
63
|
+
object
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
58
67
|
def default_policy_class
|
59
68
|
ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
|
60
69
|
end
|
@@ -24,6 +24,7 @@ module ActiveAdmin
|
|
24
24
|
# this action item on.
|
25
25
|
# :except: A single or array of controller actions not to
|
26
26
|
# display this action item on.
|
27
|
+
# :priority: A single integer value. To control the display order. Default is 10.
|
27
28
|
def add_action_item(name, options = {}, &block)
|
28
29
|
self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
|
29
30
|
end
|
@@ -38,7 +39,7 @@ module ActiveAdmin
|
|
38
39
|
#
|
39
40
|
# @return [Array] Array of ActionItems for the controller actions
|
40
41
|
def action_items_for(action, render_context = nil)
|
41
|
-
action_items.select{ |item| item.display_on? action, render_context }
|
42
|
+
action_items.select { |item| item.display_on? action, render_context }.sort_by(&:priority)
|
42
43
|
end
|
43
44
|
|
44
45
|
# Clears all the existing action items for this resource
|
@@ -86,7 +87,7 @@ module ActiveAdmin
|
|
86
87
|
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
87
88
|
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
88
89
|
link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
|
89
|
-
data: {confirm: localizer.t(:delete_confirmation)}
|
90
|
+
data: { confirm: localizer.t(:delete_confirmation) }
|
90
91
|
end
|
91
92
|
end
|
92
93
|
end
|
@@ -110,6 +111,10 @@ module ActiveAdmin
|
|
110
111
|
def html_class
|
111
112
|
"action_item #{@options[:class]}".rstrip
|
112
113
|
end
|
114
|
+
|
115
|
+
def priority
|
116
|
+
@options[:priority] || 10
|
117
|
+
end
|
113
118
|
end
|
114
119
|
|
115
120
|
end
|
@@ -18,13 +18,13 @@ module ActiveAdmin
|
|
18
18
|
|
19
19
|
def foreign_methods
|
20
20
|
@foreign_methods ||= resource_class.reflect_on_all_associations.
|
21
|
-
select{ |r| r.macro == :belongs_to }.
|
22
|
-
reject{ |r| r.chain.length > 2 && !r.options[:polymorphic] }.
|
23
|
-
index_by{ |r| r.foreign_key.to_sym }
|
21
|
+
select { |r| r.macro == :belongs_to }.
|
22
|
+
reject { |r| r.chain.length > 2 && !r.options[:polymorphic] }.
|
23
|
+
index_by { |r| r.foreign_key.to_sym }
|
24
24
|
end
|
25
25
|
|
26
26
|
def reject_col?(c)
|
27
|
-
primary_col?(c) || sti_col?(c) || counter_cache_col?(c)
|
27
|
+
primary_col?(c) || sti_col?(c) || counter_cache_col?(c) || filtered_col?(c)
|
28
28
|
end
|
29
29
|
|
30
30
|
def primary_col?(c)
|
@@ -39,6 +39,9 @@ module ActiveAdmin
|
|
39
39
|
c.name.end_with?('_count')
|
40
40
|
end
|
41
41
|
|
42
|
+
def filtered_col?(c)
|
43
|
+
ActiveAdmin.application.filter_attributes.include?(c.name.to_sym)
|
44
|
+
end
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
@@ -26,9 +26,9 @@ module ActiveAdmin
|
|
26
26
|
resource = self
|
27
27
|
{
|
28
28
|
id: resource_name.plural,
|
29
|
-
label: proc{ resource.plural_resource_label },
|
30
|
-
url: proc{ resource.route_collection_path(params, url_options) },
|
31
|
-
if: proc{ authorized?(Auth::READ, menu_resource_class) }
|
29
|
+
label: proc { resource.plural_resource_label },
|
30
|
+
url: proc { resource.route_collection_path(params, url_options) },
|
31
|
+
if: proc { authorized?(Auth::READ, menu_resource_class) }
|
32
32
|
}
|
33
33
|
end
|
34
34
|
|
@@ -22,8 +22,8 @@ module ActiveAdmin
|
|
22
22
|
|
23
23
|
# Returns the plural version of this resource such as "Bank Accounts"
|
24
24
|
def plural_resource_label(options = {})
|
25
|
-
defaults = {count: Helpers::I18n::PLURAL_MANY_COUNT,
|
26
|
-
default: resource_label.pluralize.titleize}
|
25
|
+
defaults = { count: Helpers::I18n::PLURAL_MANY_COUNT,
|
26
|
+
default: resource_label.pluralize.titleize }
|
27
27
|
resource_name.translate defaults.merge options
|
28
28
|
end
|
29
29
|
|
@@ -46,7 +46,7 @@ module ActiveAdmin
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def translate(options = {})
|
49
|
-
I18n.t i18n_key, {scope: [:activerecord, :models]}.merge(options)
|
49
|
+
I18n.t i18n_key, { scope: [:activerecord, :models] }.merge(options)
|
50
50
|
end
|
51
51
|
|
52
52
|
def route_key
|
@@ -20,7 +20,11 @@ module ActiveAdmin
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def route_edit_instance_path(resource, additional_params = {})
|
23
|
-
route_builder.
|
23
|
+
route_builder.member_action_path(:edit, resource, additional_params)
|
24
|
+
end
|
25
|
+
|
26
|
+
def route_member_action_path(action, resource, additional_params = {})
|
27
|
+
route_builder.member_action_path(action, resource, additional_params)
|
24
28
|
end
|
25
29
|
|
26
30
|
# Returns the routes prefix for this config
|
@@ -75,12 +79,13 @@ module ActiveAdmin
|
|
75
79
|
routes.public_send route_name, *route_instance_params(instance), additional_params
|
76
80
|
end
|
77
81
|
|
78
|
-
# @return [String] the path to the
|
82
|
+
# @return [String] the path to the member action of this resource
|
83
|
+
# @param action [Symbol]
|
79
84
|
# @param instance [ActiveRecord::Base] the instance we want the path of
|
80
85
|
# @example "/admin/posts/1/edit"
|
81
|
-
def
|
86
|
+
def member_action_path(action, instance, additional_params = {})
|
82
87
|
path = resource.resources_configuration[:self][:route_instance_name]
|
83
|
-
route_name = route_name(path, action:
|
88
|
+
route_name = route_name(path, action: action)
|
84
89
|
|
85
90
|
routes.public_send route_name, *route_instance_params(instance), additional_params
|
86
91
|
end
|
@@ -10,7 +10,7 @@ module ActiveAdmin
|
|
10
10
|
# Returns a scope for this object by its identifier
|
11
11
|
def get_scope_by_id(id)
|
12
12
|
id = id.to_s
|
13
|
-
scopes.find{|s| s.id == id }
|
13
|
+
scopes.find { |s| s.id == id }
|
14
14
|
end
|
15
15
|
|
16
16
|
def default_scope(context = nil)
|
@@ -27,7 +27,7 @@ module ActiveAdmin
|
|
27
27
|
# If you want to internationalize the scope name, you can add
|
28
28
|
# to your i18n files a key like "active_admin.scopes.scope_method".
|
29
29
|
def scope(*args, &block)
|
30
|
-
default_options = {show_count: namespace.scopes_show_count}
|
30
|
+
default_options = { show_count: namespace.scopes_show_count }
|
31
31
|
options = default_options.merge(args.extract_options!)
|
32
32
|
title = args[0] rescue nil
|
33
33
|
method = args[1] rescue nil
|
@@ -36,7 +36,7 @@ module ActiveAdmin
|
|
36
36
|
scope = ActiveAdmin::Scope.new(title, method, options, &block)
|
37
37
|
|
38
38
|
# Finds and replaces a scope by the same name if it already exists
|
39
|
-
existing_scope_index = scopes.index{|existing_scope| existing_scope.id == scope.id }
|
39
|
+
existing_scope_index = scopes.index { |existing_scope| existing_scope.id == scope.id }
|
40
40
|
if existing_scope_index
|
41
41
|
scopes.delete_at(existing_scope_index)
|
42
42
|
scopes.insert(existing_scope_index, scope)
|
@@ -14,7 +14,7 @@ module ActiveAdmin
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def sidebar_sections_for(action, render_context = nil)
|
17
|
-
sidebar_sections.select{|section| section.display_on?(action, render_context) }
|
17
|
+
sidebar_sections.select { |section| section.display_on?(action, render_context) }
|
18
18
|
.sort_by(&:priority)
|
19
19
|
end
|
20
20
|
|
@@ -181,11 +181,11 @@ module ActiveAdmin
|
|
181
181
|
end
|
182
182
|
|
183
183
|
def association_columns
|
184
|
-
@association_columns ||= resource_attributes.select{ |key, value| key != value }.values
|
184
|
+
@association_columns ||= resource_attributes.select { |key, value| key != value }.values
|
185
185
|
end
|
186
186
|
|
187
187
|
def content_columns
|
188
|
-
@content_columns ||= resource_attributes.select{ |key, value| key == value }.values
|
188
|
+
@content_columns ||= resource_attributes.select { |key, value| key == value }.values
|
189
189
|
end
|
190
190
|
|
191
191
|
private
|
@@ -38,12 +38,12 @@ module ActiveAdmin
|
|
38
38
|
r.resource_class.to_s == obj.to_s
|
39
39
|
end ||
|
40
40
|
if obj.respond_to? :base_class
|
41
|
-
resources.detect{ |r| r.resource_class.to_s == obj.base_class.to_s }
|
41
|
+
resources.detect { |r| r.resource_class.to_s == obj.base_class.to_s }
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
def resources
|
46
|
-
select{ |r| r.class <= Resource } # can otherwise be a Page
|
46
|
+
select { |r| r.class <= Resource } # can otherwise be a Page
|
47
47
|
end
|
48
48
|
|
49
49
|
def raise_if_mismatched!(existing, given)
|
@@ -7,12 +7,22 @@ module ActiveAdmin
|
|
7
7
|
module ClassMethods
|
8
8
|
|
9
9
|
def clear_member_actions!
|
10
|
+
remove_action_methods(:member)
|
10
11
|
active_admin_config.clear_member_actions!
|
11
12
|
end
|
12
13
|
|
13
14
|
def clear_collection_actions!
|
15
|
+
remove_action_methods(:collection)
|
14
16
|
active_admin_config.clear_collection_actions!
|
15
17
|
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def remove_action_methods(actions_type)
|
22
|
+
active_admin_config.public_send("#{actions_type}_actions").each do |action|
|
23
|
+
remove_method action.name
|
24
|
+
end
|
25
|
+
end
|
16
26
|
end
|
17
27
|
|
18
28
|
end
|
@@ -2,7 +2,7 @@ module ActiveAdmin
|
|
2
2
|
class ResourceController < BaseController
|
3
3
|
module Decorators
|
4
4
|
|
5
|
-
|
5
|
+
protected
|
6
6
|
|
7
7
|
def apply_decorator(resource)
|
8
8
|
decorate? ? decorator_class.new(resource) : resource
|
@@ -24,7 +24,7 @@ module ActiveAdmin
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
private
|
28
28
|
|
29
29
|
def decorate?
|
30
30
|
case action_name
|
@@ -62,7 +62,7 @@ module ActiveAdmin
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
|
65
|
+
private
|
66
66
|
|
67
67
|
def self.wrap!(parent, name)
|
68
68
|
::Class.new parent do
|
@@ -15,7 +15,7 @@ module ActiveAdmin
|
|
15
15
|
# Collection can be scoped conditionally with an :if or :unless proc.
|
16
16
|
def begin_of_association_chain
|
17
17
|
return nil unless active_admin_config.scope_to?(self)
|
18
|
-
render_in_context(self, active_admin_config.scope_to_method)
|
18
|
+
MethodOrProcHelper.render_in_context(self, active_admin_config.scope_to_method)
|
19
19
|
end
|
20
20
|
|
21
21
|
# Overriding from InheritedResources::BaseHelpers
|