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
data/docs/11-decorators.md
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/11-decorators.html
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Decorators
|
|
2
6
|
|
|
3
7
|
Active Admin allows you to use the decorator pattern to provide view-specific
|
|
4
8
|
versions of a resource. [Draper](https://github.com/drapergem/draper) is
|
|
5
9
|
recommended but not required.
|
|
6
10
|
|
|
7
|
-
To use decorator support without Draper, your decorator must support a variety
|
|
8
|
-
of collection methods to support pagination, filtering, etc. See
|
|
9
|
-
[this github issue discussion](https://github.com/activeadmin/activeadmin/issues/3600)
|
|
10
|
-
and [this gem](https://github.com/kiote/activeadmin-poro-decorator) for more details.
|
|
11
|
-
|
|
12
11
|
## Example usage
|
|
13
12
|
|
|
14
13
|
```ruby
|
|
@@ -38,6 +37,22 @@ ActiveAdmin.register Post do
|
|
|
38
37
|
end
|
|
39
38
|
```
|
|
40
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
|
+
|
|
41
56
|
## Forms
|
|
42
57
|
|
|
43
58
|
By default, ActiveAdmin does *not* decorate the resource used to render forms.
|
data/docs/12-arbre-components.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/12-arbre-components.html
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Arbre Components
|
|
2
6
|
|
|
3
7
|
Arbre allows the creation of shareable and extendable HTML components and is
|
|
@@ -18,8 +22,8 @@ ActiveAdmin.register Post do
|
|
|
18
22
|
row :id
|
|
19
23
|
row 'Tags' do
|
|
20
24
|
post.tags.each do |tag|
|
|
21
|
-
a tag, href: admin_post_path(q: {tagged_with_contains: tag})
|
|
22
|
-
text_node " ".html_safe
|
|
25
|
+
a tag, href: admin_post_path(q: {tagged_with_contains: tag})
|
|
26
|
+
text_node " ".html_safe
|
|
23
27
|
end
|
|
24
28
|
end
|
|
25
29
|
end
|
|
@@ -54,9 +58,9 @@ The Columns component allows you draw content into scalable columns. All you
|
|
|
54
58
|
need to do is define the number of columns and the component will take care of
|
|
55
59
|
the rest.
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
### Simple Columns
|
|
58
62
|
|
|
59
|
-
To create simple
|
|
63
|
+
To create simple columns, use the `columns` method. Within the block, call
|
|
60
64
|
the #column method to create a new column.
|
|
61
65
|
|
|
62
66
|
```ruby
|
|
@@ -111,6 +115,21 @@ end
|
|
|
111
115
|
In the above example, the first column will not grow larger than 200px and will
|
|
112
116
|
not shrink less than 100px.
|
|
113
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
|
+
|
|
114
133
|
## Table For
|
|
115
134
|
|
|
116
135
|
Table For provides the ability to create tables like those present
|
|
@@ -126,25 +145,70 @@ table_for order.payments do
|
|
|
126
145
|
end
|
|
127
146
|
```
|
|
128
147
|
|
|
129
|
-
|
|
148
|
+
The `column` method can take a title as its first argument and data
|
|
130
149
|
(`:your_method`) as its second (or first if no title provided). Column also
|
|
131
150
|
takes a block.
|
|
132
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
|
+
|
|
133
164
|
## Status tag
|
|
134
165
|
|
|
135
166
|
Status tags provide convenient syntactic sugar for styling items that have
|
|
136
167
|
status. A common example of where the status tag could be useful is for orders
|
|
137
168
|
that are complete or in progress. `status_tag` takes a status, like
|
|
138
|
-
"In Progress",
|
|
139
|
-
|
|
169
|
+
"In Progress", and a hash of options. The status_tag will generate HTML markup
|
|
170
|
+
that Active Admin CSS uses in styling.
|
|
140
171
|
|
|
141
172
|
```ruby
|
|
142
173
|
status_tag 'In Progress'
|
|
143
174
|
# => <span class='status_tag in_progress'>In Progress</span>
|
|
144
175
|
|
|
145
|
-
status_tag 'active', :
|
|
146
|
-
# => <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.
|
|
183
|
+
|
|
184
|
+
```ruby
|
|
185
|
+
status_tag true
|
|
186
|
+
# => <span class='status_tag yes'>Yes</span>
|
|
187
|
+
```
|
|
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
|
+
|
|
193
|
+
## Tabs
|
|
147
194
|
|
|
148
|
-
|
|
149
|
-
|
|
195
|
+
The Tabs component is helpful for saving page real estate. The first tab will be
|
|
196
|
+
the one open when the page initially loads and the rest hidden. You can click
|
|
197
|
+
each tab to toggle back and forth between them. Arbre supports unlimited number
|
|
198
|
+
of tabs.
|
|
199
|
+
|
|
200
|
+
```ruby
|
|
201
|
+
tabs do
|
|
202
|
+
tab :active do
|
|
203
|
+
table_for orders.active do
|
|
204
|
+
...
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
tab :inactive do
|
|
209
|
+
table_for orders.inactive do
|
|
210
|
+
...
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
150
214
|
```
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/13-authorization-adapter.html
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Authorization Adapter
|
|
2
6
|
|
|
3
7
|
Active Admin offers the ability to define and use your own authorization
|
|
@@ -6,8 +10,8 @@ taken. By default, '#authorized?' returns true.
|
|
|
6
10
|
|
|
7
11
|
## Setting up your own AuthorizationAdapter
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
The following example shows how to set up and tie your authorization
|
|
14
|
+
adapter class to Active Admin:
|
|
11
15
|
|
|
12
16
|
```ruby
|
|
13
17
|
# app/models/only_authors_authorization.rb
|
|
@@ -37,7 +41,11 @@ application's `config/initializers/active_admin.rb` and add/modify the line:
|
|
|
37
41
|
config.authorization_adapter = "OnlyAuthorsAuthorization"
|
|
38
42
|
```
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
|
45
|
+
`#authorized?` method will be called.
|
|
46
|
+
|
|
47
|
+
Authorization adapters can be configured per ActiveAdmin namespace as well, for
|
|
48
|
+
example:
|
|
41
49
|
|
|
42
50
|
```ruby
|
|
43
51
|
ActiveAdmin.setup do |config|
|
|
@@ -50,9 +58,6 @@ ActiveAdmin.setup do |config|
|
|
|
50
58
|
end
|
|
51
59
|
```
|
|
52
60
|
|
|
53
|
-
Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
|
|
54
|
-
`#authorized?` method will be called.
|
|
55
|
-
|
|
56
61
|
## Getting Access to the Current User
|
|
57
62
|
|
|
58
63
|
From within your authorization adapter, you can call the `#user` method to
|
|
@@ -70,9 +75,9 @@ end
|
|
|
70
75
|
|
|
71
76
|
## Scoping Collections in Authorization Adapters
|
|
72
77
|
|
|
73
|
-
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
|
74
|
-
for the adapter to scope the resource's collection. For
|
|
75
|
-
centralize the scoping:
|
|
78
|
+
`ActiveAdmin::AuthorizationAdapter` also provides a hook method
|
|
79
|
+
(`#scope_collection`) for the adapter to scope the resource's collection. For
|
|
80
|
+
example, you may want to centralize the scoping:
|
|
76
81
|
|
|
77
82
|
```ruby
|
|
78
83
|
class OnlyMyAccount < ActiveAdmin::AuthorizationAdapter
|
|
@@ -93,7 +98,7 @@ and will be scoped accordingly.
|
|
|
93
98
|
|
|
94
99
|
## Managing Access to Pages
|
|
95
100
|
|
|
96
|
-
Pages, just like resources, get authorized
|
|
101
|
+
Pages, just like resources, get authorized too. When authorizing a page, the
|
|
97
102
|
subject will be an instance of `ActiveAdmin::Page`.
|
|
98
103
|
|
|
99
104
|
```ruby
|
|
@@ -101,7 +106,9 @@ class OnlyDashboard < ActiveAdmin::AuthorizationAdapter
|
|
|
101
106
|
def authorized?(action, subject = nil)
|
|
102
107
|
case subject
|
|
103
108
|
when ActiveAdmin::Page
|
|
104
|
-
action == :read &&
|
|
109
|
+
action == :read &&
|
|
110
|
+
subject.name == "Dashboard" &&
|
|
111
|
+
subject.namespace.name == :admin
|
|
105
112
|
else
|
|
106
113
|
false
|
|
107
114
|
end
|
|
@@ -113,24 +120,23 @@ end
|
|
|
113
120
|
|
|
114
121
|
By default Active Admin simplifies the controller actions into 4 actions:
|
|
115
122
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
* `:read` - This controls if the user can view the menu item as well as the
|
|
124
|
+
index and show screens.
|
|
125
|
+
* `:create` - This controls if the user can view the new screen and submit
|
|
126
|
+
the form to the create action.
|
|
127
|
+
* `:update` - This controls if the user can view the edit screen and submit
|
|
128
|
+
the form to the update action.
|
|
129
|
+
* `:destroy` - This controls if the user can delete a resource.
|
|
123
130
|
|
|
124
131
|
Each of these actions is available as a constant. Eg: `:read` is available as
|
|
125
132
|
`ActiveAdmin::Authorization::READ`.
|
|
126
133
|
|
|
127
|
-
|
|
128
134
|
## Checking for Authorization in Controllers and Views
|
|
129
135
|
|
|
130
136
|
Active Admin provides a helper method to check if the current user is
|
|
131
137
|
authorized to perform an action on a subject.
|
|
132
138
|
|
|
133
|
-
|
|
139
|
+
Use the `#authorized?(action, subject)` method to check.
|
|
134
140
|
|
|
135
141
|
```ruby
|
|
136
142
|
ActiveAdmin.register Post do
|
|
@@ -174,28 +180,28 @@ end
|
|
|
174
180
|
|
|
175
181
|
Sub-classing `ActiveAdmin::AuthorizationAdapter` is fairly low level. Many times
|
|
176
182
|
it's nicer to have a simpler DSL for managing authorization. Active Admin
|
|
177
|
-
provides an adapter out of the box for [
|
|
178
|
-
and [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
|
183
|
+
provides an adapter out of the box for [CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
|
179
184
|
|
|
180
|
-
To use the CanCan adapter,
|
|
185
|
+
To use the CanCan adapter, update the configuration in the Active Admin
|
|
181
186
|
initializer:
|
|
182
187
|
|
|
183
188
|
```ruby
|
|
184
189
|
config.authorization_adapter = ActiveAdmin::CanCanAdapter
|
|
185
190
|
```
|
|
186
191
|
|
|
187
|
-
You can also specify a method to be called on unauthorized access. This is
|
|
188
|
-
in order to prevent a redirect loop that can happen if a user tries to
|
|
189
|
-
they don't have permissions for (see
|
|
192
|
+
You can also specify a method to be called on unauthorized access. This is
|
|
193
|
+
necessary in order to prevent a redirect loop that can happen if a user tries to
|
|
194
|
+
access a page they don't have permissions for (see
|
|
195
|
+
[#2081](https://github.com/activeadmin/activeadmin/issues/2081)).
|
|
190
196
|
|
|
191
197
|
```ruby
|
|
192
198
|
config.on_unauthorized_access = :access_denied
|
|
193
199
|
```
|
|
194
200
|
|
|
195
|
-
The method `access_denied` would be defined in `application_controller.rb`. Here
|
|
196
|
-
example that redirects the user from the page they don't have permission
|
|
197
|
-
access to a resource they have permission to access (organizations in this
|
|
198
|
-
also displays the error message in the browser:
|
|
201
|
+
The method `access_denied` would be defined in `application_controller.rb`. Here
|
|
202
|
+
is one example that redirects the user from the page they don't have permission
|
|
203
|
+
to access to a resource they have permission to access (organizations in this
|
|
204
|
+
case), and also displays the error message in the browser:
|
|
199
205
|
|
|
200
206
|
```ruby
|
|
201
207
|
class ApplicationController < ActionController::Base
|
|
@@ -214,7 +220,7 @@ changed from the initializer:
|
|
|
214
220
|
config.cancan_ability_class = "MyCustomAbility"
|
|
215
221
|
```
|
|
216
222
|
|
|
217
|
-
Now you can simply use
|
|
223
|
+
Now you can simply use CanCanCan the way that you would expect and
|
|
218
224
|
Active Admin will use it for authorization:
|
|
219
225
|
|
|
220
226
|
```ruby
|
|
@@ -226,23 +232,54 @@ class Ability
|
|
|
226
232
|
can :manage, Post
|
|
227
233
|
can :read, User
|
|
228
234
|
can :manage, User, id: user.id
|
|
229
|
-
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name:
|
|
235
|
+
can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name: "admin"
|
|
230
236
|
end
|
|
231
237
|
|
|
232
238
|
end
|
|
233
239
|
```
|
|
234
240
|
|
|
235
|
-
To view more details about the API's, visit project pages of
|
|
241
|
+
To view more details about the API's, visit project pages of
|
|
242
|
+
[CanCanCan](https://github.com/CanCanCommunity/cancancan).
|
|
236
243
|
|
|
237
244
|
## Using the Pundit Adapter
|
|
238
245
|
|
|
239
|
-
Active Admin provides an adapter out of the box
|
|
246
|
+
Active Admin also provides an adapter out of the box for
|
|
247
|
+
[Pundit](https://github.com/varvet/pundit).
|
|
240
248
|
|
|
241
|
-
To use the Pundit adapter,
|
|
249
|
+
To use the Pundit adapter, update the configuration in the Active Admin
|
|
242
250
|
initializer:
|
|
243
251
|
|
|
244
252
|
```ruby
|
|
245
253
|
config.authorization_adapter = ActiveAdmin::PunditAdapter
|
|
246
254
|
```
|
|
247
255
|
|
|
248
|
-
|
|
256
|
+
Once that's done, Active Admin will pick up your Pundit policies, and use
|
|
257
|
+
them for authorization. For more information about setting up Pundit, see
|
|
258
|
+
[their documentation](https://github.com/varvet/pundit#installation).
|
|
259
|
+
|
|
260
|
+
Pundit also has [verify_authorized and/or verify_policy_scoped
|
|
261
|
+
methods](https://github.com/varvet/pundit#ensuring-policies-and-scopes-are-used)
|
|
262
|
+
to enforce usage of `authorized` and `policy_scope`. This conflicts with Active
|
|
263
|
+
Admin's authorization architecture, so if you're using those features, you'll
|
|
264
|
+
want to disable them for Active Admin's controllers:
|
|
265
|
+
|
|
266
|
+
```ruby
|
|
267
|
+
class ApplicationController < ActionController::Base
|
|
268
|
+
include Pundit
|
|
269
|
+
after_action :verify_authorized, except: :index, unless: :active_admin_controller?
|
|
270
|
+
after_action :verify_policy_scoped, only: :index, unless: :active_admin_controller?
|
|
271
|
+
|
|
272
|
+
def active_admin_controller?
|
|
273
|
+
is_a?(ActiveAdmin::BaseController)
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
If you want to use batch actions, ensure that `destroy_all?` method is defined
|
|
279
|
+
in your policy class. You can use this [template
|
|
280
|
+
policy](https://github.com/activeadmin/activeadmin/blob/master/spec/support/templates/policies/application_policy.rb)
|
|
281
|
+
in your application instead of default one generated by Pundit's
|
|
282
|
+
`rails g pundit:install` command.
|
|
283
|
+
|
|
284
|
+
In addition, there are [example policies](https://github.com/activeadmin/activeadmin/tree/master/spec/support/templates/policies/active_admin)
|
|
285
|
+
for restricting access to ActiveAdmin's pages and comments.
|
data/docs/14-gotchas.md
CHANGED
|
@@ -1,30 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
redirect_from: /docs/14-gotchas.html
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Gotchas
|
|
6
|
+
|
|
7
|
+
## Security
|
|
8
|
+
|
|
9
|
+
### Spreadsheet applications vulnerable to unescaped CSV data
|
|
10
|
+
|
|
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.
|
|
2
16
|
|
|
3
17
|
## Session Commits & Asset Pipeline
|
|
4
18
|
|
|
5
|
-
When configuring the asset pipeline ensure that the asset prefix
|
|
6
|
-
(`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
|
|
7
|
-
(default namespace is `/admin`). If they are the same Sprockets will prevent the
|
|
8
|
-
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
|
|
9
23
|
use the session for storing anything.
|
|
10
24
|
|
|
11
|
-
For more information see the following
|
|
12
|
-
|
|
25
|
+
For more information see [the following
|
|
26
|
+
post](http://www.intridea.com/blog/2013/3/20/rails-assets-prefix-may-disable-your-session).
|
|
13
27
|
|
|
14
28
|
## Helpers
|
|
15
29
|
|
|
16
|
-
There are two
|
|
30
|
+
There are two known gotchas with helpers. This hopefully will help you to
|
|
17
31
|
find a solution.
|
|
18
32
|
|
|
19
33
|
### Helpers are not reloading in development
|
|
20
34
|
|
|
21
|
-
This is a known and still open
|
|
22
|
-
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.
|
|
23
38
|
|
|
24
39
|
### Helper maybe not included by default
|
|
25
40
|
|
|
26
|
-
If you use `config.action_controller.include_all_helpers = false` in your
|
|
27
|
-
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.
|
|
28
43
|
|
|
29
44
|
#### Solutions
|
|
30
45
|
|
|
@@ -53,23 +68,27 @@ end
|
|
|
53
68
|
|
|
54
69
|
## CSS
|
|
55
70
|
|
|
56
|
-
In order to avoid the override of your application style with the Active Admin
|
|
57
|
-
|
|
58
|
-
|
|
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.
|
|
59
78
|
|
|
60
79
|
## Conflicts
|
|
61
80
|
|
|
62
81
|
### With gems that provides a `search` class method on a model
|
|
63
82
|
|
|
64
|
-
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
|
|
65
84
|
with the same method provided by `ransack` (a dependency of ActiveAdmin).
|
|
66
85
|
|
|
67
|
-
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
|
|
68
87
|
listed below.
|
|
69
88
|
|
|
70
89
|
#### `tire`, `retire` and `elasticsearch-rails`
|
|
71
90
|
|
|
72
|
-
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`,
|
|
73
92
|
`retire` or `elasticsearch-rails`:
|
|
74
93
|
|
|
75
94
|
##### For `tire` and `retire`
|
|
@@ -90,3 +109,30 @@ YourModel.__elasticsearch__.search
|
|
|
90
109
|
YourModel.solr_search
|
|
91
110
|
```
|
|
92
111
|
|
|
112
|
+
### Rails 5 scaffold generators
|
|
113
|
+
|
|
114
|
+
Active Admin requires the `inherited_resources` gem which may break scaffolding
|
|
115
|
+
under Rails 5 as it replaces the default scaffold generator. The solution is to
|
|
116
|
+
configure the default controller in `config/application.rb` as outlined in
|
|
117
|
+
[activeadmin/inherited_resources#195](https://github.com/activeadmin/inherited_resources/issues/195)
|
|
118
|
+
|
|
119
|
+
```ruby
|
|
120
|
+
module SampleApp
|
|
121
|
+
class Application < Rails::Application
|
|
122
|
+
...
|
|
123
|
+
config.app_generators.scaffold_controller = :scaffold_controller
|
|
124
|
+
...
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Authentication & Application Controller
|
|
130
|
+
|
|
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`.
|