aa-rails4 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +43 -0
- data/.travis.yml +8 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +894 -0
- data/CONTRIBUTING.md +121 -0
- data/Gemfile +40 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.rdoc +118 -0
- data/Rakefile +26 -0
- data/activeadmin.gemspec +33 -0
- 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-input-icon.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 +10 -0
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/application.js +3 -0
- data/app/assets/javascripts/active_admin/base.js +5 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +105 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +97 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +25 -0
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +21 -0
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +281 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +108 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +24 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +26 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +44 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +27 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +17 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
- data/config/locales/bg.yml +101 -0
- data/config/locales/ca.yml +98 -0
- data/config/locales/cs.yml +92 -0
- data/config/locales/da.yml +102 -0
- data/config/locales/de-CH.yml +117 -0
- data/config/locales/de.yml +119 -0
- data/config/locales/en-GB.yml +90 -0
- data/config/locales/en.yml +101 -0
- data/config/locales/es.yml +106 -0
- data/config/locales/es_MX.yml +104 -0
- data/config/locales/fr.yml +89 -0
- data/config/locales/he.yml +91 -0
- data/config/locales/hr.yml +93 -0
- data/config/locales/hu.yml +92 -0
- data/config/locales/it.yml +89 -0
- data/config/locales/ja.yml +87 -0
- data/config/locales/ko.yml +84 -0
- data/config/locales/lt.yml +90 -0
- data/config/locales/lv.yml +89 -0
- data/config/locales/nl.yml +90 -0
- data/config/locales/no-NB.yml +85 -0
- data/config/locales/pl.yml +93 -0
- data/config/locales/pt-BR.yml +89 -0
- data/config/locales/pt-PT.yml +89 -0
- data/config/locales/ro.yml +93 -0
- data/config/locales/ru.yml +103 -0
- data/config/locales/sv-SE.yml +89 -0
- data/config/locales/tr.yml +90 -0
- data/config/locales/uk.yml +100 -0
- data/config/locales/vi.yml +90 -0
- data/config/locales/zh-CN.yml +90 -0
- data/config/locales/zh-TW.yml +90 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +56 -0
- data/docs/1-general-configuration.md +129 -0
- data/docs/10-custom-pages.md +96 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbre-components.md +144 -0
- data/docs/13-authorization-adapter.md +206 -0
- data/docs/2-resource-customization.md +292 -0
- data/docs/3-index-pages.md +191 -0
- data/docs/3-index-pages/create-an-index.md +29 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +120 -0
- data/docs/4-csv-format.md +32 -0
- data/docs/5-forms.md +72 -0
- data/docs/6-show-pages.md +43 -0
- data/docs/7-sidebars.md +42 -0
- data/docs/8-custom-actions.md +139 -0
- data/docs/9-batch-actions.md +161 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/belongs_to.feature +63 -0
- data/features/breadcrumb.feature +27 -0
- data/features/comments/commenting.feature +128 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +41 -0
- data/features/development_reloading.feature +31 -0
- data/features/edit_page.feature +127 -0
- data/features/favicon.feature +20 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +38 -0
- data/features/index/batch_actions.feature +123 -0
- data/features/index/filters.feature +94 -0
- data/features/index/format_as_csv.feature +117 -0
- data/features/index/formats.feature +39 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +195 -0
- data/features/index/index_blank_slate.feature +61 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +251 -0
- data/features/index/page_title.feature +30 -0
- data/features/index/pagination.feature +59 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +53 -0
- data/features/new_page.feature +119 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_pages.feature +148 -0
- data/features/registering_resources.feature +33 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +47 -0
- data/features/sidebar_sections.feature +198 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +93 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +82 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/batch_action_steps.rb +55 -0
- data/features/step_definitions/breadcrumb_steps.rb +3 -0
- data/features/step_definitions/comment_steps.rb +12 -0
- data/features/step_definitions/configuration_steps.rb +93 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +33 -0
- data/features/step_definitions/filter_steps.rb +17 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/format_steps.rb +46 -0
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/index_scope_steps.rb +21 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +8 -0
- data/features/step_definitions/site_title_steps.rb +15 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +119 -0
- data/features/step_definitions/user_steps.rb +39 -0
- data/features/step_definitions/web_steps.rb +82 -0
- data/features/sti_resource.feature +73 -0
- data/features/support/env.rb +118 -0
- data/features/support/paths.rb +63 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +120 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +245 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/base_controller/authorization.rb +153 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +25 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +127 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +66 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/cancan_adapter.rb +40 -0
- data/lib/active_admin/comments.rb +83 -0
- data/lib/active_admin/comments/comment.rb +49 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +2 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +49 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +70 -0
- data/lib/active_admin/dsl.rb +166 -0
- data/lib/active_admin/engine.rb +7 -0
- data/lib/active_admin/event.rb +33 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +89 -0
- data/lib/active_admin/filters/formtastic_addons.rb +50 -0
- data/lib/active_admin/filters/resource_extension.rb +129 -0
- data/lib/active_admin/form_builder.rb +189 -0
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +108 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/inputs.rb +15 -0
- data/lib/active_admin/inputs/datepicker_input.rb +11 -0
- data/lib/active_admin/inputs/filter_base.rb +33 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +40 -0
- data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
- data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
- data/lib/active_admin/inputs/filter_select_input.rb +45 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/menu.rb +107 -0
- data/lib/active_admin/menu_collection.rb +96 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +221 -0
- data/lib/active_admin/page.rb +88 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +28 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/resource.rb +160 -0
- data/lib/active_admin/resource/action_items.rb +93 -0
- data/lib/active_admin/resource/belongs_to.rb +36 -0
- data/lib/active_admin/resource/controllers.rb +18 -0
- data/lib/active_admin/resource/menu.rb +64 -0
- data/lib/active_admin/resource/naming.rb +78 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +19 -0
- data/lib/active_admin/resource/routes.rb +99 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +50 -0
- data/lib/active_admin/resource/sidebars.rb +27 -0
- data/lib/active_admin/resource_collection.rb +42 -0
- data/lib/active_admin/resource_controller.rb +51 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +81 -0
- data/lib/active_admin/resource_controller/data_access.rb +303 -0
- data/lib/active_admin/resource_controller/decorators.rb +20 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_dsl.rb +134 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +57 -0
- data/lib/active_admin/sidebar_section.rb +37 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +28 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
- data/lib/active_admin/view_helpers/display_helper.rb +47 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +50 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
- data/lib/active_admin/view_helpers/form_helper.rb +24 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +70 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +150 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/index_list.rb +68 -0
- data/lib/active_admin/views/components/paginated_collection.rb +123 -0
- data/lib/active_admin/views/components/panel.rb +34 -0
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +65 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +56 -0
- data/lib/active_admin/views/components/table_for.rb +191 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/footer.rb +20 -0
- data/lib/active_admin/views/header.rb +32 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +150 -0
- data/lib/active_admin/views/index_as_grid.rb +76 -0
- data/lib/active_admin/views/index_as_table.rb +238 -0
- data/lib/active_admin/views/pages/base.rb +139 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/form.rb +51 -0
- data/lib/active_admin/views/pages/index.rb +158 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +59 -0
- data/lib/active_admin/views/tabbed_navigation.rb +62 -0
- data/lib/active_admin/views/title_bar.rb +53 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
- data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +78 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +214 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/lib/ransack_ext.rb +12 -0
- data/script/local +44 -0
- data/script/use_rails +53 -0
- data/spec/integration/default_namespace_spec.rb +61 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +29 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +175 -0
- data/spec/spec_helper_without_rails.rb +11 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/detect_rails_version.rb +42 -0
- data/spec/support/integration_example_group.rb +31 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +104 -0
- data/spec/support/rails_template_with_data.rb +59 -0
- data/spec/support/templates/admin/stores.rb +11 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/support/templates/cucumber_with_reloading.rb +5 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/post_decorator.rb +53 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +126 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +141 -0
- data/spec/unit/asset_registration_spec.rb +56 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +42 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +106 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +27 -0
- data/spec/unit/csv_builder_spec.rb +103 -0
- data/spec/unit/devise_spec.rb +116 -0
- data/spec/unit/dsl_spec.rb +61 -0
- data/spec/unit/event_spec.rb +47 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +338 -0
- data/spec/unit/filters/resource_spec.rb +87 -0
- data/spec/unit/form_builder_spec.rb +478 -0
- data/spec/unit/generators/install_spec.rb +23 -0
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_collection_spec.rb +62 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +71 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +74 -0
- data/spec/unit/namespace/register_resource_spec.rb +163 -0
- data/spec/unit/namespace_spec.rb +103 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +72 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +108 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +73 -0
- data/spec/unit/resource/scopes_spec.rb +43 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +79 -0
- data/spec/unit/resource_controller/data_access_spec.rb +73 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +265 -0
- data/spec/unit/resource_registration_spec.rb +56 -0
- data/spec/unit/resource_spec.rb +243 -0
- data/spec/unit/routing_spec.rb +172 -0
- data/spec/unit/scope_spec.rb +108 -0
- data/spec/unit/settings_spec.rb +88 -0
- data/spec/unit/view_factory_spec.rb +22 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +152 -0
- data/spec/unit/view_helpers/display_name_spec.rb +41 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +97 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +131 -0
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +17 -0
- data/spec/unit/views/components/columns_spec.rb +142 -0
- data/spec/unit/views/components/index_list_spec.rb +32 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +247 -0
- data/spec/unit/views/components/panel_spec.rb +51 -0
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +95 -0
- data/spec/unit/views/components/table_for_spec.rb +182 -0
- data/spec/unit/views/pages/layout_spec.rb +63 -0
- data/spec/unit/views/pages/show_spec.rb +20 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
- data/tasks/docs.rake +39 -0
- data/tasks/js.rake +32 -0
- data/tasks/parallel_tests.rake +60 -0
- data/tasks/test.rake +79 -0
- data/tasks/yard.rake +6 -0
- metadata +883 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
# A simple object that gets used to present different aspects of views
|
|
4
|
+
#
|
|
5
|
+
# Initialize with a set of options and a block. The options become
|
|
6
|
+
# available using hash style syntax.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
#
|
|
10
|
+
# presenter = PagePresenter.new :as => :table do
|
|
11
|
+
# # some awesome stuff
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# presenter[:as] #=> :table
|
|
15
|
+
# presenter.block #=> The block passed in to new
|
|
16
|
+
#
|
|
17
|
+
class PagePresenter
|
|
18
|
+
|
|
19
|
+
attr_reader :block, :options
|
|
20
|
+
|
|
21
|
+
delegate :has_key?, :to => :options
|
|
22
|
+
|
|
23
|
+
def initialize(options = {}, &block)
|
|
24
|
+
@options, @block = options, block
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def [](key)
|
|
28
|
+
@options[key]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
require 'active_admin/resource/action_items'
|
|
2
|
+
require 'active_admin/resource/controllers'
|
|
3
|
+
require 'active_admin/resource/menu'
|
|
4
|
+
require 'active_admin/resource/page_presenters'
|
|
5
|
+
require 'active_admin/resource/pagination'
|
|
6
|
+
require 'active_admin/resource/routes'
|
|
7
|
+
require 'active_admin/resource/naming'
|
|
8
|
+
require 'active_admin/resource/scopes'
|
|
9
|
+
require 'active_admin/resource/scope_to'
|
|
10
|
+
require 'active_admin/resource/sidebars'
|
|
11
|
+
require 'active_admin/resource/belongs_to'
|
|
12
|
+
|
|
13
|
+
module ActiveAdmin
|
|
14
|
+
|
|
15
|
+
# Resource is the primary data storage for resource configuration in Active Admin
|
|
16
|
+
#
|
|
17
|
+
# When you register a resource (ActiveAdmin.register Post) you are actually creating
|
|
18
|
+
# a new Resource instance within the given Namespace.
|
|
19
|
+
#
|
|
20
|
+
# The instance of the current resource is available in ResourceController and views
|
|
21
|
+
# by calling the #active_admin_config method.
|
|
22
|
+
#
|
|
23
|
+
class Resource
|
|
24
|
+
|
|
25
|
+
# Event dispatched when a new resource is registered
|
|
26
|
+
RegisterEvent = 'active_admin.resource.register'.freeze
|
|
27
|
+
|
|
28
|
+
# The namespace this config belongs to
|
|
29
|
+
attr_reader :namespace
|
|
30
|
+
|
|
31
|
+
# The name of the resource class
|
|
32
|
+
attr_reader :resource_class_name
|
|
33
|
+
|
|
34
|
+
# An array of member actions defined for this resource
|
|
35
|
+
attr_reader :member_actions
|
|
36
|
+
|
|
37
|
+
# An array of collection actions defined for this resource
|
|
38
|
+
attr_reader :collection_actions
|
|
39
|
+
|
|
40
|
+
# The default sort order to use in the controller
|
|
41
|
+
attr_writer :sort_order
|
|
42
|
+
def sort_order
|
|
43
|
+
@sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : 'id') + '_desc'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Set the configuration for the CSV
|
|
47
|
+
attr_writer :csv_builder
|
|
48
|
+
|
|
49
|
+
# Set breadcrumb builder
|
|
50
|
+
attr_accessor :breadcrumb
|
|
51
|
+
|
|
52
|
+
# Store a reference to the DSL so that we can dereference it during garbage collection.
|
|
53
|
+
attr_accessor :dsl
|
|
54
|
+
|
|
55
|
+
# The string identifying a class to decorate our resource with for the view.
|
|
56
|
+
# nil to not decorate.
|
|
57
|
+
attr_accessor :decorator_class_name
|
|
58
|
+
|
|
59
|
+
module Base
|
|
60
|
+
def initialize(namespace, resource_class, options = {})
|
|
61
|
+
@namespace = namespace
|
|
62
|
+
@resource_class_name = "::#{resource_class.name}"
|
|
63
|
+
@options = options
|
|
64
|
+
@sort_order = options[:sort_order]
|
|
65
|
+
@member_actions, @collection_actions = [], []
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
include MethodOrProcHelper
|
|
70
|
+
|
|
71
|
+
include Base
|
|
72
|
+
include ActionItems
|
|
73
|
+
include Authorization
|
|
74
|
+
include Controllers
|
|
75
|
+
include Menu
|
|
76
|
+
include Naming
|
|
77
|
+
include PagePresenters
|
|
78
|
+
include Pagination
|
|
79
|
+
include Scopes
|
|
80
|
+
include ScopeTo
|
|
81
|
+
include Sidebars
|
|
82
|
+
include Menu
|
|
83
|
+
include Routes
|
|
84
|
+
|
|
85
|
+
# The class this resource wraps. If you register the Post model, Resource#resource_class
|
|
86
|
+
# will point to the Post class
|
|
87
|
+
def resource_class
|
|
88
|
+
ActiveSupport::Dependencies.constantize(resource_class_name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def decorator_class
|
|
92
|
+
ActiveSupport::Dependencies.constantize(decorator_class_name) if decorator_class_name
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def resource_table_name
|
|
96
|
+
resource_class.quoted_table_name
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def resource_column_names
|
|
100
|
+
resource_class.column_names
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def resource_quoted_column_name(column)
|
|
104
|
+
resource_class.connection.quote_column_name(column)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Clears all the member actions this resource knows about
|
|
108
|
+
def clear_member_actions!
|
|
109
|
+
@member_actions = []
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def clear_collection_actions!
|
|
113
|
+
@collection_actions = []
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Return only defined resource actions
|
|
117
|
+
def defined_actions
|
|
118
|
+
controller.instance_methods.map(&:to_sym) & ResourceController::ACTIVE_ADMIN_ACTIONS
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def belongs_to(target, options = {})
|
|
122
|
+
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
|
123
|
+
self.navigation_menu_name = target unless @belongs_to.optional?
|
|
124
|
+
controller.send :belongs_to, target, options.dup
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def belongs_to_config
|
|
128
|
+
@belongs_to
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Do we belong to another resource?
|
|
132
|
+
def belongs_to?
|
|
133
|
+
!!belongs_to_config
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# The csv builder for this resource
|
|
137
|
+
def csv_builder
|
|
138
|
+
@csv_builder || default_csv_builder
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def find_resource(id)
|
|
142
|
+
resource = resource_class.where(resource_class.primary_key => id).first
|
|
143
|
+
decorator_class ? decorator_class.new(resource) : resource
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# @deprecated
|
|
147
|
+
def resource
|
|
148
|
+
resource_class
|
|
149
|
+
end
|
|
150
|
+
ActiveAdmin::Deprecation.deprecate self, :resource,
|
|
151
|
+
"ActiveAdmin::Resource#resource is deprecated. Please use #resource_class instead."
|
|
152
|
+
|
|
153
|
+
private
|
|
154
|
+
|
|
155
|
+
def default_csv_builder
|
|
156
|
+
@default_csv_builder ||= CSVBuilder.default_for_resource(resource_class)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
end # class Resource
|
|
160
|
+
end # module ActiveAdmin
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
|
|
5
|
+
class Resource
|
|
6
|
+
module ActionItems
|
|
7
|
+
|
|
8
|
+
# Add the default action items to a resource when it's
|
|
9
|
+
# initialized
|
|
10
|
+
def initialize(*args)
|
|
11
|
+
super
|
|
12
|
+
add_default_action_items
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [Array] The set of action items for this resource
|
|
16
|
+
def action_items
|
|
17
|
+
@action_items ||= []
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Add a new action item to a resource
|
|
21
|
+
#
|
|
22
|
+
# @param [Hash] options valid keys include:
|
|
23
|
+
# :only: A single or array of controller actions to display
|
|
24
|
+
# this action item on.
|
|
25
|
+
# :except: A single or array of controller actions not to
|
|
26
|
+
# display this action item on.
|
|
27
|
+
def add_action_item(options = {}, &block)
|
|
28
|
+
self.action_items << ActiveAdmin::ActionItem.new(options, &block)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Returns a set of action items to display for a specific controller action
|
|
32
|
+
#
|
|
33
|
+
# @param [String, Symbol] action the action to retrieve action items for
|
|
34
|
+
#
|
|
35
|
+
# @return [Array] Array of ActionItems for the controller actions
|
|
36
|
+
def action_items_for(action, render_context = nil)
|
|
37
|
+
action_items.select{|item| item.display_on?(action, render_context) }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Clears all the existing action items for this resource
|
|
41
|
+
def clear_action_items!
|
|
42
|
+
@action_items = []
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Used by active_admin Base view
|
|
46
|
+
def action_items?
|
|
47
|
+
!!@action_items && @action_items.any?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
# Adds the default action items to each resource
|
|
53
|
+
def add_default_action_items
|
|
54
|
+
# New Link on all actions except :new and :show
|
|
55
|
+
add_action_item :except => [:new, :show] do
|
|
56
|
+
if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
|
|
57
|
+
link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_label), new_resource_path)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Edit link on show
|
|
62
|
+
add_action_item :only => :show do
|
|
63
|
+
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
|
64
|
+
link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_label), edit_resource_path(resource))
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Destroy link on show
|
|
69
|
+
add_action_item :only => :show do
|
|
70
|
+
if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
|
71
|
+
link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_label),
|
|
72
|
+
resource_path(resource),
|
|
73
|
+
:method => :delete, :data => {:confirm => I18n.t('active_admin.delete_confirmation')})
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Model class to store the data for ActionItems
|
|
82
|
+
class ActionItem
|
|
83
|
+
include ActiveAdmin::OptionalDisplay
|
|
84
|
+
|
|
85
|
+
attr_accessor :block
|
|
86
|
+
|
|
87
|
+
def initialize(options = {}, &block)
|
|
88
|
+
@options, @block = options, block
|
|
89
|
+
normalize_display_options!
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'active_admin/resource'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class Resource
|
|
5
|
+
class BelongsTo
|
|
6
|
+
|
|
7
|
+
class TargetNotFound < StandardError; end
|
|
8
|
+
|
|
9
|
+
# The resource which initiated this relationship
|
|
10
|
+
attr_reader :owner
|
|
11
|
+
|
|
12
|
+
def initialize(owner, target_name, options = {})
|
|
13
|
+
@owner, @target_name, @options = owner, target_name, options
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns the target resource class or raises an exception if it doesn't exist
|
|
17
|
+
def target
|
|
18
|
+
key = @target_name.to_s.camelize
|
|
19
|
+
namespace.resources[key] or raise TargetNotFound, "Could not find #{key} in" +
|
|
20
|
+
" #{namespace.name} with #{namespace.resources.map(&:resource_name)}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def namespace
|
|
24
|
+
@owner.namespace
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def optional?
|
|
28
|
+
@options[:optional]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def required?
|
|
32
|
+
!optional?
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module Controllers
|
|
4
|
+
|
|
5
|
+
# Returns a properly formatted controller name for this
|
|
6
|
+
# config within its namespace
|
|
7
|
+
def controller_name
|
|
8
|
+
[namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join('::')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Returns the controller for this config
|
|
12
|
+
def controller
|
|
13
|
+
@controller ||= controller_name.constantize
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
|
|
4
|
+
module Menu
|
|
5
|
+
|
|
6
|
+
# Set the menu options.
|
|
7
|
+
# To disable this menu item, call `menu(false)` from the DSL
|
|
8
|
+
def menu_item_options=(options)
|
|
9
|
+
if options == false
|
|
10
|
+
@include_in_menu = false
|
|
11
|
+
@menu_item_options = {}
|
|
12
|
+
else
|
|
13
|
+
@navigation_menu_name = options[:menu_name]
|
|
14
|
+
@menu_item_options = default_menu_options.merge options
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def menu_item_options
|
|
19
|
+
@menu_item_options ||= default_menu_options
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def default_menu_options
|
|
23
|
+
# These local variables are accessible to the procs.
|
|
24
|
+
menu_resource_class = respond_to?(:resource_class) ? resource_class : self
|
|
25
|
+
resource = self
|
|
26
|
+
{
|
|
27
|
+
:id => resource_name.plural,
|
|
28
|
+
:label => proc{ resource.plural_resource_label },
|
|
29
|
+
:url => proc{ resource.route_collection_path(params) },
|
|
30
|
+
:if => proc{ authorized?(:read, menu_resource_class) }
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
attr_writer :navigation_menu_name
|
|
35
|
+
|
|
36
|
+
def navigation_menu_name
|
|
37
|
+
case @navigation_menu_name ||= DEFAULT_MENU
|
|
38
|
+
when Proc
|
|
39
|
+
controller.instance_eval(&@navigation_menu_name).to_sym
|
|
40
|
+
else
|
|
41
|
+
@navigation_menu_name
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def navigation_menu
|
|
46
|
+
namespace.fetch_menu(navigation_menu_name)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def add_to_menu(menu_collection)
|
|
50
|
+
if include_in_menu?
|
|
51
|
+
@menu_item = menu_collection.add navigation_menu_name, menu_item_options
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
attr_reader :menu_item
|
|
56
|
+
|
|
57
|
+
# Should this resource be added to the menu system?
|
|
58
|
+
def include_in_menu?
|
|
59
|
+
@include_in_menu != false
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
|
|
4
|
+
module Naming
|
|
5
|
+
|
|
6
|
+
# Returns a name used to uniquely identify this resource
|
|
7
|
+
# this should be an instance of ActiveAdmin:Resource::Name, which responds to
|
|
8
|
+
# #singular, #plural, #route_key, #human etc.
|
|
9
|
+
def resource_name
|
|
10
|
+
custom_name = @options[:as] && @options[:as].gsub(/\s/,'')
|
|
11
|
+
@resource_name ||= if custom_name || !resource_class.respond_to?(:model_name)
|
|
12
|
+
Resource::Name.new(resource_class, custom_name)
|
|
13
|
+
else
|
|
14
|
+
Resource::Name.new(resource_class)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Returns the name to call this resource such as "Bank Account"
|
|
19
|
+
def resource_label
|
|
20
|
+
resource_name.translate :count => 1, :default => resource_name.to_s.gsub('::', ' ').titleize
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Returns the plural version of this resource such as "Bank Accounts"
|
|
24
|
+
def plural_resource_label(options = {})
|
|
25
|
+
resource_name.translate ({:count => 1.1, :default => resource_label.pluralize.titleize}).merge(options)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# A subclass of ActiveModel::Name which supports the different APIs presented
|
|
30
|
+
# in Rails < 3.1 and > 3.1.
|
|
31
|
+
class Name < ActiveModel::Name
|
|
32
|
+
|
|
33
|
+
def initialize(klass, name = nil)
|
|
34
|
+
if ActiveModel::Name.instance_method(:initialize).arity == 1
|
|
35
|
+
super(proxy_for_initializer(klass, name))
|
|
36
|
+
else
|
|
37
|
+
super(klass, nil, name)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def translate(options = {})
|
|
42
|
+
I18n.t i18n_key, {:scope => [:activerecord, :models]}.merge(options)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def proxy_for_initializer(klass, name)
|
|
46
|
+
return klass unless name
|
|
47
|
+
return StringClassProxy.new(klass, name) if klass
|
|
48
|
+
|
|
49
|
+
StringProxy.new(name)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def route_key
|
|
53
|
+
plural
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class StringProxy
|
|
57
|
+
def initialize(name)
|
|
58
|
+
@name = name
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def name
|
|
62
|
+
@name
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class StringClassProxy < StringProxy
|
|
67
|
+
delegate :lookup_ancestors, :i18n_scope, :to => :"@klass"
|
|
68
|
+
|
|
69
|
+
def initialize(klass, name)
|
|
70
|
+
@klass = klass || name
|
|
71
|
+
super(name)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|