summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/main.inc13
-rw-r--r--program/include/rcube_imap.inc16
-rw-r--r--program/js/app.js9
-rw-r--r--program/lib/utf8.class.php9
-rw-r--r--program/steps/mail/check_recent.inc5
-rw-r--r--program/steps/mail/compose.inc9
-rw-r--r--program/steps/mail/func.inc24
-rw-r--r--program/steps/mail/move_del.inc1
-rw-r--r--program/steps/mail/sendmail.inc6
9 files changed, 73 insertions, 19 deletions
diff --git a/program/include/main.inc b/program/include/main.inc
index 99eaa9128..3c078364e 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -71,7 +71,7 @@ function rcmail_startup($task='mail')
// we can use the database for storing session data
// session queries do not work with MDB2
- if ($CONFIG['db_backend']!='mdb2' && is_object($DB) /* && $DB->db_provider!='sqlite' */)
+ if ($CONFIG['db_backend']!='mdb2' && is_object($DB))
include_once('include/session.inc');
@@ -709,10 +709,12 @@ function rcube_charset_convert($str, $from, $to=NULL)
return $str;
// convert charset using iconv module
- if (function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') {
+ if (0 && function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') {
return iconv($from, $to, $str);
}
-
+
+ $conv = new utf8();
+
// convert string to UTF-8
if ($from=='UTF-7')
$str = rcube_charset_convert(UTF7DecodeString($str), 'ISO-8859-1');
@@ -720,7 +722,7 @@ function rcube_charset_convert($str, $from, $to=NULL)
$str = utf8_encode($str);
else if ($from!='UTF-8')
{
- $conv = new utf8($from);
+ $conv->loadCharset($from);
$str = $conv->strToUtf8($str);
}
@@ -731,7 +733,7 @@ function rcube_charset_convert($str, $from, $to=NULL)
return utf8_decode($str);
else if ($to!='UTF-8')
{
- $conv = new utf8($to);
+ $conv->loadCharset($to);
return $conv->utf8ToStr($str);
}
@@ -960,6 +962,7 @@ function rcube_xml_command($command, $str_attrib, $a_attrib=NULL)
'message' => 'rcmail_message_container',
'messages' => 'rcmail_message_list',
'messagecountdisplay' => 'rcmail_messagecount_display',
+ 'quotadisplay' => 'rcmail_quota_display',
'messageheaders' => 'rcmail_message_headers',
'messagebody' => 'rcmail_message_body',
'messageattachments' => 'rcmail_message_attachments',
diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc
index fa13e02cf..cb6b409d9 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -1057,6 +1057,22 @@ class rcube_imap
}
+ /**
+ * Get quota
+ * added by Nuny
+ */
+ function get_quota()
+ {
+ if ($this->get_capability('QUOTA'))
+ {
+ $result = iil_C_GetQuota($this->conn);
+ return sprintf("%.2fMB / %.2fMB (%.0f%%)", $result["used"] / 1000.0, $result["total"] / 1000.0, $result["percent"]);
+ }
+ else
+ return 'unknown';
+ }
+
+
// subscribe to a specific mailbox(es)
function subscribe($mbox, $mode='subscribe')
{
diff --git a/program/js/app.js b/program/js/app.js
index c216a73f4..4e9a8bfff 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -231,7 +231,7 @@ function rcube_webmail()
this.enable_command('logout', true);
// disable browser's contextmenus
- //document.oncontextmenu = function(){ return false; }
+ document.oncontextmenu = function(){ return false; }
// load body click event
document.onmousedown = function(){ return rcube_webmail_client.reset_click(); };
@@ -2645,6 +2645,13 @@ function rcube_webmail()
this.set_page_buttons();
};
+ // replace content of quota display
+ this.set_quota = function(text)
+ {
+ if (this.gui_objects.quotadisplay)
+ this.gui_objects.quotadisplay.innerHTML = text;
+ };
+
// update the mailboxlist
this.set_unread_count = function(mbox, count, set_title)
diff --git a/program/lib/utf8.class.php b/program/lib/utf8.class.php
index adcf31bc2..c0bd0a73b 100644
--- a/program/lib/utf8.class.php
+++ b/program/lib/utf8.class.php
@@ -58,10 +58,10 @@ define("ERR_OPEN_MAP_FILE","ERR_OPEN_MAP_FILE");
//Class definition
Class utf8{
- var $charset = CP1250;
+ var $charset = "ISO-8859-1";
var $ascMap = array();
var $utfMap = array();
-
+
// made PHP5 capable by RoundCube
function __construct($charset="ISO-8859-1"){
$this->loadCharset($charset);
@@ -75,7 +75,7 @@ Class utf8{
//Load charset
function loadCharset($charset){
global $utf8_maps;
-
+
if (!is_file($utf8_maps[$charset]))
{
$this->onError(ERR_OPEN_MAP_FILE, "Failed to open map file for $charset");
@@ -170,4 +170,5 @@ Class utf8{
}
}
-?>
+
+?> \ No newline at end of file
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index 3d0ceb2a9..0bde47ed8 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -30,7 +30,8 @@ if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE))
$commands = sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox), $unread_count);
$commands .= sprintf("this.set_env('messagecount', %d);\n", $count);
$commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text());
-
+ $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota());
+
// add new message headers to list
$a_headers = array();
for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++)
@@ -44,4 +45,4 @@ if (strtoupper($mbox)!='INBOX' && $IMAP->messagecount('INBOX', 'RECENT'))
rcube_remote_response($commands);
-?> \ No newline at end of file
+?>
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 80a32a9f3..80f69b596 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -145,8 +145,10 @@ function rcmail_compose_headers($attrib)
// get recipent address(es) out of the message headers
if ($header=='to' && $REPLY_MESSAGE['headers']->replyto)
$fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->replyto);
+
else if ($header=='to' && $REPLY_MESSAGE['headers']->from)
$fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->from);
+
// add recipent of original message if reply to all
else if ($header=='cc' && $REPLY_MESSAGE['reply_all'])
{
@@ -169,7 +171,7 @@ function rcmail_compose_headers($attrib)
$fvalue = '';
foreach ($to_addresses as $addr_part)
{
- if (!in_array($addr_part['mailto'], $sa_recipients))
+ if (!in_array($addr_part['mailto'], $sa_recipients) && (!$REPLY_MESSAGE['FROM'] || !in_array($addr_part['mailto'], $REPLY_MESSAGE['FROM'])))
{
$fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string'];
$sa_recipients[] = $addr_part['mailto'];
@@ -214,6 +216,8 @@ function rcmail_compose_header_from($attrib)
$a_recipients = array();
if ($REPLY_MESSAGE && is_object($REPLY_MESSAGE['headers']))
{
+ $REPLY_MESSAGE['FROM'] = array();
+
$a_to = $IMAP->decode_address_list($REPLY_MESSAGE['headers']->to);
foreach ($a_to as $addr)
{
@@ -259,6 +263,9 @@ function rcmail_compose_header_from($attrib)
// set identity if it's one of the reply-message recipients
if (in_array($sql_arr['email'], $a_recipients))
$from_id = $sql_arr['identity_id'];
+
+ if ($REPLY_MESSAGE && is_array($REPLY_MESSAGE['FROM']))
+ $REPLY_MESSAGE['FROM'][] = $sql_arr['email'];
}
// overwrite identity selection with post parameter
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 8e0178d7a..d089dd272 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -545,6 +545,25 @@ function rcmail_messagecount_display($attrib)
}
+function rcmail_quota_display($attrib)
+ {
+ global $IMAP, $OUTPUT, $JS_OBJECT_NAME;
+
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmquotadisplay';
+
+ $OUTPUT->add_script(sprintf("%s.gui_object('quotadisplay', '%s');", $JS_OBJECT_NAME, $attrib['id']));
+
+ // allow the following attributes to be added to the <span> tag
+ $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id'));
+
+
+ $out = '<span' . $attrib_str . '>';
+ $out .= $IMAP->get_quota();
+ $out .= '</span>';
+ return $out;
+ }
+
function rcmail_get_messagecount_text()
{
@@ -580,10 +599,9 @@ function rcmail_print_body($part, $safe=FALSE, $plain=FALSE) // $body, $ctype_pr
extract($part);
$block = $plain ? '%s' : '%s'; //'<div style="display:block;">%s</div>';
- $body = $IMAP->mime_decode($body, $encoding);
+ $body = $IMAP->mime_decode($body, $encoding);
$body = $IMAP->charset_decode($body, $parameters);
-
// text/html
if ($ctype_secondary=='html')
{
@@ -804,7 +822,7 @@ function rcmail_parse_message($structure, $arg=array(), $recursive=FALSE)
}
// part text/[plain|html] OR message/delivery-status
- else if (($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html')) ||
+ else if (($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html') && $mail_part->disposition!='attachment') ||
($primary_type=='message' && $secondary_type=='delivery-status'))
{
$a_return_parts[] = array('type' => 'content',
diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc
index e3c7549b4..e4da207f4 100644
--- a/program/steps/mail/move_del.inc
+++ b/program/steps/mail/move_del.inc
@@ -73,6 +73,7 @@ $commands .= sprintf("this.set_unread_count('%s', %d);\n", $mbox, $IMAP->message
if ($_action=='moveto')
$commands .= sprintf("this.set_unread_count('%s', %d);\n", $_GET['_target_mbox'], $IMAP->messagecount($_GET['_target_mbox'], 'UNSEEN'));
+$commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota());
// add new rows from next page (if any)
if ($_GET['_from']!='show' && $pages>1 && $IMAP->list_page < $pages)
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index ab0c6ed07..9d9303436 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -115,7 +115,7 @@ if (strlen($identity_arr['bcc']))
$headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc'];
// add subject
-$headers['Subject'] = rcube_charset_convert(trim(stripslashes($_POST['_subject'])), $input_charset, $message_charset);
+$headers['Subject'] = rcube_charset_convert(trim($_POST['_subject']), $input_charset, $message_charset);
if (strlen($identity_arr['organization']))
$headers['Organization'] = $identity_arr['organization'];
@@ -144,7 +144,7 @@ if ($CONFIG['useragent'])
$headers['User-Agent'] = $CONFIG['useragent'];
// fetch message body
-$message_body = rcube_charset_convert(stripslashes($_POST['_message']), $input_charset, $message_charset);
+$message_body = rcube_charset_convert($_POST['_message'], $input_charset, $message_charset);
// append generic footer to all messages
if (!empty($CONFIG['generic_message_footer']))
@@ -225,7 +225,7 @@ if ($CONFIG['smtp_server'])
else
{
// unset some headers because they will be added by the mail() function
- $headers_php = $headers;
+ $headers_php = $MAIL_MIME->_headers;
$headers_enc = $MAIL_MIME->headers($headers);
unset($headers_php['To'], $headers_php['Subject']);