summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-07-04 11:40:02 +0000
committeralecpl <alec@alec.pl>2011-07-04 11:40:02 +0000
commit4171c59bd79a54c1fd65128f7100247a4dec8720 (patch)
tree3261b05d91324840570c8ebe6b1084e26793701d /program/js
parent5b3ac324154b0d29e6e14db2b06fbc3636a3e708 (diff)
- Add optional textual upload progress indicator (#1486039)
Diffstat (limited to 'program/js')
-rw-r--r--program/js/app.js41
1 files changed, 39 insertions, 2 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 53ae463b2..f3298cfac 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3264,14 +3264,19 @@ function rcube_webmail()
});
// display upload indicator and cancel button
- var content = this.get_label('uploading' + (files > 1 ? 'many' : '')),
+ var content = '<span>' + this.get_label('uploading' + (files > 1 ? 'many' : '')) + '</span>',
ts = frame_name.replace(/^rcmupload/, '');
- if (this.env.loadingicon)
+ if (!this.env.upload_progress_time && this.env.loadingicon)
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, { name:'', html:content, complete:false });
+
+ // upload progress support
+ if (this.env.upload_progress_time) {
+ this.upload_progress_start('upload', ts);
+ }
}
// set reference to the form object
@@ -3336,6 +3341,25 @@ function rcube_webmail()
return false;
};
+ this.upload_progress_start = function(action, name)
+ {
+ window.setTimeout(function() { rcmail.http_request(action, {_progress: name}); },
+ this.env.upload_progress_time * 1000);
+ };
+
+ this.upload_progress_update = function(param)
+ {
+ var elem = $('#'+param.name + '> span');
+
+ if (!elem.length || !param.text)
+ return;
+
+ elem.text(param.text);
+
+ if (!param.done)
+ this.upload_progress_start(param.action, param.name);
+ };
+
// send remote request to add a new contact
this.add_contact = function(value)
{
@@ -5602,6 +5626,19 @@ function rcube_webmail()
var ts = new Date().getTime(),
frame_name = 'rcmupload'+ts;
+ // upload progress support
+ if (this.env.upload_progress_name) {
+ var fname = this.env.upload_progress_name,
+ field = $('input[name='+fname+']', form);
+
+ if (!field.length) {
+ field = $('<input>').attr({type: 'hidden', name: fname});
+ field.appendTo(form);
+ }
+
+ field.val(ts);
+ }
+
// have to do it this way for IE
// otherwise the form will be posted to a new window
if (document.all) {