activeadmin 1.0.0.pre4 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +529 -52
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +129 -58
- data/README.md +80 -79
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +2 -2
- data/app/assets/stylesheets/active_admin/_forms.scss +19 -26
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- 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 +4 -1
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -2
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/print.scss +2 -3
- data/app/views/active_admin/devise/confirmations/new.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 +2 -2
- data/config/locales/ar.yml +4 -5
- 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 +2 -3
- data/config/locales/de.yml +30 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +44 -3
- data/config/locales/en.yml +31 -5
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +5 -3
- data/config/locales/es.yml +32 -6
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +27 -5
- 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 +15 -7
- data/config/locales/ja.yml +8 -3
- data/config/locales/ko.yml +1 -2
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +1 -2
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -7
- data/config/locales/nl.yml +13 -3
- 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 +1 -2
- data/config/locales/ru.yml +5 -3
- data/config/locales/sk.yml +168 -0
- 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 +48 -8
- data/config/locales/zh-CN.yml +38 -7
- data/config/locales/zh-TW.yml +2 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +19 -13
- data/docs/1-general-configuration.md +37 -4
- data/docs/10-custom-pages.md +47 -3
- data/docs/11-decorators.md +4 -0
- data/docs/12-arbre-components.md +73 -9
- data/docs/13-authorization-adapter.md +72 -35
- data/docs/14-gotchas.md +57 -19
- data/docs/2-resource-customization.md +64 -20
- 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 +33 -12
- data/docs/3-index-pages.md +65 -9
- data/docs/4-csv-format.md +16 -0
- data/docs/5-forms.md +78 -17
- data/docs/6-show-pages.md +5 -29
- data/docs/7-sidebars.md +5 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +8 -4
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +248 -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 +50 -140
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +0 -3
- data/lib/active_admin/base_controller/authorization.rb +4 -7
- data/lib/active_admin/base_controller/menu.rb +10 -14
- data/lib/active_admin/base_controller.rb +8 -14
- data/lib/active_admin/batch_actions/controller.rb +3 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -13
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -1
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
- data/lib/active_admin/batch_actions/views/selection_cells.rb +6 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +15 -12
- data/lib/active_admin/dependency.rb +8 -76
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +3 -16
- 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 +5 -0
- data/lib/active_admin/error.rb +5 -3
- data/lib/active_admin/filters/active.rb +13 -14
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/forms.rb +6 -4
- data/lib/active_admin/filters/formtastic_addons.rb +2 -2
- data/lib/active_admin/filters/resource_extension.rb +28 -43
- data/lib/active_admin/filters.rb +2 -0
- data/lib/active_admin/form_builder.rb +100 -59
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +12 -5
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/inputs/filters/date_range_input.rb +21 -8
- data/lib/active_admin/inputs/filters/select_input.rb +6 -3
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +1 -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 +6 -12
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +4 -32
- data/lib/active_admin/namespace.rb +36 -17
- data/lib/active_admin/namespace_settings.rb +123 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +3 -17
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -7
- data/lib/active_admin/orm/active_record/comments.rb +17 -11
- data/lib/active_admin/page.rb +23 -4
- data/lib/active_admin/page_controller.rb +2 -6
- 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 +18 -5
- data/lib/active_admin/resource/action_items.rb +17 -5
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +10 -1
- data/lib/active_admin/resource/menu.rb +7 -4
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +52 -20
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +59 -7
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +32 -27
- data/lib/active_admin/resource_controller/decorators.rb +5 -5
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -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.rb +15 -0
- data/lib/active_admin/resource_dsl.rb +58 -24
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +20 -12
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +28 -16
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +13 -0
- data/lib/active_admin/view_helpers/fields_for.rb +1 -2
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +8 -1
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +43 -11
- data/lib/active_admin/views/components/attributes_table.rb +4 -4
- data/lib/active_admin/views/components/columns.rb +3 -3
- data/lib/active_admin/views/components/dropdown_menu.rb +4 -4
- data/lib/active_admin/views/components/index_list.rb +4 -3
- 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 +7 -11
- data/lib/active_admin/views/components/scopes.rb +14 -8
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/status_tag.rb +11 -16
- data/lib/active_admin/views/components/table_for.rb +7 -16
- data/lib/active_admin/views/components/tabs.rb +15 -3
- data/lib/active_admin/views/footer.rb +14 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +2 -3
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +39 -13
- data/lib/active_admin/views/pages/base.rb +36 -57
- data/lib/active_admin/views/pages/form.rb +2 -3
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +8 -2
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +4 -4
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +11 -7
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +8 -5
- data/lib/generators/active_admin/install/install_generator.rb +7 -3
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +60 -4
- 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/resource/resource_generator.rb +2 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- data/lib/ransack_ext.rb +5 -5
- data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
- data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +190 -539
- data/.gitignore +0 -49
- data/.hound.yml +0 -14
- data/.travis.yml +0 -46
- data/.yardopts +0 -8
- data/Gemfile +0 -75
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -31
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.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 -15
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -11
- 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 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -31
- 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/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 -43
- 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 -196
- 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 -42
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -34
- 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/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -59
- 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 -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/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/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- 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 -120
- 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 -162
- 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/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/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -45
- data/script/local +0 -53
- 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.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 -169
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -22
- data/spec/requests/memory_spec.rb +0 -21
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/active_admin_request_helpers.rb +0 -27
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -158
- data/spec/support/rails_template_with_data.rb +0 -55
- data/spec/support/templates/admin/stores.rb +0 -9
- 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 -134
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -165
- 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 -23
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -97
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -65
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -188
- 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 -303
- 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/filters/filter_form_builder_spec.rb +0 -434
- data/spec/unit/filters/humanized_spec.rb +0 -56
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -815
- data/spec/unit/generators/install_spec.rb +0 -24
- 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 -73
- data/spec/unit/namespace/register_resource_spec.rb +0 -160
- 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 -77
- 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 -77
- 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 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -38
- 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 -331
- data/spec/unit/routing_spec.rb +0 -185
- data/spec/unit/scope_spec.rb +0 -185
- 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 -217
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -165
- 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 -35
- 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 -434
- 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 -51
- 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 -91
- 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,138 +1,45 @@
|
|
1
1
|
require 'active_admin/router'
|
2
|
-
require 'active_admin/
|
3
|
-
require 'active_admin/
|
2
|
+
require 'active_admin/application_settings'
|
3
|
+
require 'active_admin/namespace_settings'
|
4
4
|
|
5
5
|
module ActiveAdmin
|
6
6
|
class Application
|
7
|
-
include Settings
|
8
|
-
include Settings::Inheritance
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
# config.default_namespace = :super_admin
|
16
|
-
#
|
17
|
-
setting :default_namespace, :admin
|
8
|
+
class << self
|
9
|
+
def setting(name, default)
|
10
|
+
ApplicationSettings.register name, default
|
11
|
+
end
|
18
12
|
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
def inheritable_setting(name, default)
|
14
|
+
NamespaceSettings.register name, default
|
15
|
+
end
|
22
16
|
end
|
23
17
|
|
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 a favicon
|
45
|
-
inheritable_setting :favicon, false
|
46
|
-
|
47
|
-
# Additional meta tags to place in head of logged in pages.
|
48
|
-
inheritable_setting :meta_tags, {}
|
49
|
-
|
50
|
-
# Additional meta tags to place in head of logged out pages.
|
51
|
-
inheritable_setting :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
52
|
-
|
53
|
-
# The view factory to use to generate all the view classes. Take
|
54
|
-
# a look at ActiveAdmin::ViewFactory
|
55
|
-
inheritable_setting :view_factory, ActiveAdmin::ViewFactory.new
|
56
|
-
|
57
|
-
# The method to call in controllers to get the current user
|
58
|
-
inheritable_setting :current_user_method, false
|
59
|
-
|
60
|
-
# The method to call in the controllers to ensure that there
|
61
|
-
# is a currently authenticated admin user
|
62
|
-
inheritable_setting :authentication_method, false
|
63
|
-
|
64
|
-
# The path to log user's out with. If set to a symbol, we assume
|
65
|
-
# that it's a method to call which returns the path
|
66
|
-
inheritable_setting :logout_link_path, :destroy_admin_user_session_path
|
67
|
-
|
68
|
-
# The method to use when generating the link for user logout
|
69
|
-
inheritable_setting :logout_link_method, :get
|
70
|
-
|
71
|
-
# Whether the batch actions are enabled or not
|
72
|
-
inheritable_setting :batch_actions, false
|
73
|
-
|
74
|
-
# Whether filters are enabled
|
75
|
-
inheritable_setting :filters, true
|
76
|
-
|
77
|
-
# The namespace root.
|
78
|
-
inheritable_setting :root_to, 'dashboard#index'
|
79
|
-
|
80
|
-
# Options that a passed to root_to.
|
81
|
-
inheritable_setting :root_to_options, {}
|
82
|
-
|
83
|
-
# Display breadcrumbs
|
84
|
-
inheritable_setting :breadcrumb, true
|
85
|
-
|
86
|
-
# Default CSV options
|
87
|
-
inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
88
|
-
|
89
|
-
# Default Download Links options
|
90
|
-
inheritable_setting :download_links, true
|
91
|
-
|
92
|
-
# The authorization adapter to use
|
93
|
-
inheritable_setting :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
94
|
-
|
95
|
-
# A proc to be used when a user is not authorized to view the current resource
|
96
|
-
inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
|
97
|
-
|
98
|
-
# A regex to detect unsupported browser, set to false to disable
|
99
|
-
inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
100
|
-
|
101
|
-
# Whether to display 'Current Filters' on search screen
|
102
|
-
inheritable_setting :current_filters, true
|
103
|
-
|
104
|
-
# Request parameters that are permitted by default
|
105
|
-
inheritable_setting :permitted_params, [
|
106
|
-
:utf8, :_method, :authenticity_token, :commit, :id
|
107
|
-
]
|
108
|
-
|
109
|
-
# Set flash message keys that shouldn't show in ActiveAdmin
|
110
|
-
inheritable_setting :flash_keys_to_except, ['timedout']
|
111
|
-
|
112
|
-
# Set default localize format for Date/Time values
|
113
|
-
setting :localize_format, :long
|
114
|
-
|
115
|
-
# Include association filters by default
|
116
|
-
inheritable_setting :include_default_association_filters, true
|
18
|
+
def settings
|
19
|
+
@settings ||= SettingsNode.build(ApplicationSettings)
|
20
|
+
end
|
117
21
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
:full_name,
|
122
|
-
:name,
|
123
|
-
:username,
|
124
|
-
:login,
|
125
|
-
:title,
|
126
|
-
:email,
|
127
|
-
:to_s ]
|
22
|
+
def namespace_settings
|
23
|
+
@namespace_settings ||= SettingsNode.build(NamespaceSettings)
|
24
|
+
end
|
128
25
|
|
129
|
-
|
130
|
-
|
26
|
+
def respond_to_missing?(method, include_private = false)
|
27
|
+
[settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
|
28
|
+
end
|
131
29
|
|
132
|
-
|
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
|
133
39
|
|
134
|
-
|
135
|
-
|
40
|
+
attr_reader :namespaces
|
41
|
+
def initialize
|
42
|
+
@namespaces = Namespace::Store.new
|
136
43
|
end
|
137
44
|
|
138
45
|
include AssetRegistration
|
@@ -154,7 +61,7 @@ module ActiveAdmin
|
|
154
61
|
|
155
62
|
# Registers a brand new configuration for the given resource.
|
156
63
|
def register(resource, options = {}, &block)
|
157
|
-
ns = options.fetch(:namespace){ default_namespace }
|
64
|
+
ns = options.fetch(:namespace) { default_namespace }
|
158
65
|
namespace(ns).register resource, options, &block
|
159
66
|
end
|
160
67
|
|
@@ -184,7 +91,7 @@ module ActiveAdmin
|
|
184
91
|
# @&block The registration block.
|
185
92
|
#
|
186
93
|
def register_page(name, options = {}, &block)
|
187
|
-
ns = options.fetch(:namespace){ default_namespace }
|
94
|
+
ns = options.fetch(:namespace) { default_namespace }
|
188
95
|
namespace(ns).register_page name, options, &block
|
189
96
|
end
|
190
97
|
|
@@ -205,7 +112,7 @@ module ActiveAdmin
|
|
205
112
|
def load!
|
206
113
|
unless loaded?
|
207
114
|
ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
|
208
|
-
files.each{ |file| load file }
|
115
|
+
files.each { |file| load file } # load files
|
209
116
|
namespace(default_namespace) # init AA resources
|
210
117
|
ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
|
211
118
|
@@loaded = true
|
@@ -213,22 +120,26 @@ module ActiveAdmin
|
|
213
120
|
end
|
214
121
|
|
215
122
|
def load(file)
|
216
|
-
DatabaseHitDuringLoad.capture{ super }
|
123
|
+
DatabaseHitDuringLoad.capture { super }
|
217
124
|
end
|
218
125
|
|
219
126
|
# Returns ALL the files to be loaded
|
220
127
|
def files
|
221
|
-
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
128
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
222
129
|
end
|
223
130
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
#
|
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]
|
229
140
|
def routes(rails_router)
|
230
141
|
load!
|
231
|
-
|
142
|
+
Router.new(router: rails_router, namespaces: namespaces).apply
|
232
143
|
end
|
233
144
|
|
234
145
|
# Adds before, around and after filters to all controllers.
|
@@ -250,12 +161,11 @@ module ActiveAdmin
|
|
250
161
|
controllers
|
251
162
|
end
|
252
163
|
|
253
|
-
|
164
|
+
private
|
254
165
|
|
255
166
|
def register_default_assets
|
256
|
-
register_stylesheet 'active_admin.css',
|
167
|
+
register_stylesheet 'active_admin.css', media: 'screen'
|
257
168
|
register_stylesheet 'active_admin/print.css', media: 'print'
|
258
|
-
|
259
169
|
register_javascript 'active_admin.js'
|
260
170
|
end
|
261
171
|
|
@@ -283,11 +193,11 @@ module ActiveAdmin
|
|
283
193
|
# Rails is about to unload all the app files (e.g. models), so we
|
284
194
|
# should first unload the classes generated by Active Admin, otherwise
|
285
195
|
# they will contain references to the stale (unloaded) classes.
|
286
|
-
Reloader.to_prepare(prepend: true, &unload_active_admin)
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
287
197
|
else
|
288
198
|
# If the user has configured the app to always reload app files after
|
289
199
|
# each request, so we should unload the generated classes too.
|
290
|
-
Reloader.to_complete(&unload_active_admin)
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
291
201
|
end
|
292
202
|
|
293
203
|
admin_dirs = {}
|
@@ -302,7 +212,7 @@ module ActiveAdmin
|
|
302
212
|
|
303
213
|
app.reloaders << routes_reloader
|
304
214
|
|
305
|
-
Reloader.to_prepare do
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
306
216
|
# Rails might have reloaded the routes for other reasons (e.g.
|
307
217
|
# routes.rb has changed), in which case Active Admin would have been
|
308
218
|
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
@@ -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
|
@@ -10,7 +10,6 @@ module ActiveAdmin
|
|
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
|
#
|
@@ -54,7 +52,6 @@ module ActiveAdmin
|
|
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,7 +1,6 @@
|
|
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 = {
|
@@ -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.
|
@@ -101,7 +100,7 @@ module ActiveAdmin
|
|
101
100
|
end
|
102
101
|
|
103
102
|
def dispatch_active_admin_access_denied(exception)
|
104
|
-
|
103
|
+
instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
|
105
104
|
end
|
106
105
|
|
107
106
|
def rescue_active_admin_access_denied(exception)
|
@@ -113,16 +112,14 @@ module ActiveAdmin
|
|
113
112
|
redirect_backwards_or_to_root
|
114
113
|
end
|
115
114
|
|
116
|
-
body
|
117
|
-
|
118
|
-
format.csv { render body => error, status: :unauthorized }
|
115
|
+
format.csv { render body: error, status: :unauthorized }
|
119
116
|
format.json { render json: { error: error }, status: :unauthorized }
|
120
117
|
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
121
118
|
end
|
122
119
|
end
|
123
120
|
|
124
121
|
def redirect_backwards_or_to_root
|
125
|
-
|
122
|
+
redirect_back fallback_location: active_admin_root
|
126
123
|
end
|
127
124
|
|
128
125
|
end
|
@@ -4,11 +4,7 @@ module ActiveAdmin
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
|
8
|
-
before_action :set_current_tab
|
9
|
-
else
|
10
|
-
before_filter :set_current_tab
|
11
|
-
end
|
7
|
+
before_action :set_current_tab
|
12
8
|
helper_method :current_menu
|
13
9
|
end
|
14
10
|
|
@@ -22,15 +18,15 @@ module ActiveAdmin
|
|
22
18
|
# Get's called through a before filter
|
23
19
|
def set_current_tab
|
24
20
|
@current_tab = if current_menu && active_admin_config.belongs_to? && parent?
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
34
30
|
end
|
35
31
|
|
36
32
|
end
|
@@ -10,13 +10,8 @@ module ActiveAdmin
|
|
10
10
|
|
11
11
|
layout :determine_active_admin_layout
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
before_action :authenticate_active_admin_user
|
16
|
-
else
|
17
|
-
before_filter :only_render_implemented_actions
|
18
|
-
before_filter :authenticate_active_admin_user
|
19
|
-
end
|
13
|
+
before_action :only_render_implemented_actions
|
14
|
+
before_action :authenticate_active_admin_user
|
20
15
|
|
21
16
|
class << self
|
22
17
|
# Ensure that this method is available for the DSL
|
@@ -27,6 +22,11 @@ module ActiveAdmin
|
|
27
22
|
attr_accessor :active_admin_config
|
28
23
|
end
|
29
24
|
|
25
|
+
include Authorization
|
26
|
+
include Menu
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
30
|
# By default Rails will render un-implemented actions when the view exists. Because Active
|
31
31
|
# Admin allows you to not render any of the actions by using the #actions method, we need
|
32
32
|
# to check if they are implemented.
|
@@ -34,11 +34,6 @@ module ActiveAdmin
|
|
34
34
|
raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
|
35
35
|
end
|
36
36
|
|
37
|
-
include Menu
|
38
|
-
include Authorization
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
37
|
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
43
38
|
def authenticate_active_admin_user
|
44
39
|
send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
|
@@ -64,7 +59,6 @@ module ActiveAdmin
|
|
64
59
|
end
|
65
60
|
helper_method :active_admin_namespace
|
66
61
|
|
67
|
-
|
68
62
|
ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
|
69
63
|
|
70
64
|
# Determine which layout to use.
|
@@ -80,7 +74,7 @@ module ActiveAdmin
|
|
80
74
|
|
81
75
|
def active_admin_root
|
82
76
|
controller, action = active_admin_namespace.root_to.split '#'
|
83
|
-
{controller: controller, action: action}
|
77
|
+
{ controller: controller, action: action }
|
84
78
|
end
|
85
79
|
|
86
80
|
end
|
@@ -5,9 +5,9 @@ module ActiveAdmin
|
|
5
5
|
# Controller action that is called when submitting the batch action form
|
6
6
|
def batch_action
|
7
7
|
if action_present?
|
8
|
-
selection = params[:collection_selection] ||
|
8
|
+
selection = params[:collection_selection] || []
|
9
9
|
inputs = JSON.parse params[:batch_action_inputs] || '{}'
|
10
|
-
valid_keys = render_in_context(self, current_batch_action.inputs).try(:keys)
|
10
|
+
valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
|
11
11
|
inputs = inputs.with_indifferent_access.slice *valid_keys
|
12
12
|
instance_exec selection, inputs, ¤t_batch_action.block
|
13
13
|
else
|
@@ -22,7 +22,7 @@ module ActiveAdmin
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def current_batch_action
|
25
|
-
active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
|
25
|
+
active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
|
26
26
|
end
|
27
27
|
|
28
28
|
COLLECTION_APPLIES = [
|
@@ -51,22 +51,14 @@ module ActiveAdmin
|
|
51
51
|
@batch_actions = {}
|
52
52
|
end
|
53
53
|
|
54
|
-
# Path to the batch action itself
|
55
|
-
def batch_action_path(params = {})
|
56
|
-
path = [route_collection_path(params), "batch_action"].join("/")
|
57
|
-
query = params.slice(:q, :scope)
|
58
|
-
query = query.permit!.to_h if query.respond_to? :permit!
|
59
|
-
[path, query.to_param].reject(&:blank?).join("?")
|
60
|
-
end
|
61
|
-
|
62
54
|
private
|
63
55
|
|
64
56
|
# @return [ActiveAdmin::BatchAction] The default "delete" action
|
65
57
|
def add_default_batch_action
|
66
58
|
destroy_options = {
|
67
59
|
priority: 100,
|
68
|
-
confirm: proc{ I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
|
69
|
-
if: proc{ controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
60
|
+
confirm: proc { I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
|
61
|
+
if: proc { controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
70
62
|
}
|
71
63
|
|
72
64
|
add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
|
@@ -92,7 +84,7 @@ module ActiveAdmin
|
|
92
84
|
|
93
85
|
attr_reader :block, :title, :sym
|
94
86
|
|
95
|
-
DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t 'active_admin.batch_actions.default_confirmation' }
|
87
|
+
DEFAULT_CONFIRM_MESSAGE = proc { I18n.t 'active_admin.batch_actions.default_confirmation' }
|
96
88
|
|
97
89
|
# Create a Batch Action
|
98
90
|
#
|
@@ -120,7 +112,11 @@ module ActiveAdmin
|
|
120
112
|
# => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
|
121
113
|
#
|
122
114
|
def initialize(sym, title, options = {}, &block)
|
123
|
-
@sym
|
115
|
+
@sym = sym
|
116
|
+
@title = title
|
117
|
+
@options = options
|
118
|
+
@block = block
|
119
|
+
@confirm = options[:confirm]
|
124
120
|
@block ||= proc {}
|
125
121
|
end
|
126
122
|
|
@@ -141,7 +137,7 @@ module ActiveAdmin
|
|
141
137
|
# Returns the display if block. If the block was not explicitly defined
|
142
138
|
# a default block always returning true will be returned.
|
143
139
|
def display_if_block
|
144
|
-
@options[:if] || proc{ true }
|
140
|
+
@options[:if] || proc { true }
|
145
141
|
end
|
146
142
|
|
147
143
|
# Used for sorting
|
@@ -15,7 +15,7 @@ module ActiveAdmin
|
|
15
15
|
# Open a form with two hidden input fields:
|
16
16
|
# batch_action => name of the specific action called
|
17
17
|
# batch_action_inputs => a JSON string of any requested confirmation values
|
18
|
-
text_node form_tag active_admin_config.
|
18
|
+
text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
|
19
19
|
input name: :batch_action, id: :batch_action, type: :hidden
|
20
20
|
input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
|
21
21
|
|
@@ -15,7 +15,7 @@ module ActiveAdmin
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# We don't want to wrap the action list (or any other children) in
|
18
|
-
# an
|
18
|
+
# an unnecessary div, so instead we just return the children
|
19
19
|
def to_s
|
20
20
|
children.to_s
|
21
21
|
end
|