diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-07-04 11:40:02 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-07-04 11:40:02 +0000 |
| commit | a07a1ac63ad984de9b8b36dee4ad8ea9824b6b7b (patch) | |
| tree | 18d685ded2047f2f21393e5fd352e0e33470fe76 /roundcubemail/program/js | |
| parent | 530c964d88c744f36a67e0ccce53b23a6735c6b4 (diff) | |
- Add optional textual upload progress indicator (#1486039)
git-svn-id: https://svn.roundcube.net/trunk@4902 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/js')
| -rw-r--r-- | roundcubemail/program/js/app.js | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/roundcubemail/program/js/app.js b/roundcubemail/program/js/app.js index 53ae463b2..f3298cfac 100644 --- a/roundcubemail/program/js/app.js +++ b/roundcubemail/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) { |
