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
@@ -13,7 +13,6 @@ end
|
|
13
13
|
|
14
14
|
module ActiveAdmin
|
15
15
|
class FormBuilder < ::Formtastic::FormBuilder
|
16
|
-
include MethodOrProcHelper
|
17
16
|
|
18
17
|
self.input_namespaces = [::Object, ::ActiveAdmin::Inputs, ::Formtastic::Inputs]
|
19
18
|
|
@@ -21,7 +20,7 @@ module ActiveAdmin
|
|
21
20
|
self.input_class_finder = ::Formtastic::InputClassFinder
|
22
21
|
self.action_class_finder = ::Formtastic::ActionClassFinder
|
23
22
|
|
24
|
-
def cancel_link(url = {action: "index"}, html_options = {}, li_attrs = {})
|
23
|
+
def cancel_link(url = { action: "index" }, html_options = {}, li_attrs = {})
|
25
24
|
li_attrs[:class] ||= "cancel"
|
26
25
|
li_content = template.link_to I18n.t('active_admin.cancel'), url, html_options
|
27
26
|
template.content_tag(:li, li_content, li_attrs)
|
@@ -29,119 +28,155 @@ module ActiveAdmin
|
|
29
28
|
|
30
29
|
attr_accessor :already_in_an_inputs_block
|
31
30
|
|
32
|
-
def
|
33
|
-
|
34
|
-
human(count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT)
|
31
|
+
def has_many(assoc, options = {}, &block)
|
32
|
+
HasManyBuilder.new(self, assoc, options).render(&block)
|
35
33
|
end
|
34
|
+
end
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
36
|
+
# Decorates a FormBuilder with the additional attributes and methods
|
37
|
+
# to build a has_many block. Nested has_many blocks are handled by
|
38
|
+
# nested decorators.
|
39
|
+
class HasManyBuilder < SimpleDelegator
|
40
|
+
attr_reader :assoc
|
41
|
+
attr_reader :options
|
42
|
+
attr_reader :heading, :sortable_column, :sortable_start
|
43
|
+
attr_reader :new_record, :destroy_option
|
44
|
+
|
45
|
+
def initialize(has_many_form, assoc, options)
|
46
|
+
super has_many_form
|
47
|
+
@assoc = assoc
|
48
|
+
@options = extract_custom_settings!(options.dup)
|
49
|
+
@options.reverse_merge!(for: assoc)
|
50
|
+
@options[:class] = [options[:class], "inputs has_many_fields"].compact.join(' ')
|
45
51
|
|
46
52
|
if sortable_column
|
47
|
-
options[:for] = [assoc, sorted_children(
|
53
|
+
@options[:for] = [assoc, sorted_children(sortable_column)]
|
48
54
|
end
|
55
|
+
end
|
49
56
|
|
57
|
+
def render(&block)
|
50
58
|
html = "".html_safe
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
59
|
+
html << template.content_tag(:h3) { heading } if heading.present?
|
60
|
+
html << template.capture { content_has_many(&block) }
|
61
|
+
html = wrap_div_or_li(html)
|
62
|
+
template.concat(html) if template.output_buffer
|
63
|
+
html
|
64
|
+
end
|
56
65
|
|
57
|
-
|
58
|
-
form_block = proc do |has_many_form|
|
59
|
-
index = parent_child_index options[:parent] if options[:parent]
|
60
|
-
block_contents = template.capture do
|
61
|
-
block.call(has_many_form, index)
|
62
|
-
end
|
63
|
-
template.concat(block_contents)
|
64
|
-
template.concat has_many_actions(has_many_form, builder_options, "".html_safe)
|
65
|
-
end
|
66
|
+
protected
|
66
67
|
|
67
|
-
|
68
|
-
|
68
|
+
# remove options that should not render as attributes
|
69
|
+
def extract_custom_settings!(options)
|
70
|
+
@heading = options.key?(:heading) ? options.delete(:heading) : default_heading
|
71
|
+
@sortable_column = options.delete(:sortable)
|
72
|
+
@sortable_start = options.delete(:sortable_start) || 0
|
73
|
+
@new_record = options.key?(:new_record) ? options.delete(:new_record) : true
|
74
|
+
@destroy_option = options.delete(:allow_destroy)
|
75
|
+
options
|
76
|
+
end
|
69
77
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
78
|
+
def default_heading
|
79
|
+
assoc_klass.model_name.
|
80
|
+
human(count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT)
|
81
|
+
end
|
82
|
+
|
83
|
+
def assoc_klass
|
84
|
+
@assoc_klass ||= __getobj__.object.class.reflect_on_association(assoc).klass
|
85
|
+
end
|
86
|
+
|
87
|
+
def content_has_many(&block)
|
88
|
+
form_block = proc do |form_builder|
|
89
|
+
render_has_many_form(form_builder, options[:parent], &block)
|
75
90
|
end
|
76
91
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
92
|
+
template.assigns[:has_many_block] = true
|
93
|
+
contents = without_wrapper { inputs(options, &form_block) }
|
94
|
+
contents ||= "".html_safe
|
95
|
+
|
96
|
+
js = new_record ? js_for_has_many(options[:class], &form_block) : ''
|
97
|
+
contents << js
|
81
98
|
end
|
82
99
|
|
83
|
-
|
100
|
+
# Renders the Formtastic inputs then appends ActiveAdmin delete and sort actions.
|
101
|
+
def render_has_many_form(form_builder, parent, &block)
|
102
|
+
index = parent && form_builder.send(:parent_child_index, parent)
|
103
|
+
template.concat template.capture { yield(form_builder, index) }
|
104
|
+
template.concat has_many_actions(form_builder, "".html_safe)
|
105
|
+
end
|
84
106
|
|
85
|
-
def has_many_actions(
|
86
|
-
if
|
107
|
+
def has_many_actions(form_builder, contents)
|
108
|
+
if form_builder.object.new_record?
|
87
109
|
contents << template.content_tag(:li) do
|
88
110
|
template.link_to I18n.t('active_admin.has_many_remove'), "#", class: 'button has_many_remove'
|
89
111
|
end
|
90
|
-
elsif
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
has_many_form.input(:_destroy, as: :boolean,
|
95
|
-
wrapper_html: {class: 'has_many_delete'},
|
112
|
+
elsif allow_destroy?(form_builder.object)
|
113
|
+
form_builder.input(:_destroy, as: :boolean,
|
114
|
+
wrapper_html: { class: 'has_many_delete' },
|
96
115
|
label: I18n.t('active_admin.has_many_delete'))
|
97
116
|
end
|
98
117
|
|
99
|
-
if
|
100
|
-
|
118
|
+
if sortable_column
|
119
|
+
form_builder.input sortable_column, as: :hidden
|
101
120
|
|
102
121
|
contents << template.content_tag(:li, class: 'handle') do
|
103
|
-
|
122
|
+
I18n.t('active_admin.move')
|
104
123
|
end
|
105
124
|
end
|
106
125
|
|
107
126
|
contents
|
108
127
|
end
|
109
128
|
|
110
|
-
def
|
111
|
-
|
129
|
+
def allow_destroy?(form_object)
|
130
|
+
!! case destroy_option
|
131
|
+
when Symbol, String
|
132
|
+
form_object.public_send destroy_option
|
133
|
+
when Proc
|
134
|
+
destroy_option.call form_object
|
135
|
+
else
|
136
|
+
destroy_option
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def sorted_children(column)
|
141
|
+
__getobj__.object.public_send(assoc).sort_by do |o|
|
112
142
|
attribute = o.public_send column
|
113
143
|
[attribute.nil? ? Float::INFINITY : attribute, o.id || Float::INFINITY]
|
114
144
|
end
|
115
145
|
end
|
116
146
|
|
117
|
-
private
|
118
|
-
|
119
147
|
def without_wrapper
|
120
|
-
is_being_wrapped =
|
121
|
-
|
148
|
+
is_being_wrapped = already_in_an_inputs_block
|
149
|
+
self.already_in_an_inputs_block = false
|
122
150
|
|
123
151
|
html = yield
|
124
152
|
|
125
|
-
|
153
|
+
self.already_in_an_inputs_block = is_being_wrapped
|
126
154
|
html
|
127
155
|
end
|
128
156
|
|
129
157
|
# Capture the ADD JS
|
130
|
-
def js_for_has_many(
|
131
|
-
|
132
|
-
assoc_name = assoc_reflection.klass.model_name
|
158
|
+
def js_for_has_many(class_string, &form_block)
|
159
|
+
assoc_name = assoc_klass.model_name
|
133
160
|
placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.gsub(/\//, '_')}_RECORD"
|
134
161
|
opts = {
|
135
|
-
for: [assoc,
|
162
|
+
for: [assoc, assoc_klass.new],
|
136
163
|
class: class_string,
|
137
164
|
for_options: { child_index: placeholder }
|
138
165
|
}
|
139
|
-
html = template.capture{ inputs_for_nested_attributes opts, &form_block }
|
166
|
+
html = template.capture { __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
|
140
167
|
text = new_record.is_a?(String) ? new_record : I18n.t('active_admin.has_many_new', model: assoc_name.human)
|
141
168
|
|
142
169
|
template.link_to text, '#', class: "button has_many_add", data: {
|
143
170
|
html: CGI.escapeHTML(html).html_safe, placeholder: placeholder
|
144
171
|
}
|
145
172
|
end
|
173
|
+
|
174
|
+
def wrap_div_or_li(html)
|
175
|
+
template.content_tag(already_in_an_inputs_block ? :li : :div,
|
176
|
+
html,
|
177
|
+
class: "has_many_container #{assoc}",
|
178
|
+
'data-sortable' => sortable_column,
|
179
|
+
'data-sortable-start' => sortable_start)
|
180
|
+
end
|
146
181
|
end
|
147
182
|
end
|
@@ -9,8 +9,16 @@ module ActiveAdmin
|
|
9
9
|
@class_name.constantize.new.attributes.keys
|
10
10
|
end
|
11
11
|
|
12
|
+
def assignable_attributes
|
13
|
+
attributes - %w(id created_at updated_at)
|
14
|
+
end
|
15
|
+
|
16
|
+
def permit_params
|
17
|
+
assignable_attributes.map { |a| a.to_sym.inspect }.join(', ')
|
18
|
+
end
|
19
|
+
|
12
20
|
def rows
|
13
|
-
attributes.map { |a| row(a) }.join("\n")
|
21
|
+
attributes.map { |a| row(a) }.join("\n ")
|
14
22
|
end
|
15
23
|
|
16
24
|
def row(name)
|
@@ -18,7 +26,7 @@ module ActiveAdmin
|
|
18
26
|
end
|
19
27
|
|
20
28
|
def columns
|
21
|
-
attributes.map { |a| column(a) }.join("\n")
|
29
|
+
attributes.map { |a| column(a) }.join("\n ")
|
22
30
|
end
|
23
31
|
|
24
32
|
def column(name)
|
@@ -26,7 +34,7 @@ module ActiveAdmin
|
|
26
34
|
end
|
27
35
|
|
28
36
|
def filters
|
29
|
-
attributes.map { |a| filter(a) }.join("\n")
|
37
|
+
attributes.map { |a| filter(a) }.join("\n ")
|
30
38
|
end
|
31
39
|
|
32
40
|
def filter(name)
|
@@ -34,7 +42,7 @@ module ActiveAdmin
|
|
34
42
|
end
|
35
43
|
|
36
44
|
def form_inputs
|
37
|
-
|
45
|
+
assignable_attributes.map { |a| form_input(a) }.join("\n ")
|
38
46
|
end
|
39
47
|
|
40
48
|
def form_input(name)
|
@@ -9,10 +9,17 @@ module ActiveAdmin
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
# Can pass proc to filter label option
|
13
|
+
def label_from_options
|
14
|
+
res = super
|
15
|
+
res = res.call if res.is_a? Proc
|
16
|
+
res
|
17
|
+
end
|
18
|
+
|
12
19
|
private
|
13
20
|
def datepicker_options
|
14
21
|
options = self.options.fetch(:datepicker_options, {})
|
15
|
-
options = Hash[options.map{ |k, v| [k.to_s.camelcase(:lower), v] }]
|
22
|
+
options = Hash[options.map { |k, v| [k.to_s.camelcase(:lower), v] }]
|
16
23
|
{ datepicker_options: options }
|
17
24
|
end
|
18
25
|
end
|
@@ -57,8 +57,8 @@ module ActiveAdmin
|
|
57
57
|
|
58
58
|
def current_filter
|
59
59
|
@current_filter ||= begin
|
60
|
-
methods = filters.map{ |f| "#{method}_#{f}" }
|
61
|
-
methods.detect{ |m| @object.public_send m } || methods.first
|
60
|
+
methods = filters.map { |f| "#{method}_#{f}" }
|
61
|
+
methods.detect { |m| @object.public_send m } || methods.first
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -15,7 +15,7 @@ module ActiveAdmin
|
|
15
15
|
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
|
16
16
|
else
|
17
17
|
name = method.to_s
|
18
|
-
name.concat
|
18
|
+
name.concat "_#{reflection.association_primary_key}" if reflection_searchable?
|
19
19
|
name
|
20
20
|
end
|
21
21
|
end
|
@@ -48,6 +48,10 @@ module ActiveAdmin
|
|
48
48
|
klass.reorder("#{method} asc").distinct.pluck method
|
49
49
|
end
|
50
50
|
|
51
|
+
def reflection_searchable?
|
52
|
+
reflection && !reflection.polymorphic?
|
53
|
+
end
|
54
|
+
|
51
55
|
end
|
52
56
|
end
|
53
57
|
end
|
data/lib/active_admin/menu.rb
CHANGED
@@ -68,14 +68,8 @@ module ActiveAdmin
|
|
68
68
|
self == item || include?(item)
|
69
69
|
end
|
70
70
|
|
71
|
-
|
72
|
-
|
73
|
-
def items(context = nil)
|
74
|
-
@children.values.select{ |i| i.display?(context) }.sort do |a, b|
|
75
|
-
result = a.priority <=> b.priority
|
76
|
-
result = a.label(context) <=> b.label(context) if result == 0
|
77
|
-
result
|
78
|
-
end
|
71
|
+
def items
|
72
|
+
@children.values
|
79
73
|
end
|
80
74
|
|
81
75
|
attr_reader :children
|
@@ -1,9 +1,6 @@
|
|
1
|
-
require 'active_admin/view_helpers/method_or_proc_helper'
|
2
|
-
|
3
1
|
module ActiveAdmin
|
4
2
|
class MenuItem
|
5
3
|
include Menu::MenuNode
|
6
|
-
include MethodOrProcHelper
|
7
4
|
|
8
5
|
attr_reader :html_options, :parent, :priority
|
9
6
|
|
@@ -53,7 +50,7 @@ module ActiveAdmin
|
|
53
50
|
@url = options[:url] || '#'
|
54
51
|
@priority = options[:priority] || 10
|
55
52
|
@html_options = options[:html_options] || {}
|
56
|
-
@should_display = options[:if] || proc{true}
|
53
|
+
@should_display = options[:if] || proc { true }
|
57
54
|
@parent = options[:parent]
|
58
55
|
|
59
56
|
yield(self) if block_given? # Builder style syntax
|
@@ -63,35 +60,10 @@ module ActiveAdmin
|
|
63
60
|
@id ||= normalize_id @dirty_id
|
64
61
|
end
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
def url(context = nil)
|
71
|
-
render_in_context context, @url
|
72
|
-
end
|
63
|
+
attr_reader :label
|
64
|
+
attr_reader :url
|
73
65
|
|
74
66
|
# Don't display if the :if option passed says so
|
75
|
-
|
76
|
-
def display?(context = nil)
|
77
|
-
return false unless render_in_context(context, @should_display)
|
78
|
-
return false if !real_url?(context) && @children.any? && !items(context).any?
|
79
|
-
true
|
80
|
-
end
|
81
|
-
|
82
|
-
# Returns an array of the ancestry of this menu item.
|
83
|
-
# The first item is the immediate parent of the item.
|
84
|
-
def ancestors
|
85
|
-
parent ? [parent, parent.ancestors].flatten : []
|
86
|
-
end
|
87
|
-
|
88
|
-
private
|
89
|
-
|
90
|
-
# URL is not nil, empty, or '#'
|
91
|
-
def real_url?(context = nil)
|
92
|
-
url = url context
|
93
|
-
url.present? && url != '#'
|
94
|
-
end
|
95
|
-
|
67
|
+
attr_reader :should_display
|
96
68
|
end
|
97
69
|
end
|
@@ -25,6 +25,12 @@ module ActiveAdmin
|
|
25
25
|
# resource will be accessible from "/posts" and the controller will be PostsController.
|
26
26
|
#
|
27
27
|
class Namespace
|
28
|
+
class << self
|
29
|
+
def setting(name, default)
|
30
|
+
Deprecation.warn "This method does not do anything and will be removed."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
28
34
|
RegisterEvent = 'active_admin.namespace.register'.freeze
|
29
35
|
|
30
36
|
attr_reader :application, :resources, :menus
|
@@ -41,6 +47,18 @@ module ActiveAdmin
|
|
41
47
|
@name.to_sym
|
42
48
|
end
|
43
49
|
|
50
|
+
def settings
|
51
|
+
@settings ||= SettingsNode.build(application.namespace_settings)
|
52
|
+
end
|
53
|
+
|
54
|
+
def respond_to_missing?(method, include_private = false)
|
55
|
+
settings.respond_to?(method) || super
|
56
|
+
end
|
57
|
+
|
58
|
+
def method_missing(method, *args)
|
59
|
+
settings.respond_to?(method) ? settings.send(method, *args) : super
|
60
|
+
end
|
61
|
+
|
44
62
|
# Register a resource into this namespace. The preffered method to access this is to
|
45
63
|
# use the global registration ActiveAdmin.register which delegates to the proper
|
46
64
|
# namespace instance.
|
@@ -100,12 +118,6 @@ module ActiveAdmin
|
|
100
118
|
resources[klass]
|
101
119
|
end
|
102
120
|
|
103
|
-
# Override from ActiveAdmin::Settings to inherit default attributes
|
104
|
-
# from the application
|
105
|
-
def read_default_setting(name)
|
106
|
-
application.public_send name
|
107
|
-
end
|
108
|
-
|
109
121
|
def fetch_menu(name)
|
110
122
|
@menus.fetch(name)
|
111
123
|
end
|
@@ -138,8 +150,8 @@ module ActiveAdmin
|
|
138
150
|
if logout_link_path
|
139
151
|
html_options = html_options.reverse_merge(method: logout_link_method || :get)
|
140
152
|
menu.add id: 'logout', priority: priority, html_options: html_options,
|
141
|
-
label: ->{ I18n.t 'active_admin.logout' },
|
142
|
-
url: ->{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
153
|
+
label: -> { I18n.t 'active_admin.logout' },
|
154
|
+
url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
143
155
|
if: :current_active_admin_user?
|
144
156
|
end
|
145
157
|
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require 'active_admin/dynamic_settings_node'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
class NamespaceSettings < DynamicSettingsNode
|
5
|
+
# The default number of resources to display on index pages
|
6
|
+
register :default_per_page, 30
|
7
|
+
|
8
|
+
# The max number of resources to display on index pages and batch exports
|
9
|
+
register :max_per_page, 10_000
|
10
|
+
|
11
|
+
# The title which gets displayed in the main layout
|
12
|
+
register :site_title, "", :string_symbol_or_proc
|
13
|
+
|
14
|
+
# Set the site title link href (defaults to AA dashboard)
|
15
|
+
register :site_title_link, ""
|
16
|
+
|
17
|
+
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
18
|
+
register :site_title_image, "", :string_symbol_or_proc
|
19
|
+
|
20
|
+
# Add to the site head
|
21
|
+
register :head, "", :string_symbol_or_proc
|
22
|
+
|
23
|
+
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
24
|
+
register :footer, "", :string_symbol_or_proc
|
25
|
+
|
26
|
+
# Set a favicon
|
27
|
+
register :favicon, false
|
28
|
+
|
29
|
+
# Additional meta tags to place in head of logged in pages
|
30
|
+
register :meta_tags, {}
|
31
|
+
|
32
|
+
# Additional meta tags to place in head of logged out pages
|
33
|
+
register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
34
|
+
|
35
|
+
# The view factory to use to generate all the view classes. Take
|
36
|
+
# a look at ActiveAdmin::ViewFactory
|
37
|
+
register :view_factory, ActiveAdmin::ViewFactory.new
|
38
|
+
|
39
|
+
# The method to call in controllers to get the current user
|
40
|
+
register :current_user_method, false
|
41
|
+
|
42
|
+
# The method to call in the controllers to ensure that there
|
43
|
+
# is a currently authenticated admin user
|
44
|
+
register :authentication_method, false
|
45
|
+
|
46
|
+
# The path to log user's out with. If set to a symbol, we assume
|
47
|
+
# that it's a method to call which returns the path
|
48
|
+
register :logout_link_path, :destroy_admin_user_session_path
|
49
|
+
|
50
|
+
# The method to use when generating the link for user logout
|
51
|
+
register :logout_link_method, :get
|
52
|
+
|
53
|
+
# Whether the batch actions are enabled or not
|
54
|
+
register :batch_actions, false
|
55
|
+
|
56
|
+
# Whether filters are enabled
|
57
|
+
register :filters, true
|
58
|
+
|
59
|
+
# The namespace root
|
60
|
+
register :root_to, 'dashboard#index'
|
61
|
+
|
62
|
+
# Options that are passed to root_to
|
63
|
+
register :root_to_options, {}
|
64
|
+
|
65
|
+
# Options passed to the routes, i.e. { path: '/custom' }
|
66
|
+
register :route_options, {}
|
67
|
+
|
68
|
+
# Display breadcrumbs
|
69
|
+
register :breadcrumb, true
|
70
|
+
|
71
|
+
# Display create another checkbox on a new page
|
72
|
+
# @return [Boolean] (true)
|
73
|
+
register :create_another, false
|
74
|
+
|
75
|
+
# Default CSV options
|
76
|
+
register :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
77
|
+
|
78
|
+
# Default Download Links options
|
79
|
+
register :download_links, true
|
80
|
+
|
81
|
+
# The authorization adapter to use
|
82
|
+
register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
83
|
+
|
84
|
+
# A proc to be used when a user is not authorized to view the current resource
|
85
|
+
register :on_unauthorized_access, :rescue_active_admin_access_denied
|
86
|
+
|
87
|
+
# A regex to detect unsupported browser, set to false to disable
|
88
|
+
register :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
89
|
+
|
90
|
+
# Whether to display 'Current Filters' on search screen
|
91
|
+
register :current_filters, true
|
92
|
+
|
93
|
+
# class to handle ordering
|
94
|
+
register :order_clause, ActiveAdmin::OrderClause
|
95
|
+
|
96
|
+
# default show_count for scopes
|
97
|
+
register :scopes_show_count, true
|
98
|
+
|
99
|
+
# Request parameters that are permitted by default
|
100
|
+
register :permitted_params, [
|
101
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
102
|
+
]
|
103
|
+
|
104
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
105
|
+
register :flash_keys_to_except, ['timedout']
|
106
|
+
|
107
|
+
# Include association filters by default
|
108
|
+
register :include_default_association_filters, true
|
109
|
+
|
110
|
+
register :maximum_association_filter_arity, :unlimited
|
111
|
+
|
112
|
+
register :filter_columns_for_large_association, [
|
113
|
+
:display_name,
|
114
|
+
:full_name,
|
115
|
+
:name,
|
116
|
+
:username,
|
117
|
+
:login,
|
118
|
+
:title,
|
119
|
+
:email,
|
120
|
+
]
|
121
|
+
register :filter_method_for_large_association, '_starts_with'
|
122
|
+
end
|
123
|
+
end
|
@@ -3,7 +3,7 @@ module ActiveAdmin
|
|
3
3
|
attr_reader :field, :order, :active_admin_config
|
4
4
|
|
5
5
|
def initialize(active_admin_config, clause)
|
6
|
-
clause =~ /^([\w
|
6
|
+
clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
|
7
7
|
@column = $1
|
8
8
|
@op = $2
|
9
9
|
@order = $3
|
@@ -16,7 +16,7 @@ module ActiveAdmin
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def apply(chain)
|
19
|
-
chain.reorder(sql)
|
19
|
+
chain.reorder(Arel.sql sql)
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_sql
|
@@ -3,7 +3,7 @@ module ActiveAdmin
|
|
3
3
|
|
4
4
|
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
5
5
|
|
6
|
-
belongs_to :resource, polymorphic: true
|
6
|
+
belongs_to :resource, polymorphic: true, optional: true
|
7
7
|
belongs_to :author, polymorphic: true
|
8
8
|
|
9
9
|
validates_presence_of :body, :namespace, :resource
|
@@ -18,7 +18,7 @@ module ActiveAdmin
|
|
18
18
|
def self.find_for_resource_in_namespace(resource, namespace)
|
19
19
|
where(
|
20
20
|
resource_type: resource_type(resource),
|
21
|
-
resource_id: resource,
|
21
|
+
resource_id: resource.id,
|
22
22
|
namespace: namespace.to_s
|
23
23
|
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
24
24
|
end
|
@@ -11,10 +11,12 @@ module ActiveAdmin
|
|
11
11
|
attr_accessor :resource
|
12
12
|
|
13
13
|
def build(resource)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
15
|
+
@resource = resource
|
16
|
+
@comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
17
|
+
super(title, for: resource)
|
18
|
+
build_comments
|
19
|
+
end
|
18
20
|
end
|
19
21
|
|
20
22
|
protected
|
@@ -24,10 +26,18 @@ module ActiveAdmin
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def build_comments
|
27
|
-
@comments.any?
|
28
|
-
|
29
|
+
if @comments.any?
|
30
|
+
@comments.each(&method(:build_comment))
|
31
|
+
div page_entries_info(@comments).html_safe, class: 'pagination_information'
|
32
|
+
else
|
33
|
+
build_empty_message
|
34
|
+
end
|
35
|
+
|
29
36
|
text_node paginate @comments
|
30
|
-
|
37
|
+
|
38
|
+
if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
|
39
|
+
build_comment_form
|
40
|
+
end
|
31
41
|
end
|
32
42
|
|
33
43
|
def build_comment(comment)
|