activeadmin 1.0.0 → 2.13.1
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 +5 -5
- data/CHANGELOG.md +851 -68
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +80 -82
- data/README.md +73 -19
- data/app/assets/javascripts/active_admin/base.js +524 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +7 -35
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +3 -4
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
- data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -10
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/base.js +28 -0
- data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +98 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
- data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
- data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +12 -6
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- 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/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_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 +17 -7
- data/config/locales/ar.yml +10 -11
- data/config/locales/az.yml +138 -0
- data/config/locales/bg.yml +1 -3
- data/config/locales/bs.yml +1 -2
- data/config/locales/ca.yml +1 -3
- data/config/locales/cs.yml +1 -2
- data/config/locales/da.yml +2 -3
- data/config/locales/de-CH.yml +2 -3
- data/config/locales/de.yml +30 -3
- data/config/locales/el.yml +2 -3
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +46 -5
- data/config/locales/en.yml +32 -8
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +6 -3
- data/config/locales/es.yml +36 -10
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +15 -7
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +5 -2
- data/config/locales/id.yml +2 -3
- data/config/locales/it.yml +33 -7
- data/config/locales/ja.yml +9 -5
- data/config/locales/ko.yml +2 -3
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +3 -4
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -7
- data/config/locales/nl.yml +14 -4
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +10 -3
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +4 -4
- data/config/locales/ru.yml +4 -3
- data/config/locales/sk.yml +60 -2
- data/config/locales/sv-SE.yml +4 -3
- data/config/locales/tr.yml +10 -2
- data/config/locales/uk.yml +4 -3
- data/config/locales/vi.yml +53 -12
- data/config/locales/zh-CN.yml +34 -7
- data/config/locales/zh-TW.yml +2 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +42 -15
- data/docs/1-general-configuration.md +46 -4
- data/docs/10-custom-pages.md +24 -5
- data/docs/11-decorators.md +17 -5
- data/docs/12-arbre-components.md +47 -9
- data/docs/13-authorization-adapter.md +69 -35
- data/docs/14-gotchas.md +41 -22
- data/docs/2-resource-customization.md +57 -20
- data/docs/3-index-pages/custom-index.md +2 -1
- data/docs/3-index-pages/index-as-block.md +0 -5
- data/docs/3-index-pages/index-as-blog.md +1 -6
- data/docs/3-index-pages/index-as-grid.md +0 -5
- data/docs/3-index-pages/index-as-table.md +13 -14
- data/docs/3-index-pages.md +47 -12
- data/docs/4-csv-format.md +2 -1
- data/docs/5-forms.md +68 -24
- data/docs/6-show-pages.md +14 -1
- data/docs/7-sidebars.md +2 -1
- data/docs/8-custom-actions.md +16 -2
- data/docs/9-batch-actions.md +5 -3
- data/docs/CNAME +1 -1
- data/docs/Gemfile +4 -2
- data/docs/Gemfile.lock +283 -0
- data/docs/_config.yml +3 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +21 -23
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +110 -9
- data/docs/stylesheets/main.css +55 -2
- data/lib/active_admin/abstract_view_factory.rb +14 -51
- data/lib/active_admin/application.rb +65 -170
- data/lib/active_admin/application_settings.rb +43 -0
- data/lib/active_admin/asset_registration.rb +1 -0
- data/lib/active_admin/authorization_adapter.rb +4 -6
- data/lib/active_admin/base_controller/authorization.rb +18 -19
- data/lib/active_admin/base_controller/menu.rb +10 -9
- data/lib/active_admin/base_controller.rb +12 -12
- data/lib/active_admin/batch_actions/controller.rb +6 -5
- data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +8 -6
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +2 -1
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +3 -1
- data/lib/active_admin/csv_builder.rb +17 -23
- data/lib/active_admin/dependency.rb +15 -78
- data/lib/active_admin/deprecation.rb +1 -25
- data/lib/active_admin/devise.rb +18 -7
- data/lib/active_admin/dsl.rb +5 -11
- data/lib/active_admin/dynamic_setting.rb +39 -0
- data/lib/active_admin/dynamic_settings_node.rb +29 -0
- data/lib/active_admin/engine.rb +16 -7
- data/lib/active_admin/error.rb +5 -4
- data/lib/active_admin/filters/active.rb +14 -14
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +28 -0
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +12 -9
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +32 -35
- data/lib/active_admin/filters.rb +8 -5
- data/lib/active_admin/form_builder.rb +110 -70
- data/lib/active_admin/generators/boilerplate.rb +13 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +3 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +2 -0
- data/lib/active_admin/inputs/datepicker_input.rb +14 -6
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +24 -12
- data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
- data/lib/active_admin/inputs/filters/select_input.rb +8 -3
- data/lib/active_admin/inputs/filters/string_input.rb +1 -0
- data/lib/active_admin/inputs/filters/text_input.rb +1 -1
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +13 -15
- data/lib/active_admin/menu_collection.rb +1 -2
- data/lib/active_admin/menu_item.rb +11 -38
- data/lib/active_admin/namespace.rb +34 -21
- data/lib/active_admin/namespace_settings.rb +127 -0
- data/lib/active_admin/order_clause.rb +4 -3
- data/lib/active_admin/orm/active_record/comments/comment.rb +6 -9
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +37 -24
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +35 -23
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- data/lib/active_admin/page_controller.rb +2 -1
- data/lib/active_admin/page_dsl.rb +2 -1
- data/lib/active_admin/page_presenter.rb +3 -1
- data/lib/active_admin/pundit_adapter.rb +73 -16
- data/lib/active_admin/resource/action_items.rb +16 -6
- data/lib/active_admin/resource/attributes.rb +10 -6
- data/lib/active_admin/resource/belongs_to.rb +9 -3
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +6 -5
- data/lib/active_admin/resource/model.rb +16 -0
- data/lib/active_admin/resource/naming.rb +6 -5
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +2 -1
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +26 -15
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +3 -2
- data/lib/active_admin/resource.rb +37 -22
- data/lib/active_admin/resource_collection.rb +3 -2
- data/lib/active_admin/resource_controller/action_builder.rb +11 -0
- data/lib/active_admin/resource_controller/data_access.rb +43 -14
- data/lib/active_admin/resource_controller/decorators.rb +10 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
- data/lib/active_admin/resource_controller/scoping.rb +2 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +9 -7
- data/lib/active_admin/resource_controller.rb +15 -11
- data/lib/active_admin/resource_dsl.rb +18 -28
- data/lib/active_admin/router.rb +91 -84
- data/lib/active_admin/scope.rb +22 -13
- data/lib/active_admin/settings_node.rb +20 -0
- data/lib/active_admin/sidebar_section.rb +4 -1
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +18 -17
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
- data/lib/active_admin/view_helpers/display_helper.rb +26 -9
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +2 -1
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +3 -1
- data/lib/active_admin/views/action_items.rb +2 -1
- data/lib/active_admin/views/components/active_admin_form.rb +15 -9
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +9 -8
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +9 -11
- data/lib/active_admin/views/components/index_list.rb +4 -5
- data/lib/active_admin/views/components/menu.rb +33 -0
- data/lib/active_admin/views/components/menu_item.rb +59 -0
- data/lib/active_admin/views/components/paginated_collection.rb +22 -20
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +19 -17
- data/lib/active_admin/views/components/sidebar.rb +14 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -0
- data/lib/active_admin/views/components/site_title.rb +7 -7
- data/lib/active_admin/views/components/status_tag.rb +19 -23
- data/lib/active_admin/views/components/table_for.rb +22 -29
- data/lib/active_admin/views/components/tabs.rb +18 -5
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +6 -8
- data/lib/active_admin/views/header.rb +4 -16
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -4
- data/lib/active_admin/views/index_as_grid.rb +27 -26
- data/lib/active_admin/views/index_as_table.rb +53 -26
- data/lib/active_admin/views/pages/base.rb +47 -63
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +16 -13
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +7 -1
- data/lib/active_admin/views/tabbed_navigation.rb +5 -59
- data/lib/active_admin/views/title_bar.rb +6 -5
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +70 -68
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +7 -6
- data/lib/generators/active_admin/install/install_generator.rb +19 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
- data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -1
- data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +5 -4
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/lib/ransack_ext.rb +10 -9
- 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
- metadata +158 -580
- data/.gitignore +0 -49
- data/.hound.yml +0 -14
- data/.rubocop.yml +0 -27
- data/.travis.yml +0 -66
- data/.yardopts +0 -8
- data/Appraisals +0 -41
- data/Gemfile +0 -49
- data/Rakefile +0 -65
- data/activeadmin.gemspec +0 -34
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -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.js.coffee +0 -9
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -22
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -18
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -44
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
- data/codecov.yml +0 -23
- data/cucumber.yml +0 -3
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -158
- data/features/comments/viewing_index.feature +0 -19
- data/features/create_another.feature +0 -55
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -28
- data/features/edit_page.feature +0 -116
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/footer.feature +0 -28
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -55
- data/features/index/batch_actions.feature +0 -218
- data/features/index/filters.feature +0 -199
- data/features/index/format_as_csv.feature +0 -203
- data/features/index/formats.feature +0 -88
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -270
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -72
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -107
- data/features/registering_assets.feature +0 -34
- data/features/registering_pages.feature +0 -237
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -30
- data/features/root_to.feature +0 -17
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -27
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -118
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -20
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -12
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -39
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/footer_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -56
- data/features/step_definitions/i18n_steps.rb +0 -11
- data/features/step_definitions/index_scope_steps.rb +0 -25
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- data/features/step_definitions/sidebar_steps.rb +0 -11
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -116
- data/features/step_definitions/user_steps.rb +0 -52
- data/features/step_definitions/web_steps.rb +0 -86
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -69
- data/features/support/env.rb +0 -121
- data/features/support/paths.rb +0 -73
- data/features/support/selectors.rb +0 -45
- data/features/users/logging_in.feature +0 -36
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/gemfiles/rails_42.gemfile +0 -45
- data/gemfiles/rails_50.gemfile +0 -45
- data/gemfiles/rails_51.gemfile +0 -45
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/filters/humanized.rb +0 -68
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/rails_5_master.rb +0 -118
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/spec/bug_report_templates_spec.rb +0 -27
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_runner.rb +0 -19
- data/spec/rails_helper.rb +0 -62
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/javascript_spec.rb +0 -22
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -12
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -182
- data/spec/support/rails_template_with_data.rb +0 -68
- data/spec/support/templates/admin/stores.rb +0 -7
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/manifest.js +0 -3
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -45
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -11
- data/spec/unit/abstract_view_factory_spec.rb +0 -79
- data/spec/unit/action_builder_spec.rb +0 -125
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -180
- data/spec/unit/asset_registration_spec.rb +0 -52
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -93
- data/spec/unit/batch_actions/resource_spec.rb +0 -84
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -77
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -176
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -41
- data/spec/unit/csv_builder_spec.rb +0 -306
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -122
- data/spec/unit/filters/active_spec.rb +0 -14
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -500
- data/spec/unit/filters/humanized_spec.rb +0 -64
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -990
- data/spec/unit/generators/install_spec.rb +0 -31
- data/spec/unit/helpers/collection_spec.rb +0 -68
- data/spec/unit/helpers/scope_chain_spec.rb +0 -36
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -12
- data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -143
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -125
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -131
- data/spec/unit/pretty_format_spec.rb +0 -82
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -65
- data/spec/unit/resource/attributes_spec.rb +0 -50
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/ordering_spec.rb +0 -38
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -125
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -230
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
- data/spec/unit/resource_controller_spec.rb +0 -274
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -313
- data/spec/unit/routing_spec.rb +0 -213
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -252
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -189
- data/spec/unit/views/components/index_list_spec.rb +0 -49
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -249
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -54
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -32
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/docs.rake +0 -37
- data/tasks/lint.rake +0 -8
- data/tasks/local.rake +0 -25
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -46
- data/tasks/yard.rake +0 -9
data/docs/stylesheets/main.css
CHANGED
@@ -559,7 +559,7 @@ caption {
|
|
559
559
|
body {
|
560
560
|
background: #f6f4f1;
|
561
561
|
color: #676767;
|
562
|
-
width:
|
562
|
+
width: 768px;
|
563
563
|
padding: 0 20px;
|
564
564
|
font-size: 95%;
|
565
565
|
margin: 25px auto;
|
@@ -594,6 +594,56 @@ body #header {
|
|
594
594
|
margin: 40px 0;
|
595
595
|
}
|
596
596
|
|
597
|
+
body #header h1 {
|
598
|
+
margin-bottom: 0;
|
599
|
+
}
|
600
|
+
|
601
|
+
body #tidelift {
|
602
|
+
display: flex;
|
603
|
+
justify-content: flex-start;
|
604
|
+
}
|
605
|
+
|
606
|
+
body #tidelift a {
|
607
|
+
border: 1px solid #666666;
|
608
|
+
margin-left: auto;
|
609
|
+
padding: 10px;
|
610
|
+
text-decoration: none;
|
611
|
+
}
|
612
|
+
|
613
|
+
body #tidelift a .cta {
|
614
|
+
background: url("../images/tidelift.svg") no-repeat;
|
615
|
+
padding-left: 30px;
|
616
|
+
}
|
617
|
+
|
618
|
+
body .tidelift-buttons a {
|
619
|
+
display: table;
|
620
|
+
width: 200px;
|
621
|
+
border: 2px solid #407985;
|
622
|
+
border-radius: 4px;
|
623
|
+
text-decoration: none;
|
624
|
+
font-family: 'Yanone Kaffeesatz', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
625
|
+
font-size: 18px;
|
626
|
+
letter-spacing: 1px;
|
627
|
+
margin: 0 10px;
|
628
|
+
}
|
629
|
+
|
630
|
+
body .tidelift-buttons a:first-child {
|
631
|
+
float: left;
|
632
|
+
color: #407985;
|
633
|
+
background: #FFF;
|
634
|
+
}
|
635
|
+
|
636
|
+
body .tidelift-buttons a:last-child {
|
637
|
+
color: #FFF;
|
638
|
+
background: #407985;
|
639
|
+
}
|
640
|
+
|
641
|
+
body .tidelift-buttons a span {
|
642
|
+
display: table-cell;
|
643
|
+
vertical-align: middle;
|
644
|
+
text-align: center;
|
645
|
+
}
|
646
|
+
|
597
647
|
body .clear {
|
598
648
|
clear: both;
|
599
649
|
}
|
@@ -629,11 +679,14 @@ body h3 {
|
|
629
679
|
font-weight: 300;
|
630
680
|
}
|
631
681
|
|
632
|
-
body #nav {
|
682
|
+
body #nav, body #tidelift .cta {
|
633
683
|
font-family: 'Yanone Kaffeesatz', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
634
684
|
font-weight: 400;
|
635
685
|
font-size: 1.2em;
|
636
686
|
text-transform: uppercase;
|
687
|
+
}
|
688
|
+
|
689
|
+
body #nav {
|
637
690
|
position: absolute;
|
638
691
|
right: 0;
|
639
692
|
top: 20px;
|
@@ -1,15 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
|
-
class AbstractViewFactory
|
3
|
-
@@default_views = {}
|
3
|
+
class AbstractViewFactory < SettingsNode
|
4
4
|
|
5
5
|
def self.register(view_hash)
|
6
6
|
view_hash.each do |view_key, view_class|
|
7
|
-
|
7
|
+
super view_key, view_class
|
8
|
+
add_writer(view_key)
|
9
|
+
send "#{view_key}=", view_class
|
8
10
|
end
|
9
11
|
end
|
10
12
|
|
11
|
-
def
|
12
|
-
|
13
|
+
def self.add_writer(name)
|
14
|
+
define_singleton_method("#{name}=") do |value|
|
15
|
+
value.builder_method name
|
16
|
+
instance_variable_set :"@#{name}", value
|
17
|
+
end
|
13
18
|
end
|
14
19
|
|
15
20
|
# Register a new view key with the view factory
|
@@ -25,61 +30,19 @@ module ActiveAdmin
|
|
25
30
|
# another_view: OtherViewClass
|
26
31
|
#
|
27
32
|
def register(view_hash)
|
28
|
-
|
29
|
-
@views[view_key] = view_class
|
30
|
-
end
|
33
|
+
self.class.register view_hash
|
31
34
|
end
|
32
35
|
|
33
36
|
def default_for(key)
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
def has_key?(key)
|
38
|
-
@views.has_key?(key.to_sym) || @@default_views.has_key?(key.to_sym)
|
37
|
+
self.class.send key
|
39
38
|
end
|
40
39
|
|
41
40
|
def [](key)
|
42
|
-
|
41
|
+
send key
|
43
42
|
end
|
44
43
|
|
45
44
|
def []=(key, value)
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
def respond_to_missing?(method, include_private)
|
50
|
-
key = key_from_method_name(method)
|
51
|
-
if has_key?(key)
|
52
|
-
true
|
53
|
-
else
|
54
|
-
super
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def method_missing(method, *args)
|
61
|
-
key = key_from_method_name(method)
|
62
|
-
if has_key?(key)
|
63
|
-
if method.to_s.include?('=')
|
64
|
-
set_view_for_key key, args.first
|
65
|
-
else
|
66
|
-
get_view_for_key key
|
67
|
-
end
|
68
|
-
else
|
69
|
-
super
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def key_from_method_name(method)
|
74
|
-
method.to_s.tr('=', '').to_sym
|
75
|
-
end
|
76
|
-
|
77
|
-
def get_view_for_key(key)
|
78
|
-
@views[key.to_sym] || @@default_views[key.to_sym]
|
79
|
-
end
|
80
|
-
|
81
|
-
def set_view_for_key(key, view)
|
82
|
-
@views[key.to_sym] = view
|
45
|
+
send "#{key}=", value
|
83
46
|
end
|
84
47
|
end
|
85
48
|
end
|
@@ -1,160 +1,53 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/router"
|
3
|
+
require "active_admin/application_settings"
|
4
|
+
require "active_admin/namespace_settings"
|
4
5
|
|
5
6
|
module ActiveAdmin
|
6
7
|
class Application
|
7
|
-
include Settings
|
8
|
-
include Settings::Inheritance
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
# config.default_namespace = :super_admin
|
16
|
-
#
|
17
|
-
setting :default_namespace, :admin
|
9
|
+
class << self
|
10
|
+
def setting(name, default)
|
11
|
+
ApplicationSettings.register name, default
|
12
|
+
end
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def inheritable_setting(name, default)
|
15
|
+
NamespaceSettings.register name, default
|
16
|
+
end
|
22
17
|
end
|
23
18
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
setting :load_paths, [File.expand_path('app/admin', Rails.root)]
|
28
|
-
|
29
|
-
# The default number of resources to display on index pages
|
30
|
-
inheritable_setting :default_per_page, 30
|
31
|
-
|
32
|
-
# The max number of resources to display on index pages and batch exports
|
33
|
-
inheritable_setting :max_per_page, 10_000
|
34
|
-
|
35
|
-
# The title which gets displayed in the main layout
|
36
|
-
inheritable_setting :site_title, ""
|
37
|
-
|
38
|
-
# Set the site title link href (defaults to AA dashboard)
|
39
|
-
inheritable_setting :site_title_link, ""
|
40
|
-
|
41
|
-
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
42
|
-
inheritable_setting :site_title_image, ""
|
43
|
-
|
44
|
-
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
45
|
-
inheritable_setting :footer, ""
|
46
|
-
|
47
|
-
# Set a favicon
|
48
|
-
inheritable_setting :favicon, false
|
49
|
-
|
50
|
-
# Additional meta tags to place in head of logged in pages.
|
51
|
-
inheritable_setting :meta_tags, {}
|
52
|
-
|
53
|
-
# Additional meta tags to place in head of logged out pages.
|
54
|
-
inheritable_setting :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
55
|
-
|
56
|
-
# The view factory to use to generate all the view classes. Take
|
57
|
-
# a look at ActiveAdmin::ViewFactory
|
58
|
-
inheritable_setting :view_factory, ActiveAdmin::ViewFactory.new
|
59
|
-
|
60
|
-
# The method to call in controllers to get the current user
|
61
|
-
inheritable_setting :current_user_method, false
|
62
|
-
|
63
|
-
# The method to call in the controllers to ensure that there
|
64
|
-
# is a currently authenticated admin user
|
65
|
-
inheritable_setting :authentication_method, false
|
66
|
-
|
67
|
-
# The path to log user's out with. If set to a symbol, we assume
|
68
|
-
# that it's a method to call which returns the path
|
69
|
-
inheritable_setting :logout_link_path, :destroy_admin_user_session_path
|
70
|
-
|
71
|
-
# The method to use when generating the link for user logout
|
72
|
-
inheritable_setting :logout_link_method, :get
|
73
|
-
|
74
|
-
# Whether the batch actions are enabled or not
|
75
|
-
inheritable_setting :batch_actions, false
|
76
|
-
|
77
|
-
# Whether filters are enabled
|
78
|
-
inheritable_setting :filters, true
|
79
|
-
|
80
|
-
# The namespace root.
|
81
|
-
inheritable_setting :root_to, 'dashboard#index'
|
82
|
-
|
83
|
-
# Options that a passed to root_to.
|
84
|
-
inheritable_setting :root_to_options, {}
|
85
|
-
|
86
|
-
# Options passed to the routes, i.e. { path: '/custom' }
|
87
|
-
inheritable_setting :route_options, {}
|
88
|
-
|
89
|
-
# Display breadcrumbs
|
90
|
-
inheritable_setting :breadcrumb, true
|
91
|
-
|
92
|
-
# Display create another checkbox on a new page
|
93
|
-
# @return [Boolean] (true)
|
94
|
-
inheritable_setting :create_another, false
|
95
|
-
|
96
|
-
# Default CSV options
|
97
|
-
inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
98
|
-
|
99
|
-
# Default Download Links options
|
100
|
-
inheritable_setting :download_links, true
|
101
|
-
|
102
|
-
# The authorization adapter to use
|
103
|
-
inheritable_setting :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
104
|
-
|
105
|
-
# A proc to be used when a user is not authorized to view the current resource
|
106
|
-
inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
|
107
|
-
|
108
|
-
# A regex to detect unsupported browser, set to false to disable
|
109
|
-
inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
110
|
-
|
111
|
-
# Whether to display 'Current Filters' on search screen
|
112
|
-
inheritable_setting :current_filters, true
|
113
|
-
|
114
|
-
# class to handle ordering
|
115
|
-
inheritable_setting :order_clause, ActiveAdmin::OrderClause
|
116
|
-
|
117
|
-
# Request parameters that are permitted by default
|
118
|
-
inheritable_setting :permitted_params, [
|
119
|
-
:utf8, :_method, :authenticity_token, :commit, :id
|
120
|
-
]
|
121
|
-
|
122
|
-
# Set flash message keys that shouldn't show in ActiveAdmin
|
123
|
-
inheritable_setting :flash_keys_to_except, ['timedout']
|
124
|
-
|
125
|
-
# Set default localize format for Date/Time values
|
126
|
-
setting :localize_format, :long
|
127
|
-
|
128
|
-
# Include association filters by default
|
129
|
-
inheritable_setting :include_default_association_filters, true
|
19
|
+
def settings
|
20
|
+
@settings ||= SettingsNode.build(ApplicationSettings)
|
21
|
+
end
|
130
22
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
# used by auto generated dropdowns in filter or belongs_to field of Active Admin
|
135
|
-
setting :display_name_methods, [ :display_name,
|
136
|
-
:full_name,
|
137
|
-
:name,
|
138
|
-
:username,
|
139
|
-
:login,
|
140
|
-
:title,
|
141
|
-
:email,
|
142
|
-
:to_s ]
|
23
|
+
def namespace_settings
|
24
|
+
@namespace_settings ||= SettingsNode.build(NamespaceSettings)
|
25
|
+
end
|
143
26
|
|
144
|
-
|
145
|
-
|
27
|
+
def respond_to_missing?(method, include_private = false)
|
28
|
+
[settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
|
29
|
+
end
|
146
30
|
|
147
|
-
|
31
|
+
def method_missing(method, *args)
|
32
|
+
if settings.respond_to?(method)
|
33
|
+
settings.send(method, *args)
|
34
|
+
elsif namespace_settings.respond_to?(method)
|
35
|
+
namespace_settings.send(method, *args)
|
36
|
+
else
|
37
|
+
super
|
38
|
+
end
|
39
|
+
end
|
148
40
|
|
149
|
-
|
150
|
-
|
41
|
+
attr_reader :namespaces
|
42
|
+
def initialize
|
43
|
+
@namespaces = Namespace::Store.new
|
151
44
|
end
|
152
45
|
|
153
46
|
include AssetRegistration
|
154
47
|
|
155
48
|
# Event that gets triggered on load of Active Admin
|
156
|
-
BeforeLoadEvent =
|
157
|
-
AfterLoadEvent
|
49
|
+
BeforeLoadEvent = "active_admin.application.before_load".freeze
|
50
|
+
AfterLoadEvent = "active_admin.application.after_load".freeze
|
158
51
|
|
159
52
|
# Runs before the app's AA initializer
|
160
53
|
def setup!
|
@@ -169,7 +62,7 @@ module ActiveAdmin
|
|
169
62
|
|
170
63
|
# Registers a brand new configuration for the given resource.
|
171
64
|
def register(resource, options = {}, &block)
|
172
|
-
ns = options.fetch(:namespace){ default_namespace }
|
65
|
+
ns = options.fetch(:namespace) { default_namespace }
|
173
66
|
namespace(ns).register resource, options, &block
|
174
67
|
end
|
175
68
|
|
@@ -181,9 +74,9 @@ module ActiveAdmin
|
|
181
74
|
def namespace(name)
|
182
75
|
name ||= :root
|
183
76
|
|
184
|
-
namespace = namespaces[name] ||= begin
|
77
|
+
namespace = namespaces[name.to_sym] ||= begin
|
185
78
|
namespace = Namespace.new(self, name)
|
186
|
-
ActiveSupport::Notifications.
|
79
|
+
ActiveSupport::Notifications.instrument ActiveAdmin::Namespace::RegisterEvent, { active_admin_namespace: namespace }
|
187
80
|
namespace
|
188
81
|
end
|
189
82
|
|
@@ -199,7 +92,7 @@ module ActiveAdmin
|
|
199
92
|
# @&block The registration block.
|
200
93
|
#
|
201
94
|
def register_page(name, options = {}, &block)
|
202
|
-
ns = options.fetch(:namespace){ default_namespace }
|
95
|
+
ns = options.fetch(:namespace) { default_namespace }
|
203
96
|
namespace(ns).register_page name, options, &block
|
204
97
|
end
|
205
98
|
|
@@ -219,42 +112,46 @@ module ActiveAdmin
|
|
219
112
|
# To reload everything simply call `ActiveAdmin.unload!`
|
220
113
|
def load!
|
221
114
|
unless loaded?
|
222
|
-
ActiveSupport::Notifications.
|
223
|
-
files.each{ |file| load file }
|
224
|
-
namespace(default_namespace)
|
225
|
-
ActiveSupport::Notifications.
|
115
|
+
ActiveSupport::Notifications.instrument BeforeLoadEvent, { active_admin_application: self } # before_load hook
|
116
|
+
files.each { |file| load file } # load files
|
117
|
+
namespace(default_namespace) # init AA resources
|
118
|
+
ActiveSupport::Notifications.instrument AfterLoadEvent, { active_admin_application: self } # after_load hook
|
226
119
|
@@loaded = true
|
227
120
|
end
|
228
121
|
end
|
229
122
|
|
230
123
|
def load(file)
|
231
|
-
DatabaseHitDuringLoad.capture{ super }
|
124
|
+
DatabaseHitDuringLoad.capture { super }
|
232
125
|
end
|
233
126
|
|
234
127
|
# Returns ALL the files to be loaded
|
235
128
|
def files
|
236
|
-
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
129
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"].sort }
|
237
130
|
end
|
238
131
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
#
|
132
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
133
|
+
#
|
134
|
+
# Use this within the routes.rb file:
|
135
|
+
#
|
136
|
+
# Application.routes.draw do |map|
|
137
|
+
# ActiveAdmin.routes(self)
|
138
|
+
# end
|
139
|
+
#
|
140
|
+
# @param rails_router [ActionDispatch::Routing::Mapper]
|
244
141
|
def routes(rails_router)
|
245
142
|
load!
|
246
|
-
|
143
|
+
Router.new(router: rails_router, namespaces: namespaces).apply
|
247
144
|
end
|
248
145
|
|
249
146
|
# Adds before, around and after filters to all controllers.
|
250
147
|
# Example usage:
|
251
|
-
# ActiveAdmin.
|
148
|
+
# ActiveAdmin.before_action :authenticate_admin!
|
252
149
|
#
|
253
150
|
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
254
|
-
select { |m| m.match(/
|
151
|
+
select { |m| m.match(/_action\z/) }.each do |name|
|
255
152
|
define_method name do |*args, &block|
|
256
|
-
|
257
|
-
|
153
|
+
ActiveSupport.on_load(:active_admin_controller) do
|
154
|
+
public_send name, *args, &block
|
258
155
|
end
|
259
156
|
end
|
260
157
|
end
|
@@ -265,13 +162,11 @@ module ActiveAdmin
|
|
265
162
|
controllers
|
266
163
|
end
|
267
164
|
|
268
|
-
|
165
|
+
private
|
269
166
|
|
270
167
|
def register_default_assets
|
271
|
-
register_stylesheet
|
272
|
-
|
273
|
-
|
274
|
-
register_javascript 'active_admin.js'
|
168
|
+
register_stylesheet "active_admin.css", media: "all"
|
169
|
+
register_javascript "active_admin.js"
|
275
170
|
end
|
276
171
|
|
277
172
|
# Since app/admin is alphabetically before app/models, we have to remove it
|
@@ -281,7 +176,7 @@ module ActiveAdmin
|
|
281
176
|
# files from being loaded twice in production.
|
282
177
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
283
178
|
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
284
|
-
Rails.application.config.eager_load_paths
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
285
180
|
end
|
286
181
|
|
287
182
|
# Hook into the Rails code reloading mechanism so that things are reloaded
|
@@ -298,11 +193,11 @@ module ActiveAdmin
|
|
298
193
|
# Rails is about to unload all the app files (e.g. models), so we
|
299
194
|
# should first unload the classes generated by Active Admin, otherwise
|
300
195
|
# they will contain references to the stale (unloaded) classes.
|
301
|
-
Reloader.to_prepare(prepend: true, &unload_active_admin)
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
302
197
|
else
|
303
198
|
# If the user has configured the app to always reload app files after
|
304
199
|
# each request, so we should unload the generated classes too.
|
305
|
-
Reloader.to_complete(&unload_active_admin)
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
306
201
|
end
|
307
202
|
|
308
203
|
admin_dirs = {}
|
@@ -317,7 +212,7 @@ module ActiveAdmin
|
|
317
212
|
|
318
213
|
app.reloaders << routes_reloader
|
319
214
|
|
320
|
-
Reloader.to_prepare do
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
321
216
|
# Rails might have reloaded the routes for other reasons (e.g.
|
322
217
|
# routes.rb has changed), in which case Active Admin would have been
|
323
218
|
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/settings_node"
|
3
|
+
|
4
|
+
module ActiveAdmin
|
5
|
+
class ApplicationSettings < SettingsNode
|
6
|
+
|
7
|
+
# The default namespace to put controllers and routes inside. Set this
|
8
|
+
# in config/initializers/active_admin.rb using:
|
9
|
+
#
|
10
|
+
# config.default_namespace = :super_admin
|
11
|
+
#
|
12
|
+
register :default_namespace, :admin
|
13
|
+
|
14
|
+
register :app_path, Rails.root
|
15
|
+
|
16
|
+
# Load paths for admin configurations. Add folders to this load path
|
17
|
+
# to load up other resources for administration. External gems can
|
18
|
+
# include their paths in this load path to provide active_admin UIs
|
19
|
+
register :load_paths, [File.expand_path("app/admin", Rails.root)]
|
20
|
+
|
21
|
+
# Set default localize format for Date/Time values
|
22
|
+
register :localize_format, :long
|
23
|
+
|
24
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
25
|
+
# the list of methods it tries calling in order
|
26
|
+
# Note that Formtastic also has 'collection_label_methods' similar to this
|
27
|
+
# used by auto generated dropdowns in filter or belongs_to field of Active Admin
|
28
|
+
register :display_name_methods, [ :display_name,
|
29
|
+
:full_name,
|
30
|
+
:name,
|
31
|
+
:username,
|
32
|
+
:login,
|
33
|
+
:title,
|
34
|
+
:email,
|
35
|
+
:to_s ]
|
36
|
+
|
37
|
+
# To make debugging easier, by default don't stream in development
|
38
|
+
register :disable_streaming_in, ["development"]
|
39
|
+
|
40
|
+
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
41
|
+
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
42
|
+
end
|
43
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
# Default Authorization permissions for Active Admin
|
4
5
|
module Authorization
|
5
|
-
READ
|
6
|
-
CREATE
|
7
|
-
UPDATE
|
6
|
+
READ = :read
|
7
|
+
CREATE = :create
|
8
|
+
UPDATE = :update
|
8
9
|
DESTROY = :destroy
|
9
10
|
end
|
10
11
|
|
11
12
|
Auth = Authorization
|
12
13
|
|
13
|
-
|
14
14
|
# Active Admin's default authorization adapter. This adapter returns true
|
15
15
|
# for all requests to `#authorized?`. It should be the starting point for
|
16
16
|
# implementing your own authorization adapter.
|
@@ -19,7 +19,6 @@ module ActiveAdmin
|
|
19
19
|
class AuthorizationAdapter
|
20
20
|
attr_reader :resource, :user
|
21
21
|
|
22
|
-
|
23
22
|
# Initialize a new authorization adapter. This happens on each and
|
24
23
|
# every request to a controller.
|
25
24
|
#
|
@@ -54,7 +53,6 @@ module ActiveAdmin
|
|
54
53
|
true
|
55
54
|
end
|
56
55
|
|
57
|
-
|
58
56
|
# A hook method for authorization libraries to scope the collection. By
|
59
57
|
# default, we just return the same collection. The returned scope is used
|
60
58
|
# as the starting point for all queries to the db in the controller.
|
@@ -1,16 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class BaseController < ::InheritedResources::Base
|
3
4
|
module Authorization
|
4
|
-
include MethodOrProcHelper
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
ACTIONS_DICTIONARY = {
|
8
|
-
index:
|
9
|
-
show:
|
10
|
-
new:
|
11
|
-
create:
|
12
|
-
edit:
|
13
|
-
update:
|
8
|
+
index: ActiveAdmin::Authorization::READ,
|
9
|
+
show: ActiveAdmin::Authorization::READ,
|
10
|
+
new: ActiveAdmin::Authorization::CREATE,
|
11
|
+
create: ActiveAdmin::Authorization::CREATE,
|
12
|
+
edit: ActiveAdmin::Authorization::UPDATE,
|
13
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
14
14
|
destroy: ActiveAdmin::Authorization::DESTROY
|
15
15
|
}
|
16
16
|
|
@@ -19,6 +19,7 @@ module ActiveAdmin
|
|
19
19
|
|
20
20
|
helper_method :authorized?
|
21
21
|
helper_method :authorize!
|
22
|
+
helper_method :active_admin_authorization
|
22
23
|
end
|
23
24
|
|
24
25
|
protected
|
@@ -38,7 +39,6 @@ module ActiveAdmin
|
|
38
39
|
active_admin_authorization.authorized?(action, subject)
|
39
40
|
end
|
40
41
|
|
41
|
-
|
42
42
|
# Authorize the action and subject. Available in the controller
|
43
43
|
# as well as all the views. If the action is not allowd, it raises
|
44
44
|
# an ActiveAdmin::AccessDenied exception.
|
@@ -53,9 +53,10 @@ module ActiveAdmin
|
|
53
53
|
# an ActiveAdmin::AccessDenied.
|
54
54
|
def authorize!(action, subject = nil)
|
55
55
|
unless authorized? action, subject
|
56
|
-
raise ActiveAdmin::AccessDenied.new(
|
57
|
-
|
58
|
-
|
56
|
+
raise ActiveAdmin::AccessDenied.new(
|
57
|
+
current_active_admin_user,
|
58
|
+
action,
|
59
|
+
subject)
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
@@ -81,7 +82,7 @@ module ActiveAdmin
|
|
81
82
|
def active_admin_authorization_adapter
|
82
83
|
adapter = active_admin_namespace.authorization_adapter
|
83
84
|
if adapter.is_a? String
|
84
|
-
|
85
|
+
adapter.constantize
|
85
86
|
else
|
86
87
|
adapter
|
87
88
|
end
|
@@ -101,7 +102,7 @@ module ActiveAdmin
|
|
101
102
|
end
|
102
103
|
|
103
104
|
def dispatch_active_admin_access_denied(exception)
|
104
|
-
|
105
|
+
instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
|
105
106
|
end
|
106
107
|
|
107
108
|
def rescue_active_admin_access_denied(exception)
|
@@ -113,16 +114,14 @@ module ActiveAdmin
|
|
113
114
|
redirect_backwards_or_to_root
|
114
115
|
end
|
115
116
|
|
116
|
-
body
|
117
|
-
|
118
|
-
format.
|
119
|
-
format.json { render json: { error: error }, status: :unauthorized }
|
120
|
-
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
117
|
+
format.csv { render body: error, status: :unauthorized }
|
118
|
+
format.json { render json: { error: error }, status: :unauthorized }
|
119
|
+
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
121
120
|
end
|
122
121
|
end
|
123
122
|
|
124
123
|
def redirect_backwards_or_to_root
|
125
|
-
|
124
|
+
redirect_back fallback_location: active_admin_root
|
126
125
|
end
|
127
126
|
|
128
127
|
end
|