diff --git a/mail/inc/class.mail_bo.inc.php b/mail/inc/class.mail_bo.inc.php
index eaec40d345..49ce008fcf 100644
--- a/mail/inc/class.mail_bo.inc.php
+++ b/mail/inc/class.mail_bo.inc.php
@@ -1195,6 +1195,16 @@ class mail_bo
}
}
}
+ if(is_array($headerObject['CC']) && $headerObject['CC'][0]) {
+ $ki=0;
+ foreach($headerObject['CC'] as $k => $add)
+ {
+ //error_log(__METHOD__.__LINE__."-> $k:".array2string($add));
+ $retValue['header'][$sortOrder[$uid]]['cc_addresses'][$ki]['address'] = self::decode_header($add);
+ //error_log(__METHOD__.__LINE__.array2string($retValue['header'][$sortOrder[$uid]]['additional_to_addresses'][$ki]));
+ $ki++;
+ }
+ }
//error_log(__METHOD__.__LINE__.array2string($retValue['header'][$sortOrder[$uid]]));
$count++;
@@ -1886,7 +1896,7 @@ class mail_bo
$allMailboxes = array();
foreach ((array)$allMailBoxesExtSorted as $mbx) {
//echo $mbx['MAILBOX']."
";
- if (in_array('\HasChildren',$mbx["ATTRIBUTES"]) || in_array('\Haschildren',$mbx["ATTRIBUTES"])) {
+ if (in_array('\HasChildren',$mbx["ATTRIBUTES"]) || in_array('\Haschildren',$mbx["ATTRIBUTES"]) || in_array('\haschildren',$mbx["ATTRIBUTES"])) {
unset($buff);
//$buff = $this->icServer->getMailboxes($mbx['MAILBOX'].$delimiter,0,false);
if (!in_array($mbx['MAILBOX'],$allMailboxes)) $buff = self::getMailBoxesRecursive($mbx['MAILBOX'],$delimiter,$foldersNameSpace[$type]['prefix'],1);
@@ -2180,26 +2190,27 @@ class mail_bo
//get that mailbox in question
$mbx = $this->icServer->getMailboxes($_mailbox,1,true);
#_debug_array($mbx);
- if (is_array($mbx[0]["ATTRIBUTES"]) && (in_array('\HasChildren',$mbx[0]["ATTRIBUTES"]) || in_array('\Haschildren',$mbx[0]["ATTRIBUTES"]))) {
+//error_log(__METHOD__.__LINE__.' Delimiter:'.array2string($delimiter));
+//error_log(__METHOD__.__LINE__.array2string($mbx));
+ if (is_array($mbx[0]["ATTRIBUTES"]) && (in_array('\HasChildren',$mbx[0]["ATTRIBUTES"]) || in_array('\Haschildren',$mbx[0]["ATTRIBUTES"]) || in_array('\haschildren',$mbx[0]["ATTRIBUTES"]))) {
// if there are children fetch them
//echo $mbx[0]['MAILBOX']."
";
unset($buff);
$buff = $this->icServer->getMailboxes($mbx[0]['MAILBOX'].($mbx[0]['MAILBOX'] == $prefix ? '':$delimiter),2,false);
//$buff = $this->icServer->getMailboxes($mbx[0]['MAILBOX'],2,false);
//_debug_array($buff);
- if( PEAR::isError($buff) ) {
- if (self::$debug) error_log(__METHOD__." Error while retrieving Mailboxes for:".$mbx[0]['MAILBOX'].$delimiter.".");
- return array();
- } else {
- $allMailboxes = array();
- foreach ($buff as $mbxname) {
- $mbxname = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$mbxname);
- #echo "About to recur in level $reclevel:".$mbxname."
";
- if ( $mbxname != $mbx[0]['MAILBOX'] && $mbxname != $prefix && $mbxname != $mbx[0]['MAILBOX'].$delimiter) $allMailboxes = array_merge($allMailboxes, self::getMailBoxesRecursive($mbxname, $delimiter, $prefix, $reclevel));
+ $allMailboxes = array();
+ foreach ($buff as $mbxname) {
+//error_log(__METHOD__.__LINE__.array2string($mbxname));
+ $mbxname = preg_replace('~'.($delimiter == '.' ? "\\".$delimiter:$delimiter).'+~s',$delimiter,$mbxname['MAILBOX']);
+ #echo "About to recur in level $reclevel:".$mbxname."
";
+ if ( $mbxname != $mbx[0]['MAILBOX'] && $mbxname != $prefix && $mbxname != $mbx[0]['MAILBOX'].$delimiter)
+ {
+ $allMailboxes = array_merge($allMailboxes, self::getMailBoxesRecursive($mbxname, $delimiter, $prefix, $reclevel));
}
- if (!(in_array('\NoSelect',$mbx[0]["ATTRIBUTES"]) || in_array('\Noselect',$mbx[0]["ATTRIBUTES"]))) $allMailboxes[] = $mbx[0]['MAILBOX'];
- return $allMailboxes;
}
+ if (!(in_array('\NoSelect',$mbx[0]["ATTRIBUTES"]) || in_array('\Noselect',$mbx[0]["ATTRIBUTES"]) || in_array('\noselect',$mbx[0]["ATTRIBUTES"]))) $allMailboxes[] = $mbx[0]['MAILBOX'];
+ return $allMailboxes;
} else {
return array($_mailbox);
}
diff --git a/mail/inc/class.mail_compose.inc.php b/mail/inc/class.mail_compose.inc.php
index 355bbeefd9..bf3d668d6b 100644
--- a/mail/inc/class.mail_compose.inc.php
+++ b/mail/inc/class.mail_compose.inc.php
@@ -1111,6 +1111,7 @@ class mail_compose
$value = htmlspecialchars_decode($value,ENT_COMPAT);
$value = str_replace("\"\"",'"',$value);
$address_array = imap_rfc822_parse_adrlist((get_magic_quotes_gpc()?stripslashes($value):$value), '');
+ unset($content[strtolower($destination)]);
foreach((array)$address_array as $addressObject) {
if ($addressObject->host == '.SYNTAX-ERROR.') continue;
$address = imap_rfc822_write_address($addressObject->mailbox,$addressObject->host,$addressObject->personal);
diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php
index f4522fb8f2..708b6d34ea 100644
--- a/mail/inc/class.mail_ui.inc.php
+++ b/mail/inc/class.mail_ui.inc.php
@@ -142,6 +142,7 @@ class mail_ui
'msg' => $e->getMessage()//.' ('.get_class($e).': '.$e->getCode().')',
));
}
+
$GLOBALS['egw']->session->commit_session();
//_debug_array($this->mail_bo->mailPreferences);
//$endtime = microtime(true) - $starttime;
@@ -186,9 +187,11 @@ class mail_ui
$starttime = microtime (true);
$this->mail_bo->restoreSessionData();
$sessionFolder = $this->mail_bo->sessionData['mailbox'];
+ $toSchema = false;//decides to select list schema with column to selected (if false fromaddress is default)
if ($this->mail_bo->folderExists($sessionFolder))
{
$this->mail_bo->reopen($sessionFolder); // needed to fetch full set of capabilities
+ $toSchema = $this->mail_bo->isDraftFolder($sessionFolder)||$this->mail_bo->isSentFolder($sessionFolder)||$this->mail_bo->isTemplateFolder($sessionFolder);
}
//_debug_array($content);
if (!is_array($content))
@@ -209,7 +212,7 @@ class mail_ui
'start' => 0, // IO position in list
'order' => 'date', // IO name of the column to sort after (optional for the sortheaders)
'sort' => 'DESC', // IO direction of the sort: 'ASC' or 'DESC'
- 'default_cols' => 'status,attachments,subject,fromaddress,date,size', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
+ 'default_cols' => 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
'csv_fields' => false, // I false=disable csv export, true or unset=enable it with auto-detected fieldnames,
//or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type)
'actions' => self::get_actions(),
@@ -1211,7 +1214,7 @@ unset($query['actions']);
if (empty($rowsFetched['messages'])) $rowsFetched['messages'] = $rowsFetched['rowsFetched'];
//error_log(__METHOD__.__LINE__.' Rows fetched:'.$rowsFetched.' Data:'.array2string($sortResult));
- $cols = array('row_id','uid','status','attachments','subject','toaddress','fromaddress','date','size','modified');
+ $cols = array('row_id','uid','status','attachments','subject','toaddress','fromaddress','ccaddress','additionaltoaddress','date','size','modified');
if ($GLOBALS['egw_info']['user']['preferences']['common']['select_mode']=='EGW_SELECTMODE_TOGGLE') unset($cols[0]);
$rows = $this->header2gridelements($sortResult['header'],$cols, $_folderName, $folderType,$previewMessage);
//error_log(__METHOD__.__LINE__.array2string($rows));
@@ -1482,11 +1485,19 @@ unset($query['actions']);
$data["toaddress"] = $header['to_address'];//mail_bo::htmlentities($header['to_address'],$this->charset);
}
+ if (in_array("additionaltoaddress", $cols))
+ {
+ $data['additionaltoaddress'] = json_encode($header['additional_to_addresses']);
+ }
//fromaddress
if (in_array("fromaddress", $cols))
{
$data["fromaddress"] = $header['sender_address'];//mail_bo::htmlentities($header['sender_address'],$this->charset);
}
+ if (in_array("ccaddress", $cols))
+ {
+ $data['ccaddress'] = json_encode($header['cc_addresses']);
+ }
if (in_array("date", $cols))
{
$data["date"] = $header['date'];//$dateShort;//''.$dateShort.'';
@@ -3240,6 +3251,11 @@ blockquote[type=cite] {
}
}
}
+ if ($folderName==$this->mail_bo->sessionData['mailbox'])
+ {
+ $this->mail_bo->sessionData['mailbox']=$newFolderName;
+ $this->mail_bo->saveSessionData();
+ }
//error_log(__METHOD__.__LINE__.array2string($oA));
if ($oA)
{
diff --git a/mail/js/app.js b/mail/js/app.js
index a2a08d4739..1897322236 100644
--- a/mail/js/app.js
+++ b/mail/js/app.js
@@ -495,6 +495,7 @@ app.classes.mail = AppJS.extend(
this.et2.getWidgetById('previewToAddress').set_value("");
this.et2.getWidgetById('previewDate').set_value("");
this.et2.getWidgetById('previewSubject').set_value("");
+ this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button mail_DisplayNone');
this.et2.getWidgetById('previewAttachmentArea').set_value({content:[]});
this.et2.getWidgetById('previewAttachmentArea').set_class('previewAttachmentArea noContent mail_DisplayNone');
var IframeHandle = this.et2.getWidgetById('messageIFRAME');
@@ -510,6 +511,16 @@ app.classes.mail = AppJS.extend(
this.et2.getWidgetById('previewToAddress').set_value(dataElem.data.toaddress);
this.et2.getWidgetById('previewDate').set_value(dataElem.data.date);
this.et2.getWidgetById('previewSubject').set_value(subject);
+ if (dataElem.data.additionaltoaddress=="null") dataElem.data.additionaltoaddress='';
+ if (dataElem.data.ccaddress=='null') dataElem.data.ccaddress='';
+ if ((dataElem.data.additionaltoaddress.length+dataElem.data.ccaddress.length)<1)
+ {
+ this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button mail_DisplayNone');
+ }
+ else
+ {
+ this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button');
+ }
if (dataElem.data.attachmentsBlock.length<1)
{
this.et2.getWidgetById('previewAttachmentArea').set_class('previewAttachmentArea noContent mail_DisplayNone');
@@ -529,6 +540,29 @@ app.classes.mail = AppJS.extend(
// request.sendRequest(false);
},
+ /**
+ * mail_showAllAddresses
+ * requires: mainWindow, one mail selected for preview
+ */
+ mail_showAllAddresses: function(_id) {
+ var dataElem = {data:{subject:"",fromaddress:"",toaddress:"",additionaltoaddress:"",ccaddress:"",date:"",subject:""}};
+ dataElem = egw.dataGetUIDdata(_id);
+ console.log(_id,dataElem);
+ var buttons = [
+ {text: this.egw.lang("Close"), id:"close"}
+ ];
+ et2_dialog.show_dialog(function(_button_id)
+ {
+ switch(_button_id)
+ {
+ case 'close':
+ default:
+ break;
+ }
+ },this.egw.lang("text one"),
+ dataElem.data.subject, {}, buttons, et2_dialog.WARNING_MESSAGE);
+ },
+
mail_setMailBody: function(content) {
//console.log('mail_setMailBody',content);
var IframeHandle = this.et2.getWidgetById('messageIFRAME');
diff --git a/mail/templates/default/index.xet b/mail/templates/default/index.xet
index e7c46bf469..b40e855808 100644
--- a/mail/templates/default/index.xet
+++ b/mail/templates/default/index.xet
@@ -52,6 +52,7 @@