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,93 @@
|
|
|
1
|
+
module MethodOrProcHelper
|
|
2
|
+
|
|
3
|
+
# This method will either call the symbol on self or instance_exec the Proc
|
|
4
|
+
# within self. Any args will be passed along to the method dispatch.
|
|
5
|
+
#
|
|
6
|
+
# Calling with a Symbol:
|
|
7
|
+
#
|
|
8
|
+
# call_method_or_exec_proc(:to_s) #=> will call #to_s
|
|
9
|
+
#
|
|
10
|
+
# Calling with a Proc
|
|
11
|
+
#
|
|
12
|
+
# my_proc = Proc.new{ to_s }
|
|
13
|
+
# call_method_or_exec_proc(my_proc) #=> will instance_exec in self
|
|
14
|
+
#
|
|
15
|
+
def call_method_or_exec_proc(symbol_or_proc, *args)
|
|
16
|
+
case symbol_or_proc
|
|
17
|
+
when Symbol, String
|
|
18
|
+
send(symbol_or_proc, *args)
|
|
19
|
+
when Proc
|
|
20
|
+
instance_exec(*args, &symbol_or_proc)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Many times throughout the views we want to either call a method on an object
|
|
25
|
+
# or instance_exec a proc passing in the object as the first parameter. This
|
|
26
|
+
# method wraps that pattern.
|
|
27
|
+
#
|
|
28
|
+
# Calling with a Symbol:
|
|
29
|
+
#
|
|
30
|
+
# call_method_or_proc_on(@my_obj, :size) same as @my_obj.size
|
|
31
|
+
#
|
|
32
|
+
# Calling with a Proc:
|
|
33
|
+
#
|
|
34
|
+
# proc = Proc.new{|s| s.size }
|
|
35
|
+
# call_method_or_proc_on(@my_obj, proc)
|
|
36
|
+
#
|
|
37
|
+
# By default, the Proc will be instance_exec'd within self. If you would rather
|
|
38
|
+
# not instance exec, but just call the Proc, then pass along `:exec => false` in
|
|
39
|
+
# the options hash.
|
|
40
|
+
#
|
|
41
|
+
# proc = Proc.new{|s| s.size }
|
|
42
|
+
# call_method_or_proc_on(@my_obj, proc, :exec => false)
|
|
43
|
+
#
|
|
44
|
+
# You can pass along any necessary arguments to the method / Proc as arguments. For
|
|
45
|
+
# example:
|
|
46
|
+
#
|
|
47
|
+
# call_method_or_proc_on(@my_obj, :find, 1) #=> @my_obj.find(1)
|
|
48
|
+
#
|
|
49
|
+
def call_method_or_proc_on(receiver, *args)
|
|
50
|
+
options = { :exec => true }.merge(args.extract_options!)
|
|
51
|
+
|
|
52
|
+
symbol_or_proc = args.shift
|
|
53
|
+
|
|
54
|
+
case symbol_or_proc
|
|
55
|
+
when Symbol, String
|
|
56
|
+
receiver.send(symbol_or_proc.to_sym, *args)
|
|
57
|
+
when Proc
|
|
58
|
+
if options[:exec]
|
|
59
|
+
instance_exec(receiver, *args, &symbol_or_proc)
|
|
60
|
+
else
|
|
61
|
+
symbol_or_proc.call(receiver, *args)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Many configuration options (Ex: site_title, title_image) could either be
|
|
67
|
+
# static (String), methods (Symbol) or procs (Proc). This helper takes care of
|
|
68
|
+
# returning the content when String or call call_method_or_proc_on when Symbol or Proc.
|
|
69
|
+
#
|
|
70
|
+
def render_or_call_method_or_proc_on(obj, string_symbol_or_proc, options = {})
|
|
71
|
+
case string_symbol_or_proc
|
|
72
|
+
when Symbol, Proc
|
|
73
|
+
call_method_or_proc_on(obj, string_symbol_or_proc, options)
|
|
74
|
+
when String
|
|
75
|
+
string_symbol_or_proc
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# This method is different from the others in that it calls `instance_exec` on the reciever,
|
|
80
|
+
# passing it the proc. This evaluates the proc in the context of the reciever, thus changing
|
|
81
|
+
# what `self` means inside the proc.
|
|
82
|
+
def render_in_context(context, obj, *args)
|
|
83
|
+
context ||= self # default to `self`
|
|
84
|
+
case obj
|
|
85
|
+
when Proc
|
|
86
|
+
context.instance_exec *args, &obj
|
|
87
|
+
when Symbol
|
|
88
|
+
context.send obj, *args
|
|
89
|
+
else
|
|
90
|
+
obj
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
|
|
4
|
+
# Require all ruby files in the view helpers dir
|
|
5
|
+
Dir[File.expand_path('../view_helpers', __FILE__) + "/*.rb"].each{|f| require f }
|
|
6
|
+
|
|
7
|
+
include AssignsWithIndifferentAccessHelper
|
|
8
|
+
include ActiveAdminApplicationHelper
|
|
9
|
+
include AutoLinkHelper
|
|
10
|
+
include BreadcrumbHelper
|
|
11
|
+
include DisplayHelper
|
|
12
|
+
include IconHelper
|
|
13
|
+
include MethodOrProcHelper
|
|
14
|
+
include SidebarHelper
|
|
15
|
+
include FormHelper
|
|
16
|
+
include TitleHelper
|
|
17
|
+
include ViewFactoryHelper
|
|
18
|
+
include FlashHelper
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
class ActionItems < ActiveAdmin::Component
|
|
5
|
+
|
|
6
|
+
def build(action_items)
|
|
7
|
+
action_items.each do |action_item|
|
|
8
|
+
span :class => "action_item" do
|
|
9
|
+
instance_eval(&action_item.block)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'active_admin/views/components/popover'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
module Views
|
|
5
|
+
# Build an ActionListPopover
|
|
6
|
+
class ActionListPopover < ActiveAdmin::Views::Popover
|
|
7
|
+
builder_method :action_list_popover
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def build(*args, &block)
|
|
11
|
+
@contents = ul :class => "popover_contents"
|
|
12
|
+
|
|
13
|
+
options = args.extract_options!
|
|
14
|
+
|
|
15
|
+
super(options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def action(title, url, *args)
|
|
19
|
+
options = args.extract_options!
|
|
20
|
+
within @contents do
|
|
21
|
+
li do
|
|
22
|
+
text_node link_to( title, url, options )
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
class AttributesTable < ActiveAdmin::Component
|
|
5
|
+
builder_method :attributes_table_for
|
|
6
|
+
|
|
7
|
+
def build(record_or_collection, *attrs)
|
|
8
|
+
@collection = Array(record_or_collection)
|
|
9
|
+
@resource_class = @collection.first.class
|
|
10
|
+
options = { }
|
|
11
|
+
options[:for] = @collection.first if single_record?
|
|
12
|
+
super(options)
|
|
13
|
+
@table = table
|
|
14
|
+
build_colgroups
|
|
15
|
+
rows(*attrs)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def rows(*attrs)
|
|
19
|
+
attrs.each {|attr| row(attr) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def row(*args, &block)
|
|
23
|
+
title = args[0]
|
|
24
|
+
options = args.extract_options!
|
|
25
|
+
classes = [:row]
|
|
26
|
+
if options[:class]
|
|
27
|
+
classes << options[:class]
|
|
28
|
+
elsif title.present?
|
|
29
|
+
classes << "row-#{title.to_s.parameterize('_')}"
|
|
30
|
+
end
|
|
31
|
+
options[:class] = classes.join(' ')
|
|
32
|
+
|
|
33
|
+
@table << tr(options) do
|
|
34
|
+
th do
|
|
35
|
+
header_content_for(title)
|
|
36
|
+
end
|
|
37
|
+
@collection.each do |record|
|
|
38
|
+
td do
|
|
39
|
+
content_for(record, block || title)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
protected
|
|
46
|
+
|
|
47
|
+
def default_id_for_prefix
|
|
48
|
+
'attributes_table'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Build Colgroups
|
|
52
|
+
#
|
|
53
|
+
# Colgroups are only necessary for a collection of records; not
|
|
54
|
+
# a single record.
|
|
55
|
+
def build_colgroups
|
|
56
|
+
return if single_record?
|
|
57
|
+
reset_cycle(self.class.to_s)
|
|
58
|
+
within @table do
|
|
59
|
+
col # column for row headers
|
|
60
|
+
@collection.each do |record|
|
|
61
|
+
classes = Arbre::HTML::ClassList.new
|
|
62
|
+
classes << cycle(:even, :odd, :name => self.class.to_s)
|
|
63
|
+
classes << dom_class_name_for(record)
|
|
64
|
+
col(:id => dom_id_for(record), :class => classes)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def header_content_for(attr)
|
|
70
|
+
if @resource_class.respond_to?(:human_attribute_name)
|
|
71
|
+
@resource_class.human_attribute_name(attr, :default => attr.to_s.titleize)
|
|
72
|
+
else
|
|
73
|
+
attr.to_s.titleize
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def empty_value
|
|
78
|
+
span I18n.t('active_admin.empty'), :class => "empty"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def content_for(record, attr)
|
|
82
|
+
previous = current_arbre_element.to_s
|
|
83
|
+
value = pretty_format find_attr_value(record, attr)
|
|
84
|
+
value.blank? && previous == current_arbre_element.to_s ? empty_value : value
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def find_attr_value(record, attr)
|
|
88
|
+
if attr.is_a?(Proc)
|
|
89
|
+
attr.call(record)
|
|
90
|
+
elsif attr.to_s[/\A(.+)_id\z/] && record.respond_to?($1.to_sym)
|
|
91
|
+
record.send($1.to_sym)
|
|
92
|
+
else
|
|
93
|
+
record.send(attr.to_sym)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def single_record?
|
|
98
|
+
@single_record ||= @collection.size == 1
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
# Build a Blank Slate
|
|
4
|
+
class BlankSlate < ActiveAdmin::Component
|
|
5
|
+
builder_method :blank_slate
|
|
6
|
+
|
|
7
|
+
def default_class_name
|
|
8
|
+
'blank_slate_container'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def build(content)
|
|
12
|
+
super(span(content.html_safe, :class => "blank_slate"))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# = Columns Component
|
|
5
|
+
#
|
|
6
|
+
# The Columns component allows you draw content into scalable columns. All
|
|
7
|
+
# you need to do is define the number of columns and the component will
|
|
8
|
+
# take care of the rest.
|
|
9
|
+
#
|
|
10
|
+
# == Simple Columns
|
|
11
|
+
#
|
|
12
|
+
# To display columns, use the #columns method. Within the block, call the
|
|
13
|
+
# #column method to create a new column.
|
|
14
|
+
#
|
|
15
|
+
# To createa a two column layout:
|
|
16
|
+
#
|
|
17
|
+
# colums do
|
|
18
|
+
# column do
|
|
19
|
+
# span "Column # 1
|
|
20
|
+
# end
|
|
21
|
+
# column do
|
|
22
|
+
# span "Column # 2
|
|
23
|
+
# end
|
|
24
|
+
# end
|
|
25
|
+
#
|
|
26
|
+
#
|
|
27
|
+
# == Multiple Span Columns
|
|
28
|
+
#
|
|
29
|
+
# To make a column span multiple, pass the :span option to the column method:
|
|
30
|
+
#
|
|
31
|
+
# colums do
|
|
32
|
+
# column :span => 2 do
|
|
33
|
+
# span "Column # 1
|
|
34
|
+
# end
|
|
35
|
+
# column do
|
|
36
|
+
# span "Column # 2
|
|
37
|
+
# end
|
|
38
|
+
# end
|
|
39
|
+
#
|
|
40
|
+
# By default, each column spans 1 column. So the above layout would have 2 columns,
|
|
41
|
+
# the first being 2 time bigger than the second.
|
|
42
|
+
#
|
|
43
|
+
#
|
|
44
|
+
# == Max and Mix Column Sizes
|
|
45
|
+
#
|
|
46
|
+
# Active Admin is a fluid width layout, which means that columns are all defined
|
|
47
|
+
# using percentages. Sometimes this can cause issues if you don't want a column
|
|
48
|
+
# to shrink or expand past a certain point.
|
|
49
|
+
#
|
|
50
|
+
# To overcome this, columns include a :max_width and :min_width option.
|
|
51
|
+
#
|
|
52
|
+
# colums do
|
|
53
|
+
# column :max_width => "200px", :min_width => "100px" do
|
|
54
|
+
# span "Column # 1
|
|
55
|
+
# end
|
|
56
|
+
# column do
|
|
57
|
+
# span "Column # 2
|
|
58
|
+
# end
|
|
59
|
+
# end
|
|
60
|
+
#
|
|
61
|
+
# Now the first column will not grow bigger than 200px and will not shrink smaller
|
|
62
|
+
# than 100px.
|
|
63
|
+
class Columns < ActiveAdmin::Component
|
|
64
|
+
builder_method :columns
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# For documentation, please take a look at Column#build
|
|
68
|
+
def column(*args, &block)
|
|
69
|
+
insert_tag Column, *args, &block
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Override add child to set widths
|
|
73
|
+
def add_child(*)
|
|
74
|
+
super
|
|
75
|
+
calculate_columns!
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
protected
|
|
79
|
+
|
|
80
|
+
# Override the closing tag to include a clear
|
|
81
|
+
def closing_tag
|
|
82
|
+
"<div style=\"clear:both;\"></div>" + super
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def margin_size
|
|
86
|
+
2
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Calculate our columns sizes and margins
|
|
90
|
+
def calculate_columns!
|
|
91
|
+
span_count = columns_span_count
|
|
92
|
+
columns_count = children.size
|
|
93
|
+
|
|
94
|
+
all_margins_width = margin_size * (span_count - 1)
|
|
95
|
+
column_width = (100.00 - all_margins_width) / span_count
|
|
96
|
+
|
|
97
|
+
children.each_with_index do |col, i|
|
|
98
|
+
is_last_column = i == (columns_count - 1)
|
|
99
|
+
col.set_column_styles(column_width, margin_size, is_last_column)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def columns_span_count
|
|
104
|
+
count = 0
|
|
105
|
+
children.each {|column| count += column.span_size }
|
|
106
|
+
|
|
107
|
+
count
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
class Column < ActiveAdmin::Component
|
|
113
|
+
|
|
114
|
+
attr_accessor :span_size, :max_width, :min_width
|
|
115
|
+
|
|
116
|
+
# @param [Hash] options An options hash for the column
|
|
117
|
+
#
|
|
118
|
+
# @options options [Integer] :span The columns this column should span
|
|
119
|
+
def build(options = {})
|
|
120
|
+
options = options.dup
|
|
121
|
+
@span_size = options.delete(:span) || 1
|
|
122
|
+
@max_width = options.delete(:max_width)
|
|
123
|
+
@min_width = options.delete(:min_width)
|
|
124
|
+
|
|
125
|
+
super(options)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def set_column_styles(column_width, margin_width, is_last_column = false)
|
|
129
|
+
column_with_span_width = (span_size * column_width) + ((span_size - 1) * margin_width)
|
|
130
|
+
|
|
131
|
+
styles = []
|
|
132
|
+
|
|
133
|
+
styles << "width: #{column_with_span_width}%;"
|
|
134
|
+
|
|
135
|
+
if max_width
|
|
136
|
+
styles << "max-width: #{max_width};"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
if min_width
|
|
140
|
+
styles << "min-width: #{min_width};"
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
styles << "margin-right: #{margin_width}%;" unless is_last_column
|
|
144
|
+
|
|
145
|
+
set_attribute :style, styles.join(" ")
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'active_admin/views/components/popover'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
module Views
|
|
5
|
+
|
|
6
|
+
# Action List - A button with a drop down menu of links
|
|
7
|
+
#
|
|
8
|
+
# Creating a new action list:
|
|
9
|
+
#
|
|
10
|
+
# dropdown_menu "Administration" do
|
|
11
|
+
# item "Edit Details", edit_details_path
|
|
12
|
+
# item "Edit My Account", edit_my_acccount_path
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
# This will create a button with the label "Administration" and
|
|
16
|
+
# a drop down once clicked with 2 options.
|
|
17
|
+
#
|
|
18
|
+
class DropdownMenu < ActiveAdmin::Component
|
|
19
|
+
builder_method :dropdown_menu
|
|
20
|
+
|
|
21
|
+
# Build a new action list
|
|
22
|
+
#
|
|
23
|
+
# @param [String] name The name to display in the button
|
|
24
|
+
#
|
|
25
|
+
# @param [Hash] options A set of options that get passed along to
|
|
26
|
+
# to the parent dom element.
|
|
27
|
+
def build(name, options = {})
|
|
28
|
+
options = options.dup
|
|
29
|
+
|
|
30
|
+
# Easily set options for the button or menu
|
|
31
|
+
button_options = options.delete(:button) || {}
|
|
32
|
+
menu_options = options.delete(:menu) || {}
|
|
33
|
+
|
|
34
|
+
@button = build_button(name, button_options)
|
|
35
|
+
@menu = build_menu(menu_options)
|
|
36
|
+
|
|
37
|
+
super(options)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def item(*args)
|
|
41
|
+
within @menu do
|
|
42
|
+
li link_to(*args)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def build_button(name, button_options)
|
|
49
|
+
button_options[:class] ||= ""
|
|
50
|
+
button_options[:class] << " dropdown_menu_button"
|
|
51
|
+
|
|
52
|
+
button_options[:href] = "#"
|
|
53
|
+
|
|
54
|
+
a name, button_options
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def build_menu(options)
|
|
58
|
+
options[:class] ||= ""
|
|
59
|
+
options[:class] << " dropdown_menu_list"
|
|
60
|
+
|
|
61
|
+
menu_list = nil
|
|
62
|
+
|
|
63
|
+
div :class => "dropdown_menu_list_wrapper", :style => "display:none;" do
|
|
64
|
+
menu_list = ul(options)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
menu_list
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require 'active_admin/helpers/collection'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
module Views
|
|
5
|
+
|
|
6
|
+
# Renders a collection of index views available to the resource
|
|
7
|
+
# as a list with a separator
|
|
8
|
+
class IndexList < ActiveAdmin::Component
|
|
9
|
+
builder_method :index_list_renderer
|
|
10
|
+
|
|
11
|
+
include ::ActiveAdmin::Helpers::Collection
|
|
12
|
+
|
|
13
|
+
def default_class_name
|
|
14
|
+
"indexes table_tools_segmented_control"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def tag_name
|
|
18
|
+
'ul'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Builds the links for presenting different index views to the user
|
|
22
|
+
#
|
|
23
|
+
# @param [Array] index_classes The class constants that represent index page presenters
|
|
24
|
+
def build(index_classes)
|
|
25
|
+
unless current_filter_search_empty?
|
|
26
|
+
index_classes.each do |index_class|
|
|
27
|
+
build_index_list(index_class)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
protected
|
|
33
|
+
|
|
34
|
+
# Builds the individual link and HTML classes for each index page presenter
|
|
35
|
+
#
|
|
36
|
+
# @param [Class] index_class The class on which to build the link and html classes
|
|
37
|
+
def build_index_list(index_class)
|
|
38
|
+
li :class => classes_for_index(index_class) do
|
|
39
|
+
a :href => url_for(params.merge(:as => index_class.index_name.to_sym)), :class => "table_tools_button" do
|
|
40
|
+
name = index_class.index_name
|
|
41
|
+
I18n.t("active_admin.index_list.#{name}", :default => name.to_s.titleize)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def classes_for_index(index_class)
|
|
47
|
+
classes = ["index"]
|
|
48
|
+
classes << "selected" if current_index?(index_class)
|
|
49
|
+
classes.join(" ")
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def current_index?(index_class)
|
|
53
|
+
if params[:as]
|
|
54
|
+
params[:as] == index_class.index_name
|
|
55
|
+
else
|
|
56
|
+
active_admin_config.default_index_class == index_class
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def current_filter_search_empty?
|
|
61
|
+
params.include?(:q) && collection_is_empty?
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
|