activeadmin 0.6.6 → 1.0.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +11 -8
- data/.hound.yml +11 -0
- data/.travis.yml +36 -10
- data/.yardopts +2 -1
- data/CHANGELOG.md +118 -67
- data/CONTRIBUTING.md +96 -73
- data/Gemfile +35 -35
- data/Guardfile +1 -0
- data/LICENSE +1 -1
- data/README.md +98 -0
- data/Rakefile +12 -4
- data/activeadmin.gemspec +21 -24
- data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
- 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/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
- 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 +68 -0
- data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → 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} +61 -17
- 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/_blank_slates.scss +0 -1
- 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 -14
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
- 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} +2 -3
- 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} +4 -2
- 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 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- 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.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
- data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
- 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/_main_structure.scss +5 -2
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
- 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 +9 -7
- 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 +28 -2
- data/config/locales/en-GB.yml +12 -4
- data/config/locales/en.yml +29 -3
- data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
- data/config/locales/es.yml +32 -25
- data/config/locales/fa.yml +120 -0
- data/config/locales/fi.yml +113 -0
- data/config/locales/fr.yml +21 -11
- 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 +8 -3
- 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 +37 -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 +65 -29
- data/docs/1-general-configuration.md +92 -81
- data/docs/10-custom-pages.md +68 -68
- data/docs/11-decorators.md +48 -59
- data/docs/12-arbre-components.md +80 -74
- data/docs/13-authorization-adapter.md +128 -107
- data/docs/14-gotchas.md +92 -0
- data/docs/2-resource-customization.md +293 -178
- data/docs/3-index-pages.md +160 -86
- data/docs/3-index-pages/custom-index.md +31 -0
- data/docs/3-index-pages/index-as-block.md +14 -9
- data/docs/3-index-pages/index-as-blog.md +41 -31
- data/docs/3-index-pages/index-as-grid.md +16 -8
- data/docs/3-index-pages/index-as-table.md +129 -52
- data/docs/4-csv-format.md +31 -24
- data/docs/5-forms.md +133 -56
- data/docs/6-show-pages.md +89 -27
- data/docs/7-sidebars.md +48 -27
- data/docs/8-custom-actions.md +98 -77
- data/docs/9-batch-actions.md +210 -146
- data/docs/README.md +24 -0
- data/features/action_item.feature +3 -3
- data/features/authorization_pundit.feature +37 -0
- data/features/breadcrumb.feature +48 -0
- data/features/comments/commenting.feature +56 -13
- data/features/development_reloading.feature +17 -30
- data/features/edit_page.feature +12 -1
- data/features/favicon.feature +3 -3
- data/features/i18n.feature +5 -4
- data/features/index/batch_actions.feature +41 -0
- data/features/index/filters.feature +67 -0
- data/features/index/format_as_csv.feature +90 -4
- data/features/index/formats.feature +27 -0
- 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 +13 -2
- 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/site_title.feature +2 -2
- 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 +19 -20
- 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 +9 -2
- data/features/step_definitions/dashboard_steps.rb +2 -2
- data/features/step_definitions/factory_steps.rb +9 -8
- 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 +18 -18
- 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 +3 -0
- 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 +10 -7
- data/features/step_definitions/web_steps.rb +14 -11
- data/features/sti_resource.feature +6 -2
- data/features/strong_parameters.feature +73 -0
- data/features/support/env.rb +34 -9
- data/features/support/paths.rb +14 -6
- data/features/support/selectors.rb +1 -1
- data/features/symbol_leak.feature +35 -0
- data/features/users/resetting_password.feature +5 -6
- data/lib/active_admin.rb +26 -25
- data/lib/active_admin/abstract_view_factory.rb +7 -17
- data/lib/active_admin/application.rb +72 -59
- 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 +24 -8
- data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
- 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 +28 -18
- data/lib/active_admin/dsl.rb +18 -11
- data/lib/active_admin/engine.rb +10 -8
- data/lib/active_admin/error.rb +62 -0
- data/lib/active_admin/filters/dsl.rb +2 -2
- data/lib/active_admin/filters/forms.rb +17 -27
- data/lib/active_admin/filters/formtastic_addons.rb +49 -15
- data/lib/active_admin/filters/resource_extension.rb +43 -34
- data/lib/active_admin/form_builder.rb +93 -154
- 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/routes/url_helpers.rb +15 -0
- 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 +12 -3
- 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 +6 -4
- data/lib/active_admin/menu_collection.rb +1 -4
- data/lib/active_admin/namespace.rb +55 -29
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/active_record/comments.rb +81 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
- data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
- data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
- data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/page.rb +7 -3
- 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 +16 -17
- data/lib/active_admin/resource/action_items.rb +23 -18
- 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 +27 -43
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +27 -11
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller.rb +6 -7
- data/lib/active_admin/resource_controller/data_access.rb +101 -93
- 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 +53 -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 -17
- 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 +4 -3
- data/lib/active_admin/view_helpers/display_helper.rb +30 -15
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
- data/lib/active_admin/view_helpers/fields_for.rb +4 -4
- 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 +63 -21
- 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 +38 -20
- 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 +5 -4
- 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 +90 -45
- 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_block.rb +10 -10
- data/lib/active_admin/views/index_as_blog.rb +45 -39
- data/lib/active_admin/views/index_as_grid.rb +14 -10
- data/lib/active_admin/views/index_as_table.rb +242 -129
- data/lib/active_admin/views/pages/base.rb +22 -18
- data/lib/active_admin/views/pages/form.rb +21 -11
- data/lib/active_admin/views/pages/index.rb +40 -35
- 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 +3 -28
- data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
- data/lib/generators/active_admin/install/install_generator.rb +8 -9
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
- 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 +3 -5
- data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
- data/lib/ransack_ext.rb +12 -0
- 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 -173
- data/spec/support/detect_rails_version.rb +9 -17
- data/spec/support/rails_template.rb +64 -35
- data/spec/support/rails_template_with_data.rb +14 -14
- data/spec/support/templates/admin/stores.rb +5 -1
- 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 +16 -16
- data/spec/unit/action_builder_spec.rb +24 -18
- data/spec/unit/active_admin_spec.rb +2 -2
- data/spec/unit/application_spec.rb +33 -34
- data/spec/unit/asset_registration_spec.rb +25 -29
- data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
- 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 +43 -13
- 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 +28 -19
- data/spec/unit/cancan_adapter_spec.rb +8 -8
- data/spec/unit/comments_spec.rb +99 -39
- data/spec/unit/component_spec.rb +3 -3
- data/spec/unit/config_shared_examples.rb +10 -10
- data/spec/unit/controller_filters_spec.rb +23 -16
- data/spec/unit/csv_builder_spec.rb +165 -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 +11 -11
- data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
- data/spec/unit/filters/resource_spec.rb +60 -26
- data/spec/unit/form_builder_spec.rb +419 -145
- data/spec/unit/generators/install_spec.rb +23 -0
- data/spec/unit/helpers/collection_spec.rb +18 -18
- data/spec/unit/helpers/scope_chain_spec.rb +6 -6
- 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 +8 -8
- data/spec/unit/namespace/register_page_spec.rb +11 -11
- data/spec/unit/namespace/register_resource_spec.rb +28 -30
- 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 +15 -12
- 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 +35 -21
- 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 +31 -38
- data/spec/unit/resource_controller/data_access_spec.rb +96 -30
- 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 +73 -70
- data/spec/unit/resource_registration_spec.rb +12 -12
- data/spec/unit/resource_spec.rb +77 -42
- 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 -3
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
- 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 +10 -23
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
- data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
- data/spec/unit/views/components/attributes_table_spec.rb +171 -30
- 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 +79 -90
- 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 +26 -26
- data/spec/unit/views/components/status_tag_spec.rb +178 -38
- data/spec/unit/views/components/table_for_spec.rb +237 -35
- 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 +18 -6
- data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
- data/tasks/docs.rake +9 -11
- data/tasks/parallel_tests.rake +8 -2
- data/tasks/test.rake +13 -9
- data/tasks/yard.rake +7 -4
- metadata +219 -163
- data/.document +0 -5
- data/README.rdoc +0 -88
- 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/application.js +0 -3
- data/app/assets/javascripts/active_admin/base.js +0 -5
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
- 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 -41
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
- data/app/views/active_admin/dashboard/index.html.arb +0 -1
- data/app/views/active_admin/resource/index.csv.erb +0 -23
- data/docs/3-index-pages/create-an-index.md +0 -29
- data/lib/active_admin/comments.rb +0 -83
- data/lib/active_admin/comments/comment.rb +0 -42
- data/lib/active_admin/comments/views.rb +0 -2
- data/lib/active_admin/dependency_checker.rb +0 -46
- 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 -36
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
- 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 -49
- data/lib/active_admin/inputs/filter_string_input.rb +0 -24
- data/lib/active_admin/reloader.rb +0 -130
- data/lib/active_admin/resource_controller/actions.rb +0 -81
- data/lib/active_admin/sass/active_admin.scss +0 -3
- data/lib/active_admin/sass/css_loader.rb +0 -16
- data/lib/active_admin/sass/helpers.rb +0 -45
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
- data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
- data/lib/active_admin/views/pages/dashboard.rb +0 -62
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
- data/lib/meta_search_ext.rb +0 -10
- 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 -11
- data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
- data/spec/unit/rails_spec.rb +0 -43
- data/spec/unit/reloader_spec.rb +0 -124
- data/spec/unit/sass/helpers_spec.rb +0 -47
- data/tasks/js.rake +0 -32
@@ -1,6 +1,11 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
-
# This is the class where all the register blocks are
|
2
|
+
# This is the class where all the register blocks are evaluated.
|
3
3
|
class ResourceDSL < DSL
|
4
|
+
def initialize(config, resource_class)
|
5
|
+
@resource = resource_class
|
6
|
+
super(config)
|
7
|
+
end
|
8
|
+
|
4
9
|
private
|
5
10
|
|
6
11
|
def belongs_to(target, options = {})
|
@@ -17,6 +22,42 @@ module ActiveAdmin
|
|
17
22
|
config.scope(*args, &block)
|
18
23
|
end
|
19
24
|
|
25
|
+
# Store relations that should be included
|
26
|
+
def includes(*args)
|
27
|
+
config.includes.push *args
|
28
|
+
end
|
29
|
+
|
30
|
+
#
|
31
|
+
# Rails 4 Strong Parameters Support
|
32
|
+
#
|
33
|
+
# Either
|
34
|
+
#
|
35
|
+
# permit_params :title, :author, :body, tags: []
|
36
|
+
#
|
37
|
+
# Or
|
38
|
+
#
|
39
|
+
# permit_params do
|
40
|
+
# defaults = [:title, :body]
|
41
|
+
# if current_user.admin?
|
42
|
+
# defaults + [:author]
|
43
|
+
# else
|
44
|
+
# defaults
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# Keys included in the `permitted_params` setting are automatically whitelisted.
|
49
|
+
#
|
50
|
+
def permit_params(*args, &block)
|
51
|
+
param_key = config.param_key.to_sym
|
52
|
+
|
53
|
+
controller do
|
54
|
+
define_method :permitted_params do
|
55
|
+
params.permit *active_admin_namespace.permitted_params,
|
56
|
+
param_key => block ? instance_exec(&block) : args
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
20
61
|
# Configure the index page for the resource
|
21
62
|
def index(options = {}, &block)
|
22
63
|
options[:as] ||= :table
|
@@ -41,11 +82,13 @@ module ActiveAdmin
|
|
41
82
|
# column("Author") { |post| post.author.full_name }
|
42
83
|
# end
|
43
84
|
#
|
44
|
-
# csv :
|
85
|
+
# csv col_sep: ";", force_quotes: true do
|
45
86
|
# column :name
|
46
87
|
# end
|
47
88
|
#
|
48
89
|
def csv(options={}, &block)
|
90
|
+
options[:resource] = @resource
|
91
|
+
|
49
92
|
config.csv_builder = CSVBuilder.new(options, &block)
|
50
93
|
end
|
51
94
|
|
@@ -73,7 +116,7 @@ module ActiveAdmin
|
|
73
116
|
title = options.delete(:title)
|
74
117
|
|
75
118
|
controller do
|
76
|
-
before_filter(:
|
119
|
+
before_filter(only: [name]) { @page_title = title } if title
|
77
120
|
define_method(name, &block || Proc.new{})
|
78
121
|
end
|
79
122
|
end
|
@@ -110,15 +153,15 @@ module ActiveAdmin
|
|
110
153
|
# == Before / After Destroy
|
111
154
|
# Called before and after the object is destroyed from the database.
|
112
155
|
#
|
113
|
-
delegate :before_build, :after_build, :
|
114
|
-
delegate :before_create, :after_create, :
|
115
|
-
delegate :before_update, :after_update, :
|
116
|
-
delegate :before_save, :after_save, :
|
117
|
-
delegate :before_destroy, :after_destroy, :
|
156
|
+
delegate :before_build, :after_build, to: :controller
|
157
|
+
delegate :before_create, :after_create, to: :controller
|
158
|
+
delegate :before_update, :after_update, to: :controller
|
159
|
+
delegate :before_save, :after_save, to: :controller
|
160
|
+
delegate :before_destroy, :after_destroy, to: :controller
|
118
161
|
|
119
162
|
# Standard rails filters
|
120
163
|
delegate :before_filter, :skip_before_filter, :after_filter, :skip_after_filter, :around_filter, :skip_filter,
|
121
|
-
:
|
164
|
+
to: :controller
|
122
165
|
|
123
166
|
# Specify which actions to create in the controller
|
124
167
|
#
|
@@ -129,7 +172,7 @@ module ActiveAdmin
|
|
129
172
|
# end
|
130
173
|
#
|
131
174
|
# Will only create the index and show actions (no create, update or delete)
|
132
|
-
delegate :actions, :
|
175
|
+
delegate :actions, to: :controller
|
133
176
|
|
134
177
|
end
|
135
178
|
end
|
data/lib/active_admin/router.rb
CHANGED
@@ -18,13 +18,13 @@ module ActiveAdmin
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def define_root_routes(router)
|
21
|
-
router.instance_exec @application.namespaces
|
21
|
+
router.instance_exec @application.namespaces do |namespaces|
|
22
22
|
namespaces.each do |namespace|
|
23
23
|
if namespace.root?
|
24
|
-
root :
|
24
|
+
root namespace.root_to_options.merge(to: namespace.root_to)
|
25
25
|
else
|
26
26
|
namespace namespace.name do
|
27
|
-
root :
|
27
|
+
root namespace.root_to_options.merge(to: namespace.root_to)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -34,7 +34,7 @@ module ActiveAdmin
|
|
34
34
|
# Defines the routes for each resource
|
35
35
|
def define_resource_routes(router)
|
36
36
|
router.instance_exec @application.namespaces, self do |namespaces, aa_router|
|
37
|
-
resources = namespaces.
|
37
|
+
resources = namespaces.flat_map{ |n| n.resources.values }
|
38
38
|
resources.each do |config|
|
39
39
|
routes = aa_router.resource_routes(config)
|
40
40
|
|
@@ -47,7 +47,7 @@ module ActiveAdmin
|
|
47
47
|
|
48
48
|
# Make the nested belongs_to routes
|
49
49
|
# :only is set to nothing so that we don't clobber any existing routes on the resource
|
50
|
-
resources config.belongs_to_config.target.resource_name.plural, :
|
50
|
+
resources config.belongs_to_config.target.resource_name.plural, only: [] do
|
51
51
|
instance_exec &belongs_to
|
52
52
|
end
|
53
53
|
end
|
@@ -80,14 +80,14 @@ module ActiveAdmin
|
|
80
80
|
}
|
81
81
|
case config
|
82
82
|
when ::ActiveAdmin::Resource
|
83
|
-
resources config.resource_name.route_key, :
|
83
|
+
resources config.resource_name.route_key, only: config.defined_actions do
|
84
84
|
member do
|
85
85
|
config.member_actions.each &build_action
|
86
86
|
end
|
87
87
|
|
88
88
|
collection do
|
89
89
|
config.collection_actions.each &build_action
|
90
|
-
post :batch_action
|
90
|
+
post :batch_action if config.batch_actions_enabled?
|
91
91
|
end
|
92
92
|
end
|
93
93
|
when ::ActiveAdmin::Page
|
data/lib/active_admin/scope.rb
CHANGED
@@ -13,12 +13,12 @@ module ActiveAdmin
|
|
13
13
|
# Scope.new('Published', :public)
|
14
14
|
# # => Scope with name 'Published' and scope method :public
|
15
15
|
#
|
16
|
-
# Scope.new 'Published', :public, :
|
17
|
-
# articles.where :
|
16
|
+
# Scope.new 'Published', :public, if: proc { current_admin_user.can? :manage, resource_class } do |articles|
|
17
|
+
# articles.where published: true
|
18
18
|
# end
|
19
19
|
# # => Scope with name 'Published' and scope method :public, optionally displaying the scope per the :if block
|
20
20
|
#
|
21
|
-
# Scope.new('Published') { |articles| articles.where(:
|
21
|
+
# Scope.new('Published') { |articles| articles.where(published: true) }
|
22
22
|
# # => Scope with name 'Published' using a block to scope
|
23
23
|
#
|
24
24
|
# Scope.new ->{Date.today.strftime '%A'}, :published_today
|
@@ -29,16 +29,16 @@ module ActiveAdmin
|
|
29
29
|
|
30
30
|
if name.is_a? Proc
|
31
31
|
raise "A string/symbol is required as the second argument if your label is a proc." unless method
|
32
|
-
@id = method.to_s.
|
32
|
+
@id = method.to_s.parameterize("_")
|
33
33
|
else
|
34
34
|
@scope_method ||= name.to_sym
|
35
|
-
@id = name.to_s.
|
35
|
+
@id = name.to_s.parameterize("_")
|
36
36
|
end
|
37
37
|
|
38
38
|
@scope_method = nil if @scope_method == :all
|
39
39
|
@scope_method, @scope_block = nil, block if block_given?
|
40
40
|
|
41
|
-
@show_count = options
|
41
|
+
@show_count = options.fetch(:show_count, true)
|
42
42
|
@display_if_block = options[:if] || proc{ true }
|
43
43
|
@default_block = options[:default] || proc{ false }
|
44
44
|
|
@@ -25,12 +25,20 @@ module ActiveAdmin
|
|
25
25
|
|
26
26
|
# The title gets displayed within the section in the view
|
27
27
|
def title
|
28
|
-
I18n.t("active_admin.sidebars.#{name.to_s}", :
|
28
|
+
I18n.t("active_admin.sidebars.#{name.to_s}", default: name.to_s.titlecase)
|
29
29
|
end
|
30
30
|
|
31
31
|
# If a block is not passed in, the name of the partial to render
|
32
32
|
def partial_name
|
33
|
-
options[:partial] || "#{name.to_s.downcase.
|
33
|
+
options[:partial] || "#{name.to_s.downcase.tr(' ', '_')}_sidebar"
|
34
|
+
end
|
35
|
+
|
36
|
+
def custom_class
|
37
|
+
options[:class]
|
38
|
+
end
|
39
|
+
|
40
|
+
def priority
|
41
|
+
options[:priority] || 10
|
34
42
|
end
|
35
43
|
end
|
36
44
|
|
data/lib/active_admin/version.rb
CHANGED
@@ -4,25 +4,25 @@ module ActiveAdmin
|
|
4
4
|
class ViewFactory < AbstractViewFactory
|
5
5
|
|
6
6
|
# Register Helper Renderers
|
7
|
-
register :
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
7
|
+
register global_navigation: ActiveAdmin::Views::TabbedNavigation,
|
8
|
+
utility_navigation: ActiveAdmin::Views::TabbedNavigation,
|
9
|
+
site_title: ActiveAdmin::Views::SiteTitle,
|
10
|
+
unsupported_browser: ActiveAdmin::Views::UnsupportedBrowser,
|
11
|
+
action_items: ActiveAdmin::Views::ActionItems,
|
12
|
+
title_bar: ActiveAdmin::Views::TitleBar,
|
13
|
+
header: ActiveAdmin::Views::Header,
|
14
|
+
footer: ActiveAdmin::Views::Footer,
|
15
|
+
index_scopes: ActiveAdmin::Views::Scopes,
|
16
|
+
blank_slate: ActiveAdmin::Views::BlankSlate,
|
17
|
+
action_list_popover: ActiveAdmin::Views::ActionListPopover
|
17
18
|
|
18
19
|
# Register All The Pages
|
19
|
-
register :
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:page => ActiveAdmin::Views::Pages::Page
|
20
|
+
register index_page: ActiveAdmin::Views::Pages::Index,
|
21
|
+
show_page: ActiveAdmin::Views::Pages::Show,
|
22
|
+
new_page: ActiveAdmin::Views::Pages::Form,
|
23
|
+
edit_page: ActiveAdmin::Views::Pages::Form,
|
24
|
+
layout: ActiveAdmin::Views::Pages::Layout,
|
25
|
+
page: ActiveAdmin::Views::Pages::Page
|
26
26
|
|
27
27
|
end
|
28
28
|
end
|
@@ -4,7 +4,6 @@ module ActiveAdmin
|
|
4
4
|
# Require all ruby files in the view helpers dir
|
5
5
|
Dir[File.expand_path('../view_helpers', __FILE__) + "/*.rb"].each{|f| require f }
|
6
6
|
|
7
|
-
include AssignsWithIndifferentAccessHelper
|
8
7
|
include ActiveAdminApplicationHelper
|
9
8
|
include AutoLinkHelper
|
10
9
|
include BreadcrumbHelper
|
@@ -9,24 +9,35 @@ module ActiveAdmin
|
|
9
9
|
# The default content in the link is returned from ActiveAdmin::ViewHelpers::DisplayHelper#display_name
|
10
10
|
#
|
11
11
|
# You can pass in the content to display
|
12
|
-
# eg: auto_link(@post, "My Link
|
12
|
+
# eg: auto_link(@post, "My Link")
|
13
13
|
#
|
14
|
-
def auto_link(resource,
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def auto_link(resource, content = display_name(resource))
|
15
|
+
if url = auto_url_for(resource)
|
16
|
+
link_to content, url
|
17
|
+
else
|
18
|
+
content
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Like `auto_link`, except that it only returns a URL instead of a full <a> tag
|
23
|
+
def auto_url_for(resource)
|
24
|
+
config = active_admin_resource_for(resource.class)
|
25
|
+
return unless config
|
26
|
+
|
27
|
+
if config.controller.action_methods.include?("show") &&
|
28
|
+
authorized?(ActiveAdmin::Auth::READ, resource)
|
29
|
+
url_for config.route_instance_path resource
|
30
|
+
elsif config.controller.action_methods.include?("edit") &&
|
31
|
+
authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
32
|
+
url_for config.route_edit_instance_path resource
|
22
33
|
end
|
23
|
-
content
|
24
34
|
end
|
25
35
|
|
26
36
|
# Returns the ActiveAdmin::Resource instance for a class
|
27
37
|
def active_admin_resource_for(klass)
|
28
|
-
|
29
|
-
|
38
|
+
if respond_to? :active_admin_namespace
|
39
|
+
active_admin_namespace.resource_for klass
|
40
|
+
end
|
30
41
|
end
|
31
42
|
|
32
43
|
end
|
@@ -4,8 +4,9 @@ module ActiveAdmin
|
|
4
4
|
|
5
5
|
# Returns an array of links to use in a breadcrumb
|
6
6
|
def breadcrumb_links(path = request.path)
|
7
|
-
|
8
|
-
|
7
|
+
# remove leading "/" and split up the URL
|
8
|
+
# and remove last since it's used as the page title
|
9
|
+
parts = path.split('/').select(&:present?)[0..-2]
|
9
10
|
|
10
11
|
parts.each_with_index.map do |part, index|
|
11
12
|
# 1. try using `display_name` if we can locate a DB object
|
@@ -16,7 +17,7 @@ module ActiveAdmin
|
|
16
17
|
config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
|
17
18
|
name = display_name config.find_resource part
|
18
19
|
end
|
19
|
-
name ||= I18n.t "activerecord.models.#{part.singularize}", :
|
20
|
+
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
20
21
|
|
21
22
|
# Don't create a link if the resource's show action is disabled
|
22
23
|
if !config || config.defined_actions.include?(:show)
|
@@ -2,43 +2,58 @@ module ActiveAdmin
|
|
2
2
|
module ViewHelpers
|
3
3
|
module DisplayHelper
|
4
4
|
|
5
|
+
DISPLAY_NAME_FALLBACK = ->{
|
6
|
+
name, klass = "", self.class
|
7
|
+
name << klass.model_name.human if klass.respond_to? :model_name
|
8
|
+
name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
|
9
|
+
name.present? ? name : to_s
|
10
|
+
}
|
11
|
+
def DISPLAY_NAME_FALLBACK.inspect
|
12
|
+
'DISPLAY_NAME_FALLBACK'
|
13
|
+
end
|
14
|
+
|
5
15
|
# Attempts to call any known display name methods on the resource.
|
6
16
|
# See the setting in `application.rb` for the list of methods and their priority.
|
7
17
|
def display_name(resource)
|
8
|
-
resource
|
18
|
+
render_in_context resource, display_name_method_for(resource) if resource
|
9
19
|
end
|
10
20
|
|
11
21
|
# Looks up and caches the first available display name method.
|
22
|
+
# To prevent conflicts, we exclude any methods that happen to be associations.
|
23
|
+
# If no methods are available and we're about to use the Kernel's `to_s`, provide our own.
|
12
24
|
def display_name_method_for(resource)
|
13
25
|
@@display_name_methods_cache ||= {}
|
14
26
|
@@display_name_methods_cache[resource.class] ||= begin
|
15
27
|
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
16
|
-
methods.detect{ |method| resource.respond_to? method }
|
28
|
+
method = methods.detect{ |method| resource.respond_to? method }
|
29
|
+
|
30
|
+
if method != :to_s || resource.method(method).source_location
|
31
|
+
method
|
32
|
+
else
|
33
|
+
DISPLAY_NAME_FALLBACK
|
34
|
+
end
|
17
35
|
end
|
18
36
|
end
|
19
37
|
|
20
|
-
# To prevent conflicts, we exclude any methods that happen to be associations.
|
21
38
|
def association_methods_for(resource)
|
22
39
|
return [] unless resource.class.respond_to? :reflect_on_all_associations
|
23
40
|
resource.class.reflect_on_all_associations.map(&:name)
|
24
41
|
end
|
25
42
|
|
26
|
-
#
|
27
|
-
# Date Time are formatted via #localize with :format => :long
|
28
|
-
# ActiveRecord objects are formatted via #auto_link
|
29
|
-
# We attempt to #display_name of any other objects
|
43
|
+
# Attempts to create a human-readable string for any object
|
30
44
|
def pretty_format(object)
|
31
45
|
case object
|
32
|
-
when String
|
33
|
-
object
|
34
|
-
when Arbre::Element
|
35
|
-
object
|
46
|
+
when String, Numeric, Arbre::Element
|
47
|
+
object.to_s
|
36
48
|
when Date, Time
|
37
|
-
localize
|
38
|
-
when ActiveRecord::Base
|
39
|
-
auto_link(object)
|
49
|
+
localize object, format: :long
|
40
50
|
else
|
41
|
-
|
51
|
+
if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
|
52
|
+
defined?(::Mongoid) && object.class.include?(Mongoid::Document)
|
53
|
+
auto_link object
|
54
|
+
else
|
55
|
+
display_name object
|
56
|
+
end
|
42
57
|
end
|
43
58
|
end
|
44
59
|
|
@@ -2,6 +2,20 @@ module ActiveAdmin
|
|
2
2
|
module ViewHelpers
|
3
3
|
module DownloadFormatLinksHelper
|
4
4
|
|
5
|
+
def build_download_format_links(formats = self.class.formats)
|
6
|
+
params = request.query_parameters.except :format, :commit
|
7
|
+
div class: "download_links" do
|
8
|
+
span I18n.t('active_admin.download')
|
9
|
+
formats.each do |format|
|
10
|
+
a format.upcase, href: url_for(params: params, format: format)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.included base
|
16
|
+
base.extend ClassMethods
|
17
|
+
end
|
18
|
+
|
5
19
|
module ClassMethods
|
6
20
|
|
7
21
|
# A ready only of formats to make available in index/paginated
|
@@ -14,37 +28,19 @@ module ActiveAdmin
|
|
14
28
|
@formats.clone
|
15
29
|
end
|
16
30
|
|
17
|
-
# Adds a mime type
|
18
|
-
# You must register the extension prior to adding it
|
19
|
-
#
|
20
|
-
# to add additional formats to the download format links.
|
21
|
-
# @param [Symbol] extension the mime extension to add
|
31
|
+
# Adds a mime type to the list of available formats available for data
|
32
|
+
# export. You must register the extension prior to adding it here.
|
33
|
+
# @param [Symbol] format the mime type to add
|
22
34
|
# @return [Array] A copy of the updated formats array.
|
23
|
-
def add_format
|
24
|
-
unless
|
25
|
-
|
26
|
-
raise ArgumentError, "The mime extension you defined: #{extension} is not registered. Please register it via Mime::Type.register before adding it to the available formats."
|
27
|
-
end
|
28
|
-
@formats << extension
|
35
|
+
def add_format(format)
|
36
|
+
unless Mime::Type.lookup_by_extension format
|
37
|
+
raise ArgumentError, "Please register the #{format} mime type with `Mime::Type.register`"
|
29
38
|
end
|
39
|
+
@formats << format unless formats.include? format
|
30
40
|
formats
|
31
41
|
end
|
32
42
|
end
|
33
43
|
|
34
|
-
# TODO: Refactor to new HTML DSL
|
35
|
-
def build_download_format_links(formats = self.class.formats)
|
36
|
-
links = formats.collect do |format|
|
37
|
-
link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
|
38
|
-
end
|
39
|
-
div :class => "download_links" do
|
40
|
-
text_node [I18n.t('active_admin.download'), links].flatten.join(" ").html_safe
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.included base
|
45
|
-
base.extend ClassMethods
|
46
|
-
end
|
47
44
|
end
|
48
45
|
end
|
49
46
|
end
|
50
|
-
|