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,24 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class BooleanInput < ::Formtastic::Inputs::SelectInput
|
5
|
+
include Base
|
6
|
+
|
7
|
+
def input_name
|
8
|
+
return method if seems_searchable?
|
9
|
+
|
10
|
+
"#{method}_eq"
|
11
|
+
end
|
12
|
+
|
13
|
+
def input_html_options_name
|
14
|
+
"#{object_name}[#{input_name}]" # was "#{object_name}[#{association_primary_key}]"
|
15
|
+
end
|
16
|
+
|
17
|
+
# Provide the AA translation to the blank input field.
|
18
|
+
def include_blank
|
19
|
+
I18n.t 'active_admin.any' if super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class CheckBoxesInput < ::Formtastic::Inputs::CheckBoxesInput
|
5
|
+
include Base
|
6
|
+
|
7
|
+
def input_name
|
8
|
+
"#{object_name}[#{searchable_method_name}_in][]"
|
9
|
+
end
|
10
|
+
|
11
|
+
def selected_values
|
12
|
+
@object.public_send("#{searchable_method_name}_in") || []
|
13
|
+
end
|
14
|
+
|
15
|
+
def searchable_method_name
|
16
|
+
if searchable_has_many_through?
|
17
|
+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
|
18
|
+
else
|
19
|
+
association_primary_key || method
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Add whitespace before label
|
24
|
+
def choice_label(choice)
|
25
|
+
' ' + super
|
26
|
+
end
|
27
|
+
|
28
|
+
# Don't wrap in UL tag
|
29
|
+
def choices_group_wrapping(&block)
|
30
|
+
template.capture(&block)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Don't wrap in LI tag
|
34
|
+
def choice_wrapping(html_options, &block)
|
35
|
+
template.capture(&block)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Don't render hidden fields
|
39
|
+
def hidden_field_for_all
|
40
|
+
""
|
41
|
+
end
|
42
|
+
|
43
|
+
# Don't render hidden fields
|
44
|
+
def hidden_fields?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class DateRangeInput < ::Formtastic::Inputs::StringInput
|
5
|
+
include Base
|
6
|
+
|
7
|
+
def to_html
|
8
|
+
input_wrapping do
|
9
|
+
[ label_html,
|
10
|
+
builder.text_field(gt_input_name, input_html_options(gt_input_name, gt_input_placeholder)),
|
11
|
+
builder.text_field(lt_input_name, input_html_options(lt_input_name, lt_input_placeholder)),
|
12
|
+
].join("\n").html_safe
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def gt_input_name
|
17
|
+
column && column.type == :date ? "#{method}_gteq" : "#{method}_gteq_datetime"
|
18
|
+
end
|
19
|
+
alias :input_name :gt_input_name
|
20
|
+
|
21
|
+
def lt_input_name
|
22
|
+
column && column.type == :date ? "#{method}_lteq" : "#{method}_lteq_datetime"
|
23
|
+
end
|
24
|
+
|
25
|
+
def input_html_options(input_name = gt_input_name, placeholder = gt_input_placeholder)
|
26
|
+
current_value = begin
|
27
|
+
#cast value to date object before rendering input
|
28
|
+
@object.public_send(input_name).to_s.to_date
|
29
|
+
rescue
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
{ size: 12,
|
33
|
+
class: "datepicker",
|
34
|
+
maxlength: 10,
|
35
|
+
placeholder: placeholder,
|
36
|
+
value: current_value ? current_value.strftime("%Y-%m-%d") : "" }
|
37
|
+
end
|
38
|
+
|
39
|
+
def gt_input_placeholder
|
40
|
+
I18n.t("active_admin.filters.predicates.from")
|
41
|
+
end
|
42
|
+
|
43
|
+
def lt_input_placeholder
|
44
|
+
I18n.t("active_admin.filters.predicates.to")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class SelectInput < ::Formtastic::Inputs::SelectInput
|
5
|
+
include Base
|
6
|
+
|
7
|
+
def input_name
|
8
|
+
return method if seems_searchable?
|
9
|
+
|
10
|
+
searchable_method_name + (multiple? ? '_in' : '_eq')
|
11
|
+
end
|
12
|
+
|
13
|
+
def searchable_method_name
|
14
|
+
if searchable_has_many_through?
|
15
|
+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
|
16
|
+
else
|
17
|
+
name = method.to_s
|
18
|
+
name.concat "_#{reflection.association_primary_key}" if reflection_searchable?
|
19
|
+
name
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Provide the AA translation to the blank input field.
|
24
|
+
def include_blank
|
25
|
+
I18n.t 'active_admin.any' if super
|
26
|
+
end
|
27
|
+
|
28
|
+
def input_html_options_name
|
29
|
+
"#{object_name}[#{input_name}]" # was "#{object_name}[#{association_primary_key}]"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Would normally return true for has_many and HABTM, which would subsequently
|
33
|
+
# cause the select field to be multi-select instead of a dropdown.
|
34
|
+
def multiple_by_association?
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
# Provides an efficient default lookup query if the attribute is a DB column.
|
39
|
+
def collection
|
40
|
+
if !options[:collection] && column
|
41
|
+
pluck_column
|
42
|
+
else
|
43
|
+
super
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def pluck_column
|
48
|
+
klass.reorder("#{method} asc").distinct.pluck method
|
49
|
+
end
|
50
|
+
|
51
|
+
def reflection_searchable?
|
52
|
+
reflection && !reflection.polymorphic?
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class StringInput < ::Formtastic::Inputs::StringInput
|
5
|
+
include Base
|
6
|
+
include Base::SearchMethodSelect
|
7
|
+
|
8
|
+
filter :contains, :equals, :starts_with, :ends_with
|
9
|
+
|
10
|
+
# If the filter method includes a search condition, build a normal string search field.
|
11
|
+
# Else, build a search field with a companion dropdown to choose a search condition from.
|
12
|
+
def to_html
|
13
|
+
if seems_searchable?
|
14
|
+
input_wrapping do
|
15
|
+
label_html <<
|
16
|
+
builder.text_field(method, input_html_options)
|
17
|
+
end
|
18
|
+
else
|
19
|
+
super # SearchMethodSelect#to_html
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Inputs
|
3
|
+
module Filters
|
4
|
+
class TextInput < ::Formtastic::Inputs::TextInput
|
5
|
+
include Base
|
6
|
+
include Base::SearchMethodSelect
|
7
|
+
|
8
|
+
def input_html_options
|
9
|
+
{
|
10
|
+
cols: builder.default_text_area_width,
|
11
|
+
rows: builder.default_text_area_height
|
12
|
+
}.merge(super)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_html
|
16
|
+
input_wrapping do
|
17
|
+
label_html <<
|
18
|
+
builder.text_area(method, input_html_options)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Localizers
|
3
|
+
class ResourceLocalizer
|
4
|
+
class << self
|
5
|
+
def from_resource(resource_config)
|
6
|
+
new(resource_config.resource_name.i18n_key, resource_config.resource_label)
|
7
|
+
end
|
8
|
+
|
9
|
+
def translate(key, options)
|
10
|
+
new(options.delete(:model_name), options.delete(:model)).translate(key, options)
|
11
|
+
end
|
12
|
+
alias_method :t, :translate
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(model_name, model = nil)
|
16
|
+
@model_name = model_name
|
17
|
+
@model = model || model_name.to_s.titleize
|
18
|
+
end
|
19
|
+
|
20
|
+
def translate(key, options = {})
|
21
|
+
scope = options.delete(:scope)
|
22
|
+
specific_key = array_to_key('resources', @model_name, scope, key)
|
23
|
+
defaults = [array_to_key(scope, key), key.to_s.titleize]
|
24
|
+
::I18n.t specific_key, options.reverse_merge(model: @model, default: defaults, scope: 'active_admin')
|
25
|
+
end
|
26
|
+
alias_method :t, :translate
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def array_to_key(*arr)
|
31
|
+
arr.flatten.compact.join('.').to_sym
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
# Each Namespace builds up it's own menu as the global navigation
|
4
|
+
#
|
5
|
+
# To build a new menu:
|
6
|
+
#
|
7
|
+
# menu = Menu.new do |m|
|
8
|
+
# m.add label: 'Dashboard', url: '/'
|
9
|
+
# m.add label: 'Users', url: '/users'
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# If you're interested in configuring a menu item, take a look at the
|
13
|
+
# options available in `ActiveAdmin::MenuItem`
|
14
|
+
#
|
15
|
+
class Menu
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
super # MenuNode
|
19
|
+
yield(self) if block_given?
|
20
|
+
end
|
21
|
+
|
22
|
+
module MenuNode
|
23
|
+
def initialize
|
24
|
+
@children = {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def [](id)
|
28
|
+
@children[normalize_id(id)]
|
29
|
+
end
|
30
|
+
|
31
|
+
def []=(id, child)
|
32
|
+
@children[normalize_id(id)] = child
|
33
|
+
end
|
34
|
+
|
35
|
+
# Recursively builds any given menu items. There are two syntaxes supported,
|
36
|
+
# as shown in the below examples. Both create an identical menu structure.
|
37
|
+
#
|
38
|
+
# Example 1:
|
39
|
+
# menu = Menu.new
|
40
|
+
# menu.add label: 'Dashboard' do |dash|
|
41
|
+
# dash.add label: 'My Child Dashboard'
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# Example 2:
|
45
|
+
# menu = Menu.new
|
46
|
+
# menu.add label: 'Dashboard'
|
47
|
+
# menu.add parent: 'Dashboard', label: 'My Child Dashboard'
|
48
|
+
#
|
49
|
+
def add(options)
|
50
|
+
item = if parent = options.delete(:parent)
|
51
|
+
(self[parent] || add(label: parent)).add options
|
52
|
+
else
|
53
|
+
_add options.merge parent: self
|
54
|
+
end
|
55
|
+
|
56
|
+
yield(item) if block_given?
|
57
|
+
|
58
|
+
item
|
59
|
+
end
|
60
|
+
|
61
|
+
# Whether any children match the given item.
|
62
|
+
def include?(item)
|
63
|
+
@children.values.include? item
|
64
|
+
end
|
65
|
+
|
66
|
+
# Used in the UI to visually distinguish which menu item is selected.
|
67
|
+
def current?(item)
|
68
|
+
self == item || include?(item)
|
69
|
+
end
|
70
|
+
|
71
|
+
def items
|
72
|
+
@children.values
|
73
|
+
end
|
74
|
+
|
75
|
+
attr_reader :children
|
76
|
+
private
|
77
|
+
attr_writer :children
|
78
|
+
|
79
|
+
# The method that actually adds new menu items. Called by the public method.
|
80
|
+
# If this ID is already taken, transfer the children of the existing item to the new item.
|
81
|
+
def _add(options)
|
82
|
+
item = ActiveAdmin::MenuItem.new(options)
|
83
|
+
item.send :children=, self[item.id].children if self[item.id]
|
84
|
+
self[item.id] = item
|
85
|
+
end
|
86
|
+
|
87
|
+
def normalize_id(id)
|
88
|
+
case id
|
89
|
+
when String, Symbol, ActiveModel::Name
|
90
|
+
id.to_s.downcase.tr ' ', '_'
|
91
|
+
when ActiveAdmin::Resource::Name
|
92
|
+
id.param_key
|
93
|
+
else
|
94
|
+
raise TypeError, "#{id.class} isn't supported as a Menu ID"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
include MenuNode
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
DEFAULT_MENU = :default
|
4
|
+
|
5
|
+
# A MenuCollection stores multiple menus for any given namespace. Namespaces delegate
|
6
|
+
# the addition of menu items to this class.
|
7
|
+
class MenuCollection
|
8
|
+
def initialize
|
9
|
+
@menus = {}
|
10
|
+
@build_callbacks = []
|
11
|
+
@built = false
|
12
|
+
end
|
13
|
+
|
14
|
+
# Add a new menu item to a menu in the collection
|
15
|
+
def add(menu_name, menu_item_options = {})
|
16
|
+
menu = find_or_create(menu_name)
|
17
|
+
|
18
|
+
menu.add menu_item_options
|
19
|
+
end
|
20
|
+
|
21
|
+
def clear!
|
22
|
+
@menus = {}
|
23
|
+
@built = false
|
24
|
+
end
|
25
|
+
|
26
|
+
def exists?(menu_name)
|
27
|
+
@menus.keys.include? menu_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def fetch(menu_name)
|
31
|
+
build_menus!
|
32
|
+
|
33
|
+
@menus[menu_name] or
|
34
|
+
raise NoMenuError, "No menu by the name of #{menu_name.inspect} in available menus: #{@menus.keys.join(", ")}"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Add callbacks that will be run when the menu is going to be built. This
|
38
|
+
# helps use with reloading and allows configurations to add items to menus.
|
39
|
+
#
|
40
|
+
# @param [Proc] block A block which will be ran when the menu is built. The
|
41
|
+
# will have the menu collection yielded.
|
42
|
+
def on_build(&block)
|
43
|
+
@build_callbacks << block
|
44
|
+
end
|
45
|
+
|
46
|
+
# Add callbacks that will be run before the menu is built
|
47
|
+
def before_build(&block)
|
48
|
+
@build_callbacks.unshift(block)
|
49
|
+
end
|
50
|
+
|
51
|
+
def menu(menu_name)
|
52
|
+
menu = find_or_create(menu_name)
|
53
|
+
|
54
|
+
yield(menu) if block_given?
|
55
|
+
|
56
|
+
menu
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def built?
|
62
|
+
@built
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_menus!
|
66
|
+
return if built?
|
67
|
+
|
68
|
+
build_default_menu
|
69
|
+
run_on_build_callbacks
|
70
|
+
|
71
|
+
@built = true
|
72
|
+
end
|
73
|
+
|
74
|
+
def run_on_build_callbacks
|
75
|
+
@build_callbacks.each do |callback|
|
76
|
+
callback.call(self)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def build_default_menu
|
81
|
+
find_or_create DEFAULT_MENU
|
82
|
+
end
|
83
|
+
|
84
|
+
def find_or_create(menu_name)
|
85
|
+
menu_name ||= DEFAULT_MENU
|
86
|
+
@menus[menu_name] ||= ActiveAdmin::Menu.new
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|