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,134 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# This is the class where all the register blocks are instance eval'd
|
|
3
|
+
class ResourceDSL < DSL
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def belongs_to(target, options = {})
|
|
7
|
+
config.belongs_to(target, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Scope collection to a relation
|
|
11
|
+
def scope_to(*args, &block)
|
|
12
|
+
config.scope_to(*args, &block)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Create a scope
|
|
16
|
+
def scope(*args, &block)
|
|
17
|
+
config.scope(*args, &block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Configure the index page for the resource
|
|
21
|
+
def index(options = {}, &block)
|
|
22
|
+
options[:as] ||= :table
|
|
23
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Configure the show page for the resource
|
|
27
|
+
def show(options = {}, &block)
|
|
28
|
+
config.set_page_presenter :show, ActiveAdmin::PagePresenter.new(options, &block)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def form(options = {}, &block)
|
|
32
|
+
config.set_page_presenter :form, ActiveAdmin::PagePresenter.new(options, &block)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Configure the CSV format
|
|
36
|
+
#
|
|
37
|
+
# For example:
|
|
38
|
+
#
|
|
39
|
+
# csv do
|
|
40
|
+
# column :name
|
|
41
|
+
# column("Author") { |post| post.author.full_name }
|
|
42
|
+
# end
|
|
43
|
+
#
|
|
44
|
+
# csv :col_sep => ";", :force_quotes => true do
|
|
45
|
+
# column :name
|
|
46
|
+
# end
|
|
47
|
+
#
|
|
48
|
+
def csv(options={}, &block)
|
|
49
|
+
config.csv_builder = CSVBuilder.new(options, &block)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Member Actions give you the functionality of defining both the
|
|
53
|
+
# action and the route directly from your ActiveAdmin registration
|
|
54
|
+
# block.
|
|
55
|
+
#
|
|
56
|
+
# For example:
|
|
57
|
+
#
|
|
58
|
+
# ActiveAdmin.register Post do
|
|
59
|
+
# member_action :comments do
|
|
60
|
+
# @post = Post.find(params[:id]
|
|
61
|
+
# @comments = @post.comments
|
|
62
|
+
# end
|
|
63
|
+
# end
|
|
64
|
+
#
|
|
65
|
+
# Will create a new controller action comments and will hook it up to
|
|
66
|
+
# the named route (comments_admin_post_path) /admin/posts/:id/comments
|
|
67
|
+
#
|
|
68
|
+
# You can treat everything within the block as a standard Rails controller
|
|
69
|
+
# action.
|
|
70
|
+
#
|
|
71
|
+
def action(set, name, options = {}, &block)
|
|
72
|
+
set << ControllerAction.new(name, options)
|
|
73
|
+
title = options.delete(:title)
|
|
74
|
+
|
|
75
|
+
controller do
|
|
76
|
+
before_filter(:only => [name]) { @page_title = title } if title
|
|
77
|
+
define_method(name, &block || Proc.new{})
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def member_action(name, options = {}, &block)
|
|
82
|
+
action config.member_actions, name, options, &block
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def collection_action(name, options = {}, &block)
|
|
86
|
+
action config.collection_actions, name, options, &block
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Defined Callbacks
|
|
90
|
+
#
|
|
91
|
+
# == After Build
|
|
92
|
+
# Called after the resource is built in the new and create actions.
|
|
93
|
+
#
|
|
94
|
+
# ActiveAdmin.register Post do
|
|
95
|
+
# after_build do |post|
|
|
96
|
+
# post.author = current_user
|
|
97
|
+
# end
|
|
98
|
+
# end
|
|
99
|
+
#
|
|
100
|
+
# == Before / After Create
|
|
101
|
+
# Called before and after a resource is saved to the db on the create action.
|
|
102
|
+
#
|
|
103
|
+
# == Before / After Update
|
|
104
|
+
# Called before and after a resource is saved to the db on the update action.
|
|
105
|
+
#
|
|
106
|
+
# == Before / After Save
|
|
107
|
+
# Called before and after the object is saved in the create and update action.
|
|
108
|
+
# Note: Gets called after the create and update callbacks
|
|
109
|
+
#
|
|
110
|
+
# == Before / After Destroy
|
|
111
|
+
# Called before and after the object is destroyed from the database.
|
|
112
|
+
#
|
|
113
|
+
delegate :before_build, :after_build, :to => :controller
|
|
114
|
+
delegate :before_create, :after_create, :to => :controller
|
|
115
|
+
delegate :before_update, :after_update, :to => :controller
|
|
116
|
+
delegate :before_save, :after_save, :to => :controller
|
|
117
|
+
delegate :before_destroy, :after_destroy, :to => :controller
|
|
118
|
+
|
|
119
|
+
# Standard rails filters
|
|
120
|
+
delegate :before_filter, :skip_before_filter, :after_filter, :around_filter, :skip_filter, :to => :controller
|
|
121
|
+
|
|
122
|
+
# Specify which actions to create in the controller
|
|
123
|
+
#
|
|
124
|
+
# Eg:
|
|
125
|
+
#
|
|
126
|
+
# ActiveAdmin.register Post do
|
|
127
|
+
# actions :index, :show
|
|
128
|
+
# end
|
|
129
|
+
#
|
|
130
|
+
# Will only create the index and show actions (no create, update or delete)
|
|
131
|
+
delegate :actions, :to => :controller
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Router
|
|
3
|
+
def initialize(application)
|
|
4
|
+
@application = application
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
|
8
|
+
#
|
|
9
|
+
# Use this within the routes.rb file:
|
|
10
|
+
#
|
|
11
|
+
# Application.routes.draw do |map|
|
|
12
|
+
# ActiveAdmin.routes(self)
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
def apply(router)
|
|
16
|
+
define_root_routes router
|
|
17
|
+
define_resource_routes router
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def define_root_routes(router)
|
|
21
|
+
router.instance_exec @application.namespaces.values do |namespaces|
|
|
22
|
+
namespaces.each do |namespace|
|
|
23
|
+
if namespace.root?
|
|
24
|
+
root :to => namespace.root_to
|
|
25
|
+
else
|
|
26
|
+
namespace namespace.name do
|
|
27
|
+
root :to => namespace.root_to
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Defines the routes for each resource
|
|
35
|
+
def define_resource_routes(router)
|
|
36
|
+
router.instance_exec @application.namespaces, self do |namespaces, aa_router|
|
|
37
|
+
resources = namespaces.values.map{ |n| n.resources.values }.flatten
|
|
38
|
+
resources.each do |config|
|
|
39
|
+
routes = aa_router.resource_routes(config)
|
|
40
|
+
|
|
41
|
+
# Add in the parent if it exists
|
|
42
|
+
if config.belongs_to?
|
|
43
|
+
belongs_to = routes
|
|
44
|
+
routes = Proc.new do
|
|
45
|
+
# If it's optional, make the normal resource routes
|
|
46
|
+
instance_exec &belongs_to if config.belongs_to_config.optional?
|
|
47
|
+
|
|
48
|
+
# Make the nested belongs_to routes
|
|
49
|
+
# :only is set to nothing so that we don't clobber any existing routes on the resource
|
|
50
|
+
resources config.belongs_to_config.target.resource_name.plural, :only => [] do
|
|
51
|
+
instance_exec &belongs_to
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Add on the namespace if required
|
|
57
|
+
unless config.namespace.root?
|
|
58
|
+
nested = routes
|
|
59
|
+
routes = Proc.new do
|
|
60
|
+
namespace config.namespace.name do
|
|
61
|
+
instance_exec &nested
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
instance_exec &routes
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def resource_routes(config)
|
|
72
|
+
Proc.new do
|
|
73
|
+
# Builds one route for each HTTP verb passed in
|
|
74
|
+
build_route = proc{ |verbs, *args|
|
|
75
|
+
[*verbs].each{ |verb| send verb, *args }
|
|
76
|
+
}
|
|
77
|
+
# Deals with +ControllerAction+ instances
|
|
78
|
+
build_action = proc{ |action|
|
|
79
|
+
build_route.call(action.http_verb, action.name)
|
|
80
|
+
}
|
|
81
|
+
case config
|
|
82
|
+
when ::ActiveAdmin::Resource
|
|
83
|
+
resources config.resource_name.route_key, :only => config.defined_actions do
|
|
84
|
+
member do
|
|
85
|
+
config.member_actions.each &build_action
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
collection do
|
|
89
|
+
config.collection_actions.each &build_action
|
|
90
|
+
post :batch_action
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
when ::ActiveAdmin::Page
|
|
94
|
+
page = config.underscored_resource_name
|
|
95
|
+
get "/#{page}" => "#{page}#index"
|
|
96
|
+
config.page_actions.each do |action|
|
|
97
|
+
build_route.call action.http_verb, "/#{page}/#{action.name}" => "#{page}##{action.name}"
|
|
98
|
+
end
|
|
99
|
+
else
|
|
100
|
+
raise "Unsupported config class: #{config.class}"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Scope
|
|
3
|
+
|
|
4
|
+
attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block
|
|
5
|
+
|
|
6
|
+
# Create a Scope
|
|
7
|
+
#
|
|
8
|
+
# Examples:
|
|
9
|
+
#
|
|
10
|
+
# Scope.new(:published)
|
|
11
|
+
# # => Scope with name 'Published' and scope method :published
|
|
12
|
+
#
|
|
13
|
+
# Scope.new('Published', :public)
|
|
14
|
+
# # => Scope with name 'Published' and scope method :public
|
|
15
|
+
#
|
|
16
|
+
# Scope.new 'Published', :public, :if => proc { current_admin_user.can? :manage, resource_class } do |articles|
|
|
17
|
+
# articles.where :published => true
|
|
18
|
+
# end
|
|
19
|
+
# # => Scope with name 'Published' and scope method :public, optionally displaying the scope per the :if block
|
|
20
|
+
#
|
|
21
|
+
# Scope.new('Published') { |articles| articles.where(:published => true) }
|
|
22
|
+
# # => Scope with name 'Published' using a block to scope
|
|
23
|
+
#
|
|
24
|
+
# Scope.new ->{Date.today.strftime '%A'}, :published_today
|
|
25
|
+
# # => Scope with dynamic title using the :published_today scope method
|
|
26
|
+
#
|
|
27
|
+
def initialize(name, method = nil, options = {}, &block)
|
|
28
|
+
@name, @scope_method = name, method.try(:to_sym)
|
|
29
|
+
|
|
30
|
+
if name.is_a? Proc
|
|
31
|
+
raise "A string/symbol is required as the second argument if your label is a proc." unless method
|
|
32
|
+
@id = method.to_s.gsub(' ', '').underscore
|
|
33
|
+
else
|
|
34
|
+
@scope_method ||= name.to_sym
|
|
35
|
+
@id = name.to_s.gsub(' ', '').underscore
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
@scope_method = nil if @scope_method == :all
|
|
39
|
+
@scope_method, @scope_block = nil, block if block_given?
|
|
40
|
+
|
|
41
|
+
@show_count = options[:show_count].nil? ? true : options[:show_count]
|
|
42
|
+
@display_if_block = options[:if] || proc{ true }
|
|
43
|
+
@default_block = options[:default] || proc{ false }
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def name
|
|
48
|
+
case @name
|
|
49
|
+
when Proc then @name.call.to_s
|
|
50
|
+
when String then @name
|
|
51
|
+
when Symbol then @name.to_s.titleize
|
|
52
|
+
else @name.to_s
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
class SidebarSection
|
|
4
|
+
include ActiveAdmin::OptionalDisplay
|
|
5
|
+
|
|
6
|
+
attr_accessor :name, :options, :block
|
|
7
|
+
|
|
8
|
+
def initialize(name, options = {}, &block)
|
|
9
|
+
@name, @options, @block = name, options, block
|
|
10
|
+
normalize_display_options!
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The id gets used for the div in the view
|
|
14
|
+
def id
|
|
15
|
+
"#{name.to_s.downcase.underscore}_sidebar_section".parameterize
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def icon?
|
|
19
|
+
!!options[:icon]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def icon
|
|
23
|
+
options[:icon] if icon?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# The title gets displayed within the section in the view
|
|
27
|
+
def title
|
|
28
|
+
I18n.t("active_admin.sidebars.#{name.to_s}", :default => name.to_s.titlecase)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# If a block is not passed in, the name of the partial to render
|
|
32
|
+
def partial_name
|
|
33
|
+
options[:partial] || "#{name.to_s.downcase.gsub(' ', '_')}_sidebar"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'active_admin/abstract_view_factory'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class ViewFactory < AbstractViewFactory
|
|
5
|
+
|
|
6
|
+
# Register Helper Renderers
|
|
7
|
+
register :global_navigation => ActiveAdmin::Views::TabbedNavigation,
|
|
8
|
+
:utility_navigation => ActiveAdmin::Views::TabbedNavigation,
|
|
9
|
+
:site_title => ActiveAdmin::Views::SiteTitle,
|
|
10
|
+
:action_items => ActiveAdmin::Views::ActionItems,
|
|
11
|
+
:title_bar => ActiveAdmin::Views::TitleBar,
|
|
12
|
+
:header => ActiveAdmin::Views::Header,
|
|
13
|
+
:footer => ActiveAdmin::Views::Footer,
|
|
14
|
+
:index_scopes => ActiveAdmin::Views::Scopes,
|
|
15
|
+
:blank_slate => ActiveAdmin::Views::BlankSlate,
|
|
16
|
+
:action_list_popover => ActiveAdmin::Views::ActionListPopover
|
|
17
|
+
|
|
18
|
+
# Register All The Pages
|
|
19
|
+
register :index_page => ActiveAdmin::Views::Pages::Index,
|
|
20
|
+
:show_page => ActiveAdmin::Views::Pages::Show,
|
|
21
|
+
:new_page => ActiveAdmin::Views::Pages::Form,
|
|
22
|
+
:edit_page => ActiveAdmin::Views::Pages::Form,
|
|
23
|
+
:layout => ActiveAdmin::Views::Pages::Layout,
|
|
24
|
+
:page => ActiveAdmin::Views::Pages::Page
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module AutoLinkHelper
|
|
4
|
+
|
|
5
|
+
# Automatically links objects to their resource controllers. If
|
|
6
|
+
# the resource has not been registered, a string representation of
|
|
7
|
+
# the object is returned.
|
|
8
|
+
#
|
|
9
|
+
# The default content in the link is returned from ActiveAdmin::ViewHelpers::DisplayHelper#display_name
|
|
10
|
+
#
|
|
11
|
+
# You can pass in the content to display
|
|
12
|
+
# eg: auto_link(@post, "My Link Content")
|
|
13
|
+
#
|
|
14
|
+
def auto_link(resource, link_content = nil)
|
|
15
|
+
content = link_content || display_name(resource)
|
|
16
|
+
if (registration = active_admin_resource_for(resource.class))
|
|
17
|
+
begin
|
|
18
|
+
content = link_to(content, registration.route_instance_path(resource))
|
|
19
|
+
rescue
|
|
20
|
+
# ignored
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
content
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Returns the ActiveAdmin::Resource instance for a class
|
|
27
|
+
def active_admin_resource_for(klass)
|
|
28
|
+
return nil unless respond_to?(:active_admin_namespace)
|
|
29
|
+
active_admin_namespace.resource_for(klass)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module BreadcrumbHelper
|
|
4
|
+
|
|
5
|
+
# Returns an array of links to use in a breadcrumb
|
|
6
|
+
def breadcrumb_links(path = request.path)
|
|
7
|
+
parts = path[1..-1].split('/') # remove leading "/" and split up the URL
|
|
8
|
+
parts.pop # remove last since it's used as the page title
|
|
9
|
+
|
|
10
|
+
parts.each_with_index.map do |part, index|
|
|
11
|
+
# 1. try using `display_name` if we can locate a DB object
|
|
12
|
+
# 2. try using the model name translation
|
|
13
|
+
# 3. default to calling `titlecase` on the URL fragment
|
|
14
|
+
if part =~ /\A(\d+|[a-f0-9]{24})\z/ && parts[index-1]
|
|
15
|
+
config = active_admin_config.belongs_to_config.try(:target) || active_admin_config
|
|
16
|
+
name = display_name config.find_resource(part)
|
|
17
|
+
end
|
|
18
|
+
name ||= I18n.t "activerecord.models.#{part.singularize}", :count => 1.1, :default => part.titlecase
|
|
19
|
+
|
|
20
|
+
link_to name, '/' + parts[0..index].join('/')
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module DisplayHelper
|
|
4
|
+
|
|
5
|
+
# Attempts to call any known display name methods on the resource.
|
|
6
|
+
# See the setting in `application.rb` for the list of methods and their priority.
|
|
7
|
+
def display_name(resource)
|
|
8
|
+
resource.send display_name_method_for resource if resource
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Looks up and caches the first available display name method.
|
|
12
|
+
def display_name_method_for(resource)
|
|
13
|
+
@@display_name_methods_cache ||= {}
|
|
14
|
+
@@display_name_methods_cache[resource.class] ||= begin
|
|
15
|
+
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
|
16
|
+
methods.detect{ |method| resource.respond_to? method }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# To prevent conflicts, we exclude any methods that happen to be associations.
|
|
21
|
+
def association_methods_for(resource)
|
|
22
|
+
return [] unless resource.class.respond_to? :reflect_on_all_associations
|
|
23
|
+
resource.class.reflect_on_all_associations.map(&:name)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Return a pretty string for any object
|
|
27
|
+
# Date Time are formatted via #localize with :format => :long
|
|
28
|
+
# ActiveRecord and Mongoid objects are formatted via #auto_link
|
|
29
|
+
# We attempt to #display_name of any other objects
|
|
30
|
+
def pretty_format(object)
|
|
31
|
+
case object
|
|
32
|
+
when String
|
|
33
|
+
object
|
|
34
|
+
when Arbre::Element
|
|
35
|
+
object
|
|
36
|
+
when Date, Time
|
|
37
|
+
localize(object, :format => :long)
|
|
38
|
+
when ->(obj){defined?(::ActiveRecord) && obj.is_a?(ActiveRecord::Base)}
|
|
39
|
+
auto_link(object)
|
|
40
|
+
when ->(obj){defined?(::Mongoid) && obj.class.included_modules.include?(Mongoid::Document)}
|
|
41
|
+
auto_link(object)
|
|
42
|
+
else
|
|
43
|
+
display_name(object)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module DownloadFormatLinksHelper
|
|
4
|
+
|
|
5
|
+
module ClassMethods
|
|
6
|
+
|
|
7
|
+
# A ready only of formats to make available in index/paginated
|
|
8
|
+
# collection view.
|
|
9
|
+
# @return [Array]
|
|
10
|
+
# @see add_format for information on adding custom download link
|
|
11
|
+
# formats
|
|
12
|
+
def formats
|
|
13
|
+
@formats ||= [:csv, :xml, :json]
|
|
14
|
+
@formats.clone
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Adds a mime type extension to the list of available formats.
|
|
18
|
+
# You must register the extension prior to adding it to the list
|
|
19
|
+
# of avilable formats. This should be used by plugins that want
|
|
20
|
+
# to add additional formats to the download format links.
|
|
21
|
+
# @param [Symbol] extension the mime extension to add
|
|
22
|
+
# @return [Array] A copy of the updated formats array.
|
|
23
|
+
def add_format extension
|
|
24
|
+
unless formats.include?(extension)
|
|
25
|
+
if Mime::Type.lookup_by_extension(extension).nil?
|
|
26
|
+
raise ArgumentError, "The mime extension you defined: #{extension} is not registered. Please register it via Mime::Type.register before adding it to the available formats."
|
|
27
|
+
end
|
|
28
|
+
@formats << extension
|
|
29
|
+
end
|
|
30
|
+
formats
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# TODO: Refactor to new HTML DSL
|
|
35
|
+
def build_download_format_links(formats = self.class.formats)
|
|
36
|
+
params = request.query_parameters.except :format, :commit
|
|
37
|
+
links = formats.map { |format| link_to format.to_s.upcase, params: params, format: format }
|
|
38
|
+
div :class => "download_links" do
|
|
39
|
+
text_node [I18n.t('active_admin.download'), links].flatten.join(" ").html_safe
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.included base
|
|
44
|
+
base.extend ClassMethods
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module FormHelper
|
|
4
|
+
|
|
5
|
+
# Flatten a params Hash to an array of fields.
|
|
6
|
+
#
|
|
7
|
+
# @param params [Hash]
|
|
8
|
+
# @param options [Hash] :namespace and :except
|
|
9
|
+
#
|
|
10
|
+
# @return [Array] of [Hash] with one element.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# fields_for_params(scope: "all", users: ["greg"])
|
|
14
|
+
# => [ {"scope" => "all"} , {"users[]" => "greg"} ]
|
|
15
|
+
#
|
|
16
|
+
def fields_for_params(params, options = {})
|
|
17
|
+
namespace = options[:namespace]
|
|
18
|
+
except = options[:except].is_a?(Array) ? options[:except] : [options[:except]]
|
|
19
|
+
|
|
20
|
+
params.map do |k, v|
|
|
21
|
+
next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
|
|
22
|
+
next if except.map(&:to_s).include?(k.to_s)
|
|
23
|
+
|
|
24
|
+
if namespace
|
|
25
|
+
k = "#{namespace}[#{k}]"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
case v
|
|
29
|
+
when String
|
|
30
|
+
{ k => v }
|
|
31
|
+
when Symbol
|
|
32
|
+
{ k => v.to_s }
|
|
33
|
+
when Hash
|
|
34
|
+
fields_for_params(v, :namespace => k)
|
|
35
|
+
when Array
|
|
36
|
+
v.map do |v|
|
|
37
|
+
{ "#{k}[]" => v }
|
|
38
|
+
end
|
|
39
|
+
when nil
|
|
40
|
+
{ k => '' }
|
|
41
|
+
when TrueClass,FalseClass
|
|
42
|
+
{ k => v }
|
|
43
|
+
else
|
|
44
|
+
raise "I don't know what to do with #{v.class} params: #{v.inspect}"
|
|
45
|
+
end
|
|
46
|
+
end.flatten.compact
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module FlashHelper
|
|
4
|
+
|
|
5
|
+
# Returns all the flash keys to display in any Active Admin view.
|
|
6
|
+
# This method removes the :timedout key that Devise uses by default
|
|
7
|
+
def active_admin_flash_messages
|
|
8
|
+
@active_admin_flash_messages ||= flash.to_hash.except(:timedout)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module FormHelper
|
|
4
|
+
|
|
5
|
+
def active_admin_form_for(resource, options = {}, &block)
|
|
6
|
+
options = Marshal.load( Marshal.dump(options) )
|
|
7
|
+
options[:builder] ||= ActiveAdmin::FormBuilder
|
|
8
|
+
|
|
9
|
+
if ! options.fetch(:decorate, true)
|
|
10
|
+
resource = resource.model
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
semantic_form_for resource, options, &block
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def hidden_field_tags_for(params, options={})
|
|
17
|
+
fields_for_params(params, options).map do |kv|
|
|
18
|
+
k, v = kv.first
|
|
19
|
+
hidden_field_tag k, v, :id => sanitize_to_id("hidden_active_admin_#{k}")
|
|
20
|
+
end.join("\n").html_safe
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|