activeadmin 1.1.0 → 2.5.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 +492 -108
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +117 -49
- data/README.md +73 -19
- data/app/assets/javascripts/active_admin/base.js +509 -0
- data/app/assets/stylesheets/active_admin/_base.scss +29 -29
- data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
- data/app/assets/stylesheets/active_admin/_header.scss +3 -5
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- 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/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +5 -0
- data/app/assets/stylesheets/active_admin/print.scss +2 -2
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/javascript/active_admin/base.js +19 -0
- data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +95 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- 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/az.yml +138 -0
- 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 +36 -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 +249 -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 +53 -160
- 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/date_range_input.rb +4 -4
- 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 +18 -4
- 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 +37 -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 +4 -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 +4 -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 +31 -54
- data/lib/active_admin/views/pages/index.rb +1 -0
- 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 +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 +115 -527
- 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/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js.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/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +0 -0
- /data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +0 -0
@@ -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
|
|
@@ -69,9 +70,10 @@ module ActiveAdmin
|
|
69
70
|
def initialize(namespace, resource_class, options = {})
|
70
71
|
@namespace = namespace
|
71
72
|
@resource_class_name = "::#{resource_class.name}"
|
72
|
-
@options
|
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,37 @@
|
|
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
|
+
belongs_to_resource = active_admin_config.belongs_to_config.try(:resource)
|
29
|
+
if belongs_to_resource && record.is_a?(belongs_to_resource.resource_class)
|
30
|
+
return ActiveAdmin::Model.new(belongs_to_resource, record)
|
31
|
+
end
|
32
|
+
|
33
|
+
record
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
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,
|
data/lib/active_admin/router.rb
CHANGED
@@ -1,108 +1,114 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
+
# @private
|
2
3
|
class Router
|
3
|
-
|
4
|
-
|
4
|
+
attr_reader :namespaces, :router
|
5
|
+
|
6
|
+
def initialize(router:, namespaces:)
|
7
|
+
@router = router
|
8
|
+
@namespaces = namespaces
|
5
9
|
end
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
#
|
11
|
-
# Application.routes.draw do |map|
|
12
|
-
# ActiveAdmin.routes(self)
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
def apply(router)
|
16
|
-
define_root_routes router
|
17
|
-
define_resource_routes router
|
11
|
+
def apply
|
12
|
+
define_root_routes
|
13
|
+
define_resources_routes
|
18
14
|
end
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
16
|
+
private
|
17
|
+
|
18
|
+
def define_root_routes
|
19
|
+
namespaces.each do |namespace|
|
20
|
+
if namespace.root?
|
21
|
+
router.root namespace.root_to_options.merge(to: namespace.root_to)
|
22
|
+
else
|
23
|
+
router.namespace namespace.name, namespace.route_options.dup do
|
24
|
+
router.root namespace.root_to_options.merge(to: namespace.root_to, as: :root)
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
32
28
|
end
|
33
29
|
|
34
30
|
# Defines the routes for each resource
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
# Add in the parent if it exists
|
42
|
-
if config.belongs_to?
|
43
|
-
belongs_to = routes
|
44
|
-
routes = Proc.new do
|
45
|
-
# If it's optional, make the normal resource routes
|
46
|
-
instance_exec &belongs_to if config.belongs_to_config.optional?
|
47
|
-
|
48
|
-
# Make the nested belongs_to routes
|
49
|
-
# :only is set to nothing so that we don't clobber any existing routes on the resource
|
50
|
-
resources config.belongs_to_config.target.resource_name.plural, only: [] do
|
51
|
-
instance_exec &belongs_to
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
31
|
+
def define_resources_routes
|
32
|
+
resources = namespaces.flat_map { |n| n.resources.values }
|
33
|
+
resources.each do |config|
|
34
|
+
define_resource_routes(config)
|
35
|
+
end
|
36
|
+
end
|
55
37
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
38
|
+
def define_resource_routes(config)
|
39
|
+
if config.namespace.root?
|
40
|
+
define_routes(config)
|
41
|
+
else
|
42
|
+
# Add on the namespace if required
|
43
|
+
define_namespace(config)
|
44
|
+
end
|
45
|
+
end
|
65
46
|
|
66
|
-
|
67
|
-
|
47
|
+
def define_routes(config)
|
48
|
+
if config.belongs_to?
|
49
|
+
define_belongs_to_routes(config)
|
50
|
+
else
|
51
|
+
page_or_resource_routes(config)
|
68
52
|
end
|
69
53
|
end
|
70
54
|
|
55
|
+
def page_or_resource_routes(config)
|
56
|
+
config.is_a?(Page) ? page_routes(config) : resource_routes(config)
|
57
|
+
end
|
58
|
+
|
71
59
|
def resource_routes(config)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
resources config.resource_name.route_key, only: config.defined_actions do
|
84
|
-
member do
|
85
|
-
config.member_actions.each &build_action
|
86
|
-
end
|
87
|
-
|
88
|
-
collection do
|
89
|
-
config.collection_actions.each &build_action
|
90
|
-
post :batch_action if config.batch_actions_enabled?
|
91
|
-
end
|
92
|
-
end
|
93
|
-
when ::ActiveAdmin::Page
|
94
|
-
page = config.underscored_resource_name
|
95
|
-
get "/#{page}" => "#{page}#index"
|
96
|
-
config.page_actions.each do |action|
|
97
|
-
Array.wrap(action.http_verb).each do |verb|
|
98
|
-
build_route.call verb, "/#{page}/#{action.name}" => "#{page}##{action.name}"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
else
|
102
|
-
raise "Unsupported config class: #{config.class}"
|
60
|
+
router.resources config.resource_name.route_key, only: config.defined_actions do
|
61
|
+
define_actions(config)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def page_routes(config)
|
66
|
+
page = config.underscored_resource_name
|
67
|
+
router.get "/#{page}" => "#{page}#index"
|
68
|
+
config.page_actions.each do |action|
|
69
|
+
Array.wrap(action.http_verb).each do |verb|
|
70
|
+
build_route(verb, "/#{page}/#{action.name}" => "#{page}##{action.name}")
|
103
71
|
end
|
104
72
|
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Defines member and collection actions
|
76
|
+
def define_actions(config)
|
77
|
+
router.member do
|
78
|
+
config.member_actions.each { |action| build_action(action) }
|
79
|
+
end
|
80
|
+
|
81
|
+
router.collection do
|
82
|
+
config.collection_actions.each { |action| build_action(action) }
|
83
|
+
router.post :batch_action if config.batch_actions_enabled?
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Deals with +ControllerAction+ instances
|
88
|
+
# Builds one route for each HTTP verb passed in
|
89
|
+
def build_action(action)
|
90
|
+
build_route(action.http_verb, action.name)
|
91
|
+
end
|
92
|
+
|
93
|
+
def build_route(verbs, *args)
|
94
|
+
Array.wrap(verbs).each { |verb| router.send(verb, *args) }
|
95
|
+
end
|
96
|
+
|
97
|
+
def define_belongs_to_routes(config)
|
98
|
+
# If it's optional, make the normal resource routes
|
99
|
+
page_or_resource_routes(config) if config.belongs_to_config.optional?
|
100
|
+
|
101
|
+
# Make the nested belongs_to routes
|
102
|
+
# :only is set to nothing so that we don't clobber any existing routes on the resource
|
103
|
+
router.resources config.belongs_to_config.target.resource_name.plural, only: [] do
|
104
|
+
page_or_resource_routes(config)
|
105
|
+
end
|
106
|
+
end
|
105
107
|
|
108
|
+
def define_namespace(config)
|
109
|
+
router.namespace config.namespace.name, config.namespace.route_options.dup do
|
110
|
+
define_routes(config)
|
111
|
+
end
|
106
112
|
end
|
107
113
|
end
|
108
114
|
end
|
data/lib/active_admin/scope.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
class Scope
|
3
3
|
|
4
|
-
attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block
|
4
|
+
attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block, :group
|
5
5
|
|
6
6
|
# Create a Scope
|
7
7
|
#
|
@@ -24,24 +24,32 @@ module ActiveAdmin
|
|
24
24
|
# Scope.new ->{Date.today.strftime '%A'}, :published_today
|
25
25
|
# # => Scope with dynamic title using the :published_today scope method
|
26
26
|
#
|
27
|
+
# Scope.new :published, nil, group: :status
|
28
|
+
# # => Scope with the group :status
|
29
|
+
#
|
27
30
|
def initialize(name, method = nil, options = {}, &block)
|
28
|
-
@name
|
31
|
+
@name = name
|
32
|
+
@scope_method = method.try(:to_sym)
|
29
33
|
|
30
34
|
if name.is_a? Proc
|
31
35
|
raise "A string/symbol is required as the second argument if your label is a proc." unless method
|
32
|
-
@id =
|
36
|
+
@id = method.to_s.parameterize(separator: "_")
|
33
37
|
else
|
34
38
|
@scope_method ||= name.to_sym
|
35
|
-
@id =
|
39
|
+
@id = name.to_s.parameterize(separator: "_")
|
36
40
|
end
|
37
41
|
|
38
|
-
@scope_method
|
39
|
-
|
42
|
+
@scope_method = nil if @scope_method == :all
|
43
|
+
if block_given?
|
44
|
+
@scope_method = nil
|
45
|
+
@scope_block = block
|
46
|
+
end
|
40
47
|
|
41
48
|
@localizer = options[:localizer]
|
42
49
|
@show_count = options.fetch(:show_count, true)
|
43
|
-
@display_if_block = options[:if] || proc{ true }
|
44
|
-
@default_block = options[:default] || proc{ false }
|
50
|
+
@display_if_block = options[:if] || proc { true }
|
51
|
+
@default_block = options[:default] || proc { false }
|
52
|
+
@group = options[:group].try(:to_sym)
|
45
53
|
end
|
46
54
|
|
47
55
|
def name
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
class SettingsNode
|
4
|
+
class << self
|
5
|
+
# Never instantiated. Variables are stored in the singleton_class.
|
6
|
+
private_class_method :new
|
7
|
+
|
8
|
+
# @return anonymous class with same accessors as the superclass.
|
9
|
+
def build(superclass = self)
|
10
|
+
Class.new(superclass)
|
11
|
+
end
|
12
|
+
|
13
|
+
def register(name, value)
|
14
|
+
class_attribute name
|
15
|
+
send "#{name}=", value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/active_admin/version.rb
CHANGED