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
data/config/locales/zh-CN.yml
CHANGED
@@ -1,4 +1,20 @@
|
|
1
1
|
"zh-CN":
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
comment:
|
5
|
+
one: "评论"
|
6
|
+
other: "评论"
|
7
|
+
active_admin/comment:
|
8
|
+
one: "评论"
|
9
|
+
other: "评论"
|
10
|
+
attributes:
|
11
|
+
active_admin/comment:
|
12
|
+
author_type: "作者类型"
|
13
|
+
body: "内容"
|
14
|
+
created_at: "创建"
|
15
|
+
namespace: "Namespace"
|
16
|
+
resource_type: "Resource 类型"
|
17
|
+
updated_at: "更新"
|
2
18
|
active_admin:
|
3
19
|
dashboard: "控制面板"
|
4
20
|
dashboard_welcome:
|
@@ -8,8 +24,8 @@
|
|
8
24
|
edit: "编辑"
|
9
25
|
delete: "删除"
|
10
26
|
delete_confirmation: "确定删除?"
|
11
|
-
create_another: "
|
12
|
-
new_model: "
|
27
|
+
create_another: "新增另一个%{model}"
|
28
|
+
new_model: "新增%{model}"
|
13
29
|
edit_model: "编辑%{model}"
|
14
30
|
delete_model: "删除%{model}"
|
15
31
|
details: "%{model}详情"
|
@@ -17,36 +33,32 @@
|
|
17
33
|
empty: "未定义"
|
18
34
|
previous: "上一个"
|
19
35
|
next: "下一个"
|
20
|
-
download: "
|
21
|
-
has_many_new: "
|
36
|
+
download: "下载:"
|
37
|
+
has_many_new: "新增一个%{model}"
|
22
38
|
has_many_delete: "删除"
|
23
39
|
has_many_remove: "清除"
|
40
|
+
move: "移动"
|
24
41
|
filters:
|
25
42
|
buttons:
|
26
43
|
filter: "过滤"
|
27
44
|
clear: "清除条件"
|
28
45
|
predicates:
|
29
|
-
contains: "包含"
|
30
|
-
equals: "等于"
|
31
|
-
starts_with: "开头"
|
32
|
-
ends_with: "完与"
|
33
|
-
greater_than: "大于"
|
34
|
-
less_than: "小于"
|
35
|
-
gteq_datetime: "大于等于"
|
36
|
-
lteq_datetime: "小于等于"
|
37
46
|
from: "起"
|
38
47
|
to: "止"
|
48
|
+
scopes:
|
49
|
+
all: "所有"
|
39
50
|
search_status:
|
40
51
|
headline: "搜索条件:"
|
41
|
-
current_scope: "
|
52
|
+
current_scope: "范围:"
|
42
53
|
current_filters: "过滤条件:"
|
43
54
|
no_current_filters: "无"
|
44
55
|
status_tag:
|
45
56
|
"yes": "是"
|
46
57
|
"no": "否"
|
47
|
-
|
58
|
+
"unset": "否"
|
59
|
+
main_content: "请执行 %{model}#main_content 来显示内容。"
|
48
60
|
logout: "退出"
|
49
|
-
powered_by: "
|
61
|
+
powered_by: "构建程序为 %{active_admin} %{version}"
|
50
62
|
sidebars:
|
51
63
|
filters: "所有条件"
|
52
64
|
search_status: "搜索条件"
|
@@ -62,14 +74,14 @@
|
|
62
74
|
other: "条目"
|
63
75
|
any: "任何"
|
64
76
|
blank_slate:
|
65
|
-
content: "暂时还没有%{resource_name}
|
66
|
-
link: "
|
77
|
+
content: "暂时还没有%{resource_name}。"
|
78
|
+
link: "新增一个"
|
67
79
|
dropdown_actions:
|
68
|
-
button_label: "
|
80
|
+
button_label: "操作"
|
69
81
|
batch_actions:
|
70
82
|
button_label: "批处理"
|
71
|
-
default_confirmation: "
|
72
|
-
delete_confirmation: "你确定要删除这些%{plural_model}
|
83
|
+
default_confirmation: "你确定要这样做?"
|
84
|
+
delete_confirmation: "你确定要删除这些%{plural_model}?"
|
73
85
|
succesfully_destroyed:
|
74
86
|
one: "成功删除 1 %{model}"
|
75
87
|
other: "成功删除 %{count} %{plural_model}"
|
@@ -91,7 +103,7 @@
|
|
91
103
|
author_missing: "匿名"
|
92
104
|
title_content: "(%{count})条评论"
|
93
105
|
errors:
|
94
|
-
empty_text: "
|
106
|
+
empty_text: "评论保存失败,内空不能为空。"
|
95
107
|
devise:
|
96
108
|
username:
|
97
109
|
title: "用户名"
|
@@ -120,8 +132,8 @@
|
|
120
132
|
title: "重新发送送解锁命令"
|
121
133
|
submit: "重新发送送解锁命令"
|
122
134
|
resend_confirmation_instructions:
|
123
|
-
title: "
|
124
|
-
submit: "
|
135
|
+
title: " 重新发送确认说明"
|
136
|
+
submit: " 重新发送确认说明"
|
125
137
|
links:
|
126
138
|
sign_up: "注册"
|
127
139
|
sign_in: "登录"
|
data/config/locales/zh-TW.yml
CHANGED
@@ -24,13 +24,6 @@
|
|
24
24
|
buttons:
|
25
25
|
filter: "篩選"
|
26
26
|
clear: "清除篩選條件"
|
27
|
-
predicates:
|
28
|
-
contains: "包含"
|
29
|
-
equals: "等於"
|
30
|
-
starts_with: "開頭為"
|
31
|
-
ends_with: "結尾為"
|
32
|
-
greater_than: "大於"
|
33
|
-
less_than: "小於"
|
34
27
|
search_status:
|
35
28
|
headline: "搜尋條件:"
|
36
29
|
current_scope: "子集:"
|
@@ -39,6 +32,7 @@
|
|
39
32
|
status_tag:
|
40
33
|
"yes": "是"
|
41
34
|
"no": "否"
|
35
|
+
"unset": "否"
|
42
36
|
main_content: "請實作 %{model}#main_content 以顯示內容。"
|
43
37
|
logout: "登出"
|
44
38
|
powered_by: "Powered by %{active_admin} %{version}"
|
@@ -1,7 +1,7 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/router"
|
3
|
+
require "active_admin/application_settings"
|
4
|
+
require "active_admin/namespace_settings"
|
5
5
|
|
6
6
|
module ActiveAdmin
|
7
7
|
class Application
|
@@ -43,17 +43,11 @@ module ActiveAdmin
|
|
43
43
|
@namespaces = Namespace::Store.new
|
44
44
|
end
|
45
45
|
|
46
|
-
# == Deprecated Settings
|
47
|
-
|
48
|
-
def allow_comments=(*)
|
49
|
-
raise "`config.allow_comments` is no longer provided in ActiveAdmin 1.x. Use `config.comments` instead."
|
50
|
-
end
|
51
|
-
|
52
46
|
include AssetRegistration
|
53
47
|
|
54
48
|
# Event that gets triggered on load of Active Admin
|
55
|
-
BeforeLoadEvent =
|
56
|
-
AfterLoadEvent
|
49
|
+
BeforeLoadEvent = "active_admin.application.before_load".freeze
|
50
|
+
AfterLoadEvent = "active_admin.application.after_load".freeze
|
57
51
|
|
58
52
|
# Runs before the app's AA initializer
|
59
53
|
def setup!
|
@@ -68,7 +62,7 @@ module ActiveAdmin
|
|
68
62
|
|
69
63
|
# Registers a brand new configuration for the given resource.
|
70
64
|
def register(resource, options = {}, &block)
|
71
|
-
ns = options.fetch(:namespace){ default_namespace }
|
65
|
+
ns = options.fetch(:namespace) { default_namespace }
|
72
66
|
namespace(ns).register resource, options, &block
|
73
67
|
end
|
74
68
|
|
@@ -80,9 +74,9 @@ module ActiveAdmin
|
|
80
74
|
def namespace(name)
|
81
75
|
name ||= :root
|
82
76
|
|
83
|
-
namespace = namespaces[name] ||= begin
|
77
|
+
namespace = namespaces[name.to_sym] ||= begin
|
84
78
|
namespace = Namespace.new(self, name)
|
85
|
-
ActiveSupport::Notifications.
|
79
|
+
ActiveSupport::Notifications.instrument ActiveAdmin::Namespace::RegisterEvent, { active_admin_namespace: namespace }
|
86
80
|
namespace
|
87
81
|
end
|
88
82
|
|
@@ -98,7 +92,7 @@ module ActiveAdmin
|
|
98
92
|
# @&block The registration block.
|
99
93
|
#
|
100
94
|
def register_page(name, options = {}, &block)
|
101
|
-
ns = options.fetch(:namespace){ default_namespace }
|
95
|
+
ns = options.fetch(:namespace) { default_namespace }
|
102
96
|
namespace(ns).register_page name, options, &block
|
103
97
|
end
|
104
98
|
|
@@ -118,21 +112,21 @@ module ActiveAdmin
|
|
118
112
|
# To reload everything simply call `ActiveAdmin.unload!`
|
119
113
|
def load!
|
120
114
|
unless loaded?
|
121
|
-
ActiveSupport::Notifications.
|
122
|
-
files.each{ |file| load file }
|
123
|
-
namespace(default_namespace)
|
124
|
-
ActiveSupport::Notifications.
|
115
|
+
ActiveSupport::Notifications.instrument BeforeLoadEvent, { active_admin_application: self } # before_load hook
|
116
|
+
files.each { |file| load file } # load files
|
117
|
+
namespace(default_namespace) # init AA resources
|
118
|
+
ActiveSupport::Notifications.instrument AfterLoadEvent, { active_admin_application: self } # after_load hook
|
125
119
|
@@loaded = true
|
126
120
|
end
|
127
121
|
end
|
128
122
|
|
129
123
|
def load(file)
|
130
|
-
DatabaseHitDuringLoad.capture{ super }
|
124
|
+
DatabaseHitDuringLoad.capture { super }
|
131
125
|
end
|
132
126
|
|
133
127
|
# Returns ALL the files to be loaded
|
134
128
|
def files
|
135
|
-
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
129
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"].sort }
|
136
130
|
end
|
137
131
|
|
138
132
|
# Creates all the necessary routes for the ActiveAdmin configurations
|
@@ -151,13 +145,13 @@ module ActiveAdmin
|
|
151
145
|
|
152
146
|
# Adds before, around and after filters to all controllers.
|
153
147
|
# Example usage:
|
154
|
-
# ActiveAdmin.
|
148
|
+
# ActiveAdmin.before_action :authenticate_admin!
|
155
149
|
#
|
156
150
|
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
157
|
-
select { |m| m.match(/
|
151
|
+
select { |m| m.match(/_action\z/) }.each do |name|
|
158
152
|
define_method name do |*args, &block|
|
159
|
-
|
160
|
-
|
153
|
+
ActiveSupport.on_load(:active_admin_controller) do
|
154
|
+
public_send name, *args, &block
|
161
155
|
end
|
162
156
|
end
|
163
157
|
end
|
@@ -171,9 +165,8 @@ module ActiveAdmin
|
|
171
165
|
private
|
172
166
|
|
173
167
|
def register_default_assets
|
174
|
-
|
175
|
-
|
176
|
-
javascripts.add 'active_admin.js'
|
168
|
+
register_stylesheet "active_admin.css", media: "all"
|
169
|
+
register_javascript "active_admin.js"
|
177
170
|
end
|
178
171
|
|
179
172
|
# Since app/admin is alphabetically before app/models, we have to remove it
|
@@ -183,7 +176,7 @@ module ActiveAdmin
|
|
183
176
|
# files from being loaded twice in production.
|
184
177
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
185
178
|
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
186
|
-
Rails.application.config.eager_load_paths
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
187
180
|
end
|
188
181
|
|
189
182
|
# Hook into the Rails code reloading mechanism so that things are reloaded
|
@@ -200,11 +193,11 @@ module ActiveAdmin
|
|
200
193
|
# Rails is about to unload all the app files (e.g. models), so we
|
201
194
|
# should first unload the classes generated by Active Admin, otherwise
|
202
195
|
# they will contain references to the stale (unloaded) classes.
|
203
|
-
Reloader.to_prepare(prepend: true, &unload_active_admin)
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
204
197
|
else
|
205
198
|
# If the user has configured the app to always reload app files after
|
206
199
|
# each request, so we should unload the generated classes too.
|
207
|
-
Reloader.to_complete(&unload_active_admin)
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
208
201
|
end
|
209
202
|
|
210
203
|
admin_dirs = {}
|
@@ -219,7 +212,7 @@ module ActiveAdmin
|
|
219
212
|
|
220
213
|
app.reloaders << routes_reloader
|
221
214
|
|
222
|
-
Reloader.to_prepare do
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
223
216
|
# Rails might have reloaded the routes for other reasons (e.g.
|
224
217
|
# routes.rb has changed), in which case Active Admin would have been
|
225
218
|
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/settings_node"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
class ApplicationSettings < SettingsNode
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
15
16
|
# Load paths for admin configurations. Add folders to this load path
|
16
17
|
# to load up other resources for administration. External gems can
|
17
18
|
# include their paths in this load path to provide active_admin UIs
|
18
|
-
register :load_paths, [File.expand_path(
|
19
|
+
register :load_paths, [File.expand_path("app/admin", Rails.root)]
|
19
20
|
|
20
21
|
# Set default localize format for Date/Time values
|
21
22
|
register :localize_format, :long
|
@@ -34,6 +35,9 @@ module ActiveAdmin
|
|
34
35
|
:to_s ]
|
35
36
|
|
36
37
|
# To make debugging easier, by default don't stream in development
|
37
|
-
register :disable_streaming_in, [
|
38
|
+
register :disable_streaming_in, ["development"]
|
39
|
+
|
40
|
+
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
41
|
+
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
38
42
|
end
|
39
43
|
end
|
@@ -1,11 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module AssetRegistration
|
3
4
|
|
4
5
|
def register_stylesheet(path, options = {})
|
5
|
-
Deprecation.warn <<-MSG.strip_heredoc
|
6
|
-
The `register_stylesheet` config is deprecated and will be removed
|
7
|
-
in v2. Import your "#{path}" stylesheet in the active_admin.scss.
|
8
|
-
MSG
|
9
6
|
stylesheets[path] = options
|
10
7
|
end
|
11
8
|
|
@@ -17,16 +14,12 @@ module ActiveAdmin
|
|
17
14
|
stylesheets.clear
|
18
15
|
end
|
19
16
|
|
20
|
-
def register_javascript(
|
21
|
-
|
22
|
-
The `register_javascript` config is deprecated and will be removed
|
23
|
-
in v2. Import your "#{name}" javascript in the active_admin.js.
|
24
|
-
MSG
|
25
|
-
javascripts.add name
|
17
|
+
def register_javascript(path, options = {})
|
18
|
+
javascripts[path] = options
|
26
19
|
end
|
27
20
|
|
28
21
|
def javascripts
|
29
|
-
@javascripts ||=
|
22
|
+
@javascripts ||= {}
|
30
23
|
end
|
31
24
|
|
32
25
|
def clear_javascripts!
|
@@ -1,10 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
# Default Authorization permissions for Active Admin
|
4
5
|
module Authorization
|
5
|
-
READ
|
6
|
-
|
7
|
-
|
6
|
+
READ = :read
|
7
|
+
NEW = :new
|
8
|
+
CREATE = :create
|
9
|
+
EDIT = :edit
|
10
|
+
UPDATE = :update
|
8
11
|
DESTROY = :destroy
|
9
12
|
end
|
10
13
|
|
@@ -1,15 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class BaseController < ::InheritedResources::Base
|
3
4
|
module Authorization
|
4
5
|
extend ActiveSupport::Concern
|
5
6
|
|
6
7
|
ACTIONS_DICTIONARY = {
|
7
|
-
index:
|
8
|
-
show:
|
9
|
-
new:
|
10
|
-
create:
|
11
|
-
edit:
|
12
|
-
update:
|
8
|
+
index: ActiveAdmin::Authorization::READ,
|
9
|
+
show: ActiveAdmin::Authorization::READ,
|
10
|
+
new: ActiveAdmin::Authorization::NEW,
|
11
|
+
create: ActiveAdmin::Authorization::CREATE,
|
12
|
+
edit: ActiveAdmin::Authorization::EDIT,
|
13
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
13
14
|
destroy: ActiveAdmin::Authorization::DESTROY
|
14
15
|
}
|
15
16
|
|
@@ -18,6 +19,7 @@ module ActiveAdmin
|
|
18
19
|
|
19
20
|
helper_method :authorized?
|
20
21
|
helper_method :authorize!
|
22
|
+
helper_method :active_admin_authorization
|
21
23
|
end
|
22
24
|
|
23
25
|
protected
|
@@ -51,9 +53,10 @@ module ActiveAdmin
|
|
51
53
|
# an ActiveAdmin::AccessDenied.
|
52
54
|
def authorize!(action, subject = nil)
|
53
55
|
unless authorized? action, subject
|
54
|
-
raise ActiveAdmin::AccessDenied.new(
|
55
|
-
|
56
|
-
|
56
|
+
raise ActiveAdmin::AccessDenied.new(
|
57
|
+
current_active_admin_user,
|
58
|
+
action,
|
59
|
+
subject)
|
57
60
|
end
|
58
61
|
end
|
59
62
|
|
@@ -79,7 +82,7 @@ module ActiveAdmin
|
|
79
82
|
def active_admin_authorization_adapter
|
80
83
|
adapter = active_admin_namespace.authorization_adapter
|
81
84
|
if adapter.is_a? String
|
82
|
-
|
85
|
+
adapter.constantize
|
83
86
|
else
|
84
87
|
adapter
|
85
88
|
end
|
@@ -111,16 +114,14 @@ module ActiveAdmin
|
|
111
114
|
redirect_backwards_or_to_root
|
112
115
|
end
|
113
116
|
|
114
|
-
body
|
115
|
-
|
116
|
-
format.
|
117
|
-
format.json { render json: { error: error }, status: :unauthorized }
|
118
|
-
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
117
|
+
format.csv { render body: error, status: :unauthorized }
|
118
|
+
format.json { render json: { error: error }, status: :unauthorized }
|
119
|
+
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
119
120
|
end
|
120
121
|
end
|
121
122
|
|
122
123
|
def redirect_backwards_or_to_root
|
123
|
-
|
124
|
+
redirect_back fallback_location: active_admin_root
|
124
125
|
end
|
125
126
|
|
126
127
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/base_controller/authorization"
|
3
|
+
require "active_admin/base_controller/menu"
|
3
4
|
|
4
5
|
module ActiveAdmin
|
5
6
|
# BaseController for ActiveAdmin.
|
6
7
|
# It implements ActiveAdmin controllers core features.
|
7
8
|
class BaseController < ::InheritedResources::Base
|
8
9
|
helper ::ActiveAdmin::ViewHelpers
|
9
|
-
helper_method :env
|
10
10
|
|
11
11
|
layout :determine_active_admin_layout
|
12
12
|
|
@@ -22,6 +22,11 @@ module ActiveAdmin
|
|
22
22
|
attr_accessor :active_admin_config
|
23
23
|
end
|
24
24
|
|
25
|
+
include Authorization
|
26
|
+
include Menu
|
27
|
+
|
28
|
+
private
|
29
|
+
|
25
30
|
# By default Rails will render un-implemented actions when the view exists. Because Active
|
26
31
|
# Admin allows you to not render any of the actions by using the #actions method, we need
|
27
32
|
# to check if they are implemented.
|
@@ -29,11 +34,6 @@ module ActiveAdmin
|
|
29
34
|
raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
|
30
35
|
end
|
31
36
|
|
32
|
-
include Authorization
|
33
|
-
include Menu
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
37
|
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
38
38
|
def authenticate_active_admin_user
|
39
39
|
send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
|
@@ -69,13 +69,14 @@ module ActiveAdmin
|
|
69
69
|
# 2. If we're rendering a custom action, we'll use the active_admin layout so
|
70
70
|
# that users can render any template inside Active Admin.
|
71
71
|
def determine_active_admin_layout
|
72
|
-
ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false :
|
72
|
+
ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : "active_admin"
|
73
73
|
end
|
74
74
|
|
75
75
|
def active_admin_root
|
76
|
-
controller, action = active_admin_namespace.root_to.split
|
77
|
-
{controller: controller, action: action}
|
76
|
+
controller, action = active_admin_namespace.root_to.split "#"
|
77
|
+
{ controller: controller, action: action }
|
78
78
|
end
|
79
79
|
|
80
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
80
81
|
end
|
81
82
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module BatchActions
|
3
4
|
module Controller
|
@@ -5,10 +6,10 @@ module ActiveAdmin
|
|
5
6
|
# Controller action that is called when submitting the batch action form
|
6
7
|
def batch_action
|
7
8
|
if action_present?
|
8
|
-
selection
|
9
|
-
inputs
|
9
|
+
selection = params[:collection_selection] || []
|
10
|
+
inputs = JSON.parse params[:batch_action_inputs] || "{}"
|
10
11
|
valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
|
11
|
-
inputs
|
12
|
+
inputs = inputs.with_indifferent_access.slice *valid_keys
|
12
13
|
instance_exec selection, inputs, ¤t_batch_action.block
|
13
14
|
else
|
14
15
|
raise "Couldn't find batch action \"#{params[:batch_action]}\""
|
@@ -22,7 +23,7 @@ module ActiveAdmin
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def current_batch_action
|
25
|
-
active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
|
26
|
+
active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
|
26
27
|
end
|
27
28
|
|
28
29
|
COLLECTION_APPLIES = [
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
module BatchActions
|
@@ -57,21 +58,22 @@ module ActiveAdmin
|
|
57
58
|
def add_default_batch_action
|
58
59
|
destroy_options = {
|
59
60
|
priority: 100,
|
60
|
-
confirm: proc{ I18n.t(
|
61
|
-
if: proc{ controller.action_methods.include?(
|
61
|
+
confirm: proc { I18n.t("active_admin.batch_actions.delete_confirmation", plural_model: active_admin_config.plural_resource_label.downcase) },
|
62
|
+
if: proc { controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
62
63
|
}
|
63
64
|
|
64
|
-
add_batch_action :destroy, proc { I18n.t(
|
65
|
+
add_batch_action :destroy, proc { I18n.t("active_admin.delete") }, destroy_options do |selected_ids|
|
65
66
|
batch_action_collection.find(selected_ids).each do |record|
|
66
67
|
authorize! ActiveAdmin::Auth::DESTROY, record
|
67
68
|
destroy_resource(record)
|
68
69
|
end
|
69
70
|
|
70
71
|
redirect_to active_admin_config.route_collection_path(params),
|
71
|
-
notice: I18n.t(
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
notice: I18n.t(
|
73
|
+
"active_admin.batch_actions.succesfully_destroyed",
|
74
|
+
count: selected_ids.count,
|
75
|
+
model: active_admin_config.resource_label.downcase,
|
76
|
+
plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
@@ -84,7 +86,7 @@ module ActiveAdmin
|
|
84
86
|
|
85
87
|
attr_reader :block, :title, :sym
|
86
88
|
|
87
|
-
DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t
|
89
|
+
DEFAULT_CONFIRM_MESSAGE = proc { I18n.t "active_admin.batch_actions.default_confirmation" }
|
88
90
|
|
89
91
|
# Create a Batch Action
|
90
92
|
#
|
@@ -112,7 +114,11 @@ module ActiveAdmin
|
|
112
114
|
# => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
|
113
115
|
#
|
114
116
|
def initialize(sym, title, options = {}, &block)
|
115
|
-
@sym
|
117
|
+
@sym = sym
|
118
|
+
@title = title
|
119
|
+
@options = options
|
120
|
+
@block = block
|
121
|
+
@confirm = options[:confirm]
|
116
122
|
@block ||= proc {}
|
117
123
|
end
|
118
124
|
|
@@ -133,7 +139,7 @@ module ActiveAdmin
|
|
133
139
|
# Returns the display if block. If the block was not explicitly defined
|
134
140
|
# a default block always returning true will be returned.
|
135
141
|
def display_if_block
|
136
|
-
@options[:if] || proc{ true }
|
142
|
+
@options[:if] || proc { true }
|
137
143
|
end
|
138
144
|
|
139
145
|
# Used for sorting
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/component"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module BatchActions
|
@@ -16,7 +17,7 @@ module ActiveAdmin
|
|
16
17
|
# batch_action => name of the specific action called
|
17
18
|
# batch_action_inputs => a JSON string of any requested confirmation values
|
18
19
|
text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
|
19
|
-
input name: :batch_action,
|
20
|
+
input name: :batch_action, id: :batch_action, type: :hidden
|
20
21
|
input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
|
21
22
|
|
22
23
|
super(options)
|
@@ -30,7 +31,7 @@ module ActiveAdmin
|
|
30
31
|
private
|
31
32
|
|
32
33
|
def closing_form_tag
|
33
|
-
|
34
|
+
"</form>".html_safe
|
34
35
|
end
|
35
36
|
|
36
37
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/component"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module BatchActions
|
@@ -31,17 +32,17 @@ module ActiveAdmin
|
|
31
32
|
confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
|
32
33
|
|
33
34
|
options = {
|
34
|
-
:
|
35
|
-
"data-action"
|
36
|
-
"data-confirm"
|
37
|
-
"data-inputs"
|
35
|
+
class: "batch_action",
|
36
|
+
"data-action": batch_action.sym,
|
37
|
+
"data-confirm": confirmation_text,
|
38
|
+
"data-inputs": render_in_context(self, batch_action.inputs).to_json
|
38
39
|
}
|
39
40
|
|
40
41
|
default_title = render_or_call_method_or_proc_on(self, batch_action.title)
|
41
42
|
title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
|
42
43
|
label = I18n.t("active_admin.batch_actions.action_label", title: title)
|
43
44
|
|
44
|
-
item label, "#", options
|
45
|
+
item label, "#", **options
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|