rails_admin 1.4.3 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +12 -4
- data/README.md +4 -7
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +1 -1
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +9 -7
- 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 +1 -0
- data/app/assets/javascripts/rails_admin/ui.js +135 -0
- data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
- data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
- data/app/controllers/rails_admin/application_controller.rb +2 -0
- data/app/helpers/rails_admin/application_helper.rb +19 -4
- data/app/helpers/rails_admin/main_helper.rb +4 -4
- data/app/views/layouts/rails_admin/_head.html.haml +7 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
- data/app/views/layouts/rails_admin/application.html.haml +3 -11
- data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
- data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +4 -4
- 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 +7 -5
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
- data/app/views/rails_admin/main/dashboard.html.haml +1 -2
- data/app/views/rails_admin/main/export.html.haml +2 -2
- data/app/views/rails_admin/main/index.html.haml +19 -15
- data/app/views/rails_admin/main/show.html.haml +6 -7
- data/config/locales/rails_admin.en.yml +3 -0
- data/lib/generators/rails_admin/templates/initializer.erb +2 -2
- data/lib/rails_admin/abstract_model.rb +3 -3
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +2 -2
- data/lib/rails_admin/adapters/active_record/property.rb +1 -5
- data/lib/rails_admin/adapters/active_record.rb +23 -10
- data/lib/rails_admin/adapters/mongoid/association.rb +1 -1
- data/lib/rails_admin/adapters/mongoid.rb +30 -13
- data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
- data/lib/rails_admin/bootstrap-sass.rb +7 -3
- data/lib/rails_admin/config/actions/base.rb +17 -1
- data/lib/rails_admin/config/actions/edit.rb +1 -3
- data/lib/rails_admin/config/actions/index.rb +3 -3
- data/lib/rails_admin/config/actions/new.rb +1 -3
- data/lib/rails_admin/config/configurable.rb +6 -4
- data/lib/rails_admin/config/fields/association.rb +1 -1
- data/lib/rails_admin/config/fields/base.rb +2 -2
- data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
- 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 +3 -19
- data/lib/rails_admin/config/fields/types/active_storage.rb +1 -0
- data/lib/rails_admin/config/fields/types/all.rb +2 -1
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -0
- 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/file_upload.rb +6 -2
- data/lib/rails_admin/config/fields/types/froala.rb +9 -11
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +52 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +8 -5
- data/lib/rails_admin/config/fields/types/string.rb +2 -2
- 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.rb +2 -1
- data/lib/rails_admin/config/has_groups.rb +1 -1
- data/lib/rails_admin/config/lazy_model.rb +4 -4
- data/lib/rails_admin/config/model.rb +5 -4
- 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/list.rb +23 -0
- data/lib/rails_admin/config.rb +9 -7
- data/lib/rails_admin/engine.rb +1 -2
- data/lib/rails_admin/extension.rb +16 -4
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
- data/lib/rails_admin/extensions/controller_extension.rb +6 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +27 -10
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +1 -3
- data/lib/rails_admin/support/csv_converter.rb +1 -1
- data/lib/rails_admin/version.rb +3 -3
- data/lib/rails_admin.rb +0 -1
- 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/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/{app → 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/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/{app → 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/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
- 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/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +1 -3
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +9451 -3263
- 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 +163 -170
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -58
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
- data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
- 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
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$(document).on("click", "#list input.toggle", function() {
|
|
3
|
+
$("#list [name='bulk_ids[]']").prop("checked", $(this).is(":checked"));
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$(document).on('click', '.pjax', function(event) {
|
|
7
|
+
if (event.which > 1 || event.metaKey || event.ctrlKey) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if ($.support.pjax) {
|
|
12
|
+
event.preventDefault();
|
|
13
|
+
$.pjax({
|
|
14
|
+
container: $(this).data('pjax-container') || '[data-pjax-container]',
|
|
15
|
+
url: $(this).data('href') || $(this).attr('href'),
|
|
16
|
+
timeout: 2000
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if ($(this).data('href')) {
|
|
22
|
+
window.location = $(this).data('href');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
$(document).on('submit', '.pjax-form', function(event) {
|
|
27
|
+
if ($.support.pjax) {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
$.pjax({
|
|
30
|
+
container: $(this).data('pjax-container') || '[data-pjax-container]',
|
|
31
|
+
url: this.action + (this.action.indexOf('?') !== -1 ? '&' : '?') + $(this).serialize(),
|
|
32
|
+
timeout: 2000
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
$(document).on('pjax:start', function() {
|
|
38
|
+
return $('#loading').show();
|
|
39
|
+
}).on('pjax:end', function() {
|
|
40
|
+
return $('#loading').hide();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
$(document).on('click', '[data-target]', function() {
|
|
44
|
+
if (!$(this).hasClass('disabled')) {
|
|
45
|
+
if ($(this).has('i.icon-chevron-down').length) {
|
|
46
|
+
$(this).removeClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right');
|
|
47
|
+
$($(this).data('target')).select(':visible').hide('slow');
|
|
48
|
+
} else {
|
|
49
|
+
if ($(this).has('i.icon-chevron-right').length) {
|
|
50
|
+
$(this).addClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right');
|
|
51
|
+
$($(this).data('target')).select(':hidden').show('slow');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
$(document).on('click', '.form-horizontal legend', function() {
|
|
58
|
+
if ($(this).has('i.icon-chevron-down').length) {
|
|
59
|
+
$(this).siblings('.control-group:visible').hide('slow');
|
|
60
|
+
$(this).children('i').toggleClass('icon-chevron-down icon-chevron-right');
|
|
61
|
+
} else {
|
|
62
|
+
if ($(this).has('i.icon-chevron-right').length) {
|
|
63
|
+
$(this).siblings('.control-group:hidden').show('slow');
|
|
64
|
+
$(this).children('i').toggleClass('icon-chevron-down icon-chevron-right');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
$(document).on('click', 'form .tab-content .tab-pane a.remove_nested_one_fields', function() {
|
|
70
|
+
$(this).children('input[type="hidden"]').val($(this).hasClass('active')).siblings('i').toggleClass('icon-check icon-trash');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
$(document).ready(function() {
|
|
74
|
+
RailsAdmin.I18n.init($('html').attr('lang'), $("#admin-js").data('i18nOptions'));
|
|
75
|
+
$(document).trigger('rails_admin.dom_ready');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
$(document).on('pjax:end', function() {
|
|
79
|
+
$(document).trigger('rails_admin.dom_ready');
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
$(document).on('rails_admin.dom_ready', function() {
|
|
83
|
+
$('.nav.nav-pills li.active').removeClass('active');
|
|
84
|
+
$(".nav.nav-pills li[data-model=\"" + ($('.page-header').data('model')) + "\"]").addClass('active');
|
|
85
|
+
$('.animate-width-to').each(function() {
|
|
86
|
+
var length, width;
|
|
87
|
+
length = $(this).data("animate-length");
|
|
88
|
+
width = $(this).data("animate-width-to");
|
|
89
|
+
$(this).animate({
|
|
90
|
+
width: width
|
|
91
|
+
}, length, 'easeOutQuad');
|
|
92
|
+
});
|
|
93
|
+
$('.form-horizontal legend').has('i.icon-chevron-right').each(function() {
|
|
94
|
+
$(this).siblings('.control-group').hide();
|
|
95
|
+
});
|
|
96
|
+
$(".table").tooltip({
|
|
97
|
+
selector: "th[rel=tooltip]"
|
|
98
|
+
});
|
|
99
|
+
$('[formnovalidate]').on('click', function() {
|
|
100
|
+
$(this).closest('form').attr('novalidate', true);
|
|
101
|
+
});
|
|
102
|
+
$.each($('#filters_box').data('options'), function() {
|
|
103
|
+
$.filters.append(this);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
$(document).on('click', ".bulk-link", function(event) {
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
$('#bulk_action').val($(this).data('action'));
|
|
110
|
+
$('#bulk_form').submit();
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
$(document).on('click', "#remove_filter", function(event) {
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
$("#filters_box").html("");
|
|
116
|
+
$("hr.filters_box").hide();
|
|
117
|
+
$(this).parent().siblings("input[type='search']").val("");
|
|
118
|
+
$(this).parents("form").submit();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
$(document).on('click', '#fields_to_export label input#check_all', function() {
|
|
122
|
+
var elems;
|
|
123
|
+
elems = $('#fields_to_export label input');
|
|
124
|
+
if ($('#fields_to_export label input#check_all').is(':checked')) {
|
|
125
|
+
$(elems).prop('checked', true);
|
|
126
|
+
} else {
|
|
127
|
+
$(elems).prop('checked', false);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
$(document).on('click', '#fields_to_export .reverse-selection', function() {
|
|
132
|
+
$(this).closest(".control-group").find(".controls").find("input").click();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
}(jQuery));
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.ra-sidescroll {
|
|
2
|
+
margin-bottom: 20px;
|
|
3
|
+
overflow-x: auto;
|
|
4
|
+
.table {
|
|
5
|
+
margin-bottom: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.ra-sidescroll-frozen {
|
|
9
|
+
position: sticky;
|
|
10
|
+
|
|
11
|
+
// border-right isn't sticky
|
|
12
|
+
&.last-of-frozen {
|
|
13
|
+
box-shadow: -1px 0 0 0 $table-border-color inset;
|
|
14
|
+
padding-right: $table-condensed-cell-padding + 1px;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Remove transparency on frozen cells.
|
|
19
|
+
$table-bg-default: if($table-bg == transparent, if($body-bg == transparent, #fff, $body-bg), $table-bg) !default;
|
|
20
|
+
.table-striped > tbody > tr:nth-child(even) > td, .table-striped > thead > tr > th {
|
|
21
|
+
background-color: $table-bg-default;
|
|
22
|
+
}
|
|
23
|
+
$table-bg-header-sort: #e2eff6 !default;
|
|
24
|
+
.table .ra-sidescroll-frozen {
|
|
25
|
+
&.headerSortUp, &.headerSortDown {
|
|
26
|
+
background-color: $table-bg-header-sort;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -55,12 +55,13 @@
|
|
|
55
55
|
@import "rails_admin/bootstrap-datetimepicker-build";
|
|
56
56
|
@import "rails_admin/ra.filtering-multiselect";
|
|
57
57
|
@import "rails_admin/ra.widgets";
|
|
58
|
+
@import "rails_admin/ra.sidescroll";
|
|
58
59
|
@import "rails_admin/jquery.colorpicker";
|
|
59
60
|
|
|
60
61
|
|
|
61
62
|
/*** Font-awesome ***/
|
|
62
63
|
|
|
63
|
-
@import 'font-awesome';
|
|
64
|
+
@import 'rails_admin/font-awesome';
|
|
64
65
|
@import 'rails_admin/base/font-awesome-4-compability';
|
|
65
66
|
|
|
66
67
|
/*** Bootstrap Theming ***/
|
|
@@ -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')
|
|
@@ -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|
|
|
@@ -138,7 +153,7 @@ 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
|
%(
|
|
@@ -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
|
|
@@ -56,8 +56,8 @@ 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
|
|
@@ -77,8 +77,8 @@ module RailsAdmin
|
|
|
77
77
|
options[:value] = filter_hash['v']
|
|
78
78
|
options[:label] = field.label
|
|
79
79
|
options[:operator] = filter_hash['o']
|
|
80
|
-
|
|
81
|
-
end
|
|
80
|
+
options
|
|
81
|
+
end if ordered_filters
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
end
|
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
%ul.nav.navbar-nav.navbar-right.root_links
|
|
2
|
-
- actions(:root).each do |action|
|
|
2
|
+
- actions(:root).select(&:show_in_navigation).each do |action|
|
|
3
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
|
|
@@ -1,18 +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: "width=device-width, initial-scale=1", name: "viewport; charset=utf-8"}
|
|
7
|
-
%meta{content: "NONE,NOARCHIVE", name: "robots"}
|
|
8
|
-
= csrf_meta_tag
|
|
9
|
-
= stylesheet_link_tag "rails_admin/rails_admin.css", media: :all
|
|
10
|
-
= javascript_include_tag "rails_admin/rails_admin.js"
|
|
4
|
+
= render "layouts/rails_admin/head"
|
|
11
5
|
%body.rails_admin
|
|
12
6
|
#admin-js{:'data-i18n-options' => I18n.t("admin.js").to_json}
|
|
13
|
-
-# Initialize JS simple i18n
|
|
14
|
-
:javascript
|
|
15
|
-
RailsAdmin.I18n.init('#{I18n.locale}', document.getElementById("admin-js").dataset.i18nOptions);
|
|
16
7
|
#loading.label.label-warning{style: 'display:none; position:fixed; right:20px; bottom:20px; z-index:100000'}= t('admin.loading')
|
|
17
8
|
%nav.navbar.navbar-default.navbar-fixed-top
|
|
18
9
|
= render "layouts/rails_admin/navigation"
|
|
@@ -21,4 +12,5 @@
|
|
|
21
12
|
.col-sm-3.col-md-2.sidebar-nav
|
|
22
13
|
= render "layouts/rails_admin/sidebar_navigation"
|
|
23
14
|
.col-sm-9.col-sm-offset-3.col-md-10.col-md-offset-2
|
|
24
|
-
.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)}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
- file = field.value
|
|
2
2
|
|
|
3
|
+
- if field.cache_method
|
|
4
|
+
= form.hidden_field(field.cache_method, value: field.cache_value)
|
|
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
|
|
5
8
|
= 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)
|
|
@@ -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 }
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
- field.attachments.each_with_index do |attachment, i|
|
|
2
|
-
.toggle
|
|
2
|
+
.toggle{class: field.reorderable? ? 'sortables' : ''}
|
|
3
3
|
= attachment.pretty_value
|
|
4
|
-
- if field.delete_method
|
|
5
|
-
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button'
|
|
4
|
+
- if field.delete_method || field.keep_method
|
|
5
|
+
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button'}
|
|
6
6
|
%i.icon-white.icon-trash
|
|
7
7
|
= I18n.t('admin.actions.delete.menu').capitalize + " #{field.label.downcase} ##{i + 1}"
|
|
8
|
-
|
|
9
|
-
|
|
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)
|
|
10
12
|
|
|
11
13
|
= form.file_field(field.name, field.html_attributes.reverse_merge({ data: { :"multiple-fileupload" => true }, multiple: true }))
|
|
12
14
|
|
|
@@ -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'
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
%span.show= link_to capitalize_first_letter(abstract_model.config.label_plural), index_path, class: 'pjax'
|
|
19
19
|
%td
|
|
20
20
|
- if last_created
|
|
21
|
-
= time_ago_in_words last_created
|
|
22
|
-
= t "admin.misc.ago"
|
|
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
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
%b= t('admin.export.select_all_fields')
|
|
17
17
|
.form-group.control-group
|
|
18
18
|
.col-sm-12
|
|
19
|
-
.well.well-sm{rel: 'tooltip', :
|
|
19
|
+
.well.well-sm.reverse-selection{rel: 'tooltip', title: t('admin.export.click_to_reverse_selection'), style: 'margin: 0; cursor: pointer;'}
|
|
20
20
|
%b= t('admin.export.fields_from', name: @model_config.label_plural.downcase)
|
|
21
21
|
.controls
|
|
22
22
|
.row
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
- fields = field.associated_model_config.export.with(controller: self.controller, view: self, object: (associated_model = field.associated_model_config.abstract_model.model).new).visible_fields.select{ |f| !f.association? }
|
|
41
41
|
.form-group.control-group
|
|
42
42
|
.col-sm-12
|
|
43
|
-
.well.well-sm{rel: 'tooltip', :
|
|
43
|
+
.well.well-sm.reverse-selection{rel: 'tooltip', title: t('admin.export.click_to_reverse_selection'), style: 'margin: 0; cursor: pointer;'}
|
|
44
44
|
%b= t('admin.export.fields_from_associated', name: field.label.downcase)
|
|
45
45
|
.controls
|
|
46
46
|
.row
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
properties = @model_config.list.with(controller: self.controller, view: self, object: @abstract_model.model.new).visible_fields
|
|
13
13
|
checkboxes = @model_config.list.checkboxes?
|
|
14
14
|
# columns paginate
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
unless (frozen_columns = @model_config.list.sidescroll_frozen_columns)
|
|
16
|
+
sets = get_column_sets(properties)
|
|
17
|
+
properties = sets[params[:set].to_i] || []
|
|
18
|
+
other_left = ((params[:set].to_i - 1) >= 0) && sets[params[:set].to_i - 1].present?
|
|
19
|
+
other_right = sets[params[:set].to_i + 1].present?
|
|
20
|
+
end
|
|
19
21
|
|
|
20
22
|
- content_for :contextual_tabs do
|
|
21
23
|
- if checkboxes
|
|
@@ -35,11 +37,6 @@
|
|
|
35
37
|
%li
|
|
36
38
|
%a{href: '#', :"data-field-label" => field.label, :"data-field-name" => field.name, :"data-field-options" => field_options.html_safe, :"data-field-type" => field.type, :"data-field-value" => "", :"data-field-datetimepicker-format" => (field.try(:parser) && field.parser.to_momentjs)}= capitalize_first_letter(field.label)
|
|
37
39
|
|
|
38
|
-
:javascript
|
|
39
|
-
jQuery(function($) {
|
|
40
|
-
#{ordered_filter_string}
|
|
41
|
-
});
|
|
42
|
-
|
|
43
40
|
%style
|
|
44
41
|
- properties.select{ |p| p.column_width.present? }.each do |property|
|
|
45
42
|
= "#list th.#{property.css_class} { width: #{property.column_width}px; min-width: #{property.column_width}px; }"
|
|
@@ -48,7 +45,7 @@
|
|
|
48
45
|
#list
|
|
49
46
|
= form_tag(index_path(params.except(*%w[page f query])), method: :get, class: "pjax-form form-inline") do
|
|
50
47
|
.well
|
|
51
|
-
%span#filters_box
|
|
48
|
+
%span#filters_box{data: {options: ordered_filter_options.to_json}}
|
|
52
49
|
%hr.filters_box{style: "display:#{ordered_filters.empty? ? 'none' : 'block'}"}
|
|
53
50
|
.input-group
|
|
54
51
|
%input.form-control.input-small{name: "query", type: "search", value: query, placeholder: t("admin.misc.filter")}
|
|
@@ -56,7 +53,7 @@
|
|
|
56
53
|
%button.btn.btn-primary{type: 'submit', :'data-disable-with' => '<i class="icon-white icon-refresh"></i> '.html_safe + t('admin.misc.refresh')}
|
|
57
54
|
%i.icon-white.icon-refresh
|
|
58
55
|
= t('admin.misc.refresh')
|
|
59
|
-
%button#remove_filter.btn.btn-info{title:
|
|
56
|
+
%button#remove_filter.btn.btn-info{title: t('admin.misc.reset_filters')}
|
|
60
57
|
%i.icon-white.icon-remove
|
|
61
58
|
- if export_action
|
|
62
59
|
%span{style: 'float:right'}= link_to wording_for(:link, export_action), export_path(params.except('set').except('page')), class: 'btn btn-info'
|
|
@@ -68,7 +65,7 @@
|
|
|
68
65
|
%li{class: "#{'active' if scope.to_s == params[:scope] || (params[:scope].blank? && index == 0)}"}
|
|
69
66
|
%a{href: index_path(params.merge(scope: scope, page: nil)), class: 'pjax'}= I18n.t("admin.scopes.#{@abstract_model.to_param}.#{scope}", default: I18n.t("admin.scopes.#{scope}", default: scope.to_s.titleize))
|
|
70
67
|
|
|
71
|
-
= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: "form" do
|
|
68
|
+
= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: ["form", frozen_columns ? 'ra-sidescroll' : nil], data: (frozen_columns ? {ra_sidescroll: frozen_columns} : {}) do
|
|
72
69
|
= hidden_field_tag :bulk_action
|
|
73
70
|
- if description.present?
|
|
74
71
|
%p
|
|
@@ -80,6 +77,8 @@
|
|
|
80
77
|
- if checkboxes
|
|
81
78
|
%th.shrink
|
|
82
79
|
%input.toggle{type: "checkbox"}
|
|
80
|
+
- if frozen_columns
|
|
81
|
+
%th.last.shrink
|
|
83
82
|
- if other_left
|
|
84
83
|
%th.other.left.shrink= "..."
|
|
85
84
|
- properties.each do |property|
|
|
@@ -90,12 +89,16 @@
|
|
|
90
89
|
%th{class: "#{property.sortable && "header pjax" || nil} #{sort_direction if property.sortable && sort_direction} #{property.css_class} #{property.type_css_class}", :'data-href' => (property.sortable && sort_location), rel: "tooltip", title: "#{property.hint}"}= capitalize_first_letter(property.label)
|
|
91
90
|
- if other_right
|
|
92
91
|
%th.other.right.shrink= "..."
|
|
93
|
-
|
|
92
|
+
- unless frozen_columns
|
|
93
|
+
%th.last.shrink
|
|
94
94
|
%tbody
|
|
95
95
|
- @objects.each do |object|
|
|
96
96
|
%tr{class: "#{@abstract_model.param_key}_row #{@model_config.list.with(object: object).row_css_class}"}
|
|
97
97
|
- if checkboxes
|
|
98
98
|
%td= check_box_tag "bulk_ids[]", object.id, false
|
|
99
|
+
- if frozen_columns
|
|
100
|
+
%td.last.links
|
|
101
|
+
%ul.inline.list-inline= menu_for :member, @abstract_model, object, true
|
|
99
102
|
- if @other_left_link ||= other_left && index_path(params.except('set').merge(params[:set].to_i != 1 ? {set: (params[:set].to_i - 1)} : {}))
|
|
100
103
|
%td.other.left= link_to "...", @other_left_link, class: 'pjax'
|
|
101
104
|
- properties.map{ |property| property.bind(:object, object) }.each do |property|
|
|
@@ -103,8 +106,9 @@
|
|
|
103
106
|
%td{class: "#{property.css_class} #{property.type_css_class}", title: strip_tags(value.to_s)}= value
|
|
104
107
|
- if @other_right_link ||= other_right && index_path(params.merge(set: (params[:set].to_i + 1)))
|
|
105
108
|
%td.other.right= link_to "...", @other_right_link, class: 'pjax'
|
|
106
|
-
|
|
107
|
-
%
|
|
109
|
+
- unless frozen_columns
|
|
110
|
+
%td.last.links
|
|
111
|
+
%ul.inline.list-inline= menu_for :member, @abstract_model, object, true
|
|
108
112
|
|
|
109
113
|
- if @model_config.list.limited_pagination
|
|
110
114
|
.row
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
- @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset|
|
|
2
2
|
- unless (fields = fieldset.with(object: @object, view: self, controller: self.controller).visible_fields).empty?
|
|
3
|
-
-
|
|
3
|
+
- unless (fields = fields.reject{ |f| RailsAdmin::config.compact_show_view && (f.formatted_value.nil? || f.formatted_value == '') }).empty?
|
|
4
4
|
.fieldset
|
|
5
5
|
%h4
|
|
6
6
|
= fieldset.label
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
%p= fieldset.help
|
|
9
9
|
%dl
|
|
10
10
|
- fields.each_with_index do |field, index|
|
|
11
|
-
|
|
12
|
-
%
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
= field.pretty_value
|
|
11
|
+
%dt
|
|
12
|
+
%span.label.label-info{class: "#{field.type_css_class} #{field.css_class}"}
|
|
13
|
+
= field.label
|
|
14
|
+
%dd.well
|
|
15
|
+
= field.pretty_value
|
|
@@ -29,6 +29,7 @@ en:
|
|
|
29
29
|
misc:
|
|
30
30
|
search: "Search"
|
|
31
31
|
filter: "Filter"
|
|
32
|
+
reset_filters: "Reset filters"
|
|
32
33
|
refresh: "Refresh"
|
|
33
34
|
show_all: "Show all"
|
|
34
35
|
add_filter: "Add filter"
|
|
@@ -41,8 +42,10 @@ en:
|
|
|
41
42
|
up: "Up"
|
|
42
43
|
down: "Down"
|
|
43
44
|
navigation: "Navigation"
|
|
45
|
+
root_navigation: "Actions"
|
|
44
46
|
navigation_static_label: "Links"
|
|
45
47
|
log_out: "Log out"
|
|
48
|
+
time_ago: "%{time} ago"
|
|
46
49
|
ago: "ago"
|
|
47
50
|
more: "Plus %{count} more %{models_name}"
|
|
48
51
|
flash:
|
|
@@ -46,7 +46,7 @@ module RailsAdmin
|
|
|
46
46
|
def initialize(model_or_model_name)
|
|
47
47
|
@model_name = model_or_model_name.to_s
|
|
48
48
|
ancestors = model.ancestors.collect(&:to_s)
|
|
49
|
-
if ancestors.include?('ActiveRecord::Base') && !model.abstract_class?
|
|
49
|
+
if ancestors.include?('ActiveRecord::Base') && !model.abstract_class? && model.table_exists?
|
|
50
50
|
initialize_active_record
|
|
51
51
|
elsif ancestors.include?('Mongoid::Document')
|
|
52
52
|
initialize_mongoid
|
|
@@ -178,8 +178,8 @@ module RailsAdmin
|
|
|
178
178
|
|
|
179
179
|
def build_statement_for_datetime_or_timestamp
|
|
180
180
|
start_date, end_date = get_filtering_duration
|
|
181
|
-
start_date = start_date.
|
|
182
|
-
end_date = end_date.
|
|
181
|
+
start_date = start_date.try(:beginning_of_day) if start_date
|
|
182
|
+
end_date = end_date.try(:end_of_day) if end_date
|
|
183
183
|
range_filter(start_date, end_date)
|
|
184
184
|
end
|
|
185
185
|
|