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
data/lib/active_admin.rb
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'active_support/core_ext'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
require 'ransack'
|
5
|
+
require 'ransack_ext'
|
6
|
+
require 'kaminari'
|
7
|
+
require 'formtastic'
|
8
|
+
require 'formtastic_i18n'
|
9
|
+
require 'inherited_resources'
|
10
|
+
require 'jquery-rails'
|
11
|
+
require 'sassc-rails'
|
12
|
+
require 'arbre'
|
13
|
+
require 'sprockets/es6'
|
14
|
+
|
15
|
+
require 'active_admin/helpers/i18n'
|
16
|
+
|
17
|
+
module ActiveAdmin
|
18
|
+
|
19
|
+
autoload :VERSION, 'active_admin/version'
|
20
|
+
autoload :Application, 'active_admin/application'
|
21
|
+
autoload :AssetRegistration, 'active_admin/asset_registration'
|
22
|
+
autoload :Authorization, 'active_admin/authorization_adapter'
|
23
|
+
autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
|
24
|
+
autoload :Callbacks, 'active_admin/callbacks'
|
25
|
+
autoload :Component, 'active_admin/component'
|
26
|
+
autoload :BaseController, 'active_admin/base_controller'
|
27
|
+
autoload :CanCanAdapter, 'active_admin/cancan_adapter'
|
28
|
+
autoload :ControllerAction, 'active_admin/controller_action'
|
29
|
+
autoload :CSVBuilder, 'active_admin/csv_builder'
|
30
|
+
autoload :Dependency, 'active_admin/dependency'
|
31
|
+
autoload :Deprecation, 'active_admin/deprecation'
|
32
|
+
autoload :Devise, 'active_admin/devise'
|
33
|
+
autoload :DSL, 'active_admin/dsl'
|
34
|
+
autoload :FormBuilder, 'active_admin/form_builder'
|
35
|
+
autoload :Inputs, 'active_admin/inputs'
|
36
|
+
autoload :Localizers, 'active_admin/localizers'
|
37
|
+
autoload :Menu, 'active_admin/menu'
|
38
|
+
autoload :MenuCollection, 'active_admin/menu_collection'
|
39
|
+
autoload :MenuItem, 'active_admin/menu_item'
|
40
|
+
autoload :Namespace, 'active_admin/namespace'
|
41
|
+
autoload :OrderClause, 'active_admin/order_clause'
|
42
|
+
autoload :Page, 'active_admin/page'
|
43
|
+
autoload :PagePresenter, 'active_admin/page_presenter'
|
44
|
+
autoload :PageController, 'active_admin/page_controller'
|
45
|
+
autoload :PageDSL, 'active_admin/page_dsl'
|
46
|
+
autoload :PunditAdapter, 'active_admin/pundit_adapter'
|
47
|
+
autoload :Resource, 'active_admin/resource'
|
48
|
+
autoload :ResourceController, 'active_admin/resource_controller'
|
49
|
+
autoload :ResourceDSL, 'active_admin/resource_dsl'
|
50
|
+
autoload :Scope, 'active_admin/scope'
|
51
|
+
autoload :ScopeChain, 'active_admin/helpers/scope_chain'
|
52
|
+
autoload :SidebarSection, 'active_admin/sidebar_section'
|
53
|
+
autoload :TableBuilder, 'active_admin/table_builder'
|
54
|
+
autoload :ViewFactory, 'active_admin/view_factory'
|
55
|
+
autoload :ViewHelpers, 'active_admin/view_helpers'
|
56
|
+
autoload :Views, 'active_admin/views'
|
57
|
+
|
58
|
+
class << self
|
59
|
+
|
60
|
+
attr_accessor :application
|
61
|
+
|
62
|
+
def application
|
63
|
+
@application ||= ::ActiveAdmin::Application.new
|
64
|
+
end
|
65
|
+
|
66
|
+
# Gets called within the initializer
|
67
|
+
def setup
|
68
|
+
application.setup!
|
69
|
+
yield(application)
|
70
|
+
application.prepare!
|
71
|
+
end
|
72
|
+
|
73
|
+
delegate :register, to: :application
|
74
|
+
delegate :register_page, to: :application
|
75
|
+
delegate :unload!, to: :application
|
76
|
+
delegate :load!, to: :application
|
77
|
+
delegate :routes, to: :application
|
78
|
+
|
79
|
+
# A callback is triggered each time (before) Active Admin loads the configuration files.
|
80
|
+
# In development mode, this will happen whenever the user changes files. In production
|
81
|
+
# it only happens on boot.
|
82
|
+
#
|
83
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
84
|
+
#
|
85
|
+
# Example:
|
86
|
+
#
|
87
|
+
# ActiveAdmin.before_load do |app|
|
88
|
+
# # Do some stuff before AA loads
|
89
|
+
# end
|
90
|
+
#
|
91
|
+
# @param [Block] block A block to call each time (before) AA loads resources
|
92
|
+
def before_load(&block)
|
93
|
+
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::BeforeLoadEvent, &wrap_block_for_active_support_notifications(block)
|
94
|
+
end
|
95
|
+
|
96
|
+
# A callback is triggered each time (after) Active Admin loads the configuration files. This
|
97
|
+
# is an opportunity to hook into Resources after they've been loaded.
|
98
|
+
#
|
99
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
100
|
+
#
|
101
|
+
# Example:
|
102
|
+
#
|
103
|
+
# ActiveAdmin.after_load do |app|
|
104
|
+
# app.namespaces.each do |name, namespace|
|
105
|
+
# puts "Namespace: #{name} loaded!"
|
106
|
+
# end
|
107
|
+
# end
|
108
|
+
#
|
109
|
+
# @param [Block] block A block to call each time (after) AA loads resources
|
110
|
+
def after_load(&block)
|
111
|
+
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::AfterLoadEvent, &wrap_block_for_active_support_notifications(block)
|
112
|
+
end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def wrap_block_for_active_support_notifications block
|
117
|
+
proc { |event, *args| block.call *args }
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
# Require things that don't support autoload
|
125
|
+
require 'active_admin/engine'
|
126
|
+
require 'active_admin/error'
|
127
|
+
|
128
|
+
# Require internal plugins
|
129
|
+
require 'active_admin/batch_actions'
|
130
|
+
require 'active_admin/filters'
|
131
|
+
|
132
|
+
# Require ORM-specific plugins
|
133
|
+
require 'active_admin/orm/active_record' if defined? ActiveRecord
|
134
|
+
require 'active_admin/orm/mongoid' if defined? Mongoid
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class AbstractViewFactory < SettingsNode
|
3
|
+
|
4
|
+
def self.register(view_hash)
|
5
|
+
view_hash.each do |view_key, view_class|
|
6
|
+
super view_key, view_class
|
7
|
+
add_writer(view_key)
|
8
|
+
send "#{view_key}=", view_class
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.add_writer(name)
|
13
|
+
define_singleton_method("#{name}=") do |value|
|
14
|
+
value.builder_method name
|
15
|
+
instance_variable_set :"@#{name}", value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Register a new view key with the view factory
|
20
|
+
#
|
21
|
+
# eg:
|
22
|
+
#
|
23
|
+
# factory = AbstractViewFactory.new
|
24
|
+
# factory.register my_view: SomeViewClass
|
25
|
+
#
|
26
|
+
# You can setup many at the same time:
|
27
|
+
#
|
28
|
+
# factory.register my_view: SomeClass,
|
29
|
+
# another_view: OtherViewClass
|
30
|
+
#
|
31
|
+
def register(view_hash)
|
32
|
+
self.class.register view_hash
|
33
|
+
end
|
34
|
+
|
35
|
+
def default_for(key)
|
36
|
+
self.class.send key
|
37
|
+
end
|
38
|
+
|
39
|
+
def [](key)
|
40
|
+
send key
|
41
|
+
end
|
42
|
+
|
43
|
+
def []=(key, value)
|
44
|
+
send "#{key}=", value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,234 @@
|
|
1
|
+
require 'active_admin/router'
|
2
|
+
require 'active_admin/application_settings'
|
3
|
+
require 'active_admin/namespace_settings'
|
4
|
+
|
5
|
+
module ActiveAdmin
|
6
|
+
class Application
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def setting(name, default)
|
10
|
+
ApplicationSettings.register name, default
|
11
|
+
end
|
12
|
+
|
13
|
+
def inheritable_setting(name, default)
|
14
|
+
NamespaceSettings.register name, default
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def settings
|
19
|
+
@settings ||= SettingsNode.build(ApplicationSettings)
|
20
|
+
end
|
21
|
+
|
22
|
+
def namespace_settings
|
23
|
+
@namespace_settings ||= SettingsNode.build(NamespaceSettings)
|
24
|
+
end
|
25
|
+
|
26
|
+
def respond_to_missing?(method, include_private = false)
|
27
|
+
[settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
|
28
|
+
end
|
29
|
+
|
30
|
+
def method_missing(method, *args)
|
31
|
+
if settings.respond_to?(method)
|
32
|
+
settings.send(method, *args)
|
33
|
+
elsif namespace_settings.respond_to?(method)
|
34
|
+
namespace_settings.send(method, *args)
|
35
|
+
else
|
36
|
+
super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
attr_reader :namespaces
|
41
|
+
def initialize
|
42
|
+
@namespaces = Namespace::Store.new
|
43
|
+
end
|
44
|
+
|
45
|
+
include AssetRegistration
|
46
|
+
|
47
|
+
# Event that gets triggered on load of Active Admin
|
48
|
+
BeforeLoadEvent = 'active_admin.application.before_load'.freeze
|
49
|
+
AfterLoadEvent = 'active_admin.application.after_load'.freeze
|
50
|
+
|
51
|
+
# Runs before the app's AA initializer
|
52
|
+
def setup!
|
53
|
+
register_default_assets
|
54
|
+
end
|
55
|
+
|
56
|
+
# Runs after the app's AA initializer
|
57
|
+
def prepare!
|
58
|
+
remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
59
|
+
attach_reloader
|
60
|
+
end
|
61
|
+
|
62
|
+
# Registers a brand new configuration for the given resource.
|
63
|
+
def register(resource, options = {}, &block)
|
64
|
+
ns = options.fetch(:namespace) { default_namespace }
|
65
|
+
namespace(ns).register resource, options, &block
|
66
|
+
end
|
67
|
+
|
68
|
+
# Creates a namespace for the given name
|
69
|
+
#
|
70
|
+
# Yields the namespace if a block is given
|
71
|
+
#
|
72
|
+
# @return [Namespace] the new or existing namespace
|
73
|
+
def namespace(name)
|
74
|
+
name ||= :root
|
75
|
+
|
76
|
+
namespace = namespaces[name] ||= begin
|
77
|
+
namespace = Namespace.new(self, name)
|
78
|
+
ActiveSupport::Notifications.publish ActiveAdmin::Namespace::RegisterEvent, namespace
|
79
|
+
namespace
|
80
|
+
end
|
81
|
+
|
82
|
+
yield(namespace) if block_given?
|
83
|
+
|
84
|
+
namespace
|
85
|
+
end
|
86
|
+
|
87
|
+
# Register a page
|
88
|
+
#
|
89
|
+
# @param name [String] The page name
|
90
|
+
# @option [Hash] Accepts option :namespace.
|
91
|
+
# @&block The registration block.
|
92
|
+
#
|
93
|
+
def register_page(name, options = {}, &block)
|
94
|
+
ns = options.fetch(:namespace) { default_namespace }
|
95
|
+
namespace(ns).register_page name, options, &block
|
96
|
+
end
|
97
|
+
|
98
|
+
# Whether all configuration files have been loaded
|
99
|
+
def loaded?
|
100
|
+
@@loaded ||= false
|
101
|
+
end
|
102
|
+
|
103
|
+
# Removes all defined controllers from memory. Useful in
|
104
|
+
# development, where they are reloaded on each request.
|
105
|
+
def unload!
|
106
|
+
namespaces.each &:unload!
|
107
|
+
@@loaded = false
|
108
|
+
end
|
109
|
+
|
110
|
+
# Loads all ruby files that are within the load_paths setting.
|
111
|
+
# To reload everything simply call `ActiveAdmin.unload!`
|
112
|
+
def load!
|
113
|
+
unless loaded?
|
114
|
+
ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
|
115
|
+
files.each { |file| load file } # load files
|
116
|
+
namespace(default_namespace) # init AA resources
|
117
|
+
ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
|
118
|
+
@@loaded = true
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def load(file)
|
123
|
+
DatabaseHitDuringLoad.capture { super }
|
124
|
+
end
|
125
|
+
|
126
|
+
# Returns ALL the files to be loaded
|
127
|
+
def files
|
128
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
129
|
+
end
|
130
|
+
|
131
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
132
|
+
#
|
133
|
+
# Use this within the routes.rb file:
|
134
|
+
#
|
135
|
+
# Application.routes.draw do |map|
|
136
|
+
# ActiveAdmin.routes(self)
|
137
|
+
# end
|
138
|
+
#
|
139
|
+
# @param rails_router [ActionDispatch::Routing::Mapper]
|
140
|
+
def routes(rails_router)
|
141
|
+
load!
|
142
|
+
Router.new(router: rails_router, namespaces: namespaces).apply
|
143
|
+
end
|
144
|
+
|
145
|
+
# Adds before, around and after filters to all controllers.
|
146
|
+
# Example usage:
|
147
|
+
# ActiveAdmin.before_filter :authenticate_admin!
|
148
|
+
#
|
149
|
+
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
150
|
+
select { |m| m.match(/(filter|action)/) }.each do |name|
|
151
|
+
define_method name do |*args, &block|
|
152
|
+
controllers_for_filters.each do |controller|
|
153
|
+
controller.public_send name, *args, &block
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def controllers_for_filters
|
159
|
+
controllers = [BaseController]
|
160
|
+
controllers.push *Devise.controllers_for_filters if Dependency.devise?
|
161
|
+
controllers
|
162
|
+
end
|
163
|
+
|
164
|
+
private
|
165
|
+
|
166
|
+
def register_default_assets
|
167
|
+
register_stylesheet 'active_admin.css', media: 'screen'
|
168
|
+
register_stylesheet 'active_admin/print.css', media: 'print'
|
169
|
+
register_javascript 'active_admin.js'
|
170
|
+
end
|
171
|
+
|
172
|
+
# Since app/admin is alphabetically before app/models, we have to remove it
|
173
|
+
# from the host app's +autoload_paths+ to prevent missing constant errors.
|
174
|
+
#
|
175
|
+
# As well, we have to remove it from +eager_load_paths+ to prevent the
|
176
|
+
# files from being loaded twice in production.
|
177
|
+
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
178
|
+
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
180
|
+
end
|
181
|
+
|
182
|
+
# Hook into the Rails code reloading mechanism so that things are reloaded
|
183
|
+
# properly in development mode.
|
184
|
+
#
|
185
|
+
# If any of the app files (e.g. models) has changed, we need to reload all
|
186
|
+
# the admin files. If the admin files themselves has changed, we need to
|
187
|
+
# regenerate the routes as well.
|
188
|
+
def attach_reloader
|
189
|
+
Rails.application.config.after_initialize do |app|
|
190
|
+
unload_active_admin = -> { ActiveAdmin.application.unload! }
|
191
|
+
|
192
|
+
if app.config.reload_classes_only_on_change
|
193
|
+
# Rails is about to unload all the app files (e.g. models), so we
|
194
|
+
# should first unload the classes generated by Active Admin, otherwise
|
195
|
+
# they will contain references to the stale (unloaded) classes.
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
197
|
+
else
|
198
|
+
# If the user has configured the app to always reload app files after
|
199
|
+
# each request, so we should unload the generated classes too.
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
201
|
+
end
|
202
|
+
|
203
|
+
admin_dirs = {}
|
204
|
+
|
205
|
+
load_paths.each do |path|
|
206
|
+
admin_dirs[path] = [:rb]
|
207
|
+
end
|
208
|
+
|
209
|
+
routes_reloader = app.config.file_watcher.new([], admin_dirs) do
|
210
|
+
app.reload_routes!
|
211
|
+
end
|
212
|
+
|
213
|
+
app.reloaders << routes_reloader
|
214
|
+
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
216
|
+
# Rails might have reloaded the routes for other reasons (e.g.
|
217
|
+
# routes.rb has changed), in which case Active Admin would have been
|
218
|
+
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
219
|
+
#
|
220
|
+
# Otherwise, we should check if any of the admin files are changed
|
221
|
+
# and force the routes to reload if necessary. This would again causes
|
222
|
+
# Active Admin to load via `ActiveAdmin.routes`.
|
223
|
+
#
|
224
|
+
# Finally, if Active Admin is still not loaded at this point, then we
|
225
|
+
# would need to load it manually.
|
226
|
+
unless ActiveAdmin.application.loaded?
|
227
|
+
routes_reloader.execute_if_updated
|
228
|
+
ActiveAdmin.application.load!
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'active_admin/settings_node'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
class ApplicationSettings < SettingsNode
|
5
|
+
|
6
|
+
# The default namespace to put controllers and routes inside. Set this
|
7
|
+
# in config/initializers/active_admin.rb using:
|
8
|
+
#
|
9
|
+
# config.default_namespace = :super_admin
|
10
|
+
#
|
11
|
+
register :default_namespace, :admin
|
12
|
+
|
13
|
+
register :app_path, Rails.root
|
14
|
+
|
15
|
+
# Load paths for admin configurations. Add folders to this load path
|
16
|
+
# to load up other resources for administration. External gems can
|
17
|
+
# include their paths in this load path to provide active_admin UIs
|
18
|
+
register :load_paths, [File.expand_path('app/admin', Rails.root)]
|
19
|
+
|
20
|
+
# Set default localize format for Date/Time values
|
21
|
+
register :localize_format, :long
|
22
|
+
|
23
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
24
|
+
# the list of methods it tries calling in order
|
25
|
+
# Note that Formtastic also has 'collection_label_methods' similar to this
|
26
|
+
# used by auto generated dropdowns in filter or belongs_to field of Active Admin
|
27
|
+
register :display_name_methods, [ :display_name,
|
28
|
+
:full_name,
|
29
|
+
:name,
|
30
|
+
:username,
|
31
|
+
:login,
|
32
|
+
:title,
|
33
|
+
:email,
|
34
|
+
:to_s ]
|
35
|
+
|
36
|
+
# To make debugging easier, by default don't stream in development
|
37
|
+
register :disable_streaming_in, ['development']
|
38
|
+
|
39
|
+
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
40
|
+
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
41
|
+
end
|
42
|
+
end
|