activeadmin 1.1.0 → 2.4.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +469 -100
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +89 -47
- data/README.md +73 -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 +59 -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/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/config/locales/ar.yml +3 -2
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +29 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +21 -1
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +21 -1
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +2 -1
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +5 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +13 -3
- data/config/locales/ja.yml +6 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -5
- data/config/locales/nl.yml +12 -0
- data/config/locales/pl.yml +72 -3
- data/config/locales/pt-BR.yml +9 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +3 -0
- data/config/locales/sk.yml +60 -0
- data/config/locales/sv-SE.yml +3 -0
- data/config/locales/tr.yml +10 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +48 -6
- data/config/locales/zh-CN.yml +34 -5
- data/config/locales/zh-TW.yml +1 -0
- 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 +41 -1
- data/docs/13-authorization-adapter.md +41 -22
- data/docs/2-resource-customization.md +10 -5
- 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 +12 -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 -1
- data/docs/Gemfile.lock +248 -0
- data/docs/_config.yml +3 -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 +109 -8
- data/docs/stylesheets/main.css +55 -2
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +52 -159
- 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 +4 -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 +9 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +10 -7
- data/lib/active_admin/dependency.rb +3 -67
- 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 +4 -2
- data/lib/active_admin/filters/active_filter.rb +49 -12
- data/lib/active_admin/filters/active_sidebar.rb +6 -2
- 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 +28 -4
- data/lib/active_admin/form_builder.rb +98 -63
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- 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/inputs/filters/select_input.rb +5 -1
- 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 +123 -0
- data/lib/active_admin/order_clause.rb +2 -2
- 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 +17 -7
- data/lib/active_admin/orm/active_record/comments.rb +15 -4
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +18 -5
- data/lib/active_admin/resource/action_items.rb +7 -2
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +20 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +17 -3
- 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/data_access.rb +5 -1
- data/lib/active_admin/resource_controller/decorators.rb +5 -5
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
- 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_controller.rb +2 -0
- data/lib/active_admin/resource_dsl.rb +7 -3
- data/lib/active_admin/router.rb +90 -84
- data/lib/active_admin/scope.rb +16 -8
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +13 -4
- 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 +3 -3
- 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/site_title.rb +5 -6
- data/lib/active_admin/views/components/status_tag.rb +6 -19
- 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 +18 -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 +10 -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 +7 -3
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -3
- 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 +2 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- 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 +127 -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 -239
- 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 -107
- 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 -48
- 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/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -113
- 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 -150
- 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 -10
- data/spec/unit/abstract_view_factory_spec.rb +0 -78
- data/spec/unit/action_builder_spec.rb +0 -125
- 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 -304
- 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 -135
- data/spec/unit/filters/active_spec.rb +0 -24
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -502
- 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/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 -230
- 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 -252
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
- 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
- /data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +0 -0
@@ -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
|
@@ -43,7 +44,7 @@ module ActiveAdmin
|
|
43
44
|
end
|
44
45
|
|
45
46
|
def format_action(action, subject)
|
46
|
-
# https://github.com/
|
47
|
+
# https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
|
47
48
|
case action
|
48
49
|
when Auth::CREATE then :create?
|
49
50
|
when Auth::UPDATE then :update?
|
@@ -55,6 +56,14 @@ module ActiveAdmin
|
|
55
56
|
|
56
57
|
private
|
57
58
|
|
59
|
+
def namespace(object)
|
60
|
+
if default_policy_namespace && !object.class.to_s.include?(default_policy_namespace.to_s.camelize)
|
61
|
+
[default_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
|
@@ -63,6 +72,10 @@ module ActiveAdmin
|
|
63
72
|
default_policy_class.new(user, subject)
|
64
73
|
end
|
65
74
|
|
75
|
+
def default_policy_namespace
|
76
|
+
ActiveAdmin.application.pundit_policy_namespace
|
77
|
+
end
|
78
|
+
|
66
79
|
end
|
67
80
|
|
68
81
|
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
|
@@ -14,8 +14,13 @@ module ActiveAdmin
|
|
14
14
|
# The resource which initiated this relationship
|
15
15
|
attr_reader :owner
|
16
16
|
|
17
|
+
# The name of the relation
|
18
|
+
attr_reader :target_name
|
19
|
+
|
17
20
|
def initialize(owner, target_name, options = {})
|
18
|
-
@owner
|
21
|
+
@owner = owner
|
22
|
+
@target_name = target_name
|
23
|
+
@options = options
|
19
24
|
end
|
20
25
|
|
21
26
|
# Returns the target resource class or raises an exception if it doesn't exist
|
@@ -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
|
@@ -105,7 +110,7 @@ module ActiveAdmin
|
|
105
110
|
# @return params to pass to instance path
|
106
111
|
def route_instance_params(instance)
|
107
112
|
if nested?
|
108
|
-
[instance.public_send(
|
113
|
+
[instance.public_send(belongs_to_target_name).to_param, instance.to_param]
|
109
114
|
else
|
110
115
|
instance.to_param
|
111
116
|
end
|
@@ -118,11 +123,19 @@ module ActiveAdmin
|
|
118
123
|
end
|
119
124
|
|
120
125
|
def nested?
|
121
|
-
resource.belongs_to? &&
|
126
|
+
resource.belongs_to? && belongs_to_config.required?
|
127
|
+
end
|
128
|
+
|
129
|
+
def belongs_to_target_name
|
130
|
+
belongs_to_config.target_name
|
122
131
|
end
|
123
132
|
|
124
133
|
def belongs_to_name
|
125
|
-
|
134
|
+
belongs_to_config.target.resource_name.singular
|
135
|
+
end
|
136
|
+
|
137
|
+
def belongs_to_config
|
138
|
+
resource.belongs_to_config
|
126
139
|
end
|
127
140
|
|
128
141
|
def routes
|
@@ -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
|
|
@@ -12,6 +12,7 @@ require 'active_admin/resource/scope_to'
|
|
12
12
|
require 'active_admin/resource/sidebars'
|
13
13
|
require 'active_admin/resource/belongs_to'
|
14
14
|
require 'active_admin/resource/ordering'
|
15
|
+
require 'active_admin/resource/model'
|
15
16
|
|
16
17
|
module ActiveAdmin
|
17
18
|
|
@@ -71,7 +72,8 @@ module ActiveAdmin
|
|
71
72
|
@resource_class_name = "::#{resource_class.name}"
|
72
73
|
@options = options
|
73
74
|
@sort_order = options[:sort_order]
|
74
|
-
@member_actions
|
75
|
+
@member_actions = []
|
76
|
+
@collection_actions = []
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
@@ -103,6 +105,10 @@ module ActiveAdmin
|
|
103
105
|
ActiveSupport::Dependencies.constantize(decorator_class_name) if decorator_class_name
|
104
106
|
end
|
105
107
|
|
108
|
+
def resource_name_extension
|
109
|
+
@resource_name_extension ||= define_resource_name_extension(self)
|
110
|
+
end
|
111
|
+
|
106
112
|
def resource_table_name
|
107
113
|
resource_class.quoted_table_name
|
108
114
|
end
|
@@ -132,6 +138,7 @@ module ActiveAdmin
|
|
132
138
|
def belongs_to(target, options = {})
|
133
139
|
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
134
140
|
self.menu_item_options = false if @belongs_to.required?
|
141
|
+
options[:class_name] ||= @belongs_to.resource.resource_class_name if @belongs_to.resource
|
135
142
|
controller.send :belongs_to, target, options.dup
|
136
143
|
end
|
137
144
|
|
@@ -181,11 +188,11 @@ module ActiveAdmin
|
|
181
188
|
end
|
182
189
|
|
183
190
|
def association_columns
|
184
|
-
@association_columns ||= resource_attributes.select{ |key, value| key != value }.values
|
191
|
+
@association_columns ||= resource_attributes.select { |key, value| key != value }.values
|
185
192
|
end
|
186
193
|
|
187
194
|
def content_columns
|
188
|
-
@content_columns ||= resource_attributes.select{ |key, value| key == value }.values
|
195
|
+
@content_columns ||= resource_attributes.select { |key, value| key == value }.values
|
189
196
|
end
|
190
197
|
|
191
198
|
private
|
@@ -202,5 +209,12 @@ module ActiveAdmin
|
|
202
209
|
@default_csv_builder ||= CSVBuilder.default_for_resource(self)
|
203
210
|
end
|
204
211
|
|
212
|
+
def define_resource_name_extension(resource)
|
213
|
+
Module.new do
|
214
|
+
define_method :model_name do
|
215
|
+
resource.resource_name
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
205
219
|
end # class Resource
|
206
220
|
end # module ActiveAdmin
|
@@ -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
|
@@ -115,6 +115,7 @@ module ActiveAdmin
|
|
115
115
|
get_resource_ivar || begin
|
116
116
|
resource = build_new_resource
|
117
117
|
resource = apply_decorations(resource)
|
118
|
+
resource = assign_attributes(resource, resource_params)
|
118
119
|
run_build_callbacks resource
|
119
120
|
authorize_resource! resource
|
120
121
|
|
@@ -127,7 +128,10 @@ module ActiveAdmin
|
|
127
128
|
#
|
128
129
|
# @return [ActiveRecord::Base] An un-saved active record base object
|
129
130
|
def build_new_resource
|
130
|
-
scoped_collection.send
|
131
|
+
scoped_collection.send(
|
132
|
+
method_for_build,
|
133
|
+
*resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
|
134
|
+
)
|
131
135
|
end
|
132
136
|
|
133
137
|
# Calls all the appropriate callbacks and then creates the new resource.
|
@@ -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,13 +62,13 @@ 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
|
69
69
|
delegate :reorder, :page, :current_page, :total_pages, :limit_value,
|
70
|
-
:total_count, :total_pages, :
|
71
|
-
:find_each, :ransack
|
70
|
+
:total_count, :total_pages, :offset, :to_key, :group_values,
|
71
|
+
:except, :find_each, :ransack
|
72
72
|
|
73
73
|
define_singleton_method(:name) { name }
|
74
74
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "active_admin/resource"
|
2
|
+
require "active_admin/resource/model"
|
3
|
+
|
4
|
+
module ActiveAdmin
|
5
|
+
class ResourceController < BaseController
|
6
|
+
module PolymorphicRoutes
|
7
|
+
def polymorphic_url(record_or_hash_or_array, options = {})
|
8
|
+
super(map_named_resources_for(record_or_hash_or_array), options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def polymorphic_path(record_or_hash_or_array, options = {})
|
12
|
+
super(map_named_resources_for(record_or_hash_or_array), options)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def map_named_resources_for(record_or_hash_or_array)
|
18
|
+
return record_or_hash_or_array unless record_or_hash_or_array.is_a?(Array)
|
19
|
+
|
20
|
+
record_or_hash_or_array.map { |record| to_named_resource(record) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_named_resource(record)
|
24
|
+
if record.is_a?(resource_class)
|
25
|
+
return ActiveAdmin::Model.new(active_admin_config, record)
|
26
|
+
end
|
27
|
+
|
28
|
+
if record.is_a?(parent.class)
|
29
|
+
return ActiveAdmin::Model.new(active_admin_config.belongs_to_config.resource, record)
|
30
|
+
end
|
31
|
+
|
32
|
+
record
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -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
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'active_admin/resource_controller/action_builder'
|
2
2
|
require 'active_admin/resource_controller/data_access'
|
3
3
|
require 'active_admin/resource_controller/decorators'
|
4
|
+
require 'active_admin/resource_controller/polymorphic_routes'
|
4
5
|
require 'active_admin/resource_controller/scoping'
|
5
6
|
require 'active_admin/resource_controller/streaming'
|
6
7
|
require 'active_admin/resource_controller/sidebars'
|
@@ -18,6 +19,7 @@ module ActiveAdmin
|
|
18
19
|
include ActionBuilder
|
19
20
|
include Decorators
|
20
21
|
include DataAccess
|
22
|
+
include PolymorphicRoutes
|
21
23
|
include Scoping
|
22
24
|
include Streaming
|
23
25
|
include Sidebars
|
@@ -74,6 +74,8 @@ module ActiveAdmin
|
|
74
74
|
|
75
75
|
params.permit(*permitted_params, param_key => block ? instance_exec(&block) : args)
|
76
76
|
end
|
77
|
+
|
78
|
+
private :permitted_params
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
@@ -119,7 +121,7 @@ module ActiveAdmin
|
|
119
121
|
#
|
120
122
|
# ActiveAdmin.register Post do
|
121
123
|
# member_action :comments do
|
122
|
-
# @post = Post.find(params[:id]
|
124
|
+
# @post = Post.find(params[:id])
|
123
125
|
# @comments = @post.comments
|
124
126
|
# end
|
125
127
|
# end
|
@@ -131,12 +133,14 @@ module ActiveAdmin
|
|
131
133
|
# action.
|
132
134
|
#
|
133
135
|
def action(set, name, options = {}, &block)
|
136
|
+
warn "Warning: method `#{name}` already defined in #{controller.name}" if controller.method_defined?(name)
|
137
|
+
|
134
138
|
set << ControllerAction.new(name, options)
|
135
139
|
title = options.delete(:title)
|
136
140
|
|
137
141
|
controller do
|
138
142
|
before_action(only: [name]) { @page_title = title } if title
|
139
|
-
define_method(name, &block || Proc.new{})
|
143
|
+
define_method(name, &block || Proc.new {})
|
140
144
|
end
|
141
145
|
end
|
142
146
|
|
@@ -185,7 +189,7 @@ module ActiveAdmin
|
|
185
189
|
delegate :before_save, :after_save, to: :controller
|
186
190
|
delegate :before_destroy, :after_destroy, to: :controller
|
187
191
|
|
188
|
-
# This code defines both *_filter and *_action for Rails
|
192
|
+
# This code defines both *_filter and *_action for Rails 5.0 and *_action for Rails >= 5.1
|
189
193
|
phases = [
|
190
194
|
:before, :skip_before,
|
191
195
|
:after, :skip_after,
|