rails_admin 3.0.0.beta2 → 3.0.0.rc3
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 +4 -4
- data/README.md +6 -9
- data/Rakefile +11 -0
- data/app/assets/javascripts/{rails_admin.js → rails_admin/application.js} +4 -4
- data/app/assets/stylesheets/rails_admin/application.scss +31 -0
- data/app/controllers/rails_admin/application_controller.rb +1 -1
- data/app/controllers/rails_admin/main_controller.rb +12 -21
- data/app/helpers/rails_admin/application_helper.rb +43 -22
- data/app/helpers/rails_admin/form_builder.rb +3 -3
- data/app/helpers/rails_admin/main_helper.rb +1 -1
- data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +2 -2
- data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +4 -4
- data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +4 -4
- data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +12 -10
- data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +4 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +4 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +6 -4
- data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +4 -4
- data/app/views/layouts/rails_admin/_head.html.erb +2 -2
- data/app/views/layouts/rails_admin/_navigation.html.erb +12 -16
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +8 -8
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +1 -5
- data/app/views/layouts/rails_admin/application.html.erb +4 -7
- data/app/views/layouts/rails_admin/{pjax.html.erb → content.html.erb} +7 -5
- data/app/views/layouts/rails_admin/modal.js.erb +1 -1
- data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
- data/app/views/rails_admin/main/_delete_notice.html.erb +2 -2
- data/app/views/rails_admin/main/_form_boolean.html.erb +6 -8
- data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -1
- data/app/views/rails_admin/main/_form_datetime.html.erb +8 -7
- data/app/views/rails_admin/main/_form_enumeration.html.erb +5 -1
- data/app/views/rails_admin/main/_form_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +14 -14
- data/app/views/rails_admin/main/_form_filtering_select.html.erb +16 -21
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/_form_nested_many.html.erb +4 -4
- data/app/views/rails_admin/main/_form_nested_one.html.erb +4 -4
- data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +11 -6
- data/app/views/rails_admin/main/_submit_buttons.html.erb +8 -8
- data/app/views/rails_admin/main/bulk_delete.html.erb +1 -1
- data/app/views/rails_admin/main/dashboard.html.erb +4 -4
- data/app/views/rails_admin/main/delete.html.erb +1 -1
- data/app/views/rails_admin/main/edit.html.erb +1 -1
- data/app/views/rails_admin/main/export.html.erb +35 -32
- data/app/views/rails_admin/main/history.html.erb +16 -14
- data/app/views/rails_admin/main/index.html.erb +39 -36
- data/app/views/rails_admin/main/new.html.erb +1 -1
- data/config/locales/rails_admin.en.yml +0 -1
- data/lib/generators/rails_admin/install_generator.rb +8 -7
- data/lib/generators/rails_admin/templates/webpack.config.js +0 -3
- data/lib/rails_admin/abstract_model.rb +3 -4
- data/lib/rails_admin/adapters/active_record/object_extension.rb +1 -1
- data/lib/rails_admin/adapters/active_record/property.rb +1 -1
- data/lib/rails_admin/adapters/active_record.rb +8 -3
- data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
- data/lib/rails_admin/adapters/mongoid.rb +4 -4
- data/lib/rails_admin/config/actions/base.rb +1 -6
- data/lib/rails_admin/config/actions/dashboard.rb +13 -9
- data/lib/rails_admin/config/actions/delete.rb +4 -0
- data/lib/rails_admin/config/actions/edit.rb +4 -0
- data/lib/rails_admin/config/actions/export.rb +2 -1
- data/lib/rails_admin/config/actions/index.rb +2 -1
- data/lib/rails_admin/config/actions/new.rb +7 -1
- data/lib/rails_admin/config/actions/show_in_app.rb +0 -4
- data/lib/rails_admin/config/fields/association.rb +6 -1
- data/lib/rails_admin/config/fields/base.rb +3 -3
- data/lib/rails_admin/config/fields/factories/active_storage.rb +2 -1
- data/lib/rails_admin/config/fields/factories/association.rb +4 -4
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -1
- data/lib/rails_admin/config/fields/factories/devise.rb +2 -1
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -1
- data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -1
- data/lib/rails_admin/config/fields/types/action_text.rb +1 -1
- data/lib/rails_admin/config/fields/types/date.rb +7 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +11 -5
- data/lib/rails_admin/config/fields/types/has_many_association.rb +4 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +4 -0
- data/lib/rails_admin/config/fields/types/time.rb +9 -0
- data/lib/rails_admin/config/has_fields.rb +4 -0
- data/lib/rails_admin/config/model.rb +8 -0
- data/lib/rails_admin/config/sections/list.rb +4 -4
- data/lib/rails_admin/config.rb +18 -4
- data/lib/rails_admin/engine.rb +6 -13
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +2 -2
- data/lib/rails_admin/support/datetime.rb +50 -53
- data/lib/rails_admin/support/esmodule_preprocessor.rb +2 -1
- data/lib/rails_admin/version.rb +1 -1
- data/package.json +7 -5
- data/src/rails_admin/base.js +3 -6
- data/src/rails_admin/filter-box.js +36 -37
- data/src/rails_admin/filtering-select.js +3 -6
- data/src/rails_admin/i18n.js +0 -3
- data/src/rails_admin/nested-form-hooks.js +16 -8
- data/src/rails_admin/remote-form.js +18 -15
- data/src/rails_admin/styles/base/theming.scss +80 -155
- data/src/rails_admin/styles/base/variables.scss +2 -0
- data/src/rails_admin/styles/base.scss +8 -45
- data/src/rails_admin/styles/filtering-multiselect.scss +2 -2
- data/src/rails_admin/styles/filtering-select.scss +1 -1
- data/src/rails_admin/styles/widgets.scss +1 -10
- data/src/rails_admin/ui.js +19 -57
- data/src/rails_admin/widgets.js +38 -48
- data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
- data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +10683 -0
- data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
- data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
- data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
- data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
- metadata +88 -94
- data/app/assets/stylesheets/rails_admin.scss.erb +0 -76
- data/lib/generators/rails_admin/templates/environment.js +0 -6
- data/src/rails_admin/styles/themes/cerulean/mixins.scss +0 -0
- data/src/rails_admin/styles/themes/cerulean/theming.scss +0 -135
- data/src/rails_admin/styles/themes/cerulean/variables.scss +0 -830
- data/src/rails_admin/styles/themes/default/mixins.scss +0 -8
- data/src/rails_admin/styles/themes/default/theming.scss +0 -11
- data/src/rails_admin/styles/themes/default/variables.scss +0 -12
- data/src/rails_admin/vendor/jquery.pjax.js +0 -899
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -164
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
- data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
- data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2611
- data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
- data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
- data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
- data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
- data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
@@ -4,16 +4,18 @@
|
|
4
4
|
<% sort = params[:sort] %>
|
5
5
|
<% sort_reverse = params[:sort_reverse] %>
|
6
6
|
<% path_method = params[:id] ? "history_show_path" : "history_index_path" %>
|
7
|
-
<%= form_tag("", method: "get", class: "search
|
8
|
-
<div class="
|
9
|
-
<div class="
|
10
|
-
<
|
11
|
-
|
12
|
-
|
13
|
-
<i class="fas fa-sync"></i>
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
<%= form_tag("", method: "get", class: "search form-inline") do %>
|
8
|
+
<div class="card mb-3 p-3 bg-light">
|
9
|
+
<div class="row">
|
10
|
+
<div class="col-sm-6">
|
11
|
+
<div class="input-group">
|
12
|
+
<input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
|
13
|
+
<button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i> ' + t('admin.misc.refresh') %>" type="submit">
|
14
|
+
<i class="fas fa-sync"></i>
|
15
|
+
<%= t("admin.misc.refresh") %>
|
16
|
+
</button>
|
17
|
+
</div>
|
18
|
+
</div>
|
17
19
|
</div>
|
18
20
|
</div>
|
19
21
|
<% end %>
|
@@ -30,7 +32,7 @@
|
|
30
32
|
<% selected = (sort == property_name) %>
|
31
33
|
<% sort_direction = (sort_reverse ? "headerSortUp" : "headerSortDown" if selected) %>
|
32
34
|
<% sort_location = send(path_method, params.except("sort_reverse").merge(model_name: @abstract_model.to_param, sort: property_name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {})) %>
|
33
|
-
<th class="header
|
35
|
+
<th class="header <%= column[:css_class] %> <%= sort_direction if selected %>">
|
34
36
|
<%= column[:link_text] %>
|
35
37
|
</th>
|
36
38
|
<% end %>
|
@@ -52,7 +54,7 @@
|
|
52
54
|
<% label = o.send(@abstract_model.config.object_label_method) %>
|
53
55
|
<% if show_action = action(:show, @abstract_model, o) %>
|
54
56
|
<td>
|
55
|
-
<%= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id)
|
57
|
+
<%= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id)) %>
|
56
58
|
</td>
|
57
59
|
<% else %>
|
58
60
|
<td>
|
@@ -73,6 +75,6 @@
|
|
73
75
|
</tbody>
|
74
76
|
</table>
|
75
77
|
<% unless params[:all] || !@history.respond_to?(:current_page) %>
|
76
|
-
<%= paginate(@history, theme: 'ra-twitter-bootstrap'
|
77
|
-
<%= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn
|
78
|
+
<%= paginate(@history, theme: 'ra-twitter-bootstrap') %>
|
79
|
+
<%= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn btn-light") unless (tc = @history.total_count) <= @history.size || tc > 100 %>
|
78
80
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%
|
2
2
|
query = params[:query]
|
3
|
-
params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_export
|
3
|
+
params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_export)
|
4
4
|
params.delete(:query) if params[:query].blank?
|
5
5
|
params.delete(:sort_reverse) unless params[:sort_reverse] == 'true'
|
6
6
|
sort_reverse = params[:sort_reverse]
|
@@ -18,16 +18,13 @@
|
|
18
18
|
%>
|
19
19
|
|
20
20
|
<% content_for :contextual_tabs do %>
|
21
|
-
<% if checkboxes %>
|
22
|
-
<%= bulk_menu %>
|
23
|
-
<% end %>
|
24
21
|
<% if filterable_fields.present? %>
|
25
|
-
<li class="dropdown"
|
26
|
-
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
22
|
+
<li class="nav-item dropdown">
|
23
|
+
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
|
27
24
|
<%= t('admin.misc.add_filter') %>
|
28
25
|
<b class="caret"></b>
|
29
26
|
</a>
|
30
|
-
<ul class="dropdown-menu" id="filters"
|
27
|
+
<ul class="dropdown-menu dropdown-menu-end" id="filters">
|
31
28
|
<% filterable_fields.each do |field| %>
|
32
29
|
<%
|
33
30
|
field_options = case field.type
|
@@ -40,6 +37,7 @@
|
|
40
37
|
<li>
|
41
38
|
<a
|
42
39
|
href="#"
|
40
|
+
class="dropdown-item"
|
43
41
|
data-field-label="<%= field.label %>"
|
44
42
|
data-field-name="<%= field.name %>"
|
45
43
|
data-field-operator="<%= field.default_filter_operator %>"
|
@@ -47,7 +45,7 @@
|
|
47
45
|
data-field-required="<%= field.required.to_s %>"
|
48
46
|
data-field-type="<%= field.type %>"
|
49
47
|
data-field-value=""
|
50
|
-
data-field-datetimepicker-
|
48
|
+
data-field-datetimepicker-options="<%= field.try(:datepicker_options).try(:to_json) %>"
|
51
49
|
>
|
52
50
|
<%= field.label %>
|
53
51
|
</a>
|
@@ -56,6 +54,9 @@
|
|
56
54
|
</ul>
|
57
55
|
</li>
|
58
56
|
<% end %>
|
57
|
+
<% if checkboxes %>
|
58
|
+
<%= bulk_menu %>
|
59
|
+
<% end %>
|
59
60
|
<% end %>
|
60
61
|
|
61
62
|
<style>
|
@@ -66,42 +67,44 @@
|
|
66
67
|
</style>
|
67
68
|
|
68
69
|
<div id="list">
|
69
|
-
<%= form_tag(index_path(params.except(*%w[page f query])), method: :get
|
70
|
-
<div class="
|
71
|
-
<
|
70
|
+
<%= form_tag(index_path(params.except(*%w[page f query])), method: :get) do %>
|
71
|
+
<div class="card mb-3 p-3 bg-light">
|
72
|
+
<div class="row" data-options="<%= ordered_filter_options.to_json %>" id="filters_box"></div>
|
72
73
|
<hr class="filters_box" style="display:<%= ordered_filters.empty? ? 'none' : 'block' %>"/>
|
73
|
-
<div class="
|
74
|
-
<
|
75
|
-
|
76
|
-
|
77
|
-
<i class="fas fa-sync"></i>
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
<
|
82
|
-
|
83
|
-
|
74
|
+
<div class="row">
|
75
|
+
<div class="col-sm-6">
|
76
|
+
<div class="input-group">
|
77
|
+
<input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
|
78
|
+
<button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i>' + t('admin.misc.refresh') %>" type="submit">
|
79
|
+
<i class="fas fa-sync"></i>
|
80
|
+
<%= t('admin.misc.refresh') %>
|
81
|
+
</button>
|
82
|
+
<button class="btn btn-info" id="remove_filter" title="<%= t('admin.misc.reset_filters') %>">
|
83
|
+
<i class="fas fa-times"></i>
|
84
|
+
</button>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
<div class="col-sm-6 text-end">
|
88
|
+
<% if export_action %>
|
89
|
+
<%= link_to wording_for(:link, export_action), export_path(params.except('page')), class: 'btn btn-info' %>
|
90
|
+
<% end %>
|
91
|
+
</div>
|
84
92
|
</div>
|
85
|
-
<% if export_action %>
|
86
|
-
<span style="float:right">
|
87
|
-
<%= link_to wording_for(:link, export_action), export_path(params.except('page')), class: 'btn btn-info' %>
|
88
|
-
</span>
|
89
|
-
<% end %>
|
90
93
|
</div>
|
91
94
|
<% end %>
|
92
95
|
<% unless @model_config.list.scopes.empty? %>
|
93
96
|
<ul class="nav nav-tabs" id="scope_selector">
|
94
97
|
<% @model_config.list.scopes.each_with_index do |scope, index| %>
|
95
98
|
<% scope = '_all' if scope.nil? %>
|
96
|
-
<li class="
|
97
|
-
<a
|
99
|
+
<li class="nav-item">
|
100
|
+
<a href="<%= index_path(params.merge(scope: scope, page: nil)) %>" class="nav-link <%= 'active' if scope.to_s == params[:scope] || (params[:scope].blank? && index == 0) %>">
|
98
101
|
<%= I18n.t("admin.scopes.#{@abstract_model.to_param}.#{scope}", default: I18n.t("admin.scopes.#{scope}", default: scope.to_s.titleize)) %>
|
99
102
|
</a>
|
100
103
|
</li>
|
101
104
|
<% end %>
|
102
105
|
</ul>
|
103
106
|
<% end %>
|
104
|
-
<%= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: ["form"] do %>
|
107
|
+
<%= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: ["form", "mb-3"] do %>
|
105
108
|
<%= hidden_field_tag :bulk_action %>
|
106
109
|
<% if description.present? %>
|
107
110
|
<p>
|
@@ -116,7 +119,7 @@
|
|
116
119
|
<tr>
|
117
120
|
<% if checkboxes %>
|
118
121
|
<th class="shrink sticky">
|
119
|
-
<input class="toggle" type="checkbox"
|
122
|
+
<input class="toggle" type="checkbox" />
|
120
123
|
</th>
|
121
124
|
<% end %>
|
122
125
|
<% properties.each do |property| %>
|
@@ -125,7 +128,7 @@
|
|
125
128
|
<% sort_location = index_path params.except('sort_reverse').except('page').merge(sort: property.name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {}) %>
|
126
129
|
<% sort_direction = (sort_reverse == 'true' ? "headerSortUp" : "headerSortDown" if selected) %>
|
127
130
|
<% end %>
|
128
|
-
<th class="<%= [property.sortable && "header
|
131
|
+
<th class="<%= [property.sortable && "header", property.sortable && sort_direction, property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?).join(' ') %>" data-href="<%= property.sortable && sort_location %>" rel="tooltip" title="<%= property.hint %>">
|
129
132
|
<%= property.label %>
|
130
133
|
</th>
|
131
134
|
<% end %>
|
@@ -142,7 +145,7 @@
|
|
142
145
|
<% end %>
|
143
146
|
<% properties.map{ |property| property.bind(:object, object) }.each do |property| %>
|
144
147
|
<% value = property.pretty_value %>
|
145
|
-
<td class="<%= [property.sticky? && 'sticky', property.css_class, property.type_css_class].
|
148
|
+
<td class="<%= [property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?).join(' ') %>" title="<%= strip_tags(value.to_s) %>">
|
146
149
|
<%= value %>
|
147
150
|
</td>
|
148
151
|
<% end %>
|
@@ -166,19 +169,19 @@
|
|
166
169
|
<% if @model_config.list.limited_pagination %>
|
167
170
|
<div class="row">
|
168
171
|
<div class="col-md-6">
|
169
|
-
<%= paginate(@objects, theme: 'ra-twitter-bootstrap/without_count', total_pages: Float::INFINITY
|
172
|
+
<%= paginate(@objects, theme: 'ra-twitter-bootstrap/without_count', total_pages: Float::INFINITY) %>
|
170
173
|
</div>
|
171
174
|
</div>
|
172
175
|
<% elsif @objects.respond_to?(:total_count) %>
|
173
176
|
<% total_count = @objects.total_count.to_i %>
|
174
177
|
<div class="row">
|
175
178
|
<div class="col-md-6">
|
176
|
-
<%= paginate(@objects, theme: 'ra-twitter-bootstrap'
|
179
|
+
<%= paginate(@objects, theme: 'ra-twitter-bootstrap') %>
|
177
180
|
</div>
|
178
181
|
</div>
|
179
182
|
<div class="row">
|
180
183
|
<div class="col-md-6">
|
181
|
-
<%= link_to(t("admin.misc.show_all"), index_path(params.merge(all: true)), class: "show-all btn btn-
|
184
|
+
<%= link_to(t("admin.misc.show_all"), index_path(params.merge(all: true)), class: "show-all btn btn-light clearfix") unless total_count > 100 || total_count <= @objects.to_a.size %>
|
182
185
|
</div>
|
183
186
|
</div>
|
184
187
|
<div class="clearfix total-count">
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, html: { multipart: true, class: "
|
1
|
+
<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, html: { multipart: true, class: "main", data: { title: @page_name } } do |form| %>
|
2
2
|
<%= form.generate action: :create %>
|
3
3
|
<% end %>
|
@@ -8,12 +8,16 @@ module RailsAdmin
|
|
8
8
|
include Generators::Utils::InstanceMethods
|
9
9
|
|
10
10
|
argument :_namespace, type: :string, required: false, desc: 'RailsAdmin url namespace'
|
11
|
-
class_option :asset, type: :string, required: false, default: nil, desc: 'Asset delivery method [options:
|
11
|
+
class_option :asset, type: :string, required: false, default: nil, desc: 'Asset delivery method [options: webpacker, sprockets]'
|
12
12
|
desc 'RailsAdmin installation generator'
|
13
13
|
|
14
14
|
def install
|
15
|
-
|
16
|
-
|
15
|
+
if File.read(File.join(destination_root, 'config/routes.rb')).include?('mount RailsAdmin::Engine')
|
16
|
+
display "Skipped route addition, since it's already there"
|
17
|
+
else
|
18
|
+
namespace = ask_for('Where do you want to mount rails_admin?', 'admin', _namespace)
|
19
|
+
route("mount RailsAdmin::Engine => '/#{namespace}', as: 'rails_admin'")
|
20
|
+
end
|
17
21
|
if File.exist? File.join(destination_root, 'config/initializers/rails_admin.rb')
|
18
22
|
insert_into_file 'config/initializers/rails_admin.rb', " config.asset_source = :#{asset}\n", after: "RailsAdmin.config do |config|\n"
|
19
23
|
else
|
@@ -35,9 +39,7 @@ module RailsAdmin
|
|
35
39
|
def asset
|
36
40
|
return options['asset'] if options['asset']
|
37
41
|
|
38
|
-
if
|
39
|
-
'webpack'
|
40
|
-
elsif defined?(Webpacker)
|
42
|
+
if defined?(Webpacker)
|
41
43
|
'webpacker'
|
42
44
|
else
|
43
45
|
'sprockets'
|
@@ -53,7 +55,6 @@ module RailsAdmin
|
|
53
55
|
@scss_relative_dir = '../stylesheets/'
|
54
56
|
template 'rails_admin.js.erb', 'app/javascript/packs/rails_admin.js'
|
55
57
|
template 'rails_admin.scss', 'app/javascript/stylesheets/rails_admin.scss'
|
56
|
-
template 'environment.js', 'config/webpack/environment.js'
|
57
58
|
end
|
58
59
|
|
59
60
|
def configure_for_webpack
|
@@ -19,7 +19,7 @@ module RailsAdmin
|
|
19
19
|
def new(m)
|
20
20
|
m = m.constantize unless m.is_a?(Class)
|
21
21
|
(am = old_new(m)).model && am.adapter ? am : nil
|
22
|
-
rescue *([LoadError, NameError] + (defined?(ActiveRecord) ? ['ActiveRecord::NoDatabaseError'.constantize] : []))
|
22
|
+
rescue *([LoadError, NameError] + (defined?(ActiveRecord) ? ['ActiveRecord::NoDatabaseError'.constantize, 'ActiveRecord::ConnectionNotEstablished'.constantize] : []))
|
23
23
|
puts "[RailsAdmin] Could not load model #{m}, assuming model is non existing. (#{$ERROR_INFO})" unless Rails.env.test?
|
24
24
|
nil
|
25
25
|
end
|
@@ -86,9 +86,8 @@ module RailsAdmin
|
|
86
86
|
associations.each do |association|
|
87
87
|
case association.type
|
88
88
|
when :has_one
|
89
|
-
|
90
|
-
|
91
|
-
end
|
89
|
+
child = object.send(association.name)
|
90
|
+
yield(association, [child]) if child
|
92
91
|
when :has_many
|
93
92
|
children = object.send(association.name)
|
94
93
|
yield(association, Array.new(children))
|
@@ -12,8 +12,9 @@ module RailsAdmin
|
|
12
12
|
model.new(params).extend(ObjectExtension)
|
13
13
|
end
|
14
14
|
|
15
|
-
def get(id)
|
16
|
-
|
15
|
+
def get(id, scope = scoped)
|
16
|
+
object = scope.where(primary_key => id).first
|
17
|
+
return unless object
|
17
18
|
|
18
19
|
object.extend(ObjectExtension)
|
19
20
|
end
|
@@ -80,7 +81,11 @@ module RailsAdmin
|
|
80
81
|
when 'postgresql'
|
81
82
|
::ActiveRecord::Base.connection.select_one("SELECT ''::text AS str;").values.first.encoding
|
82
83
|
when 'mysql2'
|
83
|
-
|
84
|
+
if RUBY_ENGINE == 'jruby'
|
85
|
+
::ActiveRecord::Base.connection.select_one("SELECT '' AS str;").values.first.encoding
|
86
|
+
else
|
87
|
+
::ActiveRecord::Base.connection.raw_connection.encoding
|
88
|
+
end
|
84
89
|
when 'oracle_enhanced'
|
85
90
|
::ActiveRecord::Base.connection.select_one('SELECT dummy FROM DUAL').values.first.encoding
|
86
91
|
else
|
@@ -11,11 +11,11 @@ module RailsAdmin
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def name
|
14
|
-
property.name.to_sym
|
14
|
+
(property.options[:as] || property.name).to_sym
|
15
15
|
end
|
16
16
|
|
17
17
|
def pretty_name
|
18
|
-
property.name.to_s.tr('_', ' ').capitalize
|
18
|
+
(property.options[:as] || property.name).to_s.tr('_', ' ').capitalize
|
19
19
|
end
|
20
20
|
|
21
21
|
def type
|
@@ -64,7 +64,7 @@ module RailsAdmin
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def read_only?
|
67
|
-
|
67
|
+
model.readonly_attributes.include? property.name.to_s
|
68
68
|
end
|
69
69
|
|
70
70
|
private
|
@@ -18,8 +18,8 @@ module RailsAdmin
|
|
18
18
|
model.new(params).extend(ObjectExtension)
|
19
19
|
end
|
20
20
|
|
21
|
-
def get(id)
|
22
|
-
object =
|
21
|
+
def get(id, scope = scoped)
|
22
|
+
object = scope.find(id)
|
23
23
|
return nil unless object
|
24
24
|
|
25
25
|
object.extend(ObjectExtension)
|
@@ -52,10 +52,10 @@ module RailsAdmin
|
|
52
52
|
scope
|
53
53
|
rescue NoMethodError => e
|
54
54
|
if /page/.match?(e.message)
|
55
|
-
e = e.exception <<-
|
55
|
+
e = e.exception <<-ERROR.gsub(/^\s{12}/, '')
|
56
56
|
#{e.message}
|
57
57
|
If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
|
58
|
-
|
58
|
+
ERROR
|
59
59
|
end
|
60
60
|
raise e
|
61
61
|
end
|
@@ -49,7 +49,7 @@ module RailsAdmin
|
|
49
49
|
(only.nil? || [only].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s)) &&
|
50
50
|
![except].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s) &&
|
51
51
|
!bindings[:abstract_model].config.excluded?
|
52
|
-
)
|
52
|
+
) && (!respond_to?(:writable?) || writable?)
|
53
53
|
end
|
54
54
|
|
55
55
|
register_instance_option :authorized? do
|
@@ -73,11 +73,6 @@ module RailsAdmin
|
|
73
73
|
false
|
74
74
|
end
|
75
75
|
|
76
|
-
# Render via pjax?
|
77
|
-
register_instance_option :pjax? do
|
78
|
-
link_target.blank?
|
79
|
-
end
|
80
|
-
|
81
76
|
# Target window [_self, _blank]
|
82
77
|
register_instance_option :link_target do
|
83
78
|
nil
|
@@ -18,21 +18,21 @@ module RailsAdmin
|
|
18
18
|
|
19
19
|
register_instance_option :controller do
|
20
20
|
proc do
|
21
|
-
@history = @auditing_adapter&.latest(@action.auditing_versions_limit)
|
21
|
+
@history = @auditing_adapter&.latest(@action.auditing_versions_limit) if @action.history?
|
22
22
|
if @action.statistics?
|
23
|
-
|
23
|
+
model_configs = RailsAdmin::Config.visible_models(controller: self)
|
24
24
|
|
25
|
+
@abstract_models = model_configs.map(&:abstract_model)
|
25
26
|
@most_recent_created = {}
|
26
27
|
@count = {}
|
27
28
|
@max = 0
|
28
|
-
|
29
|
-
scope = @authorization_adapter&.query(:index,
|
30
|
-
current_count =
|
29
|
+
model_configs.each do |config|
|
30
|
+
scope = @authorization_adapter&.query(:index, config.abstract_model)
|
31
|
+
current_count = config.abstract_model.count({}, scope)
|
31
32
|
@max = current_count > @max ? current_count : @max
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
@most_recent_created[t.model.name] = t.model.last.try(:created_at)
|
33
|
+
name = config.abstract_model.model.name
|
34
|
+
@count[name] = current_count
|
35
|
+
@most_recent_created[name] = config.last_created_at
|
36
36
|
end
|
37
37
|
end
|
38
38
|
render @action.template_name, status: @status_code || :ok
|
@@ -50,6 +50,10 @@ module RailsAdmin
|
|
50
50
|
register_instance_option :statistics? do
|
51
51
|
true
|
52
52
|
end
|
53
|
+
|
54
|
+
register_instance_option :history? do
|
55
|
+
true
|
56
|
+
end
|
53
57
|
end
|
54
58
|
end
|
55
59
|
end
|
@@ -14,7 +14,8 @@ module RailsAdmin
|
|
14
14
|
|
15
15
|
register_instance_option :controller do
|
16
16
|
proc do
|
17
|
-
|
17
|
+
format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
|
18
|
+
if format
|
18
19
|
request.format = format
|
19
20
|
@schema = HashHelper.symbolize(params[:schema].slice(:except, :include, :methods, :only).permit!.to_h) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
|
20
21
|
@objects = list_entries(@model_config, :export)
|
@@ -20,7 +20,8 @@ module RailsAdmin
|
|
20
20
|
|
21
21
|
register_instance_option :breadcrumb_parent do
|
22
22
|
parent_model = bindings[:abstract_model].try(:config).try(:parent)
|
23
|
-
|
23
|
+
am = parent_model && RailsAdmin.config(parent_model).try(:abstract_model)
|
24
|
+
if am
|
24
25
|
[:index, am]
|
25
26
|
else
|
26
27
|
[:dashboard]
|
@@ -17,10 +17,12 @@ module RailsAdmin
|
|
17
17
|
if request.get? # NEW
|
18
18
|
|
19
19
|
@object = @abstract_model.new
|
20
|
+
@action = @action.with(@action.bindings.merge(object: @object))
|
20
21
|
@authorization_adapter&.attributes_for(:new, @abstract_model)&.each do |name, value|
|
21
22
|
@object.send("#{name}=", value)
|
22
23
|
end
|
23
|
-
|
24
|
+
object_params = params[@abstract_model.param_key]
|
25
|
+
if object_params
|
24
26
|
sanitize_params_for!(request.xhr? ? :modal : :create)
|
25
27
|
@object.assign_attributes(@object.attributes.merge(object_params.to_h))
|
26
28
|
end
|
@@ -55,6 +57,10 @@ module RailsAdmin
|
|
55
57
|
register_instance_option :link_icon do
|
56
58
|
'fas fa-plus'
|
57
59
|
end
|
60
|
+
|
61
|
+
register_instance_option :writable? do
|
62
|
+
!(bindings[:object] && bindings[:object].readonly?)
|
63
|
+
end
|
58
64
|
end
|
59
65
|
end
|
60
66
|
end
|
@@ -21,7 +21,7 @@ module RailsAdmin
|
|
21
21
|
am = amc.abstract_model
|
22
22
|
wording = associated.send(amc.object_label_method)
|
23
23
|
can_see = !am.embedded? && (show_action = v.action(:show, am, associated))
|
24
|
-
can_see ? v.link_to(wording, v.url_for(action: show_action.action_name, model_name: am.to_param, id: associated.id)
|
24
|
+
can_see ? v.link_to(wording, v.url_for(action: show_action.action_name, model_name: am.to_param, id: associated.id)) : ERB::Util.html_escape(wording)
|
25
25
|
end.to_sentence.html_safe.presence || '-'
|
26
26
|
end
|
27
27
|
|
@@ -89,6 +89,11 @@ module RailsAdmin
|
|
89
89
|
association.primary_key
|
90
90
|
end
|
91
91
|
|
92
|
+
# Returns params which are to be set in modals
|
93
|
+
def associated_prepopulate_params
|
94
|
+
{}
|
95
|
+
end
|
96
|
+
|
92
97
|
# Reader whether this is a polymorphic association
|
93
98
|
def polymorphic?
|
94
99
|
association.polymorphic?
|
@@ -252,7 +252,7 @@ module RailsAdmin
|
|
252
252
|
end
|
253
253
|
|
254
254
|
def editable?
|
255
|
-
!(@properties && @properties.read_only?)
|
255
|
+
!((@properties && @properties.read_only?) || (bindings[:object] && bindings[:object].readonly?))
|
256
256
|
end
|
257
257
|
|
258
258
|
# Is this an association
|
@@ -301,14 +301,14 @@ module RailsAdmin
|
|
301
301
|
def value
|
302
302
|
bindings[:object].safe_send(name)
|
303
303
|
rescue NoMethodError => e
|
304
|
-
raise e.exception <<-
|
304
|
+
raise e.exception <<-ERROR.gsub(/^\s{10}/, '')
|
305
305
|
#{e.message}
|
306
306
|
If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
|
307
307
|
you should declare 'formatted_value' in the field definition.
|
308
308
|
field :#{name} do
|
309
309
|
formatted_value{ bindings[:object].call_some_method }
|
310
310
|
end
|
311
|
-
|
311
|
+
ERROR
|
312
312
|
end
|
313
313
|
|
314
314
|
# Reader for nested attributes
|
@@ -16,7 +16,8 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
16
16
|
["#{name}_attachment".to_sym, "#{name}_blob".to_sym]
|
17
17
|
end
|
18
18
|
children_fields = associations.map do |child_name|
|
19
|
-
|
19
|
+
child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
|
20
|
+
next unless child_association
|
20
21
|
|
21
22
|
child_field = fields.detect { |f| f.name == child_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_association, fields)
|
22
23
|
child_field.hide unless field == child_field
|
@@ -3,7 +3,8 @@ require 'rails_admin/config/fields/types'
|
|
3
3
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
4
4
|
|
5
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
-
|
6
|
+
association = parent.abstract_model.associations.detect { |a| a.foreign_key == properties.name && %i[belongs_to has_and_belongs_to_many].include?(a.type) }
|
7
|
+
if association
|
7
8
|
field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
|
8
9
|
fields << field
|
9
10
|
|
@@ -15,9 +16,8 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
15
16
|
end.collect { |k| association.send(k) }.compact
|
16
17
|
|
17
18
|
parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
|
18
|
-
|
19
|
-
|
20
|
-
end
|
19
|
+
child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
|
20
|
+
child_field ||= RailsAdmin::Config::Fields.default_factory.call(parent, column, fields)
|
21
21
|
child_columns << child_field
|
22
22
|
end
|
23
23
|
|