rails_admin 1.4.3 → 2.0.0

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.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -2
  3. data/README.md +2 -12
  4. data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  5. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +1 -1
  6. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +9 -7
  7. data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
  8. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +57 -0
  9. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  10. data/app/assets/javascripts/rails_admin/ra.widgets.js +371 -0
  11. data/app/assets/javascripts/rails_admin/rails_admin.js +1 -0
  12. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  13. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
  14. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
  15. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
  16. data/app/helpers/rails_admin/application_helper.rb +18 -3
  17. data/app/helpers/rails_admin/main_helper.rb +4 -4
  18. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  19. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
  20. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  21. data/app/views/layouts/rails_admin/application.html.haml +3 -11
  22. data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
  23. data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
  24. data/app/views/rails_admin/main/_form_file_upload.html.haml +4 -4
  25. data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
  26. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +7 -5
  27. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
  28. data/app/views/rails_admin/main/dashboard.html.haml +1 -2
  29. data/app/views/rails_admin/main/export.html.haml +2 -2
  30. data/app/views/rails_admin/main/index.html.haml +18 -14
  31. data/app/views/rails_admin/main/show.html.haml +6 -7
  32. data/config/locales/rails_admin.en.yml +2 -0
  33. data/lib/generators/rails_admin/templates/initializer.erb +2 -2
  34. data/lib/rails_admin/abstract_model.rb +1 -1
  35. data/lib/rails_admin/adapters/active_record/property.rb +1 -5
  36. data/lib/rails_admin/adapters/active_record.rb +22 -9
  37. data/lib/rails_admin/adapters/mongoid/association.rb +1 -1
  38. data/lib/rails_admin/adapters/mongoid.rb +30 -13
  39. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
  40. data/lib/rails_admin/bootstrap-sass.rb +5 -3
  41. data/lib/rails_admin/config/actions/base.rb +17 -1
  42. data/lib/rails_admin/config/actions/edit.rb +1 -3
  43. data/lib/rails_admin/config/actions/index.rb +3 -3
  44. data/lib/rails_admin/config/actions/new.rb +1 -3
  45. data/lib/rails_admin/config/configurable.rb +5 -3
  46. data/lib/rails_admin/config/fields/association.rb +1 -1
  47. data/lib/rails_admin/config/fields/base.rb +1 -1
  48. data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
  49. data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
  50. data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
  51. data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
  52. data/lib/rails_admin/config/fields/types/active_record_enum.rb +3 -19
  53. data/lib/rails_admin/config/fields/types/active_storage.rb +1 -0
  54. data/lib/rails_admin/config/fields/types/all.rb +2 -1
  55. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -0
  56. data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
  57. data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
  58. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  59. data/lib/rails_admin/config/fields/types/file_upload.rb +6 -2
  60. data/lib/rails_admin/config/fields/types/froala.rb +9 -11
  61. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  62. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
  63. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
  64. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
  65. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
  66. data/lib/rails_admin/config/fields/types/shrine.rb +52 -0
  67. data/lib/rails_admin/config/fields/types/simple_mde.rb +8 -5
  68. data/lib/rails_admin/config/fields/types/string.rb +2 -2
  69. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  70. data/lib/rails_admin/config/fields/types/text.rb +2 -20
  71. data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
  72. data/lib/rails_admin/config/fields.rb +2 -1
  73. data/lib/rails_admin/config/model.rb +3 -2
  74. data/lib/rails_admin/config/proxyable/proxy.rb +3 -5
  75. data/lib/rails_admin/config/proxyable.rb +13 -1
  76. data/lib/rails_admin/config/sections/list.rb +23 -0
  77. data/lib/rails_admin/config.rb +8 -6
  78. data/lib/rails_admin/engine.rb +1 -2
  79. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
  80. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +19 -4
  81. data/lib/rails_admin/version.rb +3 -3
  82. data/lib/rails_admin.rb +0 -1
  83. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  84. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  85. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +2671 -0
  86. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  87. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  88. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  89. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +1 -3
  90. data/vendor/assets/stylesheets/rails_admin/font-awesome.css.erb +2342 -0
  91. metadata +163 -171
  92. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  93. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
  94. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -58
  95. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
  96. data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
  97. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  98. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  99. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
  100. data/lib/rails_admin/extensions/cancan.rb +0 -3
  101. /data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  102. /data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  103. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  104. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  105. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  106. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  107. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  108. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  109. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  110. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  111. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  112. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  113. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  114. /data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  115. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  116. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  117. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  118. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  119. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  120. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  121. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  122. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  123. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  124. /data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  125. /data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
  126. /data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  127. /data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
  128. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
  129. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
  130. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
  131. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
  132. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
  133. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
  134. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
  135. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
  136. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
  137. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
  138. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
  139. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
  140. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  141. /data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  142. /data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  143. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  144. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  145. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  146. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  147. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  148. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  149. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  150. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  151. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  152. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  153. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  154. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  155. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  156. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  157. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  158. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  159. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  160. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  161. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  162. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  163. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  164. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  165. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  166. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  167. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  168. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  169. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  170. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  171. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  172. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  173. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  174. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  175. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  176. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  177. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  178. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  179. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  180. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  181. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  182. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  183. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  184. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  185. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  186. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  187. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  188. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  189. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  190. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  191. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  192. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  193. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  194. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  195. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  196. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  197. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  198. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  199. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  200. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  201. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  202. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  203. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  204. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  205. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  206. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  207. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  208. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  209. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  210. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  211. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  212. /data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  213. /data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2511d4339254d5f386a4b2730f4dd468526dc5bffec56a265113c003c8906b6
4
- data.tar.gz: bacfe19f0d8622834410c587a188061f1ed423a61e598bde8d23c8002b8e1a44
3
+ metadata.gz: abb27440720764e68f2c73906b3792c209dbae39f6a54690894e0d1c42983c5f
4
+ data.tar.gz: 2cc7c7588ab9419f9a486f185ea6f345e62c2b2b2e4588e39810f05c5b5a4fdf
5
5
  SHA512:
6
- metadata.gz: 90a5aed673d2db9af5c31fa297a5e155cf9edbe23a281020cb30a7f07f644dfaf70b4fbddb6aaf806d8815f398c6861711441be6378d154c97736f7fcd6ebf13
7
- data.tar.gz: 44144612bdc0eb7be539d3d730b1a0bddfe4686161e322f56d05df758427959e4aba3ef73305e792038ae82cccaa410e72ba750f51be804674d2fd9ef08509cb
6
+ metadata.gz: 4518ba5616e66359a663cb1e3978764fa230301eafedcf8fd51bf2257fd31f45ecbca50fd7d5bbcba7196b7b1b03e0822c31afd0183d01bcb842c3d2dd8a9f63
7
+ data.tar.gz: 5e65e91218271a2eb8b7bc5c44cd13769eb7427653382033b3f784442f3ceaf2c5fb739e924bd69b103b3af84f4f390f33de2ef2ec13c8b268c4af49187914fb
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ group :active_record do
10
10
 
11
11
  platforms :ruby, :mswin, :mingw do
12
12
  gem 'mysql2', '>= 0.3.14'
13
- gem 'sqlite3', '~> 1.3.0'
13
+ gem 'sqlite3', '>= 1.3'
14
14
  end
15
15
  end
16
16
 
@@ -19,7 +19,7 @@ group :development, :test do
19
19
  end
20
20
 
21
21
  group :test do
22
- gem 'carrierwave', '>= 0.8'
22
+ gem 'carrierwave', ['>= 2.0.0.rc', '< 3']
23
23
  gem 'coveralls'
24
24
  gem 'database_cleaner', ['>= 1.2', '!= 1.4.0', '!= 1.5.0']
25
25
  gem 'dragonfly', '~> 1.0'
@@ -32,8 +32,11 @@ group :test do
32
32
  gem 'pundit'
33
33
  gem 'rack-cache', require: 'rack/cache'
34
34
  gem 'rspec-rails', '>= 2.14'
35
+ gem 'rspec-expectations', '!= 3.8.3'
35
36
  gem 'rubocop', '~> 0.41.2'
36
37
  gem 'simplecov', '>= 0.9', require: false
38
+ gem 'shrine', '~> 2.0'
39
+ gem 'shrine-memory'
37
40
  gem 'timecop', '>= 0.5'
38
41
 
39
42
  platforms :ruby_19 do
data/README.md CHANGED
@@ -16,14 +16,6 @@
16
16
 
17
17
  RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.
18
18
 
19
- ## Announcements
20
-
21
- ### [Action required] Security issue
22
-
23
- > **RailsAdmin prior to 1.3.0 have been reported to have XSS vulnerability.** We strongly recommend that you upgrade RailsAdmin to 1.3.0 or later as soon as possible, if you are on those versions. See [#2985](https://github.com/sferik/rails_admin/issues/2985) for the detail.
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.
26
-
27
19
  ## Getting started
28
20
 
29
21
  * Check out [the docs][docs].
@@ -50,7 +42,7 @@ RailsAdmin is a Rails engine that provides an easy-to-use interface for managing
50
42
 
51
43
  ## Installation
52
44
 
53
- 1. On your gemfile: `gem 'rails_admin', '~> 1.3'`
45
+ 1. On your gemfile: `gem 'rails_admin', '~> 2.0'`
54
46
  2. Run `bundle install`
55
47
  3. Run `rails g rails_admin:install`
56
48
  4. Provide a namespace for the routes when asked
@@ -96,13 +88,11 @@ If you think you found a bug in RailsAdmin, you can [submit an issue](https://gi
96
88
  ## Supported Ruby Versions
97
89
  This library aims to support and is [tested against][travis] the following Ruby implementations:
98
90
 
99
- * Ruby 2.1
100
91
  * Ruby 2.2
101
92
  * Ruby 2.3
102
93
  * Ruby 2.4
103
94
  * Ruby 2.5
104
- * [Rubinius][]
95
+ * Ruby 2.6
105
96
  * [JRuby][]
106
97
 
107
- [rubinius]: http://rubinius.com
108
98
  [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
- var filtering_select = this.element.siblings(
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', 'left');
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,57 @@
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><a data-toggle="tab" href="#' + field.attr('id') + '">' + field.children('.object-infos').data('object-label') + '</a></li>');
15
+ parent_group = field.closest('.control-group');
16
+ controls = parent_group.children('.controls');
17
+ one_to_one = controls.data('nestedone') !== void 0;
18
+ nav = controls.children('.nav');
19
+ content = parent_group.children('.tab-content');
20
+ toggler = controls.find('.toggler');
21
+ nav.append(new_tab);
22
+ $(window.document).trigger('rails_admin.dom_ready', [field, parent_group]);
23
+ new_tab.children('a').tab('show');
24
+ if (!one_to_one) {
25
+ nav.select(':hidden').show('slow');
26
+ }
27
+ content.select(':hidden').show('slow');
28
+ toggler.addClass('active').removeClass('disabled').children('i').addClass('icon-chevron-down').removeClass('icon-chevron-right');
29
+ if (one_to_one) {
30
+ controls.find('.add_nested_fields').removeClass('add_nested_fields').html(field.children('.object-infos').data('object-label'));
31
+ }
32
+ });
33
+
34
+ $(document).on('nested:fieldRemoved', 'form', function(content) {
35
+ var add_button, controls, current_li, field, nav, one_to_one, parent_group, toggler;
36
+ field = content.field;
37
+ nav = field.closest(".control-group").children('.controls').children('.nav');
38
+ current_li = nav.children('li').has('a[href="#' + field.attr('id') + '"]');
39
+ parent_group = field.closest(".control-group");
40
+ controls = parent_group.children('.controls');
41
+ one_to_one = controls.data('nestedone') !== void 0;
42
+ toggler = controls.find('.toggler');
43
+ (current_li.next().length ? current_li.next() : current_li.prev()).children('a:first').tab('show');
44
+ current_li.remove();
45
+ if (nav.children().length === 0) {
46
+ nav.select(':visible').hide('slow');
47
+ toggler.removeClass('active').addClass('disabled').children('i').removeClass('icon-chevron-down').addClass('icon-chevron-right');
48
+ }
49
+ if (one_to_one) {
50
+ add_button = toggler.next();
51
+ add_button.addClass('add_nested_fields').html(add_button.data('add-label'));
52
+ }
53
+ field.find('[required]').each(function() {
54
+ $(this).removeAttr('required');
55
+ });
56
+ });
57
+ }(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,371 @@
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('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>');
141
+ });
142
+ if (nav.find("> li.active").length === 0) {
143
+ nav.find("> li > a[data-toggle='tab']:first").tab('show');
144
+ }
145
+ if (nav.children().length === 0) {
146
+ nav.hide();
147
+ tab_content.hide();
148
+ toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right');
149
+ } else {
150
+ if (toggler.hasClass('active')) {
151
+ nav.show();
152
+ tab_content.show();
153
+ toggler.children('i').addClass('icon-chevron-down');
154
+ } else {
155
+ nav.hide();
156
+ tab_content.hide();
157
+ toggler.children('i').addClass('icon-chevron-right');
158
+ }
159
+ }
160
+ });
161
+ content.find('[data-nestedone]').each(function() {
162
+ var field, first_tab, nav, tab_content, toggler;
163
+ field = $(this).parents('.control-group').first();
164
+ nav = field.find("> .controls > .nav");
165
+ tab_content = field.find("> .tab-content");
166
+ toggler = field.find('> .controls > .btn-group > .toggler');
167
+ tab_content.children(".fields:not(.tab-pane)").addClass('tab-pane active').each(function() {
168
+ field.find('> .controls .add_nested_fields').removeClass('add_nested_fields').html($(this).children('.object-infos').data('object-label'));
169
+ nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>');
170
+ });
171
+ first_tab = nav.find("> li > a[data-toggle='tab']:first");
172
+ first_tab.tab('show');
173
+ field.find("> .controls > [data-target]:first").html('<i class="icon-white"></i> ' + first_tab.html());
174
+ nav.hide();
175
+ if (nav.children().length === 0) {
176
+ nav.hide();
177
+ tab_content.hide();
178
+ toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right');
179
+ } else {
180
+ if (toggler.hasClass('active')) {
181
+ toggler.children('i').addClass('icon-chevron-down');
182
+ tab_content.show();
183
+ } else {
184
+ toggler.children('i').addClass('icon-chevron-right');
185
+ tab_content.hide();
186
+ }
187
+ }
188
+ });
189
+ content.find('[data-polymorphic]').each(function() {
190
+ var field, object_select, type_select, urls;
191
+ type_select = $(this);
192
+ field = type_select.parents('.control-group').first();
193
+ object_select = field.find('select').last();
194
+ urls = type_select.data('urls');
195
+ type_select.on('change', function(e) {
196
+ var selected_data, selected_type;
197
+ selected_type = type_select.val().toLowerCase();
198
+ selected_data = $("#" + selected_type + "-js-options").data('options');
199
+ object_select.data('options', selected_data);
200
+ object_select.filteringSelect("destroy");
201
+ object_select.filteringSelect(selected_data);
202
+ });
203
+ });
204
+ goSimpleMDEs = function() {
205
+ return content.find('[data-richtext=simplemde]').not('.simplemded').each(function(index, domEle) {
206
+ var instance_config, options;
207
+ options = $(this).data('options');
208
+ instance_config = options.instance_config;
209
+ new window.SimpleMDE($.extend(true, {
210
+ element: document.getElementById(this.id),
211
+ autosave: {
212
+ uniqueId: this.id
213
+ }
214
+ }, instance_config));
215
+ $(this).addClass('simplemded');
216
+ });
217
+ };
218
+ $editors = content.find('[data-richtext=simplemde]').not('.simplemded');
219
+ if ($editors.length) {
220
+ if (!window.SimpleMDE) {
221
+ options = $editors.first().data('options');
222
+ $('head').append('<link href="' + options['css_location'] + '" rel="stylesheet" media="all" type="text\/css">');
223
+ $.getScript(options['js_location'], function(script, textStatus, jqXHR) {
224
+ return goSimpleMDEs();
225
+ });
226
+ } else {
227
+ goSimpleMDEs();
228
+ }
229
+ }
230
+ goCkeditors = function() {
231
+ return content.find('[data-richtext=ckeditor]').not('.ckeditored').each(function(index, domEle) {
232
+ var instance;
233
+ try {
234
+ if (instance = window.CKEDITOR.instances[this.id]) {
235
+ instance.destroy(true);
236
+ }
237
+ } catch (error1) {}
238
+ window.CKEDITOR.replace(this, $(this).data('options').options);
239
+ $(this).addClass('ckeditored');
240
+ });
241
+ };
242
+ $editors = content.find('[data-richtext=ckeditor]').not('.ckeditored');
243
+ if ($editors.length) {
244
+ if (!window.CKEDITOR) {
245
+ options = $editors.first().data('options');
246
+ window.CKEDITOR_BASEPATH = options['base_location'];
247
+ $.getScript(options['jspath'], (function(_this) {
248
+ return function(script, textStatus, jqXHR) {
249
+ return goCkeditors();
250
+ };
251
+ })(this));
252
+ } else {
253
+ goCkeditors();
254
+ }
255
+ }
256
+ goCodeMirrors = (function(_this) {
257
+ return function(array) {
258
+ return array.each(function(index, domEle) {
259
+ var textarea;
260
+ options = $(this).data('options');
261
+ textarea = this;
262
+ $.getScript(options['locations']['mode'], function(script, textStatus, jqXHR) {
263
+ options = $(domEle).data('options');
264
+ $('head').append('<link href="' + options['locations']['theme'] + '" rel="stylesheet" media="all" type="text\/css">');
265
+ CodeMirror.fromTextArea(textarea, options['options']);
266
+ return $(textarea).addClass('codemirrored');
267
+ });
268
+ });
269
+ };
270
+ })(this);
271
+ array = content.find('[data-richtext=codemirror]').not('.codemirrored');
272
+ if (array.length) {
273
+ this.array = array;
274
+ if (!window.CodeMirror) {
275
+ options = $(array[0]).data('options');
276
+ $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
277
+ $.getScript(options['jspath'], (function(_this) {
278
+ return function(script, textStatus, jqXHR) {
279
+ return goCodeMirrors(_this.array);
280
+ };
281
+ })(this));
282
+ } else {
283
+ goCodeMirrors(this.array);
284
+ }
285
+ }
286
+ goBootstrapWysihtml5s = (function(_this) {
287
+ return function(array, config_options) {
288
+ return array.each(function() {
289
+ $(this).addClass('bootstrap-wysihtml5ed');
290
+ $(this).closest('.controls').addClass('well');
291
+ $(this).wysihtml5(config_options);
292
+ });
293
+ };
294
+ })(this);
295
+ array = content.find('[data-richtext=bootstrap-wysihtml5]').not('.bootstrap-wysihtml5ed');
296
+ if (array.length) {
297
+ this.array = array;
298
+ options = $(array[0]).data('options');
299
+ config_options = $.parseJSON(options['config_options']);
300
+ if (!window.wysihtml5) {
301
+ $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
302
+ $.getScript(options['jspath'], (function(_this) {
303
+ return function(script, textStatus, jqXHR) {
304
+ return goBootstrapWysihtml5s(_this.array, config_options);
305
+ };
306
+ })(this));
307
+ } else {
308
+ goBootstrapWysihtml5s(this.array, config_options);
309
+ }
310
+ }
311
+ goFroalaWysiwygs = (function(_this) {
312
+ return function(array) {
313
+ return array.each(function() {
314
+ var uploadEnabled;
315
+ options = $(this).data('options');
316
+ config_options = $.parseJSON(options['config_options']);
317
+ if (config_options) {
318
+ if (!config_options['inlineMode']) {
319
+ config_options['inlineMode'] = false;
320
+ }
321
+ } else {
322
+ config_options = {
323
+ inlineMode: false
324
+ };
325
+ }
326
+ uploadEnabled = config_options['imageUploadURL'] ? config_options['imageUploadParams'] = {
327
+ authenticity_token: $('meta[name=csrf-token]').attr('content')
328
+ } : void 0;
329
+ $(this).addClass('froala-wysiwyged');
330
+ $(this).froalaEditor(config_options);
331
+ if (uploadEnabled) {
332
+ $(this).on('froalaEditor.image.error', function(e, editor, error) {
333
+ alert("error uploading image: " + error.message);
334
+ }).on('froalaEditor.image.removed', function(e, editor, $img) {
335
+ editor.options.imageDeleteParams = {
336
+ src: $img.attr('src'),
337
+ authenticity_token: $('meta[name=csrf-token]').attr('content')
338
+ };
339
+ editor.deleteImage($img);
340
+ }).on('editable.imageDeleteSuccess', function(e, editor, data) {}).on('editable.imageDeleteError', function(e, editor, error) {
341
+ alert("error deleting image: " + error.message);
342
+ });
343
+ }
344
+ });
345
+ };
346
+ })(this);
347
+ array = content.find('[data-richtext=froala-wysiwyg]').not('.froala-wysiwyged');
348
+ if (array.length) {
349
+ options = $(array[0]).data('options');
350
+ if (!$.isFunction($.fn.editable)) {
351
+ $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
352
+ $.getScript(options['jspath'], (function(_this) {
353
+ return function(script, textStatus, jqXHR) {
354
+ return goFroalaWysiwygs(array);
355
+ };
356
+ })(this));
357
+ } else {
358
+ goFroalaWysiwygs(array);
359
+ }
360
+ }
361
+ return content.find('trix-editor').each(function() {
362
+ if (!window.Trix) {
363
+ options = $(this).data('options');
364
+ $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">');
365
+ return $.getScript(options['jspath']);
366
+ }
367
+ });
368
+ }
369
+ });
370
+
371
+ }(jQuery));
@@ -15,5 +15,6 @@
15
15
  //= require 'rails_admin/ra.i18n'
16
16
  //= require 'rails_admin/bootstrap/bootstrap'
17
17
  //= require 'rails_admin/ra.widgets'
18
+ //= require 'rails_admin/ra.sidescroll'
18
19
  //= require 'rails_admin/ui'
19
20
  //= require 'rails_admin/custom/ui'