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();
});
});
},