activeadministration 0.0.1
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 +47 -0
- data/.travis.yml +19 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +1074 -0
- data/CONTRIBUTING.md +139 -0
- data/Gemfile +52 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.md +8 -0
- data/Rakefile +33 -0
- data/activeadministration.gemspec +34 -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 +30 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +36 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +85 -0
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +75 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +36 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +24 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +42 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +329 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +156 -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 +127 -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/_modal_dialog.scss +31 -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 +16 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +111 -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 +20 -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 +34 -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 +46 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +14 -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/registrations/new.html.erb +22 -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/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +23 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -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 +102 -0
- data/config/locales/bs.yml +121 -0
- data/config/locales/ca.yml +102 -0
- data/config/locales/cs.yml +106 -0
- data/config/locales/da.yml +103 -0
- data/config/locales/de-CH.yml +118 -0
- data/config/locales/de.yml +143 -0
- data/config/locales/el.yml +111 -0
- data/config/locales/en-GB.yml +95 -0
- data/config/locales/en.yml +117 -0
- data/config/locales/es.yml +127 -0
- data/config/locales/es_MX.yml +110 -0
- data/config/locales/fi.yml +110 -0
- data/config/locales/fr.yml +109 -0
- data/config/locales/he.yml +92 -0
- data/config/locales/hr.yml +121 -0
- data/config/locales/hu.yml +96 -0
- data/config/locales/it.yml +114 -0
- data/config/locales/ja.yml +114 -0
- data/config/locales/ko.yml +85 -0
- data/config/locales/lt.yml +118 -0
- data/config/locales/lv.yml +90 -0
- data/config/locales/nl.yml +94 -0
- data/config/locales/no-NB.yml +111 -0
- data/config/locales/pl.yml +100 -0
- data/config/locales/pt-BR.yml +117 -0
- data/config/locales/pt-PT.yml +90 -0
- data/config/locales/ro.yml +94 -0
- data/config/locales/ru.yml +121 -0
- data/config/locales/sv-SE.yml +90 -0
- data/config/locales/tr.yml +94 -0
- data/config/locales/uk.yml +121 -0
- data/config/locales/vi.yml +91 -0
- data/config/locales/zh-CN.yml +112 -0
- data/config/locales/zh-TW.yml +94 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +84 -0
- data/docs/1-general-configuration.md +138 -0
- data/docs/10-custom-pages.md +84 -0
- data/docs/11-decorators.md +50 -0
- data/docs/12-arbre-components.md +150 -0
- data/docs/13-authorization-adapter.md +239 -0
- data/docs/2-resource-customization.md +359 -0
- data/docs/3-index-pages.md +245 -0
- data/docs/3-index-pages/create-an-index.md +31 -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 +163 -0
- data/docs/4-csv-format.md +39 -0
- data/docs/5-forms.md +118 -0
- data/docs/6-show-pages.md +77 -0
- data/docs/7-sidebars.md +63 -0
- data/docs/8-custom-actions.md +159 -0
- data/docs/9-batch-actions.md +233 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +66 -0
- data/features/breadcrumb.feature +75 -0
- data/features/comments/commenting.feature +159 -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 +114 -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 +43 -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 +208 -0
- data/features/index/index_blank_slate.feature +83 -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 +41 -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 +106 -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 +58 -0
- data/features/sidebar_sections.feature +210 -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 +18 -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 +12 -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 +41 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +72 -0
- data/features/support/env.rb +119 -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.rb +135 -0
- data/lib/active_admin/abstract_view_factory.rb +86 -0
- data/lib/active_admin/application.rb +250 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/base_controller/authorization.rb +151 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +29 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +154 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -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 +57 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/callbacks.rb +84 -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 +70 -0
- data/lib/active_admin/dependencies.rb +38 -0
- data/lib/active_admin/deprecation.rb +35 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +165 -0
- data/lib/active_admin/engine.rb +7 -0
- data/lib/active_admin/error.rb +22 -0
- data/lib/active_admin/event.rb +33 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +87 -0
- data/lib/active_admin/filters/formtastic_addons.rb +73 -0
- data/lib/active_admin/filters/resource_extension.rb +135 -0
- data/lib/active_admin/form_builder.rb +185 -0
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/i18n.rb +7 -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 +106 -0
- data/lib/active_admin/iconic.rb +54 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/inputs.rb +15 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filter_base.rb +40 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +48 -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 +53 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/menu.rb +107 -0
- data/lib/active_admin/menu_collection.rb +96 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +231 -0
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +3 -0
- data/lib/active_admin/orm/active_record/comments.rb +84 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +49 -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.rb +2 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -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/pundit_adapter.rb +42 -0
- data/lib/active_admin/resource.rb +156 -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 +28 -0
- data/lib/active_admin/resource_collection.rb +70 -0
- data/lib/active_admin/resource_controller.rb +50 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +284 -0
- data/lib/active_admin/resource_controller/decorators.rb +100 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_dsl.rb +171 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +57 -0
- data/lib/active_admin/sidebar_section.rb +45 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +27 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +37 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +27 -0
- data/lib/active_admin/view_helpers/display_helper.rb +64 -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 +21 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +105 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +157 -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 +126 -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 +29 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +67 -0
- data/lib/active_admin/views/components/table_for.rb +212 -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 +277 -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 +163 -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 +55 -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 +66 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +243 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +30 -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 +17 -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 +18 -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 +182 -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 +117 -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/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +45 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +11 -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 +140 -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 +34 -0
- data/spec/unit/batch_actions/resource_spec.rb +92 -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 +144 -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 +37 -0
- data/spec/unit/csv_builder_spec.rb +134 -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 +418 -0
- data/spec/unit/filters/resource_spec.rb +121 -0
- data/spec/unit/form_builder_spec.rb +576 -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/order_clause_spec.rb +57 -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 +63 -0
- data/spec/unit/pundit_adapter_spec.rb +36 -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 +50 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +158 -0
- data/spec/unit/resource_controller/data_access_spec.rb +73 -0
- data/spec/unit/resource_controller/decorators_spec.rb +86 -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 +263 -0
- data/spec/unit/routing_spec.rb +172 -0
- data/spec/unit/scope_spec.rb +114 -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 +180 -0
- data/spec/unit/view_helpers/display_name_spec.rb +68 -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 +42 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +97 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +29 -0
- data/spec/unit/views/components/attributes_table_spec.rb +259 -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 +172 -0
- data/spec/unit/views/components/index_list_spec.rb +32 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +229 -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 +47 -0
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +102 -0
- data/spec/unit/views/components/table_for_spec.rb +242 -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 +741 -0
|
@@ -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,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,37 @@
|
|
|
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 url = auto_url_for(resource)
|
|
17
|
+
content = link_to(content, url)
|
|
18
|
+
end
|
|
19
|
+
content
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Like `auto_link`, except that it only returns a URL instead of a full <a> tag
|
|
23
|
+
def auto_url_for(resource)
|
|
24
|
+
if config = active_admin_resource_for(resource.class)
|
|
25
|
+
url_for config.route_instance_path resource
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Returns the ActiveAdmin::Resource instance for a class
|
|
30
|
+
def active_admin_resource_for(klass)
|
|
31
|
+
return nil unless respond_to?(:active_admin_namespace)
|
|
32
|
+
active_admin_namespace.resource_for(klass)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
parent = active_admin_config.belongs_to_config.try :target
|
|
16
|
+
config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
|
|
17
|
+
name = display_name config.find_resource part
|
|
18
|
+
end
|
|
19
|
+
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
|
20
|
+
|
|
21
|
+
link_to name, '/' + parts[0..index].join('/')
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module DisplayHelper
|
|
4
|
+
|
|
5
|
+
DISPLAY_NAME_FALLBACK = ->{
|
|
6
|
+
name, klass = "", self.class
|
|
7
|
+
name << klass.model_name.human if klass.respond_to? :model_name
|
|
8
|
+
name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
|
|
9
|
+
name.present? ? name : to_s
|
|
10
|
+
}
|
|
11
|
+
def DISPLAY_NAME_FALLBACK.inspect
|
|
12
|
+
'DISPLAY_NAME_FALLBACK'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Attempts to call any known display name methods on the resource.
|
|
16
|
+
# See the setting in `application.rb` for the list of methods and their priority.
|
|
17
|
+
def display_name(resource)
|
|
18
|
+
render_in_context resource, display_name_method_for(resource) if resource
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Looks up and caches the first available display name method.
|
|
22
|
+
# To prevent conflicts, we exclude any methods that happen to be associations.
|
|
23
|
+
# If no methods are available and we're about to use the Kernel's `to_s`, provide our own.
|
|
24
|
+
def display_name_method_for(resource)
|
|
25
|
+
@@display_name_methods_cache ||= {}
|
|
26
|
+
@@display_name_methods_cache[resource.class] ||= begin
|
|
27
|
+
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
|
28
|
+
method = methods.detect{ |method| resource.respond_to? method }
|
|
29
|
+
|
|
30
|
+
if method != :to_s || resource.method(method).source_location
|
|
31
|
+
method
|
|
32
|
+
else
|
|
33
|
+
DISPLAY_NAME_FALLBACK
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def association_methods_for(resource)
|
|
39
|
+
return [] unless resource.class.respond_to? :reflect_on_all_associations
|
|
40
|
+
resource.class.reflect_on_all_associations.map(&:name)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Return a pretty string for any object
|
|
44
|
+
# Date Time are formatted via #localize with format: :long
|
|
45
|
+
# ActiveRecord and Mongoid objects are formatted via #auto_link
|
|
46
|
+
# We attempt to #display_name of any other objects
|
|
47
|
+
def pretty_format(object)
|
|
48
|
+
case object
|
|
49
|
+
when String, Numeric, Arbre::Element
|
|
50
|
+
object.to_s
|
|
51
|
+
when Date, Time
|
|
52
|
+
localize(object, format: :long)
|
|
53
|
+
when ->(obj){defined?(::ActiveRecord) && obj.is_a?(ActiveRecord::Base)}
|
|
54
|
+
auto_link(object)
|
|
55
|
+
when ->(obj){defined?(::Mongoid) && obj.class.included_modules.include?(Mongoid::Document)}
|
|
56
|
+
auto_link(object)
|
|
57
|
+
else
|
|
58
|
+
display_name(object)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
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,21 @@
|
|
|
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
|
+
semantic_form_for resource, options, &block
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def hidden_field_tags_for(params, options={})
|
|
13
|
+
fields_for_params(params, options).map do |kv|
|
|
14
|
+
k, v = kv.first
|
|
15
|
+
hidden_field_tag k, v, id: sanitize_to_id("hidden_active_admin_#{k}")
|
|
16
|
+
end.join("\n").html_safe
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -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 String or 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
|