rails_admin 1.2.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +17 -12
- data/README.md +22 -23
- 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/ra.filter-box.js +150 -60
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +20 -20
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +14 -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 +2 -3
- 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 +3 -1
- data/app/helpers/rails_admin/application_helper.rb +19 -4
- data/app/helpers/rails_admin/form_builder.rb +8 -9
- data/app/helpers/rails_admin/main_helper.rb +6 -5
- 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 +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_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 +1 -2
- data/app/views/rails_admin/main/export.html.haml +2 -2
- data/app/views/rails_admin/main/history.html.haml +1 -1
- data/app/views/rails_admin/main/index.html.haml +33 -22
- data/app/views/rails_admin/main/show.html.haml +6 -7
- data/config/locales/rails_admin.en.yml +3 -1
- 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 +9 -3
- data/lib/rails_admin/adapters/active_record/property.rb +1 -5
- data/lib/rails_admin/adapters/active_record.rb +36 -19
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +2 -3
- data/lib/rails_admin/adapters/mongoid/association.rb +15 -4
- data/lib/rails_admin/adapters/mongoid/property.rb +2 -2
- data/lib/rails_admin/adapters/mongoid.rb +32 -15
- 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/dashboard.rb +5 -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 +21 -12
- data/lib/rails_admin/config/fields/association.rb +1 -1
- data/lib/rails_admin/config/fields/base.rb +6 -2
- 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 +3 -1
- 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 +9 -11
- 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 +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/datetime.rb +1 -1
- data/lib/rails_admin/config/fields/types/file_upload.rb +10 -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/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 +7 -0
- 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 +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 +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/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 +33 -0
- data/lib/rails_admin/config.rb +22 -11
- data/lib/rails_admin/engine.rb +35 -2
- 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 +52 -19
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +3 -5
- data/lib/rails_admin/support/csv_converter.rb +7 -1
- data/lib/rails_admin/version.rb +3 -3
- data/lib/rails_admin.rb +0 -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/{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 +185 -175
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -8
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -55
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -308
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e91bcbfc9a80b1718903e12a7a806f295115aab1917a5613632a9ee50a9b7973
|
4
|
+
data.tar.gz: 278d75adfbb87dbfc1751f9c510eba68a13809873fce08dc6ed6e53355f0b9c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a8fefb5416435b1e0a7622f6c6fc547b356b8d9e33fc30ea715030a33f4957952a587830a68565c574e50c1b3f6c98327a039accf75389a6d053a03c884be84
|
7
|
+
data.tar.gz: 85258795ff168eff5d247eb77cec0a8fd1b630e830eb17b8144914592e3d3fd50808c924248cca101c13a8a21683e75eb5a6407b768d3580bd04daef412b339f
|
data/Gemfile
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gem 'appraisal', '>= 2.0'
|
4
|
-
gem 'rails'
|
4
|
+
gem 'rails'
|
5
5
|
gem 'haml'
|
6
6
|
gem 'devise'
|
7
7
|
|
8
8
|
group :active_record do
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
gem 'paper_trail'
|
10
|
+
|
11
|
+
platforms :ruby, :mswin, :mingw, :x64_mingw do
|
12
|
+
gem 'mysql2', '>= 0.3.14'
|
12
13
|
gem 'sqlite3', '>= 1.3'
|
13
14
|
end
|
14
15
|
end
|
@@ -18,28 +19,32 @@ group :development, :test do
|
|
18
19
|
end
|
19
20
|
|
20
21
|
group :test do
|
21
|
-
gem '
|
22
|
-
gem '
|
23
|
-
gem '
|
24
|
-
gem 'coveralls'
|
25
|
-
gem 'database_cleaner', ['>= 1.2', '!= 1.4.0', '!= 1.5.0']
|
22
|
+
gem 'cancancan', '~> 3.0'
|
23
|
+
gem 'carrierwave', ['>= 2.0.0.rc', '< 3']
|
24
|
+
gem 'database_cleaner', ['>= 1.2', '!= 1.4.0', '!= 1.5.0', '< 2.0']
|
26
25
|
gem 'dragonfly', '~> 1.0'
|
27
|
-
gem '
|
26
|
+
gem 'factory_bot', '>= 4.2'
|
28
27
|
gem 'generator_spec', '>= 0.8'
|
29
28
|
gem 'launchy', '>= 2.2'
|
30
29
|
gem 'mini_magick', '>= 3.4'
|
31
|
-
gem 'paperclip', ['>= 3.4', '!= 4.3.0']
|
32
30
|
gem 'poltergeist', '~> 1.5'
|
33
31
|
gem 'pundit'
|
34
32
|
gem 'rack-cache', require: 'rack/cache'
|
35
33
|
gem 'rspec-rails', '>= 2.14'
|
36
|
-
gem '
|
34
|
+
gem 'rspec-expectations', '!= 3.8.3'
|
35
|
+
gem 'rspec-retry'
|
36
|
+
gem 'rubocop', '~> 0.68.1', require: false
|
37
|
+
gem 'rubocop-performance', require: false
|
37
38
|
gem 'simplecov', '>= 0.9', require: false
|
39
|
+
gem 'simplecov-lcov', require: false
|
38
40
|
gem 'timecop', '>= 0.5'
|
39
41
|
|
40
42
|
platforms :ruby_19 do
|
41
43
|
gem 'tins', '~> 1.6.0', require: false
|
42
44
|
end
|
45
|
+
|
46
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
47
|
+
gem 'tzinfo-data', platforms: %i(mingw mswin x64_mingw jruby)
|
43
48
|
end
|
44
49
|
|
45
50
|
gemspec
|
data/README.md
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# RailsAdmin
|
2
2
|
|
3
3
|
[![Gem Version](https://img.shields.io/gem/v/rails_admin.svg)][gem]
|
4
|
-
[![Build Status](https://img.shields.io/
|
5
|
-
[![Dependency Status](https://img.shields.io/gemnasium/sferik/rails_admin.svg)][gemnasium]
|
6
|
-
[![Code Climate](https://img.shields.io/codeclimate/github/sferik/rails_admin.svg)][codeclimate]
|
4
|
+
[![Build Status](https://img.shields.io/github/workflow/status/sferik/rails_admin/Test)][ghactions]
|
7
5
|
[![Coverage Status](https://img.shields.io/coveralls/sferik/rails_admin.svg)][coveralls]
|
8
6
|
[![Inline docs](http://inch-ci.org/github/sferik/rails_admin.svg)][inch]
|
7
|
+
[![Code Climate](https://codeclimate.com/github/sferik/rails_admin.svg)][codeclimate]
|
8
|
+
[![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rails_admin&package-manager=bundler&version-scheme=semver)][semver]
|
9
9
|
|
10
10
|
[gem]: https://rubygems.org/gems/rails_admin
|
11
|
-
[
|
12
|
-
[gemnasium]: https://gemnasium.com/sferik/rails_admin
|
13
|
-
[codeclimate]: https://codeclimate.com/github/sferik/rails_admin
|
11
|
+
[ghactions]: https://github.com/sferik/rails_admin/actions
|
14
12
|
[coveralls]: https://coveralls.io/r/sferik/rails_admin
|
15
13
|
[inch]: http://inch-ci.org/github/sferik/rails_admin
|
14
|
+
[codeclimate]: https://codeclimate.com/github/sferik/rails_admin
|
15
|
+
[semver]: https://dependabot.com/compatibility-score.html?dependency-name=rails_admin&package-manager=bundler&version-scheme=semver
|
16
16
|
|
17
17
|
RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.
|
18
18
|
|
@@ -20,10 +20,16 @@ RailsAdmin is a Rails engine that provides an easy-to-use interface for managing
|
|
20
20
|
|
21
21
|
### [Action required] Security issue
|
22
22
|
|
23
|
-
**RailsAdmin 1.0.0 and 1.
|
23
|
+
**RailsAdmin 2.0.1, 2.0.0 and up to 1.4.2 have been reported to have XSS vulnerability.** We strongly recommend that you upgrade RailsAdmin to 2.0.2 (and higher) or 1.4.3 as soon as possible, if you are on those versions. See [d72090ec](https://github.com/sferik/rails_admin/commit/d72090ec6a07c3b9b7b48ab50f3d405f91ff4375) for the detail.
|
24
|
+
|
25
|
+
## Getting started
|
24
26
|
|
25
|
-
|
27
|
+
* Check out [the docs][docs].
|
28
|
+
* Try the [live demo][demo]. ([Source code][dummy_app])
|
26
29
|
|
30
|
+
[demo]: http://rails-admin-tb.herokuapp.com/
|
31
|
+
[dummy_app]: https://github.com/bbenezech/dummy_app
|
32
|
+
[docs]: https://github.com/sferik/rails_admin/wiki
|
27
33
|
|
28
34
|
## Features
|
29
35
|
* CRUD any data with ease
|
@@ -42,7 +48,7 @@ This problem was reported by SourceClear, Inc.
|
|
42
48
|
|
43
49
|
## Installation
|
44
50
|
|
45
|
-
1. On your gemfile: `gem 'rails_admin', '~>
|
51
|
+
1. On your gemfile: `gem 'rails_admin', '~> 2.0'`
|
46
52
|
2. Run `bundle install`
|
47
53
|
3. Run `rails g rails_admin:install`
|
48
54
|
4. Provide a namespace for the routes when asked
|
@@ -50,7 +56,7 @@ This problem was reported by SourceClear, Inc.
|
|
50
56
|
|
51
57
|
## Configuration
|
52
58
|
### Global
|
53
|
-
In `config/initializers/rails_admin`:
|
59
|
+
In `config/initializers/rails_admin.rb`:
|
54
60
|
|
55
61
|
[Details](https://github.com/sferik/rails_admin/wiki/Base-configuration)
|
56
62
|
|
@@ -72,15 +78,6 @@ end
|
|
72
78
|
|
73
79
|
Details: [Models](https://github.com/sferik/rails_admin/wiki/Models), [Groups](https://github.com/sferik/rails_admin/wiki/Groups), [Fields](https://github.com/sferik/rails_admin/wiki/Fields)
|
74
80
|
|
75
|
-
## Documentation
|
76
|
-
https://github.com/sferik/rails_admin/wiki
|
77
|
-
|
78
|
-
## Demo
|
79
|
-
Take RailsAdmin for a [test drive][demo] with sample data. ([Source code.][dummy_app])
|
80
|
-
|
81
|
-
[demo]: http://rails-admin-tb.herokuapp.com/
|
82
|
-
[dummy_app]: https://github.com/bbenezech/dummy_app
|
83
|
-
|
84
81
|
## Support
|
85
82
|
If you have a question, please check this README, the wiki, and the [list of
|
86
83
|
known issues][troubleshoot].
|
@@ -95,13 +92,15 @@ list][list].
|
|
95
92
|
If you think you found a bug in RailsAdmin, you can [submit an issue](https://github.com/sferik/rails_admin/issues/new).
|
96
93
|
|
97
94
|
## Supported Ruby Versions
|
98
|
-
This library aims to support and is [tested against][
|
95
|
+
This library aims to support and is [tested against][ghactions] the following Ruby implementations:
|
99
96
|
|
100
|
-
* Ruby 2.1
|
101
97
|
* Ruby 2.2
|
102
98
|
* Ruby 2.3
|
103
|
-
*
|
99
|
+
* Ruby 2.4
|
100
|
+
* Ruby 2.5
|
101
|
+
* Ruby 2.6
|
102
|
+
* Ruby 2.7
|
103
|
+
* Ruby 3.0
|
104
104
|
* [JRuby][]
|
105
105
|
|
106
|
-
[rubinius]: http://rubinius.com
|
107
106
|
[jruby]: http://jruby.org/
|
@@ -0,0 +1 @@
|
|
1
|
+
// override this file in your application to add custom behaviour
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% require_asset "jquery-ui/effect" %>
|
2
|
+
<% if Jquery::Ui::Rails::JQUERY_UI_VERSION >= '1.12' %>
|
3
|
+
<% require_asset "jquery-ui/widgets/sortable" %>
|
4
|
+
<% require_asset "jquery-ui/widgets/autocomplete" %>
|
5
|
+
<% else %>
|
6
|
+
<% require_asset "jquery-ui/sortable" %>
|
7
|
+
<% require_asset "jquery-ui/autocomplete" %>
|
8
|
+
<% end %>
|
@@ -11,6 +11,7 @@
|
|
11
11
|
var field_value = options['value'];
|
12
12
|
var field_operator = options['operator'];
|
13
13
|
var select_options = options['select_options'];
|
14
|
+
var required = options['required'];
|
14
15
|
var index = options['index'];
|
15
16
|
var value_name = 'f[' + field_name + '][' + index + '][v]';
|
16
17
|
var operator_name = 'f[' + field_name + '][' + index + '][o]';
|
@@ -19,90 +20,178 @@
|
|
19
20
|
|
20
21
|
switch(field_type) {
|
21
22
|
case 'boolean':
|
22
|
-
|
23
|
-
'
|
24
|
-
'<option value="
|
25
|
-
'<option value="
|
26
|
-
'<option
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
control = $('<select class="input-sm form-control"></select>')
|
24
|
+
.prop('name', value_name)
|
25
|
+
.append('<option value="_discard">...</option>')
|
26
|
+
.append($('<option value="true"></option>').prop('selected', field_value == "true").text(RailsAdmin.I18n.t("true")))
|
27
|
+
.append($('<option value="false"></option>').prop('selected', field_value == "false").text(RailsAdmin.I18n.t("false")))
|
28
|
+
if (!required) {
|
29
|
+
control.append([
|
30
|
+
'<option disabled="disabled">---------</option>',
|
31
|
+
$('<option value="_present"></option>').prop('selected', field_value == "_present").text(RailsAdmin.I18n.t("is_present")),
|
32
|
+
$('<option value="_blank"></option>').prop('selected', field_value == "_blank").text(RailsAdmin.I18n.t("is_blank"))
|
33
|
+
])
|
34
|
+
}
|
30
35
|
break;
|
31
36
|
case 'date':
|
32
37
|
additional_control =
|
33
|
-
|
34
|
-
|
35
|
-
|
38
|
+
$('<input size="20" class="date additional-fieldset default input-sm form-control" type="text" />')
|
39
|
+
.css('display', (!field_operator || field_operator == "default") ? 'inline-block' : 'none')
|
40
|
+
.prop('name', value_name + '[]')
|
41
|
+
.prop('value', field_value[0] || '')
|
42
|
+
.add(
|
43
|
+
$('<input size="20" placeholder="-∞" class="date additional-fieldset between input-sm form-control" type="text" />')
|
44
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
45
|
+
.prop('name', value_name + '[]')
|
46
|
+
.prop('value', field_value[1] || '')
|
47
|
+
)
|
48
|
+
.add(
|
49
|
+
$('<input size="20" placeholder="∞" class="date additional-fieldset between input-sm form-control" type="text" />')
|
50
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
51
|
+
.prop('name', value_name + '[]')
|
52
|
+
.prop('value', field_value[2] || '')
|
53
|
+
);
|
36
54
|
case 'datetime':
|
37
55
|
case 'timestamp':
|
38
|
-
control = control || '<select class="switch-
|
39
|
-
|
40
|
-
'<option
|
41
|
-
'<option
|
42
|
-
'<option
|
43
|
-
'<option
|
44
|
-
'<option
|
45
|
-
'<option
|
46
|
-
|
47
|
-
|
48
|
-
|
56
|
+
control = control || $('<select class="switch-additional-fieldsets input-sm form-control"></select>')
|
57
|
+
.prop('name', operator_name)
|
58
|
+
.append($('<option data-additional-fieldset="default" value="default"></option>').prop('selected', field_operator == "default").text(RailsAdmin.I18n.t("date")))
|
59
|
+
.append($('<option data-additional-fieldset="between" value="between"></option>').prop('selected', field_operator == "between").text(RailsAdmin.I18n.t("between_and_")))
|
60
|
+
.append($('<option value="today"></option>').prop('selected', field_operator == "today").text(RailsAdmin.I18n.t("today")))
|
61
|
+
.append($('<option value="yesterday"></option>').prop('selected', field_operator == "yesterday").text(RailsAdmin.I18n.t("yesterday")))
|
62
|
+
.append($('<option value="this_week"></option>').prop('selected', field_operator == "this_week").text(RailsAdmin.I18n.t("this_week")))
|
63
|
+
.append($('<option value="last_week"></option>').prop('selected', field_operator == "last_week").text(RailsAdmin.I18n.t("last_week")))
|
64
|
+
if (!required) {
|
65
|
+
control.append([
|
66
|
+
'<option disabled="disabled">---------</option>',
|
67
|
+
$('<option value="_not_null"></option>').prop('selected', field_operator == "_not_null").text(RailsAdmin.I18n.t("is_present")),
|
68
|
+
$('<option value="_null"></option>').prop('selected', field_operator == "_null").text(RailsAdmin.I18n.t("is_blank"))
|
69
|
+
])
|
70
|
+
}
|
49
71
|
additional_control = additional_control ||
|
50
|
-
|
51
|
-
|
52
|
-
|
72
|
+
$('<input size="25" class="datetime additional-fieldset default input-sm form-control" type="text" />')
|
73
|
+
.css('display', (!field_operator || field_operator == "default") ? 'inline-block' : 'none')
|
74
|
+
.prop('name', value_name + '[]')
|
75
|
+
.prop('value', field_value[0] || '')
|
76
|
+
.add(
|
77
|
+
$('<input size="25" placeholder="-∞" class="datetime additional-fieldset between input-sm form-control" type="text" />')
|
78
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
79
|
+
.prop('name', value_name + '[]')
|
80
|
+
.prop('value', field_value[1] || '')
|
81
|
+
)
|
82
|
+
.add(
|
83
|
+
$('<input size="25" placeholder="∞" class="datetime additional-fieldset between input-sm form-control" type="text" />')
|
84
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
85
|
+
.prop('name', value_name + '[]')
|
86
|
+
.prop('value', field_value[2] || '')
|
87
|
+
);
|
53
88
|
break;
|
54
89
|
case 'enum':
|
55
90
|
var multiple_values = ((field_value instanceof Array) ? true : false)
|
56
|
-
control = '<select
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
91
|
+
control = $('<select class="select-single input-sm form-control"></select>')
|
92
|
+
.css('display', multiple_values ? 'none' : 'inline-block')
|
93
|
+
.prop('name', multiple_values ? undefined : value_name)
|
94
|
+
.data('name', value_name)
|
95
|
+
.append('<option value="_discard">...</option>')
|
96
|
+
if (!required) {
|
97
|
+
control.append([
|
98
|
+
$('<option value="_present"></option>').prop('selected', field_value == "_present").text(RailsAdmin.I18n.t("is_present")),
|
99
|
+
$('<option value="_blank"></option>').prop('selected', field_value == "_blank").text(RailsAdmin.I18n.t("is_blank")),
|
100
|
+
'<option disabled="disabled">---------</option>'
|
101
|
+
])
|
102
|
+
}
|
103
|
+
control.append(select_options)
|
104
|
+
.add(
|
105
|
+
$('<select multiple="multiple" class="select-multiple input-sm form-control"></select>')
|
106
|
+
.css('display', multiple_values ? 'inline-block' : 'none')
|
107
|
+
.prop('name', multiple_values ? value_name + '[]' : undefined)
|
108
|
+
.data('name', value_name + '[]')
|
109
|
+
.append(select_options)
|
110
|
+
)
|
111
|
+
.add(
|
112
|
+
$('<a href="#" class="switch-select"></a>')
|
113
|
+
.append($('<i></i>').addClass('icon-' + (multiple_values ? 'minus' : 'plus')))
|
114
|
+
);
|
67
115
|
break;
|
68
116
|
case 'string':
|
69
117
|
case 'text':
|
70
118
|
case 'belongs_to_association':
|
71
|
-
control = '<select class="switch-
|
72
|
-
|
73
|
-
|
74
|
-
'<option
|
75
|
-
'<option data-additional-fieldset="additional-fieldset"
|
76
|
-
'<option
|
77
|
-
'<option
|
78
|
-
'<option
|
79
|
-
|
80
|
-
|
119
|
+
control = $('<select class="switch-additional-fieldsets input-sm form-control"></select>')
|
120
|
+
.prop('value', field_operator)
|
121
|
+
.prop('name', operator_name)
|
122
|
+
.append('<option value="_discard">...</option>')
|
123
|
+
.append($('<option data-additional-fieldset="additional-fieldset" value="like"></option>').prop('selected', field_operator == "like").text(RailsAdmin.I18n.t("contains")))
|
124
|
+
.append($('<option data-additional-fieldset="additional-fieldset" value="is"></option>').prop('selected', field_operator == "is").text(RailsAdmin.I18n.t("is_exactly")))
|
125
|
+
.append($('<option data-additional-fieldset="additional-fieldset" value="starts_with"></option>').prop('selected', field_operator == "starts_with").text(RailsAdmin.I18n.t("starts_with")))
|
126
|
+
.append($('<option data-additional-fieldset="additional-fieldset" value="ends_with"></option>').prop('selected', field_operator == "ends_with").text(RailsAdmin.I18n.t("ends_with")))
|
127
|
+
if (!required) {
|
128
|
+
control.append([
|
129
|
+
'<option disabled="disabled">---------</option>',
|
130
|
+
$('<option value="_present"></option>').prop('selected', field_operator == "_present").text(RailsAdmin.I18n.t("is_present")),
|
131
|
+
$('<option value="_blank"></option>').prop('selected', field_operator == "_blank").text(RailsAdmin.I18n.t("is_blank"))
|
132
|
+
])
|
133
|
+
}
|
134
|
+
additional_control = $('<input class="additional-fieldset input-sm form-control" type="text" />')
|
135
|
+
.css('display', field_operator == "_present" || field_operator == "_blank" ? 'none' : 'inline-block')
|
136
|
+
.prop('name', value_name)
|
137
|
+
.prop('value', field_value);
|
81
138
|
break;
|
82
139
|
case 'integer':
|
83
140
|
case 'decimal':
|
84
141
|
case 'float':
|
85
|
-
control = '<select class="switch-
|
86
|
-
|
87
|
-
'<option
|
88
|
-
'<option
|
89
|
-
|
90
|
-
|
91
|
-
|
142
|
+
control = $('<select class="switch-additional-fieldsets input-sm form-control"></select>')
|
143
|
+
.prop('name', operator_name)
|
144
|
+
.append($('<option data-additional-fieldset="default" value="default"></option>').prop('selected', field_operator == "default").text(RailsAdmin.I18n.t("number")))
|
145
|
+
.append($('<option data-additional-fieldset="between" value="between"></option>').prop('selected', field_operator == "between").text(RailsAdmin.I18n.t("between_and_")))
|
146
|
+
if (!required) {
|
147
|
+
control.append([
|
148
|
+
'<option disabled="disabled">---------</option>',
|
149
|
+
$('<option value="_not_null"></option>').prop('selected', field_operator == "_not_null").text(RailsAdmin.I18n.t("is_present")),
|
150
|
+
$('<option value="_null"></option>').prop('selected', field_operator == "_null").text(RailsAdmin.I18n.t("is_blank"))
|
151
|
+
])
|
152
|
+
}
|
92
153
|
additional_control =
|
93
|
-
|
94
|
-
|
95
|
-
|
154
|
+
$('<input class="additional-fieldset default input-sm form-control" type="text" />')
|
155
|
+
.css('display', (!field_operator || field_operator == "default") ? 'inline-block' : 'none')
|
156
|
+
.prop('type', field_type)
|
157
|
+
.prop('name', value_name + '[]')
|
158
|
+
.prop('value', field_value[0] || '')
|
159
|
+
.add(
|
160
|
+
$('<input placeholder="-∞" class="additional-fieldset between input-sm form-control" />')
|
161
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
162
|
+
.prop('type', field_type)
|
163
|
+
.prop('name', value_name + '[]')
|
164
|
+
.prop('value', field_value[1] || '')
|
165
|
+
)
|
166
|
+
.add(
|
167
|
+
$('<input placeholder="∞" class="additional-fieldset between input-sm form-control" />')
|
168
|
+
.css('display', (field_operator == "between") ? 'inline-block' : 'none')
|
169
|
+
.prop('type', field_type)
|
170
|
+
.prop('name', value_name + '[]')
|
171
|
+
.prop('value', field_value[2] || '')
|
172
|
+
);
|
96
173
|
break;
|
97
174
|
default:
|
98
|
-
control = '<input type="text" class="input-sm form-control"
|
175
|
+
control = $('<input type="text" class="input-sm form-control" />')
|
176
|
+
.prop('name', value_name)
|
177
|
+
.prop('value', field_value);
|
99
178
|
break;
|
100
179
|
}
|
101
180
|
|
181
|
+
var filterContainerId = field_name + '-' + index + '-filter-container';
|
182
|
+
$('p#' + filterContainerId).remove();
|
183
|
+
|
102
184
|
var $content = $('<p>')
|
185
|
+
.attr('id', filterContainerId)
|
103
186
|
.addClass('filter form-search')
|
104
|
-
.append(
|
105
|
-
|
187
|
+
.append(
|
188
|
+
$('<span class="label label-info form-label"></span>')
|
189
|
+
.append($('<a href="#delete" class="delete"></a>').append('<i class="fa fa-trash-o fa-fw icon-white"></i>').append(document.createTextNode(field_label)))
|
190
|
+
)
|
191
|
+
.append(' ')
|
192
|
+
.append(control)
|
193
|
+
.append(' ')
|
194
|
+
.append(additional_control);
|
106
195
|
|
107
196
|
$('#filters_box').append($content);
|
108
197
|
|
@@ -125,6 +214,7 @@
|
|
125
214
|
value: $(this).data('field-value'),
|
126
215
|
operator: $(this).data('field-operator'),
|
127
216
|
select_options: $(this).data('field-options'),
|
217
|
+
required: $(this).data('field-required'),
|
128
218
|
index: $.now().toString().slice(6,11),
|
129
219
|
datetimepicker_format: $(this).data('field-datetimepicker-format')
|
130
220
|
});
|
@@ -146,7 +236,7 @@
|
|
146
236
|
$(this).find('i').toggleClass("icon-plus icon-minus")
|
147
237
|
});
|
148
238
|
|
149
|
-
$(document).on('change', "#filters_box .switch-
|
239
|
+
$(document).on('change', "#filters_box .switch-additional-fieldsets", function(e) {
|
150
240
|
var selected_option = $(this).find('option:selected');
|
151
241
|
if(klass = $(selected_option).data('additional-fieldset')) {
|
152
242
|
$(this).siblings('.additional-fieldset:not(.' + klass + ')').hide('slow');
|
@@ -19,13 +19,13 @@
|
|
19
19
|
sortable: false,
|
20
20
|
removable: true,
|
21
21
|
regional: {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
add: 'Add',
|
23
|
+
chooseAll: 'Choose all',
|
24
|
+
clearAll: 'Clear all',
|
25
|
+
down: 'Down',
|
26
|
+
remove: 'Remove',
|
27
|
+
search: 'Search',
|
28
|
+
up: 'Up'
|
29
29
|
},
|
30
30
|
searchDelay: 400,
|
31
31
|
remote_source: null,
|
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
/* Add all to selection */
|
120
120
|
this.addAll.click(function(e){
|
121
|
-
widget._select($('option', widget.collection));
|
121
|
+
widget._select($('option:not(:disabled)', widget.collection));
|
122
122
|
e.preventDefault();
|
123
123
|
widget.selection.trigger('change');
|
124
124
|
});
|
@@ -186,12 +186,13 @@
|
|
186
186
|
}
|
187
187
|
if (filtered.length > 0) {
|
188
188
|
widget.collection[0].innerHTML = '';
|
189
|
-
var filteredContainer = [];
|
190
189
|
for (i = 0; i < filtered.length; i++) {
|
191
|
-
var newOptions = '<option
|
192
|
-
|
190
|
+
var newOptions = $('<option></option>')
|
191
|
+
.prop('value', matches[filtered[i]].id)
|
192
|
+
.prop('title', matches[filtered[i]].label)
|
193
|
+
.text(matches[filtered[i]].label);
|
194
|
+
$(widget.collection[0]).append(newOptions);
|
193
195
|
}
|
194
|
-
widget.collection[0].innerHTML = filteredContainer.join("");
|
195
196
|
} else {
|
196
197
|
widget.collection[0].innerHTML = widget.noObjectsPlaceholder;
|
197
198
|
}
|
@@ -212,12 +213,11 @@
|
|
212
213
|
var widget = this;
|
213
214
|
|
214
215
|
this.element.find("option").each(function(i, option) {
|
216
|
+
widget._cache['o_' + option.value] = {id: option.value, value: $(option).text()};
|
215
217
|
if (option.selected) {
|
216
|
-
widget.
|
217
|
-
$(option).clone().appendTo(widget.selection).attr("selected", false).attr("title", $(option).text());
|
218
|
+
$(option).clone().appendTo(widget.selection).prop("selected", false).prop("title", $(option).text());
|
218
219
|
} else {
|
219
|
-
widget.
|
220
|
-
$(option).clone().appendTo(widget.collection).attr("selected", false).attr("title", $(option).text());
|
220
|
+
$(option).clone().appendTo(widget.collection).prop("selected", false).prop("title", $(option).text());
|
221
221
|
}
|
222
222
|
});
|
223
223
|
},
|
@@ -227,7 +227,7 @@
|
|
227
227
|
options.each(function(i, option) {
|
228
228
|
widget.element.find('option[value="' + option.value + '"]').removeAttr("selected");
|
229
229
|
});
|
230
|
-
$(options).appendTo(this.collection).
|
230
|
+
$(options).appendTo(this.collection).prop('selected', false);
|
231
231
|
},
|
232
232
|
|
233
233
|
_query: function(query, success) {
|
@@ -282,12 +282,12 @@
|
|
282
282
|
options.each(function(i, option) {
|
283
283
|
var el = widget.element.find('option[value="' + option.value + '"]');
|
284
284
|
if (el.length) {
|
285
|
-
el.
|
285
|
+
el.prop("selected", true);
|
286
286
|
} else {
|
287
|
-
widget.element.append($('<option></option>').
|
287
|
+
widget.element.append($('<option></option>').prop('value', option.value).prop('selected', true));
|
288
288
|
}
|
289
289
|
});
|
290
|
-
$(options).appendTo(this.selection).
|
290
|
+
$(options).appendTo(this.selection).prop('selected', false);
|
291
291
|
},
|
292
292
|
|
293
293
|
_move: function(direction, options) {
|
@@ -31,21 +31,22 @@
|
|
31
31
|
button: null,
|
32
32
|
input: null,
|
33
33
|
select: null,
|
34
|
+
filtering_select: null,
|
34
35
|
|
35
36
|
_create: function() {
|
36
|
-
|
37
|
+
this.filtering_select = this.element.siblings(
|
37
38
|
'[data-input-for="' + this.element.attr('id') + '"]'
|
38
39
|
);
|
39
40
|
|
40
41
|
// When using the browser back and forward buttons, it is possible that
|
41
42
|
// the autocomplete field will be cached which causes duplicate fields
|
42
43
|
// to be generated.
|
43
|
-
if (filtering_select.length > 0) {
|
44
|
-
this.input = filtering_select.children('input');
|
45
|
-
this.button = filtering_select.children('.input-group-btn');
|
44
|
+
if (this.filtering_select.length > 0) {
|
45
|
+
this.input = this.filtering_select.children('input');
|
46
|
+
this.button = this.filtering_select.children('.input-group-btn');
|
46
47
|
} else {
|
47
48
|
this.element.hide();
|
48
|
-
filtering_select = this._inputGroup(this.element.attr('id'));
|
49
|
+
this.filtering_select = this._inputGroup(this.element.attr('id'));
|
49
50
|
this.input = this._inputField();
|
50
51
|
this.button = this._buttonField();
|
51
52
|
}
|
@@ -56,7 +57,7 @@
|
|
56
57
|
this._overloadRenderItem();
|
57
58
|
this._autocompleteDropdownEvent(this.button);
|
58
59
|
|
59
|
-
return filtering_select.append(this.input)
|
60
|
+
return this.filtering_select.append(this.input)
|
60
61
|
.append(this.button)
|
61
62
|
.insertAfter(this.element);
|
62
63
|
},
|
@@ -189,6 +190,11 @@
|
|
189
190
|
input.attr('placeholder', this.element.attr('placeholder'));
|
190
191
|
}
|
191
192
|
|
193
|
+
if (this.element.attr('required')) {
|
194
|
+
input.attr('required', this.element.attr('required'));
|
195
|
+
this.element.attr('required', false);
|
196
|
+
}
|
197
|
+
|
192
198
|
return input;
|
193
199
|
},
|
194
200
|
|
@@ -196,7 +202,7 @@
|
|
196
202
|
return $('<div>')
|
197
203
|
.addClass('input-group filtering-select col-sm-2')
|
198
204
|
.attr('data-input-for', inputFor)
|
199
|
-
.css('float',
|
205
|
+
.css('float', this.element.css("float"));
|
200
206
|
},
|
201
207
|
|
202
208
|
_initAutocomplete: function() {
|
@@ -281,6 +287,7 @@
|
|
281
287
|
this.input.remove();
|
282
288
|
this.button.remove();
|
283
289
|
this.element.show();
|
290
|
+
this.filtering_select.remove();
|
284
291
|
$.Widget.prototype.destroy.call(this);
|
285
292
|
}
|
286
293
|
});
|