activeadmin 1.0.0.pre4 → 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 +529 -52
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +129 -58
- data/README.md +80 -79
- 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/_base.scss +2 -2
- data/app/assets/stylesheets/active_admin/_forms.scss +19 -26
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
- data/app/assets/stylesheets/active_admin/components/_tables.scss +4 -1
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -2
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/print.scss +2 -3
- 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 +3 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +12 -6
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- 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 +4 -5
- data/config/locales/bg.yml +1 -3
- data/config/locales/bs.yml +1 -2
- data/config/locales/ca.yml +2 -4
- data/config/locales/cs.yml +1 -2
- data/config/locales/da.yml +45 -14
- data/config/locales/de-CH.yml +2 -3
- data/config/locales/de.yml +30 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +44 -3
- data/config/locales/en.yml +31 -5
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +5 -3
- data/config/locales/es.yml +32 -6
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +27 -5
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +5 -2
- data/config/locales/id.yml +2 -3
- data/config/locales/it.yml +15 -7
- data/config/locales/ja.yml +8 -3
- data/config/locales/ko.yml +1 -2
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +1 -2
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -7
- data/config/locales/nl.yml +13 -3
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +10 -3
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +5 -3
- data/config/locales/sk.yml +168 -0
- data/config/locales/sv-SE.yml +4 -3
- data/config/locales/tr.yml +10 -2
- data/config/locales/uk.yml +4 -3
- data/config/locales/vi.yml +48 -8
- data/config/locales/zh-CN.yml +38 -7
- data/config/locales/zh-TW.yml +2 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +19 -13
- data/docs/1-general-configuration.md +37 -4
- data/docs/10-custom-pages.md +47 -3
- data/docs/11-decorators.md +4 -0
- data/docs/12-arbre-components.md +73 -9
- data/docs/13-authorization-adapter.md +72 -35
- data/docs/14-gotchas.md +57 -19
- data/docs/2-resource-customization.md +64 -20
- data/docs/3-index-pages/custom-index.md +5 -1
- data/docs/3-index-pages/index-as-block.md +3 -5
- data/docs/3-index-pages/index-as-blog.md +4 -6
- data/docs/3-index-pages/index-as-grid.md +3 -5
- data/docs/3-index-pages/index-as-table.md +33 -12
- data/docs/3-index-pages.md +65 -9
- data/docs/4-csv-format.md +16 -0
- data/docs/5-forms.md +78 -17
- data/docs/6-show-pages.md +5 -29
- data/docs/7-sidebars.md +5 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +8 -4
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +248 -0
- data/docs/_config.yml +4 -0
- data/docs/_includes/footer.html +8 -0
- data/docs/_includes/google-analytics.html +16 -0
- data/docs/_includes/head.html +7 -0
- data/docs/_includes/toc.html +98 -0
- data/docs/_includes/top-menu.html +17 -0
- data/docs/_layouts/default.html +21 -0
- data/docs/documentation.md +60 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +226 -0
- data/docs/stylesheets/main.css +1205 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +50 -140
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +0 -3
- data/lib/active_admin/base_controller/authorization.rb +4 -7
- data/lib/active_admin/base_controller/menu.rb +10 -14
- data/lib/active_admin/base_controller.rb +8 -14
- data/lib/active_admin/batch_actions/controller.rb +3 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -13
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -1
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
- data/lib/active_admin/batch_actions/views/selection_cells.rb +6 -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 +15 -12
- data/lib/active_admin/dependency.rb +8 -76
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +3 -16
- 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 +5 -3
- data/lib/active_admin/filters/active.rb +13 -14
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/forms.rb +6 -4
- data/lib/active_admin/filters/formtastic_addons.rb +2 -2
- data/lib/active_admin/filters/resource_extension.rb +28 -43
- data/lib/active_admin/filters.rb +2 -0
- data/lib/active_admin/form_builder.rb +100 -59
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +12 -5
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/inputs/filters/date_range_input.rb +21 -8
- data/lib/active_admin/inputs/filters/select_input.rb +6 -3
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/menu.rb +6 -12
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +4 -32
- data/lib/active_admin/namespace.rb +36 -17
- data/lib/active_admin/namespace_settings.rb +123 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +3 -17
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -7
- data/lib/active_admin/orm/active_record/comments.rb +17 -11
- data/lib/active_admin/page.rb +23 -4
- data/lib/active_admin/page_controller.rb +2 -6
- data/lib/active_admin/page_dsl.rb +5 -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 +17 -5
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +10 -1
- data/lib/active_admin/resource/menu.rb +7 -4
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +52 -20
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +59 -7
- 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 +32 -27
- 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 +15 -0
- data/lib/active_admin/resource_dsl.rb +58 -24
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +20 -12
- 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/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +28 -16
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +13 -0
- data/lib/active_admin/view_helpers/fields_for.rb +1 -2
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +8 -1
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +43 -11
- data/lib/active_admin/views/components/attributes_table.rb +4 -4
- data/lib/active_admin/views/components/columns.rb +3 -3
- data/lib/active_admin/views/components/dropdown_menu.rb +4 -4
- data/lib/active_admin/views/components/index_list.rb +4 -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 +7 -11
- data/lib/active_admin/views/components/scopes.rb +14 -8
- 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 +11 -16
- data/lib/active_admin/views/components/table_for.rb +7 -16
- data/lib/active_admin/views/components/tabs.rb +15 -3
- data/lib/active_admin/views/footer.rb +14 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +2 -3
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +39 -13
- data/lib/active_admin/views/pages/base.rb +36 -57
- data/lib/active_admin/views/pages/form.rb +2 -3
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +8 -2
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +4 -4
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +11 -7
- 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/devise/devise_generator.rb +8 -5
- data/lib/generators/active_admin/install/install_generator.rb +7 -3
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +60 -4
- data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -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 → create_active_admin_comments.rb.erb} +2 -5
- 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 +46 -0
- data/lib/ransack_ext.rb +5 -5
- data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
- 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/ie.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
- data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +190 -539
- data/.gitignore +0 -49
- data/.hound.yml +0 -14
- data/.travis.yml +0 -46
- data/.yardopts +0 -8
- data/Gemfile +0 -75
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -31
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -9
- 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 -7
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -15
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -11
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
- 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 -31
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
- 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 -66
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -171
- data/features/comments/viewing_index.feature +0 -19
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -30
- data/features/edit_page.feature +0 -117
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -43
- data/features/index/batch_actions.feature +0 -196
- data/features/index/filters.feature +0 -161
- data/features/index/format_as_csv.feature +0 -203
- data/features/index/formats.feature +0 -66
- 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 -251
- data/features/index/page_title.feature +0 -42
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -34
- data/features/registering_pages.feature +0 -148
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -32
- data/features/root_to.feature +0 -17
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -59
- data/features/show/tabs.feature +0 -27
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -93
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -20
- 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/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 -12
- 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 -39
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -52
- data/features/step_definitions/i18n_steps.rb +0 -3
- data/features/step_definitions/index_scope_steps.rb +0 -21
- 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 -13
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/symbol_leak_steps.rb +0 -3
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -120
- data/features/step_definitions/user_steps.rb +0 -45
- data/features/step_definitions/web_steps.rb +0 -85
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -73
- data/features/support/env.rb +0 -162
- data/features/support/paths.rb +0 -71
- data/features/support/selectors.rb +0 -45
- data/features/symbol_leak.feature +0 -35
- data/features/users/logging_in.feature +0 -34
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/filters/humanized.rb +0 -68
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -45
- data/script/local +0 -53
- data/script/travis_cache +0 -107
- data/script/use_rails +0 -53
- 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_config.rb +0 -23
- data/spec/javascripts/support/jasmine_runner.rb +0 -32
- data/spec/rails_helper.rb +0 -169
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -22
- data/spec/requests/memory_spec.rb +0 -21
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/active_admin_request_helpers.rb +0 -27
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -158
- data/spec/support/rails_template_with_data.rb +0 -55
- data/spec/support/templates/admin/stores.rb +0 -9
- data/spec/support/templates/en.yml +0 -8
- 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 -45
- 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 -11
- data/spec/unit/abstract_view_factory_spec.rb +0 -79
- data/spec/unit/action_builder_spec.rb +0 -134
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -165
- data/spec/unit/asset_registration_spec.rb +0 -52
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -97
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -65
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -188
- 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 -303
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -96
- data/spec/unit/dsl_spec.rb +0 -122
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -434
- data/spec/unit/filters/humanized_spec.rb +0 -56
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -815
- data/spec/unit/generators/install_spec.rb +0 -24
- data/spec/unit/helpers/collection_spec.rb +0 -65
- data/spec/unit/helpers/scope_chain_spec.rb +0 -36
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -12
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -143
- 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 -73
- data/spec/unit/namespace/register_resource_spec.rb +0 -160
- data/spec/unit/namespace_spec.rb +0 -103
- 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 -78
- data/spec/unit/pretty_format_spec.rb +0 -77
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -65
- 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/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -77
- 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 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -38
- data/spec/unit/resource_controller_spec.rb +0 -269
- data/spec/unit/resource_registration_spec.rb +0 -56
- data/spec/unit/resource_spec.rb +0 -331
- data/spec/unit/routing_spec.rb +0 -185
- data/spec/unit/scope_spec.rb +0 -185
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -165
- 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 -25
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- 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 -189
- data/spec/unit/views/components/index_list_spec.rb +0 -35
- 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 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -249
- data/spec/unit/views/components/table_for_spec.rb +0 -434
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- 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 -51
- 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 -33
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/docs.rake +0 -37
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -91
- data/tasks/yard.rake +0 -9
@@ -1,3 +1,7 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/13-authorization-adapter.html
|
3
|
+
---
|
4
|
+
|
1
5
|
# Authorization Adapter
|
2
6
|
|
3
7
|
Active Admin offers the ability to define and use your own authorization
|
@@ -6,8 +10,8 @@ taken. By default, '#authorized?' returns true.
|
|
6
10
|
|
7
11
|
## Setting up your own AuthorizationAdapter
|
8
12
|
|
9
|
-
|
10
|
-
|
13
|
+
The following example shows how to set up and tie your authorization
|
14
|
+
adapter class to Active Admin:
|
11
15
|
|
12
16
|
```ruby
|
13
17
|
# app/models/only_authors_authorization.rb
|
@@ -37,7 +41,11 @@ application's `config/initializers/active_admin.rb` and add/modify the line:
|
|
37
41
|
config.authorization_adapter = "OnlyAuthorsAuthorization"
|
38
42
|
```
|
39
43
|
|
40
|
-
|
44
|
+
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
45
|
+
`#authorized?` method will be called.
|
46
|
+
|
47
|
+
Authorization adapters can be configured per ActiveAdmin namespace as well, for
|
48
|
+
example:
|
41
49
|
|
42
50
|
```ruby
|
43
51
|
ActiveAdmin.setup do |config|
|
@@ -50,9 +58,6 @@ ActiveAdmin.setup do |config|
|
|
50
58
|
end
|
51
59
|
```
|
52
60
|
|
53
|
-
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
54
|
-
`#authorized?` method will be called.
|
55
|
-
|
56
61
|
## Getting Access to the Current User
|
57
62
|
|
58
63
|
From within your authorization adapter, you can call the `#user` method to
|
@@ -70,9 +75,9 @@ end
|
|
70
75
|
|
71
76
|
## Scoping Collections in Authorization Adapters
|
72
77
|
|
73
|
-
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
74
|
-
for the adapter to scope the resource's collection. For
|
75
|
-
centralize the scoping:
|
78
|
+
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
79
|
+
(`#scope_collection`) for the adapter to scope the resource's collection. For
|
80
|
+
example, you may want to centralize the scoping:
|
76
81
|
|
77
82
|
```ruby
|
78
83
|
class OnlyMyAccount < ActiveAdmin::AuthorizationAdapter
|
@@ -101,7 +106,9 @@ class OnlyDashboard < ActiveAdmin::AuthorizationAdapter
|
|
101
106
|
def authorized?(action, subject = nil)
|
102
107
|
case subject
|
103
108
|
when ActiveAdmin::Page
|
104
|
-
action == :read &&
|
109
|
+
action == :read &&
|
110
|
+
subject.name == "Dashboard" &&
|
111
|
+
subject.namespace.name == :admin
|
105
112
|
else
|
106
113
|
false
|
107
114
|
end
|
@@ -113,24 +120,23 @@ end
|
|
113
120
|
|
114
121
|
By default Active Admin simplifies the controller actions into 4 actions:
|
115
122
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
+
* `:read` - This controls if the user can view the menu item as well as the
|
124
|
+
index and show screens.
|
125
|
+
* `:create` - This controls if the user can view the new screen and submit
|
126
|
+
the form to the create action.
|
127
|
+
* `:update` - This controls if the user can view the edit screen and submit
|
128
|
+
the form to the update action.
|
129
|
+
* `:destroy` - This controls if the user can delete a resource.
|
123
130
|
|
124
131
|
Each of these actions is available as a constant. Eg: `:read` is available as
|
125
132
|
`ActiveAdmin::Authorization::READ`.
|
126
133
|
|
127
|
-
|
128
134
|
## Checking for Authorization in Controllers and Views
|
129
135
|
|
130
136
|
Active Admin provides a helper method to check if the current user is
|
131
137
|
authorized to perform an action on a subject.
|
132
138
|
|
133
|
-
|
139
|
+
Use the `#authorized?(action, subject)` method to check.
|
134
140
|
|
135
141
|
```ruby
|
136
142
|
ActiveAdmin.register Post do
|
@@ -174,28 +180,28 @@ end
|
|
174
180
|
|
175
181
|
Sub-classing `ActiveAdmin::AuthorizationAdapter` is fairly low level. Many times
|
176
182
|
it's nicer to have a simpler DSL for managing authorization. Active Admin
|
177
|
-
provides an adapter out of the box for [
|
178
|
-
and [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
183
|
+
provides an adapter out of the box for [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
179
184
|
|
180
|
-
To use the CanCan adapter,
|
185
|
+
To use the CanCan adapter, update the configuration in the Active Admin
|
181
186
|
initializer:
|
182
187
|
|
183
188
|
```ruby
|
184
189
|
config.authorization_adapter = ActiveAdmin::CanCanAdapter
|
185
190
|
```
|
186
191
|
|
187
|
-
You can also specify a method to be called on unauthorized access. This is
|
188
|
-
in order to prevent a redirect loop that can happen if a user tries to
|
189
|
-
they don't have permissions for (see
|
192
|
+
You can also specify a method to be called on unauthorized access. This is
|
193
|
+
necessary in order to prevent a redirect loop that can happen if a user tries to
|
194
|
+
access a page they don't have permissions for (see
|
195
|
+
[#2081](https://github.com/activeadmin/activeadmin/issues/2081)).
|
190
196
|
|
191
197
|
```ruby
|
192
198
|
config.on_unauthorized_access = :access_denied
|
193
199
|
```
|
194
200
|
|
195
|
-
The method `access_denied` would be defined in `application_controller.rb`. Here
|
196
|
-
example that redirects the user from the page they don't have permission
|
197
|
-
access to a resource they have permission to access (organizations in this
|
198
|
-
also displays the error message in the browser:
|
201
|
+
The method `access_denied` would be defined in `application_controller.rb`. Here
|
202
|
+
is one example that redirects the user from the page they don't have permission
|
203
|
+
to access to a resource they have permission to access (organizations in this
|
204
|
+
case), and also displays the error message in the browser:
|
199
205
|
|
200
206
|
```ruby
|
201
207
|
class ApplicationController < ActionController::Base
|
@@ -214,7 +220,7 @@ changed from the initializer:
|
|
214
220
|
config.cancan_ability_class = "MyCustomAbility"
|
215
221
|
```
|
216
222
|
|
217
|
-
Now you can simply use
|
223
|
+
Now you can simply use CanCanCan the way that you would expect and
|
218
224
|
Active Admin will use it for authorization:
|
219
225
|
|
220
226
|
```ruby
|
@@ -226,23 +232,54 @@ class Ability
|
|
226
232
|
can :manage, Post
|
227
233
|
can :read, User
|
228
234
|
can :manage, User, id: user.id
|
229
|
-
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name:
|
235
|
+
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name: "admin"
|
230
236
|
end
|
231
237
|
|
232
238
|
end
|
233
239
|
```
|
234
240
|
|
235
|
-
To view more details about the API's, visit project pages of
|
241
|
+
To view more details about the API's, visit project pages of
|
242
|
+
[CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
236
243
|
|
237
244
|
## Using the Pundit Adapter
|
238
245
|
|
239
|
-
Active Admin provides an adapter out of the box
|
246
|
+
Active Admin also provides an adapter out of the box for
|
247
|
+
[Pundit](https://github.com/varvet/pundit).
|
240
248
|
|
241
|
-
To use the Pundit adapter,
|
249
|
+
To use the Pundit adapter, update the configuration in the Active Admin
|
242
250
|
initializer:
|
243
251
|
|
244
252
|
```ruby
|
245
253
|
config.authorization_adapter = ActiveAdmin::PunditAdapter
|
246
254
|
```
|
247
255
|
|
248
|
-
|
256
|
+
Once that's done, Active Admin will pick up your Pundit policies, and use
|
257
|
+
them for authorization. For more information about setting up Pundit, see
|
258
|
+
[their documentation](https://github.com/varvet/pundit#installation).
|
259
|
+
|
260
|
+
Pundit also has [verify_authorized and/or verify_policy_scoped
|
261
|
+
methods](https://github.com/varvet/pundit#ensuring-policies-and-scopes-are-used)
|
262
|
+
to enforce usage of `authorized` and `policy_scope`. This conflicts with Active
|
263
|
+
Admin's authorization architecture, so if you're using those features, you'll
|
264
|
+
want to disable them for Active Admin's controllers:
|
265
|
+
|
266
|
+
```ruby
|
267
|
+
class ApplicationController < ActionController::Base
|
268
|
+
include Pundit
|
269
|
+
after_action :verify_authorized, except: :index, unless: :active_admin_controller?
|
270
|
+
after_action :verify_policy_scoped, only: :index, unless: :active_admin_controller?
|
271
|
+
|
272
|
+
def active_admin_controller?
|
273
|
+
is_a?(ActiveAdmin::BaseController)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
```
|
277
|
+
|
278
|
+
If you want to use batch actions, ensure that `destroy_all?` method is defined
|
279
|
+
in your policy class. You can use this [template
|
280
|
+
policy](https://github.com/activeadmin/activeadmin/blob/master/spec/support/templates/policies/application_policy.rb)
|
281
|
+
in your application instead of default one generated by Pundit's
|
282
|
+
`rails g pundit:install` command.
|
283
|
+
|
284
|
+
In addition, there are [example policies](https://github.com/activeadmin/activeadmin/tree/master/spec/support/templates/policies/active_admin)
|
285
|
+
for restricting access to ActiveAdmin's pages and comments.
|
data/docs/14-gotchas.md
CHANGED
@@ -1,21 +1,29 @@
|
|
1
|
-
|
1
|
+
---
|
2
|
+
redirect_from: /docs/14-gotchas.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Gotchas
|
2
6
|
|
3
7
|
## Security
|
4
8
|
|
5
9
|
### Spreadsheet applications vulnerable to unescaped CSV data
|
6
10
|
|
7
|
-
If your CSV export includes untrusted data provided by your users, it's possible
|
11
|
+
If your CSV export includes untrusted data provided by your users, it's possible
|
12
|
+
that they could include an executable formula that could call arbitrary commands
|
13
|
+
on your computer. See
|
14
|
+
[#4256](https://github.com/activeadmin/activeadmin/issues/4256) for more
|
15
|
+
details.
|
8
16
|
|
9
17
|
## Session Commits & Asset Pipeline
|
10
18
|
|
11
|
-
When configuring the asset pipeline ensure that the asset prefix
|
12
|
-
(`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
|
13
|
-
(default namespace is `/admin`). If they are the same Sprockets will prevent the
|
14
|
-
session from being committed. Flash messages won't work and you will be unable to
|
19
|
+
When configuring the asset pipeline ensure that the asset prefix
|
20
|
+
(`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
|
21
|
+
(default namespace is `/admin`). If they are the same Sprockets will prevent the
|
22
|
+
session from being committed. Flash messages won't work and you will be unable to
|
15
23
|
use the session for storing anything.
|
16
24
|
|
17
|
-
For more information see the following
|
18
|
-
|
25
|
+
For more information see [the following
|
26
|
+
post](http://www.intridea.com/blog/2013/3/20/rails-assets-prefix-may-disable-your-session).
|
19
27
|
|
20
28
|
## Helpers
|
21
29
|
|
@@ -24,13 +32,14 @@ find a solution.
|
|
24
32
|
|
25
33
|
### Helpers are not reloading in development
|
26
34
|
|
27
|
-
This is a known and still open
|
28
|
-
the only way is
|
35
|
+
This is a known and still open
|
36
|
+
[issue](https://github.com/activeadmin/activeadmin/issues/697) the only way is
|
37
|
+
to restart your server each time you change a helper.
|
29
38
|
|
30
39
|
### Helper maybe not included by default
|
31
40
|
|
32
|
-
If you use `config.action_controller.include_all_helpers = false` in your
|
33
|
-
you need to include it by hand.
|
41
|
+
If you use `config.action_controller.include_all_helpers = false` in your
|
42
|
+
application config, you need to include it by hand.
|
34
43
|
|
35
44
|
#### Solutions
|
36
45
|
|
@@ -59,23 +68,27 @@ end
|
|
59
68
|
|
60
69
|
## CSS
|
61
70
|
|
62
|
-
In order to avoid the override of your application style with the Active Admin
|
63
|
-
|
64
|
-
|
71
|
+
In order to avoid the override of your application style with the Active Admin
|
72
|
+
one, you can do one of these things:
|
73
|
+
|
74
|
+
* You can properly move the generated file `active_admin.scss` from
|
75
|
+
`app/assets/stylesheets` to `vendor/assets/stylesheets`.
|
76
|
+
* You can remove all `require_tree` commands from your root level css files,
|
77
|
+
where the `active_admin.scss` is in the tree.
|
65
78
|
|
66
79
|
## Conflicts
|
67
80
|
|
68
81
|
### With gems that provides a `search` class method on a model
|
69
82
|
|
70
|
-
If a gem defines a `search` class method on a model, this can result in conflicts
|
83
|
+
If a gem defines a `search` class method on a model, this can result in conflicts
|
71
84
|
with the same method provided by `ransack` (a dependency of ActiveAdmin).
|
72
85
|
|
73
|
-
Each of this conflicts need to solved is a different way. Some solutions are
|
86
|
+
Each of this conflicts need to solved is a different way. Some solutions are
|
74
87
|
listed below.
|
75
88
|
|
76
89
|
#### `tire`, `retire` and `elasticsearch-rails`
|
77
90
|
|
78
|
-
This conflict can be solved, by using explicitly the `search` method of `tire`,
|
91
|
+
This conflict can be solved, by using explicitly the `search` method of `tire`,
|
79
92
|
`retire` or `elasticsearch-rails`:
|
80
93
|
|
81
94
|
##### For `tire` and `retire`
|
@@ -95,6 +108,31 @@ YourModel.__elasticsearch__.search
|
|
95
108
|
```ruby
|
96
109
|
YourModel.solr_search
|
97
110
|
```
|
111
|
+
|
112
|
+
### Rails 5 scaffold generators
|
113
|
+
|
114
|
+
Active Admin requires the `inherited_resources` gem which may break scaffolding
|
115
|
+
under Rails 5 as it replaces the default scaffold generator. The solution is to
|
116
|
+
configure the default controller in `config/application.rb` as outlined in
|
117
|
+
[activeadmin/inherited_resources#195](https://github.com/activeadmin/inherited_resources/issues/195)
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
module SampleApp
|
121
|
+
class Application < Rails::Application
|
122
|
+
...
|
123
|
+
config.app_generators.scaffold_controller = :scaffold_controller
|
124
|
+
...
|
125
|
+
end
|
126
|
+
end
|
127
|
+
```
|
128
|
+
|
98
129
|
## Authentication & Application Controller
|
99
130
|
|
100
|
-
The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
|
131
|
+
The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
|
132
|
+
authentication method(s) specified in the `ApplicationController` callbacks will
|
133
|
+
be called instead of the authentication method in the active admin config file.
|
134
|
+
For example, if the ApplicationController has a callback `before_action
|
135
|
+
:custom_authentication_method` and the config file's authentication method is
|
136
|
+
`config.authentication_method = :authenticate_active_admin_user`, then
|
137
|
+
`custom_authentication_method` will be called instead of
|
138
|
+
`authenticate_active_admin_user`.
|
@@ -1,3 +1,7 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/2-resource-customization.html
|
3
|
+
---
|
4
|
+
|
1
5
|
# Working with Resources
|
2
6
|
|
3
7
|
Every Active Admin resource corresponds to a Rails model. So before creating a
|
@@ -6,7 +10,7 @@ resource you must first create a Rails model for it.
|
|
6
10
|
## Create a Resource
|
7
11
|
|
8
12
|
The basic command for creating a resource is `rails g active_admin:resource Post`.
|
9
|
-
The generator will produce an empty `app/admin/
|
13
|
+
The generator will produce an empty `app/admin/posts.rb` file like so:
|
10
14
|
|
11
15
|
```ruby
|
12
16
|
ActiveAdmin.register Post do
|
@@ -16,9 +20,6 @@ end
|
|
16
20
|
|
17
21
|
## Setting up Strong Parameters
|
18
22
|
|
19
|
-
Rails 4 replaces `attr_accessible` with [Strong Parameters](https://github.com/rails/strong_parameters),
|
20
|
-
which moves attribute whitelisting from the model to the controller.
|
21
|
-
|
22
23
|
Use the `permit_params` method to define which attributes may be changed:
|
23
24
|
|
24
25
|
```ruby
|
@@ -27,8 +28,8 @@ ActiveAdmin.register Post do
|
|
27
28
|
end
|
28
29
|
```
|
29
30
|
|
30
|
-
Any form field that sends multiple values (such as a HABTM association, or an
|
31
|
-
needs to pass an empty array to `permit_params`:
|
31
|
+
Any form field that sends multiple values (such as a HABTM association, or an
|
32
|
+
array attribute) needs to pass an empty array to `permit_params`:
|
32
33
|
|
33
34
|
If your HABTM is `roles`, you should permit `role_ids: []`
|
34
35
|
|
@@ -65,7 +66,17 @@ ActiveAdmin.register Post do
|
|
65
66
|
end
|
66
67
|
```
|
67
68
|
|
68
|
-
|
69
|
+
If your resource is nested, declare `permit_params` after `belongs_to`:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
ActiveAdmin.register Post do
|
73
|
+
belongs_to :user
|
74
|
+
permit_params :title, :content, :publisher_id
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
The `permit_params` call creates a method called `permitted_params`. You should
|
79
|
+
use this method when overriding `create` or `update` actions:
|
69
80
|
|
70
81
|
```ruby
|
71
82
|
ActiveAdmin.register Post do
|
@@ -94,6 +105,26 @@ ActiveAdmin.register Post do
|
|
94
105
|
end
|
95
106
|
```
|
96
107
|
|
108
|
+
## Renaming Action Items
|
109
|
+
|
110
|
+
You can use translations to override labels and page titles for actions such as
|
111
|
+
new, edit, and destroy by providing a resource specific translation. For
|
112
|
+
example, to change 'New Offer' to 'Make an Offer' add the following in
|
113
|
+
config/locales/[en].yml:
|
114
|
+
|
115
|
+
```yaml
|
116
|
+
en:
|
117
|
+
active_admin:
|
118
|
+
resources:
|
119
|
+
offer: # Registered resource
|
120
|
+
new_model: 'Make an Offer' # new action item
|
121
|
+
edit_model: 'Change Offer' # edit action item
|
122
|
+
delete_model: 'Cancel Offer' # delete action item
|
123
|
+
```
|
124
|
+
|
125
|
+
See the [default en.yml](/config/locales/en.yml) locale file for
|
126
|
+
existing translations and examples.
|
127
|
+
|
97
128
|
## Rename the Resource
|
98
129
|
|
99
130
|
By default, any references to the resource (menu, routes, buttons, etc) in the
|
@@ -172,6 +203,7 @@ end
|
|
172
203
|
### Conditionally Showing / Hiding Menu Items
|
173
204
|
|
174
205
|
Menu items can be shown or hidden at runtime using the `:if` option.
|
206
|
+
|
175
207
|
```ruby
|
176
208
|
ActiveAdmin.register Post do
|
177
209
|
menu if: proc{ current_user.can_edit_posts? }
|
@@ -246,9 +278,15 @@ config.namespace :admin do |admin|
|
|
246
278
|
menu.add label: "The Application", url: "/", priority: 0
|
247
279
|
|
248
280
|
menu.add label: "Sites" do |sites|
|
249
|
-
sites.add label: "Google",
|
250
|
-
|
251
|
-
|
281
|
+
sites.add label: "Google",
|
282
|
+
url: "http://google.com",
|
283
|
+
html_options: { target: :blank }
|
284
|
+
|
285
|
+
sites.add label: "Facebook",
|
286
|
+
url: "http://facebook.com"
|
287
|
+
|
288
|
+
sites.add label: "Github",
|
289
|
+
url: "http://github.com"
|
252
290
|
end
|
253
291
|
end
|
254
292
|
end
|
@@ -287,7 +325,8 @@ end
|
|
287
325
|
|
288
326
|
## Eager loading
|
289
327
|
|
290
|
-
A common way to increase page performance is to
|
328
|
+
A common way to increase page performance is to eliminate N+1 queries by eager
|
329
|
+
loading associations:
|
291
330
|
|
292
331
|
```ruby
|
293
332
|
ActiveAdmin.register Post do
|
@@ -297,10 +336,13 @@ end
|
|
297
336
|
|
298
337
|
## Customizing resource retrieval
|
299
338
|
|
300
|
-
Our controllers are built on [Inherited
|
301
|
-
|
339
|
+
Our controllers are built on [Inherited
|
340
|
+
Resources](https://github.com/activeadmin/inherited_resources), so you can use
|
341
|
+
[all of its
|
342
|
+
features](https://github.com/activeadmin/inherited_resources#overwriting-defaults).
|
302
343
|
|
303
|
-
If you need to customize the collection properties, you can overwrite the
|
344
|
+
If you need to customize the collection properties, you can overwrite the
|
345
|
+
`scoped_collection` method.
|
304
346
|
|
305
347
|
```ruby
|
306
348
|
ActiveAdmin.register Post do
|
@@ -312,8 +354,9 @@ ActiveAdmin.register Post do
|
|
312
354
|
end
|
313
355
|
```
|
314
356
|
|
315
|
-
If you need to completely replace the record retrieving code (e.g., you have a
|
316
|
-
`to_param` implementation in your models), override the `
|
357
|
+
If you need to completely replace the record retrieving code (e.g., you have a
|
358
|
+
custom `to_param` implementation in your models), override the `find_resource` method
|
359
|
+
on the controller:
|
317
360
|
|
318
361
|
```ruby
|
319
362
|
ActiveAdmin.register Post do
|
@@ -325,8 +368,9 @@ ActiveAdmin.register Post do
|
|
325
368
|
end
|
326
369
|
```
|
327
370
|
|
328
|
-
Note that if you use an authorization library like CanCan, you should be careful
|
329
|
-
write code like this, otherwise **your authorization rules won't be
|
371
|
+
Note that if you use an authorization library like CanCan, you should be careful
|
372
|
+
to not write code like this, otherwise **your authorization rules won't be
|
373
|
+
applied**:
|
330
374
|
|
331
375
|
```ruby
|
332
376
|
ActiveAdmin.register Post do
|
@@ -364,8 +408,8 @@ ActiveAdmin.register Project do
|
|
364
408
|
|
365
409
|
sidebar "Project Details", only: [:show, :edit] do
|
366
410
|
ul do
|
367
|
-
li link_to "Tickets", admin_project_tickets_path(
|
368
|
-
li link_to "Milestones", admin_project_milestones_path(
|
411
|
+
li link_to "Tickets", admin_project_tickets_path(resource)
|
412
|
+
li link_to "Milestones", admin_project_milestones_path(resource)
|
369
413
|
end
|
370
414
|
end
|
371
415
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/custom-index.html
|
3
|
+
---
|
4
|
+
|
1
5
|
# Custom Index
|
2
6
|
|
3
7
|
If the supplied Active Admin index components are insufficient for your project
|
@@ -26,6 +30,6 @@ The build method takes a PagePresenter object and collection of whatever you
|
|
26
30
|
choose.
|
27
31
|
|
28
32
|
The `index_name` class method takes no arguments and returns a string that should
|
29
|
-
be representative of the
|
33
|
+
be representative of the class name. If this method is not defined, your
|
30
34
|
index component will not be able take advantage of Active Admin's
|
31
35
|
*multiple index pages* feature.
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
and execute rake yard to regenerate it.
|
5
|
-
-->
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-blog.html
|
3
|
+
---
|
6
4
|
|
7
5
|
# Index as Blog
|
8
6
|
|
@@ -30,7 +28,7 @@ end
|
|
30
28
|
```
|
31
29
|
|
32
30
|
Second, you can pass a block to the tile option which will then be
|
33
|
-
used as the contents
|
31
|
+
used as the contents of the title. The resource being rendered
|
34
32
|
is passed in to the block. For Example:
|
35
33
|
|
36
34
|
```ruby
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
and execute rake yard to regenerate it.
|
5
|
-
-->
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-table.html
|
3
|
+
---
|
6
4
|
|
7
5
|
# Index as a Table
|
8
6
|
|
@@ -86,8 +84,6 @@ index do
|
|
86
84
|
column :title
|
87
85
|
actions defaults: false do |post|
|
88
86
|
item "View", admin_post_path(post)
|
89
|
-
item "Edit", edit_admin_post_path(post)
|
90
|
-
item "Delete", admin_post_path(post), method: :delete
|
91
87
|
end
|
92
88
|
end
|
93
89
|
```
|
@@ -115,7 +111,8 @@ index do
|
|
115
111
|
end
|
116
112
|
```
|
117
113
|
|
118
|
-
In addition, you can insert the position of the row in the greater
|
114
|
+
In addition, you can insert the position of the row in the greater
|
115
|
+
collection by using the index_column special command:
|
119
116
|
|
120
117
|
```ruby
|
121
118
|
index do
|
@@ -125,7 +122,8 @@ index do
|
|
125
122
|
end
|
126
123
|
```
|
127
124
|
|
128
|
-
index_column take an optional offset parameter to allow a developer to set
|
125
|
+
index_column take an optional offset parameter to allow a developer to set
|
126
|
+
the starting number for the index (default is 1).
|
129
127
|
|
130
128
|
## Sorting
|
131
129
|
|
@@ -133,9 +131,7 @@ When a column is generated from an Active Record attribute, the table is
|
|
133
131
|
sortable by default. If you are creating a custom column, you may need to give
|
134
132
|
Active Admin a hint for how to sort the table.
|
135
133
|
|
136
|
-
|
137
|
-
is the attribute which gets used to sort objects using Active Record.
|
138
|
-
|
134
|
+
You can pass the key specifying the attribute which gets used to sort objects using Active Record.
|
139
135
|
By default, this is the column on the resource's table that the attribute corresponds to.
|
140
136
|
Otherwise, any attribute that the resource collection responds to can be used.
|
141
137
|
|
@@ -164,6 +160,24 @@ index do
|
|
164
160
|
end
|
165
161
|
```
|
166
162
|
|
163
|
+
## Custom sorting
|
164
|
+
|
165
|
+
It is also possible to use database specific expressions and options for sorting by column
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
order_by(:title) do |order_clause|
|
169
|
+
if order_clause.order == 'desc'
|
170
|
+
[order_clause.to_sql, 'NULLS LAST'].join(' ')
|
171
|
+
else
|
172
|
+
[order_clause.to_sql, 'NULLS FIRST'].join(' ')
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
index do
|
177
|
+
column :title
|
178
|
+
end
|
179
|
+
```
|
180
|
+
|
167
181
|
## Associated Sorting
|
168
182
|
|
169
183
|
You're normally able to sort columns alphabetically, but by default you
|
@@ -179,6 +193,13 @@ controller do
|
|
179
193
|
end
|
180
194
|
```
|
181
195
|
|
196
|
+
You can also define associated objects to include outside of the
|
197
|
+
`scoped_collection` method:
|
198
|
+
|
199
|
+
```ruby
|
200
|
+
includes :publisher
|
201
|
+
```
|
202
|
+
|
182
203
|
Then it's simple to sort by any Publisher attribute from within the index table:
|
183
204
|
|
184
205
|
```ruby
|