yousty-activeadmin 1.0.0.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 +7 -0
- data/.gitignore +43 -0
- data/.travis.yml +8 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +1056 -0
- data/CONTRIBUTING.md +110 -0
- data/Gemfile +41 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.md +67 -0
- data/Rakefile +25 -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.coffee +6 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +5 -0
- data/app/assets/javascripts/active_admin/components/application.js.coffee +23 -0
- data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +26 -0
- data/app/assets/javascripts/active_admin/components/has_many.js.coffee +41 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +105 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +97 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +25 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +293 -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 +110 -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 +32 -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 +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -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 +20 -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 +105 -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 +91 -0
- data/config/locales/en.yml +110 -0
- data/config/locales/es.yml +106 -0
- data/config/locales/es_MX.yml +104 -0
- data/config/locales/fi.yml +109 -0
- data/config/locales/fr.yml +97 -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 +104 -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 +90 -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 +84 -0
- data/docs/1-general-configuration.md +137 -0
- data/docs/10-custom-pages.md +98 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbre-components.md +144 -0
- data/docs/13-authorization-adapter.md +227 -0
- data/docs/2-resource-customization.md +340 -0
- data/docs/3-index-pages/create-an-index.md +29 -0
- data/docs/3-index-pages/index-as-block.md +21 -0
- data/docs/3-index-pages/index-as-blog.md +71 -0
- data/docs/3-index-pages/index-as-grid.md +29 -0
- data/docs/3-index-pages/index-as-table.md +154 -0
- data/docs/3-index-pages.md +206 -0
- data/docs/4-csv-format.md +39 -0
- data/docs/5-forms.md +110 -0
- data/docs/6-show-pages.md +77 -0
- data/docs/7-sidebars.md +42 -0
- data/docs/8-custom-actions.md +139 -0
- data/docs/9-batch-actions.md +155 -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 +140 -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 +138 -0
- data/features/index/format_as_csv.feature +117 -0
- data/features/index/formats.feature +66 -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 +100 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +34 -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 +45 -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/symbol_leak_steps.rb +3 -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 +86 -0
- data/features/sti_resource.feature +73 -0
- data/features/support/env.rb +112 -0
- data/features/support/paths.rb +71 -0
- data/features/support/selectors.rb +45 -0
- data/features/symbol_leak.feature +35 -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/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +242 -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/authorization.rb +151 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/batch_actions/controller.rb +24 -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/batch_actions.rb +17 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/cancan_adapter.rb +40 -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/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +89 -0
- data/lib/active_admin/filters/formtastic_addons.rb +70 -0
- data/lib/active_admin/filters/resource_extension.rb +136 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/form_builder.rb +152 -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/icons.rb +142 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_base.rb +33 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +51 -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 +61 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/inputs.rb +15 -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 +224 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +39 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +84 -0
- data/lib/active_admin/orm/active_record.rb +3 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +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/action_items.rb +91 -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 +84 -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.rb +153 -0
- data/lib/active_admin/resource_collection.rb +42 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +298 -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_controller.rb +50 -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 +27 -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 +49 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -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/view_helpers.rb +21 -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 +103 -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 +125 -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 +66 -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/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 +156 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +264 -0
- data/lib/active_admin/views/pages/base.rb +139 -0
- data/lib/active_admin/views/pages/form.rb +51 -0
- data/lib/active_admin/views/pages/index.rb +147 -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/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +125 -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 +86 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +235 -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 +16 -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 +111 -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 +52 -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 +32 -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 +32 -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 +423 -0
- data/spec/unit/filters/resource_spec.rb +119 -0
- data/spec/unit/form_builder_spec.rb +514 -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 +122 -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 +160 -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 +21 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +149 -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 +101 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +230 -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 +227 -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 +201 -0
- data/spec/unit/views/pages/form_spec.rb +35 -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 +37 -0
- data/tasks/js.rake +32 -0
- data/tasks/parallel_tests.rake +60 -0
- data/tasks/test.rake +79 -0
- data/tasks/yard.rake +7 -0
- metadata +896 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
|
|
5
|
+
class Resource
|
|
6
|
+
module ActionItems
|
|
7
|
+
|
|
8
|
+
# Adds the default action items to a resource when it's initialized
|
|
9
|
+
def initialize(*args)
|
|
10
|
+
super
|
|
11
|
+
add_default_action_items
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @return [Array] The set of action items for this resource
|
|
15
|
+
def action_items
|
|
16
|
+
@action_items ||= []
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Add a new action item to a resource
|
|
20
|
+
#
|
|
21
|
+
# @param [Hash] options valid keys include:
|
|
22
|
+
# :only: A single or array of controller actions to display
|
|
23
|
+
# this action item on.
|
|
24
|
+
# :except: A single or array of controller actions not to
|
|
25
|
+
# display this action item on.
|
|
26
|
+
def add_action_item(options = {}, &block)
|
|
27
|
+
self.action_items << ActiveAdmin::ActionItem.new(options, &block)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns a set of action items to display for a specific controller action
|
|
31
|
+
#
|
|
32
|
+
# @param [String, Symbol] action the action to retrieve action items for
|
|
33
|
+
#
|
|
34
|
+
# @return [Array] Array of ActionItems for the controller actions
|
|
35
|
+
def action_items_for(action, render_context = nil)
|
|
36
|
+
action_items.select{ |item| item.display_on? action, render_context }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Clears all the existing action items for this resource
|
|
40
|
+
def clear_action_items!
|
|
41
|
+
@action_items = []
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Used by active_admin Base view
|
|
45
|
+
def action_items?
|
|
46
|
+
!!@action_items && @action_items.any?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
# Adds the default action items to each resource
|
|
52
|
+
def add_default_action_items
|
|
53
|
+
# New link on index
|
|
54
|
+
add_action_item only: :index do
|
|
55
|
+
if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
|
|
56
|
+
link_to I18n.t('active_admin.new_model', model: active_admin_config.resource_label), new_resource_path
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Edit link on show
|
|
61
|
+
add_action_item only: :show do
|
|
62
|
+
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
|
63
|
+
link_to I18n.t('active_admin.edit_model', model: active_admin_config.resource_label), edit_resource_path(resource)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Destroy link on show
|
|
68
|
+
add_action_item only: :show do
|
|
69
|
+
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
|
70
|
+
link_to I18n.t('active_admin.delete_model', model: active_admin_config.resource_label), resource_path(resource),
|
|
71
|
+
method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Model class to store the data for ActionItems
|
|
80
|
+
class ActionItem
|
|
81
|
+
include ActiveAdmin::OptionalDisplay
|
|
82
|
+
|
|
83
|
+
attr_accessor :block
|
|
84
|
+
|
|
85
|
+
def initialize(options = {}, &block)
|
|
86
|
+
@options, @block = options, block
|
|
87
|
+
normalize_display_options!
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
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,84 @@
|
|
|
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
|
+
delegate :hash, :to => :to_str
|
|
34
|
+
|
|
35
|
+
def initialize(klass, name = nil)
|
|
36
|
+
if ActiveModel::Name.instance_method(:initialize).arity == 1
|
|
37
|
+
super(proxy_for_initializer(klass, name))
|
|
38
|
+
else
|
|
39
|
+
super(klass, nil, name)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def translate(options = {})
|
|
44
|
+
I18n.t i18n_key, {:scope => [:activerecord, :models]}.merge(options)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def proxy_for_initializer(klass, name)
|
|
48
|
+
return klass unless name
|
|
49
|
+
return StringClassProxy.new(klass, name) if klass
|
|
50
|
+
|
|
51
|
+
StringProxy.new(name)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def route_key
|
|
55
|
+
plural
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def eql?(other)
|
|
59
|
+
to_str.eql?(other.to_str)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class StringProxy
|
|
63
|
+
def initialize(name)
|
|
64
|
+
@name = name
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def name
|
|
68
|
+
@name
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class StringClassProxy < StringProxy
|
|
73
|
+
delegate :lookup_ancestors, :i18n_scope, :to => :"@klass"
|
|
74
|
+
|
|
75
|
+
def initialize(klass, name)
|
|
76
|
+
@klass = klass || name
|
|
77
|
+
super(name)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module PagePresenters
|
|
4
|
+
|
|
5
|
+
# for setting default css class in admin ui
|
|
6
|
+
def default_index_class
|
|
7
|
+
@default_index
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# A hash of page configurations for the controller indexed by action name
|
|
11
|
+
def page_presenters
|
|
12
|
+
@page_presenters ||= {}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Sets a page config for a given action
|
|
16
|
+
#
|
|
17
|
+
# @param [String, Symbol] action The action to store this configuration for
|
|
18
|
+
# @param [PagePresenter] page_presenter The instance of PagePresenter to store
|
|
19
|
+
def set_page_presenter(action, page_presenter)
|
|
20
|
+
|
|
21
|
+
if action.to_s == "index" && page_presenter[:as]
|
|
22
|
+
index_class = find_index_class(page_presenter[:as])
|
|
23
|
+
page_presenter_key = index_class.index_name.to_sym
|
|
24
|
+
set_index_presenter page_presenter_key, page_presenter
|
|
25
|
+
else
|
|
26
|
+
page_presenters[action.to_sym] = page_presenter
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Returns a stored page config
|
|
32
|
+
#
|
|
33
|
+
# @param [Symbol, String] action The action to get the config for
|
|
34
|
+
# @param [String] type The string specified in the presenters index_name method
|
|
35
|
+
# @returns [PagePresenter, nil]
|
|
36
|
+
def get_page_presenter(action, type=nil)
|
|
37
|
+
|
|
38
|
+
if action.to_s == "index" && type && page_presenters[:index].kind_of?(Hash)
|
|
39
|
+
page_presenters[:index][type.to_sym]
|
|
40
|
+
elsif action.to_s == "index" && page_presenters[:index].kind_of?(Hash)
|
|
41
|
+
page_presenters[:index].default
|
|
42
|
+
else
|
|
43
|
+
page_presenters[action.to_sym]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
protected
|
|
49
|
+
|
|
50
|
+
# Stores a config for all index actions supplied
|
|
51
|
+
#
|
|
52
|
+
# @param [Symbol] index_as The index type to store in the configuration
|
|
53
|
+
# @param [PagePresenter] page_presenter The intance of PagePresenter to store
|
|
54
|
+
def set_index_presenter(index_as, page_presenter)
|
|
55
|
+
page_presenters[:index] ||= {}
|
|
56
|
+
|
|
57
|
+
#set first index as default value or the index with default param set to to true
|
|
58
|
+
if page_presenters[:index].empty? || page_presenter[:default] == true
|
|
59
|
+
page_presenters[:index].default = page_presenter
|
|
60
|
+
@default_index = find_index_class(page_presenter[:as])
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
page_presenters[:index][index_as] = page_presenter
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Returns the actual class for renderering the main content on the index
|
|
67
|
+
# page. To set this, use the :as option in the page_presenter block.
|
|
68
|
+
#
|
|
69
|
+
# @param [Symbol, Class] symbol_or_class The component symbol or class
|
|
70
|
+
# @return [Class]
|
|
71
|
+
def find_index_class(symbol_or_class)
|
|
72
|
+
case symbol_or_class
|
|
73
|
+
when Symbol
|
|
74
|
+
::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
|
|
75
|
+
when Class
|
|
76
|
+
symbol_or_class
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
class Resource
|
|
4
|
+
module Pagination
|
|
5
|
+
|
|
6
|
+
# The default number of records to display per page
|
|
7
|
+
attr_accessor :per_page
|
|
8
|
+
|
|
9
|
+
# Enable / disable pagination (defaults to true)
|
|
10
|
+
attr_accessor :paginate
|
|
11
|
+
|
|
12
|
+
def initialize(*args)
|
|
13
|
+
super
|
|
14
|
+
@paginate = true
|
|
15
|
+
@per_page = namespace.default_per_page
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module Routes
|
|
4
|
+
# @params params [Hash] of params: {study_id: 3}
|
|
5
|
+
# @return [String] the path to this resource collection page
|
|
6
|
+
# @example "/admin/posts"
|
|
7
|
+
def route_collection_path(params = {})
|
|
8
|
+
RouteBuilder.new(self).collection_path(params)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @param resource [ActiveRecord::Base] the instance we want the path of
|
|
12
|
+
# @return [String] the path to this resource collection page
|
|
13
|
+
# @example "/admin/posts/1"
|
|
14
|
+
def route_instance_path(resource)
|
|
15
|
+
RouteBuilder.new(self).instance_path(resource)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Returns the routes prefix for this config
|
|
19
|
+
def route_prefix
|
|
20
|
+
namespace.module_name.try(:underscore)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def route_uncountable?
|
|
24
|
+
config = controller.resources_configuration[:self]
|
|
25
|
+
|
|
26
|
+
config[:route_collection_name] == config[:route_instance_name]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
class RouteBuilder
|
|
32
|
+
def initialize(resource)
|
|
33
|
+
@resource = resource
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def collection_path(params)
|
|
37
|
+
route_name = route_name(
|
|
38
|
+
resource.controller.resources_configuration[:self][:route_collection_name],
|
|
39
|
+
(resource.route_uncountable? ? 'index_path' : 'path')
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
routes.send(route_name, *route_collection_params(params))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @return [String] the path to this resource collection page
|
|
46
|
+
# @param instance [ActiveRecord::Base] the instance we want the path of
|
|
47
|
+
# @example "/admin/posts/1"
|
|
48
|
+
def instance_path(instance)
|
|
49
|
+
route_name = route_name(resource.controller.resources_configuration[:self][:route_instance_name])
|
|
50
|
+
|
|
51
|
+
routes.send(route_name, *route_instance_params(instance))
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
attr_reader :resource
|
|
57
|
+
|
|
58
|
+
def route_name(resource_path_name, suffix = 'path')
|
|
59
|
+
route = []
|
|
60
|
+
|
|
61
|
+
route << resource.route_prefix # "admin"
|
|
62
|
+
route << belongs_to_name if nested? # "category"
|
|
63
|
+
route << resource_path_name # "posts" or "post"
|
|
64
|
+
route << suffix # "path" or "index path"
|
|
65
|
+
|
|
66
|
+
route.compact.join('_').to_sym # :admin_category_posts_path
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# @return params to pass to instance path
|
|
71
|
+
def route_instance_params(instance)
|
|
72
|
+
if nested?
|
|
73
|
+
[instance.send(belongs_to_name).to_param, instance.to_param]
|
|
74
|
+
else
|
|
75
|
+
instance.to_param
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def route_collection_params(params)
|
|
80
|
+
if nested?
|
|
81
|
+
params[:"#{belongs_to_name}_id"]
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def nested?
|
|
86
|
+
resource.belongs_to? && resource.belongs_to_config.required?
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def belongs_to_name
|
|
90
|
+
resource.belongs_to_config.target.resource_name.singular if nested?
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def routes
|
|
94
|
+
Rails.application.routes.url_helpers
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module ScopeTo
|
|
4
|
+
|
|
5
|
+
# Scope this controller to some object which has a relation
|
|
6
|
+
# to the resource. Can either accept a block or a symbol
|
|
7
|
+
# of a method to call.
|
|
8
|
+
#
|
|
9
|
+
# Eg:
|
|
10
|
+
#
|
|
11
|
+
# ActiveAdmin.register Post do
|
|
12
|
+
# scope_to :current_user
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
# Then every time we instantiate and object, it would call
|
|
16
|
+
#
|
|
17
|
+
# current_user.posts.build
|
|
18
|
+
#
|
|
19
|
+
# By default Active Admin will use the resource name to build a
|
|
20
|
+
# method to call as the association. If its different, you can
|
|
21
|
+
# pass in the association_method as an option.
|
|
22
|
+
#
|
|
23
|
+
# scope_to :current_user, :association_method => :blog_posts
|
|
24
|
+
#
|
|
25
|
+
# will result in the following
|
|
26
|
+
#
|
|
27
|
+
# current_user.blog_posts.build
|
|
28
|
+
#
|
|
29
|
+
# To conditionally use this scope, you can use conditional procs
|
|
30
|
+
#
|
|
31
|
+
# scope_to :current_user, :if => proc{ admin_user_signed_in? }
|
|
32
|
+
#
|
|
33
|
+
# or
|
|
34
|
+
#
|
|
35
|
+
# scope_to :current_user, :unless => proc{ current_user.admin? }
|
|
36
|
+
#
|
|
37
|
+
def scope_to(*args, &block)
|
|
38
|
+
options = args.extract_options!
|
|
39
|
+
method = args.first
|
|
40
|
+
|
|
41
|
+
scope_to_config[:method] = block || method
|
|
42
|
+
scope_to_config[:association_method] = options[:association_method]
|
|
43
|
+
scope_to_config[:if] = options[:if]
|
|
44
|
+
scope_to_config[:unless] = options[:unless]
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def scope_to_association_method
|
|
49
|
+
scope_to_config[:association_method]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def scope_to_method
|
|
53
|
+
scope_to_config[:method]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def scope_to_config
|
|
57
|
+
@scope_to_config ||= {
|
|
58
|
+
:method => nil,
|
|
59
|
+
:association_method => nil,
|
|
60
|
+
:if => nil,
|
|
61
|
+
:unless => nil
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def scope_to?(context = nil)
|
|
66
|
+
return false if scope_to_method.nil?
|
|
67
|
+
return render_in_context(context, scope_to_config[:if]) unless scope_to_config[:if].nil?
|
|
68
|
+
return !render_in_context(context, scope_to_config[:unless]) unless scope_to_config[:unless].nil?
|
|
69
|
+
true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Resource
|
|
3
|
+
module Scopes
|
|
4
|
+
|
|
5
|
+
# Return an array of scopes for this resource
|
|
6
|
+
def scopes
|
|
7
|
+
@scopes ||= []
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Returns a scope for this object by its identifier
|
|
11
|
+
def get_scope_by_id(id)
|
|
12
|
+
id = id.to_s
|
|
13
|
+
scopes.find{|s| s.id == id }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def default_scope(context = nil)
|
|
17
|
+
scopes.detect do |scope|
|
|
18
|
+
if scope.default_block.is_a?(Proc)
|
|
19
|
+
render_in_context(context, scope.default_block)
|
|
20
|
+
else
|
|
21
|
+
scope.default_block
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Create a new scope object for this resource.
|
|
27
|
+
# If you want to internationalize the scope name, you can add
|
|
28
|
+
# to your i18n files a key like "active_admin.scopes.scope_method".
|
|
29
|
+
def scope(*args, &block)
|
|
30
|
+
options = args.extract_options!
|
|
31
|
+
title = args[0] rescue nil
|
|
32
|
+
method = args[1] rescue nil
|
|
33
|
+
|
|
34
|
+
scope = ActiveAdmin::Scope.new(title, method, options, &block)
|
|
35
|
+
|
|
36
|
+
# Finds and replaces a scope by the same name if it already exists
|
|
37
|
+
existing_scope_index = scopes.index{|existing_scope| existing_scope.id == scope.id }
|
|
38
|
+
if existing_scope_index
|
|
39
|
+
scopes.delete_at(existing_scope_index)
|
|
40
|
+
scopes.insert(existing_scope_index, scope)
|
|
41
|
+
else
|
|
42
|
+
self.scopes << scope
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
scope
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
|
|
5
|
+
class Resource
|
|
6
|
+
module Sidebars
|
|
7
|
+
|
|
8
|
+
def sidebar_sections
|
|
9
|
+
@sidebar_sections ||= []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def clear_sidebar_sections!
|
|
13
|
+
@sidebar_sections = []
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def sidebar_sections_for(action, render_context = nil)
|
|
17
|
+
sidebar_sections.select{|section| section.display_on?(action, render_context) }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def sidebar_sections?
|
|
21
|
+
!!@sidebar_sections && @sidebar_sections.any?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|