activeadmin-rails 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +64 -0
- data/.github/ISSUE_TEMPLATE.md +20 -0
- data/.github/workflows/ci.yaml +64 -0
- data/.github/workflows/daily.yaml +64 -0
- data/.github/workflows/pages.yml +72 -0
- data/.gitignore +23 -0
- data/.mdlrc +1 -0
- data/.rubocop.yml +84 -0
- data/.simplecov +13 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +514 -0
- data/CODE_OF_CONDUCT.md +22 -0
- data/CONTRIBUTING.md +190 -0
- data/Gemfile +51 -0
- data/LICENSE +20 -0
- data/README.md +84 -0
- data/Rakefile +56 -0
- data/activeadmin-rails.gemspec +39 -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.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +89 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +338 -0
- data/app/assets/stylesheets/active_admin/_header.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +17 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.scss +287 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +41 -0
- data/app/views/active_admin/_head.html.erb +14 -0
- data/app/views/active_admin/base/_action_items.html.arb +7 -0
- data/app/views/active_admin/base/_breadcrumbs.html.arb +8 -0
- data/app/views/active_admin/base/_footer.html.arb +11 -0
- data/app/views/active_admin/base/_header.html.arb +5 -0
- data/app/views/active_admin/base/_sidebar.html.arb +3 -0
- data/app/views/active_admin/base/_title_bar.html.arb +9 -0
- data/app/views/active_admin/base/_unsupported_browser.html.erb +5 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/app/views/active_admin/page/_content.html.arb +1 -0
- data/app/views/active_admin/page/index.html.arb +8 -0
- data/app/views/active_admin/resource/_filters_form.html.erb +1 -0
- data/app/views/active_admin/resource/_form.html.arb +11 -0
- data/app/views/active_admin/resource/_index_as_table.html.arb +8 -0
- data/app/views/active_admin/resource/_show.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +13 -0
- data/app/views/active_admin/resource/index.html.arb +101 -0
- data/app/views/active_admin/resource/new.html.arb +13 -0
- data/app/views/active_admin/resource/show.html.arb +22 -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/layouts/active_admin.html.erb +33 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
- data/codecov.yml +25 -0
- data/config/i18n-tasks.yml +26 -0
- data/config/locales/ar.yml +133 -0
- data/config/locales/bg.yml +118 -0
- data/config/locales/bs.yml +119 -0
- data/config/locales/ca.yml +104 -0
- data/config/locales/cs.yml +107 -0
- data/config/locales/da.yml +135 -0
- data/config/locales/de-CH.yml +99 -0
- data/config/locales/de.yml +142 -0
- data/config/locales/el.yml +124 -0
- data/config/locales/en-CA.yml +137 -0
- data/config/locales/en-GB.yml +137 -0
- data/config/locales/en.yml +160 -0
- data/config/locales/eo.yml +143 -0
- data/config/locales/es-MX.yml +94 -0
- data/config/locales/es.yml +160 -0
- data/config/locales/fa.yml +117 -0
- data/config/locales/fi.yml +110 -0
- data/config/locales/fr.yml +139 -0
- data/config/locales/he.yml +140 -0
- data/config/locales/hr.yml +121 -0
- data/config/locales/hu.yml +96 -0
- data/config/locales/id.yml +133 -0
- data/config/locales/it.yml +142 -0
- data/config/locales/ja.yml +139 -0
- data/config/locales/ko.yml +118 -0
- data/config/locales/lt.yml +140 -0
- data/config/locales/lv.yml +90 -0
- data/config/locales/nb.yml +128 -0
- data/config/locales/nl.yml +142 -0
- data/config/locales/pl.yml +166 -0
- data/config/locales/pt-BR.yml +141 -0
- data/config/locales/pt-PT.yml +90 -0
- data/config/locales/ro.yml +94 -0
- data/config/locales/ru.yml +139 -0
- data/config/locales/sk.yml +107 -0
- data/config/locales/sv-SE.yml +133 -0
- data/config/locales/tr.yml +142 -0
- data/config/locales/uk.yml +134 -0
- data/config/locales/vi.yml +132 -0
- data/config/locales/zh-CN.yml +141 -0
- data/config/locales/zh-TW.yml +133 -0
- data/config/mdl_style.rb +9 -0
- data/cucumber.yml +6 -0
- data/docs/0-installation.md +121 -0
- data/docs/1-general-configuration.md +207 -0
- data/docs/10-custom-pages.md +148 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbo-components.md +200 -0
- data/docs/13-authorization-adapter.md +288 -0
- data/docs/14-gotchas.md +141 -0
- data/docs/2-resource-customization.md +480 -0
- data/docs/3-index-pages/custom-index.md +39 -0
- data/docs/3-index-pages/index-as-block.md +23 -0
- data/docs/3-index-pages/index-as-blog.md +73 -0
- data/docs/3-index-pages/index-as-grid.md +31 -0
- data/docs/3-index-pages/index-as-table.md +259 -0
- data/docs/3-index-pages.md +349 -0
- data/docs/4-csv-format.md +86 -0
- data/docs/5-forms.md +233 -0
- data/docs/6-show-pages.md +61 -0
- data/docs/7-sidebars.md +63 -0
- data/docs/8-custom-actions.md +160 -0
- data/docs/9-batch-actions.md +248 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +7 -0
- data/docs/README.md +24 -0
- data/docs/_config.yml +15 -0
- data/docs/_includes/nav_footer_custom.html +3 -0
- data/docs/documentation.md +61 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/index.css +835 -0
- data/docs/index.html +105 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +124 -0
- data/features/breadcrumb.feature +76 -0
- data/features/comments/commenting.feature +178 -0
- data/features/comments/viewing_index.feature +18 -0
- data/features/create_another.feature +55 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +43 -0
- data/features/development_reloading.feature +28 -0
- data/features/edit_page.feature +116 -0
- data/features/favicon.feature +20 -0
- data/features/filter_attributes.feature +46 -0
- data/features/first_boot.feature +16 -0
- data/features/footer.feature +29 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +55 -0
- data/features/index/batch_actions.feature +218 -0
- data/features/index/filters.feature +251 -0
- data/features/index/format_as_csv.feature +273 -0
- data/features/index/formats.feature +88 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +291 -0
- data/features/index/index_blank_slate.feature +83 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +325 -0
- data/features/index/page_title.feature +41 -0
- data/features/index/pagination.feature +63 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +85 -0
- data/features/meta_tags.feature +21 -0
- data/features/new_page.feature +136 -0
- data/features/registering_assets.feature +34 -0
- data/features/registering_pages.feature +237 -0
- data/features/registering_resources.feature +33 -0
- data/features/renamed_resource.feature +29 -0
- data/features/root_to.feature +18 -0
- data/features/show/attributes_table_title.feature +54 -0
- data/features/show/columns.feature +40 -0
- data/features/show/default_content.feature +44 -0
- data/features/show/page_title.feature +58 -0
- data/features/show/tabs.feature +47 -0
- data/features/sidebar_sections.feature +210 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +118 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +19 -0
- data/features/step_definitions/additional_web_steps.rb +81 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +18 -0
- data/features/step_definitions/attributes_table_title_steps.rb +11 -0
- data/features/step_definitions/batch_action_steps.rb +78 -0
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +13 -0
- data/features/step_definitions/column_steps.rb +8 -0
- data/features/step_definitions/comment_steps.rb +32 -0
- data/features/step_definitions/configuration_steps.rb +102 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +35 -0
- data/features/step_definitions/filter_steps.rb +57 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/footer_steps.rb +21 -0
- data/features/step_definitions/format_steps.rb +60 -0
- data/features/step_definitions/i18n_steps.rb +11 -0
- data/features/step_definitions/index_scope_steps.rb +42 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/meta_tag_steps.rb +3 -0
- data/features/step_definitions/pagination_steps.rb +15 -0
- data/features/step_definitions/root_steps.rb +9 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/site_title_steps.rb +31 -0
- data/features/step_definitions/tab_steps.rb +17 -0
- data/features/step_definitions/table_steps.rb +116 -0
- data/features/step_definitions/user_steps.rb +52 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +69 -0
- data/features/support/env.rb +129 -0
- data/features/support/paths.rb +75 -0
- data/features/support/regular_env.rb +7 -0
- data/features/support/reload_env.rb +7 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +32 -0
- data/features/users/logging_out.feature +29 -0
- data/features/users/resetting_password.feature +30 -0
- data/gemfiles/rails_42.gemfile +12 -0
- data/gemfiles/rails_52.gemfile +15 -0
- data/gemfiles/rails_60.gemfile +16 -0
- data/gemfiles/rails_61.gemfile +15 -0
- data/gemfiles/rails_61_turbolinks.gemfile +15 -0
- data/gemfiles/rails_70.gemfile +15 -0
- data/gemfiles/rails_70_hotwire.gemfile +15 -0
- data/gemfiles/rails_71.gemfile +17 -0
- data/lib/active_admin/abstract_view_factory.rb +47 -0
- data/lib/active_admin/application.rb +255 -0
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +129 -0
- data/lib/active_admin/base_controller/authorization.rb +126 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +91 -0
- data/lib/active_admin/batch_actions/controller.rb +45 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +151 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +45 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/callbacks.rb +88 -0
- data/lib/active_admin/cancan_adapter.rb +36 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +136 -0
- data/lib/active_admin/dependency.rb +96 -0
- data/lib/active_admin/deprecation.rb +10 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +193 -0
- 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 +22 -0
- data/lib/active_admin/error.rb +62 -0
- data/lib/active_admin/event.rb +24 -0
- 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 +50 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +85 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/resource_extension.rb +153 -0
- data/lib/active_admin/filters.rb +11 -0
- data/lib/active_admin/form_builder.rb +182 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +19 -0
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/inputs/datepicker_input.rb +27 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +58 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +21 -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 +106 -0
- data/lib/active_admin/menu_collection.rb +55 -0
- data/lib/active_admin/menu_item.rb +79 -0
- data/lib/active_admin/namespace.rb +325 -0
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/order_clause.rb +48 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +35 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +95 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +99 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +114 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +35 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/resource/action_items.rb +120 -0
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +48 -0
- data/lib/active_admin/resource/controllers.rb +19 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +65 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +90 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +134 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +52 -0
- data/lib/active_admin/resource/sidebars.rb +32 -0
- data/lib/active_admin/resource.rb +215 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +341 -0
- data/lib/active_admin/resource_controller/decorators.rb +102 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_controller/streaming.rb +47 -0
- data/lib/active_admin/resource_controller.rb +116 -0
- data/lib/active_admin/resource_dsl.rb +221 -0
- data/lib/active_admin/router.rb +113 -0
- data/lib/active_admin/scope.rb +60 -0
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +37 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +10 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +52 -0
- data/lib/active_admin/view_helpers/display_helper.rb +95 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +58 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
- data/lib/active_admin/view_helpers/form_helper.rb +20 -0
- data/lib/active_admin/view_helpers/layout_helper.rb +32 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +97 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/views/components/action_link.rb +13 -0
- data/lib/active_admin/views/components/active_admin_form.rb +163 -0
- data/lib/active_admin/views/components/attributes_panel.rb +23 -0
- data/lib/active_admin/views/components/attributes_table.rb +94 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +161 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
- data/lib/active_admin/views/components/index_list.rb +69 -0
- 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 +159 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +72 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +88 -0
- data/lib/active_admin/views/components/table_for.rb +209 -0
- data/lib/active_admin/views/components/tabs.rb +40 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +155 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +377 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +132 -0
- data/lib/activeadmin-rails.rb +1 -0
- data/lib/bug_report_templates/active_admin_main.rb +110 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
- data/lib/generators/active_admin/install/install_generator.rb +45 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +300 -0
- data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +6 -0
- data/lib/ransack_ext.rb +20 -0
- data/spec/bug_report_templates_spec.rb +28 -0
- data/spec/changelog_spec.rb +15 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_runner.rb +19 -0
- data/spec/rails_helper.rb +67 -0
- data/spec/requests/default_namespace_spec.rb +81 -0
- data/spec/requests/memory_spec.rb +25 -0
- data/spec/requests/pages/form_spec.rb +73 -0
- data/spec/requests/pages/index_spec.rb +96 -0
- data/spec/requests/pages/layout_spec.rb +59 -0
- data/spec/requests/pages/show_spec.rb +38 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/active_admin_integration_spec_helper.rb +79 -0
- data/spec/support/active_admin_request_helpers.rb +39 -0
- data/spec/support/rails_template.rb +224 -0
- data/spec/support/rails_template_with_data.rb +328 -0
- data/spec/support/templates/admin/stores.rb +7 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/manifest.js +3 -0
- data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +44 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +78 -0
- data/spec/unit/action_builder_spec.rb +160 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +180 -0
- data/spec/unit/asset_registration_spec.rb +52 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +43 -0
- data/spec/unit/authorization/index_overriding_spec.rb +23 -0
- data/spec/unit/auto_link_spec.rb +103 -0
- data/spec/unit/batch_actions/resource_spec.rb +84 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +76 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +204 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +41 -0
- data/spec/unit/csv_builder_spec.rb +321 -0
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +110 -0
- data/spec/unit/dsl_spec.rb +120 -0
- data/spec/unit/dynamic_settings_spec.rb +28 -0
- data/spec/unit/filters/active_filter_spec.rb +222 -0
- data/spec/unit/filters/active_spec.rb +24 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +524 -0
- data/spec/unit/filters/resource_spec.rb +128 -0
- data/spec/unit/form_builder_spec.rb +1013 -0
- data/spec/unit/generators/install_spec.rb +31 -0
- data/spec/unit/helpers/collection_spec.rb +68 -0
- data/spec/unit/helpers/scope_chain_spec.rb +35 -0
- data/spec/unit/i18n_spec.rb +29 -0
- data/spec/unit/localizers/resource_localizer_spec.rb +36 -0
- data/spec/unit/menu_collection_spec.rb +40 -0
- data/spec/unit/menu_item_spec.rb +82 -0
- data/spec/unit/menu_spec.rb +60 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +99 -0
- data/spec/unit/namespace/register_resource_spec.rb +162 -0
- data/spec/unit/namespace_spec.rb +132 -0
- data/spec/unit/order_clause_spec.rb +81 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +128 -0
- data/spec/unit/pretty_format_spec.rb +133 -0
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +83 -0
- data/spec/unit/resource/attributes_spec.rb +56 -0
- data/spec/unit/resource/includes_spec.rb +21 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +120 -0
- data/spec/unit/resource/ordering_spec.rb +35 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +125 -0
- data/spec/unit/resource/scopes_spec.rb +50 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +175 -0
- data/spec/unit/resource_controller/data_access_spec.rb +234 -0
- data/spec/unit/resource_controller/decorators_spec.rb +94 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +37 -0
- data/spec/unit/resource_controller_spec.rb +290 -0
- data/spec/unit/resource_registration_spec.rb +61 -0
- data/spec/unit/resource_spec.rb +320 -0
- data/spec/unit/routing_spec.rb +211 -0
- data/spec/unit/scope_spec.rb +225 -0
- data/spec/unit/settings_node_spec.rb +26 -0
- data/spec/unit/view_factory_spec.rb +13 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +255 -0
- data/spec/unit/view_helpers/display_helper_spec.rb +203 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/flash_helper_spec.rb +24 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +138 -0
- data/spec/unit/views/components/attributes_table_spec.rb +271 -0
- data/spec/unit/views/components/batch_action_selector_spec.rb +43 -0
- data/spec/unit/views/components/blank_slate_spec.rb +27 -0
- data/spec/unit/views/components/columns_spec.rb +187 -0
- data/spec/unit/views/components/index_list_spec.rb +49 -0
- data/spec/unit/views/components/index_table_for_spec.rb +127 -0
- data/spec/unit/views/components/menu_item_spec.rb +29 -0
- data/spec/unit/views/components/menu_spec.rb +168 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +249 -0
- data/spec/unit/views/components/panel_spec.rb +58 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +68 -0
- data/spec/unit/views/components/site_title_spec.rb +82 -0
- data/spec/unit/views/components/status_tag_spec.rb +265 -0
- data/spec/unit/views/components/table_for_spec.rb +441 -0
- data/spec/unit/views/components/tabs_spec.rb +99 -0
- data/spec/unit/views/index_as_blog_spec.rb +76 -0
- data/tasks/docs.rake +64 -0
- data/tasks/lint.rake +21 -0
- data/tasks/local.rake +25 -0
- data/tasks/parallel_tests.rake +66 -0
- data/tasks/test.rake +24 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +1012 -0
data/docs/index.html
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
4
|
+
<html>
|
5
|
+
<head>
|
6
|
+
<title>Active Admin | The administration framework for Ruby on Rails</title>
|
7
|
+
<link href='//fonts.googleapis.com/css?family=Yanone+Kaffeesatz:extralight,light,regular,bold' rel='stylesheet' type='text/css'>
|
8
|
+
<link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
|
9
|
+
<link href="{{ site.baseurl }}/index.css" media="screen" rel="stylesheet" type="text/css" />
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
<div id="wrapper">
|
13
|
+
<div id="header">
|
14
|
+
<h1><a href="{{ site.baseurl }}/index.html"><span>Active Admin</span></a></h1>
|
15
|
+
|
16
|
+
<div id="nav">
|
17
|
+
<a href="{{ site.baseurl }}/documentation.html">Documentation</a>
|
18
|
+
<a href="http://demo.activeadmin.org/admin">Try It Now!</a>
|
19
|
+
<a href="http://github.com/varyonic/activeadmin">Get the Code</a>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div id="main-content">
|
23
|
+
<p class="intro">
|
24
|
+
The <strong>administration framework</strong> for business critical <strong>Ruby on Rails</strong> applications.
|
25
|
+
</p>
|
26
|
+
<p>
|
27
|
+
Active Admin is a Ruby on Rails plugin for generating administration style interfaces. It abstracts common business application patterns to make it simple for developers to implement beautiful and elegant interfaces with very little effort.
|
28
|
+
</p>
|
29
|
+
<h2>
|
30
|
+
A beautiful interface designed for real people.
|
31
|
+
</h2>
|
32
|
+
<div id="features">
|
33
|
+
<div id="features-left">
|
34
|
+
<h3 class="first">
|
35
|
+
Global Navigation
|
36
|
+
</h3>
|
37
|
+
<p>
|
38
|
+
Customizable global navigation allows you to create usable admin interfaces for your business.
|
39
|
+
</p>
|
40
|
+
<h3>
|
41
|
+
Scopes
|
42
|
+
</h3>
|
43
|
+
<p>
|
44
|
+
Use scopes to create sections of mutually exclusive resources for quick navigation and reporting.
|
45
|
+
</p>
|
46
|
+
<h3>
|
47
|
+
Index Styles
|
48
|
+
</h3>
|
49
|
+
<p>
|
50
|
+
Index screens are available in many styles. The default, shown here, is a table view, but Active Admin also supports Grids, Blocks and a Blog view.
|
51
|
+
</p>
|
52
|
+
<h3>
|
53
|
+
<span class="caps">API</span> & Downloads
|
54
|
+
</h3>
|
55
|
+
<p>
|
56
|
+
Each resource that is registered wtih Active Admin becomes available as <span class="caps">JSON</span>, <span class="caps">XML</span> and <span class="caps">CSV</span> download. Customize the output to meet your requirements.
|
57
|
+
</p>
|
58
|
+
</div>
|
59
|
+
<div id="features-right">
|
60
|
+
<h3 class="first">
|
61
|
+
User Authentication
|
62
|
+
</h3>
|
63
|
+
<p>
|
64
|
+
Use the bundled Devise configuration or implement your own authorization using the provided hooks.
|
65
|
+
</p>
|
66
|
+
<h3>
|
67
|
+
Action Items
|
68
|
+
</h3>
|
69
|
+
<p>
|
70
|
+
Add buttons, links or other content in the “Action Items” section on each screen.
|
71
|
+
</p>
|
72
|
+
<h3>
|
73
|
+
Filters
|
74
|
+
</h3>
|
75
|
+
<p>
|
76
|
+
Allow users to filter resources by searching strings, text fields, dates, and numeric values.
|
77
|
+
</p>
|
78
|
+
<h3>
|
79
|
+
Sidebar Sections
|
80
|
+
</h3>
|
81
|
+
<p>
|
82
|
+
Customize the sidebar sections with a simple <span class="caps">DSL</span> built in to Active Admin.
|
83
|
+
</p>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
<p>
|
87
|
+
Active Admin’s interface was designed from the ground up for non-technical users. It makes it easy for developers to build highly usable interfaces that customers will actually enjoy using.
|
88
|
+
</p>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
<h2 class="getting-started-heading">
|
92
|
+
3 Ways to Get Started:
|
93
|
+
</h2>
|
94
|
+
<p class="getting-started">
|
95
|
+
<a href="http://demo.activeadmin.org/admin">Check Out the Live Demo</a> <a href="{{ site.baseurl }}/documentation.html">Read The Documentation</a> <a href="http://github.com/varyonic/activeadmin">Visit the Git Repository</a>
|
96
|
+
</p>
|
97
|
+
</div>
|
98
|
+
<p id="footer">
|
99
|
+
<div class="left">
|
100
|
+
Copyright 2011 <a href="http://gregbell.ca/">Greg Bell</a> and <a href="http://www.versapay.com/">VersaPay</a>
|
101
|
+
</div>
|
102
|
+
</p>
|
103
|
+
</div>
|
104
|
+
</body>
|
105
|
+
</html>
|
@@ -0,0 +1,73 @@
|
|
1
|
+
Feature: Action Item
|
2
|
+
|
3
|
+
Creating and Configuring action items
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am logged in
|
7
|
+
And a post with the title "Hello World" exists
|
8
|
+
|
9
|
+
Scenario: Create an member action
|
10
|
+
Given a configuration of:
|
11
|
+
"""
|
12
|
+
ActiveAdmin.register Post do
|
13
|
+
action_item :embiggen do
|
14
|
+
link_to "Embiggen", '/'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
When I am on the index page for posts
|
19
|
+
Then I should not see a member link to "Embiggen"
|
20
|
+
|
21
|
+
When I follow "View"
|
22
|
+
Then I should see an action item link to "Embiggen"
|
23
|
+
|
24
|
+
When I follow "Edit Post"
|
25
|
+
Then I should see an action item link to "Embiggen"
|
26
|
+
|
27
|
+
When I am on the index page for posts
|
28
|
+
And I follow "New Post"
|
29
|
+
Then I should see an action item link to "Embiggen"
|
30
|
+
|
31
|
+
Scenario: Create an member action with if clause that returns true
|
32
|
+
Given a configuration of:
|
33
|
+
"""
|
34
|
+
ActiveAdmin.register Post do
|
35
|
+
action_item :embiggen, if: proc{ !current_active_admin_user.nil? } do
|
36
|
+
link_to "Embiggen", '/'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
"""
|
40
|
+
When I am on the index page for posts
|
41
|
+
Then I should not see a member link to "Embiggen"
|
42
|
+
|
43
|
+
When I follow "View"
|
44
|
+
Then I should see an action item link to "Embiggen"
|
45
|
+
|
46
|
+
When I follow "Edit Post"
|
47
|
+
Then I should see an action item link to "Embiggen"
|
48
|
+
|
49
|
+
When I am on the index page for posts
|
50
|
+
And I follow "New Post"
|
51
|
+
Then I should see an action item link to "Embiggen"
|
52
|
+
|
53
|
+
Scenario: Create an member action with if clause that returns false
|
54
|
+
Given a configuration of:
|
55
|
+
"""
|
56
|
+
ActiveAdmin.register Post do
|
57
|
+
action_item :embiggen, if: proc{ current_active_admin_user.nil? } do
|
58
|
+
link_to "Embiggen", '/'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
"""
|
62
|
+
When I am on the index page for posts
|
63
|
+
Then I should not see a member link to "Embiggen"
|
64
|
+
|
65
|
+
When I follow "View"
|
66
|
+
Then I should not see an action item link to "Embiggen"
|
67
|
+
|
68
|
+
When I follow "Edit Post"
|
69
|
+
Then I should not see an action item link to "Embiggen"
|
70
|
+
|
71
|
+
When I am on the index page for posts
|
72
|
+
And I follow "New Post"
|
73
|
+
Then I should not see an action item link to "Embiggen"
|
@@ -0,0 +1,64 @@
|
|
1
|
+
Feature: Authorizing Access
|
2
|
+
|
3
|
+
Ensure that access denied exceptions are managed
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am logged in
|
7
|
+
And 1 post exists
|
8
|
+
And a configuration of:
|
9
|
+
"""
|
10
|
+
class OnlyAuthorsAuthorization < ActiveAdmin::AuthorizationAdapter
|
11
|
+
|
12
|
+
def authorized?(action, subject = nil)
|
13
|
+
case subject
|
14
|
+
|
15
|
+
when normalized(Post)
|
16
|
+
case action
|
17
|
+
when ActiveAdmin::Auth::UPDATE, ActiveAdmin::Auth::DESTROY
|
18
|
+
false
|
19
|
+
else
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
when ActiveAdmin::Page
|
24
|
+
if subject.name == "No Access"
|
25
|
+
false
|
26
|
+
else
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
ActiveAdmin.application.namespace(:admin).authorization_adapter = OnlyAuthorsAuthorization
|
38
|
+
|
39
|
+
ActiveAdmin.register Post do
|
40
|
+
end
|
41
|
+
|
42
|
+
ActiveAdmin.register_page "No Access" do
|
43
|
+
end
|
44
|
+
"""
|
45
|
+
And I am on the index page for posts
|
46
|
+
|
47
|
+
@allow-rescue
|
48
|
+
Scenario: Attempt to access a resource I am not authorized to see
|
49
|
+
When I go to the last post's edit page
|
50
|
+
Then I should see "You are not authorized to perform this action"
|
51
|
+
|
52
|
+
Scenario: Viewing the default action items
|
53
|
+
When I follow "View"
|
54
|
+
Then I should not see an action item link to "Edit"
|
55
|
+
|
56
|
+
@allow-rescue
|
57
|
+
Scenario: Attempting to visit a Page without authorization
|
58
|
+
When I go to the admin no access page
|
59
|
+
Then I should see "You are not authorized to perform this action"
|
60
|
+
|
61
|
+
@allow-rescue
|
62
|
+
Scenario: Viewing a page with authorization
|
63
|
+
When I go to the admin dashboard page
|
64
|
+
Then I should see "Dashboard"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Feature: Authorizing Access using CanCan
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am logged in
|
5
|
+
And 1 post exists
|
6
|
+
And a configuration of:
|
7
|
+
"""
|
8
|
+
require 'cancan'
|
9
|
+
|
10
|
+
class ::Ability
|
11
|
+
include ::CanCan::Ability
|
12
|
+
|
13
|
+
def initialize(user)
|
14
|
+
# Manage Posts
|
15
|
+
can [:edit, :destroy], Post, author_id: user.id
|
16
|
+
can :read, Post
|
17
|
+
|
18
|
+
# View Pages
|
19
|
+
can :read, ActiveAdmin::Page, name: "Dashboard"
|
20
|
+
cannot :read, ActiveAdmin::Page, name: "No Access"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
ActiveAdmin.application.namespace(:admin).authorization_adapter = ActiveAdmin::CanCanAdapter
|
26
|
+
|
27
|
+
ActiveAdmin.register Post do
|
28
|
+
end
|
29
|
+
|
30
|
+
ActiveAdmin.register_page "No Access" do
|
31
|
+
end
|
32
|
+
"""
|
33
|
+
And I am on the index page for posts
|
34
|
+
|
35
|
+
@allow-rescue
|
36
|
+
Scenario: Attempt to access a resource I am not authorized to see
|
37
|
+
When I go to the last post's edit page
|
38
|
+
Then I should see "You are not authorized to perform this action"
|
39
|
+
|
40
|
+
Scenario: Viewing the default action items
|
41
|
+
When I follow "View"
|
42
|
+
Then I should not see an action item link to "Edit"
|
43
|
+
|
44
|
+
@allow-rescue
|
45
|
+
Scenario: Attempting to visit a Page without authorization
|
46
|
+
When I go to the admin no access page
|
47
|
+
Then I should see "You are not authorized to perform this action"
|
48
|
+
|
49
|
+
@allow-rescue
|
50
|
+
Scenario: Viewing a page with authorization
|
51
|
+
When I go to the admin dashboard page
|
52
|
+
Then I should see "Dashboard"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Feature: Authorizing Access using Pundit
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am logged in
|
5
|
+
And 1 post exists
|
6
|
+
And a configuration of:
|
7
|
+
"""
|
8
|
+
require 'pundit'
|
9
|
+
|
10
|
+
ActiveAdmin.application.namespace(:admin).authorization_adapter = ActiveAdmin::PunditAdapter
|
11
|
+
|
12
|
+
ActiveAdmin.register Post do
|
13
|
+
end
|
14
|
+
|
15
|
+
ActiveAdmin.register_page "No Access" do
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
And I am on the index page for posts
|
19
|
+
|
20
|
+
@allow-rescue
|
21
|
+
Scenario: Attempt to access a resource I am not authorized to see
|
22
|
+
When I go to the last post's edit page
|
23
|
+
Then I should see "You are not authorized to perform this action"
|
24
|
+
|
25
|
+
Scenario: Viewing the default action items
|
26
|
+
When I follow "View"
|
27
|
+
Then I should not see an action item link to "Edit"
|
28
|
+
|
29
|
+
@allow-rescue
|
30
|
+
Scenario: Attempting to visit a Page without authorization
|
31
|
+
When I go to the admin no access page
|
32
|
+
Then I should see "You are not authorized to perform this action"
|
33
|
+
|
34
|
+
@allow-rescue
|
35
|
+
Scenario: Viewing a page with authorization
|
36
|
+
When I go to the admin dashboard page
|
37
|
+
Then I should see "Dashboard"
|
@@ -0,0 +1,124 @@
|
|
1
|
+
Feature: Belongs To
|
2
|
+
|
3
|
+
A resource belongs to another resource
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am logged in
|
7
|
+
And a post with the title "Hello World" written by "John Doe" exists
|
8
|
+
And a post with the title "Hello World" written by "Jane Doe" exists
|
9
|
+
|
10
|
+
Scenario: Viewing the child resource index page
|
11
|
+
Given a configuration of:
|
12
|
+
"""
|
13
|
+
ActiveAdmin.register User
|
14
|
+
ActiveAdmin.register Post do
|
15
|
+
belongs_to :user
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
When I go to the last author's posts
|
19
|
+
Then the "Users" tab should be selected
|
20
|
+
And I should not see a menu item for "Posts"
|
21
|
+
And I should see "Displaying 1 Post"
|
22
|
+
And I should see a link to "Users" in the breadcrumb
|
23
|
+
And I should see a link to "Jane Doe" in the breadcrumb
|
24
|
+
|
25
|
+
Scenario: Updating a child resource page
|
26
|
+
Given a configuration of:
|
27
|
+
"""
|
28
|
+
ActiveAdmin.register User
|
29
|
+
ActiveAdmin.register Post do
|
30
|
+
belongs_to :user
|
31
|
+
permit_params :title, :body, :published_date
|
32
|
+
|
33
|
+
form do |f|
|
34
|
+
f.inputs "Your Post" do
|
35
|
+
f.input :title
|
36
|
+
f.input :body
|
37
|
+
end
|
38
|
+
f.inputs "Publishing" do
|
39
|
+
f.input :published_date
|
40
|
+
end
|
41
|
+
f.actions
|
42
|
+
end
|
43
|
+
end
|
44
|
+
"""
|
45
|
+
When I go to the last author's last post page
|
46
|
+
And I follow "Edit Post"
|
47
|
+
Then I should see the element "form[action='/admin/users/2/posts/2']"
|
48
|
+
And I should see a link to "Hello World" in the breadcrumb
|
49
|
+
|
50
|
+
When I press "Update Post"
|
51
|
+
Then I should see "Post was successfully updated."
|
52
|
+
|
53
|
+
Scenario: Creating a child resource page
|
54
|
+
Given a configuration of:
|
55
|
+
"""
|
56
|
+
ActiveAdmin.register User
|
57
|
+
ActiveAdmin.register Post do
|
58
|
+
belongs_to :user
|
59
|
+
permit_params :title, :body, :published_date
|
60
|
+
|
61
|
+
form do |f|
|
62
|
+
f.inputs "Your Post" do
|
63
|
+
f.input :title
|
64
|
+
f.input :body
|
65
|
+
end
|
66
|
+
f.inputs "Publishing" do
|
67
|
+
f.input :published_date
|
68
|
+
end
|
69
|
+
f.actions
|
70
|
+
end
|
71
|
+
end
|
72
|
+
"""
|
73
|
+
When I go to the last author's posts
|
74
|
+
And I follow "New Post"
|
75
|
+
Then I should see the element "form[action='/admin/users/2/posts']"
|
76
|
+
When I fill in "Title" with "Hello World"
|
77
|
+
And I fill in "Body" with "This is the body"
|
78
|
+
|
79
|
+
And I press "Create Post"
|
80
|
+
Then I should see "Post was successfully created."
|
81
|
+
And I should see the attribute "Title" with "Hello World"
|
82
|
+
And I should see the attribute "Body" with "This is the body"
|
83
|
+
And I should see the attribute "Author" with "Jane Doe"
|
84
|
+
|
85
|
+
Scenario: Viewing a child resource page
|
86
|
+
Given a configuration of:
|
87
|
+
"""
|
88
|
+
ActiveAdmin.register User
|
89
|
+
ActiveAdmin.register Post do
|
90
|
+
belongs_to :user
|
91
|
+
end
|
92
|
+
"""
|
93
|
+
When I go to the last author's posts
|
94
|
+
And I follow "View"
|
95
|
+
Then I should be on the last author's last post page
|
96
|
+
And the "Users" tab should be selected
|
97
|
+
|
98
|
+
Scenario: When the belongs to is optional
|
99
|
+
Given a configuration of:
|
100
|
+
"""
|
101
|
+
ActiveAdmin.register User
|
102
|
+
ActiveAdmin.register Post do
|
103
|
+
belongs_to :user, optional: true
|
104
|
+
end
|
105
|
+
"""
|
106
|
+
When I go to the last author's posts
|
107
|
+
Then the "Users" tab should be selected
|
108
|
+
And I should see a menu item for "Posts"
|
109
|
+
|
110
|
+
When I follow "Posts"
|
111
|
+
Then the "Posts" tab should be selected
|
112
|
+
|
113
|
+
Scenario: Displaying belongs to resources in main menu
|
114
|
+
Given a configuration of:
|
115
|
+
"""
|
116
|
+
ActiveAdmin.register User
|
117
|
+
ActiveAdmin.register Post do
|
118
|
+
belongs_to :user
|
119
|
+
navigation_menu :user
|
120
|
+
end
|
121
|
+
"""
|
122
|
+
When I go to the last author's posts
|
123
|
+
And I follow "View"
|
124
|
+
Then the "Posts" tab should be selected
|
@@ -0,0 +1,76 @@
|
|
1
|
+
@breadcrumb
|
2
|
+
Feature: Breadcrumb
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given I am logged in
|
6
|
+
|
7
|
+
Scenario: Default breadcrumb links
|
8
|
+
Given a configuration of:
|
9
|
+
"""
|
10
|
+
ActiveAdmin.register Post do
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
When I am on the new post page
|
14
|
+
Then I should see a link to "Post" in the breadcrumb
|
15
|
+
|
16
|
+
Scenario: Rewritten breadcrumb links
|
17
|
+
Given a configuration of:
|
18
|
+
"""
|
19
|
+
ActiveAdmin.register Post do
|
20
|
+
breadcrumb do
|
21
|
+
[
|
22
|
+
link_to('test', '/admin/test/url')
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
"""
|
27
|
+
When I am on the new post page
|
28
|
+
Then I should see a link to "test" in the breadcrumb
|
29
|
+
|
30
|
+
Scenario: No Breadcrumbs configuration
|
31
|
+
Given a configuration of:
|
32
|
+
"""
|
33
|
+
ActiveAdmin.application.breadcrumb = false
|
34
|
+
ActiveAdmin.register Post do
|
35
|
+
end
|
36
|
+
"""
|
37
|
+
When I am on the new post page
|
38
|
+
Then I should see "Post"
|
39
|
+
And I should not see the element ".breadcrumb"
|
40
|
+
|
41
|
+
Scenario: Application config of false and a resource config of true
|
42
|
+
Given a configuration of:
|
43
|
+
"""
|
44
|
+
ActiveAdmin.application.breadcrumb = false
|
45
|
+
ActiveAdmin.register Post do
|
46
|
+
config.breadcrumb = true
|
47
|
+
end
|
48
|
+
"""
|
49
|
+
When I am on the new post page
|
50
|
+
Then I should see a link to "Post" in the breadcrumb
|
51
|
+
|
52
|
+
Scenario: Application config of false and rewritten breadcrumb links
|
53
|
+
Given a configuration of:
|
54
|
+
"""
|
55
|
+
ActiveAdmin.application.breadcrumb = false
|
56
|
+
ActiveAdmin.register Post do
|
57
|
+
breadcrumb do
|
58
|
+
[
|
59
|
+
link_to('test', '/admin/test/url')
|
60
|
+
]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
"""
|
64
|
+
When I am on the new post page
|
65
|
+
Then I should see a link to "test" in the breadcrumb
|
66
|
+
|
67
|
+
Scenario: Application config of true and a resource config of false
|
68
|
+
Given a configuration of:
|
69
|
+
"""
|
70
|
+
ActiveAdmin.application.breadcrumb = true
|
71
|
+
ActiveAdmin.register Post do
|
72
|
+
config.breadcrumb = false
|
73
|
+
end
|
74
|
+
"""
|
75
|
+
When I am on the new post page
|
76
|
+
Then I should not see the element ".breadcrumb"
|