This manual is deprecated. Please visit https://groupoffice.readthedocs.io for the latest documentation.

Difference between revisions of "Using the e-mail composer in your module"

From Group-Office Groupware and CRM Documentation
Jump to: navigation, search
 
(2 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
iconCls: 'btn-compose',
 
iconCls: 'btn-compose',
 
text: GO.lang.strEmail,
 
text: GO.lang.strEmail,
cls: 'x-btn-text-icon',
 
 
handler: function(){
 
handler: function(){
 
if(!GO.email)
 
if(!GO.email)
 
{
 
{
Ext.Msg.alert(GO.lang['strError'], GO.billing.lang.noEmailModule);
+
Ext.Msg.alert(GO.lang['strError'], "No e-mail module");
 
}else
 
}else
 
{
 
{
 
GO.email.showComposer({
 
GO.email.showComposer({
loadUrl: GO.settings.modules.yourmodule.url+'json.php',
+
loadUrl: GO.url("module/controller/email"),
 
loadParams:{task:'sendmail',someparam: this.someparam},
 
loadParams:{task:'sendmail',someparam: this.someparam},
 
template_id: 0
 
template_id: 0
Line 29: Line 28:
  
 
<pre>
 
<pre>
require_once('../../classes/mail/RFC822.class.inc');
+
protected function actionEmail($params){
$RFC822 = new RFC822();
+
 
+
$message = new GO_Email_Model_ComposerMessage();
$response['data']['body'] = '<h1>Hello world!</h1>';
+
$message->subject="Example message";
$response['data']['subject']='My subject';
+
$response['data']['to']=$RFC822->write_address('My name', 'my@email.com');
+
$response['data'] = $message->toOutputArray(true,true);
$response['data']['cc']=$RFC822->write_address('My name', 'cc@email.com');
+
$response['success']=true;
 
+
return $response;
 
+
}
$tmp_file=$GO_CONFIG->tmpdir.'path/to/tempfile.pdf';
+
$response['data']['attachments'][] = array(
+
'tmp_name'=>$tmp_file,
+
'name'=>'Document.pdf',
+
'size'=>filesize($tmp_file),
+
'type'=>File::get_filetype_description('pdf')
+
);
+
 
</pre>
 
</pre>

Latest revision as of 15:26, 6 July 2012

In a lot of cases you might want to open the e-mail composer and preset it with values. For example the billing module opens the composer to send an invoice. You can do this by adding the following button:

{
	iconCls: 'btn-compose',
	text: GO.lang.strEmail,
	handler: function(){
		if(!GO.email)
		{
			Ext.Msg.alert(GO.lang['strError'], "No e-mail module");
		}else
		{
			GO.email.showComposer({
				loadUrl: GO.url("module/controller/email"),
				loadParams:{task:'sendmail',someparam: this.someparam},
				template_id: 0					
			});
		}

	},
	scope:this						
}

The loadUrl and loadParams configuration options will call your module's json.php so it can provide the composer with form data. passing template_id=0 will skip template selection for the pro version.

On the PHP side in json.php you should return some JSON data like this:

protected function actionEmail($params){
		
	$message = new GO_Email_Model_ComposerMessage();
	$message->subject="Example message";
	
	$response['data'] = $message->toOutputArray(true,true);
	$response['success']=true;
	return $response;
}