diff --git a/mail/inc/class.mail_bo.inc.php b/mail/inc/class.mail_bo.inc.php
index 2f17e779c6..a1acf61627 100644
--- a/mail/inc/class.mail_bo.inc.php
+++ b/mail/inc/class.mail_bo.inc.php
@@ -4737,6 +4737,19 @@ class mail_bo
return $headdata;
}
+ /**
+ * adaptSubjectForImport - strips subject from unwanted Characters, and does some normalization
+ * to meet expectations
+ * @param string $subject string to process
+ * @return string
+ */
+ static function adaptSubjectForImport($subject)
+ {
+ $subject = str_replace('$$','__',($subject?$subject:lang('(no subject)')));
+ $subject = str_ireplace(array('[FWD]','[',']','{','}','<','>'),array('Fwd:',' ',' ',' ',' ',' ',' '),trim($subject));
+ return $subject;
+ }
+
/**
* convertAddressArrayToString - converts an mail envelope Address Array To String
* @param array $rfcAddressArray an addressarray as provided by mail retieved via egw_pear....
diff --git a/mail/inc/class.mail_compose.inc.php b/mail/inc/class.mail_compose.inc.php
index cdfcd12812..319b56631b 100644
--- a/mail/inc/class.mail_compose.inc.php
+++ b/mail/inc/class.mail_compose.inc.php
@@ -266,16 +266,16 @@ class mail_compose
* function compose
* this function is used to fill the compose dialog with the content provided by session data
*
- * @var content array the etemplate content array
+ * @var _content array the etemplate content array
* @var msg string a possible message to be passed and displayed to the userinterface
* @var _focusElement varchar subject, to, body supported
* @var suppressSigOnTop boolean
* @var isReply boolean
*/
- 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($content));
+ error_log(__METHOD__.__LINE__.array2string($_content));
if (isset($_GET['reply_id'])) $replyID = $_GET['reply_id'];
// read the data from session
@@ -946,8 +946,6 @@ class mail_compose
if ($value=="NIL@NIL") continue;
if ($destination=='replyto' && str_replace('"','',$value) == str_replace('"','',$identities[($presetId ? $presetId : $defaultIdentity)])) continue;
//error_log(__METHOD__.__LINE__.array2string(array('key'=>$key,'value'=>$value)));
- $selectDestination = html::select('destination[]', $destination, $this->destinations, false, "style='width: 100%;' onchange='fm_compose_changeInputType(this)'");
- //$this->t->set_var('select_destination', $selectDestination);
$value = htmlspecialchars_decode($value,ENT_COMPAT);
$value = str_replace("\"\"",'"',$value);
$address_array = imap_rfc822_parse_adrlist((get_magic_quotes_gpc()?stripslashes($value):$value), '');
@@ -960,8 +958,14 @@ class mail_compose
}
}
}
- if ($content)
+ if ($_content)
{
+ $content = array_merge($content,$_content);
+
+ if (!empty($content['FOLDER'])) $sel_options['FOLDER']=$this->ajax_searchFolder(0,true);
+ $content['SENDER'] = (empty($content['SENDER'])?($selectedSender?(array)$selectedSender:''):$content['SENDER']);
+ $content['is_html'] = ($this->sessionData['mimeType'] == 'html'?true:'');
+ $content['is_plain'] = ($this->sessionData['mimeType'] == 'html'?'':true);
}
else
{
@@ -972,6 +976,8 @@ class mail_compose
//error_log(__METHOD__.__LINE__.$sessionData['body']);
$content['mail_'.($this->sessionData['mimeType'] == 'html'?'html':'plain').'text'] = $sessionData['body'];
}
+ $preserv['is_html'] = $content['is_html'];
+ $preserv['is_plain'] = $content['is_plain'];
$etpl = new etemplate_new('mail.compose');
$etpl->exec('mail.mail_compose.compose',$content,$sel_options,$readonlys,$preserv,2);
}
@@ -2529,12 +2535,12 @@ class mail_compose
common::egw_exit();
}
- function ajax_searchFolder() {
+ function ajax_searchFolder($_searchStringLength=2, $_returnList=false) {
static $useCacheIfPossible;
if (is_null($useCacheIfPossible)) $useCacheIfPossible = true;
$_searchString = trim($_REQUEST['query']);
$results = array();
- if (strlen($_searchString)>=2 && isset($this->mail_bo->icServer))
+ if (strlen($_searchString)>=$_searchStringLength && isset($this->mail_bo->icServer))
{
//error_log(__METHOD__.__LINE__.':'.$this->mail_bo->icServer->ImapServerId);
if (!($this->mail_bo->icServer->_connected == 1)) $this->mail_bo->openConnection($this->mail_bo->icServer->ImapServerId);
@@ -2552,7 +2558,12 @@ class mail_compose
{
//error_log(__METHOD__.__LINE__.$_searchString.'/'.$searchString.' in '.$k.'->'.$fA->displayName);
$f=false;
- if (stripos($fA->displayName,$_searchString)!==false)
+ if ($_searchStringLength<=0)
+ {
+ $f=true;
+ $results[] = array('id'=>$k, 'label' => htmlspecialchars($fA->displayName));
+ }
+ if ($f==false && stripos($fA->displayName,$_searchString)!==false)
{
$f=true;
$results[] = array('id'=>$k, 'label' => htmlspecialchars($fA->displayName));
@@ -2564,7 +2575,11 @@ class mail_compose
}
}
//error_log(__METHOD__.__LINE__.' IcServer:'.$this->mail_bo->icServer->ImapServerId.':'.array2string($results));
-
+ if ($_returnList)
+ {
+ foreach ((array)$results as $k => $_result) {$rL[$_result['id']]=$_result['label'];};
+ return $rL;
+ }
header('Content-Type: application/json; charset=utf-8');
echo json_encode($results);
common::egw_exit();
diff --git a/mail/inc/class.mail_hooks.inc.php b/mail/inc/class.mail_hooks.inc.php
index fdd6377275..c008bcc0a5 100644
--- a/mail/inc/class.mail_hooks.inc.php
+++ b/mail/inc/class.mail_hooks.inc.php
@@ -799,12 +799,14 @@ class mail_hooks
'link'=>false,
'icon' => false
);
+/*
$file[] = array(
'no_lang' => true,
'text'=>'',
'link'=>false,
'icon' => false
);
+*/
$file[] = array(
'no_lang' => true,
'text'=>'',
diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php
index deb98f29ec..e9c62abd96 100644
--- a/mail/inc/class.mail_ui.inc.php
+++ b/mail/inc/class.mail_ui.inc.php
@@ -1599,11 +1599,6 @@ unset($query['actions']);
),
));
*/
- egw_framework::set_onload('$j(document).ready(function() {
-var subject = etemplate2.getByApplication(\'mail\')[0].widgetContainer.getWidgetById(\'mail_displaysubject\');
-var body = etemplate2.getByApplication(\'mail\')[0].widgetContainer.getWidgetById(\'mail_displaybody\');
-body.node.parentNode.style.top=subject.node.offsetTop+40+\'px\';
-});');
$subject = /*mail_bo::htmlspecialchars(*/$this->mail_bo->decode_subject(preg_replace($nonDisplayAbleCharacters,'',$envelope['SUBJECT']),false)/*,
mail_bo::$displayCharset)*/;
if($envelope['FROM'][0] != $envelope['SENDER'][0]) {
@@ -2691,9 +2686,12 @@ blockquote[type=cite] {
/**
* importMessage
*/
- function importMessage()
+ function importMessage($content)
{
- error_log(array2string($_POST));
+ error_log(array2string($content));
+ if (!is_array($content)) $content = array();
+ $etpl = new etemplate_new('mail.importMessage');
+ $etpl->exec('mail.mail_ui.importMessage',$content,$sel_options,$readonlys,$preserv,2);
/*
if (empty($importtype)) $importtype = htmlspecialchars($_POST["importtype"]);
if (empty($toggleFS)) $toggleFS = htmlspecialchars($_POST["toggleFS"]);
diff --git a/mail/js/app.js b/mail/js/app.js
index 5720d7fd11..7429df6b72 100644
--- a/mail/js/app.js
+++ b/mail/js/app.js
@@ -63,7 +63,7 @@ app.mail = AppJS.extend(
*/
et2_ready: function(et2)
{
- // call parent
+ // call parent; somehow this function is called more often. (twice on a display and compose) why?
this._super.apply(this, arguments);
this.et2_obj = et2;
this.et2 = et2.widgetContainer;
@@ -71,10 +71,24 @@ app.mail = AppJS.extend(
var isDisplay = false;
for (var t in et2.templates)
{
- if (t=='mail.index') {isMainView=true;break;};
- if (t=='mail.display') {isDisplay=true;break;};
+ //alert(t); // as we iterate through this more than once, ... we separate trigger and action
+ switch (t) {
+ case 'mail.index':
+ isMainView=true;
+ break;
+ case 'mail.display':
+ isDisplay=true;
+ break;
+ }
}
+ //alert('action about to go down');
if (isMainView) this.mail_disablePreviewArea(true);
+ if (isDisplay)
+ {
+ var subject = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mail_displaysubject');
+ var body = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mail_displaybody');
+ body.node.parentNode.style.top=subject.node.offsetTop+40+'px';
+ }
},
/**
@@ -1148,6 +1162,29 @@ app.mail = AppJS.extend(
}
},
+ /**
+ * Send names of uploaded files (again) to server, to process them: either copy to vfs or ask overwrite/rename
+ *
+ * @param _event
+ * @param _file_count
+ * @param {string} [_path=current directory] Where the file is uploaded to.
+ */
+ uploadForImport: function(_event, _file_count, _path)
+ {
+ console.log(_event,_file_count,_path);
+ if(typeof _path == 'undefined')
+ {
+ //_path = this.get_path();
+ }
+ if (_file_count && !jQuery.isEmptyObject(_event.data.getValue()))
+ {
+// var widget = _event.data;
+// var request = new egw_json_request('filemanager_ui::ajax_action', ['upload', widget.getValue(), _path], this);
+// widget.set_value('');
+// request.sendRequest(false, this._upload_callback, this);
+ }
+ },
+
sieve_editRules_radiobtn: function()
{
console.log("hi i am radiobtn");
diff --git a/mail/setup/etemplates.inc.php b/mail/setup/etemplates.inc.php
index 7fe66a56eb..310a3d763b 100644
--- a/mail/setup/etemplates.inc.php
+++ b/mail/setup/etemplates.inc.php
@@ -2,7 +2,7 @@
/**
* EGroupware - eTemplates for Application mail
* http://www.egroupware.org
- * generated by soetemplate::dump4setup() 2013-06-05 13:45
+ * generated by soetemplate::dump4setup() 2013-08-28 16:05
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package mail
@@ -14,7 +14,7 @@ $templ_version=1;
$templ_data[] = array('name' => 'mail.display','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:2:{i:0;a:2:{s:4:"name";s:3:"msg";s:4:"type";s:4:"html";}i:1;a:10:{s:5:"width";s:4:"100%";s:4:"name";s:11:"mailDisplay";s:4:"type";s:4:"vbox";s:4:"size";s:1:"6";i:1;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:22:"mailDisplayHeadersFrom";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailDisplayHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"From";}i:2;a:3:{s:8:"readonly";s:4:"true";s:4:"name";s:18:"DisplayFromAddress";s:4:"type";s:9:"url-email";}}i:2;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:20:"mailDisplayHeadersTo";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailDisplayHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:2:"To";}i:2;a:3:{s:8:"readonly";s:4:"true";s:4:"name";s:16:"DisplayToAddress";s:4:"type";s:9:"url-email";}}i:3;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:22:"mailDisplayHeadersDate";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailDisplayHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Date";}i:2;a:4:{s:5:"align";s:4:"left";s:8:"readonly";s:4:"true";s:4:"name";s:11:"DisplayDate";s:4:"type";s:9:"date-time";}}i:4;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:25:"mailDisplayHeadersSubject";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailDisplayHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Subject";}i:2;a:4:{s:5:"align";s:4:"left";s:8:"readonly";s:4:"true";s:4:"name";s:14:"DisplaySubject";s:4:"type";s:5:"label";}}i:5;a:4:{s:4:"name";s:16:"mailDisplayIcons";s:4:"type";s:4:"hbox";s:4:"size";s:1:"1";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Icons";}}i:6;a:4:{s:4:"name";s:20:"mailDisplayContainer";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:2:{s:4:"name";s:15:"mailDisplayBody";s:4:"type";s:4:"html";}}}}','size' => '','style' => '','modified' => '1370432711',);
-$templ_data[] = array('name' => 'mail.importMessage','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1365666381',);
+$templ_data[] = array('name' => 'mail.importMessage','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:4:"file";}}i:2;a:1:{s:1:"A";a:1:{s:4:"type";s:3:"vfs";}}}s:4:"rows";i:2;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1377698715',);
$templ_data[] = array('name' => 'mail.index','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:3:{i:0;a:5:{s:11:"autoloading";s:28:"mail.mail_ui.ajax_foldertree";s:7:"onclick";s:56:"app.mail.mail_changeFolder(widget.event_args[0],widget);";s:11:"parent_node";s:11:"tree_target";s:4:"name";s:14:"nm[foldertree]";s:4:"type";s:4:"tree";}i:1;a:2:{s:4:"name";s:3:"msg";s:4:"type";s:4:"html";}i:2;a:7:{s:9:"dock_side";s:10:"bottomDock";s:11:"orientation";s:1:"h";s:4:"name";s:12:"mailSplitter";s:4:"type";s:5:"split";s:4:"size";s:1:"2";i:1;a:4:{s:8:"onselect";s:21:"app.mail.mail_preview";s:4:"name";s:2:"nm";s:4:"type";s:9:"nextmatch";s:4:"size";s:15:"mail.index.rows";}i:2;a:10:{s:5:"width";s:4:"100%";s:4:"name";s:11:"mailPreview";s:4:"type";s:4:"vbox";s:4:"size";s:1:"6";i:1;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:22:"mailPreviewHeadersFrom";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailPreviewHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"From";}i:2;a:3:{s:8:"readonly";s:4:"true";s:4:"name";s:18:"previewFromAddress";s:4:"type";s:9:"url-email";}}i:2;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:20:"mailPreviewHeadersTo";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailPreviewHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:2:"To";}i:2;a:3:{s:8:"readonly";s:4:"true";s:4:"name";s:16:"previewToAddress";s:4:"type";s:9:"url-email";}}i:3;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:22:"mailPreviewHeadersDate";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailPreviewHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Date";}i:2;a:4:{s:5:"align";s:4:"left";s:8:"readonly";s:4:"true";s:4:"name";s:11:"previewDate";s:4:"type";s:9:"date-time";}}i:4;a:7:{s:5:"width";s:4:"100%";s:4:"name";s:25:"mailPreviewHeadersSubject";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:19:",mailPreviewHeaders";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Subject";}i:2;a:4:{s:5:"align";s:4:"left";s:8:"readonly";s:4:"true";s:4:"name";s:14:"previewSubject";s:4:"type";s:5:"label";}}i:5;a:4:{s:4:"name";s:16:"mailPreviewIcons";s:4:"type";s:4:"hbox";s:4:"size";s:1:"1";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Icons";}}i:6;a:4:{s:4:"name";s:20:"mailPreviewContainer";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:4:{s:11:"frameborder";s:1:"1";s:9:"scrolling";s:4:"auto";s:4:"name";s:13:"messageIFRAME";s:4:"type";s:6:"iframe";}}}}}','size' => '','style' => '','modified' => '1370427910',);
diff --git a/mail/templates/default/importMessage.xet b/mail/templates/default/importMessage.xet
new file mode 100644
index 0000000000..5c8d90bc0b
--- /dev/null
+++ b/mail/templates/default/importMessage.xet
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+ >
+
+