card-mod-script 0.13.2 → 0.14.1

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/assets/script/decko/components.js.coffee +3 -0
  3. data/assets/script/decko/decko.js.coffee +0 -15
  4. data/assets/script/decko/editor.js.coffee +3 -1
  5. data/assets/script/decko/filter.js.coffee +14 -7
  6. data/assets/script/decko/filter_links.js.coffee +2 -2
  7. data/assets/script/decko/mod.js.coffee +2 -8
  8. data/assets/script/decko/name_editor.js.coffee +0 -18
  9. data/assets/script/decko/overlay.js.coffee +0 -3
  10. data/assets/script/{script_pointer_config.js.coffee → decko/pointer_config.js.coffee} +1 -2
  11. data/assets/script/{script_pointer_list_editor.js.coffee → decko/pointer_list_editor.js.coffee} +0 -0
  12. data/assets/script/decko/slot.js.coffee +3 -3
  13. data/assets/script/decko/slot_ready.js.coffee +1 -0
  14. data/assets/script/decko/slotter.js.coffee +23 -31
  15. data/assets/script/decko/type_editor.js.coffee +21 -0
  16. data/assets/script/decko/upload.js.coffee +12 -5
  17. data/assets/script/jquery-ui.min.js +13 -0
  18. data/assets/script/manifest.yml +16 -3
  19. data/init/early/init_execjs.rb +3 -0
  20. data/set/abstract/00_script.rb +30 -31
  21. data/set/abstract/01_asset_script.rb +0 -16
  22. data/set/abstract/{script_asset_list.rb → script_group.rb} +12 -13
  23. data/set/all/head_javascript.rb +12 -8
  24. data/set/right/script.rb +1 -14
  25. data/set/type/local_script_folder_group.rb +2 -2
  26. data/set/type/local_script_manifest_group.rb +1 -1
  27. data/set/type_plus_right/mod/script.rb +56 -0
  28. data/set/type_plus_right/set/script.rb +7 -0
  29. data/vendor/jquery_file_upload/LICENSE.txt +11 -12
  30. data/vendor/jquery_file_upload/README.md +189 -72
  31. data/vendor/jquery_file_upload/SECURITY.md +227 -0
  32. data/vendor/jquery_file_upload/VULNERABILITIES.md +118 -0
  33. data/vendor/jquery_file_upload/cors/postmessage.html +68 -58
  34. data/vendor/jquery_file_upload/cors/result.html +12 -10
  35. data/vendor/jquery_file_upload/css/jquery.fileupload-ui.css +24 -13
  36. data/vendor/jquery_file_upload/css/jquery.fileupload.css +3 -4
  37. data/vendor/jquery_file_upload/docker-compose.yml +55 -0
  38. data/vendor/jquery_file_upload/index.html +332 -230
  39. data/vendor/jquery_file_upload/js/cors/jquery.postmessage-transport.js +109 -109
  40. data/vendor/jquery_file_upload/js/cors/jquery.xdr-transport.js +81 -73
  41. data/vendor/jquery_file_upload/js/demo.js +75 -0
  42. data/vendor/jquery_file_upload/js/jquery.fileupload-audio.js +82 -94
  43. data/vendor/jquery_file_upload/js/jquery.fileupload-image.js +321 -300
  44. data/vendor/jquery_file_upload/js/jquery.fileupload-process.js +138 -146
  45. data/vendor/jquery_file_upload/js/jquery.fileupload-ui.js +737 -692
  46. data/vendor/jquery_file_upload/js/jquery.fileupload-validate.js +91 -97
  47. data/vendor/jquery_file_upload/js/jquery.fileupload-video.js +82 -94
  48. data/vendor/jquery_file_upload/js/jquery.fileupload.js +1569 -1451
  49. data/vendor/jquery_file_upload/js/jquery.iframe-transport.js +208 -205
  50. data/vendor/jquery_file_upload/js/vendor/jquery.ui.widget.js +397 -340
  51. data/vendor/jquery_file_upload/package-lock.json +6853 -0
  52. data/vendor/jquery_file_upload/package.json +71 -10
  53. data/vendor/jquery_file_upload/server/gae-python/app.yaml +11 -10
  54. data/vendor/jquery_file_upload/server/php/Dockerfile +23 -17
  55. data/vendor/jquery_file_upload/server/php/UploadHandler.php +206 -137
  56. data/vendor/jquery_file_upload/server/php/php.ini +5 -0
  57. data/vendor/jquery_file_upload/test/index.html +36 -159
  58. data/vendor/jquery_file_upload/test/unit.js +989 -0
  59. data/vendor/jquery_file_upload/test/vendor/chai.js +10854 -0
  60. data/vendor/jquery_file_upload/test/vendor/mocha.css +325 -0
  61. data/vendor/jquery_file_upload/test/vendor/mocha.js +18178 -0
  62. data/vendor/jquery_file_upload/wdio/LICENSE.txt +20 -0
  63. data/vendor/jquery_file_upload/wdio/assets/black+white-3x2.jpg +0 -0
  64. data/vendor/jquery_file_upload/wdio/assets/black+white-60x40.gif +0 -0
  65. data/vendor/jquery_file_upload/wdio/conf/chrome.js +40 -0
  66. data/vendor/jquery_file_upload/wdio/conf/firefox.js +25 -0
  67. data/vendor/jquery_file_upload/wdio/hooks/index.js +36 -0
  68. data/vendor/jquery_file_upload/wdio/test/pages/file-upload.js +79 -0
  69. data/vendor/jquery_file_upload/wdio/test/specs/01-file-upload.js +25 -0
  70. data/vendor/jquery_file_upload/wdio/wdio.conf.js +4 -0
  71. metadata +36 -53
  72. data/assets/script/jquery-ui.js +0 -10
  73. data/file/mod_script_script_decko_machine_output/file.js +0 -2710
  74. data/file/mod_script_script_jquery_machine_output/file.js +0 -12924
  75. data/lib/javascript/script_html5shiv_printshiv.js +0 -1
  76. data/set/self/script_html5shiv_printshiv.rb +0 -11
  77. data/set/self/script_mods.rb +0 -1
  78. data/set/type/mod_script_assets.rb +0 -21
  79. data/vendor/jquery_file_upload/CONTRIBUTING.md +0 -15
  80. data/vendor/jquery_file_upload/angularjs.html +0 -211
  81. data/vendor/jquery_file_upload/basic-plus.html +0 -226
  82. data/vendor/jquery_file_upload/basic.html +0 -136
  83. data/vendor/jquery_file_upload/bower-version-update.js +0 -16
  84. data/vendor/jquery_file_upload/bower.json +0 -64
  85. data/vendor/jquery_file_upload/css/jquery-ui-demo-ie8.css +0 -21
  86. data/vendor/jquery_file_upload/css/jquery-ui-demo.css +0 -67
  87. data/vendor/jquery_file_upload/css/style.css +0 -15
  88. data/vendor/jquery_file_upload/jquery-ui.html +0 -252
  89. data/vendor/jquery_file_upload/js/app.js +0 -101
  90. data/vendor/jquery_file_upload/js/jquery.fileupload-angular.js +0 -437
  91. data/vendor/jquery_file_upload/js/jquery.fileupload-jquery-ui.js +0 -161
  92. data/vendor/jquery_file_upload/js/main.js +0 -75
  93. data/vendor/jquery_file_upload/server/gae-go/app/main.go +0 -361
  94. data/vendor/jquery_file_upload/server/gae-go/app.yaml +0 -12
  95. data/vendor/jquery_file_upload/server/gae-go/static/favicon.ico +0 -0
  96. data/vendor/jquery_file_upload/server/gae-go/static/robots.txt +0 -2
  97. data/vendor/jquery_file_upload/server/php/docker-compose.yml +0 -9
  98. data/vendor/jquery_file_upload/test/test.js +0 -1292
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 740c8b43709f696ea82eb875a37d92dc4c29aaf193c35dd084472817574dcb24
4
- data.tar.gz: cddc64356e56ede909a08cd2a6988e3f0b0f63c7e727de9bf123e2bedc5b1a25
3
+ metadata.gz: 7b8ffb63a43e4b60b749ea28e9494fa61727018ba01e3beb5a979bc525963c3e
4
+ data.tar.gz: 674f5afebe7b06a850b9a32f63c1ef5ff135b48febfc3ec3eb630d417b457b44
5
5
  SHA512:
6
- metadata.gz: 0b12a2aed352d954774cb731bf79ce89ae345962343762682246abd605a253d5e8556291c49790189a7975cd558e56626007ee7b2f6117191759e94d366fb436
7
- data.tar.gz: 26181f4a51408bec334a90b4b782d68680903cb3ba68a81191d634411063747b82ab5788b4cb56980c24e5e080bbc1614223e7a7d305e8478c9ff6b24e9473bd
6
+ metadata.gz: c99cb1d7f7087e345f8553f2b0825e467c532bd9dd172e173b069956ce0734f595d24478f9d98b0ed465082b988d93b6624a7e61ee17b23e190074632515bf60
7
+ data.tar.gz: 5ca294c81721eff117a5a65d7e51d4f6cb3aac63410b94b250c54979c2a919fafcfe1a636198e8ba91c971f49e4f1e1ce6e58736afec3ed36a4b8723ccdeb66b
@@ -42,5 +42,8 @@ $(window).ready ->
42
42
  $(event.target).closest('form').submit()
43
43
  false
44
44
 
45
+ $("body").on "click", "._popover_link", (event) ->
46
+ event.preventDefault();
47
+
45
48
 
46
49
 
@@ -45,16 +45,6 @@ $(window).ready ->
45
45
  $('body').on 'click', 'button.redirecter', ->
46
46
  window.location = $(this).attr('href')
47
47
 
48
- $('body').on "change", '.live-type-field', ->
49
- $this = $(this)
50
-
51
- setSlotMode($this)
52
- $this.data 'params', $(this).closest('form').serialize()
53
- $this.data 'url', $(this).attr 'href'
54
-
55
- $('body').on 'change', '.edit-type-field', ->
56
- $(this).closest('form').submit()
57
-
58
48
  $('body').on 'mouseenter', '[hover_content]', ->
59
49
  $(this).attr 'hover_restore', $(this).html()
60
50
  $(this).html $(this).attr( 'hover_content' )
@@ -83,11 +73,6 @@ decko.slotReady (slot) ->
83
73
  # #ajaxEnabled: false
84
74
  # }
85
75
 
86
- setSlotMode = ($el, mode=null) ->
87
- $slotter = $el.closest(".slotter")
88
- if $slotter.length && $slotter.attr('data-slotter-mode')
89
- $slotter.attr 'data-original-slotter-mode', $slotter.attr('slotter-mode')
90
- $slotter.attr 'data-slotter-mode', mode
91
76
 
92
77
 
93
78
  warn = (stuff) -> console.log stuff if console?
@@ -28,8 +28,10 @@ jQuery.fn.extend
28
28
  setContentFields: (selector, fn) ->
29
29
  $.each @find(selector), ->
30
30
  $(this).setContentField(fn)
31
+ contentField: ->
32
+ @closest('.card-editor').find '.d0-card-content'
31
33
  setContentField: (fn) ->
32
- field = @closest('.card-editor').find('.d0-card-content')
34
+ field = @contentField()
33
35
  init_val = field.val() # tinymce-jquery overrides val();
34
36
  # that's why we're not using it.
35
37
  new_val = fn.call this
@@ -9,11 +9,19 @@ decko.filter = (el) ->
9
9
  else
10
10
  $(el).closest("._filtered-content").find "._filter-widget"
11
11
 
12
+
13
+ # the filter form includes the below
14
+ @form = @widget.find "._filter-form"
15
+
16
+ # one-click filter links
17
+ @quickFilter = @widget.find "._quick-filter"
18
+
19
+ # include filters field, more-fields dropdown, and reset button
12
20
  @activeContainer = @widget.find "._filter-container"
21
+
22
+ # the "More Filters" Dropdown
13
23
  @dropdown = @widget.find "._add-filter-dropdown"
14
24
  @dropdownItems = @widget.find "._filter-category-select"
15
- @form = @widget.find "._filter-form"
16
- @quickFilter = @widget.find "._quick-filter"
17
25
 
18
26
  @showWithStatus = (status) ->
19
27
  f = this
@@ -23,11 +31,10 @@ decko.filter = (el) ->
23
31
  f.activate item.data("category")
24
32
 
25
33
  @reset = () ->
26
- # @clear()
27
- @dropdownItems.show()
28
34
  @restrict @form.find("._reset-filter").data("reset")
29
35
 
30
36
  @clear = () ->
37
+ @dropdownItems.show()
31
38
  @activeContainer.find(".input-group").remove()
32
39
 
33
40
  @activate = (category, value) ->
@@ -59,7 +66,7 @@ decko.filter = (el) ->
59
66
  field.find("input, select").first().focus()
60
67
 
61
68
  @fieldValue = (field, value) ->
62
- if typeof(value) == "object"
69
+ if typeof(value) == "object" && !Array.isArray(value)
63
70
  @compoundFieldValue field, value
64
71
  else
65
72
  @simpleFieldValue field, value
@@ -83,11 +90,10 @@ decko.filter = (el) ->
83
90
  # only has effect if there is a data-options-card value
84
91
 
85
92
  @initSelectField = (field) ->
86
- field.find("select").select2(
93
+ field.find("select").select2
87
94
  containerCssClass: ":all:"
88
95
  width: "auto"
89
96
  dropdownAutoWidth: "true"
90
- )
91
97
 
92
98
  @activeField = (category) ->
93
99
  @activeContainer.find("._filter-input-#{category}")
@@ -95,6 +101,7 @@ decko.filter = (el) ->
95
101
  @isActive = (category) ->
96
102
  @activeField(category).length
97
103
 
104
+ # clear filter and use restrictions in data
98
105
  @restrict = (data) ->
99
106
  @clear()
100
107
  for key of data
@@ -61,8 +61,8 @@ $(window).ready ->
61
61
  f = targetFilter this
62
62
  if f.widget.length
63
63
  f.restrict filterableData(this)
64
- e.preventDefault()
65
- e.stopPropagation()
64
+ e.preventDefault()
65
+ e.stopPropagation()
66
66
 
67
67
  $('body').on 'click', '._filter-link', (e) ->
68
68
  f = filterFor this
@@ -17,10 +17,10 @@ window.decko ||= {} #needed to run w/o *head. eg. jasmine
17
17
  # initfunc()
18
18
 
19
19
  $(window).ready ->
20
- $('body').on 'click', '._stop_propagation', (event)->
20
+ $(document).on 'click', '._stop_propagation', (event)->
21
21
  event.stopPropagation()
22
22
 
23
- $('body').on 'click', '._prevent_default', (event)->
23
+ $(document).on 'click', '._prevent_default', (event)->
24
24
  event.preventDefault()
25
25
 
26
26
  $('body').on 'mouseenter', 'a[data-hover-text]', ->
@@ -77,9 +77,3 @@ $.extend decko,
77
77
  toggleShade: (shadeSlot) ->
78
78
  shadeSlot.find('.shade-content').slideToggle 1000
79
79
  shadeSlot.find('.glyphicon').toggleClass 'glyphicon-triangle-right glpyphicon-triangle-bottom'
80
-
81
-
82
-
83
-
84
-
85
-
@@ -1,17 +1,6 @@
1
1
  checkNameAfterTyping = null
2
2
 
3
3
  $(window).ready ->
4
- $('body').on 'click', '._renamer-updater', ->
5
- $(this).closest('form').find('#card_update_referers').val 'true'
6
-
7
- $('body').on 'submit', '._rename-form', ->
8
- f = $(this)
9
- confirm = f.find '.alert'
10
- if confirm.is ':hidden'
11
- referenceConfirm f
12
- confirm.show 'blind'
13
- false
14
-
15
4
  $('body').on 'keyup', '.name-editor input', (event) ->
16
5
  clearTimeout(checkNameAfterTyping) if checkNameAfterTyping
17
6
  input = $(this)
@@ -24,13 +13,6 @@ $(window).ready ->
24
13
  checkNameAfterTyping = null
25
14
  , 400
26
15
 
27
- referenceConfirm = (form)->
28
- confirm = form.find '._rename-reference-confirm'
29
- return unless confirm.data('referer-count') > 0
30
- confirm.show()
31
- btn = form.find '._renamer-updater'
32
- btn.show()
33
- btn.focus()
34
16
 
35
17
  checkName = (box) ->
36
18
  name = box.val()
@@ -13,9 +13,6 @@ jQuery.fn.extend
13
13
  $("._overlay-origin").removeClass("_overlay-origin")
14
14
  @replaceOverlay(overlay)
15
15
  else
16
- #@find(".tinymce-textarea").each ->
17
- # tinymce.remove("##{$(this).attr("id")}")
18
- # #tinyMCE.execCommand('mceRemoveControl', false, $(this).attr("id"))
19
16
  if @parent().hasClass("_overlay-container-placeholder")
20
17
  @parent().addClass("overlay-container")
21
18
  else
@@ -45,8 +45,7 @@ $.extend decko,
45
45
  input.autocomplete { source: decko.slotPath(path) }
46
46
 
47
47
  pointerContent: (vals) ->
48
- list = $.map $.makeArray(vals), (v) -> if v then '[[' + v + ']]'
49
- $.makeArray(list).join "\n"
48
+ $.makeArray(vals).join "\n"
50
49
 
51
50
  linkListContent: (input_groups) ->
52
51
  vals = input_groups.map( ->
@@ -88,7 +88,7 @@ jQuery.fn.extend
88
88
  isMainOrMainModal: ->
89
89
  el = $(this)
90
90
  el = el.findOriginSlot("modal") if el.closest(".modal")[0]
91
- el.isMain()
91
+ el && el.isMain()
92
92
 
93
93
  findSlot: (selector) ->
94
94
  if selector == "modal-origin"
@@ -148,8 +148,8 @@ jQuery.fn.extend
148
148
  slotMark: ->
149
149
  if @data('cardId') then "~#{@data('cardId')}" else @data("cardName")
150
150
 
151
- setSlotContent: (val, mode, $slotter) ->
152
- v = $(val)[0] && $(val) || val
151
+ setSlotContent: (newContent, mode, $slotter) ->
152
+ v = $(newContent)[0] && $(newContent) || newContent
153
153
 
154
154
  if typeof(v) == "string"
155
155
  # Needed to support "TEXT: result" pattern in success (eg deleting nested cards)
@@ -9,3 +9,4 @@ decko.slotReady (slot) ->
9
9
  )
10
10
 
11
11
 
12
+
@@ -63,7 +63,7 @@
63
63
  #
64
64
  #
65
65
  $(window).ready ->
66
- $('body').on 'ajax:success', '.slotter', (event, data, c, d) ->
66
+ $('body').on 'ajax:success', '.slotter', (event, data) ->
67
67
  $(this).slotterSuccess event, data
68
68
 
69
69
  $('body').on 'ajax:error', '.slotter', (event, xhr) ->
@@ -114,27 +114,15 @@ jQuery.fn.extend
114
114
  form.append input
115
115
  input.val value
116
116
 
117
- slotterSuccess: (event, data) ->
117
+ slotterSuccess: (event, responseData) ->
118
+ debugger
118
119
  unless @hasClass("slotter")
119
120
  console.log "warning: slotterSuccess called on non-slotter element #{this}"
120
121
  return
121
122
 
122
123
  return if event.slotSuccessful
123
124
 
124
- if @data("reload")
125
- window.location.reload(true)
126
-
127
- if @data("update-modal-origin")
128
- @updateModalOrigin()
129
-
130
- if @data("update-origin")
131
- @updateOrigin()
132
-
133
- if @data('original-slotter-mode')
134
- @attr 'data-slotter-mode', @data('original-slotter-mode')
135
-
136
- mode = @data("slotter-mode")
137
- @showSuccessResponse data, mode
125
+ @showSuccessResponse responseData, @data("slotter-mode")
138
126
 
139
127
  if @hasClass "_close-overlay"
140
128
  @removeOverlay()
@@ -150,21 +138,24 @@ jQuery.fn.extend
150
138
  reload_url = @data("update-foreign-slot-url")
151
139
  $slot.reloadSlot reload_url
152
140
 
141
+ if @data('original-slotter-mode')
142
+ @attr 'data-slotter-mode', @data('original-slotter-mode')
143
+ if @data('original-slot-selector')
144
+ @attr 'data-slot-selector', @data('original-slot-selector')
145
+
153
146
  event.slotSuccessful = true
154
147
 
155
- showSuccessResponse: (data, mode) ->
156
- if mode == "silent-success"
157
- return
158
- else if mode == "update-modal-origin"
159
- @updateModalOrigin()
160
- else if mode == "update-origin"
161
- @updateOrigin()
162
- else if data.redirect
163
- window.location = data.redirect
164
- else if data.reload
148
+ showSuccessResponse: (responseData, mode) ->
149
+ if responseData.redirect
150
+ window.location = responseData.redirect
151
+ else if responseData.reload
165
152
  window.location.reload(true)
166
153
  else
167
- @updateSlot data, mode
154
+ switch mode
155
+ when "silent-success" then return
156
+ when "update-modal-origin" then @updateModalOrigin()
157
+ when "update-origin" then @updateOrigin()
158
+ else @updateSlot responseData, mode
168
159
 
169
160
  showErrorResponse: (status, result) ->
170
161
  if status == 403 #permission denied
@@ -200,12 +191,13 @@ jQuery.fn.extend
200
191
 
201
192
  registerAsOrigin: (type, slot) ->
202
193
  if slot.hasClass("_modal-slot")
203
- slot = slot.find(".modal-body .card-slot")
194
+ slot = slot.find(".modal-body") # put the origin slot id on the modal-body instead
195
+ # of on the slot, so that it survives slot reloads
204
196
  slot.attr("data-#{type}-origin-slot-id", @closest(".card-slot").data("slot-id"))
205
197
 
206
- updateSlot: (data, mode) ->
198
+ updateSlot: (newContent, mode) ->
207
199
  mode ||= "replace"
208
- @setSlotContent data, mode, $(this)
200
+ @setSlotContent newContent, mode, $(this)
209
201
 
210
202
  # close modal or overlay
211
203
  closeOnSuccess: (type) ->
@@ -236,7 +228,7 @@ jQuery.fn.extend
236
228
  )
237
229
  return false
238
230
 
239
- widget = input.data 'blueimpFileupload' #jQuery UI widget
231
+ widget = input.data 'wblueimpFileupload' #jQuery UI widget
240
232
 
241
233
  # browsers that can't do ajax uploads use iframe
242
234
  unless widget._isXHRUpload(widget.options)
@@ -0,0 +1,21 @@
1
+ $(window).ready ->
2
+ $('body').on "change", '._live-type-field', ->
3
+ $this = $(this)
4
+
5
+ setSlotMode($this)
6
+ debugger
7
+ $this.data 'params', $this.closest('form').serialize()
8
+ $this.data 'url', $this.attr 'href'
9
+
10
+ $('body').on 'change', '.edit-type-field', ->
11
+ $(this).closest('form').submit()
12
+
13
+ setSlotMode = ($el, mode=null) ->
14
+ $slotter = $el.closest(".slotter")
15
+ if $slotter.length
16
+ if $slotter.attr('data-slotter-mode')
17
+ $slotter.attr 'data-original-slotter-mode', $slotter.attr('data-slotter-mode')
18
+ $slotter.attr 'data-slotter-mode', mode
19
+ if $slotter.attr('data-slot-selector')
20
+ $slotter.attr 'data-original-slot-selector', $slotter.attr('data-slot-selector')
21
+ $slotter.removeAttr 'data-slot-selector'
@@ -1,10 +1,10 @@
1
1
  $.extend decko,
2
2
  upload_file: (fileupload) ->
3
- # for file as a subcard in a form,
4
- # excess parameters are included in the request which cause errors.
5
- # only the file, type_id and attachment_card_name are needed
6
- # attachment_card_name is the original card name,
7
- # ex: card[subcards][+logo][image], card[file]
3
+ # for file as a subcard in a form,
4
+ # excess parameters are included in the request which cause errors.
5
+ # only the file, type_id and attachment_card_name are needed
6
+ # attachment_card_name is the original card name,
7
+ # ex: card[subcards][+logo][image], card[file]
8
8
  $(fileupload).on 'fileuploadsubmit', (e,data) ->
9
9
  $_this = $(this)
10
10
  card_name = $_this.siblings(".attachment_card_name:first").attr("name")
@@ -36,6 +36,7 @@ $.extend decko,
36
36
  'value="preview_editor" name="view">'
37
37
  data.submit()
38
38
  editor.find('.choose-file').hide()
39
+ # editor.find(".file-upload").prop "disabled", true
39
40
  editor.find('.extra_upload_param').remove()
40
41
 
41
42
  progressallFile: (e, data) ->
@@ -51,7 +52,13 @@ $(window).ready ->
51
52
  $('body').on 'click', '.cancel-upload', ->
52
53
  editor = $(this).closest '.card-editor'
53
54
  editor.find('.choose-file').show()
55
+ # editor.find(".file-upload").prop "disabled", false
54
56
  editor.find('.chosen-file').empty()
55
57
  editor.find('.progress').show()
56
58
  editor.find('#progress .progress-bar').css('width', '0%')
57
59
  editor.find('#progress').hide()
60
+
61
+ $('body').on "submit", "form", ->
62
+ uploader = $(this).find ".file-upload[type=file]"
63
+ if uploader[0]
64
+ uploader.prop "disabled", true