activeadmin 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CHANGELOG.md +546 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +217 -0
- data/LICENSE +20 -0
- data/README.md +110 -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/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +326 -0
- data/app/assets/stylesheets/active_admin/_header.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -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 +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.scss +287 -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 +41 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -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 +18 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +21 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -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.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 +25 -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 +39 -0
- data/config/locales/ar.yml +135 -0
- data/config/locales/bg.yml +119 -0
- data/config/locales/bs.yml +121 -0
- data/config/locales/ca.yml +106 -0
- data/config/locales/cs.yml +109 -0
- data/config/locales/da.yml +137 -0
- data/config/locales/de-CH.yml +101 -0
- data/config/locales/de.yml +144 -0
- data/config/locales/el.yml +126 -0
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +139 -0
- data/config/locales/en.yml +162 -0
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +96 -0
- data/config/locales/es.yml +162 -0
- data/config/locales/fa.yml +119 -0
- data/config/locales/fi.yml +112 -0
- data/config/locales/fr.yml +141 -0
- data/config/locales/he.yml +141 -0
- data/config/locales/hr.yml +123 -0
- data/config/locales/hu.yml +102 -0
- data/config/locales/id.yml +135 -0
- data/config/locales/it.yml +144 -0
- data/config/locales/ja.yml +141 -0
- data/config/locales/ko.yml +120 -0
- data/config/locales/lt.yml +142 -0
- data/config/locales/lv.yml +92 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +130 -0
- data/config/locales/nl.yml +144 -0
- data/config/locales/pl.yml +168 -0
- data/config/locales/pt-BR.yml +143 -0
- data/config/locales/pt-PT.yml +92 -0
- data/config/locales/ro.yml +96 -0
- data/config/locales/ru.yml +141 -0
- data/config/locales/sk.yml +109 -0
- data/config/locales/sv-SE.yml +135 -0
- data/config/locales/tr.yml +144 -0
- data/config/locales/uk.yml +138 -0
- data/config/locales/vi.yml +134 -0
- data/config/locales/zh-CN.yml +143 -0
- data/config/locales/zh-TW.yml +135 -0
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +118 -0
- data/docs/1-general-configuration.md +204 -0
- data/docs/10-custom-pages.md +150 -0
- data/docs/11-decorators.md +59 -0
- data/docs/12-arbre-components.md +214 -0
- data/docs/13-authorization-adapter.md +285 -0
- data/docs/14-gotchas.md +138 -0
- data/docs/2-resource-customization.md +466 -0
- data/docs/3-index-pages.md +328 -0
- data/docs/3-index-pages/custom-index.md +35 -0
- data/docs/3-index-pages/index-as-block.md +19 -0
- data/docs/3-index-pages/index-as-blog.md +69 -0
- data/docs/3-index-pages/index-as-grid.md +27 -0
- data/docs/3-index-pages/index-as-table.md +227 -0
- data/docs/4-csv-format.md +74 -0
- data/docs/5-forms.md +232 -0
- data/docs/6-show-pages.md +81 -0
- data/docs/7-sidebars.md +75 -0
- data/docs/8-custom-actions.md +177 -0
- data/docs/9-batch-actions.md +237 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +4 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/README.md +24 -0
- data/docs/_config.yml +2 -0
- data/docs/_includes/footer.html +8 -0
- data/docs/_includes/google-analytics.html +16 -0
- data/docs/_includes/head.html +7 -0
- data/docs/_includes/toc.html +98 -0
- data/docs/_includes/top-menu.html +17 -0
- data/docs/_layouts/default.html +21 -0
- data/docs/documentation.md +60 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +125 -0
- data/docs/stylesheets/main.css +1176 -0
- data/lib/active_admin.rb +134 -0
- data/lib/active_admin/abstract_view_factory.rb +47 -0
- data/lib/active_admin/application.rb +234 -0
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +129 -0
- data/lib/active_admin/base_controller.rb +81 -0
- data/lib/active_admin/base_controller/authorization.rb +127 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/batch_actions/controller.rb +40 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +155 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
- data/lib/active_admin/callbacks.rb +88 -0
- data/lib/active_admin/cancan_adapter.rb +36 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +13 -0
- data/lib/active_admin/csv_builder.rb +133 -0
- data/lib/active_admin/dependency.rb +100 -0
- data/lib/active_admin/deprecation.rb +10 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +160 -0
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +21 -0
- data/lib/active_admin/error.rb +64 -0
- data/lib/active_admin/filters.rb +11 -0
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +85 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/resource_extension.rb +155 -0
- data/lib/active_admin/form_builder.rb +182 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +19 -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/routes/url_helpers.rb +15 -0
- data/lib/active_admin/helpers/scope_chain.rb +24 -0
- data/lib/active_admin/inputs.rb +21 -0
- data/lib/active_admin/inputs/datepicker_input.rb +27 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +58 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/menu.rb +102 -0
- data/lib/active_admin/menu_collection.rb +91 -0
- data/lib/active_admin/menu_item.rb +69 -0
- data/lib/active_admin/namespace.rb +266 -0
- data/lib/active_admin/namespace_settings.rb +110 -0
- data/lib/active_admin/order_clause.rb +48 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/active_record/comments.rb +101 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +31 -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 +100 -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 +111 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +32 -0
- data/lib/active_admin/page_presenter.rb +33 -0
- data/lib/active_admin/pundit_adapter.rb +81 -0
- data/lib/active_admin/resource.rb +207 -0
- data/lib/active_admin/resource/action_items.rb +120 -0
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +50 -0
- data/lib/active_admin/resource/controllers.rb +19 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +67 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +139 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +52 -0
- data/lib/active_admin/resource/sidebars.rb +28 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller.rb +64 -0
- data/lib/active_admin/resource_controller/action_builder.rb +31 -0
- data/lib/active_admin/resource_controller/data_access.rb +322 -0
- data/lib/active_admin/resource_controller/decorators.rb +102 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +26 -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/streaming.rb +43 -0
- data/lib/active_admin/resource_dsl.rb +224 -0
- data/lib/active_admin/router.rb +114 -0
- data/lib/active_admin/scope.rb +64 -0
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +39 -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 +20 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +33 -0
- data/lib/active_admin/view_helpers/display_helper.rb +104 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +59 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
- data/lib/active_admin/view_helpers/form_helper.rb +20 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +100 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -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/active_admin_form.rb +155 -0
- data/lib/active_admin/views/components/attributes_table.rb +94 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +161 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
- data/lib/active_admin/views/components/index_list.rb +69 -0
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/paginated_collection.rb +159 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +72 -0
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +54 -0
- data/lib/active_admin/views/components/status_tag.rb +75 -0
- data/lib/active_admin/views/components/table_for.rb +209 -0
- data/lib/active_admin/views/components/tabs.rb +40 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
- data/lib/active_admin/views/footer.rb +30 -0
- data/lib/active_admin/views/header.rb +19 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +155 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +392 -0
- data/lib/active_admin/views/pages/base.rb +126 -0
- data/lib/active_admin/views/pages/form.rb +64 -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 +65 -0
- data/lib/active_admin/views/tabbed_navigation.rb +11 -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 +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
- data/lib/generators/active_admin/install/install_generator.rb +49 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +315 -0
- data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +32 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +44 -0
- data/lib/ransack_ext.rb +20 -0
- data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
- data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +616 -0
@@ -0,0 +1,328 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Customizing the Index Page
|
6
|
+
|
7
|
+
Filtering and listing resources is one of the most important tasks for
|
8
|
+
administering a web application. Active Admin provides many different tools for
|
9
|
+
you to build a compelling interface into your data for the admin staff.
|
10
|
+
|
11
|
+
Built in, Active Admin has the following index renderers:
|
12
|
+
|
13
|
+
* *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
|
14
|
+
* *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
|
15
|
+
* *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-block.md))
|
16
|
+
* *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
|
17
|
+
|
18
|
+
All index pages also support scopes, filters, pagination, action items, and
|
19
|
+
sidebar sections.
|
20
|
+
|
21
|
+
## Multiple Index Pages
|
22
|
+
|
23
|
+
Sometime you may want more than one index page for a resource to represent
|
24
|
+
different views to the user. If multiple index pages exist, Active Admin will
|
25
|
+
automatically build links at the top of the default index page. Including
|
26
|
+
multiple views is simple and requires creating multiple index components in
|
27
|
+
your resource.
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
index do
|
31
|
+
id_column
|
32
|
+
column :image_title
|
33
|
+
actions
|
34
|
+
end
|
35
|
+
|
36
|
+
index as: :grid do |product|
|
37
|
+
link_to image_tag(product.image_path), admin_product_path(product)
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
The first index component will be the default index page unless you indicate
|
42
|
+
otherwise by setting `:default` to true.
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
index do
|
46
|
+
column :image_title
|
47
|
+
actions
|
48
|
+
end
|
49
|
+
|
50
|
+
index as: :grid, default: true do |product|
|
51
|
+
link_to image_tag(product.image_path), admin_product_path(product)
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
## Custom Index
|
56
|
+
|
57
|
+
Active Admin does not limit the index page to be a table, block, blog or grid.
|
58
|
+
If you've created your own [custom index](3-index-pages/custom-index.md) page it
|
59
|
+
can be included by setting `:as` to the class of the index component you created.
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
index as: ActiveAdmin::Views::IndexAsMyIdea do
|
63
|
+
column :image_title
|
64
|
+
actions
|
65
|
+
end
|
66
|
+
```
|
67
|
+
|
68
|
+
## Index Filters
|
69
|
+
|
70
|
+
By default the index screen includes a "Filters" sidebar on the right hand side
|
71
|
+
with a filter for each attribute of the registered model. You can customize the
|
72
|
+
filters that are displayed as well as the type of widgets they use.
|
73
|
+
|
74
|
+
To display a filter for an attribute, use the `filter` method
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
ActiveAdmin.register Post do
|
78
|
+
filter :title
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
Out of the box, Active Admin supports the following filter types:
|
83
|
+
|
84
|
+
* *:string* - A drop down for selecting "Contains", "Equals", "Starts with",
|
85
|
+
"Ends with" and an input for a value.
|
86
|
+
* *:date_range* - A start and end date field with calendar inputs
|
87
|
+
* *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
|
88
|
+
Than" and an input for a value.
|
89
|
+
* *:select* - A drop down which filters based on a selected item in a collection
|
90
|
+
or all.
|
91
|
+
* *:check_boxes* - A list of check boxes users can turn on and off to filter
|
92
|
+
|
93
|
+
By default, Active Admin will pick the most relevant filter based on the
|
94
|
+
attribute type. You can force the type by passing the `:as` option.
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
filter :author, as: :check_boxes
|
98
|
+
```
|
99
|
+
|
100
|
+
The `:check_boxes` and `:select` types accept options for the collection. By default
|
101
|
+
it attempts to create a collection based on an association. But you can pass in
|
102
|
+
the collection as a proc to be called at render time.
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
filter :author, as: :check_boxes, collection: proc { Author.all }
|
106
|
+
```
|
107
|
+
|
108
|
+
To override options for string or numeric filter pass `filters` option.
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
filter :title, filters: [:starts_with, :ends_with]
|
112
|
+
```
|
113
|
+
|
114
|
+
Also, if you don't need the select with the options 'contains', 'equals',
|
115
|
+
'starts_with' or 'ends_with' just add the option to the filter name with an
|
116
|
+
underscore.
|
117
|
+
|
118
|
+
For example:
|
119
|
+
|
120
|
+
```ruby
|
121
|
+
filter :name_equals
|
122
|
+
# or
|
123
|
+
filter :name_contains
|
124
|
+
```
|
125
|
+
|
126
|
+
You can change the filter label by passing a label option:
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
filter :author, label: 'Something else'
|
130
|
+
```
|
131
|
+
|
132
|
+
By default, Active Admin will try to use ActiveModel I18n to determine the label.
|
133
|
+
|
134
|
+
You can also filter on more than one attribute of a model using the [Ransack
|
135
|
+
search predicate
|
136
|
+
syntax](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching).
|
137
|
+
If using a custom search method, you will also need to specify the field type
|
138
|
+
using `:as` and the label.
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
filter :first_name_or_last_name_cont, as: :string, label: "Name"
|
142
|
+
```
|
143
|
+
|
144
|
+
Filters can also be disabled for a resource, a namespace or the entire
|
145
|
+
application.
|
146
|
+
|
147
|
+
To disable for a specific resource:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
ActiveAdmin.register Post do
|
151
|
+
config.filters = false
|
152
|
+
end
|
153
|
+
```
|
154
|
+
|
155
|
+
To disable for a namespace, in the initializer:
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
ActiveAdmin.setup do |config|
|
159
|
+
config.namespace :my_namespace do |my_namespace|
|
160
|
+
my_namespace.filters = false
|
161
|
+
end
|
162
|
+
end
|
163
|
+
```
|
164
|
+
|
165
|
+
Or to disable for the entire application:
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
ActiveAdmin.setup do |config|
|
169
|
+
config.filters = false
|
170
|
+
end
|
171
|
+
```
|
172
|
+
|
173
|
+
You can also add a filter and still preserve the default filters:
|
174
|
+
|
175
|
+
```ruby
|
176
|
+
preserve_default_filters!
|
177
|
+
filter :author
|
178
|
+
```
|
179
|
+
|
180
|
+
Or you can also remove a filter and still preserve the default filters:
|
181
|
+
|
182
|
+
```ruby
|
183
|
+
preserve_default_filters!
|
184
|
+
remove_filter :id
|
185
|
+
```
|
186
|
+
|
187
|
+
## Index Scopes
|
188
|
+
|
189
|
+
You can define custom scopes for your index page. This will add a tab bar above
|
190
|
+
the index table to quickly filter your collection on pre-defined scopes. There
|
191
|
+
are a number of ways to define your scopes:
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
scope :all, default: true
|
195
|
+
|
196
|
+
# assumes the model has a scope called ':active'
|
197
|
+
scope :active
|
198
|
+
|
199
|
+
# renames model scope ':leaves' to ':subcategories'
|
200
|
+
scope "Subcategories", :leaves
|
201
|
+
|
202
|
+
# Dynamic scope name
|
203
|
+
scope ->{ Date.today.strftime '%A' }, :published_today
|
204
|
+
|
205
|
+
# custom scope not defined on the model
|
206
|
+
scope("Inactive") { |scope| scope.where(active: false) }
|
207
|
+
|
208
|
+
# conditionally show a custom controller scope
|
209
|
+
scope "Published", if: -> { current_admin_user.can? :manage, Posts } do |posts|
|
210
|
+
posts.published
|
211
|
+
end
|
212
|
+
```
|
213
|
+
|
214
|
+
Scopes can be labelled with a translation, e.g.
|
215
|
+
`activerecord.scopes.invoice.expired`.
|
216
|
+
|
217
|
+
### Scopes groups
|
218
|
+
|
219
|
+
You can assign group names to scopes to keep related scopes together and separate them from the rest.
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
# a scope in the default group
|
223
|
+
scope :all
|
224
|
+
|
225
|
+
# two scopes used to filter by status
|
226
|
+
scope :active, group: :status
|
227
|
+
scope :inactive, group: :status
|
228
|
+
|
229
|
+
# two scopes used to filter by date
|
230
|
+
scope :today, group: :date
|
231
|
+
scope :tomorrow, group: :date
|
232
|
+
```
|
233
|
+
|
234
|
+
## Index default sort order
|
235
|
+
|
236
|
+
You can define the default sort order for index pages:
|
237
|
+
|
238
|
+
```ruby
|
239
|
+
ActiveAdmin.register Post do
|
240
|
+
config.sort_order = 'name_asc'
|
241
|
+
end
|
242
|
+
```
|
243
|
+
|
244
|
+
## Index pagination
|
245
|
+
|
246
|
+
You can set the number of records per page as default:
|
247
|
+
|
248
|
+
```ruby
|
249
|
+
ActiveAdmin.setup do |config|
|
250
|
+
config.default_per_page = 30
|
251
|
+
end
|
252
|
+
```
|
253
|
+
|
254
|
+
You can set the number of records per page per resources:
|
255
|
+
|
256
|
+
```ruby
|
257
|
+
ActiveAdmin.register Post do
|
258
|
+
config.per_page = 10
|
259
|
+
end
|
260
|
+
```
|
261
|
+
|
262
|
+
Or allow users to choose themselves using dropdown with values
|
263
|
+
|
264
|
+
```ruby
|
265
|
+
ActiveAdmin.register Post do
|
266
|
+
config.per_page = [10, 50, 100]
|
267
|
+
end
|
268
|
+
```
|
269
|
+
|
270
|
+
You can change it per request / action too:
|
271
|
+
|
272
|
+
```ruby
|
273
|
+
controller do
|
274
|
+
before_action only: :index do
|
275
|
+
@per_page = 100
|
276
|
+
end
|
277
|
+
end
|
278
|
+
```
|
279
|
+
|
280
|
+
You can also disable pagination:
|
281
|
+
|
282
|
+
```ruby
|
283
|
+
ActiveAdmin.register Post do
|
284
|
+
config.paginate = false
|
285
|
+
end
|
286
|
+
```
|
287
|
+
|
288
|
+
If you have a very large database, you might want to disable `SELECT COUNT(*)`
|
289
|
+
queries caused by the pagination info at the bottom of the page:
|
290
|
+
|
291
|
+
```ruby
|
292
|
+
ActiveAdmin.register Post do
|
293
|
+
index pagination_total: false do
|
294
|
+
# ...
|
295
|
+
end
|
296
|
+
end
|
297
|
+
```
|
298
|
+
|
299
|
+
## Customizing Download Links
|
300
|
+
|
301
|
+
You can easily remove or customize the download links you want displayed:
|
302
|
+
|
303
|
+
```ruby
|
304
|
+
# Per resource:
|
305
|
+
ActiveAdmin.register Post do
|
306
|
+
|
307
|
+
index download_links: false
|
308
|
+
index download_links: [:pdf]
|
309
|
+
index download_links: proc{ current_user.can_view_download_links? }
|
310
|
+
|
311
|
+
end
|
312
|
+
|
313
|
+
# For the entire application:
|
314
|
+
ActiveAdmin.setup do |config|
|
315
|
+
|
316
|
+
config.download_links = false
|
317
|
+
config.download_links = [:csv, :xml, :json, :pdf]
|
318
|
+
config.download_links = proc { current_user.can_view_download_links? }
|
319
|
+
|
320
|
+
end
|
321
|
+
```
|
322
|
+
|
323
|
+
Note: you have to actually implement PDF rendering for your action, ActiveAdmin
|
324
|
+
does not provide this feature. This setting just allows you to specify formats
|
325
|
+
that you want to show up under the index collection.
|
326
|
+
|
327
|
+
You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the
|
328
|
+
PDF generation you want.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/custom-index.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Custom Index
|
6
|
+
|
7
|
+
If the supplied Active Admin index components are insufficient for your project
|
8
|
+
feel free to define your own. Index classes inherit from `ActiveAdmin::Component`
|
9
|
+
and require a `build` method and an `index_name` class method.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
module ActiveAdmin
|
13
|
+
module Views
|
14
|
+
class IndexAsMyIdea < ActiveAdmin::Component
|
15
|
+
|
16
|
+
def build(page_presenter, collection)
|
17
|
+
# ...
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.index_name
|
21
|
+
"my_idea"
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
29
|
+
The build method takes a PagePresenter object and collection of whatever you
|
30
|
+
choose.
|
31
|
+
|
32
|
+
The `index_name` class method takes no arguments and returns a string that should
|
33
|
+
be representative of the class name. If this method is not defined, your
|
34
|
+
index component will not be able take advantage of Active Admin's
|
35
|
+
*multiple index pages* feature.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-block.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Index as a Block
|
6
|
+
|
7
|
+
If you want to fully customize the display of your resources on the index
|
8
|
+
screen, Index as a Block allows you to render a block of content for each
|
9
|
+
resource.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
index as: :block do |product|
|
13
|
+
div for: product do
|
14
|
+
resource_selection_cell product
|
15
|
+
h2 auto_link product.title
|
16
|
+
div simple_format product.description
|
17
|
+
end
|
18
|
+
end
|
19
|
+
```
|
@@ -0,0 +1,69 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-blog.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Index as Blog
|
6
|
+
|
7
|
+
Render your index page as a set of posts. The post has two main options:
|
8
|
+
title and body.
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
index as: :blog do
|
12
|
+
title :my_title # Calls #my_title on each resource
|
13
|
+
body :my_body # Calls #my_body on each resource
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
## Post Title
|
18
|
+
|
19
|
+
The title is the content that will be rendered within a link to the
|
20
|
+
resource. There are two main ways to set the content for the title
|
21
|
+
|
22
|
+
First, you can pass in a method to be called on your resource. For example:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
index as: :blog do
|
26
|
+
title :a_method_to_call
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
30
|
+
Second, you can pass a block to the tile option which will then be
|
31
|
+
used as the contents of the title. The resource being rendered
|
32
|
+
is passed in to the block. For Example:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
index as: :blog do
|
36
|
+
title do |post|
|
37
|
+
span post.title, class: 'title'
|
38
|
+
span post.created_at, class: 'created_at'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
## Post Body
|
44
|
+
|
45
|
+
The body is rendered underneath the title of each post. The same two
|
46
|
+
style of options work as the Post Title above.
|
47
|
+
|
48
|
+
Call a method on the resource as the body:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
index as: :blog do
|
52
|
+
title :my_title
|
53
|
+
body :my_body
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
57
|
+
Or, render a block as the body:
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
index as: :blog do
|
61
|
+
title :my_title
|
62
|
+
body do |post|
|
63
|
+
div truncate post.title
|
64
|
+
div class: 'meta' do
|
65
|
+
span "Post in #{post.categories.join(', ')}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
```
|