rails_admin 0.8.1 → 2.2.1
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.
Potentially problematic release.
This version of rails_admin might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/Gemfile +17 -34
- data/LICENSE.md +1 -1
- data/README.md +34 -26
- data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +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/magnifier.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-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/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +8 -0
- data/app/assets/javascripts/rails_admin/jquery.migrate.js +3 -0
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +148 -60
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +31 -26
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +211 -110
- data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +59 -0
- data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
- data/app/assets/javascripts/rails_admin/ra.widgets.js +379 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js +5 -5
- data/app/assets/javascripts/rails_admin/ui.js +135 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +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 +5 -5
- data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
- data/app/assets/stylesheets/rails_admin/ra.widgets.scss +9 -1
- data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
- data/app/controllers/rails_admin/application_controller.rb +14 -8
- data/app/controllers/rails_admin/main_controller.rb +9 -9
- data/app/helpers/rails_admin/application_helper.rb +26 -11
- data/app/helpers/rails_admin/form_builder.rb +20 -12
- data/app/helpers/rails_admin/main_helper.rb +8 -7
- data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_gap.html.haml +0 -0
- data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_next_page.html.haml +0 -0
- data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_page.html.haml +0 -0
- data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_paginator.html.haml +0 -0
- data/app/views/kaminari/{twitter-bootstrap → ra-twitter-bootstrap}/_prev_page.html.haml +0 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +4 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +4 -0
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +4 -0
- data/app/views/layouts/rails_admin/_head.html.haml +7 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +2 -2
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
- data/app/views/layouts/rails_admin/application.html.haml +4 -10
- data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
- data/app/views/rails_admin/main/_delete_notice.html.haml +14 -9
- data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -1
- data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -3
- data/app/views/rails_admin/main/_form_file_upload.html.haml +5 -5
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +7 -6
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +16 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
- data/app/views/rails_admin/main/_form_simple_mde.haml +8 -0
- data/app/views/rails_admin/main/dashboard.html.haml +5 -6
- data/app/views/rails_admin/main/export.html.haml +45 -36
- data/app/views/rails_admin/main/history.html.haml +3 -3
- data/app/views/rails_admin/main/index.html.haml +37 -26
- data/app/views/rails_admin/main/show.html.haml +6 -7
- data/config/initializers/active_record_extensions.rb +3 -3
- data/config/initializers/haml.rb +4 -1
- data/config/locales/rails_admin.en.yml +5 -2
- data/lib/generators/rails_admin/templates/initializer.erb +6 -2
- data/lib/rails_admin/abstract_model.rb +9 -10
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +9 -3
- data/lib/rails_admin/adapters/active_record/property.rb +1 -5
- data/lib/rails_admin/adapters/active_record.rb +83 -28
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +3 -3
- data/lib/rails_admin/adapters/mongoid/association.rb +18 -6
- data/lib/rails_admin/adapters/mongoid/bson.rb +29 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +4 -2
- data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
- data/lib/rails_admin/adapters/mongoid.rb +40 -26
- data/lib/rails_admin/bootstrap-sass/compass_functions.rb +1 -1
- data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
- data/lib/rails_admin/bootstrap-sass.rb +8 -6
- data/lib/rails_admin/config/actions/base.rb +20 -5
- data/lib/rails_admin/config/actions/bulk_delete.rb +2 -4
- data/lib/rails_admin/config/actions/dashboard.rb +9 -5
- data/lib/rails_admin/config/actions/edit.rb +1 -3
- data/lib/rails_admin/config/actions/export.rb +1 -1
- data/lib/rails_admin/config/actions/index.rb +5 -3
- data/lib/rails_admin/config/actions/new.rb +4 -5
- data/lib/rails_admin/config/actions.rb +1 -1
- data/lib/rails_admin/config/configurable.rb +25 -18
- data/lib/rails_admin/config/fields/association.rb +11 -3
- data/lib/rails_admin/config/fields/base.rb +20 -27
- data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
- data/lib/rails_admin/config/fields/factories/active_storage.rb +30 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +4 -2
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
- data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
- data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +19 -2
- data/lib/rails_admin/config/fields/types/active_storage.rb +49 -0
- data/lib/rails_admin/config/fields/types/all.rb +7 -1
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -0
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -15
- data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
- data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
- data/lib/rails_admin/config/fields/types/color.rb +2 -2
- data/lib/rails_admin/config/fields/types/datetime.rb +6 -3
- data/lib/rails_admin/config/fields/types/file_upload.rb +12 -4
- data/lib/rails_admin/config/fields/types/froala.rb +9 -11
- data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -1
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
- data/lib/rails_admin/config/fields/types/json.rb +9 -1
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +53 -0
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +56 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +125 -0
- data/lib/rails_admin/config/fields/types/password.rb +5 -1
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +12 -1
- data/lib/rails_admin/config/fields/types/serialized.rb +2 -2
- data/lib/rails_admin/config/fields/types/shrine.rb +54 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +36 -0
- data/lib/rails_admin/config/fields/types/string.rb +8 -7
- data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -20
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
- data/lib/rails_admin/config/fields/types.rb +1 -1
- data/lib/rails_admin/config/fields.rb +3 -1
- data/lib/rails_admin/config/has_fields.rb +1 -1
- data/lib/rails_admin/config/has_groups.rb +1 -1
- data/lib/rails_admin/config/hideable.rb +1 -1
- data/lib/rails_admin/config/inspectable.rb +39 -0
- data/lib/rails_admin/config/lazy_model.rb +48 -8
- data/lib/rails_admin/config/model.rb +10 -22
- data/lib/rails_admin/config/proxyable/proxy.rb +7 -9
- data/lib/rails_admin/config/proxyable.rb +13 -1
- data/lib/rails_admin/config/sections/base.rb +4 -17
- data/lib/rails_admin/config/sections/list.rb +37 -0
- data/lib/rails_admin/config.rb +46 -25
- data/lib/rails_admin/engine.rb +37 -4
- data/lib/rails_admin/extension.rb +16 -4
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +23 -7
- data/lib/rails_admin/extensions/cancancan.rb +1 -1
- data/lib/rails_admin/extensions/controller_extension.rb +6 -0
- data/lib/rails_admin/extensions/history/auditing_adapter.rb +2 -2
- data/lib/rails_admin/extensions/history/history.rb +2 -2
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +59 -17
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +11 -3
- data/lib/rails_admin/support/csv_converter.rb +20 -14
- data/lib/rails_admin/support/datetime.rb +7 -6
- data/lib/rails_admin/support/i18n.rb +7 -5
- data/lib/rails_admin/version.rb +2 -2
- data/lib/rails_admin.rb +23 -1
- data/lib/tasks/rails_admin.rake +16 -7
- 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 +2671 -0
- 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/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/{app → 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/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/{app → 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/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +50 -28
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +10 -7
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +35 -20
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +48 -25
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +70 -28
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +56 -42
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +118 -40
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +26 -16
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +29 -27
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +46 -19
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +280 -60
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +5 -5
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
- data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +317 -150
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +316 -161
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +16528 -8420
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
- data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +2342 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
- metadata +214 -199
- data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/javascripts/rails_admin/jquery.remotipart.fixed.js +0 -72
- data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -8
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -52
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -308
- data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
- data/config/initializers/devise_patch.rb +0 -9
- data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
- data/lib/rails_admin/config/fields/types/refile.rb +0 -27
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
- data/lib/rails_admin/extensions/cancan.rb +0 -3
@@ -25,9 +25,7 @@ module RailsAdmin
|
|
25
25
|
sanitize_params_for!(request.xhr? ? :modal : :update)
|
26
26
|
|
27
27
|
@object.set_attributes(params[@abstract_model.param_key])
|
28
|
-
@authorization_adapter && @authorization_adapter.
|
29
|
-
@object.send("#{name}=", value)
|
30
|
-
end
|
28
|
+
@authorization_adapter && @authorization_adapter.authorize(:update, @abstract_model, @object)
|
31
29
|
changes = @object.changes
|
32
30
|
if @object.save
|
33
31
|
@auditing_adapter && @auditing_adapter.update_object(@object, @abstract_model, _current_user, changes)
|
@@ -16,7 +16,7 @@ module RailsAdmin
|
|
16
16
|
proc do
|
17
17
|
if format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
|
18
18
|
request.format = format
|
19
|
-
@schema = HashHelper.symbolize(params[:schema]) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
|
19
|
+
@schema = HashHelper.symbolize(params[:schema].slice(:except, :include, :methods, :only).permit!.to_h) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
|
20
20
|
@objects = list_entries(@model_config, :export)
|
21
21
|
index
|
22
22
|
else
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'activemodel-serializers-xml'
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Config
|
3
5
|
module Actions
|
@@ -41,7 +43,7 @@ module RailsAdmin
|
|
41
43
|
|
42
44
|
respond_to do |format|
|
43
45
|
format.html do
|
44
|
-
render @action.template_name, status:
|
46
|
+
render @action.template_name, status: @status_code || :ok
|
45
47
|
end
|
46
48
|
|
47
49
|
format.json do
|
@@ -71,13 +73,13 @@ module RailsAdmin
|
|
71
73
|
end
|
72
74
|
|
73
75
|
format.csv do
|
74
|
-
header, encoding, output = CSVConverter.new(@objects, @schema).to_csv(params[:csv_options])
|
76
|
+
header, encoding, output = CSVConverter.new(@objects, @schema).to_csv(params[:csv_options].permit!.to_h)
|
75
77
|
if params[:send_data]
|
76
78
|
send_data output,
|
77
79
|
type: "text/csv; charset=#{encoding}; #{'header=present' if header}",
|
78
80
|
disposition: "attachment; filename=#{params[:model_name]}_#{DateTime.now.strftime('%Y-%m-%d_%Hh%Mm%S')}.csv"
|
79
81
|
else
|
80
|
-
render
|
82
|
+
render plain: output
|
81
83
|
end
|
82
84
|
end
|
83
85
|
end
|
@@ -20,8 +20,9 @@ module RailsAdmin
|
|
20
20
|
@authorization_adapter && @authorization_adapter.attributes_for(:new, @abstract_model).each do |name, value|
|
21
21
|
@object.send("#{name}=", value)
|
22
22
|
end
|
23
|
-
if object_params = params[@abstract_model.
|
24
|
-
|
23
|
+
if object_params = params[@abstract_model.param_key]
|
24
|
+
sanitize_params_for!(request.xhr? ? :modal : :create)
|
25
|
+
@object.set_attributes(@object.attributes.merge(object_params.to_h))
|
25
26
|
end
|
26
27
|
respond_to do |format|
|
27
28
|
format.html { render @action.template_name }
|
@@ -35,9 +36,7 @@ module RailsAdmin
|
|
35
36
|
sanitize_params_for!(request.xhr? ? :modal : :create)
|
36
37
|
|
37
38
|
@object.set_attributes(params[@abstract_model.param_key])
|
38
|
-
@authorization_adapter && @authorization_adapter.
|
39
|
-
@object.send("#{name}=", value)
|
40
|
-
end
|
39
|
+
@authorization_adapter && @authorization_adapter.authorize(:create, @abstract_model, @object)
|
41
40
|
|
42
41
|
if @object.save
|
43
42
|
@auditing_adapter && @auditing_adapter.create_object(@object, @abstract_model, _current_user)
|
@@ -96,7 +96,7 @@ module RailsAdmin
|
|
96
96
|
action.instance_eval(&block) if block
|
97
97
|
@@actions ||= []
|
98
98
|
if action.custom_key.in?(@@actions.collect(&:custom_key))
|
99
|
-
|
99
|
+
raise "Action #{action.custom_key} already exists. Please change its custom key."
|
100
100
|
else
|
101
101
|
@@actions << action
|
102
102
|
end
|
@@ -7,7 +7,7 @@ module RailsAdmin
|
|
7
7
|
base.send :extend, ClassMethods
|
8
8
|
end
|
9
9
|
|
10
|
-
def has_option?(name) # rubocop:disable PredicateName
|
10
|
+
def has_option?(name) # rubocop:disable Naming/PredicateName
|
11
11
|
options = self.class.instance_variable_get('@config_options')
|
12
12
|
options && options.key?(name)
|
13
13
|
end
|
@@ -23,6 +23,25 @@ module RailsAdmin
|
|
23
23
|
self.class.register_deprecated_instance_option(option_name, replacement_option_name, scope, &custom_error)
|
24
24
|
end
|
25
25
|
|
26
|
+
private
|
27
|
+
|
28
|
+
def with_recurring(option_name, value_proc, default_proc)
|
29
|
+
# Track recursive invocation with an instance variable. This prevents run-away recursion
|
30
|
+
# and allows configurations such as
|
31
|
+
# label { "#{label}".upcase }
|
32
|
+
# This will use the default definition when called recursively.
|
33
|
+
Thread.current[:rails_admin_recurring] ||= {}
|
34
|
+
Thread.current[:rails_admin_recurring][self] ||= {}
|
35
|
+
if Thread.current[:rails_admin_recurring][self][option_name]
|
36
|
+
instance_eval(&default_proc)
|
37
|
+
else
|
38
|
+
Thread.current[:rails_admin_recurring][self][option_name] = true
|
39
|
+
instance_eval(&value_proc)
|
40
|
+
end
|
41
|
+
ensure
|
42
|
+
Thread.current[:rails_admin_recurring].delete(self)
|
43
|
+
end
|
44
|
+
|
26
45
|
module ClassMethods
|
27
46
|
# Register an instance option. Instance option is a configuration
|
28
47
|
# option that stores its value within an instance variable and is
|
@@ -43,7 +62,7 @@ module RailsAdmin
|
|
43
62
|
|
44
63
|
# Define getter/setter by the option name
|
45
64
|
scope.send(:define_method, option_name) do |*args, &block|
|
46
|
-
if !args[0].nil? || block
|
65
|
+
if !args[0].nil? || block
|
47
66
|
# Invocation with args --> This is the declaration of the option, i.e. setter
|
48
67
|
instance_variable_set("@#{option_name}_registered", args[0].nil? ? block : args[0])
|
49
68
|
else
|
@@ -51,17 +70,7 @@ module RailsAdmin
|
|
51
70
|
value = instance_variable_get("@#{option_name}_registered")
|
52
71
|
case value
|
53
72
|
when Proc
|
54
|
-
|
55
|
-
# and allows configurations such as
|
56
|
-
# label { "#{label}".upcase }
|
57
|
-
# This will use the default definition when called recursively.
|
58
|
-
if instance_variable_get("@#{option_name}_recurring")
|
59
|
-
value = instance_eval(&default)
|
60
|
-
else
|
61
|
-
instance_variable_set("@#{option_name}_recurring", true)
|
62
|
-
value = instance_eval(&value)
|
63
|
-
instance_variable_set("@#{option_name}_recurring", false)
|
64
|
-
end
|
73
|
+
value = with_recurring(option_name, value, default)
|
65
74
|
when nil
|
66
75
|
value = instance_eval(&default)
|
67
76
|
end
|
@@ -75,12 +84,10 @@ module RailsAdmin
|
|
75
84
|
if replacement_option_name
|
76
85
|
ActiveSupport::Deprecation.warn("The #{option_name} configuration option is deprecated, please use #{replacement_option_name}.")
|
77
86
|
send(replacement_option_name, *args, &block)
|
87
|
+
elsif block_given?
|
88
|
+
yield
|
78
89
|
else
|
79
|
-
|
80
|
-
yield
|
81
|
-
else
|
82
|
-
fail("The #{option_name} configuration option is removed without replacement.")
|
83
|
-
end
|
90
|
+
raise("The #{option_name} configuration option is removed without replacement.")
|
84
91
|
end
|
85
92
|
end
|
86
93
|
end
|
@@ -10,7 +10,7 @@ module RailsAdmin
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# Reader for the association information hash
|
13
|
-
def association
|
13
|
+
def association
|
14
14
|
@properties
|
15
15
|
end
|
16
16
|
|
@@ -54,7 +54,7 @@ module RailsAdmin
|
|
54
54
|
# preload entire associated collection (per associated_collection_scope) on load
|
55
55
|
# Be sure to set limit in associated_collection_scope if set is large
|
56
56
|
register_instance_option :associated_collection_cache_all do
|
57
|
-
@associated_collection_cache_all ||= (associated_model_config.abstract_model.count <
|
57
|
+
@associated_collection_cache_all ||= (associated_model_config.abstract_model.count < associated_model_limit)
|
58
58
|
end
|
59
59
|
|
60
60
|
# determines whether association's elements can be removed
|
@@ -62,6 +62,10 @@ module RailsAdmin
|
|
62
62
|
association.foreign_key_nullable?
|
63
63
|
end
|
64
64
|
|
65
|
+
register_instance_option :eager_load? do
|
66
|
+
!!searchable
|
67
|
+
end
|
68
|
+
|
65
69
|
# Reader for the association's child model's configuration
|
66
70
|
def associated_model_config
|
67
71
|
@associated_model_config ||= RailsAdmin.config(association.klass)
|
@@ -74,7 +78,7 @@ module RailsAdmin
|
|
74
78
|
|
75
79
|
# Reader for associated primary key
|
76
80
|
def associated_primary_key
|
77
|
-
@associated_primary_key ||=
|
81
|
+
@associated_primary_key ||= associated_model_config.abstract_model.primary_key
|
78
82
|
end
|
79
83
|
|
80
84
|
# Reader for the association's key
|
@@ -105,6 +109,10 @@ module RailsAdmin
|
|
105
109
|
def virtual?
|
106
110
|
true
|
107
111
|
end
|
112
|
+
|
113
|
+
def associated_model_limit
|
114
|
+
RailsAdmin.config.default_associated_collection_limit
|
115
|
+
end
|
108
116
|
end
|
109
117
|
end
|
110
118
|
end
|
@@ -2,20 +2,27 @@ require 'rails_admin/config/proxyable'
|
|
2
2
|
require 'rails_admin/config/configurable'
|
3
3
|
require 'rails_admin/config/hideable'
|
4
4
|
require 'rails_admin/config/groupable'
|
5
|
+
require 'rails_admin/config/inspectable'
|
5
6
|
|
6
7
|
module RailsAdmin
|
7
8
|
module Config
|
8
9
|
module Fields
|
9
|
-
class Base # rubocop:disable ClassLength
|
10
|
+
class Base # rubocop:disable Metrics/ClassLength
|
10
11
|
include RailsAdmin::Config::Proxyable
|
11
12
|
include RailsAdmin::Config::Configurable
|
12
13
|
include RailsAdmin::Config::Hideable
|
13
14
|
include RailsAdmin::Config::Groupable
|
15
|
+
include RailsAdmin::Config::Inspectable
|
14
16
|
|
15
17
|
attr_reader :name, :properties, :abstract_model
|
16
18
|
attr_accessor :defined, :order, :section
|
17
19
|
attr_reader :parent, :root
|
18
20
|
|
21
|
+
NAMED_INSTANCE_VARIABLES = [
|
22
|
+
:@parent, :@root, :@section, :@children_fields_registered,
|
23
|
+
:@associated_model_config, :@group
|
24
|
+
].freeze
|
25
|
+
|
19
26
|
def initialize(parent, name, properties)
|
20
27
|
@parent = parent
|
21
28
|
@root = parent.root
|
@@ -57,7 +64,7 @@ module RailsAdmin
|
|
57
64
|
end
|
58
65
|
|
59
66
|
register_instance_option :filterable? do
|
60
|
-
!!searchable
|
67
|
+
!!searchable
|
61
68
|
end
|
62
69
|
|
63
70
|
register_instance_option :search_operator do
|
@@ -92,7 +99,7 @@ module RailsAdmin
|
|
92
99
|
property = am && am.properties.detect { |p| p.name == f.values.first.to_sym }
|
93
100
|
type = property && property.type
|
94
101
|
else # <attribute|column>
|
95
|
-
am = (
|
102
|
+
am = (association? ? associated_model_config.abstract_model : abstract_model)
|
96
103
|
table_name = am.table_name
|
97
104
|
column = f
|
98
105
|
property = am.properties.detect { |p| p.name == f.to_sym }
|
@@ -172,12 +179,12 @@ module RailsAdmin
|
|
172
179
|
:nil
|
173
180
|
end
|
174
181
|
end
|
175
|
-
(@required ||= {})[context] ||= !!([name] + children_fields).uniq.detect do |column_name|
|
182
|
+
(@required ||= {})[context] ||= !!([name] + children_fields).uniq.detect do |column_name|
|
176
183
|
abstract_model.model.validators_on(column_name).detect do |v|
|
177
184
|
!(v.options[:allow_nil] || v.options[:allow_blank]) &&
|
178
|
-
|
179
|
-
|
180
|
-
|
185
|
+
[:presence, :numericality, :attachment_presence].include?(v.kind) &&
|
186
|
+
(v.options[:on] == context || v.options[:on].blank?) &&
|
187
|
+
(v.options[:if].blank? && v.options[:unless].blank?)
|
181
188
|
end
|
182
189
|
end
|
183
190
|
end
|
@@ -220,6 +227,10 @@ module RailsAdmin
|
|
220
227
|
bindings[:view].render partial: "rails_admin/main/#{partial}", locals: {field: self, form: bindings[:form]}
|
221
228
|
end
|
222
229
|
|
230
|
+
register_instance_option :default_filter_operator do
|
231
|
+
nil
|
232
|
+
end
|
233
|
+
|
223
234
|
def editable?
|
224
235
|
!(@properties && @properties.read_only?)
|
225
236
|
end
|
@@ -247,8 +258,8 @@ module RailsAdmin
|
|
247
258
|
#
|
248
259
|
# @see RailsAdmin::Config::Fields::Base.register_instance_option :required?
|
249
260
|
def optional(state = nil, &block)
|
250
|
-
if !state.nil? || block
|
251
|
-
required state.nil? ? proc { false ==
|
261
|
+
if !state.nil? || block
|
262
|
+
required state.nil? ? proc { false == instance_eval(&block) } : false == state
|
252
263
|
else
|
253
264
|
optional?
|
254
265
|
end
|
@@ -324,24 +335,6 @@ module RailsAdmin
|
|
324
335
|
def form_value
|
325
336
|
form_default_value.nil? ? formatted_value : form_default_value
|
326
337
|
end
|
327
|
-
|
328
|
-
def inspect
|
329
|
-
"#<#{self.class.name}[#{name}] #{
|
330
|
-
instance_variables.collect do |v|
|
331
|
-
value = instance_variable_get(v)
|
332
|
-
if [:@parent, :@root, :@section, :@children_fields_registered,
|
333
|
-
:@associated_model_config, :@group, :@bindings].include? v
|
334
|
-
if value.respond_to? :name
|
335
|
-
"#{v}=#{value.name.inspect}"
|
336
|
-
else
|
337
|
-
"#{v}=#{value.class.name}"
|
338
|
-
end
|
339
|
-
else
|
340
|
-
"#{v}=#{value.inspect}"
|
341
|
-
end
|
342
|
-
end.join(', ')
|
343
|
-
}>"
|
344
|
-
end
|
345
338
|
end
|
346
339
|
end
|
347
340
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rails_admin/config/fields'
|
2
|
+
require 'rails_admin/config/fields/types'
|
3
|
+
|
4
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
5
|
+
if defined?(::ActionText) && properties.try(:association?) && (match = /\Arich_text_(.+)\Z/.match properties.name) && properties.klass.to_s == 'ActionText::RichText'
|
6
|
+
field = RailsAdmin::Config::Fields::Types.load(:action_text).new(parent, match[1], properties)
|
7
|
+
fields << field
|
8
|
+
true
|
9
|
+
else
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rails_admin/config/fields'
|
2
|
+
require 'rails_admin/config/fields/types'
|
3
|
+
require 'rails_admin/config/fields/types/file_upload'
|
4
|
+
|
5
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
+
if defined?(::ActiveStorage) && properties.try(:association?) && (match = /\A(.+)_attachments?\Z/.match properties.name) && properties.klass.to_s == 'ActiveStorage::Attachment'
|
7
|
+
name = match[1]
|
8
|
+
field = RailsAdmin::Config::Fields::Types.load(
|
9
|
+
properties.type == :has_many ? :multiple_active_storage : :active_storage,
|
10
|
+
).new(parent, name, properties)
|
11
|
+
fields << field
|
12
|
+
associations =
|
13
|
+
if properties.type == :has_many
|
14
|
+
["#{name}_attachments".to_sym, "#{name}_blobs".to_sym]
|
15
|
+
else
|
16
|
+
["#{name}_attachment".to_sym, "#{name}_blob".to_sym]
|
17
|
+
end
|
18
|
+
children_fields = associations.map do |child_name|
|
19
|
+
next unless child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
|
20
|
+
child_field = fields.detect { |f| f.name == child_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_association, fields)
|
21
|
+
child_field.hide unless field == child_field
|
22
|
+
child_field.filterable(false) unless field == child_field
|
23
|
+
child_field.name
|
24
|
+
end.flatten.compact
|
25
|
+
field.children_fields(children_fields)
|
26
|
+
true
|
27
|
+
else
|
28
|
+
false
|
29
|
+
end
|
30
|
+
end
|
@@ -4,9 +4,11 @@ require 'rails_admin/config/fields/types/file_upload'
|
|
4
4
|
|
5
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
6
|
model = parent.abstract_model.model
|
7
|
-
if defined?(::CarrierWave) &&
|
7
|
+
if defined?(::CarrierWave) && model.is_a?(CarrierWave::Mount) && model.uploaders.include?(attachment_name = properties.name.to_s.chomp('_file_name').to_sym)
|
8
8
|
columns = [model.uploader_options[attachment_name][:mount_on] || attachment_name, "#{attachment_name}_content_type".to_sym, "#{attachment_name}_file_size".to_sym]
|
9
|
-
field = RailsAdmin::Config::Fields::Types.load(
|
9
|
+
field = RailsAdmin::Config::Fields::Types.load(
|
10
|
+
[:serialized, :json].include?(properties.type) ? :multiple_carrierwave : :carrierwave,
|
11
|
+
).new(parent, attachment_name, properties)
|
10
12
|
fields << field
|
11
13
|
children_fields = []
|
12
14
|
columns.each do |children_column_name|
|
@@ -4,7 +4,7 @@ require 'rails_admin/config/fields/types/file_upload'
|
|
4
4
|
|
5
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
6
|
extensions = [:name, :uid]
|
7
|
-
if (properties.name.to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.dragonfly_attachment_classes.collect(&:attribute).include?(attachment_name = Regexp.last_match[1].to_sym)
|
7
|
+
if (properties.name.to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.respond_to?(:dragonfly_attachment_classes) && parent.abstract_model.model.dragonfly_attachment_classes.collect(&:attribute).include?(attachment_name = Regexp.last_match[1].to_sym)
|
8
8
|
field = RailsAdmin::Config::Fields::Types.load(:dragonfly).new(parent, attachment_name, properties)
|
9
9
|
children_fields = []
|
10
10
|
extensions.each do |ext|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rails_admin/config/fields'
|
2
|
+
require 'rails_admin/config/fields/types'
|
3
|
+
require 'rails_admin/config/fields/types/file_upload'
|
4
|
+
|
5
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
+
next false unless defined?(::Shrine)
|
7
|
+
|
8
|
+
attachment_names = parent.abstract_model.model.ancestors.select { |m| m.is_a?(Shrine::Attachment) }.map { |a| a.instance_variable_get("@name") }
|
9
|
+
next false if attachment_names.blank?
|
10
|
+
|
11
|
+
attachment_name = attachment_names.detect { |a| a == properties.name.to_s.chomp('_data').to_sym }
|
12
|
+
next false unless attachment_name
|
13
|
+
|
14
|
+
field = RailsAdmin::Config::Fields::Types.load(:shrine).new(parent, attachment_name, properties)
|
15
|
+
fields << field
|
16
|
+
|
17
|
+
data_field_name = "#{attachment_name}_data".to_sym
|
18
|
+
child_properties = parent.abstract_model.properties.detect { |p| p.name == data_field_name }
|
19
|
+
next true unless child_properties
|
20
|
+
|
21
|
+
children_field = fields.detect { |f| f.name == data_field_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
|
22
|
+
children_field.hide unless field == children_field
|
23
|
+
children_field.filterable(false) unless field == children_field
|
24
|
+
|
25
|
+
field.children_fields([data_field_name])
|
26
|
+
true
|
27
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class ActionText < Text
|
8
|
+
# Register field type for the type loader
|
9
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
10
|
+
|
11
|
+
register_instance_option :version do
|
12
|
+
'1.1.1'
|
13
|
+
end
|
14
|
+
|
15
|
+
register_instance_option :css_location do
|
16
|
+
"https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.css"
|
17
|
+
end
|
18
|
+
|
19
|
+
register_instance_option :js_location do
|
20
|
+
"https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.js"
|
21
|
+
end
|
22
|
+
|
23
|
+
register_instance_option :partial do
|
24
|
+
:form_action_text
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -28,11 +28,28 @@ module RailsAdmin
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def parse_value(value)
|
31
|
-
value.present?
|
31
|
+
return unless value.present?
|
32
|
+
abstract_model.model.attribute_types[name.to_s].serialize(value)
|
32
33
|
end
|
33
34
|
|
34
35
|
def parse_input(params)
|
35
|
-
|
36
|
+
value = params[name]
|
37
|
+
return unless value
|
38
|
+
params[name] = parse_input_value(value)
|
39
|
+
end
|
40
|
+
|
41
|
+
def form_value
|
42
|
+
enum[super] || super
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def parse_input_value(value)
|
48
|
+
abstract_model.model.attribute_types[name.to_s].deserialize(value)
|
49
|
+
end
|
50
|
+
|
51
|
+
def type_cast_value(value)
|
52
|
+
abstract_model.model.column_types[name.to_s].type_cast_from_user(value)
|
36
53
|
end
|
37
54
|
end
|
38
55
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/file_upload'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class ActiveStorage < RailsAdmin::Config::Fields::Types::FileUpload
|
8
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
9
|
+
|
10
|
+
register_instance_option :thumb_method do
|
11
|
+
if ::ActiveStorage::VERSION::MAJOR >= 6
|
12
|
+
{resize_to_limit: [100, 100]}
|
13
|
+
else
|
14
|
+
{resize: '100x100>'}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
register_instance_option :delete_method do
|
19
|
+
"remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
|
20
|
+
end
|
21
|
+
|
22
|
+
register_instance_option :image? do
|
23
|
+
if value
|
24
|
+
value.filename.to_s.split('.').last =~ /jpg|jpeg|png|gif|svg/i
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def resource_url(thumb = false)
|
29
|
+
return nil unless value
|
30
|
+
if thumb && value.variable?
|
31
|
+
thumb = thumb_method if thumb == true
|
32
|
+
variant = value.variant(thumb)
|
33
|
+
Rails.application.routes.url_helpers.rails_blob_representation_path(
|
34
|
+
variant.blob.signed_id, variant.variation.key, variant.blob.filename, only_path: true
|
35
|
+
)
|
36
|
+
else
|
37
|
+
Rails.application.routes.url_helpers.rails_blob_path(value, only_path: true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def value
|
42
|
+
attachment = super
|
43
|
+
attachment if attachment && attachment.attached?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/action_text'
|
1
2
|
require 'rails_admin/config/fields/types/active_record_enum'
|
3
|
+
require 'rails_admin/config/fields/types/active_storage'
|
2
4
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
3
5
|
require 'rails_admin/config/fields/types/boolean'
|
4
6
|
require 'rails_admin/config/fields/types/bson_object_id'
|
@@ -10,7 +12,9 @@ require 'rails_admin/config/fields/types/enum'
|
|
10
12
|
require 'rails_admin/config/fields/types/file_upload'
|
11
13
|
require 'rails_admin/config/fields/types/paperclip'
|
12
14
|
require 'rails_admin/config/fields/types/carrierwave'
|
13
|
-
require 'rails_admin/config/fields/types/
|
15
|
+
require 'rails_admin/config/fields/types/multiple_file_upload'
|
16
|
+
require 'rails_admin/config/fields/types/multiple_active_storage'
|
17
|
+
require 'rails_admin/config/fields/types/multiple_carrierwave'
|
14
18
|
require 'rails_admin/config/fields/types/float'
|
15
19
|
require 'rails_admin/config/fields/types/has_and_belongs_to_many_association'
|
16
20
|
require 'rails_admin/config/fields/types/has_many_association'
|
@@ -22,9 +26,11 @@ require 'rails_admin/config/fields/types/string'
|
|
22
26
|
require 'rails_admin/config/fields/types/hidden'
|
23
27
|
require 'rails_admin/config/fields/types/text'
|
24
28
|
require 'rails_admin/config/fields/types/serialized'
|
29
|
+
require 'rails_admin/config/fields/types/shrine'
|
25
30
|
require 'rails_admin/config/fields/types/time'
|
26
31
|
require 'rails_admin/config/fields/types/timestamp'
|
27
32
|
require 'rails_admin/config/fields/types/color'
|
33
|
+
require 'rails_admin/config/fields/types/simple_mde'
|
28
34
|
require 'rails_admin/config/fields/types/ck_editor'
|
29
35
|
require 'rails_admin/config/fields/types/code_mirror'
|
30
36
|
require 'rails_admin/config/fields/types/wysihtml5'
|
@@ -31,6 +31,14 @@ module RailsAdmin
|
|
31
31
|
true
|
32
32
|
end
|
33
33
|
|
34
|
+
register_instance_option :eager_load? do
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
def associated_primary_key
|
39
|
+
@associated_primary_key ||= association.primary_key
|
40
|
+
end
|
41
|
+
|
34
42
|
def selected_id
|
35
43
|
bindings[:object].send(foreign_key)
|
36
44
|
end
|
@@ -8,14 +8,6 @@ module RailsAdmin
|
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
11
|
-
OBJECT_ID ||= begin
|
12
|
-
if defined?(Moped::BSON)
|
13
|
-
Moped::BSON::ObjectId
|
14
|
-
elsif defined?(BSON::ObjectId)
|
15
|
-
BSON::ObjectId
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
11
|
register_instance_option :label do
|
20
12
|
label = ((@label ||= {})[::I18n.locale] ||= abstract_model.model.human_attribute_name name)
|
21
13
|
label = 'Id' if label == ''
|
@@ -35,13 +27,7 @@ module RailsAdmin
|
|
35
27
|
end
|
36
28
|
|
37
29
|
def parse_value(value)
|
38
|
-
value.present? ?
|
39
|
-
rescue BSON::ObjectId::Invalid
|
40
|
-
nil
|
41
|
-
rescue => e
|
42
|
-
unless ['BSON::InvalidObjectId', 'Moped::Errors::InvalidObjectId'].include? e.class.to_s
|
43
|
-
raise e
|
44
|
-
end
|
30
|
+
value.present? ? abstract_model.parse_object_id(value) : nil
|
45
31
|
end
|
46
32
|
|
47
33
|
def parse_input(params)
|
@@ -1,13 +1,17 @@
|
|
1
|
-
require 'rails_admin/config/fields/
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
2
|
|
3
3
|
module RailsAdmin
|
4
4
|
module Config
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
|
-
class CKEditor <
|
7
|
+
class CKEditor < Text
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
10
|
|
11
|
+
register_instance_option :version do
|
12
|
+
'4.11.4'
|
13
|
+
end
|
14
|
+
|
11
15
|
# If you want to have a different toolbar configuration for CKEditor
|
12
16
|
# create your own custom config.js and override this configuration
|
13
17
|
register_instance_option :config_js do
|
@@ -21,16 +25,12 @@ module RailsAdmin
|
|
21
25
|
|
22
26
|
# Use this if you want to point to a cloud instances of the base CKeditor
|
23
27
|
register_instance_option :base_location do
|
24
|
-
"
|
28
|
+
"https://cdnjs.cloudflare.com/ajax/libs/ckeditor/#{version}/"
|
25
29
|
end
|
26
30
|
|
27
31
|
register_instance_option :partial do
|
28
32
|
:form_ck_editor
|
29
33
|
end
|
30
|
-
|
31
|
-
[:base_location, :config_js, :location].each do |key|
|
32
|
-
register_deprecated_instance_option :"ckeditor_#{key}", key
|
33
|
-
end
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|