activeadmin 1.0.0 → 2.11.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 +778 -68
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +80 -82
- data/README.md +73 -19
- data/app/assets/javascripts/active_admin/base.js +524 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +7 -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 +349 -0
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +3 -4
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- 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/_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 -10
- 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/_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 +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 +2 -3
- 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/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/_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.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
- data/config/locales/ar.yml +10 -11
- 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 +1 -3
- data/config/locales/cs.yml +1 -2
- data/config/locales/da.yml +2 -3
- data/config/locales/de-CH.yml +2 -3
- data/config/locales/de.yml +30 -3
- data/config/locales/el.yml +2 -3
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +46 -5
- data/config/locales/en.yml +32 -8
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +6 -3
- data/config/locales/es.yml +36 -10
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +15 -7
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +5 -2
- data/config/locales/id.yml +2 -3
- data/config/locales/it.yml +33 -7
- data/config/locales/ja.yml +9 -5
- data/config/locales/ko.yml +2 -3
- 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 +16 -7
- data/config/locales/nl.yml +14 -4
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +10 -3
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +4 -4
- data/config/locales/ru.yml +4 -3
- data/config/locales/sk.yml +60 -2
- data/config/locales/sv-SE.yml +4 -3
- data/config/locales/tr.yml +10 -2
- data/config/locales/uk.yml +4 -3
- data/config/locales/vi.yml +53 -12
- data/config/locales/zh-CN.yml +34 -7
- data/config/locales/zh-TW.yml +2 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +42 -15
- data/docs/1-general-configuration.md +46 -4
- data/docs/10-custom-pages.md +24 -5
- data/docs/11-decorators.md +17 -5
- data/docs/12-arbre-components.md +47 -9
- data/docs/13-authorization-adapter.md +69 -35
- data/docs/14-gotchas.md +41 -22
- data/docs/2-resource-customization.md +57 -20
- data/docs/3-index-pages/custom-index.md +2 -1
- data/docs/3-index-pages/index-as-block.md +0 -5
- data/docs/3-index-pages/index-as-blog.md +1 -6
- data/docs/3-index-pages/index-as-grid.md +0 -5
- data/docs/3-index-pages/index-as-table.md +13 -14
- data/docs/3-index-pages.md +47 -12
- data/docs/4-csv-format.md +2 -1
- data/docs/5-forms.md +65 -22
- data/docs/6-show-pages.md +14 -1
- data/docs/7-sidebars.md +2 -1
- data/docs/8-custom-actions.md +16 -2
- data/docs/9-batch-actions.md +5 -3
- data/docs/CNAME +1 -1
- data/docs/Gemfile +4 -2
- data/docs/Gemfile.lock +283 -0
- data/docs/_config.yml +3 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +21 -23
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +110 -9
- data/docs/stylesheets/main.css +55 -2
- data/lib/active_admin/abstract_view_factory.rb +14 -51
- data/lib/active_admin/application.rb +65 -170
- data/lib/active_admin/application_settings.rb +43 -0
- data/lib/active_admin/asset_registration.rb +1 -0
- data/lib/active_admin/authorization_adapter.rb +4 -6
- data/lib/active_admin/base_controller/authorization.rb +18 -19
- data/lib/active_admin/base_controller/menu.rb +10 -9
- data/lib/active_admin/base_controller.rb +12 -12
- 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 +8 -6
- 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 +22 -14
- data/lib/active_admin/dependency.rb +15 -78
- data/lib/active_admin/deprecation.rb +1 -25
- data/lib/active_admin/devise.rb +18 -7
- data/lib/active_admin/dsl.rb +5 -11
- 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 +14 -14
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +28 -0
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +12 -9
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +32 -35
- data/lib/active_admin/filters.rb +8 -5
- 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 +14 -6
- 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 +24 -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 -1
- 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 +13 -15
- data/lib/active_admin/menu_collection.rb +1 -2
- 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 +6 -9
- 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 +37 -24
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +35 -23
- 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 +2 -1
- 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 +23 -9
- data/lib/active_admin/resource/action_items.rb +16 -6
- data/lib/active_admin/resource/attributes.rb +10 -6
- 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 +2 -1
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +26 -15
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +5 -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 +16 -12
- 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 +15 -11
- data/lib/active_admin/resource_dsl.rb +18 -28
- data/lib/active_admin/router.rb +91 -84
- data/lib/active_admin/scope.rb +22 -13
- 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 +1 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
- data/lib/active_admin/view_helpers/display_helper.rb +26 -9
- 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 +2 -1
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +17 -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 +3 -1
- data/lib/active_admin/views/action_items.rb +2 -1
- data/lib/active_admin/views/components/active_admin_form.rb +15 -9
- 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 +9 -11
- data/lib/active_admin/views/components/index_list.rb +4 -5
- 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 +19 -17
- 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 +19 -23
- 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 -16
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -4
- data/lib/active_admin/views/index_as_grid.rb +27 -26
- data/lib/active_admin/views/index_as_table.rb +53 -26
- data/lib/active_admin/views/pages/base.rb +47 -63
- 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 +7 -1
- data/lib/active_admin/views/tabbed_navigation.rb +5 -59
- data/lib/active_admin/views/title_bar.rb +6 -5
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +70 -68
- 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 +7 -6
- data/lib/generators/active_admin/install/install_generator.rb +19 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
- data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -1
- 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/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 +158 -580
- data/.gitignore +0 -49
- data/.hound.yml +0 -14
- data/.rubocop.yml +0 -27
- data/.travis.yml +0 -66
- data/.yardopts +0 -8
- data/Appraisals +0 -41
- data/Gemfile +0 -49
- data/Rakefile +0 -65
- data/activeadmin.gemspec +0 -34
- 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/base.js.coffee +0 -9
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -22
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -18
- 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 -44
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
- data/codecov.yml +0 -23
- data/cucumber.yml +0 -3
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -158
- 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 -199
- data/features/index/format_as_csv.feature +0 -203
- 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 -270
- 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 -34
- 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/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 -27
- 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 -20
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -12
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -39
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/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 -25
- 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 -121
- data/features/support/paths.rb +0 -73
- 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 -45
- data/gemfiles/rails_50.gemfile +0 -45
- data/gemfiles/rails_51.gemfile +0 -45
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/filters/humanized.rb +0 -68
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/rails_5_master.rb +0 -118
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/spec/bug_report_templates_spec.rb +0 -27
- 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 -62
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/javascript_spec.rb +0 -22
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -12
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -182
- data/spec/support/rails_template_with_data.rb +0 -68
- 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 -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 -125
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -180
- 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 -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 -77
- 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 -306
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -122
- data/spec/unit/filters/active_spec.rb +0 -14
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -500
- data/spec/unit/filters/humanized_spec.rb +0 -64
- 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 -36
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -12
- 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 -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 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -125
- 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 -131
- 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 -65
- data/spec/unit/resource/attributes_spec.rb +0 -50
- 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 -38
- 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 -274
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -313
- data/spec/unit/routing_spec.rb +0 -213
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -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 -25
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -189
- data/spec/unit/views/components/index_list_spec.rb +0 -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 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -249
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -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 -37
- data/tasks/lint.rake +0 -8
- data/tasks/local.rake +0 -25
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -46
- data/tasks/yard.rake +0 -9
data/docs/11-decorators.md
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/11-decorators.html
|
3
3
|
---
|
4
|
+
|
4
5
|
# Decorators
|
5
6
|
|
6
7
|
Active Admin allows you to use the decorator pattern to provide view-specific
|
7
8
|
versions of a resource. [Draper](https://github.com/drapergem/draper) is
|
8
9
|
recommended but not required.
|
9
10
|
|
10
|
-
To use decorator support without Draper, your decorator must support a variety
|
11
|
-
of collection methods to support pagination, filtering, etc. See
|
12
|
-
[this github issue discussion](https://github.com/activeadmin/activeadmin/issues/3600)
|
13
|
-
and [this gem](https://github.com/kiote/activeadmin-poro-decorator) for more details.
|
14
|
-
|
15
11
|
## Example usage
|
16
12
|
|
17
13
|
```ruby
|
@@ -41,6 +37,22 @@ ActiveAdmin.register Post do
|
|
41
37
|
end
|
42
38
|
```
|
43
39
|
|
40
|
+
You can pass any decorator class as an argument to `decorate_with`
|
41
|
+
as long as it accepts the record to be decorated as a parameter in
|
42
|
+
the initializer, and responds to all the necessary methods.
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
# app/decorators/post_decorator.rb
|
46
|
+
class PostDecorator
|
47
|
+
attr_reader :post
|
48
|
+
delegate_missing_to :post
|
49
|
+
|
50
|
+
def initialize(post)
|
51
|
+
@post = post
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
44
56
|
## Forms
|
45
57
|
|
46
58
|
By default, ActiveAdmin does *not* decorate the resource used to render forms.
|
data/docs/12-arbre-components.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/12-arbre-components.html
|
3
3
|
---
|
4
|
+
|
4
5
|
# Arbre Components
|
5
6
|
|
6
7
|
Arbre allows the creation of shareable and extendable HTML components and is
|
@@ -21,7 +22,7 @@ ActiveAdmin.register Post do
|
|
21
22
|
row :id
|
22
23
|
row 'Tags' do
|
23
24
|
post.tags.each do |tag|
|
24
|
-
a tag, href: admin_post_path(q: {tagged_with_contains: tag})
|
25
|
+
a tag, href: admin_post_path(q: {tagged_with_contains: tag})
|
25
26
|
text_node " ".html_safe
|
26
27
|
end
|
27
28
|
end
|
@@ -57,7 +58,7 @@ The Columns component allows you draw content into scalable columns. All you
|
|
57
58
|
need to do is define the number of columns and the component will take care of
|
58
59
|
the rest.
|
59
60
|
|
60
|
-
|
61
|
+
### Simple Columns
|
61
62
|
|
62
63
|
To create simple columns, use the `columns` method. Within the block, call
|
63
64
|
the #column method to create a new column.
|
@@ -114,6 +115,21 @@ end
|
|
114
115
|
In the above example, the first column will not grow larger than 200px and will
|
115
116
|
not shrink less than 100px.
|
116
117
|
|
118
|
+
### Custom Column Class
|
119
|
+
|
120
|
+
Pass the `:class` option to the column method to set a custom class.
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
columns do
|
124
|
+
column class: "important" do
|
125
|
+
span "Column # 1"
|
126
|
+
end
|
127
|
+
column do
|
128
|
+
span "Column # 2"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
```
|
132
|
+
|
117
133
|
## Table For
|
118
134
|
|
119
135
|
Table For provides the ability to create tables like those present
|
@@ -129,29 +145,51 @@ table_for order.payments do
|
|
129
145
|
end
|
130
146
|
```
|
131
147
|
|
132
|
-
|
148
|
+
The `column` method can take a title as its first argument and data
|
133
149
|
(`:your_method`) as its second (or first if no title provided). Column also
|
134
150
|
takes a block.
|
135
151
|
|
152
|
+
### Internationalization
|
153
|
+
|
154
|
+
To customize the internationalization for the component, specify a resource to
|
155
|
+
use for translations via the `i18n` named parameter. This is only necessary for
|
156
|
+
non-`ActiveRecord::Relation` collections:
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
table_for payments, i18n: Payment do
|
160
|
+
# ...
|
161
|
+
end
|
162
|
+
```
|
163
|
+
|
136
164
|
## Status tag
|
137
165
|
|
138
166
|
Status tags provide convenient syntactic sugar for styling items that have
|
139
167
|
status. A common example of where the status tag could be useful is for orders
|
140
168
|
that are complete or in progress. `status_tag` takes a status, like
|
141
|
-
"In Progress",
|
142
|
-
|
169
|
+
"In Progress", and a hash of options. The status_tag will generate HTML markup
|
170
|
+
that Active Admin CSS uses in styling.
|
143
171
|
|
144
172
|
```ruby
|
145
173
|
status_tag 'In Progress'
|
146
174
|
# => <span class='status_tag in_progress'>In Progress</span>
|
147
175
|
|
148
|
-
status_tag 'active', :
|
149
|
-
# => <span class='status_tag active
|
176
|
+
status_tag 'active', class: 'important', id: 'status_123', label: 'on'
|
177
|
+
# => <span class='status_tag active important' id='status_123'>on</span>
|
178
|
+
```
|
179
|
+
|
180
|
+
When providing a `true` or `false` value, the `status_tag` will display "Yes"
|
181
|
+
or "No". This can be configured through the `"en.active_admin.status_tag"`
|
182
|
+
locale.
|
150
183
|
|
151
|
-
|
152
|
-
|
184
|
+
```ruby
|
185
|
+
status_tag true
|
186
|
+
# => <span class='status_tag yes'>Yes</span>
|
153
187
|
```
|
154
188
|
|
189
|
+
In the case that a boolean field is `nil`, it will display "No" as a default.
|
190
|
+
But using the `"en.active_admin.status_tag.unset"` locale key, it can be
|
191
|
+
configured to display something else.
|
192
|
+
|
155
193
|
## Tabs
|
156
194
|
|
157
195
|
The Tabs component is helpful for saving page real estate. The first tab will be
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/13-authorization-adapter.html
|
3
3
|
---
|
4
|
+
|
4
5
|
# Authorization Adapter
|
5
6
|
|
6
7
|
Active Admin offers the ability to define and use your own authorization
|
@@ -9,8 +10,8 @@ taken. By default, '#authorized?' returns true.
|
|
9
10
|
|
10
11
|
## Setting up your own AuthorizationAdapter
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
The following example shows how to set up and tie your authorization
|
14
|
+
adapter class to Active Admin:
|
14
15
|
|
15
16
|
```ruby
|
16
17
|
# app/models/only_authors_authorization.rb
|
@@ -40,7 +41,11 @@ application's `config/initializers/active_admin.rb` and add/modify the line:
|
|
40
41
|
config.authorization_adapter = "OnlyAuthorsAuthorization"
|
41
42
|
```
|
42
43
|
|
43
|
-
|
44
|
+
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
45
|
+
`#authorized?` method will be called.
|
46
|
+
|
47
|
+
Authorization adapters can be configured per ActiveAdmin namespace as well, for
|
48
|
+
example:
|
44
49
|
|
45
50
|
```ruby
|
46
51
|
ActiveAdmin.setup do |config|
|
@@ -53,9 +58,6 @@ ActiveAdmin.setup do |config|
|
|
53
58
|
end
|
54
59
|
```
|
55
60
|
|
56
|
-
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
57
|
-
`#authorized?` method will be called.
|
58
|
-
|
59
61
|
## Getting Access to the Current User
|
60
62
|
|
61
63
|
From within your authorization adapter, you can call the `#user` method to
|
@@ -73,9 +75,9 @@ end
|
|
73
75
|
|
74
76
|
## Scoping Collections in Authorization Adapters
|
75
77
|
|
76
|
-
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
77
|
-
for the adapter to scope the resource's collection. For
|
78
|
-
centralize the scoping:
|
78
|
+
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
79
|
+
(`#scope_collection`) for the adapter to scope the resource's collection. For
|
80
|
+
example, you may want to centralize the scoping:
|
79
81
|
|
80
82
|
```ruby
|
81
83
|
class OnlyMyAccount < ActiveAdmin::AuthorizationAdapter
|
@@ -104,7 +106,9 @@ class OnlyDashboard < ActiveAdmin::AuthorizationAdapter
|
|
104
106
|
def authorized?(action, subject = nil)
|
105
107
|
case subject
|
106
108
|
when ActiveAdmin::Page
|
107
|
-
action == :read &&
|
109
|
+
action == :read &&
|
110
|
+
subject.name == "Dashboard" &&
|
111
|
+
subject.namespace.name == :admin
|
108
112
|
else
|
109
113
|
false
|
110
114
|
end
|
@@ -116,24 +120,23 @@ end
|
|
116
120
|
|
117
121
|
By default Active Admin simplifies the controller actions into 4 actions:
|
118
122
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
123
|
+
* `:read` - This controls if the user can view the menu item as well as the
|
124
|
+
index and show screens.
|
125
|
+
* `:create` - This controls if the user can view the new screen and submit
|
126
|
+
the form to the create action.
|
127
|
+
* `:update` - This controls if the user can view the edit screen and submit
|
128
|
+
the form to the update action.
|
129
|
+
* `:destroy` - This controls if the user can delete a resource.
|
126
130
|
|
127
131
|
Each of these actions is available as a constant. Eg: `:read` is available as
|
128
132
|
`ActiveAdmin::Authorization::READ`.
|
129
133
|
|
130
|
-
|
131
134
|
## Checking for Authorization in Controllers and Views
|
132
135
|
|
133
136
|
Active Admin provides a helper method to check if the current user is
|
134
137
|
authorized to perform an action on a subject.
|
135
138
|
|
136
|
-
|
139
|
+
Use the `#authorized?(action, subject)` method to check.
|
137
140
|
|
138
141
|
```ruby
|
139
142
|
ActiveAdmin.register Post do
|
@@ -177,28 +180,28 @@ end
|
|
177
180
|
|
178
181
|
Sub-classing `ActiveAdmin::AuthorizationAdapter` is fairly low level. Many times
|
179
182
|
it's nicer to have a simpler DSL for managing authorization. Active Admin
|
180
|
-
provides an adapter out of the box for [
|
181
|
-
and [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
183
|
+
provides an adapter out of the box for [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
182
184
|
|
183
|
-
To use the CanCan adapter,
|
185
|
+
To use the CanCan adapter, update the configuration in the Active Admin
|
184
186
|
initializer:
|
185
187
|
|
186
188
|
```ruby
|
187
189
|
config.authorization_adapter = ActiveAdmin::CanCanAdapter
|
188
190
|
```
|
189
191
|
|
190
|
-
You can also specify a method to be called on unauthorized access. This is
|
191
|
-
in order to prevent a redirect loop that can happen if a user tries to
|
192
|
-
they don't have permissions for (see
|
192
|
+
You can also specify a method to be called on unauthorized access. This is
|
193
|
+
necessary in order to prevent a redirect loop that can happen if a user tries to
|
194
|
+
access a page they don't have permissions for (see
|
195
|
+
[#2081](https://github.com/activeadmin/activeadmin/issues/2081)).
|
193
196
|
|
194
197
|
```ruby
|
195
198
|
config.on_unauthorized_access = :access_denied
|
196
199
|
```
|
197
200
|
|
198
|
-
The method `access_denied` would be defined in `application_controller.rb`. Here
|
199
|
-
example that redirects the user from the page they don't have permission
|
200
|
-
access to a resource they have permission to access (organizations in this
|
201
|
-
also displays the error message in the browser:
|
201
|
+
The method `access_denied` would be defined in `application_controller.rb`. Here
|
202
|
+
is one example that redirects the user from the page they don't have permission
|
203
|
+
to access to a resource they have permission to access (organizations in this
|
204
|
+
case), and also displays the error message in the browser:
|
202
205
|
|
203
206
|
```ruby
|
204
207
|
class ApplicationController < ActionController::Base
|
@@ -217,7 +220,7 @@ changed from the initializer:
|
|
217
220
|
config.cancan_ability_class = "MyCustomAbility"
|
218
221
|
```
|
219
222
|
|
220
|
-
Now you can simply use
|
223
|
+
Now you can simply use CanCanCan the way that you would expect and
|
221
224
|
Active Admin will use it for authorization:
|
222
225
|
|
223
226
|
```ruby
|
@@ -229,23 +232,54 @@ class Ability
|
|
229
232
|
can :manage, Post
|
230
233
|
can :read, User
|
231
234
|
can :manage, User, id: user.id
|
232
|
-
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name:
|
235
|
+
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name: "admin"
|
233
236
|
end
|
234
237
|
|
235
238
|
end
|
236
239
|
```
|
237
240
|
|
238
|
-
To view more details about the API's, visit project pages of
|
241
|
+
To view more details about the API's, visit project pages of
|
242
|
+
[CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
239
243
|
|
240
244
|
## Using the Pundit Adapter
|
241
245
|
|
242
|
-
Active Admin provides an adapter out of the box
|
246
|
+
Active Admin also provides an adapter out of the box for
|
247
|
+
[Pundit](https://github.com/varvet/pundit).
|
243
248
|
|
244
|
-
To use the Pundit adapter,
|
249
|
+
To use the Pundit adapter, update the configuration in the Active Admin
|
245
250
|
initializer:
|
246
251
|
|
247
252
|
```ruby
|
248
253
|
config.authorization_adapter = ActiveAdmin::PunditAdapter
|
249
254
|
```
|
250
255
|
|
251
|
-
|
256
|
+
Once that's done, Active Admin will pick up your Pundit policies, and use
|
257
|
+
them for authorization. For more information about setting up Pundit, see
|
258
|
+
[their documentation](https://github.com/varvet/pundit#installation).
|
259
|
+
|
260
|
+
Pundit also has [verify_authorized and/or verify_policy_scoped
|
261
|
+
methods](https://github.com/varvet/pundit#ensuring-policies-and-scopes-are-used)
|
262
|
+
to enforce usage of `authorized` and `policy_scope`. This conflicts with Active
|
263
|
+
Admin's authorization architecture, so if you're using those features, you'll
|
264
|
+
want to disable them for Active Admin's controllers:
|
265
|
+
|
266
|
+
```ruby
|
267
|
+
class ApplicationController < ActionController::Base
|
268
|
+
include Pundit
|
269
|
+
after_action :verify_authorized, except: :index, unless: :active_admin_controller?
|
270
|
+
after_action :verify_policy_scoped, only: :index, unless: :active_admin_controller?
|
271
|
+
|
272
|
+
def active_admin_controller?
|
273
|
+
is_a?(ActiveAdmin::BaseController)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
```
|
277
|
+
|
278
|
+
If you want to use batch actions, ensure that `destroy_all?` method is defined
|
279
|
+
in your policy class. You can use this [template
|
280
|
+
policy](https://github.com/activeadmin/activeadmin/blob/master/spec/support/templates/policies/application_policy.rb)
|
281
|
+
in your application instead of default one generated by Pundit's
|
282
|
+
`rails g pundit:install` command.
|
283
|
+
|
284
|
+
In addition, there are [example policies](https://github.com/activeadmin/activeadmin/tree/master/spec/support/templates/policies/active_admin)
|
285
|
+
for restricting access to ActiveAdmin's pages and comments.
|
data/docs/14-gotchas.md
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/14-gotchas.html
|
3
3
|
---
|
4
|
-
|
4
|
+
|
5
|
+
# Gotchas
|
5
6
|
|
6
7
|
## Security
|
7
8
|
|
8
9
|
### Spreadsheet applications vulnerable to unescaped CSV data
|
9
10
|
|
10
|
-
If your CSV export includes untrusted data provided by your users, it's possible
|
11
|
+
If your CSV export includes untrusted data provided by your users, it's possible
|
12
|
+
that they could include an executable formula that could call arbitrary commands
|
13
|
+
on your computer. See
|
14
|
+
[#4256](https://github.com/activeadmin/activeadmin/issues/4256) for more
|
15
|
+
details.
|
11
16
|
|
12
17
|
## Session Commits & Asset Pipeline
|
13
18
|
|
14
|
-
When configuring the asset pipeline ensure that the asset prefix
|
15
|
-
(`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
|
16
|
-
(default namespace is `/admin`). If they are the same Sprockets will prevent the
|
17
|
-
session from being committed. Flash messages won't work and you will be unable to
|
19
|
+
When configuring the asset pipeline ensure that the asset prefix
|
20
|
+
(`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
|
21
|
+
(default namespace is `/admin`). If they are the same Sprockets will prevent the
|
22
|
+
session from being committed. Flash messages won't work and you will be unable to
|
18
23
|
use the session for storing anything.
|
19
24
|
|
20
|
-
For more information see the following
|
21
|
-
|
25
|
+
For more information see [the following
|
26
|
+
post](http://www.intridea.com/blog/2013/3/20/rails-assets-prefix-may-disable-your-session).
|
22
27
|
|
23
28
|
## Helpers
|
24
29
|
|
@@ -27,13 +32,14 @@ find a solution.
|
|
27
32
|
|
28
33
|
### Helpers are not reloading in development
|
29
34
|
|
30
|
-
This is a known and still open
|
31
|
-
the only way is
|
35
|
+
This is a known and still open
|
36
|
+
[issue](https://github.com/activeadmin/activeadmin/issues/697) the only way is
|
37
|
+
to restart your server each time you change a helper.
|
32
38
|
|
33
39
|
### Helper maybe not included by default
|
34
40
|
|
35
|
-
If you use `config.action_controller.include_all_helpers = false` in your
|
36
|
-
you need to include it by hand.
|
41
|
+
If you use `config.action_controller.include_all_helpers = false` in your
|
42
|
+
application config, you need to include it by hand.
|
37
43
|
|
38
44
|
#### Solutions
|
39
45
|
|
@@ -62,23 +68,27 @@ end
|
|
62
68
|
|
63
69
|
## CSS
|
64
70
|
|
65
|
-
In order to avoid the override of your application style with the Active Admin
|
66
|
-
|
67
|
-
|
71
|
+
In order to avoid the override of your application style with the Active Admin
|
72
|
+
one, you can do one of these things:
|
73
|
+
|
74
|
+
* You can properly move the generated file `active_admin.scss` from
|
75
|
+
`app/assets/stylesheets` to `vendor/assets/stylesheets`.
|
76
|
+
* You can remove all `require_tree` commands from your root level css files,
|
77
|
+
where the `active_admin.scss` is in the tree.
|
68
78
|
|
69
79
|
## Conflicts
|
70
80
|
|
71
81
|
### With gems that provides a `search` class method on a model
|
72
82
|
|
73
|
-
If a gem defines a `search` class method on a model, this can result in conflicts
|
83
|
+
If a gem defines a `search` class method on a model, this can result in conflicts
|
74
84
|
with the same method provided by `ransack` (a dependency of ActiveAdmin).
|
75
85
|
|
76
|
-
Each of this conflicts need to solved is a different way. Some solutions are
|
86
|
+
Each of this conflicts need to solved is a different way. Some solutions are
|
77
87
|
listed below.
|
78
88
|
|
79
89
|
#### `tire`, `retire` and `elasticsearch-rails`
|
80
90
|
|
81
|
-
This conflict can be solved, by using explicitly the `search` method of `tire`,
|
91
|
+
This conflict can be solved, by using explicitly the `search` method of `tire`,
|
82
92
|
`retire` or `elasticsearch-rails`:
|
83
93
|
|
84
94
|
##### For `tire` and `retire`
|
@@ -101,9 +111,12 @@ YourModel.solr_search
|
|
101
111
|
|
102
112
|
### Rails 5 scaffold generators
|
103
113
|
|
104
|
-
Active Admin requires the `inherited_resources` gem which may break scaffolding
|
114
|
+
Active Admin requires the `inherited_resources` gem which may break scaffolding
|
115
|
+
under Rails 5 as it replaces the default scaffold generator. The solution is to
|
116
|
+
configure the default controller in `config/application.rb` as outlined in
|
117
|
+
[activeadmin/inherited_resources#195](https://github.com/activeadmin/inherited_resources/issues/195)
|
105
118
|
|
106
|
-
```
|
119
|
+
```ruby
|
107
120
|
module SampleApp
|
108
121
|
class Application < Rails::Application
|
109
122
|
...
|
@@ -113,7 +126,13 @@ module SampleApp
|
|
113
126
|
end
|
114
127
|
```
|
115
128
|
|
116
|
-
|
117
129
|
## Authentication & Application Controller
|
118
130
|
|
119
|
-
The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
|
131
|
+
The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
|
132
|
+
authentication method(s) specified in the `ApplicationController` callbacks will
|
133
|
+
be called instead of the authentication method in the active admin config file.
|
134
|
+
For example, if the ApplicationController has a callback `before_action
|
135
|
+
:custom_authentication_method` and the config file's authentication method is
|
136
|
+
`config.authentication_method = :authenticate_active_admin_user`, then
|
137
|
+
`custom_authentication_method` will be called instead of
|
138
|
+
`authenticate_active_admin_user`.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/2-resource-customization.html
|
3
3
|
---
|
4
|
+
|
4
5
|
# Working with Resources
|
5
6
|
|
6
7
|
Every Active Admin resource corresponds to a Rails model. So before creating a
|
@@ -9,7 +10,7 @@ resource you must first create a Rails model for it.
|
|
9
10
|
## Create a Resource
|
10
11
|
|
11
12
|
The basic command for creating a resource is `rails g active_admin:resource Post`.
|
12
|
-
The generator will produce an empty `app/admin/
|
13
|
+
The generator will produce an empty `app/admin/posts.rb` file like so:
|
13
14
|
|
14
15
|
```ruby
|
15
16
|
ActiveAdmin.register Post do
|
@@ -27,8 +28,8 @@ ActiveAdmin.register Post do
|
|
27
28
|
end
|
28
29
|
```
|
29
30
|
|
30
|
-
Any form field that sends multiple values (such as a HABTM association, or an
|
31
|
-
needs to pass an empty array to `permit_params`:
|
31
|
+
Any form field that sends multiple values (such as a HABTM association, or an
|
32
|
+
array attribute) needs to pass an empty array to `permit_params`:
|
32
33
|
|
33
34
|
If your HABTM is `roles`, you should permit `role_ids: []`
|
34
35
|
|
@@ -74,7 +75,8 @@ ActiveAdmin.register Post do
|
|
74
75
|
end
|
75
76
|
```
|
76
77
|
|
77
|
-
The `permit_params` call creates a method called `permitted_params`. You should
|
78
|
+
The `permit_params` call creates a method called `permitted_params`. You should
|
79
|
+
use this method when overriding `create` or `update` actions:
|
78
80
|
|
79
81
|
```ruby
|
80
82
|
ActiveAdmin.register Post do
|
@@ -105,10 +107,23 @@ end
|
|
105
107
|
|
106
108
|
## Renaming Action Items
|
107
109
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
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.
|
112
127
|
|
113
128
|
## Rename the Resource
|
114
129
|
|
@@ -149,7 +164,8 @@ The menu method accepts a hash with the following options:
|
|
149
164
|
|
150
165
|
* `:label` - The string or proc label to display in the menu. If it's a proc, it
|
151
166
|
will be called each time the menu is rendered.
|
152
|
-
* `: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
|
153
169
|
* `:if` - A block or a symbol of a method to call to decide if the menu item
|
154
170
|
should be displayed
|
155
171
|
* `:priority` - The integer value of the priority, which defaults to `10`
|
@@ -188,6 +204,7 @@ end
|
|
188
204
|
### Conditionally Showing / Hiding Menu Items
|
189
205
|
|
190
206
|
Menu items can be shown or hidden at runtime using the `:if` option.
|
207
|
+
|
191
208
|
```ruby
|
192
209
|
ActiveAdmin.register Post do
|
193
210
|
menu if: proc{ current_user.can_edit_posts? }
|
@@ -211,6 +228,14 @@ end
|
|
211
228
|
Note that the "Blog" parent menu item doesn't even have to exist yet; it can be
|
212
229
|
dynamically generated for you.
|
213
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
|
+
|
214
239
|
### Customizing Parent Menu Items
|
215
240
|
|
216
241
|
All of the options given to a standard menu item are also available to
|
@@ -262,9 +287,15 @@ config.namespace :admin do |admin|
|
|
262
287
|
menu.add label: "The Application", url: "/", priority: 0
|
263
288
|
|
264
289
|
menu.add label: "Sites" do |sites|
|
265
|
-
sites.add label: "Google",
|
266
|
-
|
267
|
-
|
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"
|
268
299
|
end
|
269
300
|
end
|
270
301
|
end
|
@@ -303,7 +334,8 @@ end
|
|
303
334
|
|
304
335
|
## Eager loading
|
305
336
|
|
306
|
-
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:
|
307
339
|
|
308
340
|
```ruby
|
309
341
|
ActiveAdmin.register Post do
|
@@ -313,10 +345,13 @@ end
|
|
313
345
|
|
314
346
|
## Customizing resource retrieval
|
315
347
|
|
316
|
-
Our controllers are built on [Inherited
|
317
|
-
|
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).
|
318
352
|
|
319
|
-
If you need to customize the collection properties, you can overwrite the
|
353
|
+
If you need to customize the collection properties, you can overwrite the
|
354
|
+
`scoped_collection` method.
|
320
355
|
|
321
356
|
```ruby
|
322
357
|
ActiveAdmin.register Post do
|
@@ -328,8 +363,9 @@ ActiveAdmin.register Post do
|
|
328
363
|
end
|
329
364
|
```
|
330
365
|
|
331
|
-
If you need to completely replace the record retrieving code (e.g., you have a
|
332
|
-
`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:
|
333
369
|
|
334
370
|
```ruby
|
335
371
|
ActiveAdmin.register Post do
|
@@ -341,8 +377,9 @@ ActiveAdmin.register Post do
|
|
341
377
|
end
|
342
378
|
```
|
343
379
|
|
344
|
-
Note that if you use an authorization library like CanCan, you should be careful
|
345
|
-
write code like this, otherwise **your authorization rules won't be
|
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**:
|
346
383
|
|
347
384
|
```ruby
|
348
385
|
ActiveAdmin.register Post do
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
redirect_from: /docs/3-index-pages/custom-index.html
|
3
3
|
---
|
4
|
+
|
4
5
|
# Custom Index
|
5
6
|
|
6
7
|
If the supplied Active Admin index components are insufficient for your project
|
@@ -29,6 +30,6 @@ The build method takes a PagePresenter object and collection of whatever you
|
|
29
30
|
choose.
|
30
31
|
|
31
32
|
The `index_name` class method takes no arguments and returns a string that should
|
32
|
-
be representative of the
|
33
|
+
be representative of the class name. If this method is not defined, your
|
33
34
|
index component will not be able take advantage of Active Admin's
|
34
35
|
*multiple index pages* feature.
|