activeadmin 1.0.0.pre1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +587 -939
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +110 -59
- data/LICENSE +0 -5
- data/README.md +80 -61
- data/app/assets/javascripts/active_admin/base.js +517 -0
- data/app/assets/stylesheets/active_admin/_base.scss +31 -34
- data/app/assets/stylesheets/active_admin/_forms.scss +33 -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 +447 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- 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 -11
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
- data/app/assets/stylesheets/active_admin/print.scss +3 -4
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
- 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 +95 -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 +3 -4
- 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/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_logged_out.html.erb +21 -7
- data/config/locales/ar.yml +62 -47
- 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 +2 -4
- data/config/locales/cs.yml +1 -2
- data/config/locales/da.yml +45 -14
- data/config/locales/de-CH.yml +4 -3
- data/config/locales/de.yml +46 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +46 -5
- data/config/locales/en.yml +44 -9
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +9 -6
- data/config/locales/es.yml +63 -14
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +36 -8
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +6 -3
- data/config/locales/id.yml +135 -0
- data/config/locales/it.yml +49 -4
- data/config/locales/ja.yml +31 -7
- data/config/locales/ko.yml +66 -36
- 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 +22 -8
- data/config/locales/nl.yml +26 -3
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +24 -2
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +21 -4
- data/config/locales/sk.yml +168 -0
- data/config/locales/sv-SE.yml +50 -8
- data/config/locales/tr.yml +92 -45
- data/config/locales/uk.yml +30 -16
- data/config/locales/vi.yml +53 -12
- data/config/locales/zh-CN.yml +44 -7
- data/config/locales/zh-TW.yml +42 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +68 -18
- data/docs/1-general-configuration.md +88 -4
- data/docs/10-custom-pages.md +56 -2
- data/docs/11-decorators.md +20 -5
- data/docs/12-arbre-components.md +75 -11
- data/docs/13-authorization-adapter.md +73 -36
- data/docs/14-gotchas.md +64 -18
- data/docs/2-resource-customization.md +91 -23
- data/docs/3-index-pages/custom-index.md +5 -1
- data/docs/3-index-pages/index-as-block.md +3 -5
- data/docs/3-index-pages/index-as-blog.md +4 -6
- data/docs/3-index-pages/index-as-grid.md +3 -5
- data/docs/3-index-pages/index-as-table.md +46 -9
- data/docs/3-index-pages.md +73 -10
- data/docs/4-csv-format.md +35 -0
- data/docs/5-forms.md +96 -18
- data/docs/6-show-pages.md +13 -25
- data/docs/7-sidebars.md +13 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +9 -5
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +259 -0
- data/docs/_config.yml +4 -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 +226 -0
- data/docs/stylesheets/main.css +1205 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +105 -138
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +4 -7
- data/lib/active_admin/base_controller/authorization.rb +16 -21
- data/lib/active_admin/base_controller/menu.rb +10 -10
- data/lib/active_admin/base_controller.rb +15 -11
- data/lib/active_admin/batch_actions/controller.rb +6 -7
- data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
- data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
- data/lib/active_admin/batch_actions.rb +0 -1
- data/lib/active_admin/callbacks.rb +2 -2
- data/lib/active_admin/cancan_adapter.rb +1 -1
- data/lib/active_admin/collection_decorator.rb +31 -0
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +30 -20
- data/lib/active_admin/dependency.rb +36 -29
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +9 -9
- data/lib/active_admin/dsl.rb +5 -18
- 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 +14 -7
- data/lib/active_admin/error.rb +6 -6
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +123 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/forms.rb +17 -10
- data/lib/active_admin/filters/formtastic_addons.rb +2 -7
- data/lib/active_admin/filters/resource_extension.rb +50 -14
- data/lib/active_admin/filters.rb +7 -5
- data/lib/active_admin/form_builder.rb +112 -67
- data/lib/active_admin/generators/boilerplate.rb +53 -0
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/optional_display.rb +2 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +13 -6
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
- data/lib/active_admin/inputs/filters/base.rb +3 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
- data/lib/active_admin/inputs/filters/select_input.rb +8 -4
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +2 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/menu.rb +13 -15
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +10 -38
- data/lib/active_admin/namespace.rb +51 -32
- data/lib/active_admin/namespace_settings.rb +126 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
- data/lib/active_admin/orm/active_record/comments.rb +49 -29
- data/lib/active_admin/orm/active_record.rb +1 -1
- data/lib/active_admin/page.rb +24 -5
- data/lib/active_admin/page_controller.rb +2 -2
- data/lib/active_admin/page_dsl.rb +5 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +22 -9
- data/lib/active_admin/resource/action_items.rb +34 -12
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +17 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +9 -6
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +5 -5
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/pagination.rb +4 -0
- data/lib/active_admin/resource/routes.rb +56 -26
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +2 -2
- data/lib/active_admin/resource.rb +80 -22
- data/lib/active_admin/resource_collection.rb +5 -3
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +56 -43
- data/lib/active_admin/resource_controller/decorators.rb +9 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/streaming.rb +12 -5
- data/lib/active_admin/resource_controller.rb +26 -10
- data/lib/active_admin/resource_dsl.rb +67 -21
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +21 -14
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +6 -12
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +17 -18
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
- data/lib/active_admin/view_helpers/display_helper.rb +51 -9
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
- data/lib/active_admin/view_helpers/fields_for.rb +4 -4
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -2
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +45 -13
- data/lib/active_admin/views/components/attributes_table.rb +11 -29
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +12 -7
- data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
- data/lib/active_admin/views/components/index_list.rb +6 -5
- 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 +52 -33
- data/lib/active_admin/views/components/panel.rb +2 -4
- data/lib/active_admin/views/components/scopes.rb +20 -12
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +6 -1
- data/lib/active_admin/views/components/site_title.rb +6 -7
- data/lib/active_admin/views/components/status_tag.rb +19 -23
- data/lib/active_admin/views/components/table_for.rb +31 -57
- data/lib/active_admin/views/components/tabs.rb +17 -5
- data/lib/active_admin/views/footer.rb +15 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +3 -4
- data/lib/active_admin/views/index_as_grid.rb +28 -28
- data/lib/active_admin/views/index_as_table.rb +76 -28
- data/lib/active_admin/views/pages/base.rb +45 -58
- data/lib/active_admin/views/pages/form.rb +5 -2
- data/lib/active_admin/views/pages/index.rb +15 -13
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +9 -3
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +6 -6
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +69 -67
- data/lib/activeadmin.rb +1 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
- data/lib/generators/active_admin/install/install_generator.rb +18 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
- data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- 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 +26 -0
- data/lib/ransack_ext.rb +11 -3
- 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 +182 -553
- data/.gitignore +0 -49
- data/.hound.yml +0 -11
- data/.travis.yml +0 -42
- data/.yardopts +0 -8
- data/Gemfile +0 -54
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -28
- 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/application.js.coffee +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
- 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/lib/batch_actions.js.coffee +0 -39
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
- 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 -37
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
- data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
- data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
- 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 -66
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -171
- data/features/comments/viewing_index.feature +0 -19
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -41
- data/features/development_reloading.feature +0 -30
- data/features/edit_page.feature +0 -117
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -43
- data/features/index/batch_actions.feature +0 -164
- data/features/index/filters.feature +0 -161
- data/features/index/format_as_csv.feature +0 -203
- data/features/index/formats.feature +0 -66
- 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 -251
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -59
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -35
- data/features/registering_pages.feature +0 -148
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -32
- data/features/root_to.feature +0 -17
- data/features/show/default_content.feature +0 -43
- 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 -93
- 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 -72
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- 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 -34
- data/features/step_definitions/filter_steps.rb +0 -39
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -52
- data/features/step_definitions/i18n_steps.rb +0 -3
- data/features/step_definitions/index_scope_steps.rb +0 -21
- 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/pagination_steps.rb +0 -7
- data/features/step_definitions/sidebar_steps.rb +0 -13
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/symbol_leak_steps.rb +0 -3
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -119
- data/features/step_definitions/user_steps.rb +0 -45
- data/features/step_definitions/web_steps.rb +0 -85
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -73
- data/features/support/env.rb +0 -145
- data/features/support/paths.rb +0 -71
- data/features/support/selectors.rb +0 -45
- data/features/symbol_leak.feature +0 -35
- data/features/users/logging_in.feature +0 -34
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
- data/lib/active_admin/event.rb +0 -33
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/iconic/icons.rb +0 -142
- data/lib/active_admin/iconic.rb +0 -53
- data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
- data/lib/active_admin/views/components/action_list_popover.rb +0 -29
- data/lib/active_admin/views/components/popover.rb +0 -27
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
- data/script/local +0 -44
- data/script/travis_cache +0 -107
- data/script/use_rails +0 -53
- 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.popover-spec.js.coffee +0 -82
- 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_config.rb +0 -23
- data/spec/javascripts/support/jasmine_runner.rb +0 -32
- data/spec/rails_helper.rb +0 -154
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -20
- data/spec/requests/memory_spec.rb +0 -23
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/integration_example_group.rb +0 -31
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -138
- data/spec/support/rails_template_with_data.rb +0 -59
- data/spec/support/templates/admin/stores.rb +0 -9
- data/spec/support/templates/cucumber.rb +0 -24
- data/spec/support/templates/cucumber_with_reloading.rb +0 -5
- data/spec/support/templates/en.yml +0 -8
- 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 -132
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -140
- 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 -39
- data/spec/unit/authorization/index_overriding_spec.rb +0 -22
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -92
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -51
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -166
- 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 -44
- data/spec/unit/csv_builder_spec.rb +0 -244
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -96
- data/spec/unit/dsl_spec.rb +0 -122
- data/spec/unit/event_spec.rb +0 -47
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
- data/spec/unit/filters/resource_spec.rb +0 -121
- data/spec/unit/form_builder_spec.rb +0 -752
- data/spec/unit/generators/install_spec.rb +0 -23
- data/spec/unit/helpers/collection_spec.rb +0 -65
- 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/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 -74
- data/spec/unit/namespace/register_resource_spec.rb +0 -161
- data/spec/unit/namespace_spec.rb +0 -103
- 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 -78
- data/spec/unit/pretty_format_spec.rb +0 -63
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -65
- 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/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -73
- 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 -158
- data/spec/unit/resource_controller/data_access_spec.rb +0 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -83
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
- data/spec/unit/resource_controller_spec.rb +0 -269
- data/spec/unit/resource_registration_spec.rb +0 -56
- data/spec/unit/resource_spec.rb +0 -278
- data/spec/unit/routing_spec.rb +0 -180
- data/spec/unit/scope_spec.rb +0 -190
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -21
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
- data/spec/unit/view_helpers/display_name_spec.rb +0 -69
- 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/action_list_popover_spec.rb +0 -40
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -172
- data/spec/unit/views/components/index_list_spec.rb +0 -35
- data/spec/unit/views/components/index_table_for_spec.rb +0 -46
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
- data/spec/unit/views/components/panel_spec.rb +0 -62
- data/spec/unit/views/components/popover_spec.rb +0 -33
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
- data/spec/unit/views/components/site_title_spec.rb +0 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -235
- data/spec/unit/views/components/table_for_spec.rb +0 -384
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
- data/spec/unit/views/pages/form_spec.rb +0 -42
- 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 -33
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/docs.rake +0 -37
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -83
- data/tasks/yard.rake +0 -9
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
|
-
class AbstractViewFactory
|
|
3
|
-
@@default_views = {}
|
|
2
|
+
class AbstractViewFactory < SettingsNode
|
|
4
3
|
|
|
5
4
|
def self.register(view_hash)
|
|
6
5
|
view_hash.each do |view_key, view_class|
|
|
7
|
-
|
|
6
|
+
super view_key, view_class
|
|
7
|
+
add_writer(view_key)
|
|
8
|
+
send "#{view_key}=", view_class
|
|
8
9
|
end
|
|
9
10
|
end
|
|
10
11
|
|
|
11
|
-
def
|
|
12
|
-
|
|
12
|
+
def self.add_writer(name)
|
|
13
|
+
define_singleton_method("#{name}=") do |value|
|
|
14
|
+
value.builder_method name
|
|
15
|
+
instance_variable_set :"@#{name}", value
|
|
16
|
+
end
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
# Register a new view key with the view factory
|
|
@@ -25,61 +29,19 @@ module ActiveAdmin
|
|
|
25
29
|
# another_view: OtherViewClass
|
|
26
30
|
#
|
|
27
31
|
def register(view_hash)
|
|
28
|
-
|
|
29
|
-
@views[view_key] = view_class
|
|
30
|
-
end
|
|
32
|
+
self.class.register view_hash
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
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)
|
|
36
|
+
self.class.send key
|
|
39
37
|
end
|
|
40
38
|
|
|
41
39
|
def [](key)
|
|
42
|
-
|
|
40
|
+
send key
|
|
43
41
|
end
|
|
44
42
|
|
|
45
43
|
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
|
|
44
|
+
send "#{key}=", value
|
|
83
45
|
end
|
|
84
46
|
end
|
|
85
47
|
end
|
|
@@ -1,123 +1,52 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "active_admin/router"
|
|
2
|
+
require "active_admin/application_settings"
|
|
3
|
+
require "active_admin/namespace_settings"
|
|
3
4
|
|
|
4
5
|
module ActiveAdmin
|
|
5
6
|
class Application
|
|
6
|
-
include Settings
|
|
7
|
-
include Settings::Inheritance
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
# config.default_namespace = :super_admin
|
|
15
|
-
#
|
|
16
|
-
setting :default_namespace, :admin
|
|
8
|
+
class << self
|
|
9
|
+
def setting(name, default)
|
|
10
|
+
ApplicationSettings.register name, default
|
|
11
|
+
end
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
def inheritable_setting(name, default)
|
|
14
|
+
NamespaceSettings.register name, default
|
|
15
|
+
end
|
|
21
16
|
end
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
setting :load_paths, [File.expand_path('app/admin', Rails.root)]
|
|
27
|
-
|
|
28
|
-
# The default number of resources to display on index pages
|
|
29
|
-
inheritable_setting :default_per_page, 30
|
|
30
|
-
|
|
31
|
-
# The title which gets displayed in the main layout
|
|
32
|
-
inheritable_setting :site_title, ""
|
|
33
|
-
|
|
34
|
-
# Set the site title link href (defaults to AA dashboard)
|
|
35
|
-
inheritable_setting :site_title_link, ""
|
|
36
|
-
|
|
37
|
-
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
|
38
|
-
inheritable_setting :site_title_image, ""
|
|
39
|
-
|
|
40
|
-
# Set a favicon
|
|
41
|
-
inheritable_setting :favicon, false
|
|
42
|
-
|
|
43
|
-
# The view factory to use to generate all the view classes. Take
|
|
44
|
-
# a look at ActiveAdmin::ViewFactory
|
|
45
|
-
inheritable_setting :view_factory, ActiveAdmin::ViewFactory.new
|
|
46
|
-
|
|
47
|
-
# The method to call in controllers to get the current user
|
|
48
|
-
inheritable_setting :current_user_method, false
|
|
49
|
-
|
|
50
|
-
# The method to call in the controllers to ensure that there
|
|
51
|
-
# is a currently authenticated admin user
|
|
52
|
-
inheritable_setting :authentication_method, false
|
|
53
|
-
|
|
54
|
-
# The path to log user's out with. If set to a symbol, we assume
|
|
55
|
-
# that it's a method to call which returns the path
|
|
56
|
-
inheritable_setting :logout_link_path, :destroy_admin_user_session_path
|
|
57
|
-
|
|
58
|
-
# The method to use when generating the link for user logout
|
|
59
|
-
inheritable_setting :logout_link_method, :get
|
|
60
|
-
|
|
61
|
-
# Whether the batch actions are enabled or not
|
|
62
|
-
inheritable_setting :batch_actions, false
|
|
63
|
-
|
|
64
|
-
# Whether filters are enabled
|
|
65
|
-
inheritable_setting :filters, true
|
|
66
|
-
|
|
67
|
-
# The namespace root.
|
|
68
|
-
inheritable_setting :root_to, 'dashboard#index'
|
|
69
|
-
|
|
70
|
-
# Options that a passed to root_to.
|
|
71
|
-
inheritable_setting :root_to_options, {}
|
|
72
|
-
|
|
73
|
-
# Display breadcrumbs
|
|
74
|
-
inheritable_setting :breadcrumb, true
|
|
75
|
-
|
|
76
|
-
# Default CSV options
|
|
77
|
-
inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
|
78
|
-
|
|
79
|
-
# Default Download Links options
|
|
80
|
-
inheritable_setting :download_links, true
|
|
81
|
-
|
|
82
|
-
# The authorization adapter to use
|
|
83
|
-
inheritable_setting :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
|
84
|
-
|
|
85
|
-
# A proc to be used when a user is not authorized to view the current resource
|
|
86
|
-
inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
|
|
87
|
-
|
|
88
|
-
# A regex to detect unsupported browser, set to false to disable
|
|
89
|
-
inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
|
90
|
-
|
|
91
|
-
# Request parameters that are permitted by default
|
|
92
|
-
inheritable_setting :permitted_params, [
|
|
93
|
-
:utf8, :_method, :authenticity_token, :commit, :id
|
|
94
|
-
]
|
|
18
|
+
def settings
|
|
19
|
+
@settings ||= SettingsNode.build(ApplicationSettings)
|
|
20
|
+
end
|
|
95
21
|
|
|
96
|
-
|
|
97
|
-
|
|
22
|
+
def namespace_settings
|
|
23
|
+
@namespace_settings ||= SettingsNode.build(NamespaceSettings)
|
|
24
|
+
end
|
|
98
25
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
:full_name,
|
|
103
|
-
:name,
|
|
104
|
-
:username,
|
|
105
|
-
:login,
|
|
106
|
-
:title,
|
|
107
|
-
:email,
|
|
108
|
-
:to_s ]
|
|
26
|
+
def respond_to_missing?(method, include_private = false)
|
|
27
|
+
[settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
|
|
28
|
+
end
|
|
109
29
|
|
|
110
|
-
|
|
30
|
+
def method_missing(method, *args)
|
|
31
|
+
if settings.respond_to?(method)
|
|
32
|
+
settings.send(method, *args)
|
|
33
|
+
elsif namespace_settings.respond_to?(method)
|
|
34
|
+
namespace_settings.send(method, *args)
|
|
35
|
+
else
|
|
36
|
+
super
|
|
37
|
+
end
|
|
38
|
+
end
|
|
111
39
|
|
|
112
|
-
|
|
113
|
-
|
|
40
|
+
attr_reader :namespaces
|
|
41
|
+
def initialize
|
|
42
|
+
@namespaces = Namespace::Store.new
|
|
114
43
|
end
|
|
115
44
|
|
|
116
45
|
include AssetRegistration
|
|
117
46
|
|
|
118
47
|
# Event that gets triggered on load of Active Admin
|
|
119
|
-
BeforeLoadEvent =
|
|
120
|
-
AfterLoadEvent
|
|
48
|
+
BeforeLoadEvent = "active_admin.application.before_load".freeze
|
|
49
|
+
AfterLoadEvent = "active_admin.application.after_load".freeze
|
|
121
50
|
|
|
122
51
|
# Runs before the app's AA initializer
|
|
123
52
|
def setup!
|
|
@@ -132,7 +61,7 @@ module ActiveAdmin
|
|
|
132
61
|
|
|
133
62
|
# Registers a brand new configuration for the given resource.
|
|
134
63
|
def register(resource, options = {}, &block)
|
|
135
|
-
ns = options.fetch(:namespace){ default_namespace }
|
|
64
|
+
ns = options.fetch(:namespace) { default_namespace }
|
|
136
65
|
namespace(ns).register resource, options, &block
|
|
137
66
|
end
|
|
138
67
|
|
|
@@ -144,9 +73,9 @@ module ActiveAdmin
|
|
|
144
73
|
def namespace(name)
|
|
145
74
|
name ||= :root
|
|
146
75
|
|
|
147
|
-
namespace = namespaces[name] ||= begin
|
|
76
|
+
namespace = namespaces[name.to_sym] ||= begin
|
|
148
77
|
namespace = Namespace.new(self, name)
|
|
149
|
-
|
|
78
|
+
ActiveSupport::Notifications.publish ActiveAdmin::Namespace::RegisterEvent, namespace
|
|
150
79
|
namespace
|
|
151
80
|
end
|
|
152
81
|
|
|
@@ -162,7 +91,7 @@ module ActiveAdmin
|
|
|
162
91
|
# @&block The registration block.
|
|
163
92
|
#
|
|
164
93
|
def register_page(name, options = {}, &block)
|
|
165
|
-
ns = options.fetch(:namespace){ default_namespace }
|
|
94
|
+
ns = options.fetch(:namespace) { default_namespace }
|
|
166
95
|
namespace(ns).register_page name, options, &block
|
|
167
96
|
end
|
|
168
97
|
|
|
@@ -182,38 +111,43 @@ module ActiveAdmin
|
|
|
182
111
|
# To reload everything simply call `ActiveAdmin.unload!`
|
|
183
112
|
def load!
|
|
184
113
|
unless loaded?
|
|
185
|
-
|
|
186
|
-
files.each{ |file| load file }
|
|
187
|
-
namespace(default_namespace)
|
|
188
|
-
|
|
114
|
+
ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
|
|
115
|
+
files.each { |file| load file } # load files
|
|
116
|
+
namespace(default_namespace) # init AA resources
|
|
117
|
+
ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
|
|
189
118
|
@@loaded = true
|
|
190
119
|
end
|
|
191
120
|
end
|
|
192
121
|
|
|
193
122
|
def load(file)
|
|
194
|
-
DatabaseHitDuringLoad.capture{ super }
|
|
123
|
+
DatabaseHitDuringLoad.capture { super }
|
|
195
124
|
end
|
|
196
125
|
|
|
197
126
|
# Returns ALL the files to be loaded
|
|
198
127
|
def files
|
|
199
|
-
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
|
128
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }.sort
|
|
200
129
|
end
|
|
201
130
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
#
|
|
131
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
|
132
|
+
#
|
|
133
|
+
# Use this within the routes.rb file:
|
|
134
|
+
#
|
|
135
|
+
# Application.routes.draw do |map|
|
|
136
|
+
# ActiveAdmin.routes(self)
|
|
137
|
+
# end
|
|
138
|
+
#
|
|
139
|
+
# @param rails_router [ActionDispatch::Routing::Mapper]
|
|
207
140
|
def routes(rails_router)
|
|
208
141
|
load!
|
|
209
|
-
|
|
142
|
+
Router.new(router: rails_router, namespaces: namespaces).apply
|
|
210
143
|
end
|
|
211
144
|
|
|
212
145
|
# Adds before, around and after filters to all controllers.
|
|
213
146
|
# Example usage:
|
|
214
147
|
# ActiveAdmin.before_filter :authenticate_admin!
|
|
215
148
|
#
|
|
216
|
-
|
|
149
|
+
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
|
150
|
+
select { |m| m.match(/(filter|action)/) }.each do |name|
|
|
217
151
|
define_method name do |*args, &block|
|
|
218
152
|
controllers_for_filters.each do |controller|
|
|
219
153
|
controller.public_send name, *args, &block
|
|
@@ -227,13 +161,12 @@ module ActiveAdmin
|
|
|
227
161
|
controllers
|
|
228
162
|
end
|
|
229
163
|
|
|
230
|
-
|
|
164
|
+
private
|
|
231
165
|
|
|
232
166
|
def register_default_assets
|
|
233
|
-
register_stylesheet
|
|
234
|
-
register_stylesheet
|
|
235
|
-
|
|
236
|
-
register_javascript 'active_admin.js'
|
|
167
|
+
register_stylesheet "active_admin.css", media: "screen"
|
|
168
|
+
register_stylesheet "active_admin/print.css", media: "print"
|
|
169
|
+
register_javascript "active_admin.js"
|
|
237
170
|
end
|
|
238
171
|
|
|
239
172
|
# Since app/admin is alphabetically before app/models, we have to remove it
|
|
@@ -243,23 +176,57 @@ module ActiveAdmin
|
|
|
243
176
|
# files from being loaded twice in production.
|
|
244
177
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
245
178
|
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
|
246
|
-
Rails.application.config.eager_load_paths
|
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
|
247
180
|
end
|
|
248
181
|
|
|
249
|
-
#
|
|
250
|
-
#
|
|
182
|
+
# Hook into the Rails code reloading mechanism so that things are reloaded
|
|
183
|
+
# properly in development mode.
|
|
251
184
|
#
|
|
252
|
-
# If files
|
|
253
|
-
#
|
|
185
|
+
# If any of the app files (e.g. models) has changed, we need to reload all
|
|
186
|
+
# the admin files. If the admin files themselves has changed, we need to
|
|
187
|
+
# regenerate the routes as well.
|
|
254
188
|
def attach_reloader
|
|
255
|
-
|
|
256
|
-
ActiveAdmin
|
|
257
|
-
|
|
189
|
+
Rails.application.config.after_initialize do |app|
|
|
190
|
+
unload_active_admin = -> { ActiveAdmin.application.unload! }
|
|
191
|
+
|
|
192
|
+
if app.config.reload_classes_only_on_change
|
|
193
|
+
# Rails is about to unload all the app files (e.g. models), so we
|
|
194
|
+
# should first unload the classes generated by Active Admin, otherwise
|
|
195
|
+
# they will contain references to the stale (unloaded) classes.
|
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
|
197
|
+
else
|
|
198
|
+
# If the user has configured the app to always reload app files after
|
|
199
|
+
# each request, so we should unload the generated classes too.
|
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
admin_dirs = {}
|
|
204
|
+
|
|
205
|
+
load_paths.each do |path|
|
|
206
|
+
admin_dirs[path] = [:rb]
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
routes_reloader = app.config.file_watcher.new([], admin_dirs) do
|
|
210
|
+
app.reload_routes!
|
|
211
|
+
end
|
|
258
212
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
Rails.
|
|
213
|
+
app.reloaders << routes_reloader
|
|
214
|
+
|
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
|
216
|
+
# Rails might have reloaded the routes for other reasons (e.g.
|
|
217
|
+
# routes.rb has changed), in which case Active Admin would have been
|
|
218
|
+
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
|
219
|
+
#
|
|
220
|
+
# Otherwise, we should check if any of the admin files are changed
|
|
221
|
+
# and force the routes to reload if necessary. This would again causes
|
|
222
|
+
# Active Admin to load via `ActiveAdmin.routes`.
|
|
223
|
+
#
|
|
224
|
+
# Finally, if Active Admin is still not loaded at this point, then we
|
|
225
|
+
# would need to load it manually.
|
|
226
|
+
unless ActiveAdmin.application.loaded?
|
|
227
|
+
routes_reloader.execute_if_updated
|
|
228
|
+
ActiveAdmin.application.load!
|
|
229
|
+
end
|
|
263
230
|
end
|
|
264
231
|
end
|
|
265
232
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require "active_admin/settings_node"
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class ApplicationSettings < SettingsNode
|
|
5
|
+
|
|
6
|
+
# The default namespace to put controllers and routes inside. Set this
|
|
7
|
+
# in config/initializers/active_admin.rb using:
|
|
8
|
+
#
|
|
9
|
+
# config.default_namespace = :super_admin
|
|
10
|
+
#
|
|
11
|
+
register :default_namespace, :admin
|
|
12
|
+
|
|
13
|
+
register :app_path, Rails.root
|
|
14
|
+
|
|
15
|
+
# Load paths for admin configurations. Add folders to this load path
|
|
16
|
+
# to load up other resources for administration. External gems can
|
|
17
|
+
# include their paths in this load path to provide active_admin UIs
|
|
18
|
+
register :load_paths, [File.expand_path("app/admin", Rails.root)]
|
|
19
|
+
|
|
20
|
+
# Set default localize format for Date/Time values
|
|
21
|
+
register :localize_format, :long
|
|
22
|
+
|
|
23
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
|
24
|
+
# the list of methods it tries calling in order
|
|
25
|
+
# Note that Formtastic also has 'collection_label_methods' similar to this
|
|
26
|
+
# used by auto generated dropdowns in filter or belongs_to field of Active Admin
|
|
27
|
+
register :display_name_methods, [ :display_name,
|
|
28
|
+
:full_name,
|
|
29
|
+
:name,
|
|
30
|
+
:username,
|
|
31
|
+
:login,
|
|
32
|
+
:title,
|
|
33
|
+
:email,
|
|
34
|
+
:to_s ]
|
|
35
|
+
|
|
36
|
+
# To make debugging easier, by default don't stream in development
|
|
37
|
+
register :disable_streaming_in, ["development"]
|
|
38
|
+
|
|
39
|
+
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
|
40
|
+
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -2,15 +2,14 @@ module ActiveAdmin
|
|
|
2
2
|
|
|
3
3
|
# Default Authorization permissions for Active Admin
|
|
4
4
|
module Authorization
|
|
5
|
-
READ
|
|
6
|
-
CREATE
|
|
7
|
-
UPDATE
|
|
5
|
+
READ = :read
|
|
6
|
+
CREATE = :create
|
|
7
|
+
UPDATE = :update
|
|
8
8
|
DESTROY = :destroy
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
Auth = Authorization
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
# Active Admin's default authorization adapter. This adapter returns true
|
|
15
14
|
# for all requests to `#authorized?`. It should be the starting point for
|
|
16
15
|
# implementing your own authorization adapter.
|
|
@@ -19,7 +18,6 @@ module ActiveAdmin
|
|
|
19
18
|
class AuthorizationAdapter
|
|
20
19
|
attr_reader :resource, :user
|
|
21
20
|
|
|
22
|
-
|
|
23
21
|
# Initialize a new authorization adapter. This happens on each and
|
|
24
22
|
# every request to a controller.
|
|
25
23
|
#
|
|
@@ -47,14 +45,13 @@ module ActiveAdmin
|
|
|
47
45
|
# the class of the subject also. For example, Active Admin uses the class
|
|
48
46
|
# of the resource to decide if the resource should be displayed in the
|
|
49
47
|
# global navigation. To deal with this nicely in a case statement, take
|
|
50
|
-
# a look at `#normalized(
|
|
48
|
+
# a look at `#normalized(klass)`
|
|
51
49
|
#
|
|
52
50
|
# @return [Boolean]
|
|
53
51
|
def authorized?(action, subject = nil)
|
|
54
52
|
true
|
|
55
53
|
end
|
|
56
54
|
|
|
57
|
-
|
|
58
55
|
# A hook method for authorization libraries to scope the collection. By
|
|
59
56
|
# default, we just return the same collection. The returned scope is used
|
|
60
57
|
# as the starting point for all queries to the db in the controller.
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
2
|
class BaseController < ::InheritedResources::Base
|
|
3
3
|
module Authorization
|
|
4
|
-
include MethodOrProcHelper
|
|
5
4
|
extend ActiveSupport::Concern
|
|
6
5
|
|
|
7
6
|
ACTIONS_DICTIONARY = {
|
|
8
|
-
index:
|
|
9
|
-
show:
|
|
10
|
-
new:
|
|
11
|
-
create:
|
|
12
|
-
edit:
|
|
13
|
-
update:
|
|
7
|
+
index: ActiveAdmin::Authorization::READ,
|
|
8
|
+
show: ActiveAdmin::Authorization::READ,
|
|
9
|
+
new: ActiveAdmin::Authorization::CREATE,
|
|
10
|
+
create: ActiveAdmin::Authorization::CREATE,
|
|
11
|
+
edit: ActiveAdmin::Authorization::UPDATE,
|
|
12
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
|
14
13
|
destroy: ActiveAdmin::Authorization::DESTROY
|
|
15
14
|
}
|
|
16
15
|
|
|
@@ -19,6 +18,7 @@ module ActiveAdmin
|
|
|
19
18
|
|
|
20
19
|
helper_method :authorized?
|
|
21
20
|
helper_method :authorize!
|
|
21
|
+
helper_method :active_admin_authorization
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
protected
|
|
@@ -38,7 +38,6 @@ module ActiveAdmin
|
|
|
38
38
|
active_admin_authorization.authorized?(action, subject)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
|
|
42
41
|
# Authorize the action and subject. Available in the controller
|
|
43
42
|
# as well as all the views. If the action is not allowd, it raises
|
|
44
43
|
# an ActiveAdmin::AccessDenied exception.
|
|
@@ -53,9 +52,10 @@ module ActiveAdmin
|
|
|
53
52
|
# an ActiveAdmin::AccessDenied.
|
|
54
53
|
def authorize!(action, subject = nil)
|
|
55
54
|
unless authorized? action, subject
|
|
56
|
-
raise ActiveAdmin::AccessDenied.new(
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
raise ActiveAdmin::AccessDenied.new(
|
|
56
|
+
current_active_admin_user,
|
|
57
|
+
action,
|
|
58
|
+
subject)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -101,7 +101,7 @@ module ActiveAdmin
|
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
def dispatch_active_admin_access_denied(exception)
|
|
104
|
-
|
|
104
|
+
instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
def rescue_active_admin_access_denied(exception)
|
|
@@ -113,19 +113,14 @@ module ActiveAdmin
|
|
|
113
113
|
redirect_backwards_or_to_root
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
format.csv
|
|
117
|
-
format.json { render json: { error: error },
|
|
118
|
-
format.xml
|
|
116
|
+
format.csv { render body: error, status: :unauthorized }
|
|
117
|
+
format.json { render json: { error: error }, status: :unauthorized }
|
|
118
|
+
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
|
119
119
|
end
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
def redirect_backwards_or_to_root
|
|
123
|
-
|
|
124
|
-
redirect_to :back
|
|
125
|
-
else
|
|
126
|
-
controller, action = active_admin_namespace.root_to.split '#'
|
|
127
|
-
redirect_to controller: controller, action: action
|
|
128
|
-
end
|
|
123
|
+
redirect_back fallback_location: active_admin_root
|
|
129
124
|
end
|
|
130
125
|
|
|
131
126
|
end
|
|
@@ -4,7 +4,7 @@ module ActiveAdmin
|
|
|
4
4
|
extend ActiveSupport::Concern
|
|
5
5
|
|
|
6
6
|
included do
|
|
7
|
-
|
|
7
|
+
before_action :set_current_tab
|
|
8
8
|
helper_method :current_menu
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -18,15 +18,15 @@ module ActiveAdmin
|
|
|
18
18
|
# Get's called through a before filter
|
|
19
19
|
def set_current_tab
|
|
20
20
|
@current_tab = if current_menu && active_admin_config.belongs_to? && parent?
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
parent_item = active_admin_config.belongs_to_config.target.menu_item
|
|
22
|
+
if current_menu.include? parent_item
|
|
23
|
+
parent_item
|
|
24
|
+
else
|
|
25
|
+
active_admin_config.menu_item
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
active_admin_config.menu_item
|
|
29
|
+
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
end
|