- Enable multiselection for attachments uploading in capable browsers (#1485969)

release-0.6
alecpl 14 years ago
parent 4d7fbd508a
commit 7fc056c3ff

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Enable multiselection for attachments uploading in capable browsers (#1485969)
- Add possibility to change HTML editor configuration by skin - Add possibility to change HTML editor configuration by skin
- Fix a bug where selecting too many contacts would produce too large URI request (#1487892) - Fix a bug where selecting too many contacts would produce too large URI request (#1487892)
- Fix relative URLs handling according to a <base> in HTML (#1487889) - Fix relative URLs handling according to a <base> in HTML (#1487889)

@ -271,7 +271,7 @@ class html_inputfield extends html
protected $type = 'text'; protected $type = 'text';
protected $allowed = array('type','name','value','size','tabindex', protected $allowed = array('type','name','value','size','tabindex',
'autocomplete','checked','onchange','onclick','disabled','readonly', 'autocomplete','checked','onchange','onclick','disabled','readonly',
'spellcheck','results','maxlength','src'); 'spellcheck','results','maxlength','src','multiple');
/** /**
* Object constructor * Object constructor

@ -473,13 +473,13 @@ function rcube_webmail()
// trigger plugin hooks // trigger plugin hooks
this.triggerEvent('actionbefore', {props:props, action:command}); this.triggerEvent('actionbefore', {props:props, action:command});
var event_ret = this.triggerEvent('before'+command, props); var ret = this.triggerEvent('before'+command, props);
if (event_ret !== undefined) { if (ret !== undefined) {
// abort if one the handlers returned false // abort if one the handlers returned false
if (event_ret === false) if (ret === false)
return false; return false;
else else
props = event_ret; props = ret;
} }
// process internal command // process internal command
@ -3171,16 +3171,12 @@ function rcube_webmail()
if (!form) if (!form)
return false; return false;
// get file input fields // get file input field, count files on capable browser
var send = false; var field = $('input[type=file]', form).get(0),
for (var n=0; n<form.elements.length; n++) files = field.files ? field.files.length : field.value ? 1 : 0;
if (form.elements[n].type=='file' && form.elements[n].value) {
send = true;
break;
}
// create hidden iframe and post upload form // create hidden iframe and post upload form
if (send) { if (files) {
var frame_name = this.async_upload_form(form, 'upload', function(e) { var frame_name = this.async_upload_form(form, 'upload', function(e) {
var d, content = ''; var d, content = '';
try { try {
@ -3203,7 +3199,7 @@ function rcube_webmail()
}); });
// display upload indicator and cancel button // display upload indicator and cancel button
var content = this.get_label('uploading'), var content = this.get_label('uploading' + (files > 1 ? 'many' : '')),
ts = frame_name.replace(/^rcmupload/, ''); ts = frame_name.replace(/^rcmupload/, '');
if (this.env.loadingicon) if (this.env.loadingicon)
@ -3225,8 +3221,7 @@ function rcube_webmail()
if (!this.gui_objects.attachmentlist) if (!this.gui_objects.attachmentlist)
return false; return false;
var li = $('<li>').attr('id', name).html(att.html); var indicator, li = $('<li>').attr('id', name).html(att.html);
var indicator;
// replace indicator's li // replace indicator's li
if (upload_id && (indicator = document.getElementById(upload_id))) { if (upload_id && (indicator = document.getElementById(upload_id))) {
@ -3253,7 +3248,7 @@ function rcube_webmail()
return false; return false;
var list = this.gui_objects.attachmentlist.getElementsByTagName("li"); var list = this.gui_objects.attachmentlist.getElementsByTagName("li");
for (i=0;i<list.length;i++) for (i=0; i<list.length; i++)
if (list[i].id == name) if (list[i].id == name)
this.gui_objects.attachmentlist.removeChild(list[i]); this.gui_objects.attachmentlist.removeChild(list[i]);
}; };

@ -1148,6 +1148,8 @@ function rcmail_compose_attachment_form($attrib)
$max_postsize = parse_bytes(ini_get('post_max_size')); $max_postsize = parse_bytes(ini_get('post_max_size'));
if ($max_postsize && $max_postsize < $max_filesize) if ($max_postsize && $max_postsize < $max_filesize)
$max_filesize = $max_postsize; $max_filesize = $max_postsize;
$OUTPUT->set_env('max_filesize', $max_filesize);
$max_filesize = show_bytes($max_filesize); $max_filesize = show_bytes($max_filesize);
$button = new html_inputfield(array('type' => 'button')); $button = new html_inputfield(array('type' => 'button'));
@ -1172,6 +1174,8 @@ function rcmail_compose_attachment_field($attrib)
{ {
$attrib['type'] = 'file'; $attrib['type'] = 'file';
$attrib['name'] = '_attachments[]'; $attrib['name'] = '_attachments[]';
$attrib['multiple'] = 'multiple';
$field = new html_inputfield($attrib); $field = new html_inputfield($attrib);
return $field->show(); return $field->show();
} }

Loading…
Cancel
Save