diff --git a/src/common.js b/src/common.js index 0eadf861fd..6ef54b354c 100644 --- a/src/common.js +++ b/src/common.js @@ -3418,16 +3418,20 @@ }; Sao.common.get_input_data = function(input, callback, char_) { - var reader = new FileReader(), - file = input[0].files[0]; - reader.onload = function() { - var value = new Uint8Array(reader.result); - if (char_) { - value = String.fromCharCode.apply(null, value); - } - callback(value, file.name); - }; - reader.readAsArrayBuffer(file); + function read(file) { + var reader = new FileReader(); + reader.onload = function() { + var value = new Uint8Array(reader.result); + if (char_) { + value = String.fromCharCode.apply(null, value); + } + callback(value, file.name); + }; + reader.readAsArrayBuffer(file); + } + for (var i = 0; i < input[0].files.length; i++) { + read(input[0].files[i]); + } }; Sao.common.ellipsize = function(string, length) { diff --git a/src/tab.js b/src/tab.js index 96840870d3..0a8484a9cb 100644 --- a/src/tab.js +++ b/src/tab.js @@ -992,11 +992,13 @@ }).append(jQuery('', { 'type': 'file', 'role': 'menuitem', + 'multiple': true, 'tabindex': -1, }).change(function() { + var attachment = window_(); Sao.common.get_input_data( jQuery(this), function(data, filename) { - window_().add_data(data, filename); + attachment.add_data(data, filename); }); })).append(jQuery('', { 'role': 'menuitem', diff --git a/src/window.js b/src/window.js index 434fda40d1..ab89c30914 100644 --- a/src/window.js +++ b/src/window.js @@ -443,15 +443,12 @@ add_data: function(data, filename) { var screen = this.screen; this.switch_prm.then(function() { - screen.set_current_record(null); - screen.switch_view('form').then(function() { - screen.new_().then(function(record) { - var data_field = record.model.fields.data; - record.field_set_client( - data_field.description.filename, filename); - record.field_set_client('data', data); - screen.display(); - }); + screen.new_().then(function(record) { + var data_field = record.model.fields.data; + record.field_set_client( + data_field.description.filename, filename); + record.field_set_client('data', data); + screen.display(); }); }); },