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
@@ -6,7 +6,7 @@ require 'rails_admin/adapters/active_record/property'
|
|
6
6
|
module RailsAdmin
|
7
7
|
module Adapters
|
8
8
|
module ActiveRecord
|
9
|
-
DISABLED_COLUMN_TYPES = [:tsvector, :blob, :binary, :spatial, :hstore, :geometry]
|
9
|
+
DISABLED_COLUMN_TYPES = [:tsvector, :blob, :binary, :spatial, :hstore, :geometry].freeze
|
10
10
|
|
11
11
|
def new(params = {})
|
12
12
|
AbstractObject.new(model.new(params))
|
@@ -56,20 +56,37 @@ module RailsAdmin
|
|
56
56
|
def properties
|
57
57
|
columns = model.columns.reject do |c|
|
58
58
|
c.type.blank? ||
|
59
|
-
|
60
|
-
|
59
|
+
DISABLED_COLUMN_TYPES.include?(c.type.to_sym) ||
|
60
|
+
c.try(:array)
|
61
61
|
end
|
62
62
|
columns.collect do |property|
|
63
63
|
Property.new(property, model)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
def base_class
|
68
|
+
model.base_class
|
69
|
+
end
|
70
|
+
|
67
71
|
delegate :primary_key, :table_name, to: :model, prefix: false
|
68
72
|
|
69
73
|
def encoding
|
70
|
-
|
71
|
-
|
72
|
-
|
74
|
+
adapter =
|
75
|
+
if ::ActiveRecord::Base.respond_to?(:connection_db_config)
|
76
|
+
::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter]
|
77
|
+
else
|
78
|
+
::ActiveRecord::Base.connection_config[:adapter]
|
79
|
+
end
|
80
|
+
case adapter
|
81
|
+
when 'postgresql'
|
82
|
+
::ActiveRecord::Base.connection.select_one("SELECT ''::text AS str;").values.first.encoding
|
83
|
+
when 'mysql2'
|
84
|
+
::ActiveRecord::Base.connection.raw_connection.encoding
|
85
|
+
when 'oracle_enhanced'
|
86
|
+
::ActiveRecord::Base.connection.select_one("SELECT dummy FROM DUAL").values.first.encoding
|
87
|
+
else
|
88
|
+
::ActiveRecord::Base.connection.select_one("SELECT '' AS str;").values.first.encoding
|
89
|
+
end
|
73
90
|
end
|
74
91
|
|
75
92
|
def embedded?
|
@@ -94,12 +111,7 @@ module RailsAdmin
|
|
94
111
|
|
95
112
|
def add(field, value, operator)
|
96
113
|
field.searchable_columns.flatten.each do |column_infos|
|
97
|
-
|
98
|
-
value = value.map { |v| field.parse_value(v) }
|
99
|
-
else
|
100
|
-
value = field.parse_value(value)
|
101
|
-
end
|
102
|
-
statement, value1, value2 = StatementBuilder.new(column_infos[:column], column_infos[:type], value, operator).to_statement
|
114
|
+
statement, value1, value2 = StatementBuilder.new(column_infos[:column], column_infos[:type], value, operator, @scope.connection.adapter_name).to_statement
|
103
115
|
@statements << statement if statement.present?
|
104
116
|
@values << value1 unless value1.nil?
|
105
117
|
@values << value2 unless value2.nil?
|
@@ -110,18 +122,23 @@ module RailsAdmin
|
|
110
122
|
|
111
123
|
def build
|
112
124
|
scope = @scope.where(@statements.join(' OR '), *@values)
|
113
|
-
scope = scope.references(
|
125
|
+
scope = scope.references(*@tables.uniq) if @tables.any?
|
114
126
|
scope
|
115
127
|
end
|
116
128
|
end
|
117
129
|
|
118
130
|
def query_scope(scope, query, fields = config.list.fields.select(&:queryable?))
|
119
|
-
|
120
|
-
|
121
|
-
|
131
|
+
if config.list.search_by
|
132
|
+
scope.send(config.list.search_by, query)
|
133
|
+
else
|
134
|
+
wb = WhereBuilder.new(scope)
|
135
|
+
fields.each do |field|
|
136
|
+
value = parse_field_value(field, query)
|
137
|
+
wb.add(field, value, field.search_operator)
|
138
|
+
end
|
139
|
+
# OR all query statements
|
140
|
+
wb.build
|
122
141
|
end
|
123
|
-
# OR all query statements
|
124
|
-
wb.build
|
125
142
|
end
|
126
143
|
|
127
144
|
# filters example => {"string_field"=>{"0055"=>{"o"=>"like", "v"=>"test_value"}}, ...}
|
@@ -133,7 +150,7 @@ module RailsAdmin
|
|
133
150
|
field = fields.detect { |f| f.name.to_s == field_name }
|
134
151
|
value = parse_field_value(field, filter_dump[:v])
|
135
152
|
|
136
|
-
wb.add(field, value, (filter_dump[:o] ||
|
153
|
+
wb.add(field, value, (filter_dump[:o] || RailsAdmin::Config.default_search_operator))
|
137
154
|
# AND current filter statements to other filter statements
|
138
155
|
scope = wb.build
|
139
156
|
end
|
@@ -142,13 +159,31 @@ module RailsAdmin
|
|
142
159
|
end
|
143
160
|
|
144
161
|
def build_statement(column, type, value, operator)
|
145
|
-
StatementBuilder.new(column, type, value, operator).to_statement
|
162
|
+
StatementBuilder.new(column, type, value, operator, model.connection.adapter_name).to_statement
|
146
163
|
end
|
147
164
|
|
148
165
|
class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
|
166
|
+
def initialize(column, type, value, operator, adapter_name)
|
167
|
+
super column, type, value, operator
|
168
|
+
@adapter_name = adapter_name
|
169
|
+
end
|
170
|
+
|
149
171
|
protected
|
150
172
|
|
151
173
|
def unary_operators
|
174
|
+
case @type
|
175
|
+
when :boolean
|
176
|
+
boolean_unary_operators
|
177
|
+
when :integer, :decimal, :float
|
178
|
+
numeric_unary_operators
|
179
|
+
else
|
180
|
+
generic_unary_operators
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
private
|
185
|
+
|
186
|
+
def generic_unary_operators
|
152
187
|
{
|
153
188
|
'_blank' => ["(#{@column} IS NULL OR #{@column} = '')"],
|
154
189
|
'_present' => ["(#{@column} IS NOT NULL AND #{@column} != '')"],
|
@@ -159,7 +194,15 @@ module RailsAdmin
|
|
159
194
|
}
|
160
195
|
end
|
161
196
|
|
162
|
-
|
197
|
+
def boolean_unary_operators
|
198
|
+
generic_unary_operators.merge(
|
199
|
+
'_blank' => ["(#{@column} IS NULL)"],
|
200
|
+
'_empty' => ["(#{@column} IS NULL)"],
|
201
|
+
'_present' => ["(#{@column} IS NOT NULL)"],
|
202
|
+
'_not_empty' => ["(#{@column} IS NOT NULL)"],
|
203
|
+
)
|
204
|
+
end
|
205
|
+
alias_method :numeric_unary_operators, :boolean_unary_operators
|
163
206
|
|
164
207
|
def range_filter(min, max)
|
165
208
|
if min && max
|
@@ -178,6 +221,7 @@ module RailsAdmin
|
|
178
221
|
when :string, :text then build_statement_for_string_or_text
|
179
222
|
when :enum then build_statement_for_enum
|
180
223
|
when :belongs_to_association then build_statement_for_belongs_to_association
|
224
|
+
when :uuid then build_statement_for_uuid
|
181
225
|
end
|
182
226
|
end
|
183
227
|
|
@@ -197,22 +241,27 @@ module RailsAdmin
|
|
197
241
|
|
198
242
|
def build_statement_for_string_or_text
|
199
243
|
return if @value.blank?
|
244
|
+
|
245
|
+
return ["(#{@column} = ?)", @value] if ['is', '='].include?(@operator)
|
246
|
+
|
247
|
+
unless ['postgresql', 'postgis'].include? ar_adapter
|
248
|
+
@value = @value.mb_chars.downcase
|
249
|
+
end
|
250
|
+
|
200
251
|
@value = begin
|
201
252
|
case @operator
|
202
253
|
when 'default', 'like'
|
203
|
-
"%#{@value
|
254
|
+
"%#{@value}%"
|
204
255
|
when 'starts_with'
|
205
|
-
"#{@value
|
256
|
+
"#{@value}%"
|
206
257
|
when 'ends_with'
|
207
|
-
"%#{@value
|
208
|
-
when 'is', '='
|
209
|
-
"#{@value.downcase}"
|
258
|
+
"%#{@value}"
|
210
259
|
else
|
211
260
|
return
|
212
261
|
end
|
213
262
|
end
|
214
263
|
|
215
|
-
if
|
264
|
+
if ['postgresql', 'postgis'].include? ar_adapter
|
216
265
|
["(#{@column} ILIKE ?)", @value]
|
217
266
|
else
|
218
267
|
["(LOWER(#{@column}) LIKE ?)", @value]
|
@@ -224,8 +273,14 @@ module RailsAdmin
|
|
224
273
|
["(#{@column} IN (?))", Array.wrap(@value)]
|
225
274
|
end
|
226
275
|
|
276
|
+
def build_statement_for_uuid
|
277
|
+
if @value.to_s =~ /\A[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}\z/
|
278
|
+
column_for_value(@value)
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
227
282
|
def ar_adapter
|
228
|
-
|
283
|
+
@adapter_name.downcase
|
229
284
|
end
|
230
285
|
end
|
231
286
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rails_admin/adapters/active_record/abstract_object'
|
2
|
+
|
2
3
|
module RailsAdmin
|
3
4
|
module Adapters
|
4
5
|
module Mongoid
|
@@ -6,6 +7,7 @@ module RailsAdmin
|
|
6
7
|
def initialize(object)
|
7
8
|
super
|
8
9
|
object.associations.each do |name, association|
|
10
|
+
association = Association.new(association, object.class)
|
9
11
|
if [:has_many, :references_many].include? association.macro
|
10
12
|
instance_eval <<-RUBY, __FILE__, __LINE__ + 1
|
11
13
|
def #{name.to_s.singularize}_ids
|
@@ -27,9 +29,7 @@ RUBY
|
|
27
29
|
def #{name}_id=(item_id)
|
28
30
|
item = (#{association.klass}.find(item_id) rescue nil)
|
29
31
|
return unless item
|
30
|
-
unless persisted?
|
31
|
-
item.update_attribute('#{association.foreign_key}', id)
|
32
|
-
end
|
32
|
+
item.update_attribute('#{association.foreign_key}', id) unless persisted?
|
33
33
|
super item.id
|
34
34
|
end
|
35
35
|
RUBY
|
@@ -3,6 +3,7 @@ module RailsAdmin
|
|
3
3
|
module Mongoid
|
4
4
|
class Association
|
5
5
|
attr_reader :association, :model
|
6
|
+
|
6
7
|
def initialize(association, model)
|
7
8
|
@association = association
|
8
9
|
@model = model
|
@@ -27,7 +28,7 @@ module RailsAdmin
|
|
27
28
|
when :has_and_belongs_to_many, :references_and_referenced_in_many
|
28
29
|
:has_and_belongs_to_many
|
29
30
|
else
|
30
|
-
|
31
|
+
raise("Unknown association type: #{macro.inspect}")
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -40,11 +41,11 @@ module RailsAdmin
|
|
40
41
|
end
|
41
42
|
|
42
43
|
def primary_key
|
43
|
-
:_id
|
44
|
+
association.primary_key.to_sym rescue :_id
|
44
45
|
end
|
45
46
|
|
46
47
|
def foreign_key
|
47
|
-
return
|
48
|
+
return if embeds?
|
48
49
|
association.foreign_key.to_sym rescue nil
|
49
50
|
end
|
50
51
|
|
@@ -81,8 +82,8 @@ module RailsAdmin
|
|
81
82
|
|
82
83
|
def nested_options
|
83
84
|
nested = nested_attributes_options.try { |o| o[name] }
|
84
|
-
if !nested && [:embeds_one, :embeds_many].include?(macro.to_sym) && !
|
85
|
-
|
85
|
+
if !nested && [:embeds_one, :embeds_many].include?(macro.to_sym) && !cyclic?
|
86
|
+
raise <<-MSG.gsub(/^\s+/, '')
|
86
87
|
Embbeded association without accepts_nested_attributes_for can't be handled by RailsAdmin,
|
87
88
|
because embedded model doesn't have top-level access.
|
88
89
|
Please add `accepts_nested_attributes_for :#{association.name}' line to `#{model}' model.
|
@@ -95,13 +96,24 @@ module RailsAdmin
|
|
95
96
|
true
|
96
97
|
end
|
97
98
|
|
99
|
+
def macro
|
100
|
+
association.try(:macro) || association.class.name.split('::').last.underscore.to_sym
|
101
|
+
end
|
102
|
+
|
103
|
+
def embeds?
|
104
|
+
[:embeds_one, :embeds_many].include?(macro)
|
105
|
+
end
|
106
|
+
|
98
107
|
private
|
99
108
|
|
100
109
|
def inverse_of_field
|
101
110
|
association.respond_to?(:inverse_of_field) && association.inverse_of_field
|
102
111
|
end
|
103
112
|
|
104
|
-
|
113
|
+
def cyclic?
|
114
|
+
association.respond_to?(:cyclic?) ? association.cyclic? : association.cyclic
|
115
|
+
end
|
116
|
+
|
105
117
|
delegate :nested_attributes_options, to: :model, prefix: false
|
106
118
|
delegate :polymorphic_parents, to: RailsAdmin::AbstractModel
|
107
119
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'mongoid'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Adapters
|
5
|
+
module Mongoid
|
6
|
+
class Bson
|
7
|
+
OBJECT_ID = begin
|
8
|
+
if defined?(Moped::BSON)
|
9
|
+
Moped::BSON::ObjectId
|
10
|
+
elsif defined?(BSON::ObjectId)
|
11
|
+
BSON::ObjectId
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def parse_object_id(value)
|
17
|
+
OBJECT_ID.from_string(value)
|
18
|
+
rescue => e
|
19
|
+
raise e if %w(
|
20
|
+
Moped::Errors::InvalidObjectId
|
21
|
+
BSON::ObjectId::Invalid
|
22
|
+
BSON::InvalidObjectId
|
23
|
+
).exclude?(e.class.to_s)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -11,12 +11,14 @@ module RailsAdmin
|
|
11
11
|
def rails_admin(&block)
|
12
12
|
RailsAdmin.config(self, &block)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
|
+
alias_method :accepts_nested_attributes_for_without_rails_admin, :accepts_nested_attributes_for
|
16
|
+
alias_method :accepts_nested_attributes_for, :accepts_nested_attributes_for_with_rails_admin
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
def rails_admin_default_object_label_method
|
19
|
-
|
21
|
+
new_record? ? "new #{self.class}" : "#{self.class} ##{id}"
|
20
22
|
end
|
21
23
|
|
22
24
|
def safe_send(value)
|
@@ -2,7 +2,7 @@ module RailsAdmin
|
|
2
2
|
module Adapters
|
3
3
|
module Mongoid
|
4
4
|
class Property
|
5
|
-
STRING_TYPE_COLUMN_NAMES = [:name, :title, :subject]
|
5
|
+
STRING_TYPE_COLUMN_NAMES = [:name, :title, :subject].freeze
|
6
6
|
attr_reader :property, :model
|
7
7
|
|
8
8
|
def initialize(property, model)
|
@@ -70,8 +70,8 @@ module RailsAdmin
|
|
70
70
|
private
|
71
71
|
|
72
72
|
def object_field_type
|
73
|
-
|
74
|
-
|
73
|
+
association = Association.new model.relations.values.detect { |r| r.try(:foreign_key).try(:to_sym) == name }, model
|
74
|
+
if [:belongs_to, :referenced_in, :embedded_in].include?(association.macro)
|
75
75
|
:bson_object_id
|
76
76
|
else
|
77
77
|
:string
|
@@ -3,11 +3,16 @@ require 'rails_admin/config/sections/list'
|
|
3
3
|
require 'rails_admin/adapters/mongoid/abstract_object'
|
4
4
|
require 'rails_admin/adapters/mongoid/association'
|
5
5
|
require 'rails_admin/adapters/mongoid/property'
|
6
|
+
require 'rails_admin/adapters/mongoid/bson'
|
6
7
|
|
7
8
|
module RailsAdmin
|
8
9
|
module Adapters
|
9
10
|
module Mongoid
|
10
|
-
DISABLED_COLUMN_TYPES =
|
11
|
+
DISABLED_COLUMN_TYPES = %w(Range Moped::BSON::Binary BSON::Binary Mongoid::Geospatial::Point).freeze
|
12
|
+
|
13
|
+
def parse_object_id(value)
|
14
|
+
Bson.parse_object_id(value)
|
15
|
+
end
|
11
16
|
|
12
17
|
def new(params = {})
|
13
18
|
AbstractObject.new(model.new(params))
|
@@ -17,10 +22,10 @@ module RailsAdmin
|
|
17
22
|
AbstractObject.new(model.find(id))
|
18
23
|
rescue => e
|
19
24
|
raise e if %w(
|
20
|
-
BSON::InvalidObjectId
|
21
25
|
Mongoid::Errors::DocumentNotFound
|
22
26
|
Mongoid::Errors::InvalidFind
|
23
27
|
Moped::Errors::InvalidObjectId
|
28
|
+
BSON::InvalidObjectId
|
24
29
|
).exclude?(e.class.to_s)
|
25
30
|
end
|
26
31
|
|
@@ -37,13 +42,21 @@ module RailsAdmin
|
|
37
42
|
scope = scope.includes(*options[:include]) if options[:include]
|
38
43
|
scope = scope.limit(options[:limit]) if options[:limit]
|
39
44
|
scope = scope.any_in(_id: options[:bulk_ids]) if options[:bulk_ids]
|
40
|
-
scope = scope
|
41
|
-
scope = scope
|
45
|
+
scope = query_scope(scope, options[:query]) if options[:query]
|
46
|
+
scope = filter_scope(scope, options[:filters]) if options[:filters]
|
42
47
|
if options[:page] && options[:per]
|
43
48
|
scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per])
|
44
49
|
end
|
45
50
|
scope = sort_by(options, scope) if options[:sort]
|
46
51
|
scope
|
52
|
+
rescue NoMethodError => e
|
53
|
+
if e.message =~ /page/
|
54
|
+
e = e.exception <<-EOM.gsub(/^\s{12}/, '')
|
55
|
+
#{e.message}
|
56
|
+
If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
|
57
|
+
EOM
|
58
|
+
end
|
59
|
+
raise e
|
47
60
|
end
|
48
61
|
|
49
62
|
def count(options = {}, scope = nil)
|
@@ -69,16 +82,22 @@ module RailsAdmin
|
|
69
82
|
fields.collect { |_name, field| Property.new(field, model) }
|
70
83
|
end
|
71
84
|
|
85
|
+
def base_class
|
86
|
+
klass = model
|
87
|
+
klass = klass.superclass while klass.hereditary?
|
88
|
+
klass
|
89
|
+
end
|
90
|
+
|
72
91
|
def table_name
|
73
92
|
model.collection_name.to_s
|
74
93
|
end
|
75
94
|
|
76
95
|
def encoding
|
77
|
-
|
96
|
+
Encoding::UTF_8
|
78
97
|
end
|
79
98
|
|
80
99
|
def embedded?
|
81
|
-
|
100
|
+
associations.detect { |a| a.macro == :embedded_in }
|
82
101
|
end
|
83
102
|
|
84
103
|
def cyclic?
|
@@ -99,7 +118,6 @@ module RailsAdmin
|
|
99
118
|
conditions_per_collection = {}
|
100
119
|
field.searchable_columns.each do |column_infos|
|
101
120
|
collection_name, column_name = parse_collection_name(column_infos[:column])
|
102
|
-
value = parse_field_value(field, value)
|
103
121
|
statement = build_statement(column_name, column_infos[:type], value, operator)
|
104
122
|
next unless statement
|
105
123
|
conditions_per_collection[collection_name] ||= []
|
@@ -108,25 +126,25 @@ module RailsAdmin
|
|
108
126
|
conditions_per_collection
|
109
127
|
end
|
110
128
|
|
111
|
-
def
|
112
|
-
|
129
|
+
def query_scope(scope, query, fields = config.list.fields.select(&:queryable?))
|
130
|
+
if config.list.search_by
|
131
|
+
scope.send(config.list.search_by, query)
|
132
|
+
else
|
133
|
+
statements = []
|
113
134
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
135
|
+
fields.each do |field|
|
136
|
+
value = parse_field_value(field, query)
|
137
|
+
conditions_per_collection = make_field_conditions(field, value, field.search_operator)
|
138
|
+
statements.concat make_condition_for_current_collection(field, conditions_per_collection)
|
139
|
+
end
|
119
140
|
|
120
|
-
|
121
|
-
{'$or' => statements}
|
122
|
-
else
|
123
|
-
{}
|
141
|
+
scope.where(statements.any? ? {'$or' => statements} : {})
|
124
142
|
end
|
125
143
|
end
|
126
144
|
|
127
145
|
# filters example => {"string_field"=>{"0055"=>{"o"=>"like", "v"=>"test_value"}}, ...}
|
128
146
|
# "0055" is the filter index, no use here. o is the operator, v the value
|
129
|
-
def
|
147
|
+
def filter_scope(scope, filters, fields = config.list.fields.select(&:filterable?))
|
130
148
|
statements = []
|
131
149
|
|
132
150
|
filters.each_pair do |field_name, filters_dump|
|
@@ -144,16 +162,12 @@ module RailsAdmin
|
|
144
162
|
end
|
145
163
|
end
|
146
164
|
|
147
|
-
|
148
|
-
{'$and' => statements}
|
149
|
-
else
|
150
|
-
{}
|
151
|
-
end
|
165
|
+
scope.where(statements.any? ? {'$and' => statements} : {})
|
152
166
|
end
|
153
167
|
|
154
168
|
def parse_collection_name(column)
|
155
169
|
collection_name, column_name = column.split('.')
|
156
|
-
if
|
170
|
+
if associations.detect { |a| a.name == collection_name.to_sym }.try(:embeds?)
|
157
171
|
[table_name, column]
|
158
172
|
else
|
159
173
|
[collection_name, column_name]
|
@@ -193,7 +207,7 @@ module RailsAdmin
|
|
193
207
|
when String
|
194
208
|
field_name, collection_name = options[:sort].split('.').reverse
|
195
209
|
if collection_name && collection_name != table_name
|
196
|
-
|
210
|
+
raise('sorting by associated model column is not supported in Non-Relational databases')
|
197
211
|
end
|
198
212
|
when Symbol
|
199
213
|
field_name = options[:sort].to_s
|
@@ -8,7 +8,7 @@ module Sass
|
|
8
8
|
image_url(source, Sass::Script::Bool.new(true))
|
9
9
|
else
|
10
10
|
# Revert to the old compass-agnostic path determination
|
11
|
-
asset_sans_quotes = source.value.
|
11
|
+
asset_sans_quotes = source.value.delete('"')
|
12
12
|
Sass::Script::String.new("/images/#{asset_sans_quotes}", :string)
|
13
13
|
end
|
14
14
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'sass'
|
2
|
-
|
3
1
|
module Sass
|
4
2
|
module Script
|
5
3
|
module Functions
|
@@ -12,7 +10,7 @@ module Sass
|
|
12
10
|
alphastr = alpha.to_s(16).rjust(2, '0')
|
13
11
|
Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase)
|
14
12
|
end
|
15
|
-
declare :ie_hex_str, [:color]
|
13
|
+
declare :ie_hex_str, [:color] if respond_to?(:declare)
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -11,18 +11,20 @@ module RailsAdmin
|
|
11
11
|
require 'rails_admin/bootstrap-sass/sass_functions'
|
12
12
|
end
|
13
13
|
|
14
|
-
require '
|
14
|
+
require 'sassc-rails' if rails?
|
15
15
|
|
16
16
|
unless rails? || compass?
|
17
|
-
|
17
|
+
raise(Bootstrap::FrameworkNotFound.new('bootstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded'))
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
if defined?(::Sass) && ::Sass.respond_to?(:load_paths)
|
21
|
+
stylesheets = File.expand_path(File.join('..', 'vendor', 'assets', 'stylesheets'))
|
22
|
+
fonts = File.expand_path(File.join('..', 'vendor', 'assets', 'fonts'))
|
23
|
+
::Sass.load_paths << stylesheets
|
24
|
+
::Sass.load_paths << fonts
|
25
|
+
end
|
22
26
|
end
|
23
27
|
|
24
|
-
private
|
25
|
-
|
26
28
|
def self.asset_pipeline?
|
27
29
|
defined?(::Sprockets)
|
28
30
|
end
|
@@ -18,6 +18,22 @@ module RailsAdmin
|
|
18
18
|
[]
|
19
19
|
end
|
20
20
|
|
21
|
+
register_instance_option :show_in_navigation do
|
22
|
+
root?
|
23
|
+
end
|
24
|
+
|
25
|
+
register_instance_option :show_in_sidebar do
|
26
|
+
!show_in_navigation
|
27
|
+
end
|
28
|
+
|
29
|
+
register_instance_option :show_in_menu do
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
register_instance_option :sidebar_label do
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
|
21
37
|
# http://getbootstrap.com/2.3.2/base-css.html#icons
|
22
38
|
register_instance_option :link_icon do
|
23
39
|
'icon-question-sign'
|
@@ -83,7 +99,7 @@ module RailsAdmin
|
|
83
99
|
key.to_sym
|
84
100
|
end
|
85
101
|
|
86
|
-
# For
|
102
|
+
# For CanCanCan and the like
|
87
103
|
register_instance_option :authorization_key do
|
88
104
|
key.to_sym
|
89
105
|
end
|
@@ -115,12 +131,11 @@ module RailsAdmin
|
|
115
131
|
|
116
132
|
# Breadcrumb parent
|
117
133
|
register_instance_option :breadcrumb_parent do
|
118
|
-
|
119
|
-
when root?
|
134
|
+
if root?
|
120
135
|
[:dashboard]
|
121
|
-
|
136
|
+
elsif collection?
|
122
137
|
[:index, bindings[:abstract_model]]
|
123
|
-
|
138
|
+
elsif member?
|
124
139
|
[:show, bindings[:abstract_model], bindings[:object]]
|
125
140
|
end
|
126
141
|
end
|
@@ -42,14 +42,12 @@ module RailsAdmin
|
|
42
42
|
end
|
43
43
|
|
44
44
|
if destroyed.nil?
|
45
|
-
|
46
|
-
render text: msg, status: :not_found
|
45
|
+
flash[:error] = t('admin.flash.error', name: pluralize(0, @model_config.label), action: t('admin.actions.delete.done'))
|
47
46
|
else
|
48
47
|
flash[:success] = t('admin.flash.successful', name: pluralize(destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless destroyed.empty?
|
49
48
|
flash[:error] = t('admin.flash.error', name: pluralize(not_destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless not_destroyed.empty?
|
50
|
-
redirect_to back_or_index
|
51
49
|
end
|
52
|
-
|
50
|
+
redirect_to back_or_index
|
53
51
|
end
|
54
52
|
end
|
55
53
|
end
|
@@ -12,13 +12,17 @@ module RailsAdmin
|
|
12
12
|
nil
|
13
13
|
end
|
14
14
|
|
15
|
+
register_instance_option :auditing_versions_limit do
|
16
|
+
100
|
17
|
+
end
|
18
|
+
|
15
19
|
register_instance_option :controller do
|
16
20
|
proc do
|
17
|
-
@history = @auditing_adapter && @auditing_adapter.latest || []
|
21
|
+
@history = @auditing_adapter && @auditing_adapter.latest(@action.auditing_versions_limit) || []
|
18
22
|
if @action.statistics?
|
19
23
|
@abstract_models = RailsAdmin::Config.visible_models(controller: self).collect(&:abstract_model)
|
20
24
|
|
21
|
-
@
|
25
|
+
@most_recent_created = {}
|
22
26
|
@count = {}
|
23
27
|
@max = 0
|
24
28
|
@abstract_models.each do |t|
|
@@ -26,11 +30,11 @@ module RailsAdmin
|
|
26
30
|
current_count = t.count({}, scope)
|
27
31
|
@max = current_count > @max ? current_count : @max
|
28
32
|
@count[t.model.name] = current_count
|
29
|
-
next unless t.properties.detect { |c| c.name == :
|
30
|
-
@
|
33
|
+
next unless t.properties.detect { |c| c.name == :created_at }
|
34
|
+
@most_recent_created[t.model.name] = t.model.last.try(:created_at)
|
31
35
|
end
|
32
36
|
end
|
33
|
-
render @action.template_name, status:
|
37
|
+
render @action.template_name, status: @status_code || :ok
|
34
38
|
end
|
35
39
|
end
|
36
40
|
|