yousty-activeadmin 1.0.4.pre → 1.0.5.pre
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 +4 -4
- data/CHANGELOG.md +261 -211
- data/CONTRIBUTING.md +73 -39
- data/Gemfile +38 -20
- data/Guardfile +1 -0
- data/LICENSE +1 -1
- data/README.md +48 -24
- data/Rakefile +12 -4
- data/activeadmin.gemspec +21 -26
- data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
- data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
- data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
- data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
- data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
- data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
- data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -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.css.scss → _all.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
- data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
- data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
- data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
- data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- 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 +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
- data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
- data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
- data/config/locales/ar.yml +120 -0
- data/config/locales/bg.yml +26 -6
- data/config/locales/bs.yml +122 -0
- data/config/locales/ca.yml +10 -1
- data/config/locales/cs.yml +7 -2
- data/config/locales/da.yml +7 -3
- data/config/locales/de-CH.yml +14 -31
- data/config/locales/de.yml +33 -33
- data/config/locales/el.yml +127 -0
- data/config/locales/en-GB.yml +11 -4
- data/config/locales/en.yml +21 -4
- data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
- data/config/locales/es.yml +32 -25
- data/config/locales/fa.yml +120 -0
- data/config/locales/fi.yml +9 -5
- data/config/locales/fr.yml +28 -12
- data/config/locales/he.yml +7 -3
- data/config/locales/hr.yml +42 -11
- data/config/locales/hu.yml +10 -3
- data/config/locales/it.yml +31 -3
- data/config/locales/ja.yml +17 -4
- data/config/locales/ko.yml +7 -1
- data/config/locales/lt.yml +42 -11
- data/config/locales/lv.yml +7 -3
- data/config/locales/{no-NB.yml → nb.yml} +46 -15
- data/config/locales/nl.yml +36 -5
- data/config/locales/pl.yml +13 -8
- data/config/locales/pt-BR.yml +36 -5
- data/config/locales/pt-PT.yml +8 -4
- data/config/locales/ro.yml +7 -3
- data/config/locales/ru.yml +26 -5
- data/config/locales/sv-SE.yml +9 -5
- data/config/locales/tr.yml +10 -3
- data/config/locales/uk.yml +36 -12
- data/config/locales/vi.yml +7 -3
- data/config/locales/zh-CN.yml +26 -10
- data/config/locales/zh-TW.yml +19 -13
- data/docs/0-installation.md +14 -6
- data/docs/1-general-configuration.md +8 -5
- data/docs/10-custom-pages.md +68 -70
- data/docs/11-decorators.md +48 -59
- data/docs/12-arbre-components.md +79 -73
- data/docs/13-authorization-adapter.md +128 -107
- data/docs/14-gotchas.md +90 -0
- data/docs/2-resource-customization.md +82 -15
- data/docs/3-index-pages.md +71 -12
- data/docs/3-index-pages/custom-index.md +31 -0
- data/docs/3-index-pages/index-as-table.md +45 -2
- data/docs/4-csv-format.md +1 -1
- data/docs/5-forms.md +78 -29
- data/docs/6-show-pages.md +31 -3
- data/docs/7-sidebars.md +46 -25
- data/docs/8-custom-actions.md +98 -77
- data/docs/9-batch-actions.md +211 -133
- data/docs/README.md +24 -0
- data/features/action_item.feature +3 -3
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +3 -0
- data/features/breadcrumb.feature +48 -0
- data/features/comments/commenting.feature +44 -13
- data/features/development_reloading.feature +3 -4
- data/features/edit_page.feature +9 -19
- data/features/favicon.feature +3 -3
- data/features/i18n.feature +5 -0
- data/features/index/batch_actions.feature +41 -0
- data/features/index/filters.feature +23 -0
- data/features/index/format_as_csv.feature +90 -4
- data/features/index/index_as_blog.feature +4 -4
- data/features/index/index_as_table.feature +102 -6
- data/features/index/index_blank_slate.feature +22 -0
- data/features/index/index_scope_to.feature +16 -16
- data/features/index/page_title.feature +11 -0
- data/features/index/pagination.feature +1 -1
- data/features/index/switch_index_view.feature +14 -14
- data/features/new_page.feature +10 -20
- data/features/registering_pages.feature +1 -1
- data/features/renamed_resource.feature +32 -0
- data/features/show/page_title.feature +11 -0
- data/features/show/tabs.feature +27 -0
- data/features/sidebar_sections.feature +12 -0
- data/features/specifying_actions.feature +3 -3
- data/features/step_definitions/action_item_steps.rb +2 -2
- data/features/step_definitions/action_link_steps.rb +14 -1
- data/features/step_definitions/additional_web_steps.rb +17 -18
- data/features/step_definitions/asset_steps.rb +3 -3
- data/features/step_definitions/attribute_steps.rb +8 -3
- data/features/step_definitions/batch_action_steps.rb +26 -9
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +1 -1
- data/features/step_definitions/comment_steps.rb +1 -1
- data/features/step_definitions/configuration_steps.rb +1 -1
- data/features/step_definitions/dashboard_steps.rb +2 -2
- data/features/step_definitions/factory_steps.rb +6 -6
- data/features/step_definitions/filter_steps.rb +25 -3
- data/features/step_definitions/flash_steps.rb +3 -3
- data/features/step_definitions/format_steps.rb +17 -10
- data/features/step_definitions/index_scope_steps.rb +5 -5
- data/features/step_definitions/layout_steps.rb +1 -1
- data/features/step_definitions/member_link_steps.rb +2 -2
- data/features/step_definitions/menu_steps.rb +3 -3
- data/features/step_definitions/pagination_steps.rb +2 -3
- data/features/step_definitions/sidebar_steps.rb +8 -3
- data/features/step_definitions/site_title_steps.rb +6 -4
- data/features/step_definitions/symbol_leak_steps.rb +1 -1
- data/features/step_definitions/tab_steps.rb +5 -0
- data/features/step_definitions/table_steps.rb +4 -4
- data/features/step_definitions/user_steps.rb +15 -9
- data/features/step_definitions/web_steps.rb +10 -11
- data/features/sti_resource.feature +2 -10
- data/features/strong_parameters.feature +73 -0
- data/features/support/env.rb +35 -2
- data/features/support/paths.rb +2 -2
- data/features/support/selectors.rb +1 -1
- data/features/users/resetting_password.feature +7 -7
- data/lib/active_admin.rb +18 -13
- data/lib/active_admin/abstract_view_factory.rb +7 -17
- data/lib/active_admin/application.rb +50 -25
- data/lib/active_admin/asset_registration.rb +2 -2
- data/lib/active_admin/authorization_adapter.rb +2 -2
- data/lib/active_admin/base_controller.rb +2 -3
- data/lib/active_admin/base_controller/authorization.rb +13 -31
- data/lib/active_admin/batch_actions.rb +1 -1
- data/lib/active_admin/batch_actions/controller.rb +13 -7
- data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
- data/lib/active_admin/callbacks.rb +25 -24
- data/lib/active_admin/cancan_adapter.rb +7 -11
- data/lib/active_admin/csv_builder.rb +92 -15
- data/lib/active_admin/dependency.rb +93 -0
- data/lib/active_admin/deprecation.rb +6 -7
- data/lib/active_admin/devise.rb +26 -14
- data/lib/active_admin/dsl.rb +18 -11
- data/lib/active_admin/engine.rb +7 -2
- data/lib/active_admin/error.rb +59 -0
- data/lib/active_admin/filters/dsl.rb +2 -2
- data/lib/active_admin/filters/forms.rb +19 -30
- data/lib/active_admin/filters/formtastic_addons.rb +20 -11
- data/lib/active_admin/filters/resource_extension.rb +16 -9
- data/lib/active_admin/form_builder.rb +94 -105
- data/lib/active_admin/helpers/collection.rb +7 -13
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +5 -5
- data/lib/active_admin/helpers/scope_chain.rb +1 -1
- data/lib/active_admin/helpers/settings.rb +16 -9
- data/lib/active_admin/iconic.rb +17 -15
- data/lib/active_admin/iconic/icons.rb +136 -136
- data/lib/active_admin/inputs.rb +11 -7
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base.rb +42 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -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_range_input.rb +36 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +54 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/menu.rb +3 -3
- data/lib/active_admin/menu_collection.rb +1 -4
- data/lib/active_admin/namespace.rb +52 -29
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +48 -51
- data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
- data/lib/active_admin/page.rb +5 -1
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -2
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/resource.rb +12 -3
- data/lib/active_admin/resource/action_items.rb +15 -8
- data/lib/active_admin/resource/belongs_to.rb +7 -3
- data/lib/active_admin/resource/controllers.rb +1 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +5 -5
- data/lib/active_admin/resource/naming.rb +25 -47
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +26 -10
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/sidebars.rb +1 -0
- data/lib/active_admin/resource_collection.rb +44 -16
- data/lib/active_admin/resource_controller.rb +6 -5
- data/lib/active_admin/resource_controller/data_access.rb +87 -82
- data/lib/active_admin/resource_controller/decorators.rb +91 -9
- data/lib/active_admin/resource_controller/streaming.rb +37 -0
- data/lib/active_admin/resource_dsl.rb +54 -10
- data/lib/active_admin/router.rb +7 -7
- data/lib/active_admin/scope.rb +6 -6
- data/lib/active_admin/sidebar_section.rb +10 -2
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +17 -16
- data/lib/active_admin/view_helpers.rb +0 -1
- data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
- data/lib/active_admin/view_helpers/display_helper.rb +30 -17
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
- data/lib/active_admin/view_helpers/fields_for.rb +2 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
- data/lib/active_admin/view_helpers/form_helper.rb +5 -9
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
- data/lib/active_admin/views/action_items.rb +2 -2
- data/lib/active_admin/views/components/action_list_popover.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +123 -0
- data/lib/active_admin/views/components/attributes_table.rb +22 -13
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +13 -7
- data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
- data/lib/active_admin/views/components/index_list.rb +7 -7
- data/lib/active_admin/views/components/paginated_collection.rb +33 -17
- data/lib/active_admin/views/components/panel.rb +8 -2
- data/lib/active_admin/views/components/popover.rb +1 -1
- data/lib/active_admin/views/components/scopes.rb +1 -1
- data/lib/active_admin/views/components/sidebar_section.rb +3 -2
- data/lib/active_admin/views/components/site_title.rb +2 -2
- data/lib/active_admin/views/components/status_tag.rb +34 -11
- data/lib/active_admin/views/components/table_for.rb +67 -22
- data/lib/active_admin/views/components/tabs.rb +28 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
- data/lib/active_admin/views/footer.rb +3 -3
- data/lib/active_admin/views/header.rb +3 -3
- data/lib/active_admin/views/index_as_blog.rb +6 -6
- data/lib/active_admin/views/index_as_grid.rb +2 -2
- data/lib/active_admin/views/index_as_table.rb +127 -40
- data/lib/active_admin/views/pages/base.rb +22 -18
- data/lib/active_admin/views/pages/form.rb +16 -6
- data/lib/active_admin/views/pages/index.rb +36 -20
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +4 -4
- data/lib/active_admin/views/tabbed_navigation.rb +7 -3
- data/lib/active_admin/views/title_bar.rb +10 -8
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
- data/lib/generators/active_admin/install/install_generator.rb +8 -9
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
- data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
- 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 +2 -4
- data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
- data/lib/ransack_ext.rb +4 -4
- data/script/local +2 -2
- data/script/travis_cache +107 -0
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
- data/spec/javascripts/fixtures/flashes.html +2 -0
- data/spec/rails_helper.rb +154 -0
- data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
- data/spec/{integration → requests}/javascript_spec.rb +5 -5
- data/spec/requests/memory_spec.rb +23 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +12 -170
- data/spec/support/detect_rails_version.rb +31 -39
- data/spec/support/rails_template.rb +61 -34
- data/spec/support/rails_template_with_data.rb +14 -14
- data/spec/support/templates/admin/stores.rb +3 -5
- 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 +45 -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 +4 -46
- data/spec/unit/abstract_view_factory_spec.rb +11 -11
- data/spec/unit/action_builder_spec.rb +24 -18
- data/spec/unit/active_admin_spec.rb +2 -2
- data/spec/unit/application_spec.rb +30 -31
- data/spec/unit/asset_registration_spec.rb +11 -11
- data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
- data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
- data/spec/unit/authorization/index_overriding_spec.rb +22 -0
- data/spec/unit/auto_link_spec.rb +42 -5
- data/spec/unit/batch_actions/resource_spec.rb +15 -14
- data/spec/unit/batch_actions/settings_spec.rb +18 -18
- data/spec/unit/belongs_to_spec.rb +26 -17
- data/spec/unit/cancan_adapter_spec.rb +4 -4
- data/spec/unit/comments_spec.rb +99 -39
- data/spec/unit/component_spec.rb +3 -3
- data/spec/unit/config_shared_examples.rb +8 -8
- data/spec/unit/controller_filters_spec.rb +26 -14
- data/spec/unit/csv_builder_spec.rb +152 -24
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +17 -37
- data/spec/unit/dsl_spec.rb +70 -9
- data/spec/unit/event_spec.rb +9 -9
- data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
- data/spec/unit/filters/resource_spec.rb +35 -33
- data/spec/unit/form_builder_spec.rb +383 -145
- data/spec/unit/generators/install_spec.rb +5 -5
- data/spec/unit/helpers/collection_spec.rb +18 -18
- data/spec/unit/helpers/scope_chain_spec.rb +5 -5
- data/spec/unit/helpers/settings_spec.rb +4 -4
- data/spec/unit/i18n_spec.rb +12 -0
- data/spec/unit/menu_collection_spec.rb +14 -14
- data/spec/unit/menu_item_spec.rb +42 -42
- data/spec/unit/menu_spec.rb +20 -20
- data/spec/unit/namespace/authorization_spec.rb +5 -5
- data/spec/unit/namespace/register_page_spec.rb +9 -9
- data/spec/unit/namespace/register_resource_spec.rb +26 -28
- data/spec/unit/namespace_spec.rb +20 -20
- data/spec/unit/order_clause_spec.rb +81 -0
- data/spec/unit/page_controller_spec.rb +1 -1
- data/spec/unit/page_spec.rb +18 -12
- data/spec/unit/pretty_format_spec.rb +42 -14
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +13 -10
- data/spec/unit/resource/includes_spec.rb +21 -0
- data/spec/unit/resource/menu_spec.rb +1 -1
- data/spec/unit/resource/naming_spec.rb +23 -23
- data/spec/unit/resource/page_presenters_spec.rb +8 -8
- data/spec/unit/resource/pagination_spec.rb +6 -6
- data/spec/unit/resource/routes_spec.rb +10 -10
- data/spec/unit/resource/scopes_spec.rb +14 -7
- data/spec/unit/resource/sidebars_spec.rb +6 -6
- data/spec/unit/resource_collection_spec.rb +66 -68
- data/spec/unit/resource_controller/data_access_spec.rb +39 -21
- data/spec/unit/resource_controller/decorators_spec.rb +83 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
- data/spec/unit/resource_controller_spec.rb +66 -62
- data/spec/unit/resource_registration_spec.rb +12 -12
- data/spec/unit/resource_spec.rb +75 -40
- data/spec/unit/routing_spec.rb +39 -31
- data/spec/unit/scope_spec.rb +112 -30
- data/spec/unit/settings_spec.rb +51 -21
- data/spec/unit/view_factory_spec.rb +2 -2
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
- data/spec/unit/view_helpers/display_name_spec.rb +49 -21
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
- data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
- data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
- data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
- data/spec/unit/views/components/attributes_table_spec.rb +94 -52
- data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
- data/spec/unit/views/components/blank_slate_spec.rb +14 -4
- data/spec/unit/views/components/columns_spec.rb +52 -22
- data/spec/unit/views/components/index_list_spec.rb +11 -8
- data/spec/unit/views/components/index_table_for_spec.rb +46 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
- data/spec/unit/views/components/panel_spec.rb +32 -21
- data/spec/unit/views/components/popover_spec.rb +7 -7
- data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
- data/spec/unit/views/components/site_title_spec.rb +8 -8
- data/spec/unit/views/components/status_tag_spec.rb +178 -38
- data/spec/unit/views/components/table_for_spec.rb +227 -44
- data/spec/unit/views/components/tabs_spec.rb +39 -0
- data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
- data/spec/unit/views/pages/form_spec.rb +17 -10
- data/spec/unit/views/pages/index_spec.rb +60 -0
- data/spec/unit/views/pages/layout_spec.rb +17 -21
- data/spec/unit/views/pages/show_spec.rb +16 -3
- data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
- data/tasks/docs.rake +1 -1
- data/tasks/parallel_tests.rake +8 -2
- data/tasks/test.rake +8 -4
- data/tasks/yard.rake +7 -5
- metadata +180 -101
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
- data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
- data/app/views/active_admin/dashboard/index.html.arb +0 -1
- data/app/views/active_admin/resource/index.csv.erb +0 -17
- data/docs/3-index-pages/create-an-index.md +0 -29
- data/lib/active_admin/inputs/filter_base.rb +0 -33
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
- data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
- data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
- data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
- data/lib/active_admin/inputs/filter_select_input.rb +0 -61
- data/lib/active_admin/inputs/filter_string_input.rb +0 -24
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
- data/spec/integration/memory_spec.rb +0 -29
- data/spec/integration/stylesheets_spec.rb +0 -41
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
- data/spec/javascripts/support/jquery.min.js +0 -4
- data/spec/spec_helper_without_rails.rb +0 -16
- data/tasks/js.rake +0 -32
|
@@ -15,20 +15,20 @@ Feature: User Resetting Password
|
|
|
15
15
|
And I follow "Forgot your password?"
|
|
16
16
|
When I fill in "Email" with "admin@example.com"
|
|
17
17
|
And I press "Reset My Password"
|
|
18
|
-
Then I should see "You will receive an email with instructions
|
|
18
|
+
Then I should see "You will receive an email with instructions on how to reset your password in a few minutes."
|
|
19
19
|
|
|
20
20
|
Scenario: Changing password after resetting
|
|
21
|
-
|
|
22
|
-
When I go to the admin password reset form with
|
|
23
|
-
And I fill in
|
|
21
|
+
When "admin@example.com" requests a password reset with token "foobarbaz"
|
|
22
|
+
When I go to the admin password reset form with token "foobarbaz"
|
|
23
|
+
And I fill in the password field with "password"
|
|
24
24
|
And I fill in "Password confirmation" with "password"
|
|
25
25
|
And I press "Change my password"
|
|
26
26
|
Then I should see "success"
|
|
27
27
|
|
|
28
28
|
Scenario: Changing password after resetting with errors
|
|
29
|
-
|
|
30
|
-
When I go to the admin password reset form with
|
|
31
|
-
And I fill in
|
|
29
|
+
When "admin@example.com" requests a password reset with token "foobarbaz" but it expires
|
|
30
|
+
When I go to the admin password reset form with token "foobarbaz"
|
|
31
|
+
And I fill in the password field with "password"
|
|
32
32
|
And I fill in "Password confirmation" with "wrong"
|
|
33
33
|
And I press "Change my password"
|
|
34
34
|
Then I should see "expired"
|
data/lib/active_admin.rb
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
require 'active_support/core_ext
|
|
1
|
+
require 'active_support/core_ext'
|
|
2
|
+
require 'set'
|
|
3
|
+
|
|
2
4
|
require 'ransack'
|
|
3
5
|
require 'ransack_ext'
|
|
4
6
|
require 'bourbon'
|
|
5
|
-
require 'devise'
|
|
6
7
|
require 'kaminari'
|
|
7
8
|
require 'formtastic'
|
|
8
9
|
require 'sass-rails'
|
|
@@ -11,7 +12,8 @@ require 'jquery-rails'
|
|
|
11
12
|
require 'jquery-ui-rails'
|
|
12
13
|
require 'coffee-rails'
|
|
13
14
|
require 'arbre'
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
require 'active_admin/helpers/i18n'
|
|
15
17
|
|
|
16
18
|
module ActiveAdmin
|
|
17
19
|
|
|
@@ -20,12 +22,13 @@ module ActiveAdmin
|
|
|
20
22
|
autoload :AssetRegistration, 'active_admin/asset_registration'
|
|
21
23
|
autoload :Authorization, 'active_admin/authorization_adapter'
|
|
22
24
|
autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
|
|
23
|
-
autoload :Breadcrumbs, 'active_admin/breadcrumbs'
|
|
24
25
|
autoload :Callbacks, 'active_admin/callbacks'
|
|
25
26
|
autoload :Component, 'active_admin/component'
|
|
26
27
|
autoload :BaseController, 'active_admin/base_controller'
|
|
28
|
+
autoload :CanCanAdapter, 'active_admin/cancan_adapter'
|
|
27
29
|
autoload :ControllerAction, 'active_admin/controller_action'
|
|
28
30
|
autoload :CSVBuilder, 'active_admin/csv_builder'
|
|
31
|
+
autoload :Dependency, 'active_admin/dependency'
|
|
29
32
|
autoload :Deprecation, 'active_admin/deprecation'
|
|
30
33
|
autoload :Devise, 'active_admin/devise'
|
|
31
34
|
autoload :DSL, 'active_admin/dsl'
|
|
@@ -37,11 +40,12 @@ module ActiveAdmin
|
|
|
37
40
|
autoload :MenuCollection, 'active_admin/menu_collection'
|
|
38
41
|
autoload :MenuItem, 'active_admin/menu_item'
|
|
39
42
|
autoload :Namespace, 'active_admin/namespace'
|
|
43
|
+
autoload :OrderClause, 'active_admin/order_clause'
|
|
40
44
|
autoload :Page, 'active_admin/page'
|
|
41
45
|
autoload :PagePresenter, 'active_admin/page_presenter'
|
|
42
46
|
autoload :PageController, 'active_admin/page_controller'
|
|
43
47
|
autoload :PageDSL, 'active_admin/page_dsl'
|
|
44
|
-
autoload :
|
|
48
|
+
autoload :PunditAdapter, 'active_admin/pundit_adapter'
|
|
45
49
|
autoload :Resource, 'active_admin/resource'
|
|
46
50
|
autoload :ResourceController, 'active_admin/resource_controller'
|
|
47
51
|
autoload :ResourceDSL, 'active_admin/resource_dsl'
|
|
@@ -68,11 +72,11 @@ module ActiveAdmin
|
|
|
68
72
|
application.prepare!
|
|
69
73
|
end
|
|
70
74
|
|
|
71
|
-
delegate :register, :
|
|
72
|
-
delegate :register_page, :
|
|
73
|
-
delegate :unload!, :
|
|
74
|
-
delegate :load!, :
|
|
75
|
-
delegate :routes, :
|
|
75
|
+
delegate :register, to: :application
|
|
76
|
+
delegate :register_page, to: :application
|
|
77
|
+
delegate :unload!, to: :application
|
|
78
|
+
delegate :load!, to: :application
|
|
79
|
+
delegate :routes, to: :application
|
|
76
80
|
|
|
77
81
|
# A callback is triggered each time (before) Active Admin loads the configuration files.
|
|
78
82
|
# In development mode, this will happen whenever the user changes files. In production
|
|
@@ -113,6 +117,10 @@ module ActiveAdmin
|
|
|
113
117
|
|
|
114
118
|
end
|
|
115
119
|
|
|
120
|
+
# Require things that don't support autoload
|
|
121
|
+
require 'active_admin/engine'
|
|
122
|
+
require 'active_admin/error'
|
|
123
|
+
|
|
116
124
|
# Require internal plugins
|
|
117
125
|
require 'active_admin/batch_actions'
|
|
118
126
|
require 'active_admin/filters'
|
|
@@ -120,6 +128,3 @@ require 'active_admin/filters'
|
|
|
120
128
|
# Require ORM-specific plugins
|
|
121
129
|
require 'active_admin/orm/active_record' if defined? ActiveRecord
|
|
122
130
|
require 'active_admin/orm/mongoid' if defined? Mongoid
|
|
123
|
-
|
|
124
|
-
# Load gem-specific code only if that gem is being used
|
|
125
|
-
require 'active_admin/cancan_adapter' if Gem.loaded_specs['cancan']
|
|
@@ -17,12 +17,12 @@ module ActiveAdmin
|
|
|
17
17
|
# eg:
|
|
18
18
|
#
|
|
19
19
|
# factory = AbstractViewFactory.new
|
|
20
|
-
# factory.register :
|
|
20
|
+
# factory.register my_view: SomeViewClass
|
|
21
21
|
#
|
|
22
22
|
# You can setup many at the same time:
|
|
23
23
|
#
|
|
24
|
-
# factory.register :
|
|
25
|
-
# :
|
|
24
|
+
# factory.register my_view: SomeClass,
|
|
25
|
+
# another_view: OtherViewClass
|
|
26
26
|
#
|
|
27
27
|
def register(view_hash)
|
|
28
28
|
view_hash.each do |view_key, view_class|
|
|
@@ -46,8 +46,7 @@ module ActiveAdmin
|
|
|
46
46
|
set_view_for_key(key, value)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
def respond_to?(method)
|
|
49
|
+
def respond_to_missing?(method, include_private)
|
|
51
50
|
key = key_from_method_name(method)
|
|
52
51
|
if has_key?(key)
|
|
53
52
|
true
|
|
@@ -62,26 +61,17 @@ module ActiveAdmin
|
|
|
62
61
|
key = key_from_method_name(method)
|
|
63
62
|
if has_key?(key)
|
|
64
63
|
if method.to_s.include?('=')
|
|
65
|
-
|
|
66
|
-
def #{key}=(value)
|
|
67
|
-
set_view_for_key(:#{key}, value)
|
|
68
|
-
end
|
|
69
|
-
EOS
|
|
64
|
+
set_view_for_key key, args.first
|
|
70
65
|
else
|
|
71
|
-
|
|
72
|
-
def #{key}
|
|
73
|
-
get_view_for_key(:#{key})
|
|
74
|
-
end
|
|
75
|
-
EOS
|
|
66
|
+
get_view_for_key key
|
|
76
67
|
end
|
|
77
|
-
self.send(method, *args)
|
|
78
68
|
else
|
|
79
69
|
super
|
|
80
70
|
end
|
|
81
71
|
end
|
|
82
72
|
|
|
83
73
|
def key_from_method_name(method)
|
|
84
|
-
method.to_s.
|
|
74
|
+
method.to_s.tr('=', '').to_sym
|
|
85
75
|
end
|
|
86
76
|
|
|
87
77
|
def get_view_for_key(key)
|
|
@@ -17,7 +17,7 @@ module ActiveAdmin
|
|
|
17
17
|
|
|
18
18
|
attr_reader :namespaces
|
|
19
19
|
def initialize
|
|
20
|
-
@namespaces =
|
|
20
|
+
@namespaces = Namespace::Store.new
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# Load paths for admin configurations. Add folders to this load path
|
|
@@ -36,7 +36,7 @@ module ActiveAdmin
|
|
|
36
36
|
|
|
37
37
|
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
|
38
38
|
inheritable_setting :site_title_image, ""
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
# Set a favicon
|
|
41
41
|
inheritable_setting :favicon, false
|
|
42
42
|
|
|
@@ -67,8 +67,14 @@ module ActiveAdmin
|
|
|
67
67
|
# The namespace root.
|
|
68
68
|
inheritable_setting :root_to, 'dashboard#index'
|
|
69
69
|
|
|
70
|
+
# Options that a passed to root_to.
|
|
71
|
+
inheritable_setting :root_to_options, {}
|
|
72
|
+
|
|
73
|
+
# Display breadcrumbs
|
|
74
|
+
inheritable_setting :breadcrumb, true
|
|
75
|
+
|
|
70
76
|
# Default CSV options
|
|
71
|
-
inheritable_setting :csv_options, {:
|
|
77
|
+
inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
|
72
78
|
|
|
73
79
|
# Default Download Links options
|
|
74
80
|
inheritable_setting :download_links, true
|
|
@@ -79,6 +85,17 @@ module ActiveAdmin
|
|
|
79
85
|
# A proc to be used when a user is not authorized to view the current resource
|
|
80
86
|
inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
|
|
81
87
|
|
|
88
|
+
# A regex to detect unsupported browser, set to false to disable
|
|
89
|
+
inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
|
90
|
+
|
|
91
|
+
# Request parameters that are permitted by default
|
|
92
|
+
inheritable_setting :permitted_params, [
|
|
93
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
|
97
|
+
inheritable_setting :flash_keys_to_except, ['timedout']
|
|
98
|
+
|
|
82
99
|
# Active Admin makes educated guesses when displaying objects, this is
|
|
83
100
|
# the list of methods it tries calling in order
|
|
84
101
|
setting :display_name_methods, [ :display_name,
|
|
@@ -92,7 +109,9 @@ module ActiveAdmin
|
|
|
92
109
|
|
|
93
110
|
# == Deprecated Settings
|
|
94
111
|
|
|
95
|
-
|
|
112
|
+
def allow_comments=(*)
|
|
113
|
+
raise "`config.allow_comments` is no longer provided in ActiveAdmin 1.x. Use `config.comments` instead."
|
|
114
|
+
end
|
|
96
115
|
|
|
97
116
|
include AssetRegistration
|
|
98
117
|
|
|
@@ -121,15 +140,14 @@ module ActiveAdmin
|
|
|
121
140
|
#
|
|
122
141
|
# Yields the namespace if a block is given
|
|
123
142
|
#
|
|
124
|
-
# @
|
|
143
|
+
# @return [Namespace] the new or existing namespace
|
|
125
144
|
def namespace(name)
|
|
126
145
|
name ||= :root
|
|
127
146
|
|
|
128
|
-
|
|
129
|
-
namespace =
|
|
130
|
-
else
|
|
131
|
-
namespace = namespaces[name] = Namespace.new(self, name)
|
|
147
|
+
namespace = namespaces[name] ||= begin
|
|
148
|
+
namespace = Namespace.new(self, name)
|
|
132
149
|
ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
|
|
150
|
+
namespace
|
|
133
151
|
end
|
|
134
152
|
|
|
135
153
|
yield(namespace) if block_given?
|
|
@@ -140,7 +158,7 @@ module ActiveAdmin
|
|
|
140
158
|
# Register a page
|
|
141
159
|
#
|
|
142
160
|
# @param name [String] The page name
|
|
143
|
-
# @
|
|
161
|
+
# @option [Hash] Accepts option :namespace.
|
|
144
162
|
# @&block The registration block.
|
|
145
163
|
#
|
|
146
164
|
def register_page(name, options = {}, &block)
|
|
@@ -156,7 +174,7 @@ module ActiveAdmin
|
|
|
156
174
|
# Removes all defined controllers from memory. Useful in
|
|
157
175
|
# development, where they are reloaded on each request.
|
|
158
176
|
def unload!
|
|
159
|
-
namespaces.
|
|
177
|
+
namespaces.each &:unload!
|
|
160
178
|
@@loaded = false
|
|
161
179
|
end
|
|
162
180
|
|
|
@@ -172,6 +190,10 @@ module ActiveAdmin
|
|
|
172
190
|
end
|
|
173
191
|
end
|
|
174
192
|
|
|
193
|
+
def load(file)
|
|
194
|
+
DatabaseHitDuringLoad.capture{ super }
|
|
195
|
+
end
|
|
196
|
+
|
|
175
197
|
# Returns ALL the files to be loaded
|
|
176
198
|
def files
|
|
177
199
|
load_paths.flatten.compact.uniq.map{ |path| Dir["#{path}/**/*.rb"] }.flatten
|
|
@@ -191,15 +213,20 @@ module ActiveAdmin
|
|
|
191
213
|
# Example usage:
|
|
192
214
|
# ActiveAdmin.before_filter :authenticate_admin!
|
|
193
215
|
#
|
|
194
|
-
%w(before_filter skip_before_filter after_filter around_filter skip_filter).each do |name|
|
|
216
|
+
%w(before_filter skip_before_filter after_filter skip_after_filter around_filter skip_filter).each do |name|
|
|
195
217
|
define_method name do |*args, &block|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
ActiveAdmin::Devise::UnlocksController.send name, *args, &block
|
|
218
|
+
controllers_for_filters.each do |controller|
|
|
219
|
+
controller.public_send name, *args, &block
|
|
220
|
+
end
|
|
200
221
|
end
|
|
201
222
|
end
|
|
202
223
|
|
|
224
|
+
def controllers_for_filters
|
|
225
|
+
controllers = [BaseController]
|
|
226
|
+
controllers.push *Devise.controllers_for_filters if Dependency.devise?
|
|
227
|
+
controllers
|
|
228
|
+
end
|
|
229
|
+
|
|
203
230
|
private
|
|
204
231
|
|
|
205
232
|
def register_default_assets
|
|
@@ -215,11 +242,8 @@ module ActiveAdmin
|
|
|
215
242
|
# As well, we have to remove it from +eager_load_paths+ to prevent the
|
|
216
243
|
# files from being loaded twice in production.
|
|
217
244
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
218
|
-
ActiveSupport::Dependencies.autoload_paths
|
|
219
|
-
Rails.application.config.eager_load_paths
|
|
220
|
-
Rails.application.config.eager_load_paths.reject do |path|
|
|
221
|
-
load_paths.include?(path)
|
|
222
|
-
end
|
|
245
|
+
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
|
246
|
+
Rails.application.config.eager_load_paths -= load_paths
|
|
223
247
|
end
|
|
224
248
|
|
|
225
249
|
# Hooks the app/admin directory into our Rails Engine's +watchable_dirs+, so the
|
|
@@ -232,10 +256,11 @@ module ActiveAdmin
|
|
|
232
256
|
ActiveAdmin::Engine.config.watchable_dirs[path] = [:rb]
|
|
233
257
|
end
|
|
234
258
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
259
|
+
Rails.application.config.after_initialize do
|
|
260
|
+
ActionDispatch::Reloader.to_prepare do
|
|
261
|
+
ActiveAdmin.application.unload!
|
|
262
|
+
Rails.application.reload_routes!
|
|
263
|
+
end
|
|
239
264
|
end
|
|
240
265
|
end
|
|
241
266
|
end
|
|
@@ -10,7 +10,7 @@ module ActiveAdmin
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def clear_stylesheets!
|
|
13
|
-
|
|
13
|
+
stylesheets.clear
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def register_javascript(name)
|
|
@@ -22,7 +22,7 @@ module ActiveAdmin
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def clear_javascripts!
|
|
25
|
-
|
|
25
|
+
javascripts.clear
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
end
|
|
@@ -49,7 +49,7 @@ module ActiveAdmin
|
|
|
49
49
|
# global navigation. To deal with this nicely in a case statement, take
|
|
50
50
|
# a look at `#normalized(klasss)`
|
|
51
51
|
#
|
|
52
|
-
# @
|
|
52
|
+
# @return [Boolean]
|
|
53
53
|
def authorized?(action, subject = nil)
|
|
54
54
|
true
|
|
55
55
|
end
|
|
@@ -66,7 +66,7 @@ module ActiveAdmin
|
|
|
66
66
|
# one of the `ActiveAdmin::Auth::*` symbols. Defaults to `Auth::READ` if
|
|
67
67
|
# no action passed in.
|
|
68
68
|
#
|
|
69
|
-
# @
|
|
69
|
+
# @return [ActiveRecord::Relation] A new collection, scoped to the
|
|
70
70
|
# objects that the current user has access to.
|
|
71
71
|
def scope_collection(collection, action = Auth::READ)
|
|
72
72
|
collection
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'inherited_resources'
|
|
2
|
-
|
|
3
1
|
require 'active_admin/base_controller/authorization'
|
|
4
2
|
require 'active_admin/base_controller/menu'
|
|
5
3
|
|
|
@@ -8,6 +6,7 @@ module ActiveAdmin
|
|
|
8
6
|
# It implements ActiveAdmin controllers core features.
|
|
9
7
|
class BaseController < ::InheritedResources::Base
|
|
10
8
|
helper ::ActiveAdmin::ViewHelpers
|
|
9
|
+
helper_method :env
|
|
11
10
|
|
|
12
11
|
layout :determine_active_admin_layout
|
|
13
12
|
|
|
@@ -23,7 +22,7 @@ module ActiveAdmin
|
|
|
23
22
|
attr_accessor :active_admin_config
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
# By default Rails will render un-implemented actions when the view exists.
|
|
25
|
+
# By default Rails will render un-implemented actions when the view exists. Because Active
|
|
27
26
|
# Admin allows you to not render any of the actions by using the #actions method, we need
|
|
28
27
|
# to check if they are implemented.
|
|
29
28
|
def only_render_implemented_actions
|
|
@@ -1,39 +1,21 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
|
-
|
|
3
|
-
# Exception class to raise when there is an authorized access
|
|
4
|
-
# exception thrown. The exception has a few goodies that may
|
|
5
|
-
# be useful for capturing / recognizing security issues.
|
|
6
|
-
class AccessDenied < StandardError
|
|
7
|
-
attr_reader :user, :action, :subject
|
|
8
|
-
|
|
9
|
-
def initialize(user, action, subject)
|
|
10
|
-
@user, @action, @subject = user, action, subject
|
|
11
|
-
|
|
12
|
-
super()
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def message
|
|
16
|
-
I18n.t("active_admin.access_denied.message")
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
2
|
class BaseController < ::InheritedResources::Base
|
|
21
3
|
module Authorization
|
|
22
4
|
include MethodOrProcHelper
|
|
23
5
|
extend ActiveSupport::Concern
|
|
24
6
|
|
|
25
7
|
ACTIONS_DICTIONARY = {
|
|
26
|
-
:
|
|
27
|
-
:
|
|
28
|
-
:
|
|
29
|
-
:
|
|
30
|
-
:
|
|
31
|
-
:
|
|
32
|
-
:
|
|
8
|
+
index: ActiveAdmin::Authorization::READ,
|
|
9
|
+
show: ActiveAdmin::Authorization::READ,
|
|
10
|
+
new: ActiveAdmin::Authorization::CREATE,
|
|
11
|
+
create: ActiveAdmin::Authorization::CREATE,
|
|
12
|
+
edit: ActiveAdmin::Authorization::UPDATE,
|
|
13
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
|
14
|
+
destroy: ActiveAdmin::Authorization::DESTROY
|
|
33
15
|
}
|
|
34
16
|
|
|
35
17
|
included do
|
|
36
|
-
rescue_from ActiveAdmin::AccessDenied, :
|
|
18
|
+
rescue_from ActiveAdmin::AccessDenied, with: :dispatch_active_admin_access_denied
|
|
37
19
|
|
|
38
20
|
helper_method :authorized?
|
|
39
21
|
helper_method :authorize!
|
|
@@ -50,7 +32,7 @@ module ActiveAdmin
|
|
|
50
32
|
# @param [any] subject The subject that the user is trying to perform
|
|
51
33
|
# the action on.
|
|
52
34
|
#
|
|
53
|
-
# @
|
|
35
|
+
# @return [Boolean]
|
|
54
36
|
#
|
|
55
37
|
def authorized?(action, subject = nil)
|
|
56
38
|
active_admin_authorization.authorized?(action, subject)
|
|
@@ -67,7 +49,7 @@ module ActiveAdmin
|
|
|
67
49
|
# @param [any] subject The subject that the user is trying to perform
|
|
68
50
|
# the action on.
|
|
69
51
|
#
|
|
70
|
-
# @
|
|
52
|
+
# @return [Boolean] True if authorized, otherwise raises
|
|
71
53
|
# an ActiveAdmin::AccessDenied.
|
|
72
54
|
def authorize!(action, subject = nil)
|
|
73
55
|
unless authorized? action, subject
|
|
@@ -87,7 +69,7 @@ module ActiveAdmin
|
|
|
87
69
|
|
|
88
70
|
# Retrieve or instantiate the authorization instance for this resource
|
|
89
71
|
#
|
|
90
|
-
# @
|
|
72
|
+
# @return [ActiveAdmin::AuthorizationAdapter]
|
|
91
73
|
def active_admin_authorization
|
|
92
74
|
@active_admin_authorization ||=
|
|
93
75
|
active_admin_authorization_adapter.new active_admin_config, current_active_admin_user
|
|
@@ -95,7 +77,7 @@ module ActiveAdmin
|
|
|
95
77
|
|
|
96
78
|
# Returns the class to be used as the authorization adapter
|
|
97
79
|
#
|
|
98
|
-
# @
|
|
80
|
+
# @return [Class]
|
|
99
81
|
def active_admin_authorization_adapter
|
|
100
82
|
adapter = active_admin_namespace.authorization_adapter
|
|
101
83
|
if adapter.is_a? String
|
|
@@ -111,7 +93,7 @@ module ActiveAdmin
|
|
|
111
93
|
#
|
|
112
94
|
# @param [String, Symbol] action The controller action name.
|
|
113
95
|
#
|
|
114
|
-
# @
|
|
96
|
+
# @return [Symbol] The permission name to use.
|
|
115
97
|
def action_to_permission(action)
|
|
116
98
|
if action && action = action.to_sym
|
|
117
99
|
Authorization::ACTIONS_DICTIONARY[action] || action
|