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.
This commit is contained in:
parent
c47328948b
commit
a54e9e5459
1 changed files with 12 additions and 17 deletions
|
@ -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,25 +135,18 @@ 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)
|
||||
handlePaste = (event) ->
|
||||
pasteEvent = event.originalEvent
|
||||
if pasteEvent.clipboardData and pasteEvent.clipboardData.items
|
||||
image = isImage(pasteEvent)
|
||||
if image
|
||||
filename = getFilename(e) or "image.png"
|
||||
event.preventDefault()
|
||||
|
||||
filename = getFilename(pasteEvent) or "image.png"
|
||||
text = "{{" + filename + "}}"
|
||||
pasteText(text)
|
||||
uploadFile image.getAsFile(), filename
|
||||
|
||||
else
|
||||
text = e.clipboardData.getData("text/plain")
|
||||
pasteText(text)
|
||||
|
||||
isImage = (data) ->
|
||||
i = 0
|
||||
while i < data.clipboardData.items.length
|
||||
|
|
Loading…
Reference in a new issue