rails_admin 2.2.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +12 -11
- data/README.md +42 -43
- data/Rakefile +15 -2
- data/app/assets/javascripts/rails_admin/application.js.erb +29 -0
- data/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
- data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
- data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
- data/app/controllers/rails_admin/application_controller.rb +6 -3
- data/app/controllers/rails_admin/main_controller.rb +55 -50
- data/app/helpers/rails_admin/application_helper.rb +129 -63
- data/app/helpers/rails_admin/form_builder.rb +17 -6
- data/app/helpers/rails_admin/main_helper.rb +18 -42
- data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
- data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
- data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
- data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
- data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
- data/app/views/layouts/rails_admin/_head.html.erb +29 -0
- data/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
- data/app/views/layouts/rails_admin/application.html.erb +27 -0
- data/app/views/layouts/rails_admin/content.html.erb +22 -0
- data/app/views/layouts/rails_admin/modal.js.erb +7 -0
- data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
- data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
- data/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
- data/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
- data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
- data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
- data/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
- data/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
- data/app/views/rails_admin/main/_form_field.html.erb +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +49 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.erb +33 -0
- data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
- data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
- data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +32 -0
- data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
- data/app/views/rails_admin/main/_form_text.html.erb +1 -0
- data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
- data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
- data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
- data/app/views/rails_admin/main/dashboard.html.erb +64 -0
- data/app/views/rails_admin/main/delete.html.erb +21 -0
- data/app/views/rails_admin/main/edit.html.erb +3 -0
- data/app/views/rails_admin/main/export.html.erb +149 -0
- data/app/views/rails_admin/main/history.html.erb +80 -0
- data/app/views/rails_admin/main/index.html.erb +184 -0
- data/app/views/rails_admin/main/new.html.erb +3 -0
- data/app/views/rails_admin/main/show.html.erb +30 -0
- data/config/initializers/active_record_extensions.rb +25 -0
- data/config/initializers/mongoid_extensions.rb +3 -1
- data/config/locales/rails_admin.en.yml +8 -3
- data/config/routes.rb +2 -0
- data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +117 -5
- data/lib/generators/rails_admin/templates/initializer.erb +2 -1
- data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
- data/lib/generators/rails_admin/utils.rb +2 -0
- data/lib/rails_admin/abstract_model.rb +35 -15
- data/lib/rails_admin/adapters/active_record/association.rb +31 -2
- data/lib/rails_admin/adapters/active_record/object_extension.rb +31 -0
- data/lib/rails_admin/adapters/active_record/property.rb +4 -2
- data/lib/rails_admin/adapters/active_record.rb +60 -28
- data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
- data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
- data/lib/rails_admin/adapters/mongoid/association.rb +52 -13
- data/lib/rails_admin/adapters/mongoid/bson.rb +6 -5
- data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/object_extension.rb +34 -0
- data/lib/rails_admin/adapters/mongoid/property.rb +7 -5
- data/lib/rails_admin/adapters/mongoid.rb +33 -23
- data/lib/rails_admin/config/actions/base.rb +11 -4
- data/lib/rails_admin/config/actions/bulk_delete.rb +4 -2
- data/lib/rails_admin/config/actions/dashboard.rb +16 -9
- data/lib/rails_admin/config/actions/delete.rb +11 -9
- data/lib/rails_admin/config/actions/edit.rb +13 -7
- data/lib/rails_admin/config/actions/export.rb +6 -3
- data/lib/rails_admin/config/actions/history_index.rb +4 -2
- data/lib/rails_admin/config/actions/history_show.rb +4 -2
- data/lib/rails_admin/config/actions/index.rb +9 -8
- data/lib/rails_admin/config/actions/new.rb +18 -10
- data/lib/rails_admin/config/actions/show.rb +3 -1
- data/lib/rails_admin/config/actions/show_in_app.rb +9 -3
- data/lib/rails_admin/config/actions.rb +6 -4
- data/lib/rails_admin/config/configurable.rb +4 -2
- data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
- data/lib/rails_admin/config/fields/association.rb +21 -11
- data/lib/rails_admin/config/fields/base.rb +86 -36
- data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
- data/lib/rails_admin/config/fields/factories/active_storage.rb +5 -1
- data/lib/rails_admin/config/fields/factories/association.rb +12 -13
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +6 -2
- data/lib/rails_admin/config/fields/factories/devise.rb +6 -2
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +6 -2
- data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +6 -2
- data/lib/rails_admin/config/fields/factories/password.rb +2 -0
- data/lib/rails_admin/config/fields/factories/shrine.rb +3 -1
- data/lib/rails_admin/config/fields/group.rb +3 -2
- data/lib/rails_admin/config/fields/types/action_text.rb +7 -1
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +4 -0
- data/lib/rails_admin/config/fields/types/active_storage.rb +23 -7
- data/lib/rails_admin/config/fields/types/all.rb +4 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +9 -15
- data/lib/rails_admin/config/fields/types/boolean.rb +38 -8
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +3 -0
- data/lib/rails_admin/config/fields/types/citext.rb +15 -0
- data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
- data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
- data/lib/rails_admin/config/fields/types/color.rb +8 -2
- data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/date.rb +12 -6
- data/lib/rails_admin/config/fields/types/datetime.rb +36 -21
- data/lib/rails_admin/config/fields/types/decimal.rb +11 -2
- data/lib/rails_admin/config/fields/types/dragonfly.rb +5 -1
- data/lib/rails_admin/config/fields/types/enum.rb +16 -3
- data/lib/rails_admin/config/fields/types/file_upload.rb +6 -3
- data/lib/rails_admin/config/fields/types/float.rb +11 -2
- data/lib/rails_admin/config/fields/types/froala.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +7 -5
- data/lib/rails_admin/config/fields/types/has_one_association.rb +12 -14
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
- data/lib/rails_admin/config/fields/types/inet.rb +2 -0
- data/lib/rails_admin/config/fields/types/integer.rb +4 -6
- data/lib/rails_admin/config/fields/types/json.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +30 -6
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +6 -3
- data/lib/rails_admin/config/fields/types/numeric.rb +24 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/types/password.rb +2 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +5 -2
- data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
- data/lib/rails_admin/config/fields/types/string.rb +3 -1
- data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -0
- data/lib/rails_admin/config/fields/types/time.rb +16 -4
- data/lib/rails_admin/config/fields/types/timestamp.rb +2 -4
- data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
- data/lib/rails_admin/config/fields/types.rb +3 -1
- data/lib/rails_admin/config/fields.rb +6 -2
- data/lib/rails_admin/config/groupable.rb +2 -0
- data/lib/rails_admin/config/has_description.rb +2 -0
- data/lib/rails_admin/config/has_fields.rb +12 -7
- data/lib/rails_admin/config/has_groups.rb +2 -0
- data/lib/rails_admin/config/hideable.rb +3 -1
- data/lib/rails_admin/config/inspectable.rb +3 -3
- data/lib/rails_admin/config/lazy_model.rb +13 -7
- data/lib/rails_admin/config/model.rb +22 -10
- data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
- data/lib/rails_admin/config/proxyable.rb +2 -0
- data/lib/rails_admin/config/sections/base.rb +4 -3
- data/lib/rails_admin/config/sections/create.rb +2 -0
- data/lib/rails_admin/config/sections/edit.rb +2 -0
- data/lib/rails_admin/config/sections/export.rb +2 -0
- data/lib/rails_admin/config/sections/list.rb +14 -19
- data/lib/rails_admin/config/sections/modal.rb +2 -0
- data/lib/rails_admin/config/sections/nested.rb +2 -0
- data/lib/rails_admin/config/sections/show.rb +2 -0
- data/lib/rails_admin/config/sections/update.rb +2 -0
- data/lib/rails_admin/config/sections.rb +3 -1
- data/lib/rails_admin/config.rb +81 -44
- data/lib/rails_admin/engine.rb +43 -32
- data/lib/rails_admin/extension.rb +8 -14
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +25 -6
- data/lib/rails_admin/extensions/cancancan.rb +2 -0
- data/lib/rails_admin/extensions/controller_extension.rb +2 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +61 -34
- data/lib/rails_admin/extensions/paper_trail.rb +2 -0
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +8 -7
- data/lib/rails_admin/extensions/pundit.rb +2 -0
- data/lib/rails_admin/support/csv_converter.rb +14 -15
- data/lib/rails_admin/support/datetime.rb +50 -85
- data/lib/rails_admin/support/es_module_processor.rb +23 -0
- data/lib/rails_admin/support/hash_helper.rb +8 -5
- data/lib/rails_admin/version.rb +42 -3
- data/lib/rails_admin.rb +7 -5
- data/lib/tasks/rails_admin.rake +5 -3
- data/package.json +30 -0
- data/src/rails_admin/base.js +29 -0
- data/src/rails_admin/filter-box.js +360 -0
- data/src/rails_admin/filtering-multiselect.js +389 -0
- data/src/rails_admin/filtering-select.js +308 -0
- data/src/rails_admin/i18n.js +18 -0
- data/src/rails_admin/jquery.js +3 -0
- data/src/rails_admin/nested-form-hooks.js +110 -0
- data/src/rails_admin/remote-form.js +193 -0
- data/src/rails_admin/sidescroll.js +20 -0
- data/src/rails_admin/styles/base/theming.scss +342 -0
- data/src/rails_admin/styles/base/variables.scss +3 -0
- data/src/rails_admin/styles/base.scss +27 -0
- data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
- data/src/rails_admin/styles/filtering-select.scss +70 -0
- data/src/rails_admin/styles/widgets.scss +26 -0
- data/src/rails_admin/ui.js +176 -0
- data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
- data/src/rails_admin/widgets.js +507 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
- data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
- data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
- data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
- data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
- data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
- data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
- metadata +180 -328
- data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/rails_admin/bullet_black.png +0 -0
- data/app/assets/images/rails_admin/bullet_white.png +0 -0
- data/app/assets/images/rails_admin/calendar.png +0 -0
- data/app/assets/images/rails_admin/clock.png +0 -0
- data/app/assets/images/rails_admin/logo.png +0 -0
- data/app/assets/images/rails_admin/magnifier.png +0 -0
- data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
- data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
- data/app/assets/javascripts/rails_admin/jquery.migrate.js +0 -3
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -246
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
- data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
- data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
- data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
- data/app/assets/javascripts/rails_admin/rails_admin.js +0 -21
- data/app/assets/javascripts/rails_admin/ui.js +0 -135
- data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
- data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
- data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
- data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
- data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
- data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
- data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
- data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
- data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
- data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
- data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
- data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
- data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
- data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
- data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
- data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
- data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
- data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
- data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
- data/app/views/layouts/rails_admin/_head.html.haml +0 -7
- data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
- data/app/views/layouts/rails_admin/application.html.haml +0 -16
- data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
- data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
- data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
- data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
- data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
- data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
- data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
- data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
- data/app/views/rails_admin/main/_form_field.html.haml +0 -1
- data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -49
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
- data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
- data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
- data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
- data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
- data/app/views/rails_admin/main/_form_text.html.haml +0 -1
- data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
- data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
- data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
- data/app/views/rails_admin/main/dashboard.html.haml +0 -34
- data/app/views/rails_admin/main/delete.html.haml +0 -18
- data/app/views/rails_admin/main/edit.html.haml +0 -2
- data/app/views/rails_admin/main/export.html.haml +0 -92
- data/app/views/rails_admin/main/history.html.haml +0 -51
- data/app/views/rails_admin/main/index.html.haml +0 -126
- data/app/views/rails_admin/main/new.html.haml +0 -2
- data/app/views/rails_admin/main/show.html.haml +0 -15
- data/config/initializers/haml.rb +0 -5
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -38
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
- data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
- data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
- data/lib/rails_admin/bootstrap-sass.rb +0 -49
- data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
- data/lib/rails_admin/extensions/history/history.rb +0 -44
- data/lib/rails_admin/extensions/history.rb +0 -3
- data/lib/rails_admin/support/i18n.rb +0 -43
- data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
- data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -164
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
- data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2611
- data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
- data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
- data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
- data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
- data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
- /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
- /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
data/lib/rails_admin/config.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/lazy_model'
|
|
2
4
|
require 'rails_admin/config/sections/list'
|
|
3
5
|
require 'active_support/core_ext/module/attribute_accessors'
|
|
@@ -27,15 +29,15 @@ module RailsAdmin
|
|
|
27
29
|
# Configuration option to specify which models you want to exclude.
|
|
28
30
|
attr_accessor :excluded_models
|
|
29
31
|
|
|
30
|
-
# Configuration option to specify a
|
|
31
|
-
# The excluded_models list applies against the
|
|
32
|
+
# Configuration option to specify a allowlist of models you want to RailsAdmin to work with.
|
|
33
|
+
# The excluded_models list applies against the allowlist as well and further reduces the models
|
|
32
34
|
# RailsAdmin will use.
|
|
33
35
|
# If included_models is left empty ([]), then RailsAdmin will automatically use all the models
|
|
34
36
|
# in your application (less any excluded_models you may have specified).
|
|
35
37
|
attr_accessor :included_models
|
|
36
38
|
|
|
37
39
|
# Fields to be hidden in show, create and update views
|
|
38
|
-
|
|
40
|
+
attr_reader :default_hidden_fields
|
|
39
41
|
|
|
40
42
|
# Default items per page value used if a model level option has not
|
|
41
43
|
# been configured
|
|
@@ -56,14 +58,8 @@ module RailsAdmin
|
|
|
56
58
|
# Tell browsers whether to use the native HTML5 validations (novalidate form option).
|
|
57
59
|
attr_accessor :browser_validations
|
|
58
60
|
|
|
59
|
-
# Set the max width of columns in list view before a new set is created
|
|
60
|
-
attr_accessor :total_columns_width
|
|
61
|
-
|
|
62
|
-
# Enable horizontal-scrolling table in list view, ignore total_columns_width
|
|
63
|
-
attr_accessor :sidescroll
|
|
64
|
-
|
|
65
61
|
# set parent controller
|
|
66
|
-
|
|
62
|
+
attr_reader :parent_controller
|
|
67
63
|
|
|
68
64
|
# set settings for `protect_from_forgery` method
|
|
69
65
|
# By default, it raises exception upon invalid CSRF tokens
|
|
@@ -75,6 +71,9 @@ module RailsAdmin
|
|
|
75
71
|
# @see RailsAdmin.config
|
|
76
72
|
attr_reader :registry
|
|
77
73
|
|
|
74
|
+
# Bootstrap CSS classes used for Navigation bar
|
|
75
|
+
attr_accessor :navbar_css_classes
|
|
76
|
+
|
|
78
77
|
# show Gravatar in Navigation bar
|
|
79
78
|
attr_accessor :show_gravatar
|
|
80
79
|
|
|
@@ -82,6 +81,9 @@ module RailsAdmin
|
|
|
82
81
|
attr_accessor :navigation_static_links
|
|
83
82
|
attr_accessor :navigation_static_label
|
|
84
83
|
|
|
84
|
+
# Set where RailsAdmin fetches JS/CSS from, defaults to :sprockets
|
|
85
|
+
attr_writer :asset_source
|
|
86
|
+
|
|
85
87
|
# Setup authentication to be run as a before filter
|
|
86
88
|
# This is run inside the controller instance so you can setup any authentication you need to
|
|
87
89
|
#
|
|
@@ -110,14 +112,14 @@ module RailsAdmin
|
|
|
110
112
|
@authenticate || DEFAULT_AUTHENTICATION
|
|
111
113
|
end
|
|
112
114
|
|
|
113
|
-
# Setup auditing/
|
|
115
|
+
# Setup auditing/versioning provider that observe objects lifecycle
|
|
114
116
|
def audit_with(*args, &block)
|
|
115
117
|
extension = args.shift
|
|
116
118
|
if extension
|
|
117
119
|
klass = RailsAdmin::AUDITING_ADAPTERS[extension]
|
|
118
120
|
klass.setup if klass.respond_to? :setup
|
|
119
121
|
@audit = proc do
|
|
120
|
-
@auditing_adapter = klass.new(*([self] + args).compact)
|
|
122
|
+
@auditing_adapter = klass.new(*([self] + args).compact, &block)
|
|
121
123
|
end
|
|
122
124
|
elsif block
|
|
123
125
|
@audit = block
|
|
@@ -145,7 +147,7 @@ module RailsAdmin
|
|
|
145
147
|
# config.authorize_with :cancancan
|
|
146
148
|
# end
|
|
147
149
|
#
|
|
148
|
-
# See the wiki[https://github.com/
|
|
150
|
+
# See the wiki[https://github.com/railsadminteam/rails_admin/wiki] for more on authorization.
|
|
149
151
|
#
|
|
150
152
|
# @see RailsAdmin::Config::DEFAULT_AUTHORIZE
|
|
151
153
|
def authorize_with(*args, &block)
|
|
@@ -154,7 +156,7 @@ module RailsAdmin
|
|
|
154
156
|
klass = RailsAdmin::AUTHORIZATION_ADAPTERS[extension]
|
|
155
157
|
klass.setup if klass.respond_to? :setup
|
|
156
158
|
@authorize = proc do
|
|
157
|
-
@authorization_adapter = klass.new(*([self] + args).compact)
|
|
159
|
+
@authorization_adapter = klass.new(*([self] + args).compact, &block)
|
|
158
160
|
end
|
|
159
161
|
elsif block
|
|
160
162
|
@authorize = block
|
|
@@ -198,10 +200,10 @@ module RailsAdmin
|
|
|
198
200
|
end
|
|
199
201
|
|
|
200
202
|
def default_search_operator=(operator)
|
|
201
|
-
if %w
|
|
203
|
+
if %w[default like not_like starts_with ends_with is =].include? operator
|
|
202
204
|
@default_search_operator = operator
|
|
203
205
|
else
|
|
204
|
-
raise
|
|
206
|
+
raise ArgumentError.new("Search operator '#{operator}' not supported")
|
|
205
207
|
end
|
|
206
208
|
end
|
|
207
209
|
|
|
@@ -223,23 +225,37 @@ module RailsAdmin
|
|
|
223
225
|
#
|
|
224
226
|
# @see RailsAdmin::Config.registry
|
|
225
227
|
def model(entity, &block)
|
|
226
|
-
key =
|
|
227
|
-
|
|
228
|
+
key =
|
|
229
|
+
case entity
|
|
230
|
+
when RailsAdmin::AbstractModel
|
|
228
231
|
entity.model.try(:name).try :to_sym
|
|
229
|
-
|
|
232
|
+
when Class, ConstLoadSuppressor::ConstProxy
|
|
230
233
|
entity.name.to_sym
|
|
231
|
-
|
|
234
|
+
when String, Symbol
|
|
232
235
|
entity.to_sym
|
|
233
236
|
else
|
|
234
237
|
entity.class.name.to_sym
|
|
235
238
|
end
|
|
236
|
-
end
|
|
237
239
|
|
|
238
|
-
@registry[key] ||= RailsAdmin::Config::LazyModel.new(
|
|
240
|
+
@registry[key] ||= RailsAdmin::Config::LazyModel.new(key.to_s)
|
|
239
241
|
@registry[key].add_deferred_block(&block) if block
|
|
240
242
|
@registry[key]
|
|
241
243
|
end
|
|
242
244
|
|
|
245
|
+
def asset_source
|
|
246
|
+
@asset_source ||=
|
|
247
|
+
begin
|
|
248
|
+
detected = defined?(Sprockets) ? :sprockets : :invalid
|
|
249
|
+
unless ARGV.join(' ').include? 'rails_admin:install'
|
|
250
|
+
warn <<~MSG
|
|
251
|
+
[Warning] After upgrading RailsAdmin to 3.x you haven't set asset_source yet, using :#{detected} as the default.
|
|
252
|
+
To suppress this message, run 'rails rails_admin:install' to setup the asset delivery method suitable to you.
|
|
253
|
+
MSG
|
|
254
|
+
end
|
|
255
|
+
detected
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
|
|
243
259
|
def default_hidden_fields=(fields)
|
|
244
260
|
if fields.is_a?(Array)
|
|
245
261
|
@default_hidden_fields = {}
|
|
@@ -250,9 +266,33 @@ module RailsAdmin
|
|
|
250
266
|
end
|
|
251
267
|
end
|
|
252
268
|
|
|
253
|
-
|
|
269
|
+
def parent_controller=(name)
|
|
270
|
+
@parent_controller = name
|
|
271
|
+
|
|
272
|
+
if defined?(RailsAdmin::ApplicationController) || defined?(RailsAdmin::MainController)
|
|
273
|
+
RailsAdmin::Config::ConstLoadSuppressor.allowing do
|
|
274
|
+
RailsAdmin.send(:remove_const, :ApplicationController)
|
|
275
|
+
RailsAdmin.send(:remove_const, :MainController)
|
|
276
|
+
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
|
|
277
|
+
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/main_controller.rb')
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def total_columns_width=(_)
|
|
283
|
+
ActiveSupport::Deprecation.warn('The total_columns_width configuration option is deprecated and has no effect.')
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def sidescroll=(_)
|
|
287
|
+
ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Setup actions to be used.
|
|
254
291
|
def actions(&block)
|
|
255
|
-
|
|
292
|
+
return unless block
|
|
293
|
+
|
|
294
|
+
RailsAdmin::Config::Actions.reset
|
|
295
|
+
RailsAdmin::Config::Actions.instance_eval(&block)
|
|
256
296
|
end
|
|
257
297
|
|
|
258
298
|
# Returns all model configurations
|
|
@@ -274,24 +314,25 @@ module RailsAdmin
|
|
|
274
314
|
@current_user = nil
|
|
275
315
|
@default_hidden_fields = {}
|
|
276
316
|
@default_hidden_fields[:base] = [:_type]
|
|
277
|
-
@default_hidden_fields[:edit] = [
|
|
278
|
-
@default_hidden_fields[:show] = [
|
|
317
|
+
@default_hidden_fields[:edit] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
|
|
318
|
+
@default_hidden_fields[:show] = %i[id _id created_at created_on deleted_at updated_at updated_on deleted_on]
|
|
279
319
|
@default_items_per_page = 20
|
|
280
320
|
@default_associated_collection_limit = 100
|
|
281
321
|
@default_search_operator = 'default'
|
|
282
322
|
@excluded_models = []
|
|
283
323
|
@included_models = []
|
|
284
|
-
@
|
|
285
|
-
@sidescroll = nil
|
|
286
|
-
@label_methods = [:name, :title]
|
|
324
|
+
@label_methods = %i[name title]
|
|
287
325
|
@main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
|
|
288
326
|
@registry = {}
|
|
327
|
+
@navbar_css_classes = %w[navbar-dark bg-primary border-bottom]
|
|
289
328
|
@show_gravatar = true
|
|
290
329
|
@navigation_static_links = {}
|
|
291
330
|
@navigation_static_label = nil
|
|
331
|
+
@asset_source = nil
|
|
292
332
|
@parent_controller = '::ActionController::Base'
|
|
293
333
|
@forgery_protection_settings = {with: :exception}
|
|
294
334
|
RailsAdmin::Config::Actions.reset
|
|
335
|
+
RailsAdmin::AbstractModel.reset
|
|
295
336
|
end
|
|
296
337
|
|
|
297
338
|
# Reset a provided model's configuration.
|
|
@@ -302,22 +343,19 @@ module RailsAdmin
|
|
|
302
343
|
@registry.delete(key)
|
|
303
344
|
end
|
|
304
345
|
|
|
305
|
-
#
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
def reset_all_models
|
|
310
|
-
@registry = {}
|
|
346
|
+
# Perform reset, then load RailsAdmin initializer again
|
|
347
|
+
def reload!
|
|
348
|
+
reset
|
|
349
|
+
load RailsAdmin::Engine.config.initializer_path
|
|
311
350
|
end
|
|
312
351
|
|
|
313
352
|
# Get all models that are configured as visible sorted by their weight and label.
|
|
314
353
|
#
|
|
315
354
|
# @see RailsAdmin::Config::Hideable
|
|
316
|
-
|
|
317
355
|
def visible_models(bindings)
|
|
318
356
|
visible_models_with_bindings(bindings).sort do |a, b|
|
|
319
357
|
if (weight_order = a.weight <=> b.weight) == 0
|
|
320
|
-
a.label.
|
|
358
|
+
a.label.casecmp(b.label)
|
|
321
359
|
else
|
|
322
360
|
weight_order
|
|
323
361
|
end
|
|
@@ -326,23 +364,22 @@ module RailsAdmin
|
|
|
326
364
|
|
|
327
365
|
private
|
|
328
366
|
|
|
329
|
-
def lchomp(base, arg)
|
|
330
|
-
base.to_s.reverse.chomp(arg.to_s.reverse).reverse
|
|
331
|
-
end
|
|
332
|
-
|
|
333
367
|
def viable_models
|
|
334
368
|
included_models.collect(&:to_s).presence || begin
|
|
335
369
|
@@system_models ||= # memoization for tests
|
|
336
370
|
([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
|
|
337
|
-
(app.paths['app/models'].to_a + app.
|
|
371
|
+
(app.paths['app/models'].to_a + app.config.eager_load_paths).collect do |load_path|
|
|
338
372
|
Dir.glob(app.root.join(load_path)).collect do |load_dir|
|
|
339
|
-
|
|
373
|
+
path_prefix = "#{app.root.join(load_dir)}/"
|
|
374
|
+
Dir.glob("#{load_dir}/**/*.rb").collect do |filename|
|
|
340
375
|
# app/models/module/class.rb => module/class.rb => module/class => Module::Class
|
|
341
|
-
|
|
376
|
+
filename.delete_prefix(path_prefix).chomp('.rb').camelize
|
|
342
377
|
end
|
|
343
378
|
end
|
|
344
379
|
end
|
|
345
380
|
end.flatten.reject { |m| m.starts_with?('Concerns::') } # rubocop:disable Style/MultilineBlockChain
|
|
381
|
+
|
|
382
|
+
@@system_models + @registry.keys.collect(&:to_s)
|
|
346
383
|
end
|
|
347
384
|
end
|
|
348
385
|
|
data/lib/rails_admin/engine.rb
CHANGED
|
@@ -1,68 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
3
|
require 'kaminari'
|
|
4
4
|
require 'nested_form'
|
|
5
|
-
require 'rack-pjax'
|
|
6
5
|
require 'rails'
|
|
7
6
|
require 'rails_admin'
|
|
8
|
-
require '
|
|
7
|
+
require 'rails_admin/version'
|
|
8
|
+
require 'turbo-rails'
|
|
9
9
|
|
|
10
10
|
module RailsAdmin
|
|
11
11
|
class Engine < Rails::Engine
|
|
12
12
|
isolate_namespace RailsAdmin
|
|
13
13
|
|
|
14
|
+
attr_accessor :importmap
|
|
15
|
+
|
|
14
16
|
config.action_dispatch.rescue_responses['RailsAdmin::ActionNotAllowed'] = :forbidden
|
|
15
17
|
|
|
16
|
-
initializer 'RailsAdmin
|
|
17
|
-
|
|
18
|
-
rails_admin/rails_admin.js
|
|
19
|
-
rails_admin/rails_admin.css
|
|
20
|
-
rails_admin/jquery.colorpicker.js
|
|
21
|
-
rails_admin/jquery.colorpicker.css
|
|
22
|
-
)
|
|
23
|
-
end
|
|
18
|
+
initializer 'RailsAdmin reload config in development' do |app|
|
|
19
|
+
config.initializer_path = app.root.join('config/initializers/rails_admin.rb')
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
unless Rails.application.config.cache_classes
|
|
22
|
+
ActiveSupport::Reloader.before_class_unload do
|
|
23
|
+
RailsAdmin::Config.reload!
|
|
24
|
+
end
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if defined?(ActiveSupport::Reloader)
|
|
32
|
-
ActiveSupport::Reloader.before_class_unload do
|
|
33
|
-
RailsAdmin::Config.reset_all_models
|
|
34
|
-
end
|
|
35
|
-
# else
|
|
36
|
-
# For Rails 4 not implemented
|
|
26
|
+
reloader = app.config.file_watcher.new([config.initializer_path], []) do
|
|
27
|
+
# Do nothing, ActiveSupport::Reloader will trigger class_unload! anyway
|
|
37
28
|
end
|
|
29
|
+
|
|
30
|
+
app.reloaders << reloader
|
|
31
|
+
app.reloader.to_run do
|
|
32
|
+
reloader.execute_if_updated { require_unload_lock! }
|
|
33
|
+
end
|
|
34
|
+
reloader.execute
|
|
38
35
|
end
|
|
39
36
|
end
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
initializer 'RailsAdmin precompile hook', group: :all do |app|
|
|
39
|
+
case RailsAdmin.config.asset_source
|
|
40
|
+
when :sprockets
|
|
41
|
+
app.config.assets.precompile += %w[
|
|
42
|
+
rails_admin/application.js
|
|
43
|
+
rails_admin/application.css
|
|
44
|
+
]
|
|
45
|
+
app.config.assets.paths << RailsAdmin::Engine.root.join('src')
|
|
46
|
+
require 'rails_admin/support/es_module_processor'
|
|
47
|
+
Sprockets.register_bundle_processor 'application/javascript', RailsAdmin::Support::ESModuleProcessor
|
|
48
|
+
when :importmap
|
|
49
|
+
self.importmap = Importmap::Map.new.draw(app.root.join('config/importmap.rails_admin.rb'))
|
|
50
|
+
end
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
# Check for required middlewares, users may forget to use them in Rails API mode
|
|
46
54
|
config.after_initialize do |app|
|
|
47
55
|
has_session_store = app.config.middleware.to_a.any? do |m|
|
|
48
56
|
m.klass.try(:<=, ActionDispatch::Session::AbstractStore) ||
|
|
57
|
+
m.klass.try(:<=, ActionDispatch::Session::AbstractSecureStore) ||
|
|
49
58
|
m.klass.name =~ /^ActionDispatch::Session::/
|
|
50
59
|
end
|
|
51
60
|
loaded = app.config.middleware.to_a.map(&:name)
|
|
52
|
-
required = %w
|
|
61
|
+
required = %w[ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride]
|
|
53
62
|
missing = required - loaded
|
|
54
63
|
unless missing.empty? && has_session_store
|
|
55
64
|
configs = missing.map { |m| "config.middleware.use #{m}" }
|
|
56
65
|
configs << "config.middleware.use #{app.config.session_store.try(:name) || 'ActionDispatch::Session::CookieStore'}, #{app.config.session_options}" unless has_session_store
|
|
57
|
-
raise
|
|
58
|
-
Required middlewares for RailsAdmin are not added
|
|
59
|
-
To fix this, add
|
|
66
|
+
raise <<~ERROR
|
|
67
|
+
Required middlewares for RailsAdmin are not added
|
|
68
|
+
To fix this, add
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
#{configs.join("\n ")}
|
|
62
71
|
|
|
63
|
-
to config/application.rb.
|
|
64
|
-
|
|
72
|
+
to config/application.rb.
|
|
73
|
+
ERROR
|
|
65
74
|
end
|
|
75
|
+
|
|
76
|
+
RailsAdmin::Version.warn_with_js_version
|
|
66
77
|
end
|
|
67
78
|
end
|
|
68
79
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/extensions/controller_extension'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -15,27 +17,19 @@ module RailsAdmin
|
|
|
15
17
|
|
|
16
18
|
EXTENSIONS << extension_key
|
|
17
19
|
|
|
18
|
-
if options[:authorization]
|
|
19
|
-
AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter
|
|
20
|
-
end
|
|
20
|
+
AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter if options[:authorization]
|
|
21
21
|
|
|
22
|
-
if options[:configuration]
|
|
23
|
-
CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter
|
|
24
|
-
end
|
|
22
|
+
CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter if options[:configuration]
|
|
25
23
|
|
|
26
|
-
if options[:auditing]
|
|
27
|
-
AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter
|
|
28
|
-
end
|
|
24
|
+
AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter if options[:auditing]
|
|
29
25
|
end
|
|
30
26
|
|
|
31
27
|
# Setup all extensions for testing
|
|
32
28
|
def self.setup_all_extensions
|
|
33
29
|
(AUTHORIZATION_ADAPTERS.values + AUDITING_ADAPTERS.values).each do |klass|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# ignore errors
|
|
38
|
-
end
|
|
30
|
+
klass.setup if klass.respond_to? :setup
|
|
31
|
+
rescue # rubocop:disable Style/RescueStandardError
|
|
32
|
+
# ignore errors
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RailsAdmin
|
|
2
4
|
module Extensions
|
|
3
5
|
module CanCanCan
|
|
@@ -7,18 +9,33 @@ module RailsAdmin
|
|
|
7
9
|
def current_ability
|
|
8
10
|
# use _current_user instead of default current_user so it works with
|
|
9
11
|
# whatever current user method is defined with RailsAdmin
|
|
10
|
-
@current_ability ||=
|
|
12
|
+
@current_ability ||= ability_class.new(_current_user)
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
15
|
|
|
16
|
+
include RailsAdmin::Config::Configurable
|
|
17
|
+
|
|
18
|
+
def self.setup
|
|
19
|
+
RailsAdmin::Extensions::ControllerExtension.include ControllerExtension
|
|
20
|
+
end
|
|
21
|
+
|
|
14
22
|
# See the +authorize_with+ config method for where the initialization happens.
|
|
15
|
-
def initialize(controller, ability =
|
|
23
|
+
def initialize(controller, ability = nil, &block)
|
|
16
24
|
@controller = controller
|
|
17
|
-
|
|
18
|
-
|
|
25
|
+
ability_class { ability } if ability
|
|
26
|
+
instance_eval(&block) if block
|
|
27
|
+
|
|
28
|
+
adapter = self
|
|
29
|
+
ControllerExtension.define_method(:ability_class) do
|
|
30
|
+
adapter.ability_class
|
|
31
|
+
end
|
|
19
32
|
@controller.current_ability.authorize! :access, :rails_admin
|
|
20
33
|
end
|
|
21
34
|
|
|
35
|
+
register_instance_option :ability_class do
|
|
36
|
+
Ability
|
|
37
|
+
end
|
|
38
|
+
|
|
22
39
|
# This method is called in every controller action and should raise an exception
|
|
23
40
|
# when the authorization fails. The first argument is the name of the controller
|
|
24
41
|
# action as a symbol (:create, :bulk_delete, etc.). The second argument is the
|
|
@@ -26,6 +43,7 @@ module RailsAdmin
|
|
|
26
43
|
# instance if it is available.
|
|
27
44
|
def authorize(action, abstract_model = nil, model_object = nil)
|
|
28
45
|
return unless action
|
|
46
|
+
|
|
29
47
|
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
|
30
48
|
@controller.current_ability.authorize!(action, subject)
|
|
31
49
|
end
|
|
@@ -36,6 +54,7 @@ module RailsAdmin
|
|
|
36
54
|
# return a boolean whereas +authorize+ will raise an exception when not authorized.
|
|
37
55
|
def authorized?(action, abstract_model = nil, model_object = nil)
|
|
38
56
|
return unless action
|
|
57
|
+
|
|
39
58
|
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
|
40
59
|
@controller.current_ability.can?(action, subject)
|
|
41
60
|
end
|
|
@@ -51,13 +70,13 @@ module RailsAdmin
|
|
|
51
70
|
# records. It should return a hash of attributes which match what the user
|
|
52
71
|
# is authorized to create.
|
|
53
72
|
def attributes_for(action, abstract_model)
|
|
54
|
-
@controller.current_ability.attributes_for(action, abstract_model
|
|
73
|
+
@controller.current_ability.attributes_for(action, abstract_model&.model)
|
|
55
74
|
end
|
|
56
75
|
|
|
57
76
|
private
|
|
58
77
|
|
|
59
78
|
def resolve_action_and_subject(action, abstract_model, model_object)
|
|
60
|
-
subject = model_object || abstract_model
|
|
79
|
+
subject = model_object || abstract_model&.model
|
|
61
80
|
if subject
|
|
62
81
|
[action, subject]
|
|
63
82
|
else
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'active_support/core_ext/string/strip'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -11,7 +13,7 @@ module RailsAdmin
|
|
|
11
13
|
|
|
12
14
|
def message
|
|
13
15
|
@message = @version.event
|
|
14
|
-
@version.respond_to?(:changeset) && @version.changeset.present? ? @message + ' [' + @version.changeset.to_a.collect { |c| c[0]
|
|
16
|
+
@version.respond_to?(:changeset) && @version.changeset.present? ? @message + ' [' + @version.changeset.to_a.collect { |c| "#{c[0]} = #{c[1][1]}" }.join(', ') + ']' : @message
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def created_at
|
|
@@ -23,7 +25,11 @@ module RailsAdmin
|
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
def username
|
|
26
|
-
|
|
28
|
+
begin
|
|
29
|
+
@user_class.find(@version.whodunnit).try(:email)
|
|
30
|
+
rescue StandardError
|
|
31
|
+
nil
|
|
32
|
+
end || @version.whodunnit
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
def item
|
|
@@ -45,42 +51,63 @@ module RailsAdmin
|
|
|
45
51
|
created_at: :created_at,
|
|
46
52
|
message: :event,
|
|
47
53
|
}.freeze
|
|
48
|
-
|
|
54
|
+
E_USER_CLASS_NOT_SET = <<~ERROR
|
|
55
|
+
Please set up PaperTrail's user class explicitly.
|
|
56
|
+
|
|
57
|
+
config.audit_with :paper_trail do
|
|
58
|
+
user_class { User }
|
|
59
|
+
end
|
|
60
|
+
ERROR
|
|
61
|
+
E_VERSION_MODEL_NOT_SET = <<~ERROR
|
|
49
62
|
Please set up PaperTrail's version model explicitly.
|
|
50
63
|
|
|
51
|
-
config.audit_with :paper_trail
|
|
64
|
+
config.audit_with :paper_trail do
|
|
65
|
+
version_class { PaperTrail::Version }
|
|
66
|
+
end
|
|
52
67
|
|
|
53
68
|
If you have configured a model to use a custom version class
|
|
54
69
|
(https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
|
|
55
|
-
that configuration will take precedence over what you specify in
|
|
56
|
-
|
|
57
|
-
|
|
70
|
+
that configuration will take precedence over what you specify in `audit_with`.
|
|
71
|
+
ERROR
|
|
72
|
+
|
|
73
|
+
include RailsAdmin::Config::Configurable
|
|
58
74
|
|
|
59
75
|
def self.setup
|
|
60
|
-
raise
|
|
61
|
-
|
|
76
|
+
raise 'PaperTrail not found' unless defined?(::PaperTrail)
|
|
77
|
+
|
|
78
|
+
RailsAdmin::Extensions::ControllerExtension.include ControllerExtension
|
|
62
79
|
end
|
|
63
80
|
|
|
64
|
-
def initialize(controller,
|
|
81
|
+
def initialize(controller, user_class_name = nil, version_class_name = nil, &block)
|
|
65
82
|
@controller = controller
|
|
66
|
-
@controller
|
|
67
|
-
begin
|
|
68
|
-
@user_class = user_class.to_s.constantize
|
|
69
|
-
rescue NameError
|
|
70
|
-
raise "Please set up Papertrail's user model explicitly. Ex: config.audit_with :paper_trail, 'User'"
|
|
71
|
-
end
|
|
83
|
+
@controller&.send(:set_paper_trail_whodunnit)
|
|
72
84
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
85
|
+
user_class { user_class_name.to_s.constantize } if user_class_name
|
|
86
|
+
version_class { version_class_name.to_s.constantize } if version_class_name
|
|
87
|
+
|
|
88
|
+
instance_eval(&block) if block
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
register_instance_option :user_class do
|
|
92
|
+
User
|
|
93
|
+
rescue NameError
|
|
94
|
+
raise E_USER_CLASS_NOT_SET
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
register_instance_option :version_class do
|
|
98
|
+
PaperTrail::Version
|
|
99
|
+
rescue NameError
|
|
100
|
+
raise E_VERSION_MODEL_NOT_SET
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
register_instance_option :sort_by do
|
|
104
|
+
{id: :desc}
|
|
78
105
|
end
|
|
79
106
|
|
|
80
107
|
def latest(count = 100)
|
|
81
|
-
|
|
82
|
-
order(
|
|
83
|
-
collect { |version| VersionProxy.new(version,
|
|
108
|
+
version_class.
|
|
109
|
+
order(sort_by).includes(:item).limit(count).
|
|
110
|
+
collect { |version| VersionProxy.new(version, user_class) }
|
|
84
111
|
end
|
|
85
112
|
|
|
86
113
|
def delete_object(_object, _model, _user)
|
|
@@ -107,18 +134,18 @@ module RailsAdmin
|
|
|
107
134
|
|
|
108
135
|
# - model - a RailsAdmin::AbstractModel
|
|
109
136
|
def listing_for_model_or_object(model, object, query, sort, sort_reverse, all, page, per_page)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
137
|
+
sort =
|
|
138
|
+
if sort.present?
|
|
139
|
+
{COLUMN_MAPPING[sort.to_sym] => sort_reverse ? :desc : :asc}
|
|
140
|
+
else
|
|
141
|
+
sort_by
|
|
142
|
+
end
|
|
116
143
|
|
|
117
144
|
current_page = page.presence || '1'
|
|
118
145
|
|
|
119
146
|
versions = object.nil? ? versions_for_model(model) : object.public_send(model.model.versions_association_name)
|
|
120
147
|
versions = versions.where('event LIKE ?', "%#{query}%") if query.present?
|
|
121
|
-
versions = versions.order(
|
|
148
|
+
versions = versions.order(sort)
|
|
122
149
|
versions = all ? versions : versions.send(Kaminari.config.page_method_name, current_page).per(per_page)
|
|
123
150
|
paginated_proxies = Kaminari.paginate_array([], total_count: versions.try(:total_count) || versions.count)
|
|
124
151
|
paginated_proxies = paginated_proxies.send(
|
|
@@ -126,7 +153,7 @@ module RailsAdmin
|
|
|
126
153
|
current_page,
|
|
127
154
|
).per(per_page)
|
|
128
155
|
versions.each do |version|
|
|
129
|
-
paginated_proxies << VersionProxy.new(version,
|
|
156
|
+
paginated_proxies << VersionProxy.new(version, user_class)
|
|
130
157
|
end
|
|
131
158
|
paginated_proxies
|
|
132
159
|
end
|
|
@@ -149,10 +176,10 @@ module RailsAdmin
|
|
|
149
176
|
# classes](https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
|
|
150
177
|
#
|
|
151
178
|
# ```ruby
|
|
152
|
-
# has_paper_trail class_name: 'MyVersion'
|
|
179
|
+
# has_paper_trail versions: { class_name: 'MyVersion' }
|
|
153
180
|
# ```
|
|
154
181
|
def version_class_for(model)
|
|
155
|
-
model.
|
|
182
|
+
model.paper_trail.version_class
|
|
156
183
|
end
|
|
157
184
|
end
|
|
158
185
|
end
|