fix saveToVFS on preview; fetch content for reply; prepare for click events like send and saveasdraft

This commit is contained in:
Klaus Leithoff 2013-10-03 10:05:05 +00:00
parent f8a0db06fc
commit 98da72c757
3 changed files with 70 additions and 25 deletions

View File

@ -278,7 +278,7 @@ class mail_compose
function compose(array $_content=null,$msg=null, $_focusElement='to',$suppressSigOnTop=false, $isReply=false) function compose(array $_content=null,$msg=null, $_focusElement='to',$suppressSigOnTop=false, $isReply=false)
{ {
//error_log(__METHOD__.__LINE__.array2string($_REQUEST)); //error_log(__METHOD__.__LINE__.array2string($_REQUEST));
error_log(__METHOD__.__LINE__.array2string($_content)); error_log(__METHOD__.__LINE__.array2string($_content).function_backtrace());
if (isset($_GET['reply_id'])) $replyID = $_GET['reply_id']; if (isset($_GET['reply_id'])) $replyID = $_GET['reply_id'];
// VFS Selector was used // VFS Selector was used
@ -333,9 +333,41 @@ class mail_compose
} }
} }
$CAtFStart = array2string($_content); $CAtFStart = array2string($_content);
// someone clicked something like send, or saveAsDraft
if ($_content['button']['send'])
{
$sendOK = true;
try
{
}
catch (egw_exception_wrong_userinput $e)
{
$sendOK = false;
}
if ($sendOK)
{
egw_framework::refresh_opener(lang('Message send successfully.'),'mail');
egw_framework::window_close();
}
}
if ($_content['button']['saveAsDraft'])
{
$savedOK = true;
try
{
}
catch (egw_exception_wrong_userinput $e)
{
$savedOK = false;
}
if ($savedOK)
{
egw_framework::message(lang('Message saved successfully.'),'mail');
}
}
// all values are empty for a new compose window // all values are empty for a new compose window
$insertSigOnTop = false; $insertSigOnTop = false;
$content = array(); $content = (is_array($_content)?$_content:array());
$alwaysAttachVCardAtCompose = false; // we use this to eliminate double attachments, if users VCard is already present/attached $alwaysAttachVCardAtCompose = false; // we use this to eliminate double attachments, if users VCard is already present/attached
if ( isset($GLOBALS['egw_info']['apps']['stylite']) && (isset($this->preferencesArray['attachVCardAtCompose']) && if ( isset($GLOBALS['egw_info']['apps']['stylite']) && (isset($this->preferencesArray['attachVCardAtCompose']) &&
$this->preferencesArray['attachVCardAtCompose'])) $this->preferencesArray['attachVCardAtCompose']))
@ -991,27 +1023,27 @@ $CAtFStart = array2string($_content);
if (!empty($content['FOLDER'])) $sel_options['FOLDER']=$this->ajax_searchFolder(0,true); if (!empty($content['FOLDER'])) $sel_options['FOLDER']=$this->ajax_searchFolder(0,true);
$content['SENDER'] = (empty($content['SENDER'])?($selectedSender?(array)$selectedSender:''):$content['SENDER']); $content['SENDER'] = (empty($content['SENDER'])?($selectedSender?(array)$selectedSender:''):$content['SENDER']);
$content['is_html'] = ($this->content['mimeType'] == 'html'?true:''); $content['is_html'] = ($content['mimeType'] == 'html'?true:'');
$content['is_plain'] = ($this->content['mimeType'] == 'html'?'':true); $content['is_plain'] = ($content['mimeType'] == 'html'?'':true);
$content['mail_'.($this->content['mimeType'] == 'html'?'html':'plain').'text'] =$CAtFStart.$content['mail_'.($this->content['mimeType'] == 'html'?'html':'plain').'text']; $content['mail_'.($content['mimeType'] == 'html'?'html':'plain').'text'] =($content['body']?$content['body']:$content['mail_'.($this->content['mimeType'] == 'html'?'html':'plain').'text']);
} }
else else
{ {
$content['is_html'] = ($this->content['mimeType'] == 'html'?true:''); $content['is_html'] = ($content['mimeType'] == 'html'?true:'');
$content['is_plain'] = ($this->content['mimeType'] == 'html'?'':true); $content['is_plain'] = ($content['mimeType'] == 'html'?'':true);
//error_log(__METHOD__.__LINE__.array2string(array($sel_options['SENDER'],$selectedSender))); //error_log(__METHOD__.__LINE__.array2string(array($sel_options['SENDER'],$selectedSender)));
$content['SENDER'] = ($selectedSender?(array)$selectedSender:''); $content['SENDER'] = ($selectedSender?(array)$selectedSender:'');
//error_log(__METHOD__.__LINE__.$content['body']); //error_log(__METHOD__.__LINE__.$content['body']);
$content['mail_'.($this->content['mimeType'] == 'html'?'html':'plain').'text'] = $content['body']; $content['mail_'.($content['mimeType'] == 'html'?'html':'plain').'text'] = $content['body'];
} }
$content['showtempname']=0; $content['showtempname']=0;
error_log(__METHOD__.__LINE__.array2string($content['attachments'])); if (is_array($content['attachments']))error_log(__METHOD__.__LINE__.'before merging content with uploadforCompose:'.array2string($content['attachments']));
$content['attachments']=(is_array($content['attachments'])&&is_array($content['uploadForCompose'])?array_merge($content['attachments'],(!empty($content['uploadForCompose'])?$content['uploadForCompose']:array())):(is_array($content['uploadForCompose'])?$content['uploadForCompose']:(is_array($content['attachments'])?$content['attachments']:null))); $content['attachments']=(is_array($content['attachments'])&&is_array($content['uploadForCompose'])?array_merge($content['attachments'],(!empty($content['uploadForCompose'])?$content['uploadForCompose']:array())):(is_array($content['uploadForCompose'])?$content['uploadForCompose']:(is_array($content['attachments'])?$content['attachments']:null)));
//if (is_array($content['attachments'])) foreach($content['attachments'] as $k => &$file) $file['delete['.$file['tmp_name'].']']=0; //if (is_array($content['attachments'])) foreach($content['attachments'] as $k => &$file) $file['delete['.$file['tmp_name'].']']=0;
$content['no_griddata'] = empty($content['attachments']); $content['no_griddata'] = empty($content['attachments']);
$preserv['attachments'] = $content['attachments']; $preserv['attachments'] = $content['attachments'];
error_log(__METHOD__.__LINE__.array2string($content['attachments'])); if (is_array($content['attachments']))error_log(__METHOD__.__LINE__.' Attachments:'.array2string($content['attachments']));
$preserv['is_html'] = $content['is_html']; $preserv['is_html'] = $content['is_html'];
$preserv['is_plain'] = $content['is_plain']; $preserv['is_plain'] = $content['is_plain'];
$etpl = new etemplate_new('mail.compose'); $etpl = new etemplate_new('mail.compose');
@ -1043,9 +1075,11 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
function composeFromDraft() { function composeFromDraft() {
$icServer = (int)$_GET['icServer'];
$folder = (isset($_GET['folder'])?base64_decode($_GET['folder']):base64_decode($_GET['mailbox']));
$replyID = $_GET['uid']; $replyID = $_GET['uid'];
$hA = mail_ui::splitRowID($replyID);
$replyID = $hA['msgUID'];
$folder = $hA['folder'];
$icServer = $hA['profileID'];
if (!empty($folder) && !empty($replyID) ) { if (!empty($folder) && !empty($replyID) ) {
// this fill the session data with the values from the original email // this fill the session data with the values from the original email
@ -1055,10 +1089,12 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
function forward() { function forward() {
$icServer = (int)$_GET['icServer'];
$folder = base64_decode($_GET['folder']);
$replyID = $_GET['reply_id']; $replyID = $_GET['reply_id'];
$partID = $_GET['part_id']; $partID = $_GET['part_id'];
$hA = mail_ui::splitRowID($replyID);
$replyID = $hA['msgUID'];
$folder = $hA['folder'];
$icServer = $hA['profileID'];
$mode = false; $mode = false;
if (isset($_GET['mode']) && ($_GET['mode']=='forwardasattach'||$_GET['mode']=='forwardinline')) $mode = ($_GET['mode']=='forwardinline'?'inline':'asattach'); if (isset($_GET['mode']) && ($_GET['mode']=='forwardasattach'||$_GET['mode']=='forwardinline')) $mode = ($_GET['mode']=='forwardinline'?'inline':'asattach');
if (!empty($replyID)) if (!empty($replyID))
@ -1139,10 +1175,12 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
function composeAsNew() { function composeAsNew() {
$icServer = (int)$_GET['icServer'];
$folder = (isset($_GET['folder'])?base64_decode($_GET['folder']):base64_decode($_GET['mailbox']));
$replyID = $_GET['reply_id']; $replyID = $_GET['reply_id'];
$partID = $_GET['part_id']; $partID = $_GET['part_id'];
$hA = mail_ui::splitRowID($replyID);
$replyID = $hA['msgUID'];
$folder = $hA['folder'];
$icServer = $hA['profileID'];
if (!empty($folder) && !empty($replyID) ) { if (!empty($folder) && !empty($replyID) ) {
// this fill the session data with the values from the original email // this fill the session data with the values from the original email
$content = $this->getDraftData($icServer, $folder, $replyID, $partID); $content = $this->getDraftData($icServer, $folder, $replyID, $partID);
@ -1151,10 +1189,12 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
function reply() { function reply() {
$icServer = (int)$_GET['icServer'];
$folder = base64_decode($_GET['folder']);
$replyID = $_GET['reply_id']; $replyID = $_GET['reply_id'];
$partID = $_GET['part_id']; $partID = $_GET['part_id'];
$hA = mail_ui::splitRowID($replyID);
$replyID = $hA['msgUID'];
$folder = $hA['folder'];
$icServer = $hA['profileID'];
if (!empty($folder) && !empty($replyID) ) { if (!empty($folder) && !empty($replyID) ) {
// this fill the session data with the values from the original email // this fill the session data with the values from the original email
$content = $this->getReplyData('single', $icServer, $folder, $replyID, $partID); $content = $this->getReplyData('single', $icServer, $folder, $replyID, $partID);
@ -1163,10 +1203,12 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
function replyAll() { function replyAll() {
$icServer = (int)$_GET['icServer'];
$folder = base64_decode($_GET['folder']);
$replyID = $_GET['reply_id']; $replyID = $_GET['reply_id'];
$partID = $_GET['part_id']; $partID = $_GET['part_id'];
$hA = mail_ui::splitRowID($replyID);
$replyID = $hA['msgUID'];
$folder = $hA['folder'];
$icServer = $hA['profileID'];
if (!empty($folder) && !empty($replyID) ) { if (!empty($folder) && !empty($replyID) ) {
// this fill the session data with the values from the original email // this fill the session data with the values from the original email
$content = $this->getReplyData('all', $icServer, $folder, $replyID, $partID); $content = $this->getReplyData('all', $icServer, $folder, $replyID, $partID);
@ -1716,6 +1758,7 @@ error_log(__METHOD__.__LINE__.array2string($content['attachments']));
} }
$mail_bo->closeConnection(); $mail_bo->closeConnection();
return $this->sessionData;
} }

View File

@ -1186,7 +1186,7 @@ unset($query['actions']);
{ {
$res = explode(self::$delimiter,$_rowID); $res = explode(self::$delimiter,$_rowID);
// as a rowID is perceeded by app::, should be mail! // as a rowID is perceeded by app::, should be mail!
//error_log(__METHOD__.__LINE__.array2string($res).' [0] isInt:'.is_int($res[0]).' [0] isNumeric:'.is_numeric($res[0]).' [0] isString:'.is_string($res[0])); //error_log(__METHOD__.__LINE__.array2string($res).' [0] isInt:'.is_int($res[0]).' [0] isNumeric:'.is_numeric($res[0]).' [0] isString:'.is_string($res[0]).' Count:'.count($res));
if (count($res)==4 && is_numeric($res[0]) ) if (count($res)==4 && is_numeric($res[0]) )
{ {
// we have an own created rowID; prepend app=mail // we have an own created rowID; prepend app=mail
@ -1357,6 +1357,7 @@ unset($query['actions']);
$image = html::image('mail','attach'); $image = html::image('mail','attach');
$imageTag = ''; $imageTag = '';
$imageHTMLBlock = ''; $imageHTMLBlock = '';
$datarowid = $this->createRowID($_folderName,$message_uid,true);
if (//$header['mimetype'] != 'multipart/mixed' && if (//$header['mimetype'] != 'multipart/mixed' &&
$header['mimetype'] != 'multipart/signed' $header['mimetype'] != 'multipart/signed'
) )
@ -1373,14 +1374,14 @@ unset($query['actions']);
} }
if (count($attachments)==1) if (count($attachments)==1)
{ {
$imageHTMLBlock = self::createAttachmentBlock($attachments, $data['row_id'], $header['uid'], $_folder); $imageHTMLBlock = self::createAttachmentBlock($attachments, $datarowid, $header['uid'], $_folder);
$imageTag = json_encode($attachments); $imageTag = json_encode($attachments);
$image = html::image('mail','attach',$attachments[0]['name'].(!empty($attachments[0]['mimeType'])?' ('.$attachments[0]['mimeType'].')':'')); $image = html::image('mail','attach',$attachments[0]['name'].(!empty($attachments[0]['mimeType'])?' ('.$attachments[0]['mimeType'].')':''));
} }
} }
if (count($attachments)>1) if (count($attachments)>1)
{ {
$imageHTMLBlock = self::createAttachmentBlock($attachments, $data['row_id'], $header['uid'], $_folder); $imageHTMLBlock = self::createAttachmentBlock($attachments, $datarowid, $header['uid'], $_folder);
$imageTag = json_encode($attachments); $imageTag = json_encode($attachments);
$image = html::image('mail','attach',lang('%1 attachments',count($attachments))); $image = html::image('mail','attach',lang('%1 attachments',count($attachments)));
} }
@ -2224,7 +2225,8 @@ unset($query['actions']);
$hA = self::splitRowID($lId); $hA = self::splitRowID($lId);
$uid = $hA['msgUID']; $uid = $hA['msgUID'];
$mailbox = $hA['folder']; $mailbox = $hA['folder'];
if ($mb != $mailbox) $this->mail_bo->reopen($mb = $mailbox); //error_log(__METHOD__.__LINE__.array2string($hA));
$this->mail_bo->reopen($mailbox);
$attachment = $this->mail_bo->getAttachment($uid,$part,$is_winmail); $attachment = $this->mail_bo->getAttachment($uid,$part,$is_winmail);
if (!($fp = egw_vfs::fopen($file=$path.($name ? '/'.$name : ''),'wb')) || if (!($fp = egw_vfs::fopen($file=$path.($name ? '/'.$name : ''),'wb')) ||

View File

@ -9,7 +9,7 @@
<taglist-email id="SENDER" width="88%" allowFreeEntries="false" maxSelection="1" autocomplete_url="mail.mail_compose.ajax_searchIdentities" onclick="app.mail.address_click"/> <taglist-email id="SENDER" width="88%" allowFreeEntries="false" maxSelection="1" autocomplete_url="mail.mail_compose.ajax_searchIdentities" onclick="app.mail.address_click"/>
</hbox> </hbox>
<hbox> <hbox>
<button label="Send" id="button[send]"/> <buttononly value="saveAsDraft" id="saveAsDraft" image="fileexport" onclick="app.mail.saveAsDraft"/> <button label="Send" id="button[send]"/> <buttononly value="saveAsDraft" id="button[saveAsDraft]" image="fileexport" onclick="app.mail.saveAsDraft"/>
<vfs-select id="selectFromVFSForCompose" onchange="app.mail.vfsUploadForCompose"/> <vfs-select id="selectFromVFSForCompose" onchange="app.mail.vfsUploadForCompose"/>
<file statustext="Select file to attach to message" multiple='true' progress='mailUploadProgress' onFinish="app.mail.uploadForCompose" id="uploadForCompose" drop_target ="mailUploadSection"/> <file statustext="Select file to attach to message" multiple='true' progress='mailUploadProgress' onFinish="app.mail.uploadForCompose" id="uploadForCompose" drop_target ="mailUploadSection"/>
</hbox> </hbox>