CHANGELOG | ●●●●● patch | view | raw | blame | history | |
config/main.inc.php.dist | ●●●●● patch | view | raw | blame | history | |
program/include/main.inc | ●●●●● patch | view | raw | blame | history | |
program/js/app.js | ●●●●● patch | view | raw | blame | history | |
program/localization/en_US/labels.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/attachments.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/compose.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== - Add optional textual upload progress indicator (#1486039) - Fix parsing URLs containing commas (#1487970) - Added vertical splitter for books/groups list in addressbook (#1487923) - Improved namespace roots handling in folder manager config/main.inc.php.dist
@@ -437,6 +437,11 @@ // Must be less than 'session_lifetime' $rcmail_config['min_keep_alive'] = 60; // Enables files upload indicator. Requires APC installed and enabled apc.rfc1867 option. // By default refresh time is set to 1 second. You can set this value to true // or any integer value indicating number of seconds. $rcmail_config['upload_progress'] = false; // ---------------------------------- // ADDRESSBOOK SETTINGS // ---------------------------------- program/include/main.inc
@@ -2080,3 +2080,45 @@ } } function rcube_upload_progress() { global $RCMAIL; $prefix = ini_get('apc.rfc1867_prefix'); $params = array( 'action' => $RCMAIL->action, 'name' => get_input_value('_progress', RCUBE_INPUT_GET), ); if (function_exists('apc_fetch')) { $status = apc_fetch($prefix . $params['name']); if (!empty($status)) { $status['percent'] = $status['current']/$status['total']*100; $params = array_merge($status, $params); } } if (isset($params['percent'])) $params['text'] = rcube_label(array('name' => 'uploadprogress', 'vars' => array( 'percent' => $params['percent'] . '%', 'current' => show_bytes($params['current']), 'total' => show_bytes($params['total']) ))); console($params); $RCMAIL->output->command('upload_progress_update', $params); $RCMAIL->output->send(); } function rcube_upload_progress_init() { global $RCMAIL; // Enable upload progress bar if (($seconds = $RCMAIL->config->get('upload_progress')) && ini_get('apc.rfc1867')) { if ($field_name = ini_get('apc.rfc1867_name')) { $RCMAIL->output->set_env('upload_progress_name', $field_name); $RCMAIL->output->set_env('upload_progress_time', (int) $seconds); } } } program/js/app.js
@@ -3264,14 +3264,19 @@ }); // 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 @@ -3334,6 +3339,25 @@ this.remove_from_attachment_list(name); $("iframe[name='"+frame_name+"']").remove(); 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 @@ -5602,6 +5626,19 @@ 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) { program/localization/en_US/labels.inc
@@ -210,6 +210,7 @@ $labels['attachments'] = 'Attachments'; $labels['upload'] = 'Upload'; $labels['uploadprogress'] = '$percent ($current from $total)'; $labels['close'] = 'Close'; $labels['messageoptions'] = 'Message options...'; program/steps/mail/attachments.inc
@@ -19,6 +19,10 @@ */ // Upload progress update if (!empty($_GET['_progress'])) { rcube_upload_progress(); } $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC); $_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID]; program/steps/mail/compose.inc
@@ -1199,12 +1199,15 @@ function rcmail_compose_attachment_form($attrib) { global $OUTPUT; global $RCMAIL, $OUTPUT; // add ID if not given if (!$attrib['id']) $attrib['id'] = 'rcmUploadbox'; // Enable upload progress bar rcube_upload_progress_init(); // find max filesize value $max_filesize = parse_bytes(ini_get('upload_max_filesize')); $max_postsize = parse_bytes(ini_get('post_max_size'));