.. include:: Images.txt

.. ==================================================
.. FOR YOUR INFORMATION
.. --------------------------------------------------
.. -*- coding: utf-8 -*- with BOM.

.. ==================================================
.. DEFINE SOME TEXTROLES
.. --------------------------------------------------
.. role::   underline
.. role::   typoscript(code)
.. role::   ts(typoscript)
   :class:  typoscript
.. role::   php(code)


userFuncs with cObject
^^^^^^^^^^^^^^^^^^^^^^


Introduction
""""""""""""

It's very easy to extend powermail with cObject Viewhelpers, which are
calling a userFunc from TypoScript.


Where can you use cObject Viewhelpers in powermail
""""""""""""""""""""""""""""""""""""""""""""""""""

- In every HTML Template (and Partial and Layout)

- In every RTE field in flexform

- In the subject, receiver, receiverName, sender, senderName field of
  the flexform


What can you do with this flexibility
"""""""""""""""""""""""""""""""""""""

If you need to call a userFunc after submitting a form or if you need
dynamic text in a view. Some examples:

- Create an extension for transaction keys in powermail

- Manipulate the receiver from a userFunc depending on a field value
  (see below)

- Log something special in a database table after a submit

- etc...


Example to manipulate the receiver of a form
""""""""""""""""""""""""""""""""""""""""""""


With pure TypoScript
~~~~~~~~~~~~~~~~~~~~


Example Call in Flexform Settings
'''''''''''''''''''''''''''''''''

|developer_cobject|

Example call in TypoScript
''''''''''''''''''''''''''

::

   # TypoScript Setup Example for ViewHelper {f:cObject(typoscriptObjectPath:'lib.test')}
   lib.test = TEXT
   lib.test.value = newReceiver@mail.com


With a userFunc on TypoScript depending on a field value
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Example Call in Flexform Settings
'''''''''''''''''''''''''''''''''

|developer_cobject|

Example call in TypoScript
''''''''''''''''''''''''''

::

   # TypoScript Setup Example for ViewHelper {f:cObject(typoscriptObjectPath:'lib.test')}
   includeLibs.manipulatePowermailReceiver = fileadmin/manipulateReceiver.php
   lib.test = USER
   lib.test.userFunc = user_manipulatePowermailReceiver->getEmail

Example PHP Script
''''''''''''''''''

::

   <?php
   class user_manipulatePowermailReceiver
   {

           public function getEmail($content = '', $conf = array())
           {
                   $variables = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_powermail_pi1');
                   $email = 'email1@domain.org';

                   if ($variables['field']['firstname'] === 'Alex') {
                           $email = 'email2@domain.org';
                   }
                   return $email;
           }
   }


Extend FlexForm values
""""""""""""""""""""""


Add new fieldtypes to powermail
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Just use some lines of page TSConfig to add new fieldtypes to
powermail

::

   # Powermail will search for the Partial Newfield.html
   tx_powermail.flexForm.type.addFieldOptions.newfield = New Field Name |img-92|



Add new validationtypes to powermail
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Just use some lines of page TSConfig to add new validationtypes to
powermail

::

   tx_powermail.flexForm.validation.addFieldOptions.newfield = New Validation Name


Add new fe\_user fields for prefill powermail fields
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Just use some lines of page TSConfig to add new fe\_user fields

::

   tx_powermail.flexForm.feUserProperty.addFieldOptions.newfield = New fe_user Property

