summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Cyriacks <marco@cyriacks.net>2015-01-30 21:50:00 +0100
committerMarco Cyriacks <marco@cyriacks.net>2015-02-01 22:26:34 +0100
commita54e9e5459cd45173b5db76a8bcce76b2e050433 (patch)
treea2d3daee045249f9bbbd0487ce8039cb94edadaa
parentc47328948b5fff218c68279260a57ab6b03e7423 (diff)
downloadgitlab-ce-a54e9e5459cd45173b5db76a8bcce76b2e050433.tar.gz
Fix raw image paste from clipboard
This patch binds the textarea (markdown area) paste event to the handlePaste() function (that was already present). Furthermore the event processing is improved in the following way: - The default paste event handler of the browser is only disabled if the browser fully supports clipboardData AND there realy is image data in the event object. In all other cases (no support or no image) the default handler processes the text paste. - Some obsolete code was removed. - The pasteText() function (which is somehow buggy because it places the cursor at the end of the text independantly from its position before the paste) is only used to place the image link after image data was pasted.
-rw-r--r--app/assets/javascripts/dropzone_input.js.coffee31
1 files changed, 13 insertions, 18 deletions
diff --git a/app/assets/javascripts/dropzone_input.js.coffee b/app/assets/javascripts/dropzone_input.js.coffee
index a0f0d98a8dc..abb5bf519ee 100644
--- a/app/assets/javascripts/dropzone_input.js.coffee
+++ b/app/assets/javascripts/dropzone_input.js.coffee
@@ -13,6 +13,8 @@ class @DropzoneInput
form_textarea = $(form).find("textarea.markdown-area")
form_textarea.wrap "<div class=\"div-dropzone\"></div>"
+ form_textarea.bind 'paste', (event) =>
+ handlePaste(event)
form_dropzone = $(form).find('.div-dropzone')
form_dropzone.parent().addClass "div-dropzone-wrapper"
@@ -133,24 +135,17 @@ class @DropzoneInput
formatLink = (str) ->
"![" + str.alt + "](" + str.url + ")"
- handlePaste = (e) ->
- e.preventDefault()
- my_event = e.originalEvent
-
- if my_event.clipboardData and my_event.clipboardData.items
- processItem(my_event)
-
- processItem = (e) ->
- image = isImage(e)
- if image
- filename = getFilename(e) or "image.png"
- text = "{{" + filename + "}}"
- pasteText(text)
- uploadFile image.getAsFile(), filename
-
- else
- text = e.clipboardData.getData("text/plain")
- pasteText(text)
+ handlePaste = (event) ->
+ pasteEvent = event.originalEvent
+ if pasteEvent.clipboardData and pasteEvent.clipboardData.items
+ image = isImage(pasteEvent)
+ if image
+ event.preventDefault()
+
+ filename = getFilename(pasteEvent) or "image.png"
+ text = "{{" + filename + "}}"
+ pasteText(text)
+ uploadFile image.getAsFile(), filename
isImage = (data) ->
i = 0