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,102 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < BaseController
|
3
|
+
module Decorators
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def apply_decorator(resource)
|
8
|
+
decorate? ? decorator_class.new(resource) : resource
|
9
|
+
end
|
10
|
+
|
11
|
+
def apply_collection_decorator(collection)
|
12
|
+
if decorate?
|
13
|
+
collection_decorator.decorate collection, with: decorator_class
|
14
|
+
else
|
15
|
+
collection
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.undecorate(resource)
|
20
|
+
if resource.respond_to?(:decorated?) && resource.decorated?
|
21
|
+
resource.model
|
22
|
+
else
|
23
|
+
resource
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def decorate?
|
30
|
+
case action_name
|
31
|
+
when 'new', 'edit', 'create', 'update'
|
32
|
+
form = active_admin_config.get_page_presenter :form
|
33
|
+
form && form.options[:decorate] && decorator_class.present?
|
34
|
+
else
|
35
|
+
decorator_class.present?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def decorator_class
|
40
|
+
active_admin_config.decorator_class
|
41
|
+
end
|
42
|
+
|
43
|
+
# When using Draper, we wrap the collection draper in a new class that
|
44
|
+
# correctly delegates methods that Active Admin depends on.
|
45
|
+
def collection_decorator
|
46
|
+
if decorator_class
|
47
|
+
Wrapper.wrap decorator_class
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class Wrapper
|
52
|
+
@cache = {}
|
53
|
+
|
54
|
+
def self.wrap(decorator)
|
55
|
+
collection_decorator = find_collection_decorator(decorator)
|
56
|
+
|
57
|
+
if draper_collection_decorator? collection_decorator
|
58
|
+
name = "#{collection_decorator.name} of #{decorator} + ActiveAdmin"
|
59
|
+
@cache[name] ||= wrap! collection_decorator, name
|
60
|
+
else
|
61
|
+
collection_decorator
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def self.wrap!(parent, name)
|
68
|
+
::Class.new parent do
|
69
|
+
delegate :reorder, :page, :current_page, :total_pages, :limit_value,
|
70
|
+
:total_count, :total_pages, :to_key, :group_values, :except,
|
71
|
+
:find_each, :ransack
|
72
|
+
|
73
|
+
define_singleton_method(:name) { name }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Draper::CollectionDecorator was introduced in 1.0.0
|
78
|
+
# Draper::Decorator#collection_decorator_class was introduced in 1.3.0
|
79
|
+
def self.find_collection_decorator(decorator)
|
80
|
+
if Dependency.draper? '>= 1.3.0'
|
81
|
+
decorator.collection_decorator_class
|
82
|
+
elsif Dependency.draper? '>= 1.0.0'
|
83
|
+
draper_collection_decorator
|
84
|
+
else
|
85
|
+
decorator
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.draper_collection_decorator?(decorator)
|
90
|
+
decorator && decorator <= draper_collection_decorator
|
91
|
+
rescue NameError
|
92
|
+
false
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.draper_collection_decorator
|
96
|
+
::Draper::CollectionDecorator
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < BaseController
|
3
|
+
module ResourceClassMethods
|
4
|
+
|
5
|
+
# Override the default `resource_class` class and instance
|
6
|
+
# methods to only return the class defined in the instance
|
7
|
+
# of ActiveAdmin::Resource
|
8
|
+
def override_resource_class_methods!
|
9
|
+
class_exec do
|
10
|
+
def self.resource_class=(klass); end
|
11
|
+
|
12
|
+
def self.resource_class
|
13
|
+
@active_admin_config ? @active_admin_config.resource_class : nil
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def resource_class
|
19
|
+
self.class.resource_class
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class ResourceController < BaseController
|
3
|
+
|
4
|
+
# This module deals with scoping entire controllers to a relation
|
5
|
+
module Scoping
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
# Override the default InheritedResource #begin_of_association_chain to allow
|
11
|
+
# the scope to be defined in the active admin configuration.
|
12
|
+
#
|
13
|
+
# If scope_to is a proc, we eval it, otherwise we call the method on the controller.
|
14
|
+
#
|
15
|
+
# Collection can be scoped conditionally with an :if or :unless proc.
|
16
|
+
def begin_of_association_chain
|
17
|
+
return nil unless active_admin_config.scope_to?(self)
|
18
|
+
MethodOrProcHelper.render_in_context(self, active_admin_config.scope_to_method)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Overriding from InheritedResources::BaseHelpers
|
22
|
+
#
|
23
|
+
# Returns the method for the association chain when using
|
24
|
+
# the scope_to option
|
25
|
+
def method_for_association_chain
|
26
|
+
active_admin_config.scope_to_association_method || super
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
class ResourceController < BaseController
|
5
|
+
|
6
|
+
# This module overrides CSV responses to allow large data downloads.
|
7
|
+
# Could be expanded to JSON and XML in the future.
|
8
|
+
#
|
9
|
+
module Streaming
|
10
|
+
|
11
|
+
def index
|
12
|
+
super do |format|
|
13
|
+
format.csv { stream_csv }
|
14
|
+
yield(format) if block_given?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def stream_resource(&block)
|
21
|
+
headers['X-Accel-Buffering'] = 'no'
|
22
|
+
headers['Cache-Control'] = 'no-cache'
|
23
|
+
|
24
|
+
if ActiveAdmin.application.disable_streaming_in.include? Rails.env
|
25
|
+
self.response_body = block['']
|
26
|
+
else
|
27
|
+
self.response_body = Enumerator.new &block
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def csv_filename
|
32
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s(:default)}.csv"
|
33
|
+
end
|
34
|
+
|
35
|
+
def stream_csv
|
36
|
+
headers['Content-Type'] = 'text/csv; charset=utf-8' # In Rails 5 it's set to HTML??
|
37
|
+
headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
|
38
|
+
stream_resource &active_admin_config.csv_builder.method(:build).to_proc.curry[self]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,224 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
# This is the class where all the register blocks are evaluated.
|
3
|
+
class ResourceDSL < DSL
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
# Redefine sort behaviour for column
|
8
|
+
#
|
9
|
+
# For example:
|
10
|
+
#
|
11
|
+
# # nulls last
|
12
|
+
# order_by(:age) do |order_clause|
|
13
|
+
# [order_clause.to_sql, 'NULLS LAST'].join(' ') if order_clause.order == 'desc'
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# # by last_name but in the case that there is no last name, by first_name.
|
17
|
+
# order_by(:full_name) do |order_clause|
|
18
|
+
# ['COALESCE(NULLIF(last_name, ''), first_name), first_name', order_clause.order].join(' ')
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
#
|
22
|
+
def order_by(column, &block)
|
23
|
+
config.ordering[column] = block
|
24
|
+
end
|
25
|
+
|
26
|
+
def belongs_to(target, options = {})
|
27
|
+
config.belongs_to(target, options)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Scope collection to a relation
|
31
|
+
def scope_to(*args, &block)
|
32
|
+
config.scope_to(*args, &block)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Create a scope
|
36
|
+
def scope(*args, &block)
|
37
|
+
config.scope(*args, &block)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Store relations that should be included
|
41
|
+
def includes(*args)
|
42
|
+
config.includes.push *args
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# Keys included in the `permitted_params` setting are automatically whitelisted.
|
47
|
+
#
|
48
|
+
# Either
|
49
|
+
#
|
50
|
+
# permit_params :title, :author, :body, tags: []
|
51
|
+
#
|
52
|
+
# Or
|
53
|
+
#
|
54
|
+
# permit_params do
|
55
|
+
# defaults = [:title, :body]
|
56
|
+
# if current_user.admin?
|
57
|
+
# defaults + [:author]
|
58
|
+
# else
|
59
|
+
# defaults
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
def permit_params(*args, &block)
|
64
|
+
param_key = config.param_key.to_sym
|
65
|
+
belongs_to_param = config.belongs_to_param
|
66
|
+
create_another_param = :create_another if config.create_another
|
67
|
+
|
68
|
+
controller do
|
69
|
+
define_method :permitted_params do
|
70
|
+
permitted_params =
|
71
|
+
active_admin_namespace.permitted_params +
|
72
|
+
Array.wrap(belongs_to_param) +
|
73
|
+
Array.wrap(create_another_param)
|
74
|
+
|
75
|
+
params.permit(*permitted_params, param_key => block ? instance_exec(&block) : args)
|
76
|
+
end
|
77
|
+
|
78
|
+
private :permitted_params
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Configure the index page for the resource
|
83
|
+
def index(options = {}, &block)
|
84
|
+
options[:as] ||= :table
|
85
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Configure the show page for the resource
|
89
|
+
def show(options = {}, &block)
|
90
|
+
config.set_page_presenter :show, ActiveAdmin::PagePresenter.new(options, &block)
|
91
|
+
end
|
92
|
+
|
93
|
+
def form(options = {}, &block)
|
94
|
+
config.set_page_presenter :form, ActiveAdmin::PagePresenter.new(options, &block)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Configure the CSV format
|
98
|
+
#
|
99
|
+
# For example:
|
100
|
+
#
|
101
|
+
# csv do
|
102
|
+
# column :name
|
103
|
+
# column("Author") { |post| post.author.full_name }
|
104
|
+
# end
|
105
|
+
#
|
106
|
+
# csv col_sep: ";", force_quotes: true do
|
107
|
+
# column :name
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
def csv(options = {}, &block)
|
111
|
+
options[:resource] = config
|
112
|
+
|
113
|
+
config.csv_builder = CSVBuilder.new(options, &block)
|
114
|
+
end
|
115
|
+
|
116
|
+
# Member Actions give you the functionality of defining both the
|
117
|
+
# action and the route directly from your ActiveAdmin registration
|
118
|
+
# block.
|
119
|
+
#
|
120
|
+
# For example:
|
121
|
+
#
|
122
|
+
# ActiveAdmin.register Post do
|
123
|
+
# member_action :comments do
|
124
|
+
# @post = Post.find(params[:id])
|
125
|
+
# @comments = @post.comments
|
126
|
+
# end
|
127
|
+
# end
|
128
|
+
#
|
129
|
+
# Will create a new controller action comments and will hook it up to
|
130
|
+
# the named route (comments_admin_post_path) /admin/posts/:id/comments
|
131
|
+
#
|
132
|
+
# You can treat everything within the block as a standard Rails controller
|
133
|
+
# action.
|
134
|
+
#
|
135
|
+
def action(set, name, options = {}, &block)
|
136
|
+
warn "Warning: method `#{name}` already defined in #{controller.name}" if controller.method_defined?(name)
|
137
|
+
|
138
|
+
set << ControllerAction.new(name, options)
|
139
|
+
title = options.delete(:title)
|
140
|
+
|
141
|
+
controller do
|
142
|
+
before_action(only: [name]) { @page_title = title } if title
|
143
|
+
define_method(name, &block || Proc.new {})
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def member_action(name, options = {}, &block)
|
148
|
+
action config.member_actions, name, options, &block
|
149
|
+
end
|
150
|
+
|
151
|
+
def collection_action(name, options = {}, &block)
|
152
|
+
action config.collection_actions, name, options, &block
|
153
|
+
end
|
154
|
+
|
155
|
+
def decorate_with(decorator_class)
|
156
|
+
# Force storage as a string. This will help us with reloading issues.
|
157
|
+
# Assuming decorator_class.to_s will return the name of the class allows
|
158
|
+
# us to handle a string or a class.
|
159
|
+
config.decorator_class_name = "::#{ decorator_class }"
|
160
|
+
end
|
161
|
+
|
162
|
+
# Defined Callbacks
|
163
|
+
#
|
164
|
+
# == After Build
|
165
|
+
# Called after the resource is built in the new and create actions.
|
166
|
+
#
|
167
|
+
# ActiveAdmin.register Post do
|
168
|
+
# after_build do |post|
|
169
|
+
# post.author = current_user
|
170
|
+
# end
|
171
|
+
# end
|
172
|
+
#
|
173
|
+
# == Before / After Create
|
174
|
+
# Called before and after a resource is saved to the db on the create action.
|
175
|
+
#
|
176
|
+
# == Before / After Update
|
177
|
+
# Called before and after a resource is saved to the db on the update action.
|
178
|
+
#
|
179
|
+
# == Before / After Save
|
180
|
+
# Called before and after the object is saved in the create and update action.
|
181
|
+
# Note: Gets called after the create and update callbacks
|
182
|
+
#
|
183
|
+
# == Before / After Destroy
|
184
|
+
# Called before and after the object is destroyed from the database.
|
185
|
+
#
|
186
|
+
delegate :before_build, :after_build, to: :controller
|
187
|
+
delegate :before_create, :after_create, to: :controller
|
188
|
+
delegate :before_update, :after_update, to: :controller
|
189
|
+
delegate :before_save, :after_save, to: :controller
|
190
|
+
delegate :before_destroy, :after_destroy, to: :controller
|
191
|
+
|
192
|
+
# This code defines both *_filter and *_action for Rails 5.0 and *_action for Rails >= 5.1
|
193
|
+
phases = [
|
194
|
+
:before, :skip_before,
|
195
|
+
:after, :skip_after,
|
196
|
+
:around, :skip
|
197
|
+
]
|
198
|
+
keywords = if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 1
|
199
|
+
[:action]
|
200
|
+
else
|
201
|
+
[:action, :filter]
|
202
|
+
end
|
203
|
+
|
204
|
+
keywords.each do |name|
|
205
|
+
phases.each do |action|
|
206
|
+
define_method "#{action}_#{name}" do |*args, &block|
|
207
|
+
controller.public_send "#{action}_action", *args, &block
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# Specify which actions to create in the controller
|
213
|
+
#
|
214
|
+
# Eg:
|
215
|
+
#
|
216
|
+
# ActiveAdmin.register Post do
|
217
|
+
# actions :index, :show
|
218
|
+
# end
|
219
|
+
#
|
220
|
+
# Will only create the index and show actions (no create, update or delete)
|
221
|
+
delegate :actions, to: :controller
|
222
|
+
|
223
|
+
end
|
224
|
+
end
|