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
@@ -11,9 +11,13 @@ module RailsAdmin
|
|
11
11
|
end
|
12
12
|
|
13
13
|
class ApplicationController < Config.parent_controller.constantize
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
include RailsAdmin::Extensions::ControllerExtension
|
15
|
+
|
16
|
+
protect_from_forgery(Config.forgery_protection_settings)
|
17
|
+
|
18
|
+
before_action :_authenticate!
|
19
|
+
before_action :_authorize!
|
20
|
+
before_action :_audit!
|
17
21
|
|
18
22
|
helper_method :_current_user, :_get_plugin_name
|
19
23
|
|
@@ -21,13 +25,13 @@ module RailsAdmin
|
|
21
25
|
|
22
26
|
def get_model
|
23
27
|
@model_name = to_model_name(params[:model_name])
|
24
|
-
|
25
|
-
|
28
|
+
raise(RailsAdmin::ModelNotFound) unless (@abstract_model = RailsAdmin::AbstractModel.new(@model_name))
|
29
|
+
raise(RailsAdmin::ModelNotFound) if (@model_config = @abstract_model.config).excluded?
|
26
30
|
@properties = @abstract_model.properties
|
27
31
|
end
|
28
32
|
|
29
33
|
def get_object
|
30
|
-
|
34
|
+
raise(RailsAdmin::ObjectNotFound) unless (@object = @abstract_model.get(params[:id]))
|
31
35
|
end
|
32
36
|
|
33
37
|
def to_model_name(param)
|
@@ -56,19 +60,21 @@ module RailsAdmin
|
|
56
60
|
instance_eval(&RailsAdmin::Config.audit_with)
|
57
61
|
end
|
58
62
|
|
59
|
-
def
|
60
|
-
|
63
|
+
def rails_admin_controller?
|
64
|
+
true
|
61
65
|
end
|
62
66
|
|
63
67
|
rescue_from RailsAdmin::ObjectNotFound do
|
64
68
|
flash[:error] = I18n.t('admin.flash.object_not_found', model: @model_name, id: params[:id])
|
65
69
|
params[:action] = 'index'
|
70
|
+
@status_code = :not_found
|
66
71
|
index
|
67
72
|
end
|
68
73
|
|
69
74
|
rescue_from RailsAdmin::ModelNotFound do
|
70
75
|
flash[:error] = I18n.t('admin.flash.model_not_found', model: @model_name)
|
71
76
|
params[:action] = 'dashboard'
|
77
|
+
@status_code = :not_found
|
72
78
|
dashboard
|
73
79
|
end
|
74
80
|
end
|
@@ -6,9 +6,9 @@ module RailsAdmin
|
|
6
6
|
|
7
7
|
layout :get_layout
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
before_action :get_model, except: RailsAdmin::Config::Actions.all(:root).collect(&:action_name)
|
10
|
+
before_action :get_object, only: RailsAdmin::Config::Actions.all(:member).collect(&:action_name)
|
11
|
+
before_action :check_for_cancel
|
12
12
|
|
13
13
|
RailsAdmin::Config::Actions.all.each do |action|
|
14
14
|
class_eval <<-EOS, __FILE__, __LINE__ + 1
|
@@ -75,7 +75,7 @@ module RailsAdmin
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def redirect_to_on_success
|
78
|
-
notice = t('admin.flash.successful', name: @model_config.label, action: t("admin.actions.#{@action.key}.done"))
|
78
|
+
notice = I18n.t('admin.flash.successful', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done"))
|
79
79
|
if params[:_add_another]
|
80
80
|
redirect_to new_path(return_to: params[:return_to]), flash: {success: notice}
|
81
81
|
elsif params[:_add_edit]
|
@@ -93,7 +93,7 @@ module RailsAdmin
|
|
93
93
|
return unless target_params.present?
|
94
94
|
fields = visible_fields(action, model_config)
|
95
95
|
allowed_methods = fields.collect(&:allowed_methods).flatten.uniq.collect(&:to_s) << 'id' << '_destroy'
|
96
|
-
fields.each { |field|
|
96
|
+
fields.each { |field| field.parse_input(target_params) }
|
97
97
|
target_params.slice!(*allowed_methods)
|
98
98
|
target_params.permit! if target_params.respond_to?(:permit!)
|
99
99
|
fields.select(&:nested_form).each do |association|
|
@@ -105,22 +105,22 @@ module RailsAdmin
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def handle_save_error(whereto = :new)
|
108
|
-
flash.now[:error] = t('admin.flash.error', name: @model_config.label, action: t("admin.actions.#{@action.key}.done").html_safe).html_safe
|
108
|
+
flash.now[:error] = I18n.t('admin.flash.error', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done").html_safe).html_safe
|
109
109
|
flash.now[:error] += %(<br>- #{@object.errors.full_messages.join('<br>- ')}).html_safe
|
110
110
|
|
111
111
|
respond_to do |format|
|
112
112
|
format.html { render whereto, status: :not_acceptable }
|
113
|
-
format.js { render whereto, layout: false, status: :not_acceptable
|
113
|
+
format.js { render whereto, layout: false, status: :not_acceptable }
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
117
|
def check_for_cancel
|
118
118
|
return unless params[:_continue] || (params[:bulk_action] && !params[:bulk_ids])
|
119
|
-
redirect_to(back_or_index, notice: t('admin.flash.noaction'))
|
119
|
+
redirect_to(back_or_index, notice: I18n.t('admin.flash.noaction'))
|
120
120
|
end
|
121
121
|
|
122
122
|
def get_collection(model_config, scope, pagination)
|
123
|
-
associations = model_config.list.fields.select { |f| f.
|
123
|
+
associations = model_config.list.fields.select { |f| f.try(:eager_load?) }.collect { |f| f.association.name }
|
124
124
|
options = {}
|
125
125
|
options = options.merge(page: (params[Kaminari.config.param_name] || 1).to_i, per: (params[:per] || model_config.list.items_per_page)) if pagination
|
126
126
|
options = options.merge(include: associations) unless associations.blank?
|
@@ -35,9 +35,9 @@ module RailsAdmin
|
|
35
35
|
return nil unless _current_user.respond_to?(:email)
|
36
36
|
return nil unless abstract_model = RailsAdmin.config(_current_user.class).abstract_model
|
37
37
|
return nil unless (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
|
38
|
-
link_to url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
|
38
|
+
link_to rails_admin.url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
|
39
39
|
html = []
|
40
|
-
html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if _current_user.email.present?
|
40
|
+
html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if RailsAdmin::Config.show_gravatar && _current_user.email.present?
|
41
41
|
html << content_tag(:span, _current_user.email)
|
42
42
|
html.join.html_safe
|
43
43
|
end
|
@@ -47,8 +47,8 @@ module RailsAdmin
|
|
47
47
|
if defined?(Devise)
|
48
48
|
scope = Devise::Mapping.find_scope!(_current_user)
|
49
49
|
main_app.send("destroy_#{scope}_session_path") rescue false
|
50
|
-
|
51
|
-
main_app.logout_path
|
50
|
+
elsif main_app.respond_to?(:logout_path)
|
51
|
+
main_app.logout_path
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -84,9 +84,24 @@ module RailsAdmin
|
|
84
84
|
end.join.html_safe
|
85
85
|
end
|
86
86
|
|
87
|
+
def root_navigation
|
88
|
+
actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
|
89
|
+
li_stack = nodes.map do |node|
|
90
|
+
url = rails_admin.url_for(action: node.action_name, controller: "rails_admin/main")
|
91
|
+
nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
|
92
|
+
content_tag :li do
|
93
|
+
link_to nav_icon + " " + wording_for(:menu, node), url, class: "pjax"
|
94
|
+
end
|
95
|
+
end.join.html_safe
|
96
|
+
label ||= t('admin.misc.root_navigation')
|
97
|
+
|
98
|
+
%(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
|
99
|
+
end.join.html_safe
|
100
|
+
end
|
101
|
+
|
87
102
|
def static_navigation
|
88
103
|
li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
|
89
|
-
content_tag(:li, link_to(title.to_s, url, target: '_blank'))
|
104
|
+
content_tag(:li, link_to(title.to_s, url, target: '_blank', rel: 'noopener noreferrer'))
|
90
105
|
end.join
|
91
106
|
|
92
107
|
label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
|
@@ -97,7 +112,7 @@ module RailsAdmin
|
|
97
112
|
def navigation(nodes_stack, nodes, level = 0)
|
98
113
|
nodes.collect do |node|
|
99
114
|
model_param = node.abstract_model.to_param
|
100
|
-
url = url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
|
115
|
+
url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
|
101
116
|
level_class = " nav-level-#{level}" if level > 0
|
102
117
|
nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
|
103
118
|
li = content_tag :li, data: {model: model_param} do
|
@@ -110,7 +125,7 @@ module RailsAdmin
|
|
110
125
|
def breadcrumb(action = @action, _acc = [])
|
111
126
|
begin
|
112
127
|
(parent_actions ||= []) << action
|
113
|
-
end while action.breadcrumb_parent && (action = action(*action.breadcrumb_parent)) # rubocop:disable Loop
|
128
|
+
end while action.breadcrumb_parent && (action = action(*action.breadcrumb_parent)) # rubocop:disable Lint/Loop
|
114
129
|
|
115
130
|
content_tag(:ol, class: 'breadcrumb') do
|
116
131
|
parent_actions.collect do |a|
|
@@ -120,7 +135,7 @@ module RailsAdmin
|
|
120
135
|
crumb = begin
|
121
136
|
if !current_action?(a, am, o)
|
122
137
|
if a.http_methods.include?(:get)
|
123
|
-
link_to url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
|
138
|
+
link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
|
124
139
|
wording_for(:breadcrumb, a, am, o)
|
125
140
|
end
|
126
141
|
else
|
@@ -138,12 +153,12 @@ module RailsAdmin
|
|
138
153
|
|
139
154
|
# parent => :root, :collection, :member
|
140
155
|
def menu_for(parent, abstract_model = nil, object = nil, only_icon = false) # perf matters here (no action view trickery)
|
141
|
-
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) }
|
156
|
+
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
|
142
157
|
actions.collect do |action|
|
143
158
|
wording = wording_for(:menu, action)
|
144
159
|
%(
|
145
160
|
<li title="#{wording if only_icon}" rel="#{'tooltip' if only_icon}" class="icon #{action.key}_#{parent}_link #{'active' if current_action?(action)}">
|
146
|
-
<a class="#{action.pjax? ? 'pjax' : ''}" href="#{url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))}">
|
161
|
+
<a class="#{action.pjax? ? 'pjax' : ''}" href="#{rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))}">
|
147
162
|
<i class="#{action.link_icon}"></i>
|
148
163
|
<span#{only_icon ? " style='display:none'" : ''}>#{wording}</span>
|
149
164
|
</a>
|
@@ -160,7 +175,7 @@ module RailsAdmin
|
|
160
175
|
content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
|
161
176
|
actions.collect do |action|
|
162
177
|
content_tag :li do
|
163
|
-
link_to wording_for(:bulk_link, action), '#',
|
178
|
+
link_to wording_for(:bulk_link, action, abstract_model), '#', class: 'bulk-link', data: {action: action.action_name}
|
164
179
|
end
|
165
180
|
end.join.html_safe
|
166
181
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'nested_form/builder_mixin'
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
class FormBuilder < ::ActionView::Helpers::FormBuilder
|
3
5
|
include ::NestedForm::BuilderMixin
|
@@ -20,10 +22,17 @@ module RailsAdmin
|
|
20
22
|
end
|
21
23
|
|
22
24
|
def fieldset_for(fieldset, nested_in)
|
23
|
-
|
25
|
+
fields = fieldset.with(
|
26
|
+
form: self,
|
27
|
+
object: @object,
|
28
|
+
view: @template,
|
29
|
+
controller: @template.controller,
|
30
|
+
).visible_fields
|
31
|
+
return if fields.empty?
|
32
|
+
|
24
33
|
@template.content_tag :fieldset do
|
25
34
|
contents = []
|
26
|
-
contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style:
|
35
|
+
contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
|
27
36
|
contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
|
28
37
|
contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
|
29
38
|
contents.join.html_safe
|
@@ -31,16 +40,15 @@ module RailsAdmin
|
|
31
40
|
end
|
32
41
|
|
33
42
|
def field_wrapper_for(field, nested_in)
|
34
|
-
if
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
43
|
+
# do not show nested field if the target is the origin
|
44
|
+
return if nested_field_association?(field, nested_in)
|
45
|
+
@template.content_tag(:div, class: "form-group control-group #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
|
46
|
+
if field.label
|
47
|
+
label(field.method_name, capitalize_first_letter(field.label), class: 'col-sm-2 control-label') +
|
48
|
+
(field.nested_form ? field_for(field) : input_for(field))
|
49
|
+
else
|
50
|
+
field.nested_form ? field_for(field) : input_for(field)
|
41
51
|
end
|
42
|
-
else
|
43
|
-
field.nested_form ? field_for(field) : input_for(field)
|
44
52
|
end
|
45
53
|
end
|
46
54
|
|
@@ -131,7 +139,7 @@ module RailsAdmin
|
|
131
139
|
|
132
140
|
def nested_field_association?(field, nested_in)
|
133
141
|
field.inverse_of.presence && nested_in.presence && field.inverse_of == nested_in.name &&
|
134
|
-
(@template.instance_variable_get(:@model_config).abstract_model == field.
|
142
|
+
(@template.instance_variable_get(:@model_config).abstract_model == field.abstract_model ||
|
135
143
|
field.name == nested_in.inverse_of)
|
136
144
|
end
|
137
145
|
end
|
@@ -43,7 +43,7 @@ module RailsAdmin
|
|
43
43
|
def ordered_filters
|
44
44
|
return @ordered_filters if @ordered_filters.present?
|
45
45
|
@index = 0
|
46
|
-
@ordered_filters = (params[:f] || @model_config.list.filters).inject({}) do |memo, filter|
|
46
|
+
@ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).inject({}) do |memo, filter|
|
47
47
|
field_name = filter.is_a?(Array) ? filter.first : filter
|
48
48
|
(filter.is_a?(Array) ? filter.last : {(@index += 1) => {'v' => ''}}).each do |index, filter_hash|
|
49
49
|
if filter_hash['disabled'].blank?
|
@@ -56,14 +56,14 @@ module RailsAdmin
|
|
56
56
|
end.to_a.sort_by(&:first)
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
60
|
-
@
|
59
|
+
def ordered_filter_options
|
60
|
+
@ordered_filter_options ||= ordered_filters.map do |duplet|
|
61
61
|
options = {index: duplet[0]}
|
62
62
|
filter_for_field = duplet[1]
|
63
63
|
filter_name = filter_for_field.keys.first
|
64
64
|
filter_hash = filter_for_field.values.first
|
65
65
|
unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
|
66
|
-
|
66
|
+
raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
|
67
67
|
end
|
68
68
|
case field.type
|
69
69
|
when :enum
|
@@ -76,9 +76,10 @@ module RailsAdmin
|
|
76
76
|
options[:type] = field.type
|
77
77
|
options[:value] = filter_hash['v']
|
78
78
|
options[:label] = field.label
|
79
|
-
options[:operator] = filter_hash['o']
|
80
|
-
|
81
|
-
|
79
|
+
options[:operator] = filter_hash['o'] || field.default_filter_operator
|
80
|
+
options[:required] = field.required
|
81
|
+
options
|
82
|
+
end if ordered_filters
|
82
83
|
end
|
83
84
|
end
|
84
85
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,7 @@
|
|
1
|
+
%meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}
|
2
|
+
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
3
|
+
%meta{content: "width=device-width, initial-scale=1", name: "viewport; charset=utf-8"}
|
4
|
+
%meta{content: "NONE,NOARCHIVE", name: "robots"}
|
5
|
+
= csrf_meta_tag
|
6
|
+
= stylesheet_link_tag "rails_admin/rails_admin.css", media: :all
|
7
|
+
= javascript_include_tag "rails_admin/rails_admin.js"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
%ul.nav.navbar-nav.navbar-right.root_links
|
2
|
-
- actions(:root).each do |action|
|
3
|
-
%li{class: "#{action.action_name}_root_link"}= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: "pjax"
|
2
|
+
- actions(:root).select(&:show_in_navigation).each do |action|
|
3
|
+
%li{class: "#{action.action_name}_root_link"}= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: action.pjax? ? "pjax" : ""
|
4
4
|
- if main_app_root_path = (main_app.root_path rescue false)
|
5
5
|
%li= link_to t('admin.home.name'), main_app_root_path
|
6
6
|
- if _current_user
|
@@ -1,16 +1,9 @@
|
|
1
1
|
!!! 5
|
2
2
|
%html{lang: I18n.locale}
|
3
3
|
%head
|
4
|
-
|
5
|
-
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
6
|
-
%meta{content: "NONE,NOARCHIVE", name: "robots"}
|
7
|
-
= csrf_meta_tag
|
8
|
-
= stylesheet_link_tag "rails_admin/rails_admin.css", media: :all
|
9
|
-
= javascript_include_tag "rails_admin/rails_admin.js"
|
10
|
-
-# Initialize JS simple i18n
|
11
|
-
:javascript
|
12
|
-
RailsAdmin.I18n.init('#{I18n.locale}', JSON.parse("#{j I18n.t("admin.js").to_json}"))
|
4
|
+
= render "layouts/rails_admin/head"
|
13
5
|
%body.rails_admin
|
6
|
+
#admin-js{:'data-i18n-options' => I18n.t("admin.js").to_json}
|
14
7
|
#loading.label.label-warning{style: 'display:none; position:fixed; right:20px; bottom:20px; z-index:100000'}= t('admin.loading')
|
15
8
|
%nav.navbar.navbar-default.navbar-fixed-top
|
16
9
|
= render "layouts/rails_admin/navigation"
|
@@ -19,4 +12,5 @@
|
|
19
12
|
.col-sm-3.col-md-2.sidebar-nav
|
20
13
|
= render "layouts/rails_admin/sidebar_navigation"
|
21
14
|
.col-sm-9.col-sm-offset-3.col-md-10.col-md-offset-2
|
22
|
-
.content{:'data-pjax-container' => true}
|
15
|
+
.content{:'data-pjax-container' => true}
|
16
|
+
= render template: 'layouts/rails_admin/pjax'
|
@@ -1,9 +1,5 @@
|
|
1
|
-
:javascript
|
2
|
-
$('.nav.nav-pills li.active').removeClass('active');
|
3
|
-
$('.nav.nav-pills li[data-model="#{@abstract_model.to_param}"]').addClass('active');
|
4
|
-
|
5
1
|
%title= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}"
|
6
|
-
.page-header
|
2
|
+
.page-header{data: {model: @abstract_model.to_param}}
|
7
3
|
%h1= @page_name
|
8
4
|
- flash && flash.each do |key, value|
|
9
5
|
.alert.alert-dismissible{class: flash_alert_class(key)}
|
@@ -8,12 +8,17 @@
|
|
8
8
|
- else
|
9
9
|
= wording
|
10
10
|
%ul
|
11
|
-
- @abstract_model.each_associated_children(object) do |association,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
=
|
18
|
-
|
19
|
-
=
|
11
|
+
- @abstract_model.each_associated_children(object) do |association, children|
|
12
|
+
- humanized_association = @abstract_model.model.human_attribute_name association.name
|
13
|
+
- limit = children.count > 12 ? 10 : children.count
|
14
|
+
- children.first(limit).each do |child|
|
15
|
+
= content_tag :li, class: dom_class(child) do
|
16
|
+
- child_config = RailsAdmin.config(child)
|
17
|
+
= humanized_association.singularize
|
18
|
+
- wording = child.send(child_config.object_label_method)
|
19
|
+
- if child.id && (show_action = action(:show, child_config.abstract_model, child))
|
20
|
+
= link_to(wording, url_for(action: show_action.action_name, model_name: child_config.abstract_model.to_param, id: child.id), class: 'pjax')
|
21
|
+
- else
|
22
|
+
= wording
|
23
|
+
- if children.count > limit
|
24
|
+
%li= t('admin.misc.more', count: children.count - limit, models_name: humanized_association)
|
@@ -1 +1 @@
|
|
1
|
-
= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({value: field.form_value, style: "background-color: #{field.color}", data: {color: true}})
|
1
|
+
= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({class: 'form-control', value: field.form_value, style: "background-color: #{field.color}", data: {color: true}})
|
@@ -7,12 +7,13 @@
|
|
7
7
|
sortable: false,
|
8
8
|
cacheAll: true,
|
9
9
|
regional: {
|
10
|
+
add: t("admin.misc.add_new"),
|
10
11
|
chooseAll: t("admin.misc.chose_all"),
|
11
|
-
chosen: t("admin.misc.chosen", name: config.label_plural),
|
12
12
|
clearAll: t("admin.misc.clear_all"),
|
13
|
+
down: t("admin.misc.down"),
|
14
|
+
remove: t("admin.misc.remove"),
|
13
15
|
search: t("admin.misc.search"),
|
14
|
-
up: t("admin.misc.up")
|
15
|
-
down: t("admin.misc.down")
|
16
|
+
up: t("admin.misc.up")
|
16
17
|
}
|
17
18
|
}
|
18
19
|
= form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true})
|
@@ -1,4 +1,7 @@
|
|
1
|
-
- file =
|
1
|
+
- file = field.value
|
2
|
+
|
3
|
+
- if field.cache_method
|
4
|
+
= form.hidden_field(field.cache_method, value: field.cache_value)
|
2
5
|
|
3
6
|
.toggle{style: ('display:none;' if file && field.delete_method && form.object.send(field.delete_method) == '1')}
|
4
7
|
- if value = field.pretty_value
|
@@ -7,11 +10,8 @@
|
|
7
10
|
= form.file_field(field.name, field.html_attributes.reverse_merge({ data: { fileupload: true }}))
|
8
11
|
|
9
12
|
- if field.optional? && field.errors.blank? && file && field.delete_method
|
10
|
-
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button'
|
13
|
+
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button'}
|
11
14
|
%i.icon-white.icon-trash
|
12
15
|
= I18n.t('admin.actions.delete.menu').capitalize + " #{field.label.downcase}"
|
13
16
|
|
14
17
|
= form.check_box(field.delete_method, style: 'display:none;')
|
15
|
-
|
16
|
-
- if field.cache_method
|
17
|
-
= form.hidden_field(field.cache_method)
|
@@ -29,12 +29,13 @@
|
|
29
29
|
removable: !!field.removable,
|
30
30
|
cacheAll: !!field.associated_collection_cache_all,
|
31
31
|
regional: {
|
32
|
-
|
33
|
-
|
34
|
-
clearAll: t(
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
add: t('admin.misc.add_new'),
|
33
|
+
chooseAll: t('admin.misc.chose_all'),
|
34
|
+
clearAll: t('admin.misc.clear_all'),
|
35
|
+
down: t('admin.misc.down'),
|
36
|
+
remove: t('admin.misc.remove'),
|
37
|
+
search: t('admin.misc.search'),
|
38
|
+
up: t('admin.misc.up')
|
38
39
|
}
|
39
40
|
}
|
40
41
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
}
|
27
27
|
|
28
28
|
- selected_id = (hdv = field.form_default_value).nil? ? selected_id : hdv
|
29
|
-
= form.select field.method_name, collection, { selected: selected_id, include_blank: true }, field.html_attributes.reverse_merge({ data: { filteringselect: true, options: js_data.to_json }, placeholder: t('admin.misc.search') })
|
29
|
+
= form.select field.method_name, collection, { selected: selected_id, include_blank: true }, field.html_attributes.reverse_merge({ data: { filteringselect: true, options: js_data.to_json }, placeholder: t('admin.misc.search'), style: "float: left" })
|
30
30
|
|
31
31
|
- if authorized?(:new, config.abstract_model) && field.inline_add
|
32
32
|
- path_hash = { model_name: config.abstract_model.to_param, modal: true }
|
@@ -0,0 +1,16 @@
|
|
1
|
+
- field.attachments.each_with_index do |attachment, i|
|
2
|
+
.toggle{class: field.reorderable? ? 'sortables' : ''}
|
3
|
+
= attachment.pretty_value
|
4
|
+
- if field.delete_method || field.keep_method
|
5
|
+
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button'}
|
6
|
+
%i.icon-white.icon-trash
|
7
|
+
= I18n.t('admin.actions.delete.menu').capitalize + " #{field.label.downcase} ##{i + 1}"
|
8
|
+
- if field.keep_method
|
9
|
+
= form.check_box(field.keep_method, {multiple:true, checked: true, style: 'display:none;'}, attachment.keep_value, nil)
|
10
|
+
- elsif field.delete_method
|
11
|
+
= form.check_box(field.delete_method, {multiple:true, style: 'display:none;'}, attachment.delete_value, nil)
|
12
|
+
|
13
|
+
= form.file_field(field.name, field.html_attributes.reverse_merge({ data: { :"multiple-fileupload" => true }, multiple: true }))
|
14
|
+
|
15
|
+
- if field.cache_method
|
16
|
+
= form.hidden_field(field.cache_method)
|
@@ -2,10 +2,25 @@
|
|
2
2
|
type_collection = field.polymorphic_type_collection
|
3
3
|
type_column = field.association.foreign_type.to_s
|
4
4
|
selected_type = field.bindings[:object].send(type_column)
|
5
|
-
collection = field.associated_collection(selected_type)
|
6
5
|
selected = field.bindings[:object].send(field.association.name)
|
6
|
+
collection = selected ? [[field.formatted_value, selected.id]] : [[]]
|
7
7
|
column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, type_column)
|
8
|
+
current_action = params[:action].in?(['create', 'new']) ? 'create' : 'update'
|
9
|
+
|
10
|
+
default_options = { float_left: false }
|
11
|
+
|
12
|
+
js_data = type_collection.inject({}) do |options, model|
|
13
|
+
model_name = model.second.underscore.downcase
|
14
|
+
source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
|
15
|
+
options.merge(model_name.gsub("_", "") => {
|
16
|
+
xhr: true,
|
17
|
+
remote_source: index_path(model_name, source_object_id: form.object.id, source_abstract_model: source_abstract_model.to_param, current_action: current_action, compact: true),
|
18
|
+
float_left: false
|
19
|
+
})
|
20
|
+
end
|
8
21
|
|
9
22
|
.form-inline
|
10
|
-
|
11
|
-
|
23
|
+
- js_data.each do |model, value|
|
24
|
+
%div{id: "#{model}-js-options", data: { options: value.to_json } }
|
25
|
+
= form.select type_column, type_collection, {include_blank: true, selected: selected_type}, class: "form-control", id: column_type_dom_id, data: { polymorphic: true, urls: field.polymorphic_type_urls.to_json }, style: "float: left; margin-right: 10px;"
|
26
|
+
= form.select field.method_name, collection, {include_blank: true, selected: selected.try(:id)}, class: "form-control", data: { filteringselect: true, options: js_data[selected_type.try(:downcase)] || default_options }, placeholder: 'Search'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
:ruby
|
2
|
+
js_data = {
|
3
|
+
js_location: field.js_location,
|
4
|
+
css_location: field.css_location,
|
5
|
+
instance_config: field.instance_config
|
6
|
+
}
|
7
|
+
|
8
|
+
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'simplemde', options: js_data.to_json }).reverse_merge({ value: field.form_value })
|
@@ -3,7 +3,7 @@
|
|
3
3
|
%thead
|
4
4
|
%tr
|
5
5
|
%th.shrink.model-name= t "admin.table_headers.model_name"
|
6
|
-
%th.shrink.last-
|
6
|
+
%th.shrink.last-created= t "admin.table_headers.last_created"
|
7
7
|
%th.records= t "admin.table_headers.records"
|
8
8
|
%th.shrink.controls
|
9
9
|
%tbody
|
@@ -12,14 +12,13 @@
|
|
12
12
|
- index_path = index_path(model_name: abstract_model.to_param)
|
13
13
|
- row_class = "#{cycle("odd", "even")}#{" link" if index_path} #{abstract_model.param_key}_links"
|
14
14
|
%tr{class: row_class, :"data-link" => index_path}
|
15
|
-
-
|
16
|
-
- active =
|
15
|
+
- last_created = @most_recent_created[abstract_model.model.name]
|
16
|
+
- active = last_created.try(:today?)
|
17
17
|
%td
|
18
18
|
%span.show= link_to capitalize_first_letter(abstract_model.config.label_plural), index_path, class: 'pjax'
|
19
19
|
%td
|
20
|
-
- if
|
21
|
-
= time_ago_in_words
|
22
|
-
= t "admin.misc.ago"
|
20
|
+
- if last_created
|
21
|
+
= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}"
|
23
22
|
%td
|
24
23
|
- count = @count[abstract_model.model.name]
|
25
24
|
- percent = count > 0 ? (@max <= 1 ? count : ((Math.log(count+1) * 100.0) / Math.log(@max+1)).to_i) : -1
|