From ecf6c79d00a8ed722a6664f276a0f015de4d13c2 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 09 Dec 2014 04:43:25 -0500
Subject: [PATCH] Bump up version number, remove package.xml file
---
program/include/rcmail.php | 98 ++++++++++++++++++++++++++++++-------------------
1 files changed, 60 insertions(+), 38 deletions(-)
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index bb2346f..27ec831 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -106,21 +106,23 @@
// reset some session parameters when changing task
if ($this->task != 'utils') {
// we reset list page when switching to another task
- // but only to the main task interface - empty action (#1489076)
+ // but only to the main task interface - empty action (#1489076, #1490116)
// this will prevent from unintentional page reset on cross-task requests
if ($this->session && $_SESSION['task'] != $this->task && empty($this->action)) {
$this->session->remove('page');
- }
- // set current task to session
- $_SESSION['task'] = $this->task;
+ // set current task to session
+ $_SESSION['task'] = $this->task;
+ }
}
- // init output class
- if (!empty($_REQUEST['_remote']))
+ // init output class (not in CLI mode)
+ if (!empty($_REQUEST['_remote'])) {
$GLOBALS['OUTPUT'] = $this->json_init();
- else
+ }
+ else if ($_SERVER['REMOTE_ADDR']) {
$GLOBALS['OUTPUT'] = $this->load_gui(!empty($_REQUEST['_framed']));
+ }
// load plugins
$this->plugins->init($this, $this->task);
@@ -147,8 +149,13 @@
$this->task = $task;
$this->comm_path = $this->url(array('task' => $this->task));
+ if (!empty($_REQUEST['_framed'])) {
+ $this->comm_path .= '&_framed=1';
+ }
+
if ($this->output) {
$this->output->set_env('task', $this->task);
+ $this->output->set_env('comm_path', $this->comm_path);
}
}
@@ -168,7 +175,7 @@
setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8');
// workaround for http://bugs.php.net/bug.php?id=18556
- if (version_compare(PHP_VERSION, '5.5.0', '<') && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
+ if (PHP_VERSION_ID < 50500 && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8');
}
}
@@ -432,7 +439,7 @@
// add some basic labels to client
$this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout',
- 'refreshing', 'windowopenerror');
+ 'refreshing', 'windowopenerror', 'uploadingmany');
return $this->output;
}
@@ -822,26 +829,17 @@
}
if ($absolute || $full) {
- $prefix = '';
-
- // prepend protocol://hostname:port
- if ($full) {
- $schema = 'http';
- $default_port = 80;
- if (rcube_utils::https_check()) {
- $schema = 'https';
- $default_port = 443;
- }
- $prefix = $schema . '://' . preg_replace('/:\d+$/', '', $_SERVER['HTTP_HOST']);
- if ($_SERVER['SERVER_PORT'] != $default_port) {
- $prefix .= ':' . $_SERVER['SERVER_PORT'];
- }
- }
-
// add base path to this Roundcube installation
$base_path = preg_replace('![^/]+$!', '', strval($_SERVER['SCRIPT_NAME']));
if ($base_path == '') $base_path = '/';
- $prefix .= $base_path;
+ $prefix = $base_path;
+
+ // prepend protocol://hostname:port
+ if ($full) {
+ $prefix = rcube_utils::resolve_url($prefix);
+ }
+
+ $prefix = rtrim($prefix, '/') . '/';
}
else {
$prefix = './';
@@ -1804,7 +1802,7 @@
$error = 'errorreadonly';
}
else if ($res_code == rcube_storage::OVERQUOTA) {
- $error = 'errorroverquota';
+ $error = 'erroroverquota';
}
else if ($err_code && ($err_str = $this->storage->get_error_str())) {
// try to detect access rights problem and display appropriate message
@@ -1960,13 +1958,32 @@
}
if (!empty($params['total'])) {
- $params['percent'] = round($status['current']/$status['total']*100);
+ $total = $this->show_bytes($params['total'], $unit);
+ switch ($unit) {
+ case 'GB':
+ $gb = $params['current']/1073741824;
+ $current = sprintf($gb >= 10 ? "%d" : "%.1f", $gb);
+ break;
+ case 'MB':
+ $mb = $params['current']/1048576;
+ $current = sprintf($mb >= 10 ? "%d" : "%.1f", $mb);
+ break;
+ case 'KB':
+ $current = round($params['current']/1024);
+ break;
+ case 'B':
+ default:
+ $current = $params['current'];
+ break;
+ }
+
+ $params['percent'] = round($params['current']/$params['total']*100);
$params['text'] = $this->gettext(array(
'name' => 'uploadprogress',
'vars' => array(
'percent' => $params['percent'] . '%',
- 'current' => $this->show_bytes($params['current']),
- 'total' => $this->show_bytes($params['total'])
+ 'current' => $current,
+ 'total' => $total
)
));
}
@@ -2152,25 +2169,30 @@
/**
* Create a human readable string for a number of bytes
*
- * @param int Number of bytes
+ * @param int Number of bytes
+ * @param string Size unit
*
* @return string Byte string
*/
- public function show_bytes($bytes)
+ public function show_bytes($bytes, &$unit = null)
{
if ($bytes >= 1073741824) {
- $gb = $bytes/1073741824;
- $str = sprintf($gb>=10 ? "%d " : "%.1f ", $gb) . $this->gettext('GB');
+ $unit = 'GB';
+ $gb = $bytes/1073741824;
+ $str = sprintf($gb >= 10 ? "%d " : "%.1f ", $gb) . $this->gettext($unit);
}
else if ($bytes >= 1048576) {
- $mb = $bytes/1048576;
- $str = sprintf($mb>=10 ? "%d " : "%.1f ", $mb) . $this->gettext('MB');
+ $unit = 'MB';
+ $mb = $bytes/1048576;
+ $str = sprintf($mb >= 10 ? "%d " : "%.1f ", $mb) . $this->gettext($unit);
}
else if ($bytes >= 1024) {
- $str = sprintf("%d ", round($bytes/1024)) . $this->gettext('KB');
+ $unit = 'KB';
+ $str = sprintf("%d ", round($bytes/1024)) . $this->gettext($unit);
}
else {
- $str = sprintf('%d ', $bytes) . $this->gettext('B');
+ $unit = 'B';
+ $str = sprintf('%d ', $bytes) . $this->gettext($unit);
}
return $str;
--
Gitblit v1.9.1