summaryrefslogtreecommitdiff
path: root/addons/website/static/lib/summernote/src/js/EventHandler.js
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2015-01-07 16:57:41 +0100
committerChristophe Matthieu <chm@odoo.com>2015-01-08 11:01:43 +0100
commit1c6eec023d520f6f2f21b71645b8d26048494ba4 (patch)
tree196817614935870208ae177669cc876b561035cd /addons/website/static/lib/summernote/src/js/EventHandler.js
parente089f296d266bb5a1ea957d1d1c728433f8821fc (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.js47
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
};