neues formularmodul :: w3concepts.form.v1

meta02
Beiträge: 19
Registriert: Fr 6. Mai 2005, 16:23
Wohnort: Berlin
Kontaktdaten:

Beitrag von meta02 »

@OAA

Tausend Dank! Funzt hervorragend. Hatte ich überlesen.

Gruß

Markus
JSommer
Beiträge: 324
Registriert: Fr 5. Sep 2003, 12:32
Wohnort: 192.168.0.11
Kontaktdaten:

Beitrag von JSommer »

schwitz. jetzt hab ich die 12 seiten durchgeackert aber leider keine lösung für mein problem gefunden. ich hab das formular in die aktuelle cvs version integriert - alles kein problem, das einzige was ist: in dem array, wo eigentlich das stehen sollte, was man beim absenden zu sehen bekommt, steht der inhalt der text moduls drin - also der eigentlich seitencontent ... was mach ich da falsch? ändere ich den inhalt im formularcontainer, ändert sich auch der inhalt in container3 :-) also wo eben das text-modul drinsteht... any tipps?
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

JSommer hat geschrieben:das einzige was ist: in dem array, wo eigentlich das stehen sollte, was man beim absenden zu sehen bekommt, steht der inhalt der text moduls drin - also der eigentlich seitencontent ... was mach ich da falsch? ändere ich den inhalt im formularcontainer, ändert sich auch der inhalt in container3 :-) also wo eben das text-modul drinsteht... any tipps?
Das hoert sich danach an, als ob in zwei Modulen auf einer Seite dieselben Variablennamen benutzt werden, z.B. 2x CMS_HTML[1]. Du musst bei einem der Module den Namen aendern, also in Klammern eine andere Zahl benutzen.
project gonzo
Beiträge: 115
Registriert: Di 25. Nov 2003, 16:47
Kontaktdaten:

Beitrag von project gonzo »

Hallo zusammen...
Erstmal muss ich sagen es ist ein Super Modul!

Aber ich Habe ein riesen Problem...
Bekomme wenn ich auf senden klicke immer ne Fehlermeldung
Warning: Invalid argument supplied for foreach() in /var/www/weba16/html/home/cms/front_content.php(567) : eval()'d code on line 96
Warum? versteh das nicht...
Wenn ich meine Mails abrufe bekomme ich zwar ne Mail, aber ohne den Text den ich eingegeben habe!
Stehe momentan echt im Dunkeln!
project gonzo
Beiträge: 115
Registriert: Di 25. Nov 2003, 16:47
Kontaktdaten:

Beitrag von project gonzo »

so, ich nochmal
Habe bei mir jetzt nochmal Contenido 4.4.4 drauf gemacht.
Da bekomme ich die oben erwähnte Fehlermeldung nicht.

Allerdings habe ich immernoch das problem das zwar ne Mail verschickt wird, allerdings ohne Inhalt!

Habe auch das auf Seite 1 von Kummer beschreibene Beispielformular benutzt....
Kann mir da jemand helfen???
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Formular Modul: Daten per Mail plus Option DB?

Beitrag von sabsab »

tach zusammen:

an folgender stelle wurde über das Thema schon geschrieben:

edit (falscher link): http://contenido.org/forum/viewtopic.ph ... &start=135
(s. frage david78)

edit (richtiger link): http://contenido.org/forum/viewtopic.ph ... trag+in+db
bezug frage alter schwede

beide möglichkeiten (mail oder eintrag zb. in eine txt-datei) funktionieren bei mir.
doch nun das anliegen: kann ich beide möglichkeiten kombinieren?
wie müsste der code dazu aussehen?

danke und gruss
sabsab

--
version: 4.4.5
Zuletzt geändert von sabsab am Sa 18. Jun 2005, 09:52, insgesamt 1-mal geändert.
project gonzo
Beiträge: 115
Registriert: Di 25. Nov 2003, 16:47
Kontaktdaten:

Beitrag von project gonzo »

hatte mir den link von dir schonmal durchgelesen, aber hat mir nicht wirklich geholfen! daher hatte ich das hier nochmal reigeschrieben.
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

oh, sorry (das ging ja schnell), ist mir auch gerade aufgefallen (fehler beim copy+paste):
meine frage sollte sich eigentlich auf die frage von alter schwede beziehen:

http://contenido.org/forum/viewtopic.ph ... trag+in+db

hier der code:

function success() {

$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);

}

}

$formular = new localSpeichern();
$formular->process();

wie kann hier noch zusätzlich der e-mail versand eingebaut werden?

gruss
sabsab
roverman
Beiträge: 10
Registriert: Mi 13. Apr 2005, 11:34
Kontaktdaten:

Beitrag von roverman »

Hallo,
Ich habe probleme mit der validierung von email adressdaten.

Es ist nicht möglich eine emailadresse in form
hans-mueller@irgend-etwas.de oder
hans_mueller@irgend_etwas.de oder

einzugeben.


es hat sicherlich mit

Code: Alles auswählen

   if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false; 
zu tun aber ich habe immer stress mit dieser syntax :)

Danke für eure hilfe

Remco
Buckem
Beiträge: 1
Registriert: Di 24. Mai 2005, 17:07
Wohnort: Hamburg
Kontaktdaten:

input type image

Beitrag von Buckem »

Hi Community!

Cooles Formular! 8)


Ich hatte ein kleines Problem: und zwar wollte ich ein image als Absende-Button verwenden. Das funktioniert zwar, nur leider übermittelt das Script dann die Koordinaten der Stelle, wo man den Button gedrückt hatte in Form eines x und y-Wertes...

Ich habe mir nun so geholfen:

Code: Alles auswählen

function add2Message($key,$value) {
   if ($key == 'y' or $key == 'x'){
   		$this->email['message'] .= "";
   }
   else{
		  if (strlen($key) > 25 OR strlen($value) > 54) {
			 $this->email['message'] .= "$key\n$value\n";
		  } 
		  else {
		  $this->email['message'] .= $key;
		  $this->email['message'] .= str_repeat(' ',25-strlen($key));
		  $this->email['message'] .= "$value\n";
		  }
   		}
	}
wobei das Augenmerk auf den 1. if-Zweig zu richten ist. Geht vielleicht auch eleganter, aber ich habe keine Zeit, keine Zeit ;)

tschöö
-------------------------------------------------------
wer Rechtshreibfhler findet, darf sie gerne behalten....
andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej »

Ein hervorragendes Modul. Ich vermisse bei diesem jedoch etwas. Wenn mich ein Kunde anschreibt, wird leider das Datum und die Uhrzeit der gesendeten Anfrage nicht angezeigt. Was ich etwas doof finde.

Wie kann dieses am besten gelöst werden?
dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio »

Klasse Modul!
Eine kleine Sache wäre da allerdings:
Betrifft XHTML
Wie kann ich die jeweilige Bezeichner-ID in die Tags bringen ?

Es wurde zwar schonmal angesprochen,
irgendwie konnte ich da bisher noch keine Antwort drauf finden..
Kann jemand helfen ?

Nochwas: Wie schreibe ich ein radio-input checked="checked" ?

Edit:
Hab mir bereits selbst geholfen..
Einfach das doppelte size im Output durch id ersetzt ;-)

Code: Alles auswählen

      switch ($attribute['type']) {
         case 'select':
         case 'password':
         case 'text':
         case 'checkbox':
         case 'radio':
         case 'textarea':
            if (!empty($attribute['id'])) $parameter .= " id=\"{$attribute['id']}\"";
            break;
      }
Die Sache mit dem selected:true; habe ich nach studieren der Posts hier selbst rausgefunden. Steht glaube ich nicht in der Anleitung..
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

Hallo,

ich habe mich mit dem Modul mal etwas intensiver auseinandergesetzt und sowohl einige der bereits hier besprochenen Dinge eingefügt als auch ein paar neue. Vielleicht hilft's ja dem einen oder anderen weiter.

Bereits hier im Thread gelöst und mehr oder weniger übernommen:
  • - Erweiterung von Emergence bzgl. doppelter Anführungszeichen, CSS-Klassen und -Styles (S. 11 im Thread)
    Dabei habe ich

    Code: Alles auswählen

                if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
                  $namewert[1] = $container[$match[1]];
                }
    in

    Code: Alles auswählen

                if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
                  $namewert[1] = $container[intval($match[1])];
                }
    geändert, da Contenido sonst dezent mit dem roten Pünktchen meckert (funktionieren tut's auch ohne die Änderung).

    Es können also bei der Formulardefinition z. B.

    class:myCssClass
    style:"width: 120px; height: 50px;"

    verwendet werden.


    - doppelte "size"-Angabe entfernt (S. 9, etwas anders gelöst)


    - Validierungtyp phone für Telefonnummern hinzugefügt (S. 6)


    - Namen und E-Mail-Adresse des Formularbenutzers verwenden anstatt der vorkonfigurierten (S. 10). Ich habe dies so gelöst, dass die vorkonfigurierten Werte verwendet werden, wenn sie eingetragen wurden, sonst die des Formularbenutzers. Im Formular sollten die Eingabefelder "E-Mail-Adresse", "Vorname" und "Nachname" heißen; ansonsten müssen die Werte im Ausgabe-Skript des Moduls angepasst werden, und zwar fast ganz unten, vor

    Code: Alles auswählen

    $formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);

    - Der Linefeed-Fix ist natürlich auch enthalten (Validierungstyp textwithlinefeed für Textareas), ebenso "mod2" für dynamische Feldvorbelegungen (beides S. 4).
Im Thread gewünscht, aber nicht oder nur teilweise gelöst:
  • - Zunächst habe ich die Validierung einer Liste von festgelegten Optionen umgesetzt, die häufiger gewünscht wurde (S. 6). Dazu habe ich den Validierungstyp given_options hinzugefügt. Zusätzlich muss dann die Option possible_values mit einer durch das Pipe-Symbol separierten Liste der möglichen Optionen angegeben werden. Beispiel:

    valid:given_options; possible_values:Frau|Herr;


    - Übergabe des Absendezeitpunkts (Datum/Zeit) in der generierten Mail (S. 12). Dafür ist der neue Typ datetime anzugeben (type:datetime;). Weitere Angaben sind nicht nötig (und auch ohne Effekt). Es wird ein verstecktes Formularfeld angelegt, was für die Übergabe an die Mail genügt. Die Zeit wird beim Senden der Mail noch einmal aktualisiert.


    - Es lassen sich in der Konfiguration des Moduls nun Fehlermeldungen (S. 8 ) ein- und ausschalten und auch per CSS formatieren (class / style). Die Meldungen erscheinen jeweils unter dem fehlerhaft ausgefüllten Feld. Die Meldungen lassen sich in der Funktion (bzw. Methode) formularFeldKorrekt() anpassen.


    - Wer möchte, kann die per Formular übergebenen Werte nun auch auf der Bestätigungsseite ausgeben (S. 7). Dafür muss im Artikel im zweiten Feld (unter "Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verarbeitet wurde:") an geeigneter Stelle

    ###sent_data###

    eingetragen werden. Wurde in der Modul-Konfiguration gewählt, dass die Werte angezeigt werden, wird der Eintrag durch eine entsprechende Tabelle ersetzt, sonst durch den leeren String. Die Tabelle lässt sich in der Modul-Konfiguration per CSS formatieren. Die linke Spalte besteht aus <th>-Zellen, die rechte aus <td>-Zellen. Der Absende-Zeitpunkt wird nicht angezeigt, auch wenn diese Funktion für die Mail eingefügt wurde.
Eigene Erweiterungen:
  • - In der Modul-Konfiguration können zwei Texte eingegeben werden, die vor und nach der Datenliste in der Mail erscheinen.


    - Ich habe die Formatierung der Mail etwas geändert, da die meisten wohl eher Proportionalschrift im Mail-Client angezeigt bekommen. Ich habe daher die eigentlichen Daten jeweils eine Zeile unter dem Feldnamen angeordnet, dafür dann definitiv linksbündig untereinander. Das wird nicht jedermanns Sache sein - ggf. in der Funktion add2Message() wieder ändern (ich habe den alten Code nur auskommentiert).


    - Noch ein paar kleinere Dinge:

    Das Datumsformat habe ich auf vierstellige Jahreszahlen geändert.

    In der Funktion formularFeldKorrekt() habe ich das ß als erlaubtes Zeichen hinzugefügt - es wundert mich, dass das noch niemandem aufgefallen ist (oder alle haben's selbst geändert).

    In der Funktion sendEmail() habe ich weitere Submit-Button-Namen eingetragen. Mit Hilfe der Funktion suppress() wird verhindert, dass auch der jeweilige Submit-Button mit in der Mail auftaucht. Wer einen anderen Namen bevorzugt, kann ihn hier in die Liste eintragen.

    XHTML-Validierung: Der W3C-Validierer meckerte über das groß geschriebene POST in <form action="" method="POST"> (Funktion formularAusgabe() und den Parameter wrap in Textareas. Ersteres habe ich durch Kleinbuchstaben ersetzt, Letzteres entfernt.
Da ich doch etwas massiver in das Modul eingegriffen habe, habe ich vorsichtshalber im Header auch meinen Namen eingegeben, damit niemand die Version versehentlich für ein Original halten kann. :wink:


Hier das Modul selbst:

Eingabe:

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&auml;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;">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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[8]" value="CMS_VALUE[8]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      &Uuml;bermittelte Daten auf Best&auml;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&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r Tabelle<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[11]" value="CMS_VALUE[11]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[12]" value="CMS_VALUE[12]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r Tabellenzeilen<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[13]" value="CMS_VALUE[13]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[14]" value="CMS_VALUE[14]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r linke Tabellenzellen (<th>)<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[15]" value="CMS_VALUE[15]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[16]" value="CMS_VALUE[16]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r rechte Tabellenzellen (<td>)<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[17]" value="CMS_VALUE[17]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[18]" value="CMS_VALUE[18]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Standardtext, der in der E-Mail vor den Daten eingef&uuml;gt wird:
    </td>
    <td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[19]" cols="30" rows="5">CMS_VALUE[19]</textarea></td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Standardtext, der in der E-Mail nach den Daten eingef&uuml;gt wird:
    </td>
    <td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[20]" cols="30" rows="5">CMS_VALUE[20]</textarea></td>
  </tr>
</table>

<?php
Ausgabe:

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)
  ************************************************/

  class w3form {
    var $email, $aufgedroeselt, $form, $formularFeld;



    function w3form() {
    }



    // PRIVATE
    function sendEmail() {
      // hier die Namen der Formularfelder eintragen, die nicht mit in die eMail
      // aufgenommen werden sollen (z. B. Submit-Button, versteckte Formularfelder, die
      // nur internen Zwecken dienen etc.)
      $this->aufdroeseln($this->suppress('sent', 'submit', 'submit_form', 'form_submit', 'submit_button', 'button_submit'));
      $this->generateEmailMessage();
      mail($this->email['adresses'], $this->email['subject'], $this->form['mailText1'].$this->email['message'].$this->form['mailText2'], "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/".phpversion());
    }



    // 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
    function add2Message($key, $value) {
      /*
      if (strlen($key) > 25 OR strlen($value) > 54) {
        $this->email['message'] .= "$key\n$value\n";
      } else {
        $this->email['message'] .= $key;
        $this->email['message'] .= str_repeat(' ', 25 - strlen($key));
        $this->email['message'] .= "$value\n";
      }
      */
      $max_line_length = 75;
      $indentation     = 30;
      if ('date_time' == $key) {
        $value = date('d.m.Y, H:i');
      }
      $this->email['message'] .= $key.':'.CCS_LF;
      if ((strlen($value) <= $max_line_length - $indentation) and (strpos($value, CCS_LF) === false)) {
        $this->email['message'] .= str_repeat(' ', $indentation);
      }
      $this->email['message'] .= $value.CCS_LF.CCS_LF;
    }



    // PRIVATE
    function generateEmailMessage() {
      if ($this->aufgedroeselt) {
        foreach ($this->aufgedroeselt as $key => $value) {
          $this->add2Message($key, $value);
        }
      }
    }



    // PRIVATE
    function suppress() {
      $suppress = func_get_args();

      foreach ($_POST as $key => $value) {
        if (array_search($key, $suppress) === false) {
          $fields[$key] = $value;
        }
      }

      return $fields;
    }



    // 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'];
    }



    // 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'] = 'Bitte f&uuml;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'] = 'Es sind ausschlie&szlig;lich folgende Werte erlaubt (ohne die Anf&uuml;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'] = 'Bitte verwenden Sie ausschlie&szlig;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'] = 'Bitte verwenden Sie ausschlie&szlig;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'] = 'Bitte verwenden Sie ausschlie&szlig;lich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()';
      }

      if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$", $_POST["{$feld['name']}"])) {
        $this->form['actualErrorMessage'] = 'Bitte geben Sie ausschlie&szlig;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'] = 'Bitte geben Sie ausschlie&szlig;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'] = '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'] = 'Bitte geben Sie eine g&uuml;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'] = 'Bitte geben Sie eine g&uuml;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'] = 'Bitte geben Sie eine Zahl ein, die gr&ouml;&szlig;er oder gleich '.$feld['minvalue'].' ist!';
        return false;
      }

      if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
        $this->form['actualErrorMessage'] = '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'] = 'Die Eingabe muss mindestens '.$feld['minlength'].' Zeichen lang sein!';
        return false;
      }

      if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
        $this->form['actualErrorMessage'] = 'Die Eingabe darf h&ouml;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['E-Mail-Adresse'];
    } 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->setMailText1("CMS_VALUE[19]");
    $formular->setMailText2("CMS_VALUE[20]");
    $formular->setForm("CMS_HTML[0]");
    $formular->setAnswer("CMS_HTML[1]");
    $formular->process();
  }
?>
Ich hoffe, der eine oder die andere kann etwas damit anfangen.

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

sabsab hat geschrieben:function success() {

$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);

}

}

$formular = new localSpeichern();
$formular->process();

wie kann hier noch zusätzlich der e-mail versand eingebaut werden?
Hallo sabsab,

da Du mich direkt per PN noch einmal danach gefragt hast (eigentlich ist das Forum dafür besser geeignet :wink:), hier eine Lösung für Dein Problem, wobei ich davon ausgehe, dass Du meine Version benutzt, die Du in Deiner PN erwähnt hast: Ersetze im Output-Teil des Moduls die Funktion success() durch folgenden Code:

Code: Alles auswählen

    // PRIVATE
    function write2file($path, $data, $fopen_mode) {
      $file_access_ok = true;
      $file_open      = false;

      clearstatcache();

      // ist Datei beschreibbar?
      if (file_exists($path)) {
        if (!is_writable($path)) {
          $result = 'file_not_writable';
          $file_access_ok = false;
        }
      }

      // wenn Datei existiert und beschreibbar ist, öffnen und Ergebnis des Öffnens überprüfen,
      // sonst versuchen, die Datei anzulegen und Erfolg dieses Vorgangs ebenfalls prüfen
      if ($file_access_ok and (!$file_handle = @fopen($path, $fopen_mode))) {
        $result = 'cannot_open_file';
        $file_access_ok = false;
      }

      // Daten in die Datei schreiben und Schreibvorgang überprüfen
      if ($file_access_ok) {
        if (!fwrite($file_handle, $data) and ($data != '')) {
          $result = 'cannot_write_to_file';
          $file_access_ok = false;
        } else {
          $file_open = true;
        }

        if ($data == '') {
          $result = 'ok_but_no_data';
        }
      }

      if ($file_access_ok) {
        $result = 'ok';
      }

      if ($file_open) {
        fclose($file_handle);
      }

      return ($result);
    }



    // PRIVATE
    function write2LogFile() {
      $logfile_path = 'logs/form_log.txt';
      $fopen_mode = 'ab';

      $this->logEntry = '';

      if ($this->aufgedroeselt) {
        $i = 0;
        foreach ($this->aufgedroeselt as $value) {
          $i++;
          if (1 != $i) {
            $this->logEntry .= '; ';
          }

          $this->logEntry .= $value;
        }

        $this->logEntry .= CCS_LF;
      }

      $status = $this->write2file($logfile_path, $this->logEntry, $fopen_mode);
      if ('ok' != substr($status, 0, 2)) {
        // Fehler beim Schreiben aufgetreten!
      }
    }



    // PRIVATE
    function success() {
      $this->sendEmail();

      $this->write2LogFile();

      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'];
    }
Wie bereits für die Bestätigungsseite wird einfach ein weiterer Teil in die Funktion success() eingebunden - mir ist unklar, warum Du die Zeile

Code: Alles auswählen

$this->sendEmail();
herausgenommen hast, wenn Du eine Mail bekommen möchtest... :wink:

Die neue Funktion write2LogFile() stellt die Daten Logfile-tauglich Semikolon-separiert zusammen und schreibt sie in die Datei, die oben in der Variablen $logfile_path hinterlegt wurde.

Ich habe aus meinem Fundus die etwas aufwändigere Funktion write2file() zum Schreiben des erzeugten String eingefügt, die alle möglichen Fehlerprüfungen vornimmt. Fängt der zurückgegebene Wert nicht mit 'ok' an, ist ein Fehler aufgetreten. Du kannst entsprechenden Fehlerbehandlungscode (Funktion write2LogFile()) hier einfügen:

Code: Alles auswählen

      if ('ok' != substr($status, 0, 2)) {
        // Fehler beim Schreiben aufgetreten!
      }
Sinnvoll wäre evtl., im Eingabe-Bereich abzufragen, ob ein Logfile verwendet werden und ggf. wie es heißen soll, und das dann im Ausgabe-Bereich des Moduls entsprechend zu steuern.

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

Vielen Dank für die schnelle Hilfe, funktioniert bestens!

Da ich dachte, dass meine Frage untergegangen sei und ich diese Funktion dringend brauche, habe ich mich direkt an Dich gewendet.

Nächstes mal bin ich wieder geduldiger
:oops:
Gesperrt