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,32 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
# This is the class where all the register_page blocks are evaluated.
|
3
|
+
class PageDSL < DSL
|
4
|
+
|
5
|
+
# Page content.
|
6
|
+
#
|
7
|
+
# The block should define the view using Arbre.
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
#
|
11
|
+
# ActiveAdmin.register "My Page" do
|
12
|
+
# content do
|
13
|
+
# para "Sweet!"
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
def content(options = {}, &block)
|
18
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def page_action(name, options = {}, &block)
|
22
|
+
config.page_actions << ControllerAction.new(name, options)
|
23
|
+
controller do
|
24
|
+
define_method(name, &block || Proc.new {})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def belongs_to(target, options = {})
|
29
|
+
config.belongs_to(target, options)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
# A simple object that gets used to present different aspects of views
|
4
|
+
#
|
5
|
+
# Initialize with a set of options and a block. The options become
|
6
|
+
# available using hash style syntax.
|
7
|
+
#
|
8
|
+
# Usage:
|
9
|
+
#
|
10
|
+
# presenter = PagePresenter.new as: :table do
|
11
|
+
# # some awesome stuff
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# presenter[:as] #=> :table
|
15
|
+
# presenter.block #=> The block passed in to new
|
16
|
+
#
|
17
|
+
class PagePresenter
|
18
|
+
|
19
|
+
attr_reader :block, :options
|
20
|
+
|
21
|
+
delegate :has_key?, :fetch, to: :options
|
22
|
+
|
23
|
+
def initialize(options = {}, &block)
|
24
|
+
@options = options
|
25
|
+
@block = block
|
26
|
+
end
|
27
|
+
|
28
|
+
def [](key)
|
29
|
+
@options[key]
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
ActiveAdmin::Dependency.pundit!
|
2
|
+
|
3
|
+
require 'pundit'
|
4
|
+
|
5
|
+
# Add a setting to the application to configure the pundit default policy
|
6
|
+
ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
|
7
|
+
ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
|
8
|
+
|
9
|
+
module ActiveAdmin
|
10
|
+
|
11
|
+
class PunditAdapter < AuthorizationAdapter
|
12
|
+
|
13
|
+
def authorized?(action, subject = nil)
|
14
|
+
policy = retrieve_policy(subject)
|
15
|
+
action = format_action(action, subject)
|
16
|
+
|
17
|
+
policy.respond_to?(action) && policy.public_send(action)
|
18
|
+
end
|
19
|
+
|
20
|
+
def scope_collection(collection, action = Auth::READ)
|
21
|
+
# scoping is appliable only to read/index action
|
22
|
+
# which means there is no way how to scope other actions
|
23
|
+
Pundit.policy_scope!(user, namespace(collection))
|
24
|
+
rescue Pundit::NotDefinedError => e
|
25
|
+
if default_policy_class && default_policy_class.const_defined?(:Scope)
|
26
|
+
default_policy_class::Scope.new(user, collection).resolve
|
27
|
+
else
|
28
|
+
raise e
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def retrieve_policy(subject)
|
33
|
+
case subject
|
34
|
+
when nil then Pundit.policy!(user, namespace(resource))
|
35
|
+
when Class then Pundit.policy!(user, namespace(subject.new))
|
36
|
+
else Pundit.policy!(user, namespace(subject))
|
37
|
+
end
|
38
|
+
rescue Pundit::NotDefinedError => e
|
39
|
+
if default_policy_class
|
40
|
+
default_policy(user, subject)
|
41
|
+
else
|
42
|
+
raise e
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def format_action(action, subject)
|
47
|
+
# https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
|
48
|
+
case action
|
49
|
+
when Auth::CREATE then :create?
|
50
|
+
when Auth::UPDATE then :update?
|
51
|
+
when Auth::READ then subject.is_a?(Class) ? :index? : :show?
|
52
|
+
when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
|
53
|
+
else "#{action}?"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def namespace(object)
|
60
|
+
if default_policy_namespace && !object.class.to_s.include?(default_policy_namespace.to_s.camelize)
|
61
|
+
[default_policy_namespace.to_sym, object]
|
62
|
+
else
|
63
|
+
object
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def default_policy_class
|
68
|
+
ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
|
69
|
+
end
|
70
|
+
|
71
|
+
def default_policy(user, subject)
|
72
|
+
default_policy_class.new(user, subject)
|
73
|
+
end
|
74
|
+
|
75
|
+
def default_policy_namespace
|
76
|
+
ActiveAdmin.application.pundit_policy_namespace
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
require 'active_admin/resource/action_items'
|
2
|
+
require 'active_admin/resource/attributes'
|
3
|
+
require 'active_admin/resource/controllers'
|
4
|
+
require 'active_admin/resource/menu'
|
5
|
+
require 'active_admin/resource/page_presenters'
|
6
|
+
require 'active_admin/resource/pagination'
|
7
|
+
require 'active_admin/resource/routes'
|
8
|
+
require 'active_admin/resource/naming'
|
9
|
+
require 'active_admin/resource/scopes'
|
10
|
+
require 'active_admin/resource/includes'
|
11
|
+
require 'active_admin/resource/scope_to'
|
12
|
+
require 'active_admin/resource/sidebars'
|
13
|
+
require 'active_admin/resource/belongs_to'
|
14
|
+
require 'active_admin/resource/ordering'
|
15
|
+
|
16
|
+
module ActiveAdmin
|
17
|
+
|
18
|
+
# Resource is the primary data storage for resource configuration in Active Admin
|
19
|
+
#
|
20
|
+
# When you register a resource (ActiveAdmin.register Post) you are actually creating
|
21
|
+
# a new Resource instance within the given Namespace.
|
22
|
+
#
|
23
|
+
# The instance of the current resource is available in ResourceController and views
|
24
|
+
# by calling the #active_admin_config method.
|
25
|
+
#
|
26
|
+
class Resource
|
27
|
+
|
28
|
+
# Event dispatched when a new resource is registered
|
29
|
+
RegisterEvent = 'active_admin.resource.register'.freeze
|
30
|
+
|
31
|
+
# The namespace this config belongs to
|
32
|
+
attr_reader :namespace
|
33
|
+
|
34
|
+
# The name of the resource class
|
35
|
+
attr_reader :resource_class_name
|
36
|
+
|
37
|
+
# An array of member actions defined for this resource
|
38
|
+
attr_reader :member_actions
|
39
|
+
|
40
|
+
# An array of collection actions defined for this resource
|
41
|
+
attr_reader :collection_actions
|
42
|
+
|
43
|
+
# The default sort order to use in the controller
|
44
|
+
attr_writer :sort_order
|
45
|
+
def sort_order
|
46
|
+
@sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : 'id') + '_desc'
|
47
|
+
end
|
48
|
+
|
49
|
+
# Set the configuration for the CSV
|
50
|
+
attr_writer :csv_builder
|
51
|
+
|
52
|
+
# Set breadcrumb builder
|
53
|
+
attr_writer :breadcrumb
|
54
|
+
|
55
|
+
#Set order clause
|
56
|
+
attr_writer :order_clause
|
57
|
+
# Display create another checkbox on a new page
|
58
|
+
# @return [Boolean]
|
59
|
+
attr_writer :create_another
|
60
|
+
|
61
|
+
# Store a reference to the DSL so that we can dereference it during garbage collection.
|
62
|
+
attr_accessor :dsl
|
63
|
+
|
64
|
+
# The string identifying a class to decorate our resource with for the view.
|
65
|
+
# nil to not decorate.
|
66
|
+
attr_accessor :decorator_class_name
|
67
|
+
|
68
|
+
module Base
|
69
|
+
def initialize(namespace, resource_class, options = {})
|
70
|
+
@namespace = namespace
|
71
|
+
@resource_class_name = "::#{resource_class.name}"
|
72
|
+
@options = options
|
73
|
+
@sort_order = options[:sort_order]
|
74
|
+
@member_actions = []
|
75
|
+
@collection_actions = []
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
include MethodOrProcHelper
|
80
|
+
|
81
|
+
include Base
|
82
|
+
include ActionItems
|
83
|
+
include Authorization
|
84
|
+
include Controllers
|
85
|
+
include Menu
|
86
|
+
include Naming
|
87
|
+
include PagePresenters
|
88
|
+
include Pagination
|
89
|
+
include Scopes
|
90
|
+
include Includes
|
91
|
+
include ScopeTo
|
92
|
+
include Sidebars
|
93
|
+
include Routes
|
94
|
+
include Ordering
|
95
|
+
include Attributes
|
96
|
+
|
97
|
+
# The class this resource wraps. If you register the Post model, Resource#resource_class
|
98
|
+
# will point to the Post class
|
99
|
+
def resource_class
|
100
|
+
ActiveSupport::Dependencies.constantize(resource_class_name)
|
101
|
+
end
|
102
|
+
|
103
|
+
def decorator_class
|
104
|
+
ActiveSupport::Dependencies.constantize(decorator_class_name) if decorator_class_name
|
105
|
+
end
|
106
|
+
|
107
|
+
def resource_table_name
|
108
|
+
resource_class.quoted_table_name
|
109
|
+
end
|
110
|
+
|
111
|
+
def resource_column_names
|
112
|
+
resource_class.column_names
|
113
|
+
end
|
114
|
+
|
115
|
+
def resource_quoted_column_name(column)
|
116
|
+
resource_class.connection.quote_column_name(column)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Clears all the member actions this resource knows about
|
120
|
+
def clear_member_actions!
|
121
|
+
@member_actions = []
|
122
|
+
end
|
123
|
+
|
124
|
+
def clear_collection_actions!
|
125
|
+
@collection_actions = []
|
126
|
+
end
|
127
|
+
|
128
|
+
# Return only defined resource actions
|
129
|
+
def defined_actions
|
130
|
+
controller.instance_methods.map(&:to_sym) & ResourceController::ACTIVE_ADMIN_ACTIONS
|
131
|
+
end
|
132
|
+
|
133
|
+
def belongs_to(target, options = {})
|
134
|
+
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
135
|
+
self.menu_item_options = false if @belongs_to.required?
|
136
|
+
controller.send :belongs_to, target, options.dup
|
137
|
+
end
|
138
|
+
|
139
|
+
def belongs_to_config
|
140
|
+
@belongs_to
|
141
|
+
end
|
142
|
+
|
143
|
+
def belongs_to_param
|
144
|
+
if belongs_to? && belongs_to_config.required?
|
145
|
+
belongs_to_config.to_param
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# Do we belong to another resource?
|
150
|
+
def belongs_to?
|
151
|
+
!!belongs_to_config
|
152
|
+
end
|
153
|
+
|
154
|
+
# The csv builder for this resource
|
155
|
+
def csv_builder
|
156
|
+
@csv_builder || default_csv_builder
|
157
|
+
end
|
158
|
+
|
159
|
+
def breadcrumb
|
160
|
+
instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
|
161
|
+
end
|
162
|
+
|
163
|
+
def order_clause
|
164
|
+
@order_clause || namespace.order_clause
|
165
|
+
end
|
166
|
+
|
167
|
+
def create_another
|
168
|
+
instance_variable_defined?(:@create_another) ? @create_another : namespace.create_another
|
169
|
+
end
|
170
|
+
|
171
|
+
def find_resource(id)
|
172
|
+
resource = resource_class.public_send *method_for_find(id)
|
173
|
+
(decorator_class && resource) ? decorator_class.new(resource) : resource
|
174
|
+
end
|
175
|
+
|
176
|
+
def resource_columns
|
177
|
+
resource_attributes.values
|
178
|
+
end
|
179
|
+
|
180
|
+
def resource_attributes
|
181
|
+
@resource_attributes ||= default_attributes
|
182
|
+
end
|
183
|
+
|
184
|
+
def association_columns
|
185
|
+
@association_columns ||= resource_attributes.select { |key, value| key != value }.values
|
186
|
+
end
|
187
|
+
|
188
|
+
def content_columns
|
189
|
+
@content_columns ||= resource_attributes.select { |key, value| key == value }.values
|
190
|
+
end
|
191
|
+
|
192
|
+
private
|
193
|
+
|
194
|
+
def method_for_find(id)
|
195
|
+
if finder = resources_configuration[:self][:finder]
|
196
|
+
[finder, id]
|
197
|
+
else
|
198
|
+
[:find_by, { resource_class.primary_key => id }]
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
def default_csv_builder
|
203
|
+
@default_csv_builder ||= CSVBuilder.default_for_resource(self)
|
204
|
+
end
|
205
|
+
|
206
|
+
end # class Resource
|
207
|
+
end # module ActiveAdmin
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
|
5
|
+
class Resource
|
6
|
+
module ActionItems
|
7
|
+
|
8
|
+
# Adds the default action items to a resource when it's initialized
|
9
|
+
def initialize(*args)
|
10
|
+
super
|
11
|
+
add_default_action_items
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Array] The set of action items for this resource
|
15
|
+
def action_items
|
16
|
+
@action_items ||= []
|
17
|
+
end
|
18
|
+
|
19
|
+
# Add a new action item to a resource
|
20
|
+
#
|
21
|
+
# @param [Symbol] name
|
22
|
+
# @param [Hash] options valid keys include:
|
23
|
+
# :only: A single or array of controller actions to display
|
24
|
+
# this action item on.
|
25
|
+
# :except: A single or array of controller actions not to
|
26
|
+
# display this action item on.
|
27
|
+
# :priority: A single integer value. To control the display order. Default is 10.
|
28
|
+
def add_action_item(name, options = {}, &block)
|
29
|
+
self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
def remove_action_item(name)
|
33
|
+
self.action_items.delete_if { |item| item.name == name }
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns a set of action items to display for a specific controller action
|
37
|
+
#
|
38
|
+
# @param [String, Symbol] action the action to retrieve action items for
|
39
|
+
#
|
40
|
+
# @return [Array] Array of ActionItems for the controller actions
|
41
|
+
def action_items_for(action, render_context = nil)
|
42
|
+
action_items.select { |item| item.display_on? action, render_context }.sort_by(&:priority)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Clears all the existing action items for this resource
|
46
|
+
def clear_action_items!
|
47
|
+
@action_items = []
|
48
|
+
end
|
49
|
+
|
50
|
+
# Used by active_admin Base view
|
51
|
+
def action_items?
|
52
|
+
!!@action_items && @action_items.any?
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
# Adds the default action items to each resource
|
58
|
+
def add_default_action_items
|
59
|
+
add_default_new_action_item
|
60
|
+
add_default_edit_action_item
|
61
|
+
add_default_show_action_item
|
62
|
+
end
|
63
|
+
|
64
|
+
# Adds the default New link on index
|
65
|
+
def add_default_new_action_item
|
66
|
+
add_action_item :new, only: :index do
|
67
|
+
if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
|
68
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
69
|
+
link_to localizer.t(:new_model), new_resource_path
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Adds the default Edit link on show
|
75
|
+
def add_default_edit_action_item
|
76
|
+
add_action_item :edit, only: :show do
|
77
|
+
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
78
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
79
|
+
link_to localizer.t(:edit_model), edit_resource_path(resource)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Adds the default Destroy link on show
|
85
|
+
def add_default_show_action_item
|
86
|
+
add_action_item :destroy, only: :show do
|
87
|
+
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
88
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
89
|
+
link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
|
90
|
+
data: { confirm: localizer.t(:delete_confirmation) }
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Model class to store the data for ActionItems
|
99
|
+
class ActionItem
|
100
|
+
include ActiveAdmin::OptionalDisplay
|
101
|
+
|
102
|
+
attr_accessor :block, :name
|
103
|
+
|
104
|
+
def initialize(name, options = {}, &block)
|
105
|
+
@name = name
|
106
|
+
@options = options
|
107
|
+
@block = block
|
108
|
+
normalize_display_options!
|
109
|
+
end
|
110
|
+
|
111
|
+
def html_class
|
112
|
+
"action_item #{@options[:class]}".rstrip
|
113
|
+
end
|
114
|
+
|
115
|
+
def priority
|
116
|
+
@options[:priority] || 10
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|