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,59 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module ViewHelpers
|
3
|
+
module DownloadFormatLinksHelper
|
4
|
+
private
|
5
|
+
|
6
|
+
def build_download_formats(download_links)
|
7
|
+
download_links = instance_exec(&download_links) if download_links.is_a?(Proc)
|
8
|
+
|
9
|
+
if download_links.is_a?(Array) && !download_links.empty?
|
10
|
+
download_links
|
11
|
+
elsif download_links == false
|
12
|
+
[]
|
13
|
+
else
|
14
|
+
self.class.formats
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_download_format_links(formats = self.class.formats)
|
19
|
+
params = request.query_parameters.except :format, :commit
|
20
|
+
div class: "download_links" do
|
21
|
+
span I18n.t('active_admin.download')
|
22
|
+
formats.each do |format|
|
23
|
+
a format.upcase, href: url_for(params: params, format: format)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.included base
|
29
|
+
base.extend ClassMethods
|
30
|
+
end
|
31
|
+
|
32
|
+
module ClassMethods
|
33
|
+
|
34
|
+
# A ready only of formats to make available in index/paginated
|
35
|
+
# collection view.
|
36
|
+
# @return [Array]
|
37
|
+
# @see add_format for information on adding custom download link
|
38
|
+
# formats
|
39
|
+
def formats
|
40
|
+
@formats ||= [:csv, :xml, :json]
|
41
|
+
@formats.clone
|
42
|
+
end
|
43
|
+
|
44
|
+
# Adds a mime type to the list of available formats available for data
|
45
|
+
# export. You must register the extension prior to adding it here.
|
46
|
+
# @param [Symbol] format the mime type to add
|
47
|
+
# @return [Array] A copy of the updated formats array.
|
48
|
+
def add_format(format)
|
49
|
+
unless Mime::Type.lookup_by_extension format
|
50
|
+
raise ArgumentError, "Please register the #{format} mime type with `Mime::Type.register`"
|
51
|
+
end
|
52
|
+
@formats << format unless formats.include? format
|
53
|
+
formats
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module ViewHelpers
|
3
|
+
module FormHelper
|
4
|
+
|
5
|
+
# Flatten a params Hash to an array of fields.
|
6
|
+
#
|
7
|
+
# @param params [Hash]
|
8
|
+
# @param options [Hash] :namespace and :except
|
9
|
+
#
|
10
|
+
# @return [Array] of [Hash] with one element.
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# fields_for_params(scope: "all", users: ["greg"])
|
14
|
+
# => [ {"scope" => "all"} , {"users[]" => "greg"} ]
|
15
|
+
#
|
16
|
+
def fields_for_params(params, options = {})
|
17
|
+
namespace = options[:namespace]
|
18
|
+
except = Array.wrap(options[:except]).map &:to_s
|
19
|
+
|
20
|
+
params.flat_map do |k, v|
|
21
|
+
next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
|
22
|
+
next if except.include?(k.to_s)
|
23
|
+
|
24
|
+
if namespace
|
25
|
+
k = "#{namespace}[#{k}]"
|
26
|
+
end
|
27
|
+
|
28
|
+
case v
|
29
|
+
when String
|
30
|
+
{ k => v }
|
31
|
+
when Symbol
|
32
|
+
{ k => v.to_s }
|
33
|
+
when Hash
|
34
|
+
fields_for_params(v, namespace: k)
|
35
|
+
when Array
|
36
|
+
v.map do |v|
|
37
|
+
{ "#{k}[]" => v }
|
38
|
+
end
|
39
|
+
when nil
|
40
|
+
{ k => '' }
|
41
|
+
when TrueClass, FalseClass
|
42
|
+
{ k => v }
|
43
|
+
else
|
44
|
+
raise "I don't know what to do with #{v.class} params: #{v.inspect}"
|
45
|
+
end
|
46
|
+
end.compact
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module ViewHelpers
|
3
|
+
module FlashHelper
|
4
|
+
|
5
|
+
# Returns all the flash keys to display in any Active Admin view.
|
6
|
+
# This method removes the :timedout key that Devise uses by default.
|
7
|
+
# Note Rails >= 4.1 normalizes keys to strings automatically.
|
8
|
+
def flash_messages
|
9
|
+
@flash_messages ||= flash.to_hash.with_indifferent_access.except(*active_admin_application.flash_keys_to_except)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module ViewHelpers
|
3
|
+
module FormHelper
|
4
|
+
|
5
|
+
def active_admin_form_for(resource, options = {}, &block)
|
6
|
+
Arbre::Context.new({}, self) do
|
7
|
+
active_admin_form_for resource, options, &block
|
8
|
+
end.content
|
9
|
+
end
|
10
|
+
|
11
|
+
def hidden_field_tags_for(params, options = {})
|
12
|
+
fields_for_params(params.to_unsafe_hash, options).map do |kv|
|
13
|
+
k, v = kv.first
|
14
|
+
hidden_field_tag k, v, id: sanitize_to_id("hidden_active_admin_#{k}")
|
15
|
+
end.join("\n").html_safe
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# Utility methods for internal use.
|
2
|
+
# @private
|
3
|
+
module MethodOrProcHelper
|
4
|
+
extend self
|
5
|
+
|
6
|
+
# This method will either call the symbol on self or instance_exec the Proc
|
7
|
+
# within self. Any args will be passed along to the method dispatch.
|
8
|
+
#
|
9
|
+
# Calling with a Symbol:
|
10
|
+
#
|
11
|
+
# call_method_or_exec_proc(:to_s) #=> will call #to_s
|
12
|
+
#
|
13
|
+
# Calling with a Proc
|
14
|
+
#
|
15
|
+
# my_proc = Proc.new{ to_s }
|
16
|
+
# call_method_or_exec_proc(my_proc) #=> will instance_exec in self
|
17
|
+
#
|
18
|
+
def call_method_or_exec_proc(symbol_or_proc, *args)
|
19
|
+
case symbol_or_proc
|
20
|
+
when Symbol, String
|
21
|
+
send(symbol_or_proc, *args)
|
22
|
+
when Proc
|
23
|
+
instance_exec(*args, &symbol_or_proc)
|
24
|
+
else
|
25
|
+
symbol_or_proc
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Many times throughout the views we want to either call a method on an object
|
30
|
+
# or instance_exec a proc passing in the object as the first parameter. This
|
31
|
+
# method wraps that pattern.
|
32
|
+
#
|
33
|
+
# Calling with a String or Symbol:
|
34
|
+
#
|
35
|
+
# call_method_or_proc_on(@my_obj, :size) same as @my_obj.size
|
36
|
+
#
|
37
|
+
# Calling with a Proc:
|
38
|
+
#
|
39
|
+
# proc = Proc.new{|s| s.size }
|
40
|
+
# call_method_or_proc_on(@my_obj, proc)
|
41
|
+
#
|
42
|
+
# By default, the Proc will be instance_exec'd within self. If you would rather
|
43
|
+
# not instance exec, but just call the Proc, then pass along `exec: false` in
|
44
|
+
# the options hash.
|
45
|
+
#
|
46
|
+
# proc = Proc.new{|s| s.size }
|
47
|
+
# call_method_or_proc_on(@my_obj, proc, exec: false)
|
48
|
+
#
|
49
|
+
# You can pass along any necessary arguments to the method / Proc as arguments. For
|
50
|
+
# example:
|
51
|
+
#
|
52
|
+
# call_method_or_proc_on(@my_obj, :find, 1) #=> @my_obj.find(1)
|
53
|
+
#
|
54
|
+
def call_method_or_proc_on(receiver, *args)
|
55
|
+
options = { exec: true }.merge(args.extract_options!)
|
56
|
+
|
57
|
+
symbol_or_proc = args.shift
|
58
|
+
|
59
|
+
case symbol_or_proc
|
60
|
+
when Symbol, String
|
61
|
+
receiver.public_send symbol_or_proc.to_sym, *args
|
62
|
+
when Proc
|
63
|
+
if options[:exec]
|
64
|
+
instance_exec(receiver, *args, &symbol_or_proc)
|
65
|
+
else
|
66
|
+
symbol_or_proc.call(receiver, *args)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
symbol_or_proc
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Many configuration options (Ex: site_title, title_image) could either be
|
74
|
+
# static (String), methods (Symbol) or procs (Proc). This helper takes care of
|
75
|
+
# returning the content when String or call call_method_or_proc_on when Symbol or Proc.
|
76
|
+
#
|
77
|
+
def render_or_call_method_or_proc_on(obj, string_symbol_or_proc, options = {})
|
78
|
+
case string_symbol_or_proc
|
79
|
+
when Symbol, Proc
|
80
|
+
call_method_or_proc_on(obj, string_symbol_or_proc, options)
|
81
|
+
else
|
82
|
+
string_symbol_or_proc
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# This method is different from the others in that it calls `instance_exec` on the receiver,
|
87
|
+
# passing it the proc. This evaluates the proc in the context of the receiver, thus changing
|
88
|
+
# what `self` means inside the proc.
|
89
|
+
def render_in_context(context, obj, *args)
|
90
|
+
context = self if context.nil? # default to `self` only when nil
|
91
|
+
case obj
|
92
|
+
when Proc
|
93
|
+
context.instance_exec *args, &obj
|
94
|
+
when Symbol
|
95
|
+
context.public_send obj, *args
|
96
|
+
else
|
97
|
+
obj
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
class ActionItems < ActiveAdmin::Component
|
5
|
+
|
6
|
+
def build(action_items)
|
7
|
+
action_items.each do |action_item|
|
8
|
+
span class: action_item.html_class do
|
9
|
+
instance_exec(&action_item.block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class FormtasticProxy < ::Arbre::Rails::Forms::FormBuilderProxy
|
4
|
+
def split_string_on(string, match)
|
5
|
+
return "" unless string && match
|
6
|
+
part_1 = string.split(Regexp.new("#{match}\\z")).first
|
7
|
+
[part_1, match]
|
8
|
+
end
|
9
|
+
|
10
|
+
def opening_tag
|
11
|
+
@opening_tag || ""
|
12
|
+
end
|
13
|
+
|
14
|
+
def closing_tag
|
15
|
+
@closing_tag || ""
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
opening_tag << children.to_s << closing_tag
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class ActiveAdminForm < FormtasticProxy
|
24
|
+
builder_method :active_admin_form_for
|
25
|
+
|
26
|
+
def build(resource, options = {}, &block)
|
27
|
+
@resource = resource
|
28
|
+
options = options.deep_dup
|
29
|
+
options[:builder] ||= ActiveAdmin::FormBuilder
|
30
|
+
form_string = helpers.semantic_form_for(resource, options) do |f|
|
31
|
+
@form_builder = f
|
32
|
+
end
|
33
|
+
|
34
|
+
@opening_tag, @closing_tag = split_string_on(form_string, "</form>")
|
35
|
+
instance_eval(&block) if block_given?
|
36
|
+
|
37
|
+
# Rails sets multipart automatically if a file field is present,
|
38
|
+
# but the form tag has already been rendered before the block eval.
|
39
|
+
if multipart? && @opening_tag !~ /multipart/
|
40
|
+
@opening_tag.sub!(/<form/, '<form enctype="multipart/form-data"')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def inputs(*args, &block)
|
45
|
+
if block_given?
|
46
|
+
form_builder.template.assigns[:has_many_block] = true
|
47
|
+
end
|
48
|
+
if block_given? && block.arity == 0
|
49
|
+
wrapped_block = proc do
|
50
|
+
wrap_it = form_builder.already_in_an_inputs_block ? true : false
|
51
|
+
form_builder.already_in_an_inputs_block = true
|
52
|
+
content = form_builder.template.capture do
|
53
|
+
block.call
|
54
|
+
end
|
55
|
+
form_builder.already_in_an_inputs_block = wrap_it
|
56
|
+
content
|
57
|
+
end
|
58
|
+
insert_tag(SemanticInputsProxy, form_builder, *args, &wrapped_block)
|
59
|
+
else
|
60
|
+
# Set except option to prevent sensitive fields from being shown in forms by default.
|
61
|
+
opts = args.extract_options!
|
62
|
+
opts[:except] ||= []
|
63
|
+
ActiveAdmin.application.filter_attributes.each { |e| opts[:except] << e }
|
64
|
+
args << opts
|
65
|
+
|
66
|
+
proxy_call_to_form(:inputs, *args, &block)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def input(*args)
|
71
|
+
proxy_call_to_form :input, *args
|
72
|
+
end
|
73
|
+
|
74
|
+
def actions(*args, &block)
|
75
|
+
block_given? ?
|
76
|
+
insert_tag(SemanticActionsProxy, form_builder, *args, &block) :
|
77
|
+
actions(*args) { commit_action_with_cancel_link }
|
78
|
+
end
|
79
|
+
|
80
|
+
def commit_action_with_cancel_link
|
81
|
+
add_create_another_checkbox
|
82
|
+
action(:submit)
|
83
|
+
cancel_link
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_create_another_checkbox
|
87
|
+
if %w(new create).include?(helpers.action_name) && active_admin_config && active_admin_config.create_another
|
88
|
+
current_arbre_element.add_child(create_another_checkbox)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def has_many(*args, &block)
|
93
|
+
insert_tag(HasManyProxy, form_builder, *args, &block)
|
94
|
+
end
|
95
|
+
|
96
|
+
def multipart?
|
97
|
+
form_builder && form_builder.multipart?
|
98
|
+
end
|
99
|
+
|
100
|
+
def object
|
101
|
+
form_builder.object
|
102
|
+
end
|
103
|
+
|
104
|
+
def form_buffers
|
105
|
+
raise "'form_buffers' has been removed from ActiveAdmin::FormBuilder, please read https://github.com/activeadmin/activeadmin/blob/master/docs/5-forms.md for details."
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def create_another_checkbox
|
111
|
+
create_another = params[:create_another]
|
112
|
+
label = @resource.class.model_name.human
|
113
|
+
Arbre::Context.new do
|
114
|
+
li class: 'create_another' do
|
115
|
+
input(
|
116
|
+
checked: create_another,
|
117
|
+
id: 'create_another',
|
118
|
+
name: 'create_another',
|
119
|
+
type: 'checkbox'
|
120
|
+
)
|
121
|
+
label(I18n.t('active_admin.create_another', model: label), for: 'create_another')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
class SemanticInputsProxy < FormtasticProxy
|
128
|
+
def build(form_builder, *args, &block)
|
129
|
+
html_options = args.extract_options!
|
130
|
+
html_options[:class] ||= "inputs"
|
131
|
+
legend = args.shift if args.first.is_a?(::String)
|
132
|
+
legend = html_options.delete(:name) if html_options.key?(:name)
|
133
|
+
legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
|
134
|
+
fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
|
135
|
+
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
|
136
|
+
@closing_tag = "</ol></fieldset>"
|
137
|
+
super(*(args << html_options), &block)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
class SemanticActionsProxy < FormtasticProxy
|
142
|
+
def build(form_builder, *args, &block)
|
143
|
+
@opening_tag = "<fieldset class=\"actions\"><ol>"
|
144
|
+
@closing_tag = "</ol></fieldset>"
|
145
|
+
super(*args, &block)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
class HasManyProxy < FormtasticProxy
|
150
|
+
def build(form_builder, *args, &block)
|
151
|
+
text_node form_builder.has_many(*args, &block)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|