activeadmin 1.1.0 → 2.14.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 +871 -111
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +84 -63
- data/README.md +73 -19
- data/app/assets/javascripts/active_admin/base.js +521 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +4 -26
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/base.js +28 -0
- data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +98 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.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/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -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.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +20 -9
- data/config/locales/ar.yml +9 -8
- data/config/locales/az.yml +138 -0
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +29 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +4 -3
- data/config/locales/en-GB.yml +4 -3
- data/config/locales/en.yml +24 -4
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +3 -1
- data/config/locales/es.yml +26 -6
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +2 -1
- data/config/locales/fr.yml +9 -8
- 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 +31 -3
- data/config/locales/ja.yml +8 -2
- data/config/locales/ko.yml +2 -1
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +3 -2
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -5
- data/config/locales/nl.yml +13 -1
- 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 +4 -2
- 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 +82 -12
- data/config/locales/zh-CN.yml +68 -20
- data/config/locales/zh-TW.yml +1 -0
- data/lib/active_admin/abstract_view_factory.rb +14 -51
- data/lib/active_admin/application.rb +65 -172
- data/lib/active_admin/application_settings.rb +43 -0
- data/lib/active_admin/asset_registration.rb +4 -11
- data/lib/active_admin/authorization_adapter.rb +6 -3
- data/lib/active_admin/base_controller/authorization.rb +18 -18
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +12 -11
- data/lib/active_admin/batch_actions/controller.rb +6 -5
- data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +2 -1
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +3 -1
- data/lib/active_admin/csv_builder.rb +15 -21
- data/lib/active_admin/dependency.rb +12 -79
- data/lib/active_admin/deprecation.rb +1 -25
- data/lib/active_admin/devise.rb +16 -5
- data/lib/active_admin/dsl.rb +3 -9
- data/lib/active_admin/dynamic_setting.rb +39 -0
- data/lib/active_admin/dynamic_settings_node.rb +29 -0
- data/lib/active_admin/engine.rb +16 -7
- data/lib/active_admin/error.rb +5 -4
- data/lib/active_admin/filters/active.rb +2 -1
- data/lib/active_admin/filters/active_filter.rb +52 -15
- data/lib/active_admin/filters/active_sidebar.rb +8 -30
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +13 -9
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +34 -9
- data/lib/active_admin/filters.rb +8 -7
- data/lib/active_admin/form_builder.rb +110 -70
- data/lib/active_admin/generators/boilerplate.rb +13 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +3 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +2 -0
- data/lib/active_admin/inputs/datepicker_input.rb +10 -2
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
- data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
- data/lib/active_admin/inputs/filters/select_input.rb +8 -3
- data/lib/active_admin/inputs/filters/string_input.rb +1 -0
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +9 -11
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +11 -38
- data/lib/active_admin/namespace.rb +33 -20
- data/lib/active_admin/namespace_settings.rb +127 -0
- data/lib/active_admin/order_clause.rb +4 -3
- data/lib/active_admin/orm/active_record/comments/comment.rb +5 -4
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +36 -25
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +41 -29
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +2 -1
- data/lib/active_admin/page_presenter.rb +3 -1
- data/lib/active_admin/pundit_adapter.rb +71 -16
- data/lib/active_admin/resource/action_items.rb +12 -6
- data/lib/active_admin/resource/attributes.rb +9 -5
- data/lib/active_admin/resource/belongs_to.rb +9 -3
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +6 -5
- data/lib/active_admin/resource/model.rb +16 -0
- data/lib/active_admin/resource/naming.rb +6 -5
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +26 -14
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +4 -3
- data/lib/active_admin/resource/sidebars.rb +3 -2
- data/lib/active_admin/resource.rb +37 -22
- data/lib/active_admin/resource_collection.rb +3 -2
- data/lib/active_admin/resource_controller/action_builder.rb +11 -0
- data/lib/active_admin/resource_controller/data_access.rb +35 -5
- data/lib/active_admin/resource_controller/decorators.rb +10 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
- data/lib/active_admin/resource_controller/scoping.rb +2 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +9 -7
- data/lib/active_admin/resource_controller.rb +14 -10
- data/lib/active_admin/resource_dsl.rb +17 -27
- data/lib/active_admin/router.rb +91 -84
- data/lib/active_admin/scope.rb +20 -11
- data/lib/active_admin/settings_node.rb +20 -0
- data/lib/active_admin/sidebar_section.rb +4 -1
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +18 -17
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
- data/lib/active_admin/view_helpers/display_helper.rb +25 -8
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +14 -8
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +9 -8
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
- data/lib/active_admin/views/components/index_list.rb +4 -3
- data/lib/active_admin/views/components/menu.rb +33 -0
- data/lib/active_admin/views/components/menu_item.rb +59 -0
- data/lib/active_admin/views/components/paginated_collection.rb +22 -20
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +18 -8
- data/lib/active_admin/views/components/sidebar.rb +14 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -0
- data/lib/active_admin/views/components/site_title.rb +7 -7
- data/lib/active_admin/views/components/status_tag.rb +14 -26
- data/lib/active_admin/views/components/table_for.rb +22 -29
- data/lib/active_admin/views/components/tabs.rb +18 -5
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +6 -8
- data/lib/active_admin/views/header.rb +4 -15
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +3 -2
- data/lib/active_admin/views/index_as_grid.rb +27 -26
- data/lib/active_admin/views/index_as_table.rb +34 -25
- data/lib/active_admin/views/pages/base.rb +47 -62
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +16 -13
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +1 -0
- data/lib/active_admin/views/tabbed_navigation.rb +5 -59
- data/lib/active_admin/views/title_bar.rb +2 -1
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +68 -63
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
- data/lib/generators/active_admin/install/install_generator.rb +19 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +62 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +3 -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 +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +5 -4
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/lib/ransack_ext.rb +10 -9
- 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 +123 -595
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -49
- data/.mdlrc +0 -1
- data/.rubocop.yml +0 -76
- data/.simplecov +0 -13
- data/.travis.yml +0 -51
- data/.yardopts +0 -7
- data/Gemfile +0 -58
- data/Rakefile +0 -54
- data/activeadmin.gemspec +0 -32
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -9
- data/cucumber.yml +0 -3
- data/docs/0-installation.md +0 -118
- data/docs/1-general-configuration.md +0 -189
- data/docs/10-custom-pages.md +0 -136
- data/docs/11-decorators.md +0 -59
- data/docs/12-arbre-components.md +0 -174
- data/docs/13-authorization-adapter.md +0 -266
- data/docs/14-gotchas.md +0 -138
- data/docs/2-resource-customization.md +0 -461
- data/docs/3-index-pages/custom-index.md +0 -35
- data/docs/3-index-pages/index-as-block.md +0 -19
- data/docs/3-index-pages/index-as-blog.md +0 -69
- data/docs/3-index-pages/index-as-grid.md +0 -27
- data/docs/3-index-pages/index-as-table.md +0 -227
- data/docs/3-index-pages.md +0 -311
- data/docs/4-csv-format.md +0 -74
- data/docs/5-forms.md +0 -218
- data/docs/6-show-pages.md +0 -81
- data/docs/7-sidebars.md +0 -75
- data/docs/8-custom-actions.md +0 -166
- data/docs/9-batch-actions.md +0 -237
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -2
- data/docs/README.md +0 -24
- data/docs/_config.yml +0 -2
- data/docs/_includes/footer.html +0 -8
- data/docs/_includes/google-analytics.html +0 -16
- data/docs/_includes/head.html +0 -7
- data/docs/_includes/toc.html +0 -98
- data/docs/_includes/top-menu.html +0 -9
- data/docs/_layouts/default.html +0 -21
- data/docs/documentation.md +0 -60
- 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/index.html +0 -125
- data/docs/stylesheets/main.css +0 -1152
- 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
@@ -1,461 +0,0 @@
|
|
1
|
-
---
|
2
|
-
redirect_from: /docs/2-resource-customization.html
|
3
|
-
---
|
4
|
-
|
5
|
-
# Working with Resources
|
6
|
-
|
7
|
-
Every Active Admin resource corresponds to a Rails model. So before creating a
|
8
|
-
resource you must first create a Rails model for it.
|
9
|
-
|
10
|
-
## Create a Resource
|
11
|
-
|
12
|
-
The basic command for creating a resource is `rails g active_admin:resource Post`.
|
13
|
-
The generator will produce an empty `app/admin/post.rb` file like so:
|
14
|
-
|
15
|
-
```ruby
|
16
|
-
ActiveAdmin.register Post do
|
17
|
-
# everything happens here :D
|
18
|
-
end
|
19
|
-
```
|
20
|
-
|
21
|
-
## Setting up Strong Parameters
|
22
|
-
|
23
|
-
Use the `permit_params` method to define which attributes may be changed:
|
24
|
-
|
25
|
-
```ruby
|
26
|
-
ActiveAdmin.register Post do
|
27
|
-
permit_params :title, :content, :publisher_id
|
28
|
-
end
|
29
|
-
```
|
30
|
-
|
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`:
|
33
|
-
|
34
|
-
If your HABTM is `roles`, you should permit `role_ids: []`
|
35
|
-
|
36
|
-
```ruby
|
37
|
-
ActiveAdmin.register Post do
|
38
|
-
permit_params :title, :content, :publisher_id, role_ids: []
|
39
|
-
end
|
40
|
-
```
|
41
|
-
|
42
|
-
Nested associations in the same form also require an array, but it
|
43
|
-
needs to be filled with any attributes used.
|
44
|
-
|
45
|
-
```ruby
|
46
|
-
ActiveAdmin.register Post do
|
47
|
-
permit_params :title, :content, :publisher_id,
|
48
|
-
tags_attributes: [:id, :name, :description, :_destroy]
|
49
|
-
end
|
50
|
-
|
51
|
-
# Note that `accepts_nested_attributes_for` is still required:
|
52
|
-
class Post < ActiveRecord::Base
|
53
|
-
accepts_nested_attributes_for :tags, allow_destroy: true
|
54
|
-
end
|
55
|
-
```
|
56
|
-
|
57
|
-
If you want to dynamically choose which attributes can be set, pass a block:
|
58
|
-
|
59
|
-
```ruby
|
60
|
-
ActiveAdmin.register Post do
|
61
|
-
permit_params do
|
62
|
-
params = [:title, :content, :publisher_id]
|
63
|
-
params.push :author_id if current_user.admin?
|
64
|
-
params
|
65
|
-
end
|
66
|
-
end
|
67
|
-
```
|
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:
|
80
|
-
|
81
|
-
```ruby
|
82
|
-
ActiveAdmin.register Post do
|
83
|
-
controller do
|
84
|
-
def create
|
85
|
-
# Good
|
86
|
-
@post = Post.new(permitted_params[:post])
|
87
|
-
# Bad
|
88
|
-
@post = Post.new(params[:post])
|
89
|
-
|
90
|
-
if @post.save
|
91
|
-
# ...
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
```
|
97
|
-
|
98
|
-
## Disabling Actions on a Resource
|
99
|
-
|
100
|
-
All CRUD actions are enabled by default. These can be disabled for a given resource:
|
101
|
-
|
102
|
-
```ruby
|
103
|
-
ActiveAdmin.register Post do
|
104
|
-
actions :all, except: [:update, :destroy]
|
105
|
-
end
|
106
|
-
```
|
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:
|
120
|
-
new_model: 'Make an Offer'
|
121
|
-
```
|
122
|
-
|
123
|
-
## Rename the Resource
|
124
|
-
|
125
|
-
By default, any references to the resource (menu, routes, buttons, etc) in the
|
126
|
-
interface will use the name of the class. You can rename the resource by using
|
127
|
-
the `:as` option.
|
128
|
-
|
129
|
-
```ruby
|
130
|
-
ActiveAdmin.register Post, as: "Article"
|
131
|
-
```
|
132
|
-
|
133
|
-
The resource will then be available at `/admin/articles`.
|
134
|
-
|
135
|
-
## Customize the Namespace
|
136
|
-
|
137
|
-
We use the `admin` namespace by default, but you can use anything:
|
138
|
-
|
139
|
-
```ruby
|
140
|
-
# Available at /today/posts
|
141
|
-
ActiveAdmin.register Post, namespace: :today
|
142
|
-
|
143
|
-
# Available at /posts
|
144
|
-
ActiveAdmin.register Post, namespace: false
|
145
|
-
```
|
146
|
-
|
147
|
-
## Customize the Menu
|
148
|
-
|
149
|
-
The resource will be displayed in the global navigation by default. To disable
|
150
|
-
the resource from being displayed in the global navigation:
|
151
|
-
|
152
|
-
```ruby
|
153
|
-
ActiveAdmin.register Post do
|
154
|
-
menu false
|
155
|
-
end
|
156
|
-
```
|
157
|
-
|
158
|
-
The menu method accepts a hash with the following options:
|
159
|
-
|
160
|
-
* `:label` - The string or proc label to display in the menu. If it's a proc, it
|
161
|
-
will be called each time the menu is rendered.
|
162
|
-
* `:parent` - The string id (or label) of the parent used for this menu
|
163
|
-
* `:if` - A block or a symbol of a method to call to decide if the menu item
|
164
|
-
should be displayed
|
165
|
-
* `:priority` - The integer value of the priority, which defaults to `10`
|
166
|
-
|
167
|
-
### Labels
|
168
|
-
|
169
|
-
To change the name of the label in the menu:
|
170
|
-
|
171
|
-
```ruby
|
172
|
-
ActiveAdmin.register Post do
|
173
|
-
menu label: "My Posts"
|
174
|
-
end
|
175
|
-
```
|
176
|
-
|
177
|
-
If you want something more dynamic, pass a proc instead:
|
178
|
-
|
179
|
-
```ruby
|
180
|
-
ActiveAdmin.register Post do
|
181
|
-
menu label: proc{ I18n.t "mypost" }
|
182
|
-
end
|
183
|
-
```
|
184
|
-
|
185
|
-
### Menu Priority
|
186
|
-
|
187
|
-
Menu items are sorted first by their numeric priority, then alphabetically. Since
|
188
|
-
every menu by default has a priority of `10`, the menu is normally alphabetical.
|
189
|
-
|
190
|
-
You can easily customize this:
|
191
|
-
|
192
|
-
```ruby
|
193
|
-
ActiveAdmin.register Post do
|
194
|
-
menu priority: 1 # so it's on the very left
|
195
|
-
end
|
196
|
-
```
|
197
|
-
|
198
|
-
### Conditionally Showing / Hiding Menu Items
|
199
|
-
|
200
|
-
Menu items can be shown or hidden at runtime using the `:if` option.
|
201
|
-
|
202
|
-
```ruby
|
203
|
-
ActiveAdmin.register Post do
|
204
|
-
menu if: proc{ current_user.can_edit_posts? }
|
205
|
-
end
|
206
|
-
```
|
207
|
-
|
208
|
-
The proc will be called in the context of the view, so you have access to all
|
209
|
-
your helpers and current user session information.
|
210
|
-
|
211
|
-
### Drop Down Menus
|
212
|
-
|
213
|
-
In many cases, a single level navigation will not be enough to manage a large
|
214
|
-
application. In that case, you can group your menu items under a parent menu item.
|
215
|
-
|
216
|
-
```ruby
|
217
|
-
ActiveAdmin.register Post do
|
218
|
-
menu parent: "Blog"
|
219
|
-
end
|
220
|
-
```
|
221
|
-
|
222
|
-
Note that the "Blog" parent menu item doesn't even have to exist yet; it can be
|
223
|
-
dynamically generated for you.
|
224
|
-
|
225
|
-
### Customizing Parent Menu Items
|
226
|
-
|
227
|
-
All of the options given to a standard menu item are also available to
|
228
|
-
parent menu items. In the case of complex parent menu items, you should
|
229
|
-
configure them in the Active Admin initializer.
|
230
|
-
|
231
|
-
```ruby
|
232
|
-
# config/initializers/active_admin.rb
|
233
|
-
config.namespace :admin do |admin|
|
234
|
-
admin.build_menu do |menu|
|
235
|
-
menu.add label: 'Blog', priority: 0
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
# app/admin/post.rb
|
240
|
-
ActiveAdmin.register Post do
|
241
|
-
menu parent: 'Blog'
|
242
|
-
end
|
243
|
-
```
|
244
|
-
|
245
|
-
### Dynamic Parent Menu Items
|
246
|
-
|
247
|
-
While the above works fine, what if you want a parent menu item with a dynamic
|
248
|
-
name? Well, you have to refer to it by its `:id`.
|
249
|
-
|
250
|
-
```ruby
|
251
|
-
# config/initializers/active_admin.rb
|
252
|
-
config.namespace :admin do |admin|
|
253
|
-
admin.build_menu do |menu|
|
254
|
-
menu.add id: 'blog', label: proc{"Something dynamic"}, priority: 0
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
# app/admin/post.rb
|
259
|
-
ActiveAdmin.register Post do
|
260
|
-
menu parent: 'blog'
|
261
|
-
end
|
262
|
-
```
|
263
|
-
|
264
|
-
### Adding Custom Menu Items
|
265
|
-
|
266
|
-
Sometimes it's not enough to just customize the menu label. In this case, you
|
267
|
-
can customize the menu for the namespace within the Active Admin initializer.
|
268
|
-
|
269
|
-
```ruby
|
270
|
-
# config/initializers/active_admin.rb
|
271
|
-
config.namespace :admin do |admin|
|
272
|
-
admin.build_menu do |menu|
|
273
|
-
menu.add label: "The Application", url: "/", priority: 0
|
274
|
-
|
275
|
-
menu.add label: "Sites" do |sites|
|
276
|
-
sites.add label: "Google",
|
277
|
-
url: "http://google.com",
|
278
|
-
html_options: { target: :blank }
|
279
|
-
|
280
|
-
sites.add label: "Facebook",
|
281
|
-
url: "http://facebook.com"
|
282
|
-
|
283
|
-
sites.add label: "Github",
|
284
|
-
url: "http://github.com"
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|
288
|
-
```
|
289
|
-
|
290
|
-
This will be registered on application start before your resources are loaded.
|
291
|
-
|
292
|
-
## Scoping the queries
|
293
|
-
|
294
|
-
If your administrators have different access levels, you may sometimes want to
|
295
|
-
scope what they have access to. Assuming your User model has the proper
|
296
|
-
has_many relationships, you can simply scope the listings and finders like so:
|
297
|
-
|
298
|
-
```ruby
|
299
|
-
ActiveAdmin.register Post do
|
300
|
-
scope_to :current_user # limits the accessible posts to `current_user.posts`
|
301
|
-
|
302
|
-
# Or if the association doesn't have the default name:
|
303
|
-
scope_to :current_user, association_method: :blog_posts
|
304
|
-
|
305
|
-
# Finally, you can pass a block to be called:
|
306
|
-
scope_to do
|
307
|
-
User.most_popular_posts
|
308
|
-
end
|
309
|
-
end
|
310
|
-
```
|
311
|
-
|
312
|
-
You can also conditionally apply the scope:
|
313
|
-
|
314
|
-
```ruby
|
315
|
-
ActiveAdmin.register Post do
|
316
|
-
scope_to :current_user, if: proc{ current_user.limited_access? }
|
317
|
-
scope_to :current_user, unless: proc{ current_user.admin? }
|
318
|
-
end
|
319
|
-
```
|
320
|
-
|
321
|
-
## Eager loading
|
322
|
-
|
323
|
-
A common way to increase page performance is to elimate N+1 queries by eager
|
324
|
-
loading associations:
|
325
|
-
|
326
|
-
```ruby
|
327
|
-
ActiveAdmin.register Post do
|
328
|
-
includes :author, :categories
|
329
|
-
end
|
330
|
-
```
|
331
|
-
|
332
|
-
## Customizing resource retrieval
|
333
|
-
|
334
|
-
Our controllers are built on [Inherited
|
335
|
-
Resources](https://github.com/activeadmin/inherited_resources), so you can use
|
336
|
-
[all of its
|
337
|
-
features](https://github.com/activeadmin/inherited_resources#overwriting-defaults).
|
338
|
-
|
339
|
-
If you need to customize the collection properties, you can overwrite the
|
340
|
-
`scoped_collection` method.
|
341
|
-
|
342
|
-
```ruby
|
343
|
-
ActiveAdmin.register Post do
|
344
|
-
controller do
|
345
|
-
def scoped_collection
|
346
|
-
end_of_association_chain.where(visibility: true)
|
347
|
-
end
|
348
|
-
end
|
349
|
-
end
|
350
|
-
```
|
351
|
-
|
352
|
-
If you need to completely replace the record retrieving code (e.g., you have a
|
353
|
-
custom `to_param` implementation in your models), override the `resource` method
|
354
|
-
on the controller:
|
355
|
-
|
356
|
-
```ruby
|
357
|
-
ActiveAdmin.register Post do
|
358
|
-
controller do
|
359
|
-
def find_resource
|
360
|
-
scoped_collection.where(id: params[:id]).first!
|
361
|
-
end
|
362
|
-
end
|
363
|
-
end
|
364
|
-
```
|
365
|
-
|
366
|
-
Note that if you use an authorization library like CanCan, you should be careful
|
367
|
-
to not write code like this, otherwise **your authorization rules won't be
|
368
|
-
applied**:
|
369
|
-
|
370
|
-
```ruby
|
371
|
-
ActiveAdmin.register Post do
|
372
|
-
controller do
|
373
|
-
def find_resource
|
374
|
-
Post.where(id: params[:id]).first!
|
375
|
-
end
|
376
|
-
end
|
377
|
-
end
|
378
|
-
```
|
379
|
-
|
380
|
-
## Belongs To
|
381
|
-
|
382
|
-
It's common to want to scope a series of resources to a relationship. For
|
383
|
-
example a Project may have many Milestones and Tickets. To nest the resource
|
384
|
-
within another, you can use the `belongs_to` method:
|
385
|
-
|
386
|
-
```ruby
|
387
|
-
ActiveAdmin.register Project
|
388
|
-
ActiveAdmin.register Ticket do
|
389
|
-
belongs_to :project
|
390
|
-
end
|
391
|
-
```
|
392
|
-
|
393
|
-
Projects will be available as usual and tickets will be available by visiting
|
394
|
-
`/admin/projects/1/tickets` assuming that a Project with the id of 1 exists.
|
395
|
-
Active Admin does not add "Tickets" to the global navigation because the routes
|
396
|
-
can only be generated when there is a project id.
|
397
|
-
|
398
|
-
To create links to the resource, you can add them to a sidebar (one of the many
|
399
|
-
possibilities for how you may with to handle your user interface):
|
400
|
-
|
401
|
-
```ruby
|
402
|
-
ActiveAdmin.register Project do
|
403
|
-
|
404
|
-
sidebar "Project Details", only: [:show, :edit] do
|
405
|
-
ul do
|
406
|
-
li link_to "Tickets", admin_project_tickets_path(resource)
|
407
|
-
li link_to "Milestones", admin_project_milestones_path(resource)
|
408
|
-
end
|
409
|
-
end
|
410
|
-
end
|
411
|
-
|
412
|
-
ActiveAdmin.register Ticket do
|
413
|
-
belongs_to :project
|
414
|
-
end
|
415
|
-
|
416
|
-
ActiveAdmin.register Milestone do
|
417
|
-
belongs_to :project
|
418
|
-
end
|
419
|
-
```
|
420
|
-
|
421
|
-
In some cases (like Projects), there are many sub resources and you would
|
422
|
-
actually like the global navigation to switch when the user navigates "into" a
|
423
|
-
project. To accomplish this, Active Admin stores the `belongs_to` resources in a
|
424
|
-
separate menu which you can use if you so wish. To use:
|
425
|
-
|
426
|
-
```ruby
|
427
|
-
ActiveAdmin.register Ticket do
|
428
|
-
belongs_to :project
|
429
|
-
navigation_menu :project
|
430
|
-
end
|
431
|
-
|
432
|
-
ActiveAdmin.register Milestone do
|
433
|
-
belongs_to :project
|
434
|
-
navigation_menu :project
|
435
|
-
end
|
436
|
-
```
|
437
|
-
|
438
|
-
Now, when you navigate to the tickets section, the global navigation will
|
439
|
-
only display "Tickets" and "Milestones". When you navigate back to a
|
440
|
-
non-belongs_to resource, it will switch back to the default menu.
|
441
|
-
|
442
|
-
You can also defer the menu lookup until runtime so that you can dynamically show
|
443
|
-
different menus, say perhaps based on user permissions. For example:
|
444
|
-
|
445
|
-
```ruby
|
446
|
-
ActiveAdmin.register Ticket do
|
447
|
-
belongs_to :project
|
448
|
-
navigation_menu do
|
449
|
-
authorized?(:manage, SomeResource) ? :project : :restricted_menu
|
450
|
-
end
|
451
|
-
end
|
452
|
-
```
|
453
|
-
|
454
|
-
If you still want your `belongs_to` resources to be available in the default menu
|
455
|
-
and through non-nested routes, you can use the `:optional` option. For example:
|
456
|
-
|
457
|
-
```ruby
|
458
|
-
ActiveAdmin.register Ticket do
|
459
|
-
belongs_to :project, optional: true
|
460
|
-
end
|
461
|
-
```
|
@@ -1,35 +0,0 @@
|
|
1
|
-
---
|
2
|
-
redirect_from: /docs/3-index-pages/custom-index.html
|
3
|
-
---
|
4
|
-
|
5
|
-
# Custom Index
|
6
|
-
|
7
|
-
If the supplied Active Admin index components are insufficient for your project
|
8
|
-
feel free to define your own. Index classes inherit from `ActiveAdmin::Component`
|
9
|
-
and require a `build` method and an `index_name` class method.
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
module ActiveAdmin
|
13
|
-
module Views
|
14
|
-
class IndexAsMyIdea < ActiveAdmin::Component
|
15
|
-
|
16
|
-
def build(page_presenter, collection)
|
17
|
-
# ...
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.index_name
|
21
|
-
"my_idea"
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
```
|
28
|
-
|
29
|
-
The build method takes a PagePresenter object and collection of whatever you
|
30
|
-
choose.
|
31
|
-
|
32
|
-
The `index_name` class method takes no arguments and returns a string that should
|
33
|
-
be representative of the the class name. If this method is not defined, your
|
34
|
-
index component will not be able take advantage of Active Admin's
|
35
|
-
*multiple index pages* feature.
|
@@ -1,19 +0,0 @@
|
|
1
|
-
---
|
2
|
-
redirect_from: /docs/3-index-pages/index-as-block.html
|
3
|
-
---
|
4
|
-
|
5
|
-
# Index as a Block
|
6
|
-
|
7
|
-
If you want to fully customize the display of your resources on the index
|
8
|
-
screen, Index as a Block allows you to render a block of content for each
|
9
|
-
resource.
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
index as: :block do |product|
|
13
|
-
div for: product do
|
14
|
-
resource_selection_cell product
|
15
|
-
h2 auto_link product.title
|
16
|
-
div simple_format product.description
|
17
|
-
end
|
18
|
-
end
|
19
|
-
```
|
@@ -1,69 +0,0 @@
|
|
1
|
-
---
|
2
|
-
redirect_from: /docs/3-index-pages/index-as-blog.html
|
3
|
-
---
|
4
|
-
|
5
|
-
# Index as Blog
|
6
|
-
|
7
|
-
Render your index page as a set of posts. The post has two main options:
|
8
|
-
title and body.
|
9
|
-
|
10
|
-
```ruby
|
11
|
-
index as: :blog do
|
12
|
-
title :my_title # Calls #my_title on each resource
|
13
|
-
body :my_body # Calls #my_body on each resource
|
14
|
-
end
|
15
|
-
```
|
16
|
-
|
17
|
-
## Post Title
|
18
|
-
|
19
|
-
The title is the content that will be rendered within a link to the
|
20
|
-
resource. There are two main ways to set the content for the title
|
21
|
-
|
22
|
-
First, you can pass in a method to be called on your resource. For example:
|
23
|
-
|
24
|
-
```ruby
|
25
|
-
index as: :blog do
|
26
|
-
title :a_method_to_call
|
27
|
-
end
|
28
|
-
```
|
29
|
-
|
30
|
-
Second, you can pass a block to the tile option which will then be
|
31
|
-
used as the contents fo the title. The resource being rendered
|
32
|
-
is passed in to the block. For Example:
|
33
|
-
|
34
|
-
```ruby
|
35
|
-
index as: :blog do
|
36
|
-
title do |post|
|
37
|
-
span post.title, class: 'title'
|
38
|
-
span post.created_at, class: 'created_at'
|
39
|
-
end
|
40
|
-
end
|
41
|
-
```
|
42
|
-
|
43
|
-
## Post Body
|
44
|
-
|
45
|
-
The body is rendered underneath the title of each post. The same two
|
46
|
-
style of options work as the Post Title above.
|
47
|
-
|
48
|
-
Call a method on the resource as the body:
|
49
|
-
|
50
|
-
```ruby
|
51
|
-
index as: :blog do
|
52
|
-
title :my_title
|
53
|
-
body :my_body
|
54
|
-
end
|
55
|
-
```
|
56
|
-
|
57
|
-
Or, render a block as the body:
|
58
|
-
|
59
|
-
```ruby
|
60
|
-
index as: :blog do
|
61
|
-
title :my_title
|
62
|
-
body do |post|
|
63
|
-
div truncate post.title
|
64
|
-
div class: 'meta' do
|
65
|
-
span "Post in #{post.categories.join(', ')}"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
```
|
@@ -1,27 +0,0 @@
|
|
1
|
-
---
|
2
|
-
redirect_from: /docs/3-index-pages/index-as-grid.html
|
3
|
-
---
|
4
|
-
|
5
|
-
# Index as a Grid
|
6
|
-
|
7
|
-
Sometimes you want to display the index screen for a set of resources as a grid
|
8
|
-
(possibly a grid of thumbnail images). To do so, use the :grid option for the
|
9
|
-
index block.
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
index as: :grid do |product|
|
13
|
-
link_to image_tag(product.image_path), admin_product_path(product)
|
14
|
-
end
|
15
|
-
```
|
16
|
-
|
17
|
-
The block is rendered within a cell in the grid once for each resource in the
|
18
|
-
collection. The resource is passed into the block for you to use in the view.
|
19
|
-
|
20
|
-
You can customize the number of columns that are rendered using the columns
|
21
|
-
option:
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
index as: :grid, columns: 5 do |product|
|
25
|
-
link_to image_tag(product.image_path), admin_product_path(product)
|
26
|
-
end
|
27
|
-
```
|