summaryrefslogtreecommitdiff
path: root/addons/mail
diff options
context:
space:
mode:
authorThanh Dodeur <tso@odoo.com>2019-07-11 09:23:59 +0000
committerThanh Dodeur <tso@odoo.com>2019-07-11 09:39:54 +0000
commit01365a3f625c9e7a80d78cf9c29ffa3d90435cd1 (patch)
treeccb8428b4aa1b8f01dd70eeb070d027367d44a3b /addons/mail
parentf69bd5c23cb573b2683db0a66346c737d6f8945b (diff)
[FIX] mail: removes unsupported usage of formData.delete
This commit replaces the usage of `formData.delete()` as it is not supported by Internet Explorer and Safari Mobile. closes odoo/odoo#34787 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail')
-rw-r--r--addons/mail/static/src/js/composers/basic_composer.js35
1 files changed, 24 insertions, 11 deletions
diff --git a/addons/mail/static/src/js/composers/basic_composer.js b/addons/mail/static/src/js/composers/basic_composer.js
index 1beeea18644..af193572024 100644
--- a/addons/mail/static/src/js/composers/basic_composer.js
+++ b/addons/mail/static/src/js/composers/basic_composer.js
@@ -437,10 +437,27 @@ var BasicComposer = Widget.extend({
* @param {boolean} params.submitForm [optional]
*/
_processAttachmentChange: function (params) {
- var self = this,
- attachments = this.get('attachment_ids'),
- files = params.files,
- submitForm = params.submitForm;
+ var self = this;
+ var attachments = this.get('attachment_ids');
+ var files = params.files;
+ var submitForm = params.submitForm;
+ var $form = this.$('form.o_form_binary_form');
+
+ /**
+ * makes a new formData as formData.delete() is not supported by IE or Safari Mobile.
+ *
+ * @return {FormData}
+ */
+ function makeFormDataWithoutUfile() {
+ var newFormData = new window.FormData();
+ $form.find('input').each(function (index, input) {
+ if (input.name !== 'ufile') {
+ newFormData.append(input.name, input.value);
+ }
+ });
+ return newFormData;
+ }
+
_.each(files, function (file) {
var attachment = _.findWhere(attachments, {
name: file.name,
@@ -452,24 +469,20 @@ var BasicComposer = Widget.extend({
attachments = _.without(attachments, attachment);
}
});
- var $form = this.$('form.o_form_binary_form');
if (submitForm) {
$form.submit();
this._$attachmentButton.prop('disabled', true);
} else {
- var data = new FormData($form[0]);
_.each(files, function (file) {
- // removing existing key with blank data and appending again with file info
- // In safari, existing key will not be updated when append with new file.
- data.delete("ufile");
- data.append("ufile", file, file.name);
+ var formData = makeFormDataWithoutUfile();
+ formData.append("ufile", file, file.name);
$.ajax({
url: $form.attr("action"),
type: "POST",
enctype: 'multipart/form-data',
processData: false,
contentType: false,
- data: data,
+ data: formData,
success: function (result) {
var $el = $(result);
$.globalEval($el.contents().text());