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,27 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-grid.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Index as a Grid
|
6
|
+
|
7
|
+
Sometimes you want to display the index screen for a set of resources as a grid
|
8
|
+
(possibly a grid of thumbnail images). To do so, use the :grid option for the
|
9
|
+
index block.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
index as: :grid do |product|
|
13
|
+
link_to image_tag(product.image_path), admin_product_path(product)
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
The block is rendered within a cell in the grid once for each resource in the
|
18
|
+
collection. The resource is passed into the block for you to use in the view.
|
19
|
+
|
20
|
+
You can customize the number of columns that are rendered using the columns
|
21
|
+
option:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
index as: :grid, columns: 5 do |product|
|
25
|
+
link_to image_tag(product.image_path), admin_product_path(product)
|
26
|
+
end
|
27
|
+
```
|
@@ -0,0 +1,227 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/3-index-pages/index-as-table.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Index as a Table
|
6
|
+
|
7
|
+
By default, the index page is a table with each of the models content columns and links to
|
8
|
+
show, edit and delete the object. There are many ways to customize what gets
|
9
|
+
displayed.
|
10
|
+
|
11
|
+
## Defining Columns
|
12
|
+
|
13
|
+
To display an attribute or a method on a resource, simply pass a symbol into the
|
14
|
+
column method:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
index do
|
18
|
+
selectable_column
|
19
|
+
column :title
|
20
|
+
end
|
21
|
+
```
|
22
|
+
|
23
|
+
For association columns we make an educated guess on what to display by
|
24
|
+
calling the following methods in the following order:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
:display_name, :full_name, :name, :username, :login, :title, :email, :to_s
|
28
|
+
```
|
29
|
+
|
30
|
+
This can be customized in `config/initializers/active_admin.rb`.
|
31
|
+
|
32
|
+
If the default title does not work for you, pass it as the first argument:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
index do
|
36
|
+
selectable_column
|
37
|
+
column "My Custom Title", :title
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
Sometimes that just isn't enough and you need to write some view-specific code.
|
42
|
+
For example, say we wanted a "Title" column that links to the posts admin screen.
|
43
|
+
|
44
|
+
`column` accepts a block that will be rendered for each of the objects in the collection.
|
45
|
+
The block is called once for each resource, which is passed as an argument to the block.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
index do
|
49
|
+
selectable_column
|
50
|
+
column "Title" do |post|
|
51
|
+
link_to post.title, admin_post_path(post)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
## Defining Actions
|
57
|
+
|
58
|
+
To setup links to View, Edit and Delete a resource, use the `actions` method:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
index do
|
62
|
+
selectable_column
|
63
|
+
column :title
|
64
|
+
actions
|
65
|
+
end
|
66
|
+
```
|
67
|
+
|
68
|
+
You can also append custom links to the default links:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
index do
|
72
|
+
selectable_column
|
73
|
+
column :title
|
74
|
+
actions do |post|
|
75
|
+
item "Preview", admin_preview_post_path(post), class: "member_link"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
```
|
79
|
+
|
80
|
+
Or forego the default links entirely:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
index do
|
84
|
+
column :title
|
85
|
+
actions defaults: false do |post|
|
86
|
+
item "View", admin_post_path(post)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
Or append custom action with custom html via arbre:
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
index do
|
95
|
+
column :title
|
96
|
+
actions do |post|
|
97
|
+
a "View", href: admin_post_path(post)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
102
|
+
In case you prefer to list actions links in a dropdown menu:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
index do
|
106
|
+
selectable_column
|
107
|
+
column :title
|
108
|
+
actions dropdown: true do |post|
|
109
|
+
item "Preview", admin_preview_post_path(post)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
```
|
113
|
+
|
114
|
+
In addition, you can insert the position of the row in the greater
|
115
|
+
collection by using the index_column special command:
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
index do
|
119
|
+
selectable_column
|
120
|
+
index_column
|
121
|
+
column :title
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
index_column take an optional offset parameter to allow a developer to set
|
126
|
+
the starting number for the index (default is 1).
|
127
|
+
|
128
|
+
## Sorting
|
129
|
+
|
130
|
+
When a column is generated from an Active Record attribute, the table is
|
131
|
+
sortable by default. If you are creating a custom column, you may need to give
|
132
|
+
Active Admin a hint for how to sort the table.
|
133
|
+
|
134
|
+
You can pass the key specifying the attribute which gets used to sort objects using Active Record.
|
135
|
+
By default, this is the column on the resource's table that the attribute corresponds to.
|
136
|
+
Otherwise, any attribute that the resource collection responds to can be used.
|
137
|
+
|
138
|
+
```ruby
|
139
|
+
index do
|
140
|
+
column :title, sortable: :title do |post|
|
141
|
+
link_to post.title, admin_post_path(post)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
```
|
145
|
+
|
146
|
+
You can turn off sorting on any column by passing false:
|
147
|
+
|
148
|
+
```ruby
|
149
|
+
index do
|
150
|
+
column :title, sortable: false
|
151
|
+
end
|
152
|
+
```
|
153
|
+
|
154
|
+
It's also possible to sort by PostgreSQL's hstore column key. You should set `sortable`
|
155
|
+
option to a `column->'key'` value:
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
index do
|
159
|
+
column :keywords, sortable: "meta->'keywords'"
|
160
|
+
end
|
161
|
+
```
|
162
|
+
|
163
|
+
## Custom sorting
|
164
|
+
|
165
|
+
It is also possible to use database specific expressions and options for sorting by column
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
order_by(:title) do |order_clause|
|
169
|
+
if order_clause.order == 'desc'
|
170
|
+
[order_clause.to_sql, 'NULLS LAST'].join(' ')
|
171
|
+
else
|
172
|
+
[order_clause.to_sql, 'NULLS FIRST'].join(' ')
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
index do
|
177
|
+
column :title
|
178
|
+
end
|
179
|
+
```
|
180
|
+
|
181
|
+
## Associated Sorting
|
182
|
+
|
183
|
+
You're normally able to sort columns alphabetically, but by default you
|
184
|
+
can't sort by associated objects. Though with a few simple changes, you can.
|
185
|
+
|
186
|
+
Assuming you're on the Books index page, and Book has_one Publisher:
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
controller do
|
190
|
+
def scoped_collection
|
191
|
+
super.includes :publisher # prevents N+1 queries to your database
|
192
|
+
end
|
193
|
+
end
|
194
|
+
```
|
195
|
+
|
196
|
+
Then it's simple to sort by any Publisher attribute from within the index table:
|
197
|
+
|
198
|
+
```ruby
|
199
|
+
index do
|
200
|
+
column :publisher, sortable: 'publishers.name'
|
201
|
+
end
|
202
|
+
```
|
203
|
+
|
204
|
+
## Showing and Hiding Columns
|
205
|
+
|
206
|
+
The entire index block is rendered within the context of the view, so you can
|
207
|
+
easily do things that show or hide columns based on the current context.
|
208
|
+
|
209
|
+
For example, if you were using CanCan:
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
index do
|
213
|
+
column :title, sortable: false
|
214
|
+
column :secret_data if can? :manage, Post
|
215
|
+
end
|
216
|
+
```
|
217
|
+
|
218
|
+
## Custom row class
|
219
|
+
|
220
|
+
In order to add special class to table rows pass the proc object as a `:row_class` option
|
221
|
+
of the `index` method.
|
222
|
+
|
223
|
+
```ruby
|
224
|
+
index row_class: ->elem { 'active' if elem.active? } do
|
225
|
+
# columns
|
226
|
+
end
|
227
|
+
```
|
@@ -0,0 +1,74 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/4-csv-format.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Customizing the CSV format
|
6
|
+
|
7
|
+
Active Admin provides CSV file downloads on the index screen for each Resource.
|
8
|
+
By default it will render a CSV file with all the content columns of your
|
9
|
+
registered model.
|
10
|
+
|
11
|
+
Customizing the CSV format is as simple as customizing the index page.
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
ActiveAdmin.register Post do
|
15
|
+
csv do
|
16
|
+
column :title
|
17
|
+
column(:author) { |post| post.author.full_name }
|
18
|
+
column('bODY', humanize_name: false) # preserve case
|
19
|
+
end
|
20
|
+
end
|
21
|
+
```
|
22
|
+
|
23
|
+
You can also set custom CSV settings for an individual resource:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
ActiveAdmin.register Post do
|
27
|
+
csv force_quotes: true, col_sep: ';', column_names: false do
|
28
|
+
column :title
|
29
|
+
column(:author) { |post| post.author.full_name }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
Or system-wide:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
# config/initializers/active_admin.rb
|
38
|
+
|
39
|
+
# Set the CSV builder separator
|
40
|
+
config.csv_options = { col_sep: ';' }
|
41
|
+
|
42
|
+
# Force the use of quotes
|
43
|
+
config.csv_options = { force_quotes: true }
|
44
|
+
```
|
45
|
+
|
46
|
+
You can customize the filename by overriding `csv_filename` in the controller block.
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
ActiveAdmin.register User do
|
50
|
+
controller do
|
51
|
+
def csv_filename
|
52
|
+
'User Details.csv'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
## Streaming
|
59
|
+
|
60
|
+
By default Active Admin streams the CSV response to your browser as it's generated.
|
61
|
+
This is good because it prevents request timeouts, for example the infamous H12
|
62
|
+
error on Heroku.
|
63
|
+
|
64
|
+
However if an exception occurs while generating the CSV, the request will eventually
|
65
|
+
time out, with the last line containing the exception message. CSV streaming is
|
66
|
+
disabled in development to help debug these exceptions. That lets you use tools like
|
67
|
+
better_errors and web-console to debug the issue. If you want to customize the
|
68
|
+
environments where CSV streaming is disabled, you can change this setting:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
# config/initializers/active_admin.rb
|
72
|
+
|
73
|
+
config.disable_streaming_in = ['development', 'staging']
|
74
|
+
```
|
data/docs/5-forms.md
ADDED
@@ -0,0 +1,232 @@
|
|
1
|
+
---
|
2
|
+
redirect_from: /docs/5-forms.html
|
3
|
+
---
|
4
|
+
|
5
|
+
# Forms
|
6
|
+
|
7
|
+
Active Admin gives you complete control over the output of the form by creating
|
8
|
+
a thin DSL on top of [Formtastic](https://github.com/justinfrench/formtastic):
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
ActiveAdmin.register Post do
|
12
|
+
|
13
|
+
form title: 'A custom title' do |f|
|
14
|
+
inputs 'Details' do
|
15
|
+
input :title
|
16
|
+
input :published_at, label: "Publish Post At"
|
17
|
+
li "Created at #{f.object.created_at}" unless f.object.new_record?
|
18
|
+
input :category
|
19
|
+
end
|
20
|
+
panel 'Markup' do
|
21
|
+
"The following can be used in the content below..."
|
22
|
+
end
|
23
|
+
inputs 'Content', :body
|
24
|
+
para "Press cancel to return to the list without saving."
|
25
|
+
actions
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
For more details, please see [Formtastic's documentation](https://github.com/justinfrench/formtastic/wiki).
|
32
|
+
|
33
|
+
## Default
|
34
|
+
|
35
|
+
Resources come with a default form defined as such:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
form do |f|
|
39
|
+
f.semantic_errors # shows errors on :base
|
40
|
+
f.inputs # builds an input field for every attribute
|
41
|
+
f.actions # adds the 'Submit' and 'Cancel' buttons
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
## Partials
|
46
|
+
|
47
|
+
If you want to split a custom form into a separate partial use:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
ActiveAdmin.register Post do
|
51
|
+
form partial: 'form'
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
Which looks for something like this:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
# app/views/admin/posts/_form.html.arb
|
59
|
+
insert_tag active_admin_form_for resource do |f|
|
60
|
+
inputs :title, :body
|
61
|
+
actions
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
This is a regular Rails partial so any template engine may be used.
|
66
|
+
|
67
|
+
You can also use the `ActiveAdmin::FormBuilder` as builder in your Formtastic
|
68
|
+
Form for use the same helpers are used in the admin file:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
= semantic_form_for [:admin, @post], builder: ActiveAdmin::FormBuilder do |f|
|
72
|
+
= f.inputs "Details" do
|
73
|
+
= f.input :title
|
74
|
+
- f.has_many :taggings, sortable: :position, sortable_start: 1 do |t|
|
75
|
+
- t.input :tag
|
76
|
+
= f.actions
|
77
|
+
|
78
|
+
```
|
79
|
+
|
80
|
+
## Nested Resources
|
81
|
+
|
82
|
+
You can create forms with nested models using the `has_many` method, even if
|
83
|
+
your model uses `has_one`:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
ActiveAdmin.register Post do
|
87
|
+
permit_params :title,
|
88
|
+
:published_at,
|
89
|
+
:body,
|
90
|
+
categories_attributes: [:id, :title, :_destroy],
|
91
|
+
taggings_attributes: [:id, :tag],
|
92
|
+
comment_attributes: [:id, :body, :_destroy]
|
93
|
+
|
94
|
+
form do |f|
|
95
|
+
f.inputs 'Details' do
|
96
|
+
f.input :title
|
97
|
+
f.input :published_at, label: 'Publish Post At'
|
98
|
+
end
|
99
|
+
f.inputs 'Content', :body
|
100
|
+
f.inputs do
|
101
|
+
f.has_many :categories, heading: 'Themes',
|
102
|
+
allow_destroy: true,
|
103
|
+
new_record: false do |a|
|
104
|
+
a.input :title
|
105
|
+
end
|
106
|
+
end
|
107
|
+
f.inputs do
|
108
|
+
f.has_many :taggings, sortable: :position, sortable_start: 1 do |t|
|
109
|
+
t.input :tag
|
110
|
+
end
|
111
|
+
end
|
112
|
+
f.inputs do
|
113
|
+
f.has_many :comment,
|
114
|
+
new_record: 'Leave Comment',
|
115
|
+
allow_destroy: -> (c) { c.author?(current_admin_user) } do |b|
|
116
|
+
b.input :body
|
117
|
+
end
|
118
|
+
end
|
119
|
+
f.actions
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
*NOTE*: In addition to using `has_many` as illustrated above, you'll need to add
|
126
|
+
`accepts_nested_attributes` to your parent model and [configure strong parameters](https://activeadmin.info/2-resource-customization.html)
|
127
|
+
|
128
|
+
The `:allow_destroy` option adds a checkbox to the end of the nested form allowing
|
129
|
+
removal of the child object upon submission. Be sure to set `allow_destroy: true`
|
130
|
+
on the association to use this option. It is possible to associate
|
131
|
+
`:allow_destroy` with a string or a symbol, corresponding to the name of a child
|
132
|
+
object's method that will get called, or with a Proc object. The Proc object
|
133
|
+
receives the child object as a parameter and should return either true or false.
|
134
|
+
|
135
|
+
The `:heading` option adds a custom heading. You can hide it entirely by passing
|
136
|
+
`false`.
|
137
|
+
|
138
|
+
The `:new_record` option controls the visibility of the new record button (shown
|
139
|
+
by default). If you pass a string, it will be used as the text for the new
|
140
|
+
record button.
|
141
|
+
|
142
|
+
The `:sortable` option adds a hidden field and will enable drag & drop sorting
|
143
|
+
of the children. It expects the name of the column that will store the index of
|
144
|
+
each child.
|
145
|
+
|
146
|
+
The `:sortable_start` option sets the value (0 by default) of the first position
|
147
|
+
in the list.
|
148
|
+
|
149
|
+
## Datepicker
|
150
|
+
|
151
|
+
ActiveAdmin offers the `datepicker` input, which uses the [jQuery UI
|
152
|
+
datepicker](http://jqueryui.com/datepicker/). The datepicker input accepts any
|
153
|
+
of the options available to the standard jQueryUI Datepicker. For example:
|
154
|
+
|
155
|
+
```ruby
|
156
|
+
form do |f|
|
157
|
+
f.input :starts_at, as: :datepicker,
|
158
|
+
datepicker_options: {
|
159
|
+
min_date: "2013-10-8",
|
160
|
+
max_date: "+3D"
|
161
|
+
}
|
162
|
+
|
163
|
+
f.input :ends_at, as: :datepicker,
|
164
|
+
datepicker_options: {
|
165
|
+
min_date: 3.days.ago.to_date,
|
166
|
+
max_date: "+1W +5D"
|
167
|
+
}
|
168
|
+
end
|
169
|
+
```
|
170
|
+
|
171
|
+
Datepicker also accepts the `:label` option as a string or proc to display.
|
172
|
+
If it's a proc, it will be called each time the datepicker is rendered.
|
173
|
+
|
174
|
+
## Displaying Errors
|
175
|
+
|
176
|
+
To display a list of all validation errors:
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
form do |f|
|
180
|
+
f.semantic_errors *f.object.errors.keys
|
181
|
+
# ...
|
182
|
+
end
|
183
|
+
```
|
184
|
+
|
185
|
+
This is particularly useful to display errors on virtual or hidden attributes.
|
186
|
+
|
187
|
+
# Tabs
|
188
|
+
|
189
|
+
You can arrange content in tabs as shown below:
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
form do |f|
|
193
|
+
tabs do
|
194
|
+
tab 'Basic' do
|
195
|
+
f.inputs 'Basic Details' do
|
196
|
+
f.input :email
|
197
|
+
f.input :password
|
198
|
+
f.input :password_confirmation
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
tab 'Advanced', html_options: { class: 'specific_css_class' } do
|
203
|
+
f.inputs 'Advanced Details' do
|
204
|
+
f.input :role
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
f.actions
|
209
|
+
end
|
210
|
+
```
|
211
|
+
|
212
|
+
`html_options` allows you set additional html params for tab's menu item.
|
213
|
+
|
214
|
+
# Customize the Create Another checkbox
|
215
|
+
|
216
|
+
In order to simplify creating multiple resources you may enable ActiveAdmin to
|
217
|
+
show nice "Create Another" checkbox alongside of Create Model button. It may be
|
218
|
+
enabled for the whole application:
|
219
|
+
|
220
|
+
```ruby
|
221
|
+
ActiveAdmin.setup do |config|
|
222
|
+
config.create_another = true
|
223
|
+
end
|
224
|
+
```
|
225
|
+
|
226
|
+
or for the particular resource:
|
227
|
+
|
228
|
+
```ruby
|
229
|
+
ActiveAdmin.register Post do
|
230
|
+
config.create_another = true
|
231
|
+
end
|
232
|
+
```
|