activeadmin 1.4.3 → 3.0.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 +4 -4
- data/CHANGELOG.md +609 -26
- data/CONTRIBUTING.md +54 -76
- data/README.md +46 -13
- data/app/assets/javascripts/active_admin/base.js +521 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +3 -25
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/base.js +28 -0
- data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +98 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- 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 +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +19 -8
- data/config/locales/ar.yml +9 -15
- data/config/locales/az.yml +131 -0
- data/config/locales/bg.yml +1 -8
- data/config/locales/bs.yml +1 -7
- data/config/locales/ca.yml +1 -8
- data/config/locales/cs.yml +1 -7
- data/config/locales/da.yml +1 -7
- data/config/locales/de-CH.yml +1 -7
- data/config/locales/de.yml +19 -8
- data/config/locales/el.yml +1 -7
- data/config/locales/en-CA.yml +4 -10
- data/config/locales/en-GB.yml +4 -10
- data/config/locales/en.yml +4 -11
- data/config/locales/eo.yml +1 -8
- data/config/locales/es-MX.yml +3 -8
- data/config/locales/es.yml +6 -13
- data/config/locales/fa.yml +1 -7
- data/config/locales/fi.yml +1 -7
- data/config/locales/fr.yml +9 -16
- data/config/locales/he.yml +1 -10
- data/config/locales/hr.yml +1 -7
- data/config/locales/hu.yml +3 -6
- data/config/locales/id.yml +1 -7
- data/config/locales/it.yml +19 -8
- data/config/locales/ja.yml +3 -10
- data/config/locales/ko.yml +2 -8
- data/config/locales/lt.yml +3 -10
- data/config/locales/lv.yml +3 -9
- data/config/locales/mk.yml +126 -0
- data/config/locales/nb.yml +1 -8
- data/config/locales/nl.yml +2 -9
- data/config/locales/pl.yml +1 -8
- data/config/locales/pt-BR.yml +1 -8
- data/config/locales/pt-PT.yml +1 -7
- data/config/locales/ro.yml +4 -9
- data/config/locales/ru.yml +1 -6
- data/config/locales/sk.yml +58 -6
- data/config/locales/sv-SE.yml +59 -39
- data/config/locales/tr.yml +1 -11
- data/config/locales/uk.yml +3 -6
- data/config/locales/vi.yml +40 -19
- data/config/locales/zh-CN.yml +35 -23
- data/config/locales/zh-TW.yml +1 -7
- data/lib/active_admin/abstract_view_factory.rb +1 -0
- data/lib/active_admin/application.rb +26 -33
- data/lib/active_admin/application_settings.rb +7 -3
- data/lib/active_admin/asset_registration.rb +4 -11
- data/lib/active_admin/authorization_adapter.rb +6 -3
- data/lib/active_admin/base_controller/authorization.rb +17 -16
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +12 -11
- data/lib/active_admin/batch_actions/controller.rb +5 -4
- data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +2 -1
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +3 -1
- data/lib/active_admin/csv_builder.rb +15 -23
- data/lib/active_admin/dependency.rb +12 -87
- data/lib/active_admin/deprecation.rb +1 -0
- data/lib/active_admin/devise.rb +16 -5
- data/lib/active_admin/dsl.rb +3 -9
- data/lib/active_admin/dynamic_setting.rb +1 -0
- data/lib/active_admin/dynamic_settings_node.rb +3 -2
- data/lib/active_admin/engine.rb +13 -9
- data/lib/active_admin/error.rb +5 -4
- data/lib/active_admin/filters/active.rb +2 -1
- data/lib/active_admin/filters/active_filter.rb +11 -10
- data/lib/active_admin/filters/active_sidebar.rb +8 -30
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +9 -8
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +33 -8
- data/lib/active_admin/filters.rb +8 -7
- data/lib/active_admin/form_builder.rb +27 -22
- data/lib/active_admin/generators/boilerplate.rb +13 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +3 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +2 -0
- data/lib/active_admin/inputs/datepicker_input.rb +3 -2
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -8
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +18 -14
- data/lib/active_admin/inputs/filters/numeric_input.rb +2 -1
- data/lib/active_admin/inputs/filters/select_input.rb +3 -2
- data/lib/active_admin/inputs/filters/string_input.rb +2 -1
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +7 -3
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +8 -7
- data/lib/active_admin/namespace.rb +15 -14
- data/lib/active_admin/namespace_settings.rb +28 -8
- data/lib/active_admin/order_clause.rb +3 -2
- data/lib/active_admin/orm/active_record/comments/comment.rb +13 -4
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +30 -24
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +30 -29
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +2 -1
- data/lib/active_admin/page_presenter.rb +3 -1
- data/lib/active_admin/pundit_adapter.rb +71 -16
- data/lib/active_admin/resource/action_items.rb +6 -5
- data/lib/active_admin/resource/attributes.rb +9 -5
- data/lib/active_admin/resource/belongs_to.rb +9 -3
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +6 -5
- data/lib/active_admin/resource/model.rb +16 -0
- data/lib/active_admin/resource/naming.rb +6 -5
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +26 -14
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +4 -3
- data/lib/active_admin/resource/sidebars.rb +3 -2
- data/lib/active_admin/resource.rb +37 -22
- data/lib/active_admin/resource_collection.rb +3 -2
- data/lib/active_admin/resource_controller/action_builder.rb +11 -0
- data/lib/active_admin/resource_controller/data_access.rb +31 -5
- data/lib/active_admin/resource_controller/decorators.rb +8 -29
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -0
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +9 -7
- data/lib/active_admin/resource_controller.rb +14 -10
- data/lib/active_admin/resource_dsl.rb +16 -28
- data/lib/active_admin/router.rb +4 -2
- data/lib/active_admin/scope.rb +16 -11
- data/lib/active_admin/settings_node.rb +2 -1
- data/lib/active_admin/sidebar_section.rb +4 -1
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +18 -17
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
- data/lib/active_admin/view_helpers/display_helper.rb +32 -8
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +14 -11
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +9 -8
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
- data/lib/active_admin/views/components/index_list.rb +4 -3
- data/lib/active_admin/views/components/menu.rb +2 -1
- data/lib/active_admin/views/components/menu_item.rb +5 -4
- data/lib/active_admin/views/components/paginated_collection.rb +22 -20
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +8 -5
- data/lib/active_admin/views/components/sidebar.rb +1 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -3
- data/lib/active_admin/views/components/site_title.rb +2 -1
- data/lib/active_admin/views/components/status_tag.rb +14 -26
- data/lib/active_admin/views/components/table_for.rb +21 -19
- data/lib/active_admin/views/components/tabs.rb +14 -4
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +4 -2
- data/lib/active_admin/views/header.rb +3 -2
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +2 -1
- data/lib/active_admin/views/index_as_grid.rb +2 -1
- data/lib/active_admin/views/index_as_table.rb +27 -22
- data/lib/active_admin/views/pages/base.rb +25 -14
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +16 -13
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +2 -7
- data/lib/active_admin/views/tabbed_navigation.rb +3 -2
- data/lib/active_admin/views/title_bar.rb +2 -1
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +67 -63
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
- data/lib/generators/active_admin/install/install_generator.rb +19 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +62 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/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/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +115 -173
- data/.circleci/config.yml +0 -572
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -16
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -99
- data/.simplecov +0 -9
- data/.yardopts +0 -7
- data/Gemfile +0 -30
- data/Gemfile.common +0 -26
- data/Gemfile.lock +0 -433
- data/Rakefile +0 -24
- data/activeadmin.gemspec +0 -32
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- 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 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- 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 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/bin/install_chromedriver.sh +0 -17
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -11
- data/cucumber.yml +0 -7
- data/docs/.gitignore +0 -1
- data/docs/0-installation.md +0 -118
- data/docs/1-general-configuration.md +0 -204
- data/docs/10-custom-pages.md +0 -150
- data/docs/11-decorators.md +0 -59
- data/docs/12-arbre-components.md +0 -201
- data/docs/13-authorization-adapter.md +0 -285
- data/docs/14-gotchas.md +0 -138
- data/docs/2-resource-customization.md +0 -466
- data/docs/3-index-pages/custom-index.md +0 -35
- data/docs/3-index-pages/index-as-block.md +0 -19
- data/docs/3-index-pages/index-as-blog.md +0 -69
- data/docs/3-index-pages/index-as-grid.md +0 -27
- data/docs/3-index-pages/index-as-table.md +0 -227
- data/docs/3-index-pages.md +0 -328
- data/docs/4-csv-format.md +0 -74
- data/docs/5-forms.md +0 -232
- data/docs/6-show-pages.md +0 -81
- data/docs/7-sidebars.md +0 -75
- data/docs/8-custom-actions.md +0 -177
- data/docs/9-batch-actions.md +0 -237
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -4
- data/docs/Gemfile.lock +0 -249
- data/docs/README.md +0 -24
- data/docs/_config.yml +0 -2
- data/docs/_includes/footer.html +0 -8
- data/docs/_includes/google-analytics.html +0 -16
- data/docs/_includes/head.html +0 -7
- data/docs/_includes/toc.html +0 -98
- data/docs/_includes/top-menu.html +0 -17
- data/docs/_layouts/default.html +0 -21
- data/docs/documentation.md +0 -60
- 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 +0 -14
- data/docs/index.html +0 -125
- data/docs/stylesheets/main.css +0 -1176
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_42.gemfile.lock +0 -339
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -353
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -353
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -111
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/ransack_ext.rb +0 -20
- data/tasks/application_generator.rb +0 -50
- data/tasks/docs.rake +0 -64
- data/tasks/gemfiles.rake +0 -8
- data/tasks/lint.rake +0 -110
- data/tasks/local.rake +0 -27
- data/tasks/release.rake +0 -6
- data/tasks/test.rake +0 -42
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class ResourceController < BaseController
|
3
4
|
|
@@ -7,12 +8,22 @@ module ActiveAdmin
|
|
7
8
|
module ClassMethods
|
8
9
|
|
9
10
|
def clear_member_actions!
|
11
|
+
remove_action_methods(:member)
|
10
12
|
active_admin_config.clear_member_actions!
|
11
13
|
end
|
12
14
|
|
13
15
|
def clear_collection_actions!
|
16
|
+
remove_action_methods(:collection)
|
14
17
|
active_admin_config.clear_collection_actions!
|
15
18
|
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def remove_action_methods(actions_type)
|
23
|
+
active_admin_config.public_send("#{actions_type}_actions").each do |action|
|
24
|
+
remove_method action.name
|
25
|
+
end
|
26
|
+
end
|
16
27
|
end
|
17
28
|
|
18
29
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class ResourceController < BaseController
|
3
4
|
|
@@ -23,9 +24,9 @@ module ActiveAdmin
|
|
23
24
|
|
24
25
|
COLLECTION_APPLIES = [
|
25
26
|
:authorization_scope,
|
26
|
-
:sorting,
|
27
27
|
:filtering,
|
28
28
|
:scoping,
|
29
|
+
:sorting,
|
29
30
|
:includes,
|
30
31
|
:pagination,
|
31
32
|
:collection_decorator
|
@@ -128,7 +129,7 @@ module ActiveAdmin
|
|
128
129
|
#
|
129
130
|
# @return [ActiveRecord::Base] An un-saved active record base object
|
130
131
|
def build_new_resource
|
131
|
-
scoped_collection.send(
|
132
|
+
apply_authorization_scope(scoped_collection).send(
|
132
133
|
method_for_build,
|
133
134
|
*resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
|
134
135
|
)
|
@@ -249,21 +250,32 @@ module ActiveAdmin
|
|
249
250
|
end
|
250
251
|
|
251
252
|
def apply_pagination(chain)
|
253
|
+
# skip pagination if CSV format was requested
|
254
|
+
return chain if params["format"] == "csv"
|
252
255
|
# skip pagination if already was paginated by scope
|
253
256
|
return chain if chain.respond_to?(:total_pages)
|
254
|
-
page_method_name = Kaminari.config.page_method_name
|
255
257
|
page = params[Kaminari.config.param_name]
|
256
258
|
|
257
|
-
chain
|
259
|
+
paginate(chain, page, per_page)
|
258
260
|
end
|
259
261
|
|
260
262
|
def collection_applies(options = {})
|
261
|
-
only
|
263
|
+
only = Array(options.fetch(:only, COLLECTION_APPLIES))
|
262
264
|
except = Array(options.fetch(:except, []))
|
263
265
|
|
264
266
|
COLLECTION_APPLIES & only - except
|
265
267
|
end
|
266
268
|
|
269
|
+
def in_paginated_batches(&block)
|
270
|
+
ActiveRecord::Base.uncached do
|
271
|
+
(1..paginated_collection.total_pages).each do |page|
|
272
|
+
paginated_collection(page).each do |resource|
|
273
|
+
yield apply_decorator(resource)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
267
279
|
def per_page
|
268
280
|
if active_admin_config.paginate
|
269
281
|
dynamic_per_page || configured_per_page
|
@@ -317,6 +329,20 @@ module ActiveAdmin
|
|
317
329
|
def create_another?
|
318
330
|
params[:create_another].present?
|
319
331
|
end
|
332
|
+
|
333
|
+
def paginated_collection(page_no = 1)
|
334
|
+
paginate(collection, page_no, batch_size)
|
335
|
+
end
|
336
|
+
|
337
|
+
def paginate(chain, page, per_page)
|
338
|
+
page_method_name = Kaminari.config.page_method_name
|
339
|
+
|
340
|
+
chain.public_send(page_method_name, page).per(per_page)
|
341
|
+
end
|
342
|
+
|
343
|
+
def batch_size
|
344
|
+
1000
|
345
|
+
end
|
320
346
|
end
|
321
347
|
end
|
322
348
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class ResourceController < BaseController
|
3
4
|
module Decorators
|
@@ -28,7 +29,7 @@ module ActiveAdmin
|
|
28
29
|
|
29
30
|
def decorate?
|
30
31
|
case action_name
|
31
|
-
when
|
32
|
+
when "new", "edit", "create", "update"
|
32
33
|
form = active_admin_config.get_page_presenter :form
|
33
34
|
form && form.options[:decorate] && decorator_class.present?
|
34
35
|
else
|
@@ -53,49 +54,27 @@ module ActiveAdmin
|
|
53
54
|
|
54
55
|
def self.wrap(decorator)
|
55
56
|
collection_decorator = find_collection_decorator(decorator)
|
56
|
-
|
57
|
-
|
58
|
-
name = "#{collection_decorator.name} of #{decorator} + ActiveAdmin"
|
59
|
-
@cache[name] ||= wrap! collection_decorator, name
|
60
|
-
else
|
61
|
-
collection_decorator
|
62
|
-
end
|
57
|
+
name = "#{collection_decorator.name} of #{decorator} + ActiveAdmin"
|
58
|
+
@cache[name] ||= wrap! collection_decorator, name
|
63
59
|
end
|
64
60
|
|
65
|
-
private
|
66
|
-
|
67
61
|
def self.wrap!(parent, name)
|
68
62
|
::Class.new parent do
|
69
63
|
delegate :reorder, :page, :current_page, :total_pages, :limit_value,
|
70
|
-
:total_count, :total_pages, :
|
71
|
-
:find_each, :ransack
|
64
|
+
:total_count, :total_pages, :offset, :to_key, :group_values,
|
65
|
+
:except, :find_each, :ransack, to: :object
|
72
66
|
|
73
67
|
define_singleton_method(:name) { name }
|
74
68
|
end
|
75
69
|
end
|
76
70
|
|
77
|
-
# Draper::CollectionDecorator was introduced in 1.0.0
|
78
|
-
# Draper::Decorator#collection_decorator_class was introduced in 1.3.0
|
79
71
|
def self.find_collection_decorator(decorator)
|
80
|
-
if
|
72
|
+
if decorator.respond_to?(:collection_decorator_class)
|
81
73
|
decorator.collection_decorator_class
|
82
|
-
elsif Dependency.draper? '>= 1.0.0'
|
83
|
-
draper_collection_decorator
|
84
74
|
else
|
85
|
-
|
75
|
+
CollectionDecorator
|
86
76
|
end
|
87
77
|
end
|
88
|
-
|
89
|
-
def self.draper_collection_decorator?(decorator)
|
90
|
-
decorator && decorator <= draper_collection_decorator
|
91
|
-
rescue NameError
|
92
|
-
false
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.draper_collection_decorator
|
96
|
-
::Draper::CollectionDecorator
|
97
|
-
end
|
98
|
-
|
99
78
|
end
|
100
79
|
end
|
101
80
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/resource"
|
3
|
+
require "active_admin/resource/model"
|
4
|
+
|
5
|
+
module ActiveAdmin
|
6
|
+
class ResourceController < BaseController
|
7
|
+
module PolymorphicRoutes
|
8
|
+
def polymorphic_url(record_or_hash_or_array, options = {})
|
9
|
+
super(map_named_resources_for(record_or_hash_or_array), options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def polymorphic_path(record_or_hash_or_array, options = {})
|
13
|
+
super(map_named_resources_for(record_or_hash_or_array), options)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def map_named_resources_for(record_or_hash_or_array)
|
19
|
+
return record_or_hash_or_array unless record_or_hash_or_array.is_a?(Array)
|
20
|
+
|
21
|
+
record_or_hash_or_array.map { |record| to_named_resource(record) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_named_resource(record)
|
25
|
+
if record.is_a?(resource_class)
|
26
|
+
return ActiveAdmin::Model.new(active_admin_config, record)
|
27
|
+
end
|
28
|
+
|
29
|
+
belongs_to_resource = active_admin_config.belongs_to_config.try(:resource)
|
30
|
+
if belongs_to_resource && record.is_a?(belongs_to_resource.resource_class)
|
31
|
+
return ActiveAdmin::Model.new(belongs_to_resource, record)
|
32
|
+
end
|
33
|
+
|
34
|
+
record
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class ResourceController < BaseController
|
3
4
|
module ResourceClassMethods
|
@@ -13,6 +14,8 @@ module ActiveAdmin
|
|
13
14
|
@active_admin_config ? @active_admin_config.resource_class : nil
|
14
15
|
end
|
15
16
|
|
17
|
+
private
|
18
|
+
|
16
19
|
def resource_class
|
17
20
|
self.class.resource_class
|
18
21
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "csv"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
class ResourceController < BaseController
|
@@ -18,23 +19,24 @@ module ActiveAdmin
|
|
18
19
|
protected
|
19
20
|
|
20
21
|
def stream_resource(&block)
|
21
|
-
headers[
|
22
|
-
headers[
|
22
|
+
headers["X-Accel-Buffering"] = "no"
|
23
|
+
headers["Cache-Control"] = "no-cache"
|
24
|
+
headers["Last-Modified"] = Time.current.httpdate
|
23
25
|
|
24
26
|
if ActiveAdmin.application.disable_streaming_in.include? Rails.env
|
25
|
-
self.response_body = block[
|
27
|
+
self.response_body = block[String.new]
|
26
28
|
else
|
27
29
|
self.response_body = Enumerator.new &block
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
33
|
def csv_filename
|
32
|
-
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.
|
34
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_formatted_s(:default)}.csv"
|
33
35
|
end
|
34
36
|
|
35
37
|
def stream_csv
|
36
|
-
headers[
|
37
|
-
headers[
|
38
|
+
headers["Content-Type"] = "text/csv; charset=utf-8" # In Rails 5 it's set to HTML??
|
39
|
+
headers["Content-Disposition"] = %{attachment; filename="#{csv_filename}"}
|
38
40
|
stream_resource &active_admin_config.csv_builder.method(:build).to_proc.curry[self]
|
39
41
|
end
|
40
42
|
|
@@ -1,10 +1,13 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/collection_decorator"
|
3
|
+
require "active_admin/resource_controller/action_builder"
|
4
|
+
require "active_admin/resource_controller/data_access"
|
5
|
+
require "active_admin/resource_controller/decorators"
|
6
|
+
require "active_admin/resource_controller/polymorphic_routes"
|
7
|
+
require "active_admin/resource_controller/scoping"
|
8
|
+
require "active_admin/resource_controller/streaming"
|
9
|
+
require "active_admin/resource_controller/sidebars"
|
10
|
+
require "active_admin/resource_controller/resource_class_methods"
|
8
11
|
|
9
12
|
module ActiveAdmin
|
10
13
|
# All Resources Controller inherits from this controller.
|
@@ -18,17 +21,18 @@ module ActiveAdmin
|
|
18
21
|
include ActionBuilder
|
19
22
|
include Decorators
|
20
23
|
include DataAccess
|
24
|
+
include PolymorphicRoutes
|
21
25
|
include Scoping
|
22
26
|
include Streaming
|
23
27
|
include Sidebars
|
24
28
|
include ViewHelpers::DownloadFormatLinksHelper
|
25
|
-
extend
|
29
|
+
extend ResourceClassMethods
|
26
30
|
|
27
31
|
def self.active_admin_config=(config)
|
28
32
|
if @active_admin_config = config
|
29
33
|
defaults resource_class: config.resource_class,
|
30
|
-
route_prefix:
|
31
|
-
instance_name:
|
34
|
+
route_prefix: config.route_prefix,
|
35
|
+
instance_name: config.resource_name.singular
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
# This is the class where all the register blocks are evaluated.
|
3
4
|
class ResourceDSL < DSL
|
@@ -62,11 +63,12 @@ module ActiveAdmin
|
|
62
63
|
#
|
63
64
|
def permit_params(*args, &block)
|
64
65
|
param_key = config.param_key.to_sym
|
65
|
-
belongs_to_param = config.belongs_to_param
|
66
|
-
create_another_param = :create_another if config.create_another
|
67
66
|
|
68
67
|
controller do
|
69
68
|
define_method :permitted_params do
|
69
|
+
belongs_to_param = active_admin_config.belongs_to_param
|
70
|
+
create_another_param = :create_another if active_admin_config.create_another
|
71
|
+
|
70
72
|
permitted_params =
|
71
73
|
active_admin_namespace.permitted_params +
|
72
74
|
Array.wrap(belongs_to_param) +
|
@@ -74,6 +76,8 @@ module ActiveAdmin
|
|
74
76
|
|
75
77
|
params.permit(*permitted_params, param_key => block ? instance_exec(&block) : args)
|
76
78
|
end
|
79
|
+
|
80
|
+
private :permitted_params
|
77
81
|
end
|
78
82
|
end
|
79
83
|
|
@@ -119,7 +123,7 @@ module ActiveAdmin
|
|
119
123
|
#
|
120
124
|
# ActiveAdmin.register Post do
|
121
125
|
# member_action :comments do
|
122
|
-
# @post = Post.find(params[:id]
|
126
|
+
# @post = Post.find(params[:id])
|
123
127
|
# @comments = @post.comments
|
124
128
|
# end
|
125
129
|
# end
|
@@ -131,14 +135,14 @@ module ActiveAdmin
|
|
131
135
|
# action.
|
132
136
|
#
|
133
137
|
def action(set, name, options = {}, &block)
|
134
|
-
warn "Warning: method `#{name}` already defined" if controller.method_defined?(name)
|
138
|
+
warn "Warning: method `#{name}` already defined in #{controller.name}" if controller.method_defined?(name)
|
135
139
|
|
136
140
|
set << ControllerAction.new(name, options)
|
137
141
|
title = options.delete(:title)
|
138
142
|
|
139
143
|
controller do
|
140
144
|
before_action(only: [name]) { @page_title = title } if title
|
141
|
-
define_method(name, &block || Proc.new{})
|
145
|
+
define_method(name, &block || Proc.new {})
|
142
146
|
end
|
143
147
|
end
|
144
148
|
|
@@ -181,31 +185,15 @@ module ActiveAdmin
|
|
181
185
|
# == Before / After Destroy
|
182
186
|
# Called before and after the object is destroyed from the database.
|
183
187
|
#
|
184
|
-
delegate :before_build,
|
185
|
-
delegate :before_create,
|
186
|
-
delegate :before_update,
|
187
|
-
delegate :before_save,
|
188
|
+
delegate :before_build, :after_build, to: :controller
|
189
|
+
delegate :before_create, :after_create, to: :controller
|
190
|
+
delegate :before_update, :after_update, to: :controller
|
191
|
+
delegate :before_save, :after_save, to: :controller
|
188
192
|
delegate :before_destroy, :after_destroy, to: :controller
|
189
193
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
:after, :skip_after,
|
194
|
-
:around, :skip
|
195
|
-
]
|
196
|
-
keywords = if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 1
|
197
|
-
[:action]
|
198
|
-
else
|
199
|
-
[:action, :filter]
|
200
|
-
end
|
201
|
-
|
202
|
-
keywords.each do |name|
|
203
|
-
phases.each do |action|
|
204
|
-
define_method "#{action}_#{name}" do |*args, &block|
|
205
|
-
controller.public_send "#{action}_action", *args, &block
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
194
|
+
standard_rails_filters =
|
195
|
+
AbstractController::Callbacks::ClassMethods.public_instance_methods.select { |m| m.match(/_action\z/) }
|
196
|
+
delegate *standard_rails_filters, to: :controller
|
209
197
|
|
210
198
|
# Specify which actions to create in the controller
|
211
199
|
#
|
data/lib/active_admin/router.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
# @private
|
3
4
|
class Router
|
4
5
|
attr_reader :namespaces, :router
|
5
6
|
|
6
7
|
def initialize(router:, namespaces:)
|
7
|
-
@router
|
8
|
+
@router = router
|
9
|
+
@namespaces = namespaces
|
8
10
|
end
|
9
11
|
|
10
12
|
def apply
|
@@ -28,7 +30,7 @@ module ActiveAdmin
|
|
28
30
|
|
29
31
|
# Defines the routes for each resource
|
30
32
|
def define_resources_routes
|
31
|
-
resources = namespaces.flat_map{ |n| n.resources.values }
|
33
|
+
resources = namespaces.flat_map { |n| n.resources.values }
|
32
34
|
resources.each do |config|
|
33
35
|
define_resource_routes(config)
|
34
36
|
end
|
data/lib/active_admin/scope.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class Scope
|
3
4
|
|
@@ -28,30 +29,34 @@ module ActiveAdmin
|
|
28
29
|
# # => Scope with the group :status
|
29
30
|
#
|
30
31
|
def initialize(name, method = nil, options = {}, &block)
|
31
|
-
@name
|
32
|
+
@name = name
|
33
|
+
@scope_method = method.try(:to_sym)
|
32
34
|
|
33
35
|
if name.is_a? Proc
|
34
36
|
raise "A string/symbol is required as the second argument if your label is a proc." unless method
|
35
|
-
@id =
|
37
|
+
@id = method.to_s.parameterize(separator: "_")
|
36
38
|
else
|
37
39
|
@scope_method ||= name.to_sym
|
38
|
-
@id =
|
40
|
+
@id = name.to_s.parameterize(separator: "_")
|
39
41
|
end
|
40
42
|
|
41
|
-
@scope_method
|
42
|
-
|
43
|
+
@scope_method = nil if @scope_method == :all
|
44
|
+
if block_given?
|
45
|
+
@scope_method = nil
|
46
|
+
@scope_block = block
|
47
|
+
end
|
43
48
|
|
44
|
-
@localizer
|
45
|
-
@show_count
|
46
|
-
@display_if_block = options[:if]
|
47
|
-
@default_block
|
48
|
-
@group
|
49
|
+
@localizer = options[:localizer]
|
50
|
+
@show_count = options.fetch(:show_count, true)
|
51
|
+
@display_if_block = options[:if] || proc { true }
|
52
|
+
@default_block = options[:default] || proc { false }
|
53
|
+
@group = options[:group].try(:to_sym)
|
49
54
|
end
|
50
55
|
|
51
56
|
def name
|
52
57
|
case @name
|
53
58
|
when String then @name
|
54
|
-
when Symbol then @localizer ? @localizer.t(@name, scope:
|
59
|
+
when Symbol then @localizer ? @localizer.t(@name, scope: "scopes") : @name.to_s.titleize
|
55
60
|
else @name
|
56
61
|
end
|
57
62
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
class SettingsNode
|
@@ -5,7 +6,7 @@ module ActiveAdmin
|
|
5
6
|
# Never instantiated. Variables are stored in the singleton_class.
|
6
7
|
private_class_method :new
|
7
8
|
|
8
|
-
# @
|
9
|
+
# @return anonymous class with same accessors as the superclass.
|
9
10
|
def build(superclass = self)
|
10
11
|
Class.new(superclass)
|
11
12
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
class SidebarSection
|
@@ -6,7 +7,9 @@ module ActiveAdmin
|
|
6
7
|
attr_accessor :name, :options, :block
|
7
8
|
|
8
9
|
def initialize(name, options = {}, &block)
|
9
|
-
@name
|
10
|
+
@name = name.to_s
|
11
|
+
@options = options
|
12
|
+
@block = block
|
10
13
|
normalize_display_options!
|
11
14
|
end
|
12
15
|
|
data/lib/active_admin/version.rb
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/abstract_view_factory"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
class ViewFactory < AbstractViewFactory
|
5
6
|
|
6
7
|
# Register Helper Renderers
|
7
|
-
register
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
register global_navigation: ActiveAdmin::Views::TabbedNavigation,
|
9
|
+
utility_navigation: ActiveAdmin::Views::TabbedNavigation,
|
10
|
+
site_title: ActiveAdmin::Views::SiteTitle,
|
11
|
+
unsupported_browser: ActiveAdmin::Views::UnsupportedBrowser,
|
12
|
+
action_items: ActiveAdmin::Views::ActionItems,
|
13
|
+
title_bar: ActiveAdmin::Views::TitleBar,
|
14
|
+
header: ActiveAdmin::Views::Header,
|
15
|
+
footer: ActiveAdmin::Views::Footer,
|
16
|
+
index_scopes: ActiveAdmin::Views::Scopes,
|
17
|
+
blank_slate: ActiveAdmin::Views::BlankSlate
|
17
18
|
|
18
19
|
# Register All The Pages
|
19
|
-
register
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
register index_page: ActiveAdmin::Views::Pages::Index,
|
21
|
+
show_page: ActiveAdmin::Views::Pages::Show,
|
22
|
+
new_page: ActiveAdmin::Views::Pages::Form,
|
23
|
+
edit_page: ActiveAdmin::Views::Pages::Form,
|
24
|
+
layout: ActiveAdmin::Views::Pages::Layout,
|
25
|
+
page: ActiveAdmin::Views::Pages::Page
|
25
26
|
|
26
27
|
end
|
27
28
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module ViewHelpers
|
3
4
|
module AutoLinkHelper
|
@@ -28,7 +29,7 @@ module ActiveAdmin
|
|
28
29
|
authorized?(ActiveAdmin::Auth::READ, resource)
|
29
30
|
url_for config.route_instance_path resource, url_options
|
30
31
|
elsif config.controller.action_methods.include?("edit") &&
|
31
|
-
authorized?(ActiveAdmin::Auth::
|
32
|
+
authorized?(ActiveAdmin::Auth::EDIT, resource)
|
32
33
|
url_for config.route_edit_instance_path resource, url_options
|
33
34
|
end
|
34
35
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module ViewHelpers
|
3
4
|
module BreadcrumbHelper
|
@@ -6,22 +7,22 @@ module ActiveAdmin
|
|
6
7
|
def breadcrumb_links(path = request.path)
|
7
8
|
# remove leading "/" and split up the URL
|
8
9
|
# and remove last since it's used as the page title
|
9
|
-
parts = path.split(
|
10
|
+
parts = path.split("/").select(&:present?)[0..-2]
|
10
11
|
|
11
12
|
parts.each_with_index.map do |part, index|
|
12
13
|
# 1. try using `display_name` if we can locate a DB object
|
13
14
|
# 2. try using the model name translation
|
14
15
|
# 3. default to calling `titlecase` on the URL fragment
|
15
|
-
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index-1]
|
16
|
+
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index - 1]
|
16
17
|
parent = active_admin_config.belongs_to_config.try :target
|
17
|
-
config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
|
18
|
-
name
|
18
|
+
config = parent && parent.resource_name.route_key == parts[index - 1] ? parent : active_admin_config
|
19
|
+
name = display_name config.find_resource part
|
19
20
|
end
|
20
21
|
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
21
22
|
|
22
23
|
# Don't create a link if the resource's show action is disabled
|
23
24
|
if !config || config.defined_actions.include?(:show)
|
24
|
-
link_to name,
|
25
|
+
link_to name, "/" + parts[0..index].join("/")
|
25
26
|
else
|
26
27
|
name
|
27
28
|
end
|