summaryrefslogtreecommitdiff
path: root/program/js/app.js
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2009-10-06 06:55:08 +0000
committerthomascube <thomas@roundcube.net>2009-10-06 06:55:08 +0000
commit01ffe039089e08fd6faaf03f4170853defd41fc8 (patch)
treec90fab58963c2cf4cd37581372ada57c263d0eea /program/js/app.js
parentffeab7fe7e0ccf1d458d6a863600359c38769950 (diff)
Hold attachment info in a js list in order to simplify things + codestyle
Diffstat (limited to 'program/js/app.js')
-rw-r--r--program/js/app.js78
1 files changed, 42 insertions, 36 deletions
diff --git a/program/js/app.js b/program/js/app.js
index d4161714e..d72f9eebb 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2172,14 +2172,11 @@ function rcube_webmail()
}
// check if all files has been uploaded
- if (this.gui_objects.attachmentlist) {
- var list = this.gui_objects.attachmentlist.getElementsByTagName("li");
- for (i=0;i<list.length;i++)
- if (!String(list[i].id).match(/^rcmfile/))
- {
- alert(this.get_label('notuploadedwarning'));
- return false;
- }
+ for (var key in this.env.attachments) {
+ if (typeof this.env.attachments[key] == 'object' && !this.env.attachments[key].complete) {
+ alert(this.get_label('notuploadedwarning'));
+ return false;
+ }
}
// display localized warning for missing subject
@@ -2464,23 +2461,23 @@ function rcube_webmail()
// handle upload errors, parsing iframe content in onload
var fr = document.getElementsByName(frame_name)[0];
$(fr).bind('load', {ts:ts}, function(e) {
- var content = '';
+ var content = '';
try {
if (this.contentDocument) {
- var d = this.contentDocument;
- } else if (this.contentWindow) {
- var d = this.contentWindow.document;
- }
- content = d.childNodes[0].innerHTML;
+ var d = this.contentDocument;
+ } else if (this.contentWindow) {
+ var d = this.contentWindow.document;
+ }
+ content = d.childNodes[0].innerHTML;
} catch (e) {}
- 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.remove_from_attachment_list(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.remove_from_attachment_list(e.data.ts);
}
- // Opera hack: handle double onload
- if (bw.opera)
- rcmail.env.uploadframe = e.data.ts;
+ // Opera hack: handle double onload
+ if (bw.opera)
+ rcmail.env.uploadframe = e.data.ts;
});
form.target = frame_name;
@@ -2496,7 +2493,7 @@ function rcube_webmail()
content = '<img src="'+this.env.loadingicon+'" alt="" />'+content;
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;
- this.add2attachment_list(ts, content);
+ this.add2attachment_list(ts, { name:'', html:content, complete:false });
}
// set reference to the form object
@@ -2506,26 +2503,35 @@ function rcube_webmail()
// add file name to attachment list
// 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)
return false;
+ var li = $('<li>').attr('id', name).html(att.html);
var indicator;
+
// replace indicator's li
if (upload_id && (indicator = document.getElementById(upload_id))) {
- var li = document.createElement('li');
- $(li).attr('id', name).html(content);
- indicator.parentNode.replaceChild(li, indicator);
- } else { // add new li
- $('<li>').attr('id', name).html(content).appendTo(this.gui_objects.attachmentlist);
- }
+ li.replaceAll(indicator);
+ }
+ else { // add new li
+ li.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;
- };
+ };
this.remove_from_attachment_list = function(name)
- {
+ {
+ if (this.env.attachments[name])
+ delete this.env.attachments[name];
+
if (!this.gui_objects.attachmentlist)
return false;
@@ -2533,11 +2539,11 @@ function rcube_webmail()
for (i=0;i<list.length;i++)
if (list[i].id == name)
this.gui_objects.attachmentlist.removeChild(list[i]);
- };
+ };
this.remove_attachment = function(name)
{
- if (name)
+ if (name && this.env.attachments[name])
this.http_post('remove-attachment', '_file='+urlencode(name));
return true;
@@ -2570,11 +2576,11 @@ function rcube_webmail()
var addurl = '';
if (this.message_list) {
this.message_list.clear();
- if (this.env.search_mods) {
+ if (this.env.search_mods) {
var head_arr = new Array();
for (var n in this.env.search_mods)
- head_arr.push(n);
- addurl += '&_headers='+head_arr.join(',');
+ head_arr.push(n);
+ addurl += '&_headers='+head_arr.join(',');
}
} else if (this.contact_list) {
this.contact_list.clear(true);