diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-01-07 16:57:41 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-01-08 11:01:43 +0100 |
| commit | 1c6eec023d520f6f2f21b71645b8d26048494ba4 (patch) | |
| tree | 196817614935870208ae177669cc876b561035cd /addons/website/static/lib/summernote/src/js/EventHandler.js | |
| parent | e089f296d266bb5a1ea957d1d1c728433f8821fc (diff) | |
[UPD] website: update of summernote lib
Diffstat (limited to 'addons/website/static/lib/summernote/src/js/EventHandler.js')
| -rw-r--r-- | addons/website/static/lib/summernote/src/js/EventHandler.js | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/addons/website/static/lib/summernote/src/js/EventHandler.js b/addons/website/static/lib/summernote/src/js/EventHandler.js index 481581ad5ac..faa6a7eadaf 100644 --- a/addons/website/static/lib/summernote/src/js/EventHandler.js +++ b/addons/website/static/lib/summernote/src/js/EventHandler.js @@ -296,13 +296,45 @@ define([ */ var hPasteClipboardImage = function (event) { var clipboardData = event.originalEvent.clipboardData; + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + var $editable = layoutInfo.editable(); + if (!clipboardData || !clipboardData.items || !clipboardData.items.length) { + var callbacks = $editable.data('callbacks'); + // only can run if it has onImageUpload method + if (!callbacks.onImageUpload) { + return; + } + + // save cursor + editor.saveNode($editable); + editor.saveRange($editable); + + $editable.html(''); + + setTimeout(function () { + var $img = $editable.find('img'); + var datauri = $img[0].src; + + var data = atob(datauri.split(',')[1]); + var array = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + array[i] = data.charCodeAt(i); + } + + var blob = new Blob([array], { type : 'image/png'}); + blob.name = 'clipboard.png'; + + editor.restoreNode($editable); + editor.restoreRange($editable); + insertImages(layoutInfo, [blob]); + + editor.afterCommand($editable); + }, 0); + return; } - var layoutInfo = makeLayoutInfo(event.currentTarget || event.target), - $editable = layoutInfo.editable(); - var item = list.head(clipboardData.items); var isClipboardImage = item.kind === 'file' && item.type.indexOf('image/') !== -1; @@ -541,10 +573,13 @@ define([ event.preventDefault(); var dataTransfer = event.originalEvent.dataTransfer; - if (dataTransfer && dataTransfer.files) { - var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); - layoutInfo.editable().focus(); + var text = dataTransfer.getData('text/plain'); + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + layoutInfo.editable().focus(); + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { insertImages(layoutInfo, dataTransfer.files); + } else if (text) { + editor.insertText(layoutInfo.editable(), text); } }).on('dragover', false); // prevent default dragover event }; |
