rails_admin 2.0.2 → 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 +15 -16
- data/README.md +44 -44
- 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 +25 -13
- data/app/helpers/rails_admin/main_helper.rb +18 -41
- 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 -4
- 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 +67 -29
- 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 -32
- 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 -3
- 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 +11 -4
- 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 -2
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +8 -4
- 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 +15 -11
- 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 +80 -47
- 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 +62 -35
- 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 +41 -2
- data/lib/rails_admin.rb +7 -5
- data/lib/tasks/rails_admin.rake +19 -8
- 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 +182 -330
- 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/ra.filter-box.js +0 -226
- 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 -20
- 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 -18
- 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 -48
- 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/devise_patch.rb +0 -9
- data/config/initializers/haml.rb +0 -5
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
- 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 -142
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -92
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -110
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -223
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -170
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -151
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -280
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -113
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -170
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -128
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -457
- 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 -2444
- data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
- data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -741
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -16165
- 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
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/proxyable'
|
|
2
4
|
require 'rails_admin/config/configurable'
|
|
3
5
|
require 'rails_admin/config/inspectable'
|
|
@@ -18,10 +20,9 @@ module RailsAdmin
|
|
|
18
20
|
include RailsAdmin::Config::HasGroups
|
|
19
21
|
include RailsAdmin::Config::HasDescription
|
|
20
22
|
|
|
21
|
-
attr_reader :abstract_model
|
|
22
|
-
attr_reader :parent, :root
|
|
23
|
+
attr_reader :abstract_model, :parent, :root
|
|
23
24
|
|
|
24
|
-
NAMED_INSTANCE_VARIABLES = [
|
|
25
|
+
NAMED_INSTANCE_VARIABLES = %i[@parent @root @abstract_model].freeze
|
|
25
26
|
|
|
26
27
|
def initialize(parent)
|
|
27
28
|
@parent = parent
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/sections/base'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -28,12 +30,12 @@ module RailsAdmin
|
|
|
28
30
|
nil
|
|
29
31
|
end
|
|
30
32
|
|
|
31
|
-
register_instance_option :
|
|
32
|
-
|
|
33
|
+
register_instance_option :search_help do
|
|
34
|
+
nil
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
register_instance_option :
|
|
36
|
-
|
|
37
|
+
register_instance_option :sort_by do
|
|
38
|
+
parent.abstract_model.primary_key
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
register_instance_option :scopes do
|
|
@@ -44,23 +46,16 @@ module RailsAdmin
|
|
|
44
46
|
''
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
register_deprecated_instance_option :sidescroll do
|
|
50
|
+
ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def fields_for_table
|
|
54
|
+
visible_fields.partition(&:sticky?).flatten
|
|
49
55
|
end
|
|
50
56
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
model_config = sidescroll
|
|
54
|
-
enabled = model_config.nil? ? global_config : model_config
|
|
55
|
-
if enabled
|
|
56
|
-
num_frozen = model_config[:num_frozen_columns] if model_config.is_a?(Hash)
|
|
57
|
-
unless num_frozen
|
|
58
|
-
num_frozen = global_config[:num_frozen_columns] if global_config.is_a?(Hash)
|
|
59
|
-
num_frozen ||= 3 # by default, freeze checkboxes, links & first property (usually primary key / id?)
|
|
60
|
-
num_frozen -= 1 unless checkboxes? # model config should be explicit about this, only adjust if using global config
|
|
61
|
-
end
|
|
62
|
-
num_frozen
|
|
63
|
-
end
|
|
57
|
+
register_deprecated_instance_option :sort_reverse do
|
|
58
|
+
ActiveSupport::Deprecation.warn('The sort_reverse configuration option is deprecated and has no effect.')
|
|
64
59
|
end
|
|
65
60
|
end
|
|
66
61
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'active_support/core_ext/string/inflections'
|
|
2
4
|
require 'rails_admin/config/sections/base'
|
|
3
5
|
require 'rails_admin/config/sections/edit'
|
|
@@ -25,7 +27,7 @@ module RailsAdmin
|
|
|
25
27
|
section = RailsAdmin::Config::Sections.const_get(name)
|
|
26
28
|
name = name.to_s.underscore.to_sym
|
|
27
29
|
klass.send(:define_method, name) do |&block|
|
|
28
|
-
@sections
|
|
30
|
+
@sections ||= {}
|
|
29
31
|
@sections[name] = section.new(self) unless @sections[name]
|
|
30
32
|
@sections[name].instance_eval(&block) if block
|
|
31
33
|
@sections[name]
|
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,8 +81,8 @@ module RailsAdmin
|
|
|
82
81
|
attr_accessor :navigation_static_links
|
|
83
82
|
attr_accessor :navigation_static_label
|
|
84
83
|
|
|
85
|
-
#
|
|
86
|
-
|
|
84
|
+
# Set where RailsAdmin fetches JS/CSS from, defaults to :sprockets
|
|
85
|
+
attr_writer :asset_source
|
|
87
86
|
|
|
88
87
|
# Setup authentication to be run as a before filter
|
|
89
88
|
# This is run inside the controller instance so you can setup any authentication you need to
|
|
@@ -113,14 +112,14 @@ module RailsAdmin
|
|
|
113
112
|
@authenticate || DEFAULT_AUTHENTICATION
|
|
114
113
|
end
|
|
115
114
|
|
|
116
|
-
# Setup auditing/
|
|
115
|
+
# Setup auditing/versioning provider that observe objects lifecycle
|
|
117
116
|
def audit_with(*args, &block)
|
|
118
117
|
extension = args.shift
|
|
119
118
|
if extension
|
|
120
119
|
klass = RailsAdmin::AUDITING_ADAPTERS[extension]
|
|
121
120
|
klass.setup if klass.respond_to? :setup
|
|
122
121
|
@audit = proc do
|
|
123
|
-
@auditing_adapter = klass.new(*([self] + args).compact)
|
|
122
|
+
@auditing_adapter = klass.new(*([self] + args).compact, &block)
|
|
124
123
|
end
|
|
125
124
|
elsif block
|
|
126
125
|
@audit = block
|
|
@@ -148,7 +147,7 @@ module RailsAdmin
|
|
|
148
147
|
# config.authorize_with :cancancan
|
|
149
148
|
# end
|
|
150
149
|
#
|
|
151
|
-
# See the wiki[https://github.com/
|
|
150
|
+
# See the wiki[https://github.com/railsadminteam/rails_admin/wiki] for more on authorization.
|
|
152
151
|
#
|
|
153
152
|
# @see RailsAdmin::Config::DEFAULT_AUTHORIZE
|
|
154
153
|
def authorize_with(*args, &block)
|
|
@@ -157,7 +156,7 @@ module RailsAdmin
|
|
|
157
156
|
klass = RailsAdmin::AUTHORIZATION_ADAPTERS[extension]
|
|
158
157
|
klass.setup if klass.respond_to? :setup
|
|
159
158
|
@authorize = proc do
|
|
160
|
-
@authorization_adapter = klass.new(*([self] + args).compact)
|
|
159
|
+
@authorization_adapter = klass.new(*([self] + args).compact, &block)
|
|
161
160
|
end
|
|
162
161
|
elsif block
|
|
163
162
|
@authorize = block
|
|
@@ -201,10 +200,10 @@ module RailsAdmin
|
|
|
201
200
|
end
|
|
202
201
|
|
|
203
202
|
def default_search_operator=(operator)
|
|
204
|
-
if %w
|
|
203
|
+
if %w[default like not_like starts_with ends_with is =].include? operator
|
|
205
204
|
@default_search_operator = operator
|
|
206
205
|
else
|
|
207
|
-
raise
|
|
206
|
+
raise ArgumentError.new("Search operator '#{operator}' not supported")
|
|
208
207
|
end
|
|
209
208
|
end
|
|
210
209
|
|
|
@@ -226,23 +225,37 @@ module RailsAdmin
|
|
|
226
225
|
#
|
|
227
226
|
# @see RailsAdmin::Config.registry
|
|
228
227
|
def model(entity, &block)
|
|
229
|
-
key =
|
|
230
|
-
|
|
228
|
+
key =
|
|
229
|
+
case entity
|
|
230
|
+
when RailsAdmin::AbstractModel
|
|
231
231
|
entity.model.try(:name).try :to_sym
|
|
232
|
-
|
|
232
|
+
when Class, ConstLoadSuppressor::ConstProxy
|
|
233
233
|
entity.name.to_sym
|
|
234
|
-
|
|
234
|
+
when String, Symbol
|
|
235
235
|
entity.to_sym
|
|
236
236
|
else
|
|
237
237
|
entity.class.name.to_sym
|
|
238
238
|
end
|
|
239
|
-
end
|
|
240
239
|
|
|
241
|
-
@registry[key] ||= RailsAdmin::Config::LazyModel.new(
|
|
240
|
+
@registry[key] ||= RailsAdmin::Config::LazyModel.new(key.to_s)
|
|
242
241
|
@registry[key].add_deferred_block(&block) if block
|
|
243
242
|
@registry[key]
|
|
244
243
|
end
|
|
245
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
|
+
|
|
246
259
|
def default_hidden_fields=(fields)
|
|
247
260
|
if fields.is_a?(Array)
|
|
248
261
|
@default_hidden_fields = {}
|
|
@@ -253,9 +266,33 @@ module RailsAdmin
|
|
|
253
266
|
end
|
|
254
267
|
end
|
|
255
268
|
|
|
256
|
-
|
|
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.
|
|
257
291
|
def actions(&block)
|
|
258
|
-
|
|
292
|
+
return unless block
|
|
293
|
+
|
|
294
|
+
RailsAdmin::Config::Actions.reset
|
|
295
|
+
RailsAdmin::Config::Actions.instance_eval(&block)
|
|
259
296
|
end
|
|
260
297
|
|
|
261
298
|
# Returns all model configurations
|
|
@@ -271,31 +308,31 @@ module RailsAdmin
|
|
|
271
308
|
def reset
|
|
272
309
|
@compact_show_view = true
|
|
273
310
|
@browser_validations = true
|
|
274
|
-
@yell_for_non_accessible_fields = true
|
|
275
311
|
@authenticate = nil
|
|
276
312
|
@authorize = nil
|
|
277
313
|
@audit = nil
|
|
278
314
|
@current_user = nil
|
|
279
315
|
@default_hidden_fields = {}
|
|
280
316
|
@default_hidden_fields[:base] = [:_type]
|
|
281
|
-
@default_hidden_fields[:edit] = [
|
|
282
|
-
@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]
|
|
283
319
|
@default_items_per_page = 20
|
|
284
320
|
@default_associated_collection_limit = 100
|
|
285
321
|
@default_search_operator = 'default'
|
|
286
322
|
@excluded_models = []
|
|
287
323
|
@included_models = []
|
|
288
|
-
@
|
|
289
|
-
@sidescroll = nil
|
|
290
|
-
@label_methods = [:name, :title]
|
|
324
|
+
@label_methods = %i[name title]
|
|
291
325
|
@main_app_name = proc { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
|
|
292
326
|
@registry = {}
|
|
327
|
+
@navbar_css_classes = %w[navbar-dark bg-primary border-bottom]
|
|
293
328
|
@show_gravatar = true
|
|
294
329
|
@navigation_static_links = {}
|
|
295
330
|
@navigation_static_label = nil
|
|
331
|
+
@asset_source = nil
|
|
296
332
|
@parent_controller = '::ActionController::Base'
|
|
297
333
|
@forgery_protection_settings = {with: :exception}
|
|
298
334
|
RailsAdmin::Config::Actions.reset
|
|
335
|
+
RailsAdmin::AbstractModel.reset
|
|
299
336
|
end
|
|
300
337
|
|
|
301
338
|
# Reset a provided model's configuration.
|
|
@@ -306,22 +343,19 @@ module RailsAdmin
|
|
|
306
343
|
@registry.delete(key)
|
|
307
344
|
end
|
|
308
345
|
|
|
309
|
-
#
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
def reset_all_models
|
|
314
|
-
@registry = {}
|
|
346
|
+
# Perform reset, then load RailsAdmin initializer again
|
|
347
|
+
def reload!
|
|
348
|
+
reset
|
|
349
|
+
load RailsAdmin::Engine.config.initializer_path
|
|
315
350
|
end
|
|
316
351
|
|
|
317
352
|
# Get all models that are configured as visible sorted by their weight and label.
|
|
318
353
|
#
|
|
319
354
|
# @see RailsAdmin::Config::Hideable
|
|
320
|
-
|
|
321
355
|
def visible_models(bindings)
|
|
322
356
|
visible_models_with_bindings(bindings).sort do |a, b|
|
|
323
357
|
if (weight_order = a.weight <=> b.weight) == 0
|
|
324
|
-
a.label.
|
|
358
|
+
a.label.casecmp(b.label)
|
|
325
359
|
else
|
|
326
360
|
weight_order
|
|
327
361
|
end
|
|
@@ -330,23 +364,22 @@ module RailsAdmin
|
|
|
330
364
|
|
|
331
365
|
private
|
|
332
366
|
|
|
333
|
-
def lchomp(base, arg)
|
|
334
|
-
base.to_s.reverse.chomp(arg.to_s.reverse).reverse
|
|
335
|
-
end
|
|
336
|
-
|
|
337
367
|
def viable_models
|
|
338
368
|
included_models.collect(&:to_s).presence || begin
|
|
339
369
|
@@system_models ||= # memoization for tests
|
|
340
370
|
([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
|
|
341
|
-
(app.paths['app/models'].to_a + app.
|
|
371
|
+
(app.paths['app/models'].to_a + app.config.eager_load_paths).collect do |load_path|
|
|
342
372
|
Dir.glob(app.root.join(load_path)).collect do |load_dir|
|
|
343
|
-
|
|
373
|
+
path_prefix = "#{app.root.join(load_dir)}/"
|
|
374
|
+
Dir.glob("#{load_dir}/**/*.rb").collect do |filename|
|
|
344
375
|
# app/models/module/class.rb => module/class.rb => module/class => Module::Class
|
|
345
|
-
|
|
376
|
+
filename.delete_prefix(path_prefix).chomp('.rb').camelize
|
|
346
377
|
end
|
|
347
378
|
end
|
|
348
379
|
end
|
|
349
380
|
end.flatten.reject { |m| m.starts_with?('Concerns::') } # rubocop:disable Style/MultilineBlockChain
|
|
381
|
+
|
|
382
|
+
@@system_models + @registry.keys.collect(&:to_s)
|
|
350
383
|
end
|
|
351
384
|
end
|
|
352
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
|