Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules /

Discuss all other Modules here.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Extend Userforms


Go to End
Reply


2 Posts   841 Views

Avatar
merrick_sd

Community Member, 98 Posts

17 June 2014 at 9:04pm

I'm after a tutorial / advice on how to extend userforms and use updateEmailData rather than edit line 985/990 of UserDefinedForm.php
UserDefinedForm.php

$emailData = array(
		//'RegisteredOffice' => Page_Controller::RegisteredOffice(), adding this here would be easy
		"Sender" => Member::currentUser(),
		"Fields" => $submittedFields
		);

$this->extend('updateEmailData', $emailData, $attachments);

mysite -> _config.php

Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

mysite -> code -> MyUserDefinedFormExtension.php

class MyUserDefinedFormExtension extends Extension {
	
	
	static $allowed_actions = array(
		'updateEmailData',
  		'index',
		 'ping',
		 'Form',
 		'finished'
 	);
	
	
	
       function updateEmailData($emailData, $attachments){
		
		$attachments = null;
		$testp = "i am testing";
	
		//UserDefinedForm_Controller::$emailData = array("TestPass" => $testp);
		$emailData = array("TestPass" => $testp);
		
		//echo "update called".$emailData['TestPass']."";
		//print_r($emailData);
	
		return $emailData;
		
  	}
}

SubmittedFormEmail.ss (email template)

         TestPass: $TestPass  

If I move TestPass into the emailData array in UserDefinedForm.php it works.
updateEmailData is being called though on MyUserDefinedFormExtension.php as if I print it shows the TestPass variable

Avatar
merrick_sd

Community Member, 98 Posts

24 June 2014 at 2:13am

In case it helps anyone else

mysite >_config.php

Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

mysite > code > MysUserDefinedFormExtension.php

<?php
/**
 * An Extension to the UserDefinedForm submission process
 *
 * @package userforms
 * Reasoning: 
 * 1. do not touch source code of userforms module.
 * 2. I want to pass data which is captured via the functions in my  Page_Controller into the SubmittedFormEmail.ss template
 		eg <% loop  RegisteredOffice  %>  $Adddress1  <% end_loop %>
 */
 
 
/*  
Mysite > _config.php  contains the following to register this Extended Class
Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

*/
class MyUserDefinedFormExtension extends Extension {
	
	
	private static $allowed_actions = array(
		'updateEmailData'
	);

	public function updateEmailData($emailData, $attachments){
		
		$attachments = null;
		$registeredoffices = Controller::curr()->RegisteredOffice();
		$footericons = Controller::curr()->getAllFooterIcons();
		$NewData = $emailData;
		$NewData["RegisteredOffice"] = $registeredoffices;
		$NewData["AllFooterIcons"] = $footericons;
		$emailData = $NewData;
		$this->emailData = $NewData;

	return $this->emailData;  //return emailData
		
	}
	
	public function updateEmail($email, $recipient, $emailData){
	
		$emailData = $this->emailData;
		$email->populateTemplate($emailData); 
		
	return;  
		
	}
	
}

also at http://www.sspaste.com/paste/show/53a82f953bf20