Ok, ich habs selbst gemerkt: Ich muss natürlich im Mail-Header text/html als content-type angeben...
Inzwischen läuft alles bestens und ich wollte euch meine Anpassungen nicht vorenthalten - vielleicht kann es ja noch jemand brauchen.
Aufbauend auf die Version von Enigma auf Seite 12 habe ich noch ein paar Ergänzungen eingefügt, nämlich:
- - neben dem Empfänger können jetzt auch cc und bcc eingetragen werden
- - bei Bedarf kann eine Bestätigungsmail an den Absender des Formulars versandt werden
- - bei Bedarf werden alle Werte in eine CSV-Datei geschrieben
- - die Fehlermeldungen können nun in alle benötigten Sprachen übersetzt werden
- - die Emails können jetzt wahlweise als html- oder textmails versandt werden. In beiden Fällen wird die Ausgabe über ein Template gesteuert, welches im Reiter "Modul-Templates" angelegt werden kann. Die Template-Variablen (ich nenne sie mal so) können nach dem Schema {formularfeldname} beliebig eingesetzt und formatiert werden. Die Möglichkeit, einen Text am Anfang sowie am Ende der Mail einzufügen (aus Enigmas Version) wird damit überflüssig; ich habe sie deswegen wieder entfernt.
Ein Template könnte dann z.B. so aussehen:
Code: Alles auswählen
<html>
<head>
<title>Kontakt by Contenido</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;
}
-->
</style>
</head>
<body>
<table width="600" cellspacing="0" cellpadding="5" border="0" bgcolor="c8d1d3">
<tr>
<td width="580" bgcolor="#FFFFFF"><p><strong>Kontaktformular</strong></p>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="34%" valign="top">Name</font></td>
<td width="66%">{Vorname} {Nachname}</td>
</tr>
<tr>
<td valign="top"> Land</td>
<td>{Land}</td>
</tr>
<tr>
<td valign="top">Mitteilung</td>
<td>{Bemerkungen}</td>
</tr>
<tr>
<td valign="top">email</td>
<td>{email}</td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>Diese
Nachricht wurde automatisch erzeugt.</b></font></td>
</tr>
</table>
</body>
</html>
Und hier das geänderte Modul
Input:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************/
?>
<table cellspacing="0" cellpadding="10" border="0">
<!-- <tr style="vertical-align: top;"> -->
<tr>
<td class="text_medium" style="vertical-align: top;">Empfänger-E-Mail-Adresse (alias@mydomain.com):</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Cc (alias@mydomain.com):</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[27]" value="CMS_VALUE[27]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Bcc (alias@mydomain.com):</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[28]" value="CMS_VALUE[28]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Betreff:</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Absender-E-Mail-Adresse (alias@mydomain.com):<br>
(frei lassen, wenn E-Mail-Adresse des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Absendername (z. B. Vorname Name):<br>
(frei lassen, wenn Name des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[3]" value="CMS_VALUE[3]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Hintergrundfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[4]" value="CMS_VALUE[4]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Rahmenfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[5]" value="CMS_VALUE[5]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Schriftfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[6]" value="CMS_VALUE[6]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Fehlermeldungen anzeigen bei Fehlern:</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[7]" value="yes"<?php if ('yes' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[7]" value="no"<?php if ('no' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
CSS-Schriftformatierungs-Attribute der Fehlermeldungen<br>
(z. B. style="font-weight: bold; color: #FF0000;" oder class="errorMessage"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[8]" value="CMS_VALUE[8]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Übermittelte Daten auf Bestätigungsseite anzeigen:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[10]" value="yes"<?php if ('yes' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[10]" value="no"<?php if ('no' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabelle<br>
(z. B. style="border: none;" oder class="dataTable"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[11]" value="CMS_VALUE[11]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[12]" value="CMS_VALUE[12]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabellenzeilen<br>
(z. B. style="height: 25px;" oder class="tableRow"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[13]" value="CMS_VALUE[13]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[14]" value="CMS_VALUE[14]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für linke Tabellenzellen (<th>)<br>
(z. B. style="padding-right: 20px; padding-bottom: 15px;" oder class="leftTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[15]" value="CMS_VALUE[15]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[16]" value="CMS_VALUE[16]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für rechte Tabellenzellen (<td>)<br>
(z. B. style="padding-bottom: 15px;" oder class="rightTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[17]" value="CMS_VALUE[17]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[18]" value="CMS_VALUE[18]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Mailformat:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[21]" value="html"<?php if ('html' == "CMS_VALUE[21]") { echo ' checked="checked"'; } ?>>
html<br>
<input type="radio" name="CMS_VAR[21]" value="plain"<?php if ('plain' == "CMS_VALUE[21]") { echo ' checked="checked"'; } ?>>
text
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Name des Email-Templates<br />
(muss sich im Ordner der Modul-Templates befinden)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[23]" value="CMS_VALUE[23]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsmail an Absender:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[22]" value="yes"<?php if ('yes' == "CMS_VALUE[22]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[22]" value="no"<?php if ('no' == "CMS_VALUE[22]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Name des Templates für die Bestätigungsmail<br />
(muss sich im Ordner der Modul-Templates befinden)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[24]" value="CMS_VALUE[24]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Daten in CSV-Datei schreiben:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[25]" value="yes"<?php if ('yes' == "CMS_VALUE[25]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[25]" value="no"<?php if ('no' == "CMS_VALUE[25]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Name der CSV-Datei:
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[26]" value="CMS_VALUE[26]" size="30" /></td>
</tr>
</table>
<?php
Und der Output:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************
*Slightly modified by falk07 20-04-2008
************************************************/
cInclude('classes', 'class.template.php');
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
$mailHeader = "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
$mailHeader .= "Reply-To: {$this->email['from']['email']}\n";
$mailHeader .= "X-Mailer: PHP/".phpversion()."\n";
if('' != $this->email['ccopy']) { $mailHeader .= "Cc: ".$this->email['ccopy']."\n"; }
if('' != $this->email['bccopy']) { $mailHeader .= "Bcc: ".$this->email['bccopy']."\n"; }
($this->email['format'] == "html") ? ($mailHeader .= "Content-Type: text/html") : ($mailHeader .= "Content-Type: text/plain");
$this->aufdroeseln($this->suppress('sent', 'submit', 'submit_form', 'form_submit', 'submit_button', 'button_submit'));
$this->generateEmailMessage($this->email['tmpl']);
mail($this->email['adresses'], $this->email['subject'], $this->email['message'], $mailHeader);
//Bestätigungsmail an den Absender
if ($this->email['confirm'] == "yes"){
$mailHeader = "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
$mailHeader .= "Reply-To: {$this->email['from']['email']}\n";
$mailHeader .= "X-Mailer: PHP/".phpversion()."\n";
($this->email['format'] == "html") ? ($mailHeader .= "Content-Type: text/html") : ($mailHeader .= "Content-Type: text/plain");
$this->generateEmailMessage($this->email['cfTmpl']);
mail($this->email['sender'], $this->email['subject'], $this->email['message'], $mailHeader);
}
}
// PRIVATE
function aufdroeseln($aufzudroeseln, $prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value, $key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
//***************Geändert von falk07**********************
function generateEmailMessage($tpl_name) {
if (!is_object($tpl)) {
$tpl = new Template;
}
if ($this->aufgedroeselt) {
foreach ($this->aufgedroeselt as $key => $value) {
$tpl->set("s", $key, $value);
}
$this->email['message'] = $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/".$tpl_name, 1);
}
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key, $suppress) === false) {
$fields[$key] = $value;
}
}
return $fields;
}
//********************Ergänzungen von falk07***************
// PUBLIC
function setEmailFormat($format) {
$this->email['format'] = $format;
}
// PUBLIC
function setEmailTemplate($tmpl) {
$this->email['tmpl'] = $tmpl;
}
// PUBLIC
function setEmailConfirm($confirm) {
$this->email['confirm'] = $confirm;
}
// PUBLIC
function setEmailConfirmTemplate($cfTmpl) {
$this->email['cfTmpl'] = $cfTmpl;
}
// PUBLIC
function setCSVFile($csvYesNo) {
$this->form['csvYesNo'] = $csvYesNo;
}
// PUBLIC
function setCSVFileName($fileName) {
$this->form['csvFile'] = $fileName;
}
// PUBLIC
function setEmailSender($address) {
$this->email['sender'] = $address;
}
// PUBLIC
function setEmailCC($address) {
$this->email['ccopy'] = $address;
}
// PUBLIC
function setEmailBCC($address) {
$this->email['bccopy'] = $address;
}
//****************Ergänzungen von falk07 Ende*******************
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= $email;
} else {
$this->email['adresses'] .= ', '.$email;
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email, $name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorBackgroundError'] = $color;
}
// PUBLIC
function setBorderError($color) {
$this->form['colorBorderError'] = $color;
}
// PUBLIC
function setFontError($color) {
$this->form['colorFontError'] = $color;
}
// PUBLIC
function setMessageError($activate) {
$this->form['showErrorMessage'] = (trim($activate) == 'yes');
}
// PUBLIC
function setMessageCssClassError($cssClass) {
$this->form['errorMessageCssClass'] = trim($cssClass);
}
// PUBLIC
function setMessageCssStyleError($cssStyle) {
$this->form['errorMessageCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setShowDataStatus($status) {
$this->form['showData'] = (trim($status) == 'yes');
}
// PUBLIC
function setConfirmationDataTableCssClass($cssClass) {
$this->form['ConfirmationDataTableCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTableCssStyle($cssStyle) {
$this->form['ConfirmationDataTableCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTrCssClass($cssClass) {
$this->form['ConfirmationDataTrCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTrCssStyle($cssStyle) {
$this->form['ConfirmationDataTrCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataThCssClass($cssClass) {
$this->form['ConfirmationDataThCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataThCssStyle($cssStyle) {
$this->form['ConfirmationDataThCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTdCssClass($cssClass) {
$this->form['ConfirmationDataTdCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTdCssStyle($cssStyle) {
$this->form['ConfirmationDataTdCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setMailText1($text) {
$text = trim($text);
if ('' != $text) {
$text .= CCS_LF.CCS_LF.CCS_LF.CCS_LF;
}
$this->form['mailText1'] = $text;
}
// PUBLIC
function setMailText2($text) {
$text = trim($text);
if ('' != $text) {
$text = CCS_LF.CCS_LF.$text;
}
$this->form['mailText2'] = $text;
}
/*
// PRIVATE
function getActualErrorMessage() {
return $this->form['actualErrorMessage'];
}
*/
/* CCS begin */
// Funktion ersetzt gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$attributes = split(';', trim($felder[$i]));
foreach ($attributes as $attribut) {
$namewert = split(':', trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
*/
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$tempField = trim(html_entity_decode($felder[$i]));
$container = "";
if (preg_match_all('/("[^"]+")/i', $tempField, $matches)) {
$x = 0;
foreach ($matches[0] as $match) {
$x++;
$tempField = str_replace($match, "###".$x."###", $tempField);
$container[$x] = str_replace('"', '', $match);
}
}
$attributes = split(';', $tempField);
foreach ($attributes as $attribut) {
if ($attribut != "") {
$namewert = split(':', trim($attribut));
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
$namewert[1] = $container[intval($match[1])];
}
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
}
return $feld;
}
/* CCS end */
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="" method="post">';
echo '<input type="hidden" name="sent" value="true" />';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation(&$formular);
$formular = split('###', $formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"], $sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute, $sent) {
$parameter = 'name="'.$attribute['name'].'"';
if (!empty($attribute['id'])) {
$parameter .= ' id="'.$attribute['id'].'"';
$ccs_id_param = 'id="'.$attribute['id'].'"';
}
/* CCS begin */
// geändert gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
if ($sent && !$this->formularFeldKorrekt(&$attribute))
$style = "style=\"background-color:{$this->form['colorError']};\"";
*/
$style = $attribute['style'];
if ($sent && !$this->formularFeldKorrekt(&$attribute)) {
if (!empty($this->form['colorBackgroundError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'background-color: '.$this->form['colorBackgroundError'].';';
}
if (!empty($this->form['colorBorderError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'border: 3px solid '.$this->form['colorBorderError'].';';
}
if (!empty($this->form['colorFontError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'color: '.$this->form['colorFontError'].';';
}
}
if ('' != $style) {
$style = 'style="'.$style.'"';
}
if (!empty($attribute['class'])) {
$style = 'class="'.$attribute['class'].'" '.$style;
}
/* CCS end */
switch ($attribute['type']) {
case 'select':
case 'password':
/* CCS begin */
// bereits unten enthalten (würde sonst doppelt erzeugt):
// case 'text':
/* CCS end */
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
if (!empty($attribute['value']))
$value = $attribute['value'];
if (!empty($_REQUEST["{$attribute['name']}"]))
$value = $_REQUEST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo '<input type="text" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'password':
echo '<input type="password" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'textarea':
echo '<textarea name="'.$attribute['name'].'" '.$ccs_id_param.' cols="'; // $parameter?
echo (empty($attribute['cols'])) ? ('20') : ($attribute['cols']);
echo '" rows="';
echo (empty($attribute['rows'])) ? ('2') : ($attribute['rows']);
echo '" '.$style.'>'.$value.'</textarea>';
// wrap="virtual" nicht valide!
break;
case 'select':
echo CCS_LF.'<select '.$parameter.' '.$style.'>'.CCS_LF;
for ($i = 0; $i < count($attribute['option']); $i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option value="'.$attribute['optionvalue'][$i].'">'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
} else {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option>'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
}
}
echo '</select>'.CCS_LF;
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]', $attribute['name']);
if ($sent) {
if ($_REQUEST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
}
break;
case 'radio':
if (!empty($_REQUEST["{$attribute['name']}"])) {
if ($_REQUEST["{$attribute['name']}"] == $attribute['value']) {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" />';
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" />';
}
}
break;
case 'datetime':
echo '<input type="hidden" name="date_time" id="date_time" value="gesendet am '.date('d.m.Y, H:i').' Uhr" />';
break;
}
if ($this->form['showErrorMessage'] and ('' != $this->form['actualErrorMessage'])) {
echo '<br />'.CCS_LF;
$cssAttributes = '';
if ('' != $this->form['errorMessageCssClass']) {
$cssAttributes .= ' class="'.$this->form['errorMessageCssClass'].'"';
}
if ('' != $this->form['errorMessageCssStyle']) {
$cssAttributes .= ' style="'.$this->form['errorMessageCssStyle'].'"';
}
echo '<span'.$cssAttributes.'">'.$this->form['actualErrorMessage'].'</span>';
}
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation(&$formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt(&$feld))
return false;
}
return true;
}
// PRIVATE
function add2ConfirmationPage($key, $value) {
$tr_style = '';
if ('' != $this->form['ConfirmationDataTrCssClass']) {
$tr_style .= ' class="'.$this->form['ConfirmationDataTrCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTrCssStyle']) {
$tr_style .= ' style="'.$this->form['ConfirmationDataTrCssStyle'].'"';
}
$th_style = '';
if ('' != $this->form['ConfirmationDataThCssClass']) {
$th_style .= ' class="'.$this->form['ConfirmationDataThCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataThCssStyle']) {
$th_style .= ' style="'.$this->form['ConfirmationDataThCssStyle'].'"';
}
$td_style = '';
if ('' != $this->form['ConfirmationDataTdCssClass']) {
$td_style .= ' class="'.$this->form['ConfirmationDataTdCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTdCssStyle']) {
$td_style .= ' style="'.$this->form['ConfirmationDataTdCssStyle'].'"';
}
$this->confirmationDataTable .= ' <tr'.$tr_style.'>'.CCS_LF;
$this->confirmationDataTable .= ' <th'.$th_style.'>'.$key.':</th>'.CCS_LF;
$this->confirmationDataTable .= ' <td'.$td_style.'>'.$value.'</td>'.CCS_LF;
$this->confirmationDataTable .= ' </tr>'.CCS_LF;
}
// PRIVATE
function prepareConfirmationDataTable() {
$this->confirmationDataTable = '';
if ($this->aufgedroeselt) {
$table_style = '';
if ('' != $this->form['ConfirmationDataTableCssClass']) {
$table_style .= ' class="'.$this->form['ConfirmationDataTableCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTableCssStyle']) {
$table_style .= ' style="'.$this->form['ConfirmationDataTableCssStyle'].'"';
}
$this->confirmationDataTable .= '<table'.$table_style.'>'.CCS_LF;
foreach ($this->aufgedroeselt as $key => $value) {
if ('date_time' != $key) {
$this->add2ConfirmationPage($key, $value);
}
}
$this->confirmationDataTable .= '</table>'.CCS_LF;
}
}
// PRIVATE
function success() {
$this->sendEmail();
if (false !== strpos($this->form['answer'], '###sent_data###')) {
if ($this->form['showData']) {
$this->prepareConfirmationDataTable();
$this->form['answer'] = str_replace('###sent_data###', $this->confirmationDataTable, $this->form['answer']);
} else {
$this->form['answer'] = str_replace('###sent_data###', '', $this->form['answer']);
}
}
echo $this->form['answer'];
// *************Ergänzung von falk07: schreiben der CSV-Datei******************
if ($this->aufgedroeselt && $this->form['csvYesNo'] == "yes") {
$daten = fopen ($this->form['csvFile'], "a");
flock($daten,LOCK_EX);
foreach ($this->aufgedroeselt as $key => $value) {
fwrite($daten, "$value,");
}
fwrite($daten,"\n");
flock($daten,LOCK_UN);
fclose($daten);
}
//***************bis hier******************************
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
$this->form['actualErrorMessage'] = '';
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte füllen Sie dieses Feld aus!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'given_options' && !empty($feld['possible_values'])) {
$possibleValues = explode('|', $feld['possible_values']);
foreach ($possibleValues as $key => $val) {
$possibleValues[$key] = trim($val);
}
if (!in_array($_POST["{$feld['name']}"], $possibleValues)) {
$this->form['actualErrorMessage'] = mi18n("Es sind ausschließlich folgende Werte erlaubt (ohne die Anführungszeichen): ");
$i = 0;
foreach ($possibleValues as $val) {
$i++;
if (1 != $i) {
$this->form['actualErrorMessage'] .= ', ';
}
$this->form['actualErrorMessage'] .= '"'.$val.'"';
}
return false;
}
}
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) {
return true;
}
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüßéàèâêîça-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte verwenden Sie ausschließlich Buchstaben, Ziffern und den Bindestrich!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüßéàèâêîça-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'textwithlinefeed' && !eregi("^[ \r\n.,;!?()öäüßéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) {
return false;
$this->form['actualErrorMessage'] = mi18n("Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()");
}
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie ausschließlich Ziffern ein!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie ausschließlich Ziffern und ggf. einen Dezimalpunkt (kein Komma!) ein!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie ein Datum in der Form TT.MM.YYYY ein!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie eine gültige eMail-Adresse ein!");
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'phone' && !eregi("^([+][ ]?[1-9][0-9][ ]?[-]?[ ]?|[(]?[0][ ]?)[0-9]{2,4}[-)/ ]?[ ]?[1-9][-0-9 ]{3,16}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie eine gültige Telefonnummer ein!");
return false;
}
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie eine Zahl ein, die größer oder gleich ".$feld['minvalue']." ist!");
return false;
}
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
$this->form['actualErrorMessage'] = mi18n("Bitte geben Sie eine Zahl ein, die kleiner oder gleich ".$feld['maxvalue']." ist!");
return false;
}
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) {
$this->form['actualErrorMessage'] = mi18n("Die Eingabe muss mindestens ".$feld['minlength']." Zeichen lang sein!");
return false;
}
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
$this->form['actualErrorMessage'] = mi18n("Die Eingabe darf höchstens ".$feld['maxlength']." Zeichen lang sein!");
return false;
}
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
define('CCS_LF', "\n");
if ($edit) {
echo "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular einzugeben sowie der Text, der zusammen mit dem Formular ausgegeben werden soll:</p>";
echo "CMS_HTML[0]";
echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verarbeitet wurde:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
if ('' == trim("CMS_VALUE[2]")) {
$ccs_sender_email = $_POST['email'];
} else {
$ccs_sender_email = trim("CMS_VALUE[2]");
}
if ('' == trim("CMS_VALUE[3]")) {
$ccs_sender_name = $_POST['Vorname'].' '.$_POST['Nachname'];
} else {
$ccs_sender_name = trim("CMS_VALUE[3]");
}
$formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setBorderError("CMS_VALUE[5]");
$formular->setFontError("CMS_VALUE[6]");
$formular->setMessageError("CMS_VALUE[7]");
$formular->setMessageCssClassError("CMS_VALUE[8]");
$formular->setMessageCssStyleError("CMS_VALUE[9]");
$formular->setShowDataStatus("CMS_VALUE[10]");
$formular->setConfirmationDataTableCssClass("CMS_VALUE[11]");
$formular->setConfirmationDataTableCssStyle("CMS_VALUE[12]");
$formular->setConfirmationDataTrCssClass("CMS_VALUE[13]");
$formular->setConfirmationDataTrCssStyle("CMS_VALUE[14]");
$formular->setConfirmationDataThCssClass("CMS_VALUE[15]");
$formular->setConfirmationDataThCssStyle("CMS_VALUE[16]");
$formular->setConfirmationDataTdCssClass("CMS_VALUE[17]");
$formular->setConfirmationDataTdCssStyle("CMS_VALUE[18]");
$formular->setEmailFormat("CMS_VALUE[21]");
$formular->setEmailTemplate("CMS_VALUE[23]");
$formular->setEmailConfirm("CMS_VALUE[22]");
$formular->setEmailConfirmTemplate("CMS_VALUE[24]");
$formular->setEmailSender($_POST['email']);
$formular->setCSVFile("CMS_VALUE[25]");
$formular->setCSVFileName("CMS_VALUE[26]");
$formular->setEmailCC("CMS_VALUE[27]");
$formular->setEmailBCC("CMS_VALUE[28]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>
Gruß,
falk07