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,80 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# # Index as a Grid
|
|
5
|
+
#
|
|
6
|
+
# Sometimes you want to display the index screen for a set of resources as a grid
|
|
7
|
+
# (possibly a grid of thumbnail images). To do so, use the :grid option for the
|
|
8
|
+
# index block.
|
|
9
|
+
#
|
|
10
|
+
# ```ruby
|
|
11
|
+
# index as: :grid do |product|
|
|
12
|
+
# link_to image_tag(product.image_path), admin_product_path(product)
|
|
13
|
+
# end
|
|
14
|
+
# ```
|
|
15
|
+
#
|
|
16
|
+
# The block is rendered within a cell in the grid once for each resource in the
|
|
17
|
+
# collection. The resource is passed into the block for you to use in the view.
|
|
18
|
+
#
|
|
19
|
+
# You can customize the number of columns that are rendered using the columns
|
|
20
|
+
# option:
|
|
21
|
+
#
|
|
22
|
+
# ```ruby
|
|
23
|
+
# index as: :grid, columns: 5 do |product|
|
|
24
|
+
# link_to image_tag(product.image_path), admin_product_path(product)
|
|
25
|
+
# end
|
|
26
|
+
# ```
|
|
27
|
+
#
|
|
28
|
+
class IndexAsGrid < ActiveAdmin::Component
|
|
29
|
+
|
|
30
|
+
def build(page_presenter, collection)
|
|
31
|
+
@page_presenter = page_presenter
|
|
32
|
+
@collection = collection
|
|
33
|
+
add_class "index"
|
|
34
|
+
build_table
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def number_of_columns
|
|
38
|
+
@page_presenter[:columns] || default_number_of_columns
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.index_name
|
|
42
|
+
"grid"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
protected
|
|
46
|
+
|
|
47
|
+
def build_table
|
|
48
|
+
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
|
49
|
+
table class: "index_grid" do
|
|
50
|
+
collection.in_groups_of(number_of_columns).each do |group|
|
|
51
|
+
build_row(group)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def build_row(group)
|
|
57
|
+
tr do
|
|
58
|
+
group.each do |item|
|
|
59
|
+
item ? build_item(item) : build_empty_cell
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def build_item(item)
|
|
65
|
+
td for: item do
|
|
66
|
+
instance_exec(item, &@page_presenter.block)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def build_empty_cell
|
|
71
|
+
td ' '.html_safe
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def default_number_of_columns
|
|
75
|
+
3
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# # Index as a Table
|
|
5
|
+
#
|
|
6
|
+
# By default, the index page is a table with each of the models content columns and links to
|
|
7
|
+
# show, edit and delete the object. There are many ways to customize what gets
|
|
8
|
+
# displayed.
|
|
9
|
+
#
|
|
10
|
+
# ## Defining Columns
|
|
11
|
+
#
|
|
12
|
+
# To display an attribute or a method on a resource, simply pass a symbol into the
|
|
13
|
+
# column method:
|
|
14
|
+
#
|
|
15
|
+
# ```ruby
|
|
16
|
+
# index do
|
|
17
|
+
# selectable_column
|
|
18
|
+
# column :title
|
|
19
|
+
# end
|
|
20
|
+
# ```
|
|
21
|
+
#
|
|
22
|
+
# For association columns we make an educated guess on what to display by
|
|
23
|
+
# calling the following methods in the following order:
|
|
24
|
+
#
|
|
25
|
+
# ```ruby
|
|
26
|
+
# :display_name, :full_name, :name, :username, :login, :title, :email, :to_s
|
|
27
|
+
# ```
|
|
28
|
+
#
|
|
29
|
+
# This can be customized in `config/initializers/active_admin.rb`.
|
|
30
|
+
#
|
|
31
|
+
# If the default title does not work for you, pass it as the first argument:
|
|
32
|
+
#
|
|
33
|
+
# ```ruby
|
|
34
|
+
# index do
|
|
35
|
+
# selectable_column
|
|
36
|
+
# column "My Custom Title", :title
|
|
37
|
+
# end
|
|
38
|
+
# ```
|
|
39
|
+
#
|
|
40
|
+
# Sometimes that just isn't enough and you need to write some view-specific code.
|
|
41
|
+
# For example, say we wanted a "Title" column that links to the posts admin screen.
|
|
42
|
+
#
|
|
43
|
+
# `column` accepts a block that will be rendered for each of the objects in the collection.
|
|
44
|
+
# The block is called once for each resource, which is passed as an argument to the block.
|
|
45
|
+
#
|
|
46
|
+
# ```ruby
|
|
47
|
+
# index do
|
|
48
|
+
# selectable_column
|
|
49
|
+
# column "Title" do |post|
|
|
50
|
+
# link_to post.title, admin_post_path(post)
|
|
51
|
+
# end
|
|
52
|
+
# end
|
|
53
|
+
# ```
|
|
54
|
+
#
|
|
55
|
+
# To setup links to View, Edit and Delete a resource, use the `actions` method:
|
|
56
|
+
#
|
|
57
|
+
# ```ruby
|
|
58
|
+
# index do
|
|
59
|
+
# selectable_column
|
|
60
|
+
# column :title
|
|
61
|
+
# actions
|
|
62
|
+
# end
|
|
63
|
+
# ```
|
|
64
|
+
#
|
|
65
|
+
# You can also append custom links to the default links:
|
|
66
|
+
#
|
|
67
|
+
# ```ruby
|
|
68
|
+
# index do
|
|
69
|
+
# selectable_column
|
|
70
|
+
# column :title
|
|
71
|
+
# actions do |post|
|
|
72
|
+
# link_to "Preview", admin_preview_post_path(post), class: "member_link"
|
|
73
|
+
# end
|
|
74
|
+
# end
|
|
75
|
+
# ```
|
|
76
|
+
#
|
|
77
|
+
# Or forego the default links entirely:
|
|
78
|
+
#
|
|
79
|
+
# ```ruby
|
|
80
|
+
# index do
|
|
81
|
+
# column :title
|
|
82
|
+
# actions defaults: false do |post|
|
|
83
|
+
# link_to "View", admin_post_path(post)
|
|
84
|
+
# end
|
|
85
|
+
# end
|
|
86
|
+
# ```
|
|
87
|
+
#
|
|
88
|
+
# ## Sorting
|
|
89
|
+
#
|
|
90
|
+
# When a column is generated from an Active Record attribute, the table is
|
|
91
|
+
# sortable by default. If you are creating a custom column, you may need to give
|
|
92
|
+
# Active Admin a hint for how to sort the table.
|
|
93
|
+
#
|
|
94
|
+
# If a column is defined using a block, you must pass the key to turn on sorting. The key
|
|
95
|
+
# is the attribute which gets used to sort objects using Active Record.
|
|
96
|
+
#
|
|
97
|
+
# By default, this is the column on the resource's table that the attribute corresponds to.
|
|
98
|
+
# Otherwise, any attribute that the resource collection responds to can be used.
|
|
99
|
+
#
|
|
100
|
+
# ```ruby
|
|
101
|
+
# index do
|
|
102
|
+
# column :title, sortable: :title do |post|
|
|
103
|
+
# link_to post.title, admin_post_path(post)
|
|
104
|
+
# end
|
|
105
|
+
# end
|
|
106
|
+
# ```
|
|
107
|
+
#
|
|
108
|
+
# You can turn off sorting on any column by passing false:
|
|
109
|
+
#
|
|
110
|
+
# ```ruby
|
|
111
|
+
# index do
|
|
112
|
+
# column :title, sortable: false
|
|
113
|
+
# end
|
|
114
|
+
# ```
|
|
115
|
+
#
|
|
116
|
+
# It's also possible to sort by PostgreSQL's hstore column key. You should set `sortable`
|
|
117
|
+
# option to a `column->'key'` value:
|
|
118
|
+
#
|
|
119
|
+
# ```ruby
|
|
120
|
+
# index do
|
|
121
|
+
# column :keywords, sortable: "meta->'keywords'"
|
|
122
|
+
# end
|
|
123
|
+
# ```
|
|
124
|
+
#
|
|
125
|
+
# ## Associated Sorting
|
|
126
|
+
#
|
|
127
|
+
# You're normally able to sort columns alphabetically, but by default you
|
|
128
|
+
# can't sort by associated objects. Though with a few simple changes, you can.
|
|
129
|
+
#
|
|
130
|
+
# Assuming you're on the Books index page, and Book has_one Publisher:
|
|
131
|
+
#
|
|
132
|
+
# ```ruby
|
|
133
|
+
# controller do
|
|
134
|
+
# def scoped_collection
|
|
135
|
+
# super.includes :publisher # prevents N+1 queries to your database
|
|
136
|
+
# end
|
|
137
|
+
# end
|
|
138
|
+
# ```
|
|
139
|
+
#
|
|
140
|
+
# Then it's simple to sort by any Publisher attribute from within the index table:
|
|
141
|
+
#
|
|
142
|
+
# ```ruby
|
|
143
|
+
# index do
|
|
144
|
+
# column :publisher, sortable: 'publishers.name'
|
|
145
|
+
# end
|
|
146
|
+
# ```
|
|
147
|
+
#
|
|
148
|
+
# ## Showing and Hiding Columns
|
|
149
|
+
#
|
|
150
|
+
# The entire index block is rendered within the context of the view, so you can
|
|
151
|
+
# easily do things that show or hide columns based on the current context.
|
|
152
|
+
#
|
|
153
|
+
# For example, if you were using CanCan:
|
|
154
|
+
#
|
|
155
|
+
# ```ruby
|
|
156
|
+
# index do
|
|
157
|
+
# column :title, sortable: false
|
|
158
|
+
# column :secret_data if can? :manage, Post
|
|
159
|
+
# end
|
|
160
|
+
# ```
|
|
161
|
+
#
|
|
162
|
+
class IndexAsTable < ActiveAdmin::Component
|
|
163
|
+
|
|
164
|
+
def build(page_presenter, collection)
|
|
165
|
+
table_options = {
|
|
166
|
+
id: "index_table_#{active_admin_config.resource_name.plural}",
|
|
167
|
+
sortable: true,
|
|
168
|
+
class: "index_table index",
|
|
169
|
+
i18n: active_admin_config.resource_class,
|
|
170
|
+
paginator: page_presenter[:paginator] != false
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
table_for collection, table_options do |t|
|
|
174
|
+
table_config_block = page_presenter.block || default_table
|
|
175
|
+
instance_exec(t, &table_config_block)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def table_for(*args, &block)
|
|
180
|
+
insert_tag IndexTableFor, *args, &block
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def default_table
|
|
184
|
+
proc do
|
|
185
|
+
selectable_column
|
|
186
|
+
id_column
|
|
187
|
+
resource_class.content_columns.each do |col|
|
|
188
|
+
column col.name.to_sym
|
|
189
|
+
end
|
|
190
|
+
default_actions
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def self.index_name
|
|
195
|
+
"table"
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
#
|
|
199
|
+
# Extend the default ActiveAdmin::Views::TableFor with some
|
|
200
|
+
# methods for quickly displaying items on the index page
|
|
201
|
+
#
|
|
202
|
+
class IndexTableFor < ::ActiveAdmin::Views::TableFor
|
|
203
|
+
|
|
204
|
+
# Display a column for checkbox
|
|
205
|
+
def selectable_column
|
|
206
|
+
return unless active_admin_config.batch_actions.any?
|
|
207
|
+
column resource_selection_toggle_cell, class: 'selectable' do |resource|
|
|
208
|
+
resource_selection_cell resource
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# Display a column for the id
|
|
213
|
+
def id_column
|
|
214
|
+
column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
|
|
215
|
+
if controller.action_methods.include?('show')
|
|
216
|
+
link_to resource.id, resource_path(resource), class: "resource_id_link"
|
|
217
|
+
else
|
|
218
|
+
resource.id
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Add links to perform actions.
|
|
224
|
+
#
|
|
225
|
+
# ```ruby
|
|
226
|
+
# # Add default links.
|
|
227
|
+
# actions
|
|
228
|
+
#
|
|
229
|
+
# # Append some actions onto the end of the default actions.
|
|
230
|
+
# actions do |admin_user|
|
|
231
|
+
# link_to 'Grant Admin', grant_admin_admin_user_path(admin_user)
|
|
232
|
+
# end
|
|
233
|
+
#
|
|
234
|
+
# # Custom actions without the defaults.
|
|
235
|
+
# actions defaults: false do |admin_user|
|
|
236
|
+
# link_to 'Grant Admin', grant_admin_admin_user_path(admin_user)
|
|
237
|
+
# end
|
|
238
|
+
# ```
|
|
239
|
+
#
|
|
240
|
+
def actions(options = {}, &block)
|
|
241
|
+
options = {
|
|
242
|
+
name: "",
|
|
243
|
+
defaults: true
|
|
244
|
+
}.merge(options)
|
|
245
|
+
column options[:name] do |resource|
|
|
246
|
+
text_node default_actions(resource) if options[:defaults]
|
|
247
|
+
text_node instance_exec(resource, &block) if block_given?
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def default_actions(*args)
|
|
252
|
+
links = proc do |resource|
|
|
253
|
+
links = ''.html_safe
|
|
254
|
+
if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
|
|
255
|
+
links << link_to(I18n.t('active_admin.view'), resource_path(resource), class: "member_link view_link")
|
|
256
|
+
end
|
|
257
|
+
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
|
258
|
+
links << link_to(I18n.t('active_admin.edit'), edit_resource_path(resource), class: "member_link edit_link")
|
|
259
|
+
end
|
|
260
|
+
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
|
261
|
+
links << link_to(I18n.t('active_admin.delete'), resource_path(resource), method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}, class: "member_link delete_link")
|
|
262
|
+
end
|
|
263
|
+
links
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
options = args.extract_options!
|
|
267
|
+
if options.present? || args.empty?
|
|
268
|
+
actions options
|
|
269
|
+
else
|
|
270
|
+
links.call(args.first)
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
end # IndexTableFor
|
|
274
|
+
|
|
275
|
+
end # IndexAsTable
|
|
276
|
+
end
|
|
277
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Base < Arbre::HTML::Document
|
|
5
|
+
|
|
6
|
+
def build(*args)
|
|
7
|
+
super
|
|
8
|
+
add_classes_to_body
|
|
9
|
+
build_active_admin_head
|
|
10
|
+
build_page
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def add_classes_to_body
|
|
16
|
+
@body.add_class(params[:action])
|
|
17
|
+
@body.add_class(params[:controller].gsub('/', '_'))
|
|
18
|
+
@body.add_class("active_admin")
|
|
19
|
+
@body.add_class("logged_in")
|
|
20
|
+
@body.add_class(active_admin_namespace.name.to_s + "_namespace")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def build_active_admin_head
|
|
24
|
+
within @head do
|
|
25
|
+
insert_tag Arbre::HTML::Title, [title, render_or_call_method_or_proc_on(self, active_admin_application.site_title)].join(" | ")
|
|
26
|
+
active_admin_application.stylesheets.each do |style, options|
|
|
27
|
+
text_node stylesheet_link_tag(style, options).html_safe
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
active_admin_application.javascripts.each do |path|
|
|
31
|
+
text_node(javascript_include_tag(path))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
if active_admin_application.favicon
|
|
35
|
+
text_node(favicon_link_tag(active_admin_application.favicon))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
text_node csrf_meta_tag
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def build_page
|
|
43
|
+
within @body do
|
|
44
|
+
div id: "wrapper" do
|
|
45
|
+
build_header
|
|
46
|
+
build_title_bar
|
|
47
|
+
build_page_content
|
|
48
|
+
build_footer
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def build_header
|
|
54
|
+
insert_tag view_factory.header, active_admin_namespace, current_menu
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def build_title_bar
|
|
58
|
+
insert_tag view_factory.title_bar, title, action_items_for_action
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def build_page_content
|
|
63
|
+
build_flash_messages
|
|
64
|
+
div id: "active_admin_content", class: (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
|
|
65
|
+
build_main_content_wrapper
|
|
66
|
+
build_sidebar unless skip_sidebar?
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def build_flash_messages
|
|
71
|
+
if active_admin_flash_messages.any?
|
|
72
|
+
div class: 'flashes' do
|
|
73
|
+
active_admin_flash_messages.each do |type, message|
|
|
74
|
+
div message, class: "flash flash_#{type}"
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def build_main_content_wrapper
|
|
81
|
+
div id: "main_content_wrapper" do
|
|
82
|
+
div id: "main_content" do
|
|
83
|
+
main_content
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def main_content
|
|
89
|
+
I18n.t('active_admin.main_content', model: self.class.name).html_safe
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def title
|
|
93
|
+
self.class.name
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Set's the page title for the layout to render
|
|
97
|
+
def set_page_title
|
|
98
|
+
set_ivar_on_view "@page_title", title
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Returns the sidebar sections to render for the current action
|
|
102
|
+
def sidebar_sections_for_action
|
|
103
|
+
if active_admin_config && active_admin_config.sidebar_sections?
|
|
104
|
+
active_admin_config.sidebar_sections_for(params[:action], self)
|
|
105
|
+
else
|
|
106
|
+
[]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def action_items_for_action
|
|
111
|
+
if active_admin_config && active_admin_config.action_items?
|
|
112
|
+
active_admin_config.action_items_for(params[:action], self)
|
|
113
|
+
else
|
|
114
|
+
[]
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Renders the sidebar
|
|
119
|
+
def build_sidebar
|
|
120
|
+
div id: "sidebar" do
|
|
121
|
+
sidebar_sections_for_action.collect do |section|
|
|
122
|
+
sidebar_section(section)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def skip_sidebar?
|
|
128
|
+
sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Renders the content for the footer
|
|
132
|
+
def build_footer
|
|
133
|
+
insert_tag view_factory.footer
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|