activeadmin 1.0.0.pre1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +587 -939
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +110 -59
- data/LICENSE +0 -5
- data/README.md +80 -61
- data/app/assets/javascripts/active_admin/base.js +517 -0
- data/app/assets/stylesheets/active_admin/_base.scss +31 -34
- data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- 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 +5 -3
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
- data/app/assets/stylesheets/active_admin/print.scss +3 -4
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
- 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 +95 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
- data/app/views/active_admin/devise/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 +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 +21 -7
- data/config/locales/ar.yml +62 -47
- data/config/locales/az.yml +138 -0
- 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 +4 -3
- data/config/locales/de.yml +46 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +46 -5
- data/config/locales/en.yml +44 -9
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +9 -6
- data/config/locales/es.yml +63 -14
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +36 -8
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +6 -3
- data/config/locales/id.yml +135 -0
- data/config/locales/it.yml +49 -4
- data/config/locales/ja.yml +31 -7
- data/config/locales/ko.yml +66 -36
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +3 -4
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +22 -8
- data/config/locales/nl.yml +26 -3
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +24 -2
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +21 -4
- data/config/locales/sk.yml +168 -0
- data/config/locales/sv-SE.yml +50 -8
- data/config/locales/tr.yml +92 -45
- data/config/locales/uk.yml +30 -16
- data/config/locales/vi.yml +53 -12
- data/config/locales/zh-CN.yml +44 -7
- data/config/locales/zh-TW.yml +42 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +68 -18
- data/docs/1-general-configuration.md +88 -4
- data/docs/10-custom-pages.md +56 -2
- data/docs/11-decorators.md +20 -5
- data/docs/12-arbre-components.md +75 -11
- data/docs/13-authorization-adapter.md +73 -36
- data/docs/14-gotchas.md +64 -18
- data/docs/2-resource-customization.md +91 -23
- 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 +46 -9
- data/docs/3-index-pages.md +73 -10
- data/docs/4-csv-format.md +35 -0
- data/docs/5-forms.md +96 -18
- data/docs/6-show-pages.md +13 -25
- data/docs/7-sidebars.md +13 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +9 -5
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +259 -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 +105 -138
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +4 -7
- data/lib/active_admin/base_controller/authorization.rb +16 -21
- data/lib/active_admin/base_controller/menu.rb +10 -10
- data/lib/active_admin/base_controller.rb +15 -11
- data/lib/active_admin/batch_actions/controller.rb +6 -7
- data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
- data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
- data/lib/active_admin/batch_actions.rb +0 -1
- data/lib/active_admin/callbacks.rb +2 -2
- data/lib/active_admin/cancan_adapter.rb +1 -1
- data/lib/active_admin/collection_decorator.rb +31 -0
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +30 -20
- data/lib/active_admin/dependency.rb +36 -29
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +9 -9
- data/lib/active_admin/dsl.rb +5 -18
- 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 +14 -7
- data/lib/active_admin/error.rb +6 -6
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +123 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/forms.rb +17 -10
- data/lib/active_admin/filters/formtastic_addons.rb +2 -7
- data/lib/active_admin/filters/resource_extension.rb +50 -14
- data/lib/active_admin/filters.rb +7 -5
- data/lib/active_admin/form_builder.rb +112 -67
- data/lib/active_admin/generators/boilerplate.rb +53 -0
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/optional_display.rb +2 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +13 -6
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
- data/lib/active_admin/inputs/filters/base.rb +3 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
- data/lib/active_admin/inputs/filters/select_input.rb +8 -4
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +2 -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 +13 -15
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +10 -38
- data/lib/active_admin/namespace.rb +51 -32
- data/lib/active_admin/namespace_settings.rb +126 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
- data/lib/active_admin/orm/active_record/comments.rb +49 -29
- data/lib/active_admin/orm/active_record.rb +1 -1
- data/lib/active_admin/page.rb +24 -5
- data/lib/active_admin/page_controller.rb +2 -2
- 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 +22 -9
- data/lib/active_admin/resource/action_items.rb +34 -12
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +17 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +9 -6
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +5 -5
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/pagination.rb +4 -0
- data/lib/active_admin/resource/routes.rb +56 -26
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +2 -2
- data/lib/active_admin/resource.rb +80 -22
- data/lib/active_admin/resource_collection.rb +5 -3
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +56 -43
- data/lib/active_admin/resource_controller/decorators.rb +9 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/streaming.rb +12 -5
- data/lib/active_admin/resource_controller.rb +26 -10
- data/lib/active_admin/resource_dsl.rb +67 -21
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +21 -14
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +6 -12
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +17 -18
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
- data/lib/active_admin/view_helpers/display_helper.rb +51 -9
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
- data/lib/active_admin/view_helpers/fields_for.rb +4 -4
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -2
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +45 -13
- data/lib/active_admin/views/components/attributes_table.rb +11 -29
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +12 -7
- data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
- data/lib/active_admin/views/components/index_list.rb +6 -5
- 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 +52 -33
- data/lib/active_admin/views/components/panel.rb +2 -4
- data/lib/active_admin/views/components/scopes.rb +20 -12
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +6 -1
- data/lib/active_admin/views/components/site_title.rb +6 -7
- data/lib/active_admin/views/components/status_tag.rb +19 -23
- data/lib/active_admin/views/components/table_for.rb +31 -57
- data/lib/active_admin/views/components/tabs.rb +17 -5
- data/lib/active_admin/views/footer.rb +15 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +3 -4
- data/lib/active_admin/views/index_as_grid.rb +28 -28
- data/lib/active_admin/views/index_as_table.rb +76 -28
- data/lib/active_admin/views/pages/base.rb +45 -58
- data/lib/active_admin/views/pages/form.rb +5 -2
- data/lib/active_admin/views/pages/index.rb +15 -13
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +9 -3
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +6 -6
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +69 -67
- data/lib/activeadmin.rb +1 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
- data/lib/generators/active_admin/install/install_generator.rb +18 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
- 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/page/templates/page.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- 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 +26 -0
- data/lib/ransack_ext.rb +11 -3
- 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
- metadata +182 -553
- data/.gitignore +0 -49
- data/.hound.yml +0 -11
- data/.travis.yml +0 -42
- data/.yardopts +0 -8
- data/Gemfile +0 -54
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -28
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- 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/application.js.coffee +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
- 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/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 -37
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
- data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
- 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 -41
- 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 -164
- 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 -41
- data/features/index/pagination.feature +0 -59
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -35
- 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/default_content.feature +0 -43
- data/features/show/page_title.feature +0 -58
- 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 -72
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- 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 -34
- 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/pagination_steps.rb +0 -7
- 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 -119
- 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 -145
- 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/batch_actions/views/batch_action_popover.rb +0 -28
- data/lib/active_admin/event.rb +0 -33
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/iconic/icons.rb +0 -142
- data/lib/active_admin/iconic.rb +0 -53
- data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
- data/lib/active_admin/views/components/action_list_popover.rb +0 -29
- data/lib/active_admin/views/components/popover.rb +0 -27
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
- data/script/local +0 -44
- 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.popover-spec.js.coffee +0 -82
- 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 -154
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -20
- data/spec/requests/memory_spec.rb +0 -23
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/integration_example_group.rb +0 -31
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -138
- data/spec/support/rails_template_with_data.rb +0 -59
- data/spec/support/templates/admin/stores.rb +0 -9
- data/spec/support/templates/cucumber.rb +0 -24
- data/spec/support/templates/cucumber_with_reloading.rb +0 -5
- 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 -132
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -140
- 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 -22
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -92
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -51
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -166
- 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 -44
- data/spec/unit/csv_builder_spec.rb +0 -244
- 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/event_spec.rb +0 -47
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
- data/spec/unit/filters/resource_spec.rb +0 -121
- data/spec/unit/form_builder_spec.rb +0 -752
- data/spec/unit/generators/install_spec.rb +0 -23
- 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 -74
- data/spec/unit/namespace/register_resource_spec.rb +0 -161
- 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 -63
- 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 -73
- 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 -158
- data/spec/unit/resource_controller/data_access_spec.rb +0 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -83
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
- 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 -278
- data/spec/unit/routing_spec.rb +0 -180
- data/spec/unit/scope_spec.rb +0 -190
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -21
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
- data/spec/unit/view_helpers/display_name_spec.rb +0 -69
- 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/action_list_popover_spec.rb +0 -40
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -172
- data/spec/unit/views/components/index_list_spec.rb +0 -35
- data/spec/unit/views/components/index_table_for_spec.rb +0 -46
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
- data/spec/unit/views/components/panel_spec.rb +0 -62
- data/spec/unit/views/components/popover_spec.rb +0 -33
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
- data/spec/unit/views/components/site_title_spec.rb +0 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -235
- data/spec/unit/views/components/table_for_spec.rb +0 -384
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
- data/spec/unit/views/pages/form_spec.rb +0 -42
- 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 -83
- data/tasks/yard.rake +0 -9
|
@@ -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,12 +28,14 @@ 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`:
|
|
33
|
+
|
|
34
|
+
If your HABTM is `roles`, you should permit `role_ids: []`
|
|
32
35
|
|
|
33
36
|
```ruby
|
|
34
37
|
ActiveAdmin.register Post do
|
|
35
|
-
permit_params :title, :content, :publisher_id,
|
|
38
|
+
permit_params :title, :content, :publisher_id, role_ids: []
|
|
36
39
|
end
|
|
37
40
|
```
|
|
38
41
|
|
|
@@ -63,7 +66,17 @@ ActiveAdmin.register Post do
|
|
|
63
66
|
end
|
|
64
67
|
```
|
|
65
68
|
|
|
66
|
-
|
|
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:
|
|
67
80
|
|
|
68
81
|
```ruby
|
|
69
82
|
ActiveAdmin.register Post do
|
|
@@ -92,6 +105,26 @@ ActiveAdmin.register Post do
|
|
|
92
105
|
end
|
|
93
106
|
```
|
|
94
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
|
+
|
|
95
128
|
## Rename the Resource
|
|
96
129
|
|
|
97
130
|
By default, any references to the resource (menu, routes, buttons, etc) in the
|
|
@@ -131,7 +164,8 @@ The menu method accepts a hash with the following options:
|
|
|
131
164
|
|
|
132
165
|
* `:label` - The string or proc label to display in the menu. If it's a proc, it
|
|
133
166
|
will be called each time the menu is rendered.
|
|
134
|
-
* `:parent` - The string id (or label) of the parent used for this menu
|
|
167
|
+
* `:parent` - The string id (or label) of the parent used for this menu, or an array
|
|
168
|
+
of string ids (or labels) for a nested menu
|
|
135
169
|
* `:if` - A block or a symbol of a method to call to decide if the menu item
|
|
136
170
|
should be displayed
|
|
137
171
|
* `:priority` - The integer value of the priority, which defaults to `10`
|
|
@@ -170,6 +204,7 @@ end
|
|
|
170
204
|
### Conditionally Showing / Hiding Menu Items
|
|
171
205
|
|
|
172
206
|
Menu items can be shown or hidden at runtime using the `:if` option.
|
|
207
|
+
|
|
173
208
|
```ruby
|
|
174
209
|
ActiveAdmin.register Post do
|
|
175
210
|
menu if: proc{ current_user.can_edit_posts? }
|
|
@@ -193,6 +228,14 @@ end
|
|
|
193
228
|
Note that the "Blog" parent menu item doesn't even have to exist yet; it can be
|
|
194
229
|
dynamically generated for you.
|
|
195
230
|
|
|
231
|
+
To further nest an item under a submenu, provide an array of parents.
|
|
232
|
+
|
|
233
|
+
```ruby
|
|
234
|
+
ActiveAdmin.register Post do
|
|
235
|
+
menu parent: ["Admin", "Blog"]
|
|
236
|
+
end
|
|
237
|
+
```
|
|
238
|
+
|
|
196
239
|
### Customizing Parent Menu Items
|
|
197
240
|
|
|
198
241
|
All of the options given to a standard menu item are also available to
|
|
@@ -244,9 +287,15 @@ config.namespace :admin do |admin|
|
|
|
244
287
|
menu.add label: "The Application", url: "/", priority: 0
|
|
245
288
|
|
|
246
289
|
menu.add label: "Sites" do |sites|
|
|
247
|
-
sites.add label: "Google",
|
|
248
|
-
|
|
249
|
-
|
|
290
|
+
sites.add label: "Google",
|
|
291
|
+
url: "http://google.com",
|
|
292
|
+
html_options: { target: :blank }
|
|
293
|
+
|
|
294
|
+
sites.add label: "Facebook",
|
|
295
|
+
url: "http://facebook.com"
|
|
296
|
+
|
|
297
|
+
sites.add label: "Github",
|
|
298
|
+
url: "http://github.com"
|
|
250
299
|
end
|
|
251
300
|
end
|
|
252
301
|
end
|
|
@@ -285,7 +334,8 @@ end
|
|
|
285
334
|
|
|
286
335
|
## Eager loading
|
|
287
336
|
|
|
288
|
-
A common way to increase page performance is to
|
|
337
|
+
A common way to increase page performance is to eliminate N+1 queries by eager
|
|
338
|
+
loading associations:
|
|
289
339
|
|
|
290
340
|
```ruby
|
|
291
341
|
ActiveAdmin.register Post do
|
|
@@ -295,7 +345,13 @@ end
|
|
|
295
345
|
|
|
296
346
|
## Customizing resource retrieval
|
|
297
347
|
|
|
298
|
-
|
|
348
|
+
Our controllers are built on [Inherited
|
|
349
|
+
Resources](https://github.com/activeadmin/inherited_resources), so you can use
|
|
350
|
+
[all of its
|
|
351
|
+
features](https://github.com/activeadmin/inherited_resources#overwriting-defaults).
|
|
352
|
+
|
|
353
|
+
If you need to customize the collection properties, you can overwrite the
|
|
354
|
+
`scoped_collection` method.
|
|
299
355
|
|
|
300
356
|
```ruby
|
|
301
357
|
ActiveAdmin.register Post do
|
|
@@ -307,21 +363,33 @@ ActiveAdmin.register Post do
|
|
|
307
363
|
end
|
|
308
364
|
```
|
|
309
365
|
|
|
310
|
-
If you need to completely replace the record retrieving code (e.g., you have a
|
|
311
|
-
`to_param` implementation in your models), override the `
|
|
366
|
+
If you need to completely replace the record retrieving code (e.g., you have a
|
|
367
|
+
custom `to_param` implementation in your models), override the `find_resource` method
|
|
368
|
+
on the controller:
|
|
312
369
|
|
|
313
370
|
```ruby
|
|
314
371
|
ActiveAdmin.register Post do
|
|
315
372
|
controller do
|
|
316
373
|
def find_resource
|
|
317
|
-
|
|
374
|
+
scoped_collection.where(id: params[:id]).first!
|
|
318
375
|
end
|
|
319
376
|
end
|
|
320
377
|
end
|
|
321
378
|
```
|
|
322
379
|
|
|
323
|
-
|
|
324
|
-
|
|
380
|
+
Note that if you use an authorization library like CanCan, you should be careful
|
|
381
|
+
to not write code like this, otherwise **your authorization rules won't be
|
|
382
|
+
applied**:
|
|
383
|
+
|
|
384
|
+
```ruby
|
|
385
|
+
ActiveAdmin.register Post do
|
|
386
|
+
controller do
|
|
387
|
+
def find_resource
|
|
388
|
+
Post.where(id: params[:id]).first!
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
end
|
|
392
|
+
```
|
|
325
393
|
|
|
326
394
|
## Belongs To
|
|
327
395
|
|
|
@@ -336,7 +404,7 @@ ActiveAdmin.register Ticket do
|
|
|
336
404
|
end
|
|
337
405
|
```
|
|
338
406
|
|
|
339
|
-
Projects will be available as usual and tickets will be
|
|
407
|
+
Projects will be available as usual and tickets will be available by visiting
|
|
340
408
|
`/admin/projects/1/tickets` assuming that a Project with the id of 1 exists.
|
|
341
409
|
Active Admin does not add "Tickets" to the global navigation because the routes
|
|
342
410
|
can only be generated when there is a project id.
|
|
@@ -349,8 +417,8 @@ ActiveAdmin.register Project do
|
|
|
349
417
|
|
|
350
418
|
sidebar "Project Details", only: [:show, :edit] do
|
|
351
419
|
ul do
|
|
352
|
-
li link_to "Tickets", admin_project_tickets_path(
|
|
353
|
-
li link_to "Milestones", admin_project_milestones_path(
|
|
420
|
+
li link_to "Tickets", admin_project_tickets_path(resource)
|
|
421
|
+
li link_to "Milestones", admin_project_milestones_path(resource)
|
|
354
422
|
end
|
|
355
423
|
end
|
|
356
424
|
end
|
|
@@ -367,7 +435,7 @@ end
|
|
|
367
435
|
In some cases (like Projects), there are many sub resources and you would
|
|
368
436
|
actually like the global navigation to switch when the user navigates "into" a
|
|
369
437
|
project. To accomplish this, Active Admin stores the `belongs_to` resources in a
|
|
370
|
-
|
|
438
|
+
separate menu which you can use if you so wish. To use:
|
|
371
439
|
|
|
372
440
|
```ruby
|
|
373
441
|
ActiveAdmin.register Ticket do
|
|
@@ -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
|
|
|
@@ -55,6 +53,8 @@ index do
|
|
|
55
53
|
end
|
|
56
54
|
```
|
|
57
55
|
|
|
56
|
+
## Defining Actions
|
|
57
|
+
|
|
58
58
|
To setup links to View, Edit and Delete a resource, use the `actions` method:
|
|
59
59
|
|
|
60
60
|
```ruby
|
|
@@ -94,7 +94,7 @@ Or append custom action with custom html via arbre:
|
|
|
94
94
|
index do
|
|
95
95
|
column :title
|
|
96
96
|
actions do |post|
|
|
97
|
-
a
|
|
97
|
+
a "View", href: admin_post_path(post)
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
```
|
|
@@ -111,15 +111,27 @@ index do
|
|
|
111
111
|
end
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
In addition, you can insert the position of the row in the greater
|
|
115
|
+
collection by using the index_column special command:
|
|
116
|
+
|
|
117
|
+
```ruby
|
|
118
|
+
index do
|
|
119
|
+
selectable_column
|
|
120
|
+
index_column
|
|
121
|
+
column :title
|
|
122
|
+
end
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
index_column take an optional offset parameter to allow a developer to set
|
|
126
|
+
the starting number for the index (default is 1).
|
|
127
|
+
|
|
114
128
|
## Sorting
|
|
115
129
|
|
|
116
130
|
When a column is generated from an Active Record attribute, the table is
|
|
117
131
|
sortable by default. If you are creating a custom column, you may need to give
|
|
118
132
|
Active Admin a hint for how to sort the table.
|
|
119
133
|
|
|
120
|
-
|
|
121
|
-
is the attribute which gets used to sort objects using Active Record.
|
|
122
|
-
|
|
134
|
+
You can pass the key specifying the attribute which gets used to sort objects using Active Record.
|
|
123
135
|
By default, this is the column on the resource's table that the attribute corresponds to.
|
|
124
136
|
Otherwise, any attribute that the resource collection responds to can be used.
|
|
125
137
|
|
|
@@ -148,6 +160,24 @@ index do
|
|
|
148
160
|
end
|
|
149
161
|
```
|
|
150
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
|
+
|
|
151
181
|
## Associated Sorting
|
|
152
182
|
|
|
153
183
|
You're normally able to sort columns alphabetically, but by default you
|
|
@@ -163,6 +193,13 @@ controller do
|
|
|
163
193
|
end
|
|
164
194
|
```
|
|
165
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
|
+
|
|
166
203
|
Then it's simple to sort by any Publisher attribute from within the index table:
|
|
167
204
|
|
|
168
205
|
```ruby
|
data/docs/3-index-pages.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/3-index-pages.html
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Customizing the Index Page
|
|
2
6
|
|
|
3
7
|
Filtering and listing resources is one of the most important tasks for
|
|
@@ -77,7 +81,8 @@ end
|
|
|
77
81
|
|
|
78
82
|
Out of the box, Active Admin supports the following filter types:
|
|
79
83
|
|
|
80
|
-
* *:string* -
|
|
84
|
+
* *:string* - A drop down for selecting "Contains", "Equals", "Starts with",
|
|
85
|
+
"Ends with" and an input for a value.
|
|
81
86
|
* *:date_range* - A start and end date field with calendar inputs
|
|
82
87
|
* *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
|
|
83
88
|
Than" and an input for a value.
|
|
@@ -100,6 +105,24 @@ the collection as a proc to be called at render time.
|
|
|
100
105
|
filter :author, as: :check_boxes, collection: proc { Author.all }
|
|
101
106
|
```
|
|
102
107
|
|
|
108
|
+
To override options for string or numeric filter pass `filters` option.
|
|
109
|
+
|
|
110
|
+
```ruby
|
|
111
|
+
filter :title, filters: [:starts_with, :ends_with]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Also, if you don't need the select with the options 'contains', 'equals',
|
|
115
|
+
'starts_with' or 'ends_with' just add the option to the filter name with an
|
|
116
|
+
underscore.
|
|
117
|
+
|
|
118
|
+
For example:
|
|
119
|
+
|
|
120
|
+
```ruby
|
|
121
|
+
filter :name_equals
|
|
122
|
+
# or
|
|
123
|
+
filter :name_contains
|
|
124
|
+
```
|
|
125
|
+
|
|
103
126
|
You can change the filter label by passing a label option:
|
|
104
127
|
|
|
105
128
|
```ruby
|
|
@@ -108,9 +131,11 @@ filter :author, label: 'Something else'
|
|
|
108
131
|
|
|
109
132
|
By default, Active Admin will try to use ActiveModel I18n to determine the label.
|
|
110
133
|
|
|
111
|
-
You can also filter on more than one attribute of a model using the
|
|
112
|
-
|
|
113
|
-
|
|
134
|
+
You can also filter on more than one attribute of a model using the [Ransack
|
|
135
|
+
search predicate
|
|
136
|
+
syntax](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching).
|
|
137
|
+
If using a custom search method, you will also need to specify the field type
|
|
138
|
+
using `:as` and the label.
|
|
114
139
|
|
|
115
140
|
```ruby
|
|
116
141
|
filter :first_name_or_last_name_cont, as: :string, label: "Name"
|
|
@@ -152,11 +177,18 @@ preserve_default_filters!
|
|
|
152
177
|
filter :author
|
|
153
178
|
```
|
|
154
179
|
|
|
180
|
+
Or you can also remove a filter and still preserve the default filters:
|
|
181
|
+
|
|
182
|
+
```ruby
|
|
183
|
+
preserve_default_filters!
|
|
184
|
+
remove_filter :id
|
|
185
|
+
```
|
|
186
|
+
|
|
155
187
|
## Index Scopes
|
|
156
188
|
|
|
157
189
|
You can define custom scopes for your index page. This will add a tab bar above
|
|
158
|
-
the index table to quickly filter your collection on pre-defined scopes. There
|
|
159
|
-
a number of ways to define your scopes:
|
|
190
|
+
the index table to quickly filter your collection on pre-defined scopes. There
|
|
191
|
+
are a number of ways to define your scopes:
|
|
160
192
|
|
|
161
193
|
```ruby
|
|
162
194
|
scope :all, default: true
|
|
@@ -174,11 +206,31 @@ scope ->{ Date.today.strftime '%A' }, :published_today
|
|
|
174
206
|
scope("Inactive") { |scope| scope.where(active: false) }
|
|
175
207
|
|
|
176
208
|
# conditionally show a custom controller scope
|
|
177
|
-
scope "Published", if:
|
|
209
|
+
scope "Published", if: -> { current_admin_user.can? :manage, Posts } do |posts|
|
|
178
210
|
posts.published
|
|
179
211
|
end
|
|
180
212
|
```
|
|
181
213
|
|
|
214
|
+
Scopes can be labelled with a translation, e.g.
|
|
215
|
+
`active_admin.scopes.scope_method`.
|
|
216
|
+
|
|
217
|
+
### Scopes groups
|
|
218
|
+
|
|
219
|
+
You can assign group names to scopes to keep related scopes together and separate them from the rest.
|
|
220
|
+
|
|
221
|
+
```ruby
|
|
222
|
+
# a scope in the default group
|
|
223
|
+
scope :all
|
|
224
|
+
|
|
225
|
+
# two scopes used to filter by status
|
|
226
|
+
scope :active, group: :status
|
|
227
|
+
scope :inactive, group: :status
|
|
228
|
+
|
|
229
|
+
# two scopes used to filter by date
|
|
230
|
+
scope :today, group: :date
|
|
231
|
+
scope :tomorrow, group: :date
|
|
232
|
+
```
|
|
233
|
+
|
|
182
234
|
## Index default sort order
|
|
183
235
|
|
|
184
236
|
You can define the default sort order for index pages:
|
|
@@ -207,11 +259,19 @@ ActiveAdmin.register Post do
|
|
|
207
259
|
end
|
|
208
260
|
```
|
|
209
261
|
|
|
262
|
+
Or allow users to choose themselves using dropdown with values
|
|
263
|
+
|
|
264
|
+
```ruby
|
|
265
|
+
ActiveAdmin.register Post do
|
|
266
|
+
config.per_page = [10, 50, 100]
|
|
267
|
+
end
|
|
268
|
+
```
|
|
269
|
+
|
|
210
270
|
You can change it per request / action too:
|
|
211
271
|
|
|
212
272
|
```ruby
|
|
213
273
|
controller do
|
|
214
|
-
|
|
274
|
+
before_action only: :index do
|
|
215
275
|
@per_page = 100
|
|
216
276
|
end
|
|
217
277
|
end
|
|
@@ -260,6 +320,9 @@ ActiveAdmin.setup do |config|
|
|
|
260
320
|
end
|
|
261
321
|
```
|
|
262
322
|
|
|
263
|
-
Note: you have to actually implement PDF rendering for your action, ActiveAdmin
|
|
323
|
+
Note: you have to actually implement PDF rendering for your action, ActiveAdmin
|
|
324
|
+
does not provide this feature. This setting just allows you to specify formats
|
|
325
|
+
that you want to show up under the index collection.
|
|
264
326
|
|
|
265
|
-
You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the
|
|
327
|
+
You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the
|
|
328
|
+
PDF generation you want.
|
data/docs/4-csv-format.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/4-csv-format.html
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Customizing the CSV format
|
|
2
6
|
|
|
3
7
|
Active Admin provides CSV file downloads on the index screen for each Resource.
|
|
@@ -11,6 +15,7 @@ ActiveAdmin.register Post do
|
|
|
11
15
|
csv do
|
|
12
16
|
column :title
|
|
13
17
|
column(:author) { |post| post.author.full_name }
|
|
18
|
+
column('bODY', humanize_name: false) # preserve case
|
|
14
19
|
end
|
|
15
20
|
end
|
|
16
21
|
```
|
|
@@ -37,3 +42,33 @@ config.csv_options = { col_sep: ';' }
|
|
|
37
42
|
# Force the use of quotes
|
|
38
43
|
config.csv_options = { force_quotes: true }
|
|
39
44
|
```
|
|
45
|
+
|
|
46
|
+
You can customize the filename by overriding `csv_filename` in the controller block.
|
|
47
|
+
|
|
48
|
+
```ruby
|
|
49
|
+
ActiveAdmin.register User do
|
|
50
|
+
controller do
|
|
51
|
+
def csv_filename
|
|
52
|
+
'User Details.csv'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Streaming
|
|
59
|
+
|
|
60
|
+
By default Active Admin streams the CSV response to your browser as it's generated.
|
|
61
|
+
This is good because it prevents request timeouts, for example the infamous H12
|
|
62
|
+
error on Heroku.
|
|
63
|
+
|
|
64
|
+
However if an exception occurs while generating the CSV, the request will eventually
|
|
65
|
+
time out, with the last line containing the exception message. CSV streaming is
|
|
66
|
+
disabled in development to help debug these exceptions. That lets you use tools like
|
|
67
|
+
better_errors and web-console to debug the issue. If you want to customize the
|
|
68
|
+
environments where CSV streaming is disabled, you can change this setting:
|
|
69
|
+
|
|
70
|
+
```ruby
|
|
71
|
+
# config/initializers/active_admin.rb
|
|
72
|
+
|
|
73
|
+
config.disable_streaming_in = ['development', 'staging']
|
|
74
|
+
```
|