Mailformplus (tx mailformplus)
Post processing der Formularfelder
Es gibt einen Hook den man nutzen kann um nach dem Erfolgreichen senden des Formulars die Daten an eigene PHP Skripte zu übergeben. (available since 3.7, thx to Martin Kutschker) Die Standard Funktionen wie Mails versenden oder Datensätze einfügen werden dadurch nicht beeinflusst.
So gehts:
- define a user-function which will do the processing
- create a php file with a class and function which will be called when the form was submitted:
example:
class.tx_myext.php
content:
class tx_myext {
function doit(&$params, &$ref){
......
}
}
Die Variable '$params enthält dann folgende Werte:
$params[config] Variablen die mit TypoScript übermittelt wurden. Z.B.:
saveUserFunc.dummy = hello
kann mit
$params[config][dummy]
angesprochen werden.
$params[data]
enthält alle übermittelten GET und POST Variablen
activate the hook with TypoScript
Als erstes muß man die Funktion definieren die ausgeführt werden soll:
plugin.tx_thmailformplus_pi1.saveUserFunc = EXT:myext/class.tx_myext.php:tx_myext->doit
Man kann auch mit TS Variablen definieren die an das Skript übermittelt werden.
plugin.tx_thmailformplus_pi1.saveUserFunc.dummy = hello
Beispielkonfiguration (alt-brettheim.de)
Version von Ende 2006
### mailformplus konfigurieren ###
#Checkbox 'Zustimmung zur Datenspeicherung' soll nicht in der DB gespeichert werden
plugin.tx_thmailformplus_pi1{
#email_redirect = 547
saveLog.exclude = datenspeicherung
#Speicherung in die Datenbank
saveDB = 1
saveDB.dbkey=uid
saveDB.dbTable = pupKarte
saveDB.fileUpload = fileadmin/pupKarte/
saveDB.fileTypes = jpg,jpeg,png,JPG,JPEG,PNG
saveDB.fileSize = 1000000
#Schlüsselfeld der DB-Tabelle
#Datenbank zuordnung
saveDB.mapping = photo:fileid,geb18:geb18,name:name,vorname:vorname,gebDatum:gebDatum,strasse:strasse,plz:plz,ort:ort,gruppe:gruppe,andereGruppe:andereGruppe,funktionGruppe:funktionGruppe,vabmitglied:vabmitglied,waffentraeger:waffentraeger,dekowaffe:dekowaffe,messer:messer,dolchEinseitig:dolchEinseitig,dolchZweiseitig:dolchZweiseitig,hiebwaffe:hiebwaffe,stichwaffe:stichwaffe,stangenwaffe:stangenwaffe,bogen:bogen,armbrust:armbrust,sonstigeWaffen:sonstigeWaffen,sprengstofferlaubnis:sprengstofferlaubnis,uneingeschraenkt:uneingeschraenkt,sonstigeWaffeArt:sonstigeWaffeArt,behoerde:behoerde,erlaubnisNr:erlaubnisNr,weitereGenehmigung:weitereGenehmigung,mitgliedSeit:mitgliedSeit,weitereVabMitgliedschaft:weitereVabMitgliedschaft,funktionen:funktionen,ehrungen:ehrungen,telefon:telefon,email:email,internWirdBezogen:internWirdBezogen,internErwuenscht:internErwuenscht,sonstiges:sonstiges
#nicht ausgefüllte Felder ausfüllen...
#saveDB.if_is_empty.dekowaffe = ka
#saveDB.debug = 1
Druckversion des Formulars
1. Abschnitt für Printtemplate im mailformplus-HTML-Template:
Beispiel
<!-- ###TEMPLATE_PRINT### begin --> You just filled out the following fields:<br> Name: ###name###<br> Subject: ###subject###<br> <br> you uploaded the following files: ###photo### <br> ###cv### <br> <!-- ###TEMPLATE_PRINT### end -->
2. Eine Userfunktion zum speichern und übergeben der Session Variable
<?PHP
####################################
# example user-function for #
# fetching the PRINT-subtemplate #
####################################
class user_mailformplus_userfunc {
var $cObj;
# this function returns the "PRINT" subtemplate
# if defined in the mailformplus-template
# replaced with the values the user has filled out.
function user_mailformplusPrint($content,$conf) {
$printVersion = $GLOBALS["TSFE"]->fe_user->getKey("ses","th_mailformplus".$GLOBALS["TSFE"]->id);
if ($printVersion) {
return $printVersion;
}
}
}
?>
3. Das zugehörige TS Template
includeLibs.mailformplus_functions = fileadmin/mailformplus_userfunc.inc.php
################################
# outputs the PRINT template below normal page content
# main content
################################
temp.main_content = COA
temp.main_content {
10 < styles.content.get
20 = USER
20.userFunc = user_mailformplus_userfunc->user_mailformplusPrint
}
...
page.10.subparts.CONTENT_MAIN < temp.main_content
Verschiedene Beispiele
JavaScript zur Validierung und Mailformplus
plugin.tx_thmailformplus_pi1.multiPage.2.js (
if((document.Formular.bremsassi1.checked==false) && (document.Formular.bremsassi2.checked==false) && (document.Formular.bremsassi3.checked==false)){
alert('Bremsassistenten - wählen Sie bitte mindestens einen Punkt aus.');
return false;
}
if((document.Formular.esp1.checked==false) && (document.Formular.esp2.checked==false) && (document.Formular.esp3.checked==false) && (document.Formular.esp4.checked==false)){
alert('Elektronisches Stabilitätsprogramm - wählen Sie bitte mindestens einen Punkt aus.');
return false;
}
if((document.Formular.spurassi1.checked==false) && (document.Formular.spurassi2.checked==false) && (document.Formular.spurassi3.checked==false)){
alert('Spurassistent - wählen Sie bitte mindestens einen Punkt aus.');
return false;
}
if((document.Formular.acc1.checked==false) && (document.Formular.acc2.checked==false) && (document.Formular.acc3.checked==false)){
alert('Automatischer Abstandsregeltempomat - wählen Sie bitte mindestens einen Punkt aus.');
return false;
}
if((document.Formular.nvs1.checked==false) && (document.Formular.nvs2.checked==false) && (document.Formular.nvs3.checked==false)){
alert('Nachtsichtassistent - wählen Sie bitte mindestens einen Punkt aus.');
return false;
}
)
Beispiel mit verschiedenen Validierungen und Upload-Feld
plugin.tx_thmailformplus_pi1{
#email_requiredfields = email,name
#email_attachment = ###fsvorne###
#email_sendtouser >
#debug = 1
}
plugin.tx_thmailformplus_pi1.fieldConf {
name {
errorCheck = required
}
strasse {
errorCheck = required
}
plz_ort {
errorCheck = required
}
land {
errorCheck = required
}
telefon {
errorCheck = required
}
mail {
errorCheck = email,required
}
kennzeichen {
errorCheck = required
}
hersteller {
errorCheck = required
}
fahrzeugnummer {
errorCheck = required
}
art {
errorCheck = required
}
antrieb {
errorCheck = required
}
gewicht {
errorCheck = required
}
ezul {
errorCheck = date:dd.mm.yyyy
errorCheck.dateRange.min = 01.01.1900
errorCheck.dateRange.max = 31.12.2010
}
fsvorne {
errorCheck = required
numberOfAllowedFiles = 1
fileTypes = pdf,doc,jpg,gif,png
fileSize = 1500000
fileUpload = fileadmin/plakette/uploads/
errorText = <li>Das Feld Fahrzeugschein (Vorderseite) ist nicht korrekt ausgefüllt</li><br/>
uploadedFiles {
template = ###fileName### ###fileSize### <br />
wrap = <div>Vorderseite: |</div>
}
uploadedFiles.mail {
plainTemplate = ###filePath### ###fileName###
HTMLTemplate = <a href="###filePath######fileName###">###fileName###</a><br/>
plainWrap = |
HTMLWrap = |
}
}
fshinten {
numberOfAllowedFiles = 1
fileTypes = pdf,doc,jpg,gif,png
fileSize = 1500000
fileUpload = fileadmin/plakette/uploads/
errorText = <li>Das Feld Fahrzeugschein (Rückseite) ist nicht korrekt ausgefüllt</li><br/>
uploadedFiles {
template = ###fileName### ###fileSize### <br />
wrap = <div>Rückseite: |</div>
}
uploadedFiles.mail {
plainTemplate = ###filePath######fileName###
HTMLTemplate = <a href="###filePath######fileName###">###fileName###</a><br/>
plainWrap = |file end
HTMLWrap = |
}
}
}
[PIDinRootline=305,307,309,311]
plugin.tx_thmailformplus_pi1.fieldConf.fsvorne{
errorText = <li>Please complete the vehicle certification (front)</li><br/>
uploadedFiles {
template = ###fileName### ###fileSize### <br />
wrap = <div>Front: |</div>
}
}
plugin.tx_thmailformplus_pi1.fieldConf.fshinten{
errorText = <li>Please complete the vehicle certification (back)</li><br/>
uploadedFiles {
template = ###fileName### ###fileSize### <br />
wrap = <div>Back: |</div>
}
}
[global]