mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[10.0][ADD][web_chatter_paste] (#548)
* Initial commit * Initial commit * [ADD] Tests * [FIX] Dependencies * [REM] Controller tests * [FIX] Removed unnecessary incompatibility warning * [FIX] Hyperlink to issues * [ADD] Tests * [FIX] Tests * [?] Testing test problem * [?] Testing test problem * [?] Testing test problem * [ADD] web_chatter_paste Initial commit Initial commit [ADD] Tests [FIX] Dependencies [REM] Controller tests [FIX] Removed unnecessary incompatibility warning [FIX] Hyperlink to issues [ADD] Tests [FIX] Tests [?] Testing test problem [?] Testing test problem [?] Testing test problem * Testing problem * Testing problem * Testing problem * [ADD] Mock for http.request * [FIX] Use patch to mock
This commit is contained in:
committed by
Dave Lasley
parent
b5d7d1a9d4
commit
0ac40527cd
110
web_chatter_paste/static/src/js/web_chatter_paste.js
Normal file
110
web_chatter_paste/static/src/js/web_chatter_paste.js
Normal file
@@ -0,0 +1,110 @@
|
||||
/* Copyright 2017 Onestein
|
||||
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
|
||||
|
||||
odoo.define('web_chatter_paste', function (require) {
|
||||
"use strict";
|
||||
var core = require('web.core'),
|
||||
composer = require('mail.composer');
|
||||
|
||||
composer.BasicComposer.include({
|
||||
start: function() {
|
||||
var self = this;
|
||||
var res = this._super.apply(this, arguments);
|
||||
this.$('.o_composer_text_field').bind('drop', function(e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
var files = e.originalEvent.dataTransfer.files;
|
||||
var i = 0;
|
||||
|
||||
var next = function() {
|
||||
$(window).off(self.fileupload_id, next);
|
||||
i++;
|
||||
upload();
|
||||
}
|
||||
|
||||
var upload = function() {
|
||||
if (files.length <= i) return;
|
||||
var reader = new FileReader();
|
||||
reader.onload = function() {
|
||||
$(window).on(self.fileupload_id, next);
|
||||
self.add_as_attachment(reader.result, files[i].name);
|
||||
}
|
||||
reader.readAsDataURL(files[i]);
|
||||
}
|
||||
upload();
|
||||
});
|
||||
this.$('.o_composer_text_field').bind('paste', function(e) {
|
||||
if (!e.originalEvent.clipboardData.items) return;
|
||||
var items = e.originalEvent.clipboardData.items;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var item = items[i];
|
||||
if (item.type != 'image/png') continue;
|
||||
var reader = new FileReader();
|
||||
reader.onload = function() {
|
||||
self.add_as_attachment(reader.result, _.uniqueId('pasted_file') + '.png');
|
||||
}
|
||||
reader.readAsDataURL(item.getAsFile());
|
||||
}
|
||||
});
|
||||
return res;
|
||||
},
|
||||
add_as_attachment: function(data, filename, cb) {
|
||||
//Fetch mimetype and base64
|
||||
var mimetype = data.substring(5, data.indexOf(';'));
|
||||
var base64_data = data.substr(data.indexOf(',') + 1, data.length);
|
||||
|
||||
//Change and submit form
|
||||
this.prepare_form();
|
||||
this.$('form.o_form_binary_form input.filename').val(filename);
|
||||
this.$('form.o_form_binary_form input.content').val(base64_data);
|
||||
this.$('form.o_form_binary_form input.mimetype').val(mimetype);
|
||||
|
||||
this.$('form.o_form_binary_form').submit();
|
||||
this.reverse_form();
|
||||
|
||||
var attachments = this.get('attachment_ids');
|
||||
this.$attachment_button.prop('disabled', true);
|
||||
attachments.push({
|
||||
'id': 0,
|
||||
'name': _.uniqueId('attachment_name'),
|
||||
'filename': filename,
|
||||
'url': filename,
|
||||
'upload': true,
|
||||
'mimetype': '',
|
||||
});
|
||||
},
|
||||
prepare_form: function() {
|
||||
//Change action
|
||||
this.$('form.o_form_binary_form').attr('action', '/web_chatter_paste/upload_attachment');
|
||||
|
||||
//Remove ufile
|
||||
this.$('form.o_form_binary_form input.o_form_input_file').remove();
|
||||
|
||||
//Add hidden input content
|
||||
var $content = $('<input type="hidden" name="content" class="content" />');
|
||||
this.$('form.o_form_binary_form').append($content);
|
||||
|
||||
//Add hidden input filename
|
||||
var $filename = $('<input type="hidden" name="filename" class="filename" />');
|
||||
this.$('form.o_form_binary_form').append($filename);
|
||||
|
||||
//Add hidden input filename
|
||||
var $mimetype = $('<input type="hidden" name="mimetype" class="mimetype" />');
|
||||
this.$('form.o_form_binary_form').append($mimetype);
|
||||
},
|
||||
reverse_form: function() {
|
||||
//Change action
|
||||
this.$('form.o_form_binary_form').attr('action', '/web/binary/upload_attachment');
|
||||
|
||||
//Remove new input
|
||||
this.$('form.o_form_binary_form input.content').remove();
|
||||
this.$('form.o_form_binary_form input.filename').remove();
|
||||
this.$('form.o_form_binary_form input.mimetype').remove();
|
||||
|
||||
//Restore old input
|
||||
var $ufile = $('<input class="o_form_input_file" name="ufile" type="file" />');
|
||||
this.$('form.o_form_binary_form').append($ufile);
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user