rails_admin 1.4.3 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b602512e6e725b80b4710d009beb60fffc8089f20a677579174f5af05ed7a728
|
4
|
+
data.tar.gz: b983654e17ee5f1a15bab17d2d5afbba7f06eb7d8b6f4be92112f5e9ad41ddf7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2ec664fd9c217fd62d3ca65af5718e095f8de4ac3919ea0fe29b2e8d203e984583dd11877aa1ff8c40e2e8a696e55f304f24312da87da08051ba0a2bc33c99a
|
7
|
+
data.tar.gz: d2350c08e53ba3ed67e65bdd75863f4fd02b7c26ace2fdcafae81363b6567d6c5db52bcb2631224d0f5d291e46a9e577187fdcdc4bbc6e96613083dd8266b948
|
data/Gemfile
CHANGED
@@ -8,9 +8,9 @@ gem 'devise'
|
|
8
8
|
group :active_record do
|
9
9
|
gem 'paper_trail'
|
10
10
|
|
11
|
-
platforms :ruby, :mswin, :mingw do
|
11
|
+
platforms :ruby, :mswin, :mingw, :x64_mingw do
|
12
12
|
gem 'mysql2', '>= 0.3.14'
|
13
|
-
gem 'sqlite3', '
|
13
|
+
gem 'sqlite3', '>= 1.3'
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -19,7 +19,8 @@ group :development, :test do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
group :test do
|
22
|
-
gem '
|
22
|
+
gem 'cancancan', '~> 3.0'
|
23
|
+
gem 'carrierwave', ['>= 2.0.0.rc', '< 3']
|
23
24
|
gem 'coveralls'
|
24
25
|
gem 'database_cleaner', ['>= 1.2', '!= 1.4.0', '!= 1.5.0']
|
25
26
|
gem 'dragonfly', '~> 1.0'
|
@@ -32,13 +33,20 @@ group :test do
|
|
32
33
|
gem 'pundit'
|
33
34
|
gem 'rack-cache', require: 'rack/cache'
|
34
35
|
gem 'rspec-rails', '>= 2.14'
|
35
|
-
gem '
|
36
|
+
gem 'rspec-expectations', '!= 3.8.3'
|
37
|
+
gem 'rubocop', '~> 0.68.1'
|
38
|
+
gem 'rubocop-performance'
|
36
39
|
gem 'simplecov', '>= 0.9', require: false
|
40
|
+
gem 'shrine', '~> 2.0'
|
41
|
+
gem 'shrine-memory'
|
37
42
|
gem 'timecop', '>= 0.5'
|
38
43
|
|
39
44
|
platforms :ruby_19 do
|
40
45
|
gem 'tins', '~> 1.6.0', require: false
|
41
46
|
end
|
47
|
+
|
48
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
49
|
+
gem 'tzinfo-data', platforms: %i(mingw mswin x64_mingw jruby)
|
42
50
|
end
|
43
51
|
|
44
52
|
gemspec
|
data/README.md
CHANGED
@@ -20,9 +20,7 @@ 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
|
-
|
24
|
-
>
|
25
|
-
> Also, 1.0.0 and 1.1.0 is known to have [CSRF vulnerability](https://github.com/sferik/rails_admin/commit/b13e879eb93b661204e9fb5e55f7afa4f397537a), too.
|
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.
|
26
24
|
|
27
25
|
## Getting started
|
28
26
|
|
@@ -50,7 +48,7 @@ RailsAdmin is a Rails engine that provides an easy-to-use interface for managing
|
|
50
48
|
|
51
49
|
## Installation
|
52
50
|
|
53
|
-
1. On your gemfile: `gem 'rails_admin', '~>
|
51
|
+
1. On your gemfile: `gem 'rails_admin', '~> 2.0'`
|
54
52
|
2. Run `bundle install`
|
55
53
|
3. Run `rails g rails_admin:install`
|
56
54
|
4. Provide a namespace for the routes when asked
|
@@ -96,13 +94,12 @@ If you think you found a bug in RailsAdmin, you can [submit an issue](https://gi
|
|
96
94
|
## Supported Ruby Versions
|
97
95
|
This library aims to support and is [tested against][travis] the following Ruby implementations:
|
98
96
|
|
99
|
-
* Ruby 2.1
|
100
97
|
* Ruby 2.2
|
101
98
|
* Ruby 2.3
|
102
99
|
* Ruby 2.4
|
103
100
|
* Ruby 2.5
|
104
|
-
*
|
101
|
+
* Ruby 2.6
|
102
|
+
* Ruby 2.7
|
105
103
|
* [JRuby][]
|
106
104
|
|
107
|
-
[rubinius]: http://rubinius.com
|
108
105
|
[jruby]: http://jruby.org/
|
@@ -0,0 +1 @@
|
|
1
|
+
// override this file in your application to add custom behaviour
|
@@ -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
|
});
|
@@ -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
|
},
|
@@ -201,7 +202,7 @@
|
|
201
202
|
return $('<div>')
|
202
203
|
.addClass('input-group filtering-select col-sm-2')
|
203
204
|
.attr('data-input-for', inputFor)
|
204
|
-
.css('float',
|
205
|
+
.css('float', this.element.css("float"));
|
205
206
|
},
|
206
207
|
|
207
208
|
_initAutocomplete: function() {
|
@@ -286,6 +287,7 @@
|
|
286
287
|
this.input.remove();
|
287
288
|
this.button.remove();
|
288
289
|
this.element.show();
|
290
|
+
this.filtering_select.remove();
|
289
291
|
$.Widget.prototype.destroy.call(this);
|
290
292
|
}
|
291
293
|
});
|
@@ -0,0 +1,28 @@
|
|
1
|
+
(function() {
|
2
|
+
var Locale;
|
3
|
+
|
4
|
+
this.RailsAdmin || (this.RailsAdmin = {});
|
5
|
+
|
6
|
+
this.RailsAdmin.I18n = Locale = (function() {
|
7
|
+
function Locale() {}
|
8
|
+
|
9
|
+
Locale.init = function(locale, translations) {
|
10
|
+
this.locale = locale;
|
11
|
+
this.translations = translations;
|
12
|
+
moment.locale(this.locale);
|
13
|
+
if (typeof this.translations === "string") {
|
14
|
+
this.translations = JSON.parse(this.translations);
|
15
|
+
}
|
16
|
+
};
|
17
|
+
|
18
|
+
Locale.t = function(key) {
|
19
|
+
var humanize;
|
20
|
+
humanize = key.charAt(0).toUpperCase() + key.replace(/_/g, " ").slice(1);
|
21
|
+
return this.translations[key] || humanize;
|
22
|
+
};
|
23
|
+
|
24
|
+
return Locale;
|
25
|
+
|
26
|
+
})();
|
27
|
+
|
28
|
+
}).call(this);
|
@@ -0,0 +1,59 @@
|
|
1
|
+
(function($) {
|
2
|
+
$(document).ready(function() {
|
3
|
+
return window.nestedFormEvents.insertFields = function(content, assoc, link) {
|
4
|
+
var tab_content;
|
5
|
+
tab_content = $(link).closest(".controls").siblings(".tab-content");
|
6
|
+
tab_content.append(content);
|
7
|
+
return tab_content.children().last();
|
8
|
+
};
|
9
|
+
});
|
10
|
+
|
11
|
+
$(document).on('nested:fieldAdded', 'form', function(content) {
|
12
|
+
var controls, field, nav, new_tab, one_to_one, parent_group, toggler;
|
13
|
+
field = content.field.addClass('tab-pane').attr('id', 'unique-id-' + (new Date().getTime()));
|
14
|
+
new_tab = $('<li></li>').append(
|
15
|
+
$('<a></a>').attr('data-toggle', 'tab').attr('href', '#' + field.attr('id')).text(field.children('.object-infos').data('object-label'))
|
16
|
+
)
|
17
|
+
parent_group = field.closest('.control-group');
|
18
|
+
controls = parent_group.children('.controls');
|
19
|
+
one_to_one = controls.data('nestedone') !== void 0;
|
20
|
+
nav = controls.children('.nav');
|
21
|
+
content = parent_group.children('.tab-content');
|
22
|
+
toggler = controls.find('.toggler');
|
23
|
+
nav.append(new_tab);
|
24
|
+
$(window.document).trigger('rails_admin.dom_ready', [field, parent_group]);
|
25
|
+
new_tab.children('a').tab('show');
|
26
|
+
if (!one_to_one) {
|
27
|
+
nav.select(':hidden').show('slow');
|
28
|
+
}
|
29
|
+
content.select(':hidden').show('slow');
|
30
|
+
toggler.addClass('active').removeClass('disabled').children('i').addClass('icon-chevron-down').removeClass('icon-chevron-right');
|
31
|
+
if (one_to_one) {
|
32
|
+
controls.find('.add_nested_fields').removeClass('add_nested_fields').text(field.children('.object-infos').data('object-label'));
|
33
|
+
}
|
34
|
+
});
|
35
|
+
|
36
|
+
$(document).on('nested:fieldRemoved', 'form', function(content) {
|
37
|
+
var add_button, controls, current_li, field, nav, one_to_one, parent_group, toggler;
|
38
|
+
field = content.field;
|
39
|
+
nav = field.closest(".control-group").children('.controls').children('.nav');
|
40
|
+
current_li = nav.children('li').has('a[href="#' + field.attr('id') + '"]');
|
41
|
+
parent_group = field.closest(".control-group");
|
42
|
+
controls = parent_group.children('.controls');
|
43
|
+
one_to_one = controls.data('nestedone') !== void 0;
|
44
|
+
toggler = controls.find('.toggler');
|
45
|
+
(current_li.next().length ? current_li.next() : current_li.prev()).children('a:first').tab('show');
|
46
|
+
current_li.remove();
|
47
|
+
if (nav.children().length === 0) {
|
48
|
+
nav.select(':visible').hide('slow');
|
49
|
+
toggler.removeClass('active').addClass('disabled').children('i').removeClass('icon-chevron-down').addClass('icon-chevron-right');
|
50
|
+
}
|
51
|
+
if (one_to_one) {
|
52
|
+
add_button = toggler.next();
|
53
|
+
add_button.addClass('add_nested_fields').html(add_button.data('add-label'));
|
54
|
+
}
|
55
|
+
field.find('[required]').each(function() {
|
56
|
+
$(this).removeAttr('required');
|
57
|
+
});
|
58
|
+
});
|
59
|
+
}(jQuery));
|
@@ -0,0 +1,31 @@
|
|
1
|
+
(function($) {
|
2
|
+
function setFrozenColPositions() {
|
3
|
+
var $listForm, frozenColumns;
|
4
|
+
|
5
|
+
$listForm = $('#bulk_form');
|
6
|
+
if (!$listForm.is('.ra-sidescroll')) {
|
7
|
+
return;
|
8
|
+
}
|
9
|
+
frozenColumns = $listForm.data('ra-sidescroll');
|
10
|
+
|
11
|
+
$listForm.find('table tr').each(function(index, tr) {
|
12
|
+
var firstPosition = 0;
|
13
|
+
|
14
|
+
$(tr).children().slice(0, frozenColumns).each(function(idx, td) {
|
15
|
+
var tdLeft;
|
16
|
+
$(td).addClass('ra-sidescroll-frozen');
|
17
|
+
if (idx === frozenColumns - 1) {
|
18
|
+
$(td).addClass('last-of-frozen');
|
19
|
+
}
|
20
|
+
tdLeft = $(td).position().left;
|
21
|
+
if (idx === 0) {
|
22
|
+
firstPosition = tdLeft;
|
23
|
+
}
|
24
|
+
td.style.left = (tdLeft - firstPosition) + "px";
|
25
|
+
});
|
26
|
+
});
|
27
|
+
};
|
28
|
+
|
29
|
+
$(window).on('load', setFrozenColPositions);
|
30
|
+
$(document).on('rails_admin.dom_ready', setFrozenColPositions);
|
31
|
+
})(jQuery);
|
@@ -0,0 +1,379 @@
|
|
1
|
+
(function($) {
|
2
|
+
$(document).on('rails_admin.dom_ready', function(e, content) {
|
3
|
+
var $editors, array, config_options, goBootstrapWysihtml5s, goCkeditors, goCodeMirrors, goFroalaWysiwygs, goSimpleMDEs, options;
|
4
|
+
content = content ? content : $('form');
|
5
|
+
if (content.length) {
|
6
|
+
content.find('[data-color]').each(function() {
|
7
|
+
var that;
|
8
|
+
that = this;
|
9
|
+
return $(this).ColorPicker({
|
10
|
+
color: $(that).val(),
|
11
|
+
onShow: function(el) {
|
12
|
+
$(el).fadeIn(500);
|
13
|
+
return false;
|
14
|
+
},
|
15
|
+
onHide: function(el) {
|
16
|
+
$(el).fadeOut(500);
|
17
|
+
return false;
|
18
|
+
},
|
19
|
+
onChange: function(hsb, hex, rgb) {
|
20
|
+
$(that).val(hex);
|
21
|
+
$(that).css('backgroundColor', '#' + hex);
|
22
|
+
}
|
23
|
+
});
|
24
|
+
});
|
25
|
+
$.fn.datetimepicker.defaults.icons = {
|
26
|
+
time: 'fa fa-clock-o',
|
27
|
+
date: 'fa fa-calendar',
|
28
|
+
up: 'fa fa-chevron-up',
|
29
|
+
down: 'fa fa-chevron-down',
|
30
|
+
previous: 'fa fa-angle-double-left',
|
31
|
+
next: 'fa fa-angle-double-right',
|
32
|
+
today: 'fa fa-dot-circle-o',
|
33
|
+
clear: 'fa fa-trash',
|
34
|
+
close: 'fa fa-times'
|
35
|
+
};
|
36
|
+
content.find('[data-datetimepicker]').each(function() {
|
37
|
+
var options;
|
38
|
+
options = $(this).data('options');
|
39
|
+
$.extend(options, {
|
40
|
+
locale: RailsAdmin.I18n.locale
|
41
|
+
});
|
42
|
+
$(this).datetimepicker(options);
|
43
|
+
});
|
44
|
+
content.find('[data-enumeration]').each(function() {
|
45
|
+
if ($(this).is('[multiple]')) {
|
46
|
+
$(this).filteringMultiselect($(this).data('options'));
|
47
|
+
} else {
|
48
|
+
$(this).filteringSelect($(this).data('options'));
|
49
|
+
}
|
50
|
+
});
|
51
|
+
content.find('[data-fileupload]').each(function() {
|
52
|
+
var parent;
|
53
|
+
parent = $(this).closest('.controls');
|
54
|
+
parent.find('.btn-remove-image').on('click', function() {
|
55
|
+
$(this).siblings('[type=checkbox]').click();
|
56
|
+
parent.find('.toggle').toggle('slow');
|
57
|
+
$(this).toggleClass('btn-danger btn-info');
|
58
|
+
return false;
|
59
|
+
});
|
60
|
+
});
|
61
|
+
content.find('[data-fileupload]').change(function() {
|
62
|
+
var ext, image_container, input, reader;
|
63
|
+
input = this;
|
64
|
+
image_container = $("#" + input.id).parent().children(".preview");
|
65
|
+
if (!image_container.length) {
|
66
|
+
image_container = $("#" + input.id).parent().prepend($('<img />').addClass('preview').addClass('img-thumbnail')).find('img.preview');
|
67
|
+
image_container.parent().find('img:not(.preview)').hide();
|
68
|
+
}
|
69
|
+
ext = $("#" + input.id).val().split('.').pop().toLowerCase();
|
70
|
+
if (input.files && input.files[0] && $.inArray(ext, ['gif', 'png', 'jpg', 'jpeg', 'bmp']) !== -1) {
|
71
|
+
reader = new FileReader();
|
72
|
+
reader.onload = function(e) {
|
73
|
+
image_container.attr("src", e.target.result);
|
74
|
+
};
|
75
|
+
reader.readAsDataURL(input.files[0]);
|
76
|
+
image_container.show();
|
77
|
+
} else {
|
78
|
+
image_container.hide();
|
79
|
+
}
|
80
|
+
});
|
81
|
+
content.find('[data-multiple-fileupload]').each(function() {
|
82
|
+
$(this).closest('.controls').find('.btn-remove-image').on('click', function() {
|
83
|
+
$(this).siblings('[type=checkbox]').click();
|
84
|
+
$(this).parent('.toggle').toggle('slow');
|
85
|
+
$(this).toggleClass('btn-danger btn-info');
|
86
|
+
return false;
|
87
|
+
}).end().sortable({
|
88
|
+
items: '.sortables'
|
89
|
+
});
|
90
|
+
});
|
91
|
+
content.find('[data-multiple-fileupload]').change(function() {
|
92
|
+
var ext, file, i, image_container, input, len, ref, results;
|
93
|
+
input = this;
|
94
|
+
$("#" + input.id).parent().children(".preview").remove();
|
95
|
+
ref = input.files;
|
96
|
+
results = [];
|
97
|
+
for (i = 0, len = ref.length; i < len; i++) {
|
98
|
+
file = ref[i];
|
99
|
+
ext = file.name.split('.').pop().toLowerCase();
|
100
|
+
if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg', 'bmp']) === -1) {
|
101
|
+
continue;
|
102
|
+
}
|
103
|
+
image_container = $('<img />').addClass('preview').addClass('img-thumbnail');
|
104
|
+
results.push((function(image_container) {
|
105
|
+
var reader;
|
106
|
+
reader = new FileReader();
|
107
|
+
reader.onload = function(e) {
|
108
|
+
image_container.attr("src", e.target.result);
|
109
|
+
};
|
110
|
+
reader.readAsDataURL(file);
|
111
|
+
return $("#" + input.id).parent().append($('<div></div>').addClass('preview').append(image_container));
|
112
|
+
})(image_container));
|
113
|
+
}
|
114
|
+
return results;
|
115
|
+
});
|
116
|
+
content.find('[data-filteringmultiselect]').each(function() {
|
117
|
+
$(this).filteringMultiselect($(this).data('options'));
|
118
|
+
if ($(this).parents("#modal").length) {
|
119
|
+
$(this).siblings('.btn').remove();
|
120
|
+
} else {
|
121
|
+
$(this).parents('.control-group').first().remoteForm();
|
122
|
+
}
|
123
|
+
});
|
124
|
+
content.find('[data-filteringselect]').each(function() {
|
125
|
+
$(this).filteringSelect($(this).data('options'));
|
126
|
+
if ($(this).parents("#modal").length) {
|
127
|
+
$(this).siblings('.btn').remove();
|
128
|
+
} else {
|
129
|
+
$(this).parents('.control-group').first().remoteForm();
|
130
|
+
}
|
131
|
+
});
|
132
|
+
content.find('[data-nestedmany]').each(function() {
|
133
|
+
var field, nav, tab_content, toggler;
|
134
|
+
field = $(this).parents('.control-group').first();
|
135
|
+
nav = field.find('> .controls > .nav');
|
136
|
+
tab_content = field.find('> .tab-content');
|
137
|
+
toggler = field.find('> .controls > .btn-group > .toggler');
|
138
|
+
tab_content.children('.fields:not(.tab-pane)').addClass('tab-pane').each(function() {
|
139
|
+
$(this).attr('id', 'unique-id-' + (new Date().getTime()) + Math.floor(Math.random() * 100000));
|
140
|
+
nav.append(
|
141
|
+
$('<li></li>').append(
|
142
|
+
$('<a></a>').attr('data-toggle', 'tab').attr('href', '#' + this.id).text($(this).children('.object-infos').data('object-label'))
|
143
|
+
)
|
144
|
+
);
|
145
|
+
});
|
146
|
+
if (nav.find("> li.active").length === 0) {
|
147
|
+
nav.find("> li > a[data-toggle='tab']:first").tab('show');
|
148
|
+
}
|
149
|
+
if (nav.children().length === 0) {
|
150
|
+
nav.hide();
|
151
|
+
tab_content.hide();
|
152
|
+
toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right');
|
153
|
+
} else {
|
154
|
+
if (toggler.hasClass('active')) {
|
155
|
+
nav.show();
|
156
|
+
tab_content.show();
|
157
|
+
toggler.children('i').addClass('icon-chevron-down');
|
158
|
+
} else {
|
159
|
+
nav.hide();
|
160
|
+
tab_content.hide();
|
161
|
+
toggler.children('i').addClass('icon-chevron-right');
|
162
|
+
}
|
163
|
+
}
|
164
|
+
});
|
165
|
+
content.find('[data-nestedone]').each(function() {
|
166
|
+
var field, first_tab, nav, tab_content, toggler;
|
167
|
+
field = $(this).parents('.control-group').first();
|
168
|
+
nav = field.find("> .controls > .nav");
|
169
|
+
tab_content = field.find("> .tab-content");
|
170
|
+
toggler = field.find('> .controls > .btn-group > .toggler');
|
171
|
+
tab_content.children(".fields:not(.tab-pane)").addClass('tab-pane active').each(function() {
|
172
|
+
field.find('> .controls .add_nested_fields').removeClass('add_nested_fields').text($(this).children('.object-infos').data('object-label'));
|
173
|
+
nav.append(
|
174
|
+
$('<li></li>').append(
|
175
|
+
$('<a></a>').attr('data-toggle', 'tab').attr('href', '#' + this.id).text($(this).children('.object-infos').data('object-label'))
|
176
|
+
)
|
177
|
+
);
|
178
|
+
});
|
179
|
+
first_tab = nav.find("> li > a[data-toggle='tab']:first");
|
180
|
+
first_tab.tab('show');
|
181
|
+
field.find("> .controls > [data-target]:first").html('<i class="icon-white"></i> ' + first_tab.html());
|
182
|
+
nav.hide();
|
183
|
+
if (nav.children().length === 0) {
|
184
|
+
nav.hide();
|
185
|
+
tab_content.hide();
|
186
|
+
toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right');
|
187
|
+
} else {
|
188
|
+
if (toggler.hasClass('active')) {
|
189
|
+
toggler.children('i').addClass('icon-chevron-down');
|
190
|
+
tab_content.show();
|
191
|
+
} else {
|
192
|
+
toggler.children('i').addClass('icon-chevron-right');
|
193
|
+
tab_content.hide();
|
194
|
+
}
|
195
|
+
}
|
196
|
+
});
|
197
|
+
content.find('[data-polymorphic]').each(function() {
|
198
|
+
var field, object_select, type_select, urls;
|
199
|
+
type_select = $(this);
|
200
|
+
field = type_select.parents('.control-group').first();
|
201
|
+
object_select = field.find('select').last();
|
202
|
+
urls = type_select.data('urls');
|
203
|
+
type_select.on('change', function(e) {
|
204
|
+
var selected_data, selected_type;
|
205
|
+
selected_type = type_select.val().toLowerCase();
|
206
|
+
selected_data = $("#" + selected_type + "-js-options").data('options');
|
207
|
+
object_select.data('options', selected_data);
|
208
|
+
object_select.filteringSelect("destroy");
|
209
|
+
object_select.filteringSelect(selected_data);
|
210
|
+
});
|
211
|
+
});
|
212
|
+
goSimpleMDEs = function() {
|
213
|
+
return content.find('[data-richtext=simplemde]').not('.simplemded').each(function(index, domEle) {
|
214
|
+
var instance_config, options;
|
215
|
+
options = $(this).data('options');
|
216
|
+
instance_config = options.instance_config;
|
217
|
+
new window.SimpleMDE($.extend(true, {
|
218
|
+
element: document.getElementById(this.id),
|
219
|
+
autosave: {
|
220
|
+
uniqueId: this.id
|
221
|
+
}
|
222
|
+
}, instance_config));
|
223
|
+
$(this).addClass('simplemded');
|
224
|
+
});
|
225
|
+
};
|
226
|
+
$editors = content.find('[data-richtext=simplemde]').not('.simplemded');
|
227
|
+
if ($editors.length) {
|
228
|
+
if (!window.SimpleMDE) {
|
229
|
+
options = $editors.first().data('options');
|
230
|
+
$('head').append('<link href="' + options['css_location'] + '" rel="stylesheet" media="all" type="text\/css">');
|
231
|
+
$.getScript(options['js_location'], function(script, textStatus, jqXHR) {
|
232
|
+
return goSimpleMDEs();
|
233
|
+
});
|
234
|
+
} else {
|
235
|
+
goSimpleMDEs();
|
236
|
+
}
|
237
|
+
}
|
238
|
+
goCkeditors = function() {
|
239
|
+
return content.find('[data-richtext=ckeditor]').not('.ckeditored').each(function(index, domEle) {
|
240
|
+
var instance;
|
241
|
+
try {
|
242
|
+
if (instance = window.CKEDITOR.instances[this.id]) {
|
243
|
+
instance.destroy(true);
|
244
|
+
}
|
245
|
+
} catch (error1) {}
|
246
|
+
window.CKEDITOR.replace(this, $(this).data('options').options);
|
247
|
+
$(this).addClass('ckeditored');
|
248
|
+
});
|
249
|
+
};
|
250
|
+
$editors = content.find('[data-richtext=ckeditor]').not('.ckeditored');
|
251
|
+
if ($editors.length) {
|
252
|
+
if (!window.CKEDITOR) {
|
253
|
+
options = $editors.first().data('options');
|
254
|
+
window.CKEDITOR_BASEPATH = options['base_location'];
|
255
|
+
$.getScript(options['jspath'], (function(_this) {
|
256
|
+
return function(script, textStatus, jqXHR) {
|
257
|
+
return goCkeditors();
|
258
|
+
};
|
259
|
+
})(this));
|
260
|
+
} else {
|
261
|
+
goCkeditors();
|
262
|
+
}
|
263
|
+
}
|
264
|
+
goCodeMirrors = (function(_this) {
|
265
|
+
return function(array) {
|
266
|
+
return array.each(function(index, domEle) {
|
267
|
+
var textarea;
|
268
|
+
options = $(this).data('options');
|
269
|
+
textarea = this;
|
270
|
+
$.getScript(options['locations']['mode'], function(script, textStatus, jqXHR) {
|
271
|
+
options = $(domEle).data('options');
|
272
|
+
$('head').append('<link href="' + options['locations']['theme'] + '" rel="stylesheet" media="all" type="text\/css">');
|
273
|
+
CodeMirror.fromTextArea(textarea, options['options']);
|
274
|
+
return $(textarea).addClass('codemirrored');
|
275
|
+
});
|
276
|
+
});
|
277
|
+
};
|
278
|
+
})(this);
|
279
|
+
array = content.find('[data-richtext=codemirror]').not('.codemirrored');
|
280
|
+
if (array.length) {
|
281
|
+
this.array = array;
|
282
|
+
if (!window.CodeMirror) {
|
283
|
+
options = $(array[0]).data('options');
|
284
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
|
285
|
+
$.getScript(options['jspath'], (function(_this) {
|
286
|
+
return function(script, textStatus, jqXHR) {
|
287
|
+
return goCodeMirrors(_this.array);
|
288
|
+
};
|
289
|
+
})(this));
|
290
|
+
} else {
|
291
|
+
goCodeMirrors(this.array);
|
292
|
+
}
|
293
|
+
}
|
294
|
+
goBootstrapWysihtml5s = (function(_this) {
|
295
|
+
return function(array, config_options) {
|
296
|
+
return array.each(function() {
|
297
|
+
$(this).addClass('bootstrap-wysihtml5ed');
|
298
|
+
$(this).closest('.controls').addClass('well');
|
299
|
+
$(this).wysihtml5(config_options);
|
300
|
+
});
|
301
|
+
};
|
302
|
+
})(this);
|
303
|
+
array = content.find('[data-richtext=bootstrap-wysihtml5]').not('.bootstrap-wysihtml5ed');
|
304
|
+
if (array.length) {
|
305
|
+
this.array = array;
|
306
|
+
options = $(array[0]).data('options');
|
307
|
+
config_options = $.parseJSON(options['config_options']);
|
308
|
+
if (!window.wysihtml5) {
|
309
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
|
310
|
+
$.getScript(options['jspath'], (function(_this) {
|
311
|
+
return function(script, textStatus, jqXHR) {
|
312
|
+
return goBootstrapWysihtml5s(_this.array, config_options);
|
313
|
+
};
|
314
|
+
})(this));
|
315
|
+
} else {
|
316
|
+
goBootstrapWysihtml5s(this.array, config_options);
|
317
|
+
}
|
318
|
+
}
|
319
|
+
goFroalaWysiwygs = (function(_this) {
|
320
|
+
return function(array) {
|
321
|
+
return array.each(function() {
|
322
|
+
var uploadEnabled;
|
323
|
+
options = $(this).data('options');
|
324
|
+
config_options = $.parseJSON(options['config_options']);
|
325
|
+
if (config_options) {
|
326
|
+
if (!config_options['inlineMode']) {
|
327
|
+
config_options['inlineMode'] = false;
|
328
|
+
}
|
329
|
+
} else {
|
330
|
+
config_options = {
|
331
|
+
inlineMode: false
|
332
|
+
};
|
333
|
+
}
|
334
|
+
uploadEnabled = config_options['imageUploadURL'] ? config_options['imageUploadParams'] = {
|
335
|
+
authenticity_token: $('meta[name=csrf-token]').attr('content')
|
336
|
+
} : void 0;
|
337
|
+
$(this).addClass('froala-wysiwyged');
|
338
|
+
$(this).froalaEditor(config_options);
|
339
|
+
if (uploadEnabled) {
|
340
|
+
$(this).on('froalaEditor.image.error', function(e, editor, error) {
|
341
|
+
alert("error uploading image: " + error.message);
|
342
|
+
}).on('froalaEditor.image.removed', function(e, editor, $img) {
|
343
|
+
editor.options.imageDeleteParams = {
|
344
|
+
src: $img.attr('src'),
|
345
|
+
authenticity_token: $('meta[name=csrf-token]').attr('content')
|
346
|
+
};
|
347
|
+
editor.deleteImage($img);
|
348
|
+
}).on('editable.imageDeleteSuccess', function(e, editor, data) {}).on('editable.imageDeleteError', function(e, editor, error) {
|
349
|
+
alert("error deleting image: " + error.message);
|
350
|
+
});
|
351
|
+
}
|
352
|
+
});
|
353
|
+
};
|
354
|
+
})(this);
|
355
|
+
array = content.find('[data-richtext=froala-wysiwyg]').not('.froala-wysiwyged');
|
356
|
+
if (array.length) {
|
357
|
+
options = $(array[0]).data('options');
|
358
|
+
if (!$.isFunction($.fn.editable)) {
|
359
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
|
360
|
+
$.getScript(options['jspath'], (function(_this) {
|
361
|
+
return function(script, textStatus, jqXHR) {
|
362
|
+
return goFroalaWysiwygs(array);
|
363
|
+
};
|
364
|
+
})(this));
|
365
|
+
} else {
|
366
|
+
goFroalaWysiwygs(array);
|
367
|
+
}
|
368
|
+
}
|
369
|
+
return content.find('trix-editor').each(function() {
|
370
|
+
if (!window.Trix) {
|
371
|
+
options = $(this).data('options');
|
372
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
|
373
|
+
return $.getScript(options['jspath']);
|
374
|
+
}
|
375
|
+
});
|
376
|
+
}
|
377
|
+
});
|
378
|
+
|
379
|
+
}(jQuery));
|