Hold attachment info in a js list in order to simplify things + codestyle

release-0.6
thomascube 15 years ago
parent ffeab7fe7e
commit 01ffe03908

@ -2172,14 +2172,11 @@ function rcube_webmail()
} }
// check if all files has been uploaded // check if all files has been uploaded
if (this.gui_objects.attachmentlist) { for (var key in this.env.attachments) {
var list = this.gui_objects.attachmentlist.getElementsByTagName("li"); if (typeof this.env.attachments[key] == 'object' && !this.env.attachments[key].complete) {
for (i=0;i<list.length;i++) alert(this.get_label('notuploadedwarning'));
if (!String(list[i].id).match(/^rcmfile/)) return false;
{ }
alert(this.get_label('notuploadedwarning'));
return false;
}
} }
// display localized warning for missing subject // display localized warning for missing subject
@ -2464,23 +2461,23 @@ function rcube_webmail()
// handle upload errors, parsing iframe content in onload // handle upload errors, parsing iframe content in onload
var fr = document.getElementsByName(frame_name)[0]; var fr = document.getElementsByName(frame_name)[0];
$(fr).bind('load', {ts:ts}, function(e) { $(fr).bind('load', {ts:ts}, function(e) {
var content = ''; var content = '';
try { try {
if (this.contentDocument) { if (this.contentDocument) {
var d = this.contentDocument; var d = this.contentDocument;
} else if (this.contentWindow) { } else if (this.contentWindow) {
var d = this.contentWindow.document; var d = this.contentWindow.document;
} }
content = d.childNodes[0].innerHTML; content = d.childNodes[0].innerHTML;
} catch (e) {} } catch (e) {}
if (!String(content).match(/add2attachment/) && (!bw.opera || (rcmail.env.uploadframe && rcmail.env.uploadframe == e.data.ts))) { if (!String(content).match(/add2attachment/) && (!bw.opera || (rcmail.env.uploadframe && rcmail.env.uploadframe == e.data.ts))) {
rcmail.display_message(rcmail.get_label('fileuploaderror'), 'error'); rcmail.display_message(rcmail.get_label('fileuploaderror'), 'error');
rcmail.remove_from_attachment_list(e.data.ts); rcmail.remove_from_attachment_list(e.data.ts);
} }
// Opera hack: handle double onload // Opera hack: handle double onload
if (bw.opera) if (bw.opera)
rcmail.env.uploadframe = e.data.ts; rcmail.env.uploadframe = e.data.ts;
}); });
form.target = frame_name; form.target = frame_name;
@ -2496,7 +2493,7 @@ function rcube_webmail()
content = '<img src="'+this.env.loadingicon+'" alt="" />'+content; content = '<img src="'+this.env.loadingicon+'" alt="" />'+content;
if (this.env.cancelicon) if (this.env.cancelicon)
content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content; content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content;
this.add2attachment_list(ts, content); this.add2attachment_list(ts, { name:'', html:content, complete:false });
} }
// set reference to the form object // set reference to the form object
@ -2506,26 +2503,35 @@ function rcube_webmail()
// add file name to attachment list // add file name to attachment list
// called from upload page // called from upload page
this.add2attachment_list = function(name, content, upload_id) this.add2attachment_list = function(name, att, upload_id)
{ {
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; 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))) {
var li = document.createElement('li'); li.replaceAll(indicator);
$(li).attr('id', name).html(content); }
indicator.parentNode.replaceChild(li, indicator); else { // add new li
} else { // add new li li.appendTo(this.gui_objects.attachmentlist);
$('<li>').attr('id', name).html(content).appendTo(this.gui_objects.attachmentlist); }
}
if (upload_id && this.env.attachments[upload_id])
delete this.env.attachments[upload_id];
this.env.attachments[name] = att;
return true; return true;
}; };
this.remove_from_attachment_list = function(name) this.remove_from_attachment_list = function(name)
{ {
if (this.env.attachments[name])
delete this.env.attachments[name];
if (!this.gui_objects.attachmentlist) if (!this.gui_objects.attachmentlist)
return false; return false;
@ -2533,11 +2539,11 @@ function rcube_webmail()
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]);
}; };
this.remove_attachment = function(name) this.remove_attachment = function(name)
{ {
if (name) if (name && this.env.attachments[name])
this.http_post('remove-attachment', '_file='+urlencode(name)); this.http_post('remove-attachment', '_file='+urlencode(name));
return true; return true;
@ -2570,11 +2576,11 @@ function rcube_webmail()
var addurl = ''; var addurl = '';
if (this.message_list) { if (this.message_list) {
this.message_list.clear(); this.message_list.clear();
if (this.env.search_mods) { if (this.env.search_mods) {
var head_arr = new Array(); var head_arr = new Array();
for (var n in this.env.search_mods) for (var n in this.env.search_mods)
head_arr.push(n); head_arr.push(n);
addurl += '&_headers='+head_arr.join(','); addurl += '&_headers='+head_arr.join(',');
} }
} else if (this.contact_list) { } else if (this.contact_list) {
this.contact_list.clear(true); this.contact_list.clear(true);

@ -1,22 +1,12 @@
var rc_client = tinyMCEPopup.getParam("rc_client"); var rc_client = tinyMCEPopup.getParam("rc_client");
if (rc_client.gui_objects.attachmentlist) if (rc_client.env.attachments)
{ {
var tinyMCEImageList = new Array(); var tinyMCEImageList = new Array();
var attachElems = rc_client.gui_objects.attachmentlist.getElementsByTagName("li"); for (var id in rc_client.env.attachments)
for (i = 0; i < attachElems.length; i++)
{ {
var liElem = attachElems[i]; var att = rc_client.env.attachments[id];
var fname = attachElems[i].id; if (att.complete && att.mimetype.indexOf('image/') == 0)
for (j = 0; j < liElem.childNodes.length; j++) tinyMCEImageList.push([att.name, rc_client.env.comm_path+'&_action=display-attachment&_file='+id]);
{
if (liElem.childNodes[j].nodeName == "#text")
{
fname = liElem.childNodes[j].nodeValue;
}
}
if (fname.match(/\.(bmp|gif|png|jpg|jpeg)$/))
tinyMCEImageList.push([fname, rc_client.env.comm_path+'&_action=display-attachment&_file='+attachElems[i].id]);
} }
}; };

@ -111,7 +111,11 @@ if (is_array($_FILES['_attachments']['tmp_name'])) {
$content .= Q($attachment['name']); $content .= Q($attachment['name']);
$OUTPUT->command('add2attachment_list', "rcmfile$id", $content, $uploadid); $OUTPUT->command('add2attachment_list', "rcmfile$id", array(
'html' => $content,
'name' => $attachment['name'],
'mimetype' => $attachment['mimetype'],
'complete' => true), $uploadid);
} }
else { // upload failed else { // upload failed
$err = $_FILES['_attachments']['error'][$i]; $err = $_FILES['_attachments']['error'][$i];

@ -781,6 +781,7 @@ function rcmail_compose_attachment_list($attrib)
$attrib['id'] = 'rcmAttachmentList'; $attrib['id'] = 'rcmAttachmentList';
$out = "\n"; $out = "\n";
$jslist = array();
if (is_array($_SESSION['compose']['attachments'])) if (is_array($_SESSION['compose']['attachments']))
{ {
@ -798,12 +799,14 @@ function rcmail_compose_attachment_list($attrib)
if (empty($a_prop)) if (empty($a_prop))
continue; continue;
$out .= html::tag('li', array('id' => "rcmfile".$id), $out .= html::tag('li', array('id' => 'rcmfile'.$id),
html::a(array( html::a(array(
'href' => "#delete", 'href' => "#delete",
'title' => rcube_label('delete'), 'title' => rcube_label('delete'),
'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id)), 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id)),
$button) . Q($a_prop['name'])); $button) . Q($a_prop['name']));
$jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']);
} }
} }
@ -814,6 +817,7 @@ function rcmail_compose_attachment_list($attrib)
if ($attrib['loadingicon']) if ($attrib['loadingicon'])
$OUTPUT->set_env('loadingicon', $CONFIG['skin_path'] . $attrib['loadingicon']); $OUTPUT->set_env('loadingicon', $CONFIG['skin_path'] . $attrib['loadingicon']);
$OUTPUT->set_env('attachments', $jslist);
$OUTPUT->add_gui_object('attachmentlist', $attrib['id']); $OUTPUT->add_gui_object('attachmentlist', $attrib['id']);
return html::tag('ul', $attrib, $out, html::$common_attrib); return html::tag('ul', $attrib, $out, html::$common_attrib);

Loading…
Cancel
Save