rails_admin 2.0.0.beta → 2.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rails_admin might be problematic. Click here for more details.

Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +1 -1
  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.i18n.js +28 -0
  7. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +57 -0
  8. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
  9. data/app/assets/javascripts/rails_admin/ra.widgets.js +371 -0
  10. data/app/assets/javascripts/rails_admin/ui.js +135 -0
  11. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
  12. data/app/helpers/rails_admin/application_helper.rb +17 -2
  13. data/app/views/layouts/rails_admin/_head.html.haml +7 -0
  14. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
  15. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
  16. data/app/views/layouts/rails_admin/application.html.haml +3 -8
  17. data/app/views/rails_admin/main/_form_file_upload.html.haml +3 -3
  18. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +6 -4
  19. data/config/locales/rails_admin.en.yml +1 -0
  20. data/lib/generators/rails_admin/templates/initializer.erb +2 -2
  21. data/lib/rails_admin.rb +0 -1
  22. data/lib/rails_admin/abstract_model.rb +1 -1
  23. data/lib/rails_admin/adapters/active_record.rb +12 -3
  24. data/lib/rails_admin/adapters/mongoid.rb +14 -0
  25. data/lib/rails_admin/bootstrap-sass.rb +1 -1
  26. data/lib/rails_admin/config.rb +4 -6
  27. data/lib/rails_admin/config/actions/base.rb +17 -1
  28. data/lib/rails_admin/config/actions/edit.rb +1 -3
  29. data/lib/rails_admin/config/actions/index.rb +1 -1
  30. data/lib/rails_admin/config/actions/new.rb +1 -3
  31. data/lib/rails_admin/config/fields.rb +0 -1
  32. data/lib/rails_admin/config/fields/association.rb +1 -1
  33. data/lib/rails_admin/config/fields/types/action_text.rb +1 -2
  34. data/lib/rails_admin/config/fields/types/all.rb +0 -1
  35. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -2
  36. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -2
  37. data/lib/rails_admin/config/fields/types/color.rb +2 -2
  38. data/lib/rails_admin/config/fields/types/file_upload.rb +6 -2
  39. data/lib/rails_admin/config/fields/types/froala.rb +2 -2
  40. data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
  41. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
  42. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
  43. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
  44. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
  45. data/lib/rails_admin/config/fields/types/shrine.rb +5 -1
  46. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -2
  47. data/lib/rails_admin/config/fields/types/string.rb +2 -2
  48. data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
  49. data/lib/rails_admin/config/fields/types/text.rb +2 -2
  50. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -2
  51. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
  52. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +4 -1
  53. data/lib/rails_admin/version.rb +1 -1
  54. data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  55. data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  56. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  57. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  58. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  59. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  60. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  61. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  62. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  63. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  64. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  65. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  66. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  67. data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  68. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  69. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  70. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  71. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  72. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  73. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  74. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  75. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  76. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  77. data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  78. data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
  79. data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
  80. data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
  81. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
  82. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
  83. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
  84. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
  85. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
  86. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
  87. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
  88. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
  89. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
  90. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
  91. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
  92. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
  93. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
  94. data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
  95. data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
  96. data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +0 -0
  97. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
  98. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
  99. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
  100. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
  101. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
  102. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
  103. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
  104. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
  105. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
  106. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
  107. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
  108. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
  109. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
  110. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
  111. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
  112. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
  113. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
  114. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
  115. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
  116. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
  117. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
  118. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
  119. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
  120. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
  121. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
  122. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
  123. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
  124. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
  125. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
  126. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
  127. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
  128. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
  129. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
  130. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
  131. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
  132. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
  133. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
  134. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
  135. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
  136. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
  137. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
  138. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
  139. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
  140. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
  141. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
  142. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
  143. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
  144. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
  145. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
  146. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
  147. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
  148. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
  149. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
  150. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
  151. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
  152. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
  153. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  154. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
  155. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
  156. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
  157. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
  158. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
  159. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
  160. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
  161. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
  162. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
  163. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
  164. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
  165. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
  166. data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
  167. data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
  168. metadata +130 -153
  169. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  170. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
  171. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -55
  172. data/app/assets/javascripts/rails_admin/ra.sidescroll.coffee +0 -19
  173. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
  174. data/app/assets/javascripts/rails_admin/ui.coffee +0 -107
  175. data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
  176. data/lib/rails_admin/config/fields/types/refile.rb +0 -27
  177. data/lib/rails_admin/extensions/cancan.rb +0 -3
  178. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
@@ -1 +0,0 @@
1
- #= override this file in your application to add custom behaviour
@@ -1,10 +0,0 @@
1
- @RailsAdmin ||= {}
2
- @RailsAdmin.I18n = class Locale
3
- @init: (@locale, @translations)->
4
- moment.locale(@locale)
5
- if typeof(@translations) == "string"
6
- @translations = JSON.parse(@translations)
7
-
8
- @t:(key) ->
9
- humanize = key.charAt(0).toUpperCase() + key.replace(/_/g, " ").slice(1)
10
- @translations[key] || humanize
@@ -1,55 +0,0 @@
1
- $ = jQuery
2
-
3
- $(document).ready ->
4
- window.nestedFormEvents.insertFields = (content, assoc, link) ->
5
- tab_content = $(link).closest(".controls").siblings(".tab-content")
6
- tab_content.append content
7
- tab_content.children().last()
8
-
9
- $(document).on 'nested:fieldAdded', 'form', (content) ->
10
- field = content.field.addClass('tab-pane').attr('id', 'unique-id-' + (new Date().getTime()))
11
- new_tab = $('<li><a data-toggle="tab" href="#' + field.attr('id') + '">' + field.children('.object-infos').data('object-label') + '</a></li>')
12
- parent_group = field.closest('.control-group')
13
- controls = parent_group.children('.controls')
14
- one_to_one = controls.data('nestedone') != undefined
15
- nav = controls.children('.nav')
16
- content = parent_group.children('.tab-content')
17
- toggler = controls.find('.toggler')
18
- nav.append(new_tab)
19
- $(window.document).trigger('rails_admin.dom_ready', [field, parent_group]) # fire dom_ready for new player in town
20
- new_tab.children('a').tab('show') # activate added tab
21
- nav.select(':hidden').show('slow') unless one_to_one # show nav if hidden
22
- content.select(':hidden').show('slow') # show tabs content if hidden
23
- # toggler 'on' if inactive
24
- toggler.addClass('active').removeClass('disabled').children('i').addClass('icon-chevron-down').removeClass('icon-chevron-right')
25
-
26
- # Convert the "add nested field" button to just showing the title of the new model
27
- controls.find('.add_nested_fields').removeClass('add_nested_fields').html(field.children('.object-infos').data('object-label')) if one_to_one
28
-
29
- $(document).on 'nested:fieldRemoved', 'form', (content) ->
30
- field = content.field
31
- nav = field.closest(".control-group").children('.controls').children('.nav')
32
- current_li = nav.children('li').has('a[href="#' + field.attr('id') + '"]')
33
- parent_group = field.closest(".control-group")
34
- controls = parent_group.children('.controls')
35
- one_to_one = controls.data('nestedone') != undefined
36
- toggler = controls.find('.toggler')
37
-
38
- # try to activate another tab
39
- (if current_li.next().length then current_li.next() else current_li.prev()).children('a:first').tab('show')
40
-
41
- current_li.remove()
42
-
43
- if nav.children().length == 0 # removed last tab
44
- nav.select(':visible').hide('slow') # hide nav. No use anymore.
45
- # toggler 'off' if active
46
- toggler.removeClass('active').addClass('disabled').children('i').removeClass('icon-chevron-down').addClass('icon-chevron-right')
47
-
48
- if one_to_one
49
- # Converts the title button to an "add nested field" button
50
- add_button = toggler.next()
51
- add_button.addClass('add_nested_fields').html(add_button.data('add-label'))
52
-
53
- # Removing all required attributes from deleted child form to bypass browser validations.
54
- field.find('[required]').each ->
55
- $(this).removeAttr('required')
@@ -1,19 +0,0 @@
1
- (->
2
- $ = jQuery
3
-
4
- setFrozenColPositions = ->
5
- $listForm = $('#bulk_form')
6
- return unless $listForm.is('.ra-sidescroll')
7
- frozenColumns = $listForm.data('ra-sidescroll')
8
- $listForm.find('table tr').each (index, tr) ->
9
- firstPosition = 0
10
- $(tr).children().slice(0, frozenColumns).each (idx, td) ->
11
- $(td).addClass('ra-sidescroll-frozen')
12
- $(td).addClass('last-of-frozen') if idx == frozenColumns - 1
13
- tdLeft = $(td).position().left
14
- firstPosition = tdLeft if idx == 0
15
- td.style.left = "#{tdLeft - firstPosition}px"
16
-
17
- $(window).on('load', setFrozenColPositions) # Update after link icons load.
18
- $(document).on('rails_admin.dom_ready', setFrozenColPositions)
19
- )()
@@ -1,359 +0,0 @@
1
- $(document).on 'rails_admin.dom_ready', (e, content) ->
2
-
3
- content = if content then content else $('form')
4
-
5
- if content.length # don't waste time otherwise
6
-
7
- # colorpicker
8
-
9
- content.find('[data-color]').each ->
10
- that = this
11
- $(this).ColorPicker
12
- color: $(that).val()
13
- onShow: (el) ->
14
- $(el).fadeIn(500)
15
- false
16
- onHide: (el) ->
17
- $(el).fadeOut(500)
18
- false
19
- onChange: (hsb, hex, rgb) ->
20
- $(that).val(hex)
21
- $(that).css('backgroundColor', '#' + hex)
22
-
23
- # datetime picker
24
- $.fn.datetimepicker.defaults.icons =
25
- time: 'fa fa-clock-o'
26
- date: 'fa fa-calendar'
27
- up: 'fa fa-chevron-up'
28
- down: 'fa fa-chevron-down'
29
- previous: 'fa fa-angle-double-left'
30
- next: 'fa fa-angle-double-right'
31
- today: 'fa fa-dot-circle-o'
32
- clear: 'fa fa-trash'
33
- close: 'fa fa-times'
34
-
35
- content.find('[data-datetimepicker]').each ->
36
- options = $(this).data('options')
37
- $.extend(options, {locale: RailsAdmin.I18n.locale})
38
- $(this).datetimepicker options
39
-
40
- # enumeration
41
-
42
- content.find('[data-enumeration]').each ->
43
- if $(this).is('[multiple]')
44
- $(this).filteringMultiselect $(this).data('options')
45
- else
46
- $(this).filteringSelect $(this).data('options')
47
-
48
- # fileupload
49
-
50
- content.find('[data-fileupload]').each ->
51
- parent = $(this).closest('.controls')
52
- parent.find('.btn-remove-image').on 'click', ->
53
- $(this).siblings('[type=checkbox]').click()
54
- parent.find('.toggle').toggle('slow')
55
- $(this).toggleClass('btn-danger btn-info')
56
- false
57
-
58
- # fileupload-preview
59
-
60
- content.find('[data-fileupload]').change ->
61
- input = this
62
- image_container = $("#" + input.id).parent().children(".preview")
63
- unless image_container.length
64
- image_container = $("#" + input.id).parent().prepend($('<img />').addClass('preview').addClass('img-thumbnail')).find('img.preview')
65
- image_container.parent().find('img:not(.preview)').hide()
66
- ext = $("#" + input.id).val().split('.').pop().toLowerCase()
67
- if input.files and input.files[0] and $.inArray(ext, ['gif','png','jpg','jpeg','bmp']) != -1
68
- reader = new FileReader()
69
- reader.onload = (e) ->
70
- image_container.attr "src", e.target.result
71
- reader.readAsDataURL input.files[0]
72
- image_container.show()
73
- else
74
- image_container.hide()
75
-
76
- # multiple-fileupload
77
-
78
- content.find('[data-multiple-fileupload]').each ->
79
- $(this).closest('.controls').find('.btn-remove-image').on 'click', ->
80
- $(this).siblings('[type=checkbox]').click()
81
- $(this).parent('.toggle').toggle('slow')
82
- $(this).toggleClass('btn-danger btn-info')
83
- false
84
-
85
- # multiple-fileupload-preview
86
-
87
- content.find('[data-multiple-fileupload]').change ->
88
- input = this
89
- $("#" + input.id).parent().children(".preview").remove()
90
- for file in input.files
91
- ext = file.name.split('.').pop().toLowerCase()
92
- if $.inArray(ext, ['gif','png','jpg','jpeg','bmp']) == -1
93
- continue
94
- image_container = $('<img />').addClass('preview').addClass('img-thumbnail')
95
- do (image_container) ->
96
- reader = new FileReader()
97
- reader.onload = (e) ->
98
- image_container.attr "src", e.target.result
99
- reader.readAsDataURL file
100
- $("#" + input.id).parent().append($('<div></div>').addClass('preview').append(image_container))
101
-
102
- # filtering-multiselect
103
-
104
- content.find('[data-filteringmultiselect]').each ->
105
- $(this).filteringMultiselect $(this).data('options')
106
- if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
107
- $(this).siblings('.btn').remove()
108
- else
109
- $(this).parents('.control-group').first().remoteForm()
110
-
111
- # filtering-select
112
-
113
- content.find('[data-filteringselect]').each ->
114
- $(this).filteringSelect $(this).data('options')
115
- if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
116
- $(this).siblings('.btn').remove()
117
- else
118
- $(this).parents('.control-group').first().remoteForm()
119
-
120
- # nested-many
121
-
122
- content.find('[data-nestedmany]').each ->
123
- field = $(this).parents('.control-group').first()
124
- nav = field.find('> .controls > .nav')
125
- tab_content = field.find('> .tab-content')
126
- toggler = field.find('> .controls > .btn-group > .toggler')
127
- # add each nested field to a tab-pane and reference it in the nav
128
- tab_content.children('.fields:not(.tab-pane)').addClass('tab-pane').each ->
129
- $(this).attr('id', 'unique-id-' + (new Date().getTime()) + Math.floor(Math.random()*100000)) # some elements are created on the same ms
130
- nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
131
- # only if no tab is set to active
132
- if nav.find("> li.active").length == 0
133
- # init first tab, toggler and tab_content/tabs visibility
134
- nav.find("> li > a[data-toggle='tab']:first").tab('show')
135
- if nav.children().length == 0
136
- nav.hide()
137
- tab_content.hide()
138
- toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right')
139
- else
140
- if toggler.hasClass('active')
141
- nav.show()
142
- tab_content.show()
143
- toggler.children('i').addClass('icon-chevron-down')
144
- else
145
- nav.hide()
146
- tab_content.hide()
147
- toggler.children('i').addClass('icon-chevron-right')
148
-
149
- # nested-one
150
-
151
- content.find('[data-nestedone]').each ->
152
- field = $(this).parents('.control-group').first()
153
- nav = field.find("> .controls > .nav")
154
- tab_content = field.find("> .tab-content")
155
- toggler = field.find('> .controls > .btn-group > .toggler')
156
- tab_content.children(".fields:not(.tab-pane)").addClass('tab-pane active').each ->
157
- # Convert the "add nested field" button to just showing the title of the new model
158
- field.find('> .controls .add_nested_fields').removeClass('add_nested_fields').html( $(this).children('.object-infos').data('object-label') )
159
- nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
160
- first_tab = nav.find("> li > a[data-toggle='tab']:first")
161
- first_tab.tab('show')
162
- field.find("> .controls > [data-target]:first").html('<i class="icon-white"></i> ' + first_tab.html())
163
- nav.hide()
164
- if nav.children().length == 0
165
- nav.hide()
166
- tab_content.hide()
167
- toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right')
168
- else
169
- if toggler.hasClass('active')
170
- toggler.children('i').addClass('icon-chevron-down')
171
- tab_content.show()
172
- else
173
- toggler.children('i').addClass('icon-chevron-right')
174
- tab_content.hide()
175
-
176
- # polymorphic-association
177
-
178
- content.find('[data-polymorphic]').each ->
179
- type_select = $(this)
180
- field = type_select.parents('.control-group').first()
181
- object_select = field.find('select').last()
182
- urls = type_select.data('urls')
183
-
184
- type_select.on 'change', (e) ->
185
- selected_type = type_select.val().toLowerCase()
186
- selected_data = $("##{selected_type}-js-options").data('options')
187
- object_select.data('options', selected_data)
188
- object_select.filteringSelect("destroy")
189
- object_select.filteringSelect selected_data
190
-
191
-
192
- # simplemde
193
-
194
- goSimpleMDEs = ->
195
- content.find('[data-richtext=simplemde]').not('.simplemded').each (index, domEle) ->
196
- options = $(this).data('options')
197
- instance_config = options.instance_config
198
- new window.SimpleMDE($.extend(true, {
199
- element: document.getElementById(this.id),
200
- autosave: {
201
- uniqueId: this.id
202
- }
203
- }, instance_config))
204
- $(this).addClass('simplemded')
205
-
206
- $editors = content.find('[data-richtext=simplemde]').not('.simplemded')
207
- if $editors.length
208
- if not window.SimpleMDE
209
- options = $editors.first().data('options')
210
- $('head').append('<link href="' + options['css_location'] + '" rel="stylesheet" media="all" type="text\/css">')
211
- $.getScript options['js_location'], (script, textStatus, jqXHR) ->
212
- goSimpleMDEs()
213
- else
214
- goSimpleMDEs()
215
-
216
- # ckeditor
217
-
218
- goCkeditors = ->
219
- content.find('[data-richtext=ckeditor]').not('.ckeditored').each (index, domEle) ->
220
- try
221
- if instance = window.CKEDITOR.instances[this.id]
222
- instance.destroy(true)
223
- window.CKEDITOR.replace(this, $(this).data('options'))
224
- $(this).addClass('ckeditored')
225
-
226
- $editors = content.find('[data-richtext=ckeditor]').not('.ckeditored')
227
- if $editors.length
228
- if not window.CKEDITOR
229
- options = $editors.first().data('options')
230
- window.CKEDITOR_BASEPATH = options['base_location']
231
- $.getScript options['jspath'], (script, textStatus, jqXHR) =>
232
- goCkeditors()
233
- else
234
- goCkeditors()
235
-
236
- #codemirror
237
-
238
- goCodeMirrors = (array) =>
239
- array.each (index, domEle) ->
240
- options = $(this).data('options')
241
- textarea = this
242
- $.getScript options['locations']['mode'], (script, textStatus, jqXHR) ->
243
- options = $(domEle).data('options')
244
- $('head').append('<link href="' + options['locations']['theme'] + '" rel="stylesheet" media="all" type="text\/css">')
245
- CodeMirror.fromTextArea(textarea,options['options'])
246
- $(textarea).addClass('codemirrored')
247
-
248
- array = content.find('[data-richtext=codemirror]').not('.codemirrored')
249
- if array.length
250
- @array = array
251
- if not window.CodeMirror
252
- options = $(array[0]).data('options')
253
- $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
254
- $.getScript options['jspath'], (script, textStatus, jqXHR) =>
255
- goCodeMirrors(@array)
256
- else
257
- goCodeMirrors(@array)
258
-
259
- # bootstrap_wysihtml5
260
-
261
- goBootstrapWysihtml5s = (array, config_options) =>
262
- array.each ->
263
- $(@).addClass('bootstrap-wysihtml5ed')
264
- $(@).closest('.controls').addClass('well')
265
- $(@).wysihtml5(config_options)
266
-
267
- array = content.find('[data-richtext=bootstrap-wysihtml5]').not('.bootstrap-wysihtml5ed')
268
- if array.length
269
- @array = array
270
- options = $(array[0]).data('options')
271
- config_options = $.parseJSON(options['config_options'])
272
- if not window.wysihtml5
273
- $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
274
- $.getScript options['jspath'], (script, textStatus, jqXHR) =>
275
- goBootstrapWysihtml5s(@array, config_options)
276
- else
277
- goBootstrapWysihtml5s(@array, config_options)
278
-
279
- # froala_wysiwyg
280
-
281
- goFroalaWysiwygs = (array) =>
282
- array.each ->
283
- options = $(@).data('options')
284
- config_options = $.parseJSON(options['config_options'])
285
- if config_options
286
- if !config_options['inlineMode']
287
- config_options['inlineMode'] = false
288
- else
289
- config_options = { inlineMode: false }
290
-
291
- uploadEnabled =
292
- if config_options['imageUploadURL']
293
- config_options['imageUploadParams'] =
294
- authenticity_token: $('meta[name=csrf-token]').attr('content')
295
-
296
- $(@).addClass('froala-wysiwyged')
297
- $(@).froalaEditor(config_options)
298
- if uploadEnabled
299
- $(@).on 'froalaEditor.image.error', (e, editor, error) ->
300
- alert("error uploading image: " + error.message);
301
- # Custom error message returned from the server.
302
- if error.code == 0
303
-
304
- # Bad link.
305
- else if error.code == 1
306
-
307
- # No link in upload response.
308
- else if error.code == 2
309
-
310
- # Error during image upload.
311
- else if error.code == 3
312
-
313
- # Parsing response failed.
314
- else if error.code == 4
315
-
316
- # Image too large.
317
- else if error.code == 5
318
-
319
- # Invalid image type.
320
- else if error.code == 6
321
-
322
- # Image can be uploaded only to same domain in IE 8 and IE 9.
323
- else if error.code == 7
324
-
325
- else
326
-
327
- return
328
-
329
- .on('froalaEditor.image.removed', (e, editor, $img) ->
330
- # Set the image source to the image delete params.
331
- editor.options.imageDeleteParams =
332
- src: $img.attr('src')
333
- authenticity_token: $('meta[name=csrf-token]').attr('content')
334
- # Make the delete request.
335
- editor.deleteImage $img
336
- return
337
- ).on('editable.imageDeleteSuccess', (e, editor, data) ->
338
- # handle success
339
- ).on 'editable.imageDeleteError', (e, editor, error) ->
340
- # handle error
341
- alert("error deleting image: " + error.message);
342
-
343
- array = content.find('[data-richtext=froala-wysiwyg]').not('.froala-wysiwyged')
344
- if array.length
345
- options = $(array[0]).data('options')
346
- if not $.isFunction($.fn.editable)
347
- $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
348
- $.getScript options['jspath'], (script, textStatus, jqXHR) =>
349
- goFroalaWysiwygs(array)
350
- else
351
- goFroalaWysiwygs(array)
352
-
353
- # action_text
354
-
355
- content.find('trix-editor').each ->
356
- if !window.Trix
357
- options = $(this).data('options')
358
- $('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
359
- $.getScript options['jspath']
@@ -1,107 +0,0 @@
1
- $ = jQuery
2
-
3
- $(document).on "click", "#list input.toggle", ->
4
- $("#list [name='bulk_ids[]']").prop "checked", $(this).is(":checked")
5
-
6
- $(document).on 'click', '.pjax', (event) ->
7
- if event.which > 1 || event.metaKey || event.ctrlKey
8
- return
9
- else if $.support.pjax
10
- event.preventDefault()
11
- $.pjax
12
- container: $(this).data('pjax-container') || '[data-pjax-container]'
13
- url: $(this).data('href') || $(this).attr('href')
14
- timeout: 2000
15
- else if $(this).data('href') # not a native #href, need some help
16
- window.location = $(this).data('href')
17
-
18
- $(document).on 'submit', '.pjax-form', (event) ->
19
- if $.support.pjax
20
- event.preventDefault()
21
- $.pjax
22
- container: $(this).data('pjax-container') || '[data-pjax-container]'
23
- url: this.action + (if (this.action.indexOf('?') != -1) then '&' else '?') + $(this).serialize()
24
- timeout: 2000
25
-
26
- $(document)
27
- .on 'pjax:start', ->
28
- $('#loading').show()
29
- .on 'pjax:end', ->
30
- $('#loading').hide()
31
-
32
- $(document).on 'click', '[data-target]', ->
33
- if !$(this).hasClass('disabled')
34
- if $(this).has('i.icon-chevron-down').length
35
- $(this).removeClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right')
36
- $($(this).data('target')).select(':visible').hide('slow')
37
- else
38
- if $(this).has('i.icon-chevron-right').length
39
- $(this).addClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right')
40
- $($(this).data('target')).select(':hidden').show('slow')
41
-
42
- $(document).on 'click', '.form-horizontal legend', ->
43
- if $(this).has('i.icon-chevron-down').length
44
- $(this).siblings('.control-group:visible').hide('slow')
45
- $(this).children('i').toggleClass('icon-chevron-down icon-chevron-right')
46
- else
47
- if $(this).has('i.icon-chevron-right').length
48
- $(this).siblings('.control-group:hidden').show('slow')
49
- $(this).children('i').toggleClass('icon-chevron-down icon-chevron-right')
50
-
51
- $(document).on 'click', 'form .tab-content .tab-pane a.remove_nested_one_fields', ->
52
- $(this).children('input[type="hidden"]').val($(this).hasClass('active')).
53
- siblings('i').toggleClass('icon-check icon-trash')
54
-
55
- $(document).ready ->
56
- RailsAdmin.I18n.init $('html').attr('lang'), $("#admin-js").data('i18nOptions')
57
- $(document).trigger('rails_admin.dom_ready')
58
-
59
- $(document).on 'pjax:end', ->
60
- $(document).trigger('rails_admin.dom_ready')
61
-
62
- $(document).on 'rails_admin.dom_ready', ->
63
- $('.nav.nav-pills li.active').removeClass('active')
64
- $(".nav.nav-pills li[data-model=\"#{$('.page-header').data('model')}\"]").addClass('active')
65
-
66
- $('.animate-width-to').each ->
67
- length = $(this).data("animate-length")
68
- width = $(this).data("animate-width-to")
69
- $(this).animate(width: width, length, 'easeOutQuad')
70
-
71
- $('.form-horizontal legend').has('i.icon-chevron-right').each ->
72
- $(this).siblings('.control-group').hide()
73
-
74
- $(".table").tooltip selector: "th[rel=tooltip]"
75
-
76
- # Workaround for jquery-ujs formnovalidate issue:
77
- # https://github.com/rails/jquery-ujs/issues/316
78
- $('[formnovalidate]').on 'click', ->
79
- $(this).closest('form').attr('novalidate', true)
80
-
81
- $.each $('#filters_box').data('options'), ->
82
- $.filters.append(this)
83
-
84
- # Interactions for index action
85
- $(document).on 'click', ".bulk-link", (event) ->
86
- event.preventDefault()
87
- $('#bulk_action').val($(this).data('action'))
88
- $('#bulk_form').submit()
89
-
90
- $(document).on 'click', "#remove_filter", (event) ->
91
- event.preventDefault()
92
- $("#filters_box").html("")
93
- $("hr.filters_box").hide()
94
- $(this).parent().siblings("input[type='search']").val("")
95
- $(this).parents("form").submit()
96
-
97
- # Interactions for export action
98
- $(document).on 'click', '#fields_to_export label input#check_all', () ->
99
- elems = $('#fields_to_export label input')
100
- if $('#fields_to_export label input#check_all').is ':checked'
101
- $(elems).prop('checked', true)
102
- else
103
- $(elems).prop('checked',false)
104
-
105
- $(document).on 'click', '#fields_to_export .reverse-selection', () ->
106
- $(this).closest(".control-group").find(".controls").find("input").click()
107
-