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
|
@@ -32,7 +32,7 @@ module ActiveAdmin
|
|
|
32
32
|
#
|
|
33
33
|
# @param [Symbol, String] action The action to get the config for
|
|
34
34
|
# @param [String] type The string specified in the presenters index_name method
|
|
35
|
-
# @
|
|
35
|
+
# @return [PagePresenter, nil]
|
|
36
36
|
def get_page_presenter(action, type=nil)
|
|
37
37
|
|
|
38
38
|
if action.to_s == "index" && type && page_presenters[:index].kind_of?(Hash)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
2
|
class Resource
|
|
3
3
|
module Routes
|
|
4
|
-
# @
|
|
4
|
+
# @param params [Hash] of params: { study_id: 3 }
|
|
5
5
|
# @return [String] the path to this resource collection page
|
|
6
6
|
# @example "/admin/posts"
|
|
7
7
|
def route_collection_path(params = {})
|
|
8
8
|
RouteBuilder.new(self).collection_path(params)
|
|
9
9
|
end
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
# @param resource [ActiveRecord::Base] the instance we want the path of
|
|
12
12
|
# @return [String] the path to this resource collection page
|
|
13
13
|
# @example "/admin/posts/1"
|
|
@@ -15,13 +15,17 @@ module ActiveAdmin
|
|
|
15
15
|
RouteBuilder.new(self).instance_path(resource)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def route_edit_instance_path(resource)
|
|
19
|
+
RouteBuilder.new(self).edit_instance_path(resource)
|
|
20
|
+
end
|
|
21
|
+
|
|
18
22
|
# Returns the routes prefix for this config
|
|
19
23
|
def route_prefix
|
|
20
24
|
namespace.module_name.try(:underscore)
|
|
21
25
|
end
|
|
22
26
|
|
|
23
27
|
def route_uncountable?
|
|
24
|
-
config =
|
|
28
|
+
config = resources_configuration[:self]
|
|
25
29
|
|
|
26
30
|
config[:route_collection_name] == config[:route_instance_name]
|
|
27
31
|
end
|
|
@@ -35,29 +39,41 @@ module ActiveAdmin
|
|
|
35
39
|
|
|
36
40
|
def collection_path(params)
|
|
37
41
|
route_name = route_name(
|
|
38
|
-
resource.
|
|
39
|
-
(resource.route_uncountable? ?
|
|
42
|
+
resource.resources_configuration[:self][:route_collection_name],
|
|
43
|
+
suffix: (resource.route_uncountable? ? "index_path" : "path")
|
|
40
44
|
)
|
|
41
45
|
|
|
42
|
-
routes.
|
|
46
|
+
routes.public_send route_name, *route_collection_params(params)
|
|
43
47
|
end
|
|
44
48
|
|
|
45
49
|
# @return [String] the path to this resource collection page
|
|
46
50
|
# @param instance [ActiveRecord::Base] the instance we want the path of
|
|
47
51
|
# @example "/admin/posts/1"
|
|
48
52
|
def instance_path(instance)
|
|
49
|
-
route_name = route_name(resource.
|
|
53
|
+
route_name = route_name(resource.resources_configuration[:self][:route_instance_name])
|
|
54
|
+
|
|
55
|
+
routes.public_send route_name, *route_instance_params(instance)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @return [String] the path to the edit page of this resource
|
|
59
|
+
# @param instance [ActiveRecord::Base] the instance we want the path of
|
|
60
|
+
# @example "/admin/posts/1/edit"
|
|
61
|
+
def edit_instance_path(instance)
|
|
62
|
+
path = resource.resources_configuration[:self][:route_instance_name]
|
|
63
|
+
route_name = route_name(path, action: :edit)
|
|
50
64
|
|
|
51
|
-
routes.
|
|
65
|
+
routes.public_send route_name, *route_instance_params(instance)
|
|
52
66
|
end
|
|
53
67
|
|
|
54
68
|
private
|
|
55
69
|
|
|
56
70
|
attr_reader :resource
|
|
57
71
|
|
|
58
|
-
def route_name(resource_path_name,
|
|
72
|
+
def route_name(resource_path_name, options = {})
|
|
73
|
+
suffix = options[:suffix] || "path"
|
|
59
74
|
route = []
|
|
60
75
|
|
|
76
|
+
route << options[:action] # "edit" or "new"
|
|
61
77
|
route << resource.route_prefix # "admin"
|
|
62
78
|
route << belongs_to_name if nested? # "category"
|
|
63
79
|
route << resource_path_name # "posts" or "post"
|
|
@@ -70,7 +86,7 @@ module ActiveAdmin
|
|
|
70
86
|
# @return params to pass to instance path
|
|
71
87
|
def route_instance_params(instance)
|
|
72
88
|
if nested?
|
|
73
|
-
[instance.
|
|
89
|
+
[instance.public_send(belongs_to_name).to_param, instance.to_param]
|
|
74
90
|
else
|
|
75
91
|
instance.to_param
|
|
76
92
|
end
|
|
@@ -20,7 +20,7 @@ module ActiveAdmin
|
|
|
20
20
|
# method to call as the association. If its different, you can
|
|
21
21
|
# pass in the association_method as an option.
|
|
22
22
|
#
|
|
23
|
-
# scope_to :current_user, :
|
|
23
|
+
# scope_to :current_user, association_method: :blog_posts
|
|
24
24
|
#
|
|
25
25
|
# will result in the following
|
|
26
26
|
#
|
|
@@ -28,11 +28,11 @@ module ActiveAdmin
|
|
|
28
28
|
#
|
|
29
29
|
# To conditionally use this scope, you can use conditional procs
|
|
30
30
|
#
|
|
31
|
-
# scope_to :current_user, :
|
|
31
|
+
# scope_to :current_user, if: proc{ admin_user_signed_in? }
|
|
32
32
|
#
|
|
33
33
|
# or
|
|
34
34
|
#
|
|
35
|
-
# scope_to :current_user, :
|
|
35
|
+
# scope_to :current_user, unless: proc{ current_user.admin? }
|
|
36
36
|
#
|
|
37
37
|
def scope_to(*args, &block)
|
|
38
38
|
options = args.extract_options!
|
|
@@ -55,10 +55,10 @@ module ActiveAdmin
|
|
|
55
55
|
|
|
56
56
|
def scope_to_config
|
|
57
57
|
@scope_to_config ||= {
|
|
58
|
-
:
|
|
59
|
-
:
|
|
60
|
-
:
|
|
61
|
-
:
|
|
58
|
+
method: nil,
|
|
59
|
+
association_method: nil,
|
|
60
|
+
if: nil,
|
|
61
|
+
unless: nil
|
|
62
62
|
}
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -4,14 +4,19 @@ module ActiveAdmin
|
|
|
4
4
|
class ResourceCollection
|
|
5
5
|
include Enumerable
|
|
6
6
|
extend Forwardable
|
|
7
|
-
def_delegators :@
|
|
7
|
+
def_delegators :@collection, :empty?, :has_key?, :keys, :values, :size
|
|
8
8
|
|
|
9
9
|
def initialize
|
|
10
|
-
@
|
|
10
|
+
@collection = {}
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def add(resource)
|
|
14
|
-
@
|
|
14
|
+
if match = @collection[resource.resource_name]
|
|
15
|
+
raise_if_mismatched! match, resource
|
|
16
|
+
match
|
|
17
|
+
else
|
|
18
|
+
@collection[resource.resource_name] = resource
|
|
19
|
+
end
|
|
15
20
|
end
|
|
16
21
|
|
|
17
22
|
# Changes `each` to pass in the value, instead of both the key and value.
|
|
@@ -19,23 +24,46 @@ module ActiveAdmin
|
|
|
19
24
|
values.each &block
|
|
20
25
|
end
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if match = @resources[klass]
|
|
25
|
-
match
|
|
26
|
-
elsif match = real_resources.detect{ |r| [r.resource_name.to_s, r.resource_class.to_s].include? klass.to_s }
|
|
27
|
-
match
|
|
28
|
-
elsif klass.respond_to? :base_class
|
|
29
|
-
real_resources.detect{ |r| r.resource_class.to_s == klass.base_class.to_s }
|
|
30
|
-
end
|
|
27
|
+
def [](obj)
|
|
28
|
+
@collection[obj] || find_resource(obj)
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
private
|
|
34
32
|
|
|
35
|
-
#
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
# Finds a resource based on the resource name, resource class, or base class.
|
|
34
|
+
def find_resource(obj)
|
|
35
|
+
resources.detect do |r|
|
|
36
|
+
r.resource_name.to_s == obj.to_s || r.resource_class.to_s == obj.to_s
|
|
37
|
+
end ||
|
|
38
|
+
if obj.respond_to? :base_class
|
|
39
|
+
resources.detect{ |r| r.resource_class.to_s == obj.base_class.to_s }
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def resources
|
|
44
|
+
select{ |r| r.class <= Resource } # can otherwise be a Page
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def raise_if_mismatched!(existing, given)
|
|
48
|
+
if existing.class != given.class
|
|
49
|
+
raise IncorrectClass.new existing, given
|
|
50
|
+
elsif given.class <= Resource && existing.resource_class != given.resource_class
|
|
51
|
+
raise ConfigMismatch.new existing, given
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class IncorrectClass < StandardError
|
|
56
|
+
def initialize(existing, given)
|
|
57
|
+
super "You're trying to register #{given.resource_name} which is a #{given.class}, " +
|
|
58
|
+
"but #{existing.resource_name}, a #{existing.class} has already claimed that name."
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class ConfigMismatch < StandardError
|
|
63
|
+
def initialize(existing, given)
|
|
64
|
+
super "You're trying to register #{given.resource_class} as #{given.resource_name}, " +
|
|
65
|
+
"but the existing #{existing.class} config was built for #{existing.resource_class}!"
|
|
66
|
+
end
|
|
39
67
|
end
|
|
40
68
|
|
|
41
69
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require 'inherited_resources'
|
|
2
1
|
require 'active_admin/resource_controller/action_builder'
|
|
3
2
|
require 'active_admin/resource_controller/data_access'
|
|
4
3
|
require 'active_admin/resource_controller/decorators'
|
|
5
4
|
require 'active_admin/resource_controller/scoping'
|
|
5
|
+
require 'active_admin/resource_controller/streaming'
|
|
6
6
|
require 'active_admin/resource_controller/sidebars'
|
|
7
7
|
require 'active_admin/resource_controller/resource_class_methods'
|
|
8
8
|
|
|
@@ -13,20 +13,21 @@ module ActiveAdmin
|
|
|
13
13
|
layout :determine_active_admin_layout
|
|
14
14
|
|
|
15
15
|
respond_to :html, :xml, :json
|
|
16
|
-
respond_to :csv, :
|
|
16
|
+
respond_to :csv, only: :index
|
|
17
17
|
|
|
18
18
|
include ActionBuilder
|
|
19
19
|
include Decorators
|
|
20
20
|
include DataAccess
|
|
21
21
|
include Scoping
|
|
22
|
+
include Streaming
|
|
22
23
|
include Sidebars
|
|
23
24
|
extend ResourceClassMethods
|
|
24
25
|
|
|
25
26
|
def self.active_admin_config=(config)
|
|
26
27
|
if @active_admin_config = config
|
|
27
|
-
defaults :
|
|
28
|
-
:
|
|
29
|
-
:
|
|
28
|
+
defaults resource_class: config.resource_class,
|
|
29
|
+
route_prefix: config.route_prefix,
|
|
30
|
+
instance_name: config.resource_name.singular
|
|
30
31
|
end
|
|
31
32
|
end
|
|
32
33
|
|
|
@@ -7,13 +7,14 @@ module ActiveAdmin
|
|
|
7
7
|
# The module also deals with authorization and resource callbacks.
|
|
8
8
|
#
|
|
9
9
|
module DataAccess
|
|
10
|
-
extend ActiveSupport::Concern
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
def self.included(base)
|
|
12
|
+
base.class_exec do
|
|
13
|
+
include Callbacks
|
|
14
|
+
include ScopeChain
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
define_active_admin_callbacks :build, :create, :update, :save, :destroy
|
|
17
|
+
end
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
protected
|
|
@@ -25,16 +26,13 @@ module ActiveAdmin
|
|
|
25
26
|
# either the @collection instance variable or an instance variable named
|
|
26
27
|
# after the resource that the collection is for. eg: Post => @post.
|
|
27
28
|
#
|
|
28
|
-
# @
|
|
29
|
+
# @return [ActiveRecord::Relation] The collection for the index
|
|
29
30
|
def collection
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
authorize! ActiveAdmin::Authorization::READ, active_admin_config.resource_class
|
|
36
|
-
|
|
37
|
-
set_collection_ivar _collection
|
|
31
|
+
get_collection_ivar || begin
|
|
32
|
+
collection = find_collection
|
|
33
|
+
authorize! Authorization::READ, active_admin_config.resource_class
|
|
34
|
+
set_collection_ivar collection
|
|
35
|
+
end
|
|
38
36
|
end
|
|
39
37
|
|
|
40
38
|
|
|
@@ -43,7 +41,7 @@ module ActiveAdmin
|
|
|
43
41
|
# some additional db # work before your controller returns and
|
|
44
42
|
# authorizes the collection.
|
|
45
43
|
#
|
|
46
|
-
# @
|
|
44
|
+
# @return [ActiveRecord::Relation] The collectin for the index
|
|
47
45
|
def find_collection
|
|
48
46
|
collection = scoped_collection
|
|
49
47
|
|
|
@@ -51,8 +49,13 @@ module ActiveAdmin
|
|
|
51
49
|
collection = apply_sorting(collection)
|
|
52
50
|
collection = apply_filtering(collection)
|
|
53
51
|
collection = apply_scoping(collection)
|
|
54
|
-
collection =
|
|
55
|
-
|
|
52
|
+
collection = apply_includes(collection)
|
|
53
|
+
|
|
54
|
+
unless request.format == 'text/csv'
|
|
55
|
+
collection = apply_pagination(collection)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
collection = apply_collection_decorator(collection)
|
|
56
59
|
|
|
57
60
|
collection
|
|
58
61
|
end
|
|
@@ -81,37 +84,27 @@ module ActiveAdmin
|
|
|
81
84
|
# * update
|
|
82
85
|
# * destroy
|
|
83
86
|
#
|
|
84
|
-
# @
|
|
87
|
+
# @return [ActiveRecord::Base] An active record object
|
|
85
88
|
def resource
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
_resource = find_resource
|
|
91
|
-
authorize_resource! _resource
|
|
89
|
+
get_resource_ivar || begin
|
|
90
|
+
resource = find_resource
|
|
91
|
+
authorize_resource! resource
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
resource = apply_decorator resource
|
|
94
|
+
set_resource_ivar resource
|
|
95
95
|
end
|
|
96
|
-
|
|
97
|
-
set_resource_ivar(_resource)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def decorator?
|
|
101
|
-
!!active_admin_config.decorator_class
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def decorator_class
|
|
105
|
-
active_admin_config.decorator_class
|
|
106
96
|
end
|
|
107
97
|
|
|
108
|
-
|
|
109
98
|
# Does the actual work of finding a resource in the database. This
|
|
110
99
|
# method uses the finder method as defined in InheritedResources.
|
|
111
100
|
#
|
|
112
|
-
#
|
|
101
|
+
# Note that public_send can't be used here because Rails 3.2's
|
|
102
|
+
# ActiveRecord::Associations::CollectionProxy (belongs_to associations)
|
|
103
|
+
# mysteriously returns an Enumerator object.
|
|
104
|
+
#
|
|
105
|
+
# @return [ActiveRecord::Base] An active record object.
|
|
113
106
|
def find_resource
|
|
114
|
-
scoped_collection.send
|
|
107
|
+
scoped_collection.send method_for_find, params[:id]
|
|
115
108
|
end
|
|
116
109
|
|
|
117
110
|
|
|
@@ -122,31 +115,34 @@ module ActiveAdmin
|
|
|
122
115
|
# This method is used to instantiate and authorize new resources in the
|
|
123
116
|
# new and create controller actions.
|
|
124
117
|
#
|
|
125
|
-
# @
|
|
118
|
+
# @return [ActiveRecord::Base] An un-saved active record base object
|
|
126
119
|
def build_resource
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
get_resource_ivar || begin
|
|
121
|
+
resource = build_new_resource
|
|
122
|
+
run_build_callbacks resource
|
|
123
|
+
authorize_resource! resource
|
|
130
124
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
set_resource_ivar(resource)
|
|
125
|
+
resource = apply_decorator resource
|
|
126
|
+
set_resource_ivar resource
|
|
127
|
+
end
|
|
135
128
|
end
|
|
136
129
|
|
|
137
130
|
# Builds a new resource. This method uses the method_for_build provided
|
|
138
131
|
# by Inherited Resources.
|
|
139
132
|
#
|
|
140
|
-
#
|
|
133
|
+
# Note that public_send can't be used here w/ Rails 3.2 & a belongs_to
|
|
134
|
+
# config, or you'll get undefined method `build' for []:Array.
|
|
135
|
+
#
|
|
136
|
+
# @return [ActiveRecord::Base] An un-saved active record base object
|
|
141
137
|
def build_new_resource
|
|
142
|
-
scoped_collection.send
|
|
138
|
+
scoped_collection.send method_for_build, *resource_params
|
|
143
139
|
end
|
|
144
140
|
|
|
145
141
|
# Calls all the appropriate callbacks and then creates the new resource.
|
|
146
142
|
#
|
|
147
143
|
# @param [ActiveRecord::Base] object The new resource to create
|
|
148
144
|
#
|
|
149
|
-
# @
|
|
145
|
+
# @return [void]
|
|
150
146
|
def create_resource(object)
|
|
151
147
|
run_create_callbacks object do
|
|
152
148
|
save_resource(object)
|
|
@@ -157,7 +153,7 @@ module ActiveAdmin
|
|
|
157
153
|
#
|
|
158
154
|
# @param [ActiveRecord::Base] object The new resource to save
|
|
159
155
|
#
|
|
160
|
-
# @
|
|
156
|
+
# @return [void]
|
|
161
157
|
def save_resource(object)
|
|
162
158
|
run_save_callbacks object do
|
|
163
159
|
object.save
|
|
@@ -173,7 +169,7 @@ module ActiveAdmin
|
|
|
173
169
|
# and the Active Record "role" in the second. The role
|
|
174
170
|
# may be set to nil.
|
|
175
171
|
#
|
|
176
|
-
# @
|
|
172
|
+
# @return [void]
|
|
177
173
|
def update_resource(object, attributes)
|
|
178
174
|
if object.respond_to?(:assign_attributes)
|
|
179
175
|
object.assign_attributes(*attributes)
|
|
@@ -188,7 +184,7 @@ module ActiveAdmin
|
|
|
188
184
|
|
|
189
185
|
# Destroys an object from the database and calls appropriate callbacks.
|
|
190
186
|
#
|
|
191
|
-
# @
|
|
187
|
+
# @return [void]
|
|
192
188
|
def destroy_resource(object)
|
|
193
189
|
run_destroy_callbacks object do
|
|
194
190
|
object.destroy
|
|
@@ -208,23 +204,19 @@ module ActiveAdmin
|
|
|
208
204
|
#
|
|
209
205
|
# @param [ActiveRecord::Relation] collection The collection to scope
|
|
210
206
|
#
|
|
211
|
-
# @
|
|
207
|
+
# @return [ActiveRecord::Relation] a scoped collection of query
|
|
212
208
|
def apply_authorization_scope(collection)
|
|
213
209
|
action_name = action_to_permission(params[:action])
|
|
214
210
|
active_admin_authorization.scope_collection(collection, action_name)
|
|
215
211
|
end
|
|
216
212
|
|
|
217
|
-
|
|
218
213
|
def apply_sorting(chain)
|
|
219
214
|
params[:order] ||= active_admin_config.sort_order
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
[table, active_admin_config.resource_quoted_column_name(column)].compact.join(".")
|
|
226
|
-
|
|
227
|
-
chain.reorder("#{table_column} #{order}")
|
|
215
|
+
|
|
216
|
+
order_clause = OrderClause.new params[:order]
|
|
217
|
+
|
|
218
|
+
if order_clause.valid?
|
|
219
|
+
chain.reorder(order_clause.to_sql(active_admin_config))
|
|
228
220
|
else
|
|
229
221
|
chain # just return the chain
|
|
230
222
|
end
|
|
@@ -237,13 +229,12 @@ module ActiveAdmin
|
|
|
237
229
|
@search.result
|
|
238
230
|
end
|
|
239
231
|
|
|
240
|
-
def clean_search_params(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
232
|
+
def clean_search_params(params)
|
|
233
|
+
if params.is_a? Hash
|
|
234
|
+
params.dup.delete_if{ |key, value| value.blank? }
|
|
235
|
+
else
|
|
236
|
+
{}
|
|
245
237
|
end
|
|
246
|
-
search_params
|
|
247
238
|
end
|
|
248
239
|
|
|
249
240
|
def apply_scoping(chain)
|
|
@@ -256,43 +247,57 @@ module ActiveAdmin
|
|
|
256
247
|
end
|
|
257
248
|
end
|
|
258
249
|
|
|
250
|
+
def apply_includes(chain)
|
|
251
|
+
if active_admin_config.includes.any?
|
|
252
|
+
chain.includes *active_admin_config.includes
|
|
253
|
+
else
|
|
254
|
+
chain
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
259
258
|
def collection_before_scope
|
|
260
259
|
@collection_before_scope
|
|
261
260
|
end
|
|
262
261
|
|
|
263
262
|
def current_scope
|
|
264
263
|
@current_scope ||= if params[:scope]
|
|
265
|
-
active_admin_config.get_scope_by_id(params[:scope])
|
|
264
|
+
active_admin_config.get_scope_by_id(params[:scope])
|
|
266
265
|
else
|
|
267
266
|
active_admin_config.default_scope(self)
|
|
268
267
|
end
|
|
269
268
|
end
|
|
270
269
|
|
|
271
270
|
def apply_pagination(chain)
|
|
272
|
-
|
|
273
|
-
|
|
271
|
+
page_method_name = Kaminari.config.page_method_name
|
|
272
|
+
page = params[Kaminari.config.param_name]
|
|
274
273
|
|
|
275
|
-
chain.
|
|
274
|
+
chain.public_send(page_method_name, page).per(per_page)
|
|
276
275
|
end
|
|
277
276
|
|
|
278
277
|
def per_page
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
278
|
+
if active_admin_config.paginate
|
|
279
|
+
dynamic_per_page || configured_per_page
|
|
280
|
+
else
|
|
281
|
+
max_per_page
|
|
282
|
+
end
|
|
282
283
|
end
|
|
283
284
|
|
|
284
|
-
def
|
|
285
|
-
|
|
285
|
+
def dynamic_per_page
|
|
286
|
+
params[:per_page] || @per_page
|
|
286
287
|
end
|
|
287
288
|
|
|
288
|
-
def
|
|
289
|
-
if
|
|
290
|
-
|
|
289
|
+
def configured_per_page
|
|
290
|
+
if active_admin_config.per_page.is_a?(Array)
|
|
291
|
+
active_admin_config.per_page[0]
|
|
291
292
|
else
|
|
292
|
-
|
|
293
|
+
active_admin_config.per_page
|
|
293
294
|
end
|
|
294
295
|
end
|
|
295
296
|
|
|
297
|
+
def max_per_page
|
|
298
|
+
10_000
|
|
299
|
+
end
|
|
300
|
+
|
|
296
301
|
end
|
|
297
302
|
end
|
|
298
303
|
end
|