Dokumentation FormBuilder
Aus DeDi-Help
Version vom 22:02, 27. Okt. 2005 (bearbeiten) Luxli (Diskussion | Beiträge) (→Kontrollseite gewnscht) ← Zum vorherigen Versionsunterschied |
Aktuelle Version (11:27, 6. Okt. 2009) (bearbeiten) (Entfernen) Eppi (Diskussion | Beiträge) |
||
(Der Versionsvergleich bezieht eine dazwischen liegende Version mit ein.) | |||
Zeile 1: | Zeile 1: | ||
- | Der FormBuilder ist ein Modul fr das Open Source CMS "Der Dirigent" und ermglicht es, auf einfache Weise Formulare mit beliebigen Elementen zu erstellen, diese auszuwerten und die eingegebenen Daten an eine E-Mail Adresse oder eine andere url zu versenden. Die folgenden Seiten beschftigen sich mit der grundstzlichen Konfiguration des Moduls, weitergehenden einzelnen Einstellungsmglichkeiten und ausgewhlten Anwendungsbeispielen. | + | Der FormBuilder ist ein Modul für das Open Source CMS "Der Dirigent" und ermöglicht es, auf einfache Weise Formulare mit beliebigen Elementen zu erstellen, diese auszuwerten und die eingegebenen Daten an eine E-Mail Adresse oder eine andere url zu versenden. Die folgenden Seiten beschäftigen sich mit der grundsätzlichen Konfiguration des Moduls, weitergehenden einzelnen Einstellungsmöglichkeiten und ausgewählten Anwendungsbeispielen. |
Zeile 6: | Zeile 6: | ||
Zuerst werde ich auf die Konfiguration des Moduls eingehen. Ich gehe davon aus, dass folgende Vorraussetzungen gegeben sind. | Zuerst werde ich auf die Konfiguration des Moduls eingehen. Ich gehe davon aus, dass folgende Vorraussetzungen gegeben sind. | ||
- | * installiertes, lauffhiges DeDi System | + | * installiertes, lauffähiges DeDi System |
- | * php 4.1 der hher | + | * php 4.1 oder höher |
- | * mit mcrypt Untersttzung | + | * mit mcrypt Unterstützung |
Zeile 28: | Zeile 28: | ||
- | === mgliche Elemente=== | + | === mögliche Elemente=== |
- | Es stehen folgende Elemente zur Verfgung. | + | Es stehen folgende Elemente zur Verfügung. |
* Textzeile | * Textzeile | ||
* Textarea | * Textarea | ||
- | * Checkboxen (Mehrfachauswahl mglich) | + | * Checkboxen (Mehrfachauswahl möglich) |
* Radiobutton | * Radiobutton | ||
* Liste | * Liste | ||
* Dropdown-Liste | * Dropdown-Liste | ||
- | * multiple Liste (Mehrfachauswahl mglich) | + | * multiple Liste (Mehrfachauswahl möglich) |
* verstecktes Feld | * verstecktes Feld | ||
- | Auf eine weitergehende Erklrung der Elemente verzichte ich an dieser Stelle. | + | Auf eine weitergehende Erklärung der Elemente verzichte ich an dieser Stelle. |
===Name und id=== | ===Name und id=== | ||
- | Vergeben Sie hier einen eindeutigen(!) Namen fr das Formularfeld. Dieser wird spter fr die Templateerstellung bentigt und gleichzeitig als name und id des Formularelements verwendet. Der Wert emp_mail sollte nur mit Bedacht verwendet werden (siehe 2.1.2.). Der Wert fbantispamcheck ist dem Anti-Spam Schlssel zugeordnet und sollte daher nicht benutzt werden. | + | Vergeben Sie hier einen eindeutigen(!) Namen für das Formularfeld. Dieser wird später für die Templateerstellung benötigt und gleichzeitig als name und id des Formularelements verwendet. Der Wert emp_mail sollte nur mit Bedacht verwendet werden (siehe 2.1.2.). Der Wert fbantispamcheck ist dem Anti-Spam Schlüssel zugeordnet und sollte daher nicht benutzt werden. |
=== Default=== | === Default=== | ||
- | Hier kann der default-Wert des Formulars eingetragen werden. Dieser wird bei Aufruf immer ausgewhlt. Bei Auswahlelementen ist hier stets der value-Wert (siehe 1.1.4.) einzutragen. Bei Formularelementen mit multipler Auswahl (multiple Liste und Checkboxen) knnen auch mehrere default-Werte in der Form | + | Hier kann der default-Wert des Formulars eingetragen werden. Dieser wird bei Aufruf immer ausgewählt. Bei Auswahlelementen ist hier stets der value-Wert (siehe 1.1.4.) einzutragen. Bei Formularelementen mit multipler Auswahl (multiple Liste und Checkboxen) können auch mehrere default-Werte in der Form |
Zeile 62: | Zeile 62: | ||
=== Option / Value=== | === Option / Value=== | ||
- | Hier sind bei Auswahlelementen die verschiedenen Wahlmglichkeiten zu definieren. Dies geschieht in der Form | + | Hier sind bei Auswahlelementen die verschiedenen Wahlmöglichkeiten zu definieren. Dies geschieht in der Form |
Zeile 68: | Zeile 68: | ||
- | Im Value-Teil sollten keine Sonderzeichen einschlielich , , , verwendet werden. | + | Im Value-Teil sollten keine Sonderzeichen verwendet werden. |
===Validierung=== | ===Validierung=== | ||
- | Hier knnen Sie festlegen, ob die Eingaben des Users auf bestimmte Kriterien hin berprft werden sollen. Es stehen folgende Mglichkeiten zu Wahl: | + | Hier können Sie festlegen, ob die Eingaben des Users auf bestimmte Kriterien hin überprüft werden sollen. Es stehen folgende Möglichkeiten zu Wahl: |
* nicht leer > Es muss eine Eingabe erfolgen. | * nicht leer > Es muss eine Eingabe erfolgen. | ||
- | * Postleitzahl > Es wird geprft, ob eine fnfstellige Zahl eingegeben wurde. | + | * Postleitzahl > Es wird geprüft, ob eine fünfstellige Zahl eingegeben wurde. |
- | * E-Mail > Es wird geprft, ob eine syntaktisch korrekte E-Mail Adresse eingetragen wurde. Mglich ist hier auch eine berprfung darauf, ob ein entsprechender MX, A oder CNAME Eintrag fr die angegebene Domain existiert. Dazu mehr unter Punkt 1.2.6. | + | * E-Mail > Es wird geprüft, ob eine syntaktisch korrekte E-Mail Adresse eingetragen wurde. Möglich ist hier auch eine Überprüfung darauf, ob ein entsprechender MX, A oder CNAME Eintrag für die angegebene Domain existiert. Dazu mehr unter Punkt 1.2.6. |
===Attribute=== | ===Attribute=== | ||
- | Hier knnen Sie den einzelnen Formularelementen weitere Attribute wie z.B. maxlength, size, etc. hinzufgen. Dies ist insbesondere interessant, wenn Sie das Formular barrierefrei gestalten wollen. Eintrge erfolgen durch Leerzeichen getrennte in der Form | + | Hier können Sie den einzelnen Formularelementen weitere Attribute wie z.B. maxlength, size, etc. hinzufügen. Dies ist insbesondere interessant, wenn Sie das Formular barrierefrei gestalten wollen. Einträge erfolgen durch Leerzeichen getrennte in der Form |
maxlenght=40 size=40 | maxlenght=40 size=40 | ||
Zeile 88: | Zeile 88: | ||
===CSS=== | ===CSS=== | ||
- | Hier knnen Sie den einzelnen Elementen eine CSS-Klasse(!) zuweisen. Diese mssen im Vorfeld erstellt worden sein. Die Formatierung der Beschriftung der Elemente erfolg spter. | + | Hier können Sie den einzelnen Elementen eine CSS-Klasse(!) zuweisen. Diese müssen im Vorfeld erstellt worden sein. Die Formatierung der Beschriftung der Elemente erfolg später. |
==Die Moduleinstellungen== | ==Die Moduleinstellungen== | ||
- | Nun werde ich die Einstellungen und Mglichkeiten des Modul nher beschreiben. | + | Nun werde ich die Einstellungen und Möglichkeiten des Modul näher beschreiben. |
Zeile 101: | Zeile 101: | ||
=== versenden an=== | === versenden an=== | ||
- | Hier knnen Sie festlegen, was mit den Daten nach absenden des Formulars geschehen soll. Es gibt folgende Optionen: | + | Hier können Sie festlegen, was mit den Daten nach absenden des Formulars geschehen soll. Es gibt folgende Optionen: |
- | * E-Mail > Die Daten werden per E-Mail an eine spter angegebene (1.2.2.) E-Mail Adresse versendet. | + | * E-Mail > Die Daten werden per E-Mail an eine später angegebene (1.2.2.) E-Mail Adresse versendet. |
- | * idcatside > Die Daten werden an eine Seite innerhalb Ihres DeDi Projekts versendet. Die idcatside der jeweiligen Seite finden sie im Men unter Redaktion Seiten im Info-PopUp | + | * idcatside > Die Daten werden an eine Seite innerhalb Ihres DeDi Projekts versendet. Die idcatside der jeweiligen Seite finden sie im Menü unter Redaktion > Seiten im Info-PopUp |
- | * url > Die Daten werden an eine url auerhalb ihres DeDi Projekts versendet. Zu beachten ist darber hinaus, das die Daten aus Formularelementen mit multipler Auswahlmglichkeit (Checkboxen und multiple Listen) immer als numerisches Array bergeben werden. Dies ist besonders fr das Auslesen der Daten auf einer anderen Seite von Bedeutung. | + | * url > Die Daten werden an eine url außerhalb ihres DeDi Projekts versendet. Zu beachten ist darüber hinaus, das die Daten aus Formularelementen mit multipler Auswahlmöglichkeit (Checkboxen und multiple Listen) immer als numerisches Array übergeben werden. Dies ist besonders für das Auslesen der Daten auf einer anderen Seite von Bedeutung. |
Zeile 118: | Zeile 118: | ||
- | ===Kontrollseite gewnscht=== | + | ===Kontrollseite gewünscht=== |
- | Hier knnen Sie festlegen, ob der User die Mglichkeit haben soll nach Eingabe der Daten diese noch einmal zu sehen und ggf. nderungen vorzunehmen. | + | Hier können Sie festlegen, ob der User die Möglichkeit haben soll nach Eingabe der Daten diese noch einmal zu sehen und ggf. Änderungen vorzunehmen. |
- | Wenn die Kontrollseite nicht aktiviert ist, kann das Formular ohne Inhalt oder mit ungeprftem Inhalt verschickt werden | + | Wenn die Kontrollseite nicht aktiviert ist, kann das Formular ohne Inhalt oder mit ungeprüftem Inhalt verschickt werden. |
===Absenderadresse=== | ===Absenderadresse=== | ||
- | Hier knnen Sie festlegen, aus welchem Formularelement die Absenderadresse der versendeten E-Mail entnommen werden soll. | + | Hier können Sie festlegen, aus welchem Formularelement die Absenderadresse der versendeten E-Mail entnommen werden soll. |
===Titel der E-Mail=== | ===Titel der E-Mail=== | ||
- | Hier knnen Sie den Titel / Betreff definieren, den die versendete E-Mail tragen soll. | + | Hier können Sie den Titel / Betreff definieren, den die versendete E-Mail tragen soll. |
- | ===Domain der Absendermail prfen=== | + | ===Domain der Absendermail prüfen=== |
- | Hier knnen Sie die berprfung von E-Mail Adressen einschrnken, so dass eine eingegebene Adresse lediglich auf korrekte Syntax berprft wird. Sollte Sie eine Windows Server verwenden wird die Deaktivierung einer weitergehenden Prfung wohl unumgnglich sein, da diese Funktion bisher nur fr Linux-Systeme integriert ist. | + | Hier können Sie die Überprüfung von E-Mail Adressen einschränken, so dass eine eingegebene Adresse lediglich auf korrekte Syntax überprüft wird. Sollte Sie eine Windows Server verwenden wird die Deaktivierung einer weitergehenden Prüfung wohl unumgänglich sein, da diese Funktion bisher nur für Linux-Systeme integriert ist. |
- | Nehmen Sie hier die Einstellung aktiviert vor, werden alle Eingaben in Formularelemente fr die eine E-Mail Validation definiert ist auf die Existenz eines MX, A oder CNAME Eintrags fr die entsprechende Domain berprft. | + | Nehmen Sie hier die Einstellung "aktiviert" vor, werden alle Eingaben in Formularelemente für die eine E-Mail Validation definiert ist auf die Existenz eines MX, A oder CNAME Eintrags für die entsprechende Domain überprüft. |
===Anti-Spam Key und Wert=== | ===Anti-Spam Key und Wert=== | ||
- | Um Missbrauch des Formular vorzubeugen wurde hier eine Methode implementiert, die sicherstellen soll, dass das komplette Formular Seite fr Seite abgearbeitet wurde, und nicht lediglich der Teil, welcher abschlieend die E-Mail versendet direkt aufgerufen wird. Da der FormBuilder wie spter klar werden sollte auch mit variablem Empfngeradressen umgehen kann besteht ansonsten die Gefahr des Missbrauchs des Formulars fr Spamming. | + | Um Missbrauch des Formular vorzubeugen wurde hier eine Methode implementiert, die sicherstellen soll, dass das komplette Formular Seite für Seite abgearbeitet wurde, und nicht lediglich der Teil, welcher abschließend die E-Mail versendet direkt aufgerufen wird. Da der FormBuilder - wie später klar werden sollte - auch mit variablem Empfängeradressen umgehen kann besteht ansonsten die Gefahr des Missbrauchs des Formulars für Spamming. |
- | Bitte gegen Sie in beiden Feldern einen zuflligen(!) Wert aus Buchstaben, Zahlen und Sonderzeichen ein. Beim Aufruf des Formulars wird der von Ihnen eingegebene Anti-Spam Wert zusammen mit dem aktuellen Timestamp verschlsselt, und zusammen mit einem 10 stelligen Schlssel in der Datenbank (prefix_content_external) abgelegt. Dieser Schlssel wird nun im Formular versteckt mit gesendet. Direkt vor dem eigentlichen Versenden der E-Mail wird nun geprft, ob es einen zu dem Schlssel passenden Wert in der Datenbank gibt. Dies ist nur der Fall, wenn das eigentliche Formular besucht wurde. | + | Bitte gegen Sie in beiden Feldern einen zufälligen(!) Wert aus Buchstaben, Zahlen und Sonderzeichen ein. Beim Aufruf des Formulars wird der von Ihnen eingegebene Anti-Spam Wert zusammen mit dem aktuellen Timestamp verschlüsselt, und zusammen mit einem 10 stelligen Schlüssel in der Datenbank (prefix_content_external) abgelegt. Dieser Schlüssel wird nun im Formular versteckt mit gesendet. Direkt vor dem eigentlichen Versenden der E-Mail wird nun geprüft, ob es einen zu dem Schlüssel passenden Wert in der Datenbank gibt. Dies ist nur der Fall, wenn das eigentliche Formular besucht wurde. |
- | Nach dem Versenden der E-Mail wird der zugehrige Schlssel wieder gelscht, so dass fr eine erneute E-Mail wieder die Startseite besucht werden muss. Damit sich nicht etliche Schlssel von Besucher die das Formular angesehen aber letztendlich keine E-Mail geschrieben haben in der Datenbank sammeln werde diese nach 24 Stunden beim nchsten E-Mail Versand automatisch gelscht. | + | Nach dem Versenden der E-Mail wird der zugehörige Schlüssel wieder gelöscht, so dass für eine erneute E-Mail wieder die Startseite besucht werden muss. Damit sich nicht etliche Schlüssel von Besucher die das Formular angesehen aber letztendlich keine E-Mail geschrieben haben in der Datenbank sammeln werde diese nach 24 Stunden beim nächsten E-Mail Versand automatisch gelöscht. |
===Schriftarten zur Templategestaltung=== | ===Schriftarten zur Templategestaltung=== | ||
- | Hier knnen Sie CSS-Klassen auswhlen, mit denen Sie spter die Anzeigetemplates gestalten mchten | + | Hier können Sie CSS-Klassen auswählen, mit denen Sie später die Anzeigetemplates gestalten möchten |
- | ===Schriftart fr Fehlermeldungen=== | + | ===Schriftart für Fehlermeldungen=== |
Hier wird die CSS-Klasse definiert, die auf Fehler- bzw. Warnmeldungen des FormBuilder (fehlerhafte Eingaben / falsche Anti-Spam Wert) angewandt werden soll | Hier wird die CSS-Klasse definiert, die auf Fehler- bzw. Warnmeldungen des FormBuilder (fehlerhafte Eingaben / falsche Anti-Spam Wert) angewandt werden soll | ||
- | ===Schriftart fr Checkboxen / Radiobutton=== | + | ===Schriftart für Checkboxen / Radiobutton=== |
- | Definieren Sie hier eine CSS-Klasse fr die Beschriftung von Radiobutton und Checkboxen. Die Beschriftung wird entsprechend des angegebenen Option-Wertes fr das zugehrige Element angezeigt. | + | Definieren Sie hier eine CSS-Klasse für die Beschriftung von Radiobutton und Checkboxen. Die Beschriftung wird entsprechend des angegebenen Option-Wertes für das zugehörige Element angezeigt. |
- | ===CSS-Klasse fr Button=== | + | ===CSS-Klasse für Button=== |
- | Hier knnen Sie eine CSS-Klasse fr die Button Daten senden, Daten ndern und Daten zurcksetzen definieren. | + | Hier können Sie eine CSS-Klasse für die Button "Daten senden", "Daten ändern" und "Daten zurücksetzen" definieren. |
Zeile 178: | Zeile 178: | ||
- | == Template fr Formulardesign== | + | == Template für Formulardesign== |
- | Hier mssen einfach die vorher definierten Elementnamen eingeschlossen in {} an die gewnschten Stellen im HTML Code gesetzt werden. Zustzlich noch die Button | + | Hier müssen einfach die vorher definierten Elementnamen eingeschlossen in {} an die gewünschten Stellen im HTML Code gesetzt werden. Zusätzlich noch die Button |
* {bs} => Button zum senden | * {bs} => Button zum senden | ||
- | * {br} => Button zum zurcksetzen der Daten einbinden. | + | * {br} => Button zum zurücksetzen der Daten einbinden. |
- | Hier knnen Sie auch Fieldsets bestimmen, wenn dies gewnscht ist. Eine Vorlage fr ein mgliches Design finden Sie direkt in den Standardeinstellungen des Moduls. | + | Hier können Sie auch Fieldsets bestimmen, wenn dies gewünscht ist. Eine Vorlage für ein mögliches Design finden Sie direkt in den Standardeinstellungen des Moduls. |
- | ===Template fr Design der Kontrollseite=== | + | ===Template für Design der Kontrollseite=== |
- | Hier mssen ebenfalls die vorher definierten Elementnamen eingeschlossen in {} an die gewnschten Stellen im HTML Code gesetzt werden. Diese Einstellungen werden natrlich nur bentigt, wenn die Kontrollseite aktiviert ist. Zustzlich noch den | + | Hier müssen ebenfalls die vorher definierten Elementnamen eingeschlossen in {} an die gewünschten Stellen im HTML Code gesetzt werden. Diese Einstellungen werden natürlich nur benötigt, wenn die Kontrollseite aktiviert ist. Zusätzlich noch den |
* {bs} => Button zum senden | * {bs} => Button zum senden | ||
- | * {bb} => Button zum ndern der Daten | + | * {bb} => Button zum ändern der Daten |
Zeile 200: | Zeile 200: | ||
- | ===Template fr Design der E-Mail=== | + | ===Template für Design der E-Mail=== |
- | Auch hier alle zu senden Elementnamen eingeschlossen in {} positionieren. In diesem Template bitte kein HTML verwenden, da die E-Mail als Textmail versendet wird. Zeilenumbrche und sonstige Eintrge im Template werden in den Text der E-Mail bernommen. Auch hier finden Sie ein Beispiel direkt in den Standardeinstellungen des Moduls. | + | Auch hier alle zu senden Elementnamen eingeschlossen in {} positionieren. In diesem Template bitte kein HTML verwenden, da die E-Mail als Textmail versendet wird. Zeilenumbrüche und sonstige Einträge im Template werden in den Text der E-Mail übernommen. Auch hier finden Sie ein Beispiel direkt in den Standardeinstellungen des Moduls. |
- | ===Template fr Erfolgsmeldung nach E-Mail Versand=== | + | ===Template für Erfolgsmeldung nach E-Mail Versand=== |
- | Hier definieren Sie eine Meldung fr den Fall des erfolgreichen Versands der E-Mail in HTML. Auch hier finden Sie ein Beispiel direkt in den Standarteinstellungen des Moduls. | + | Hier definieren Sie eine Meldung für den Fall des erfolgreichen Versands der E-Mail in HTML. Auch hier finden Sie ein Beispiel direkt in den Standarteinstellungen des Moduls. |
- | =Spezielle Mglichkeiten und Beispiele= | + | =Spezielle Möglichkeiten und Beispiele= |
- | Neben den beschriebenen grundlegenden Funktionen bietet das Modul einige Features, die einen vielseitigeren und dynamischeren Einsatz ermglichen. Auf einige solche Funktionen geht diese Dokumentation im Folgenden nher ein. | + | Neben den beschriebenen grundlegenden Funktionen bietet das Modul einige Features, die einen vielseitigeren und dynamischeren Einsatz ermöglichen. Auf einige solche Funktionen geht diese Dokumentation im Folgenden näher ein. |
==Dynamische Erstellung von Formularinhalten== | ==Dynamische Erstellung von Formularinhalten== | ||
- | Besonders bei der Verwendung von Formularelementen mit umfangreichen und wechselnden Auswahlmglichkeiten (Checkboxen, Listen etc.) kann es hilfreich sein die zur Auswahl stehenden Optionen dynamisch erzeugen zu lassen. Hierzu zwei praktische Bespiele: | + | Besonders bei der Verwendung von Formularelementen mit umfangreichen und wechselnden Auswahlmöglichkeiten (Checkboxen, Listen etc.) kann es hilfreich sein die zur Auswahl stehenden Optionen dynamisch erzeugen zu lassen. Hierzu zwei praktische Bespiele: |
===Erstellung einer Datumsauswahl=== | ===Erstellung einer Datumsauswahl=== | ||
- | Mchte man zum Beispiel eine Datumsauswahl erzeugen, wre es relativ aufwendig alle Tage und Monate als Optionen von Hand einzutragen. Einfacher ist es die gewnschten Daten durch PHP Code im Sourcecode Feld der Modulkonfiguration erstellen zu lassen. Der in diesem Feld eingetragene Code wird vor dem Aufbau des eigentlichen Formulars ausgefhrt. Er darf nicht von <?php ?> eingeschlossen sein. | + | Möchte man zum Beispiel eine Datumsauswahl erzeugen, wäre es relativ aufwendig alle Tage und Monate als Optionen von Hand einzutragen. Einfacher ist es die gewönschten Daten durch PHP Code im Sourcecode Feld der Modulkonfiguration erstellen zu lassen. Der in diesem Feld eingetragene Code wird vor dem Aufbau des eigentlichen Formulars ausgeführt. Er darf nicht von <?php ?> eingeschlossen sein. |
- | ====Textarea Sourcecode vor Modulausfhrung==== | + | ====Textarea Sourcecode vor Modulausführung==== |
- | Im Konfigurationsbereich Sourcecode vor Modulausfhrung notieren wir unseren php-Code, der die entsprechenden Werte generiert. In der for-Schleife werden die einzelnen Angaben aneinandergereiht. Anschlieend wird das unntige | Zeichen am Ende des Strings entfernt. | + | Im Konfigurationsbereich "Sourcecode vor Modulausführung" notieren wir unseren php-Code, der die entsprechenden Werte generiert. In der for-Schleife werden die einzelnen Angaben aneinandergereiht. Anschließend wird das unnötige | Zeichen am Ende des Strings entfernt. |
- | Die jeweiligen Variablen werden dann einfach anstelle der Eingaben in der Definition des Elements eingesetzt. Auf diese Weise lassen sich leicht auch umfangreichere Auswahlmglichkeiten schaffen. Natrlich ist auch jeder andere PHP Code in der Sourcecode Textarea erlaubt. | + | Die jeweiligen Variablen werden dann einfach anstelle der Eingaben in der Definition des Elements eingesetzt. Auf diese Weise lassen sich leicht auch umfangreichere Auswahlmöglichkeiten schaffen. Natürlich ist auch jeder andere PHP Code in der Sourcecode Textarea erlaubt. |
====Elementdefinition==== | ====Elementdefinition==== | ||
- | Nun mssen wir noch die Elementdefinitionen anpassen. Hierzu tragen wir einfach bei Option / Value die entsprechende Variable ein und vergeben eindeutige Namen fr die Elemente. | + | Nun müssen wir noch die Elementdefinitionen anpassen. Hierzu tragen wir einfach bei "Option / Value" die entsprechende Variable ein und vergeben eindeutige Namen für die Elemente. |
<pre><nowiki> | <pre><nowiki> | ||
Zeile 256: | Zeile 256: | ||
[[Bild:formbuilder_04.png]] | [[Bild:formbuilder_04.png]] | ||
- | Der Formbuilder kann auf diese Weise auch mit Daten aus einer Datenbank versorgt werden. Dies hat den Vorteil, dass die Elementdefinitionen auch bei sich schnell ndernden Daten nicht stndig angepasst werden muss. | + | Der Formbuilder kann auf diese Weise auch mit Daten aus einer Datenbank versorgt werden. Dies hat den Vorteil, dass die Elementdefinitionen auch bei sich schnell ändernden Daten nicht ständig angepasst werden muss. |
Zeile 262: | Zeile 262: | ||
====Das Ergebnis==== | ====Das Ergebnis==== | ||
- | Nachdem wir nun noch die Templates angepasst haben knnte das ganze im Frontend so aussehen. | + | Nachdem wir nun noch die Templates angepasst haben könnte das ganze im Frontend so aussehen. |
Zeile 269: | Zeile 269: | ||
- | ===Variabler E-Mail Empfnger=== | + | ===Variabler E-Mail Empfänger=== |
- | Im nchsten Beispiel soll der Empfnger der E-Mail vom Benutzer gewhlt werden knnen. Die E-Mail Adresse, an die die Daten versendet werden ist in der Variable $emp_mail gespeichert. Die zur Wahl stehenden Empfnger sind in diesem Beispiel Benutzer aus der Tabelle dedi_users. In der Sourcecode Textarea muss also die Datenbank hierauf hin abgefragt werden. | + | Im nächsten Beispiel soll der Empfänger der E-Mail vom Benutzer gewählt werden können. Die E-Mail Adresse, an die die Daten versendet werden ist in der Variable $emp_mail gespeichert. Die zur Wahl stehenden Empfänger sind in diesem Beispiel Benutzer aus der Tabelle dedi_users. In der Sourcecode Textarea muss also die Datenbank hierauf hin abgefragt werden. |
- | ====Textarea Sourcecode vor Modulausfhrung==== | + | ====Textarea Sourcecode vor Modulausführung==== |
- | Im Konfigurationsbereich Sourcecode vor Modulausfhrung notieren wir unseren php-Code, der die entsprechenden Werte auslesen soll. | + | Im Konfigurationsbereich "Sourcecode vor Modulausführung" notieren wir unseren php-Code, der die entsprechenden Werte auslesen soll. |
<pre><nowiki>$sql = "SELECT name, surname, email FROM ". $dedi_ | <pre><nowiki>$sql = "SELECT name, surname, email FROM ". $dedi_ | ||
Zeile 290: | Zeile 290: | ||
====Elementdefinitionen==== | ====Elementdefinitionen==== | ||
- | Im der Elementdefinition wird die Liste der potentiellen Empfnger mit emp_mail benannt. Ist dieser Elementname vergeben, wird die in der Templatekonfiguration eingegebene Einstellung automatisch berschrieben. | + | Im der Elementdefinition wird die Liste der potentiellen Empfänger mit emp_mail benannt. Ist dieser Elementname vergeben, wird die in der Templatekonfiguration eingegebene Einstellung automatisch überschrieben. |
Zeile 296: | Zeile 296: | ||
- | Die Variable $daten, welche die Auswahl der Liste enthlt, wird wie gewohnt in die Elementdefinition eingebunden. | + | Die Variable $daten, welche die Auswahl der Liste enthält, wird wie gewohnt in die Elementdefinition eingebunden. |
Zeile 309: | Zeile 309: | ||
==weiteres Wissenswertes== | ==weiteres Wissenswertes== | ||
- | Nun noch eine kleine Ergnzung zur Benutzung der Sourcecode Textarea. Soll der PHP Code nur an bestimmten Stellen des Ablaufs ausgefhrt werden kann dies durch folgende if - Abfragen beeinflusst werden. | + | Nun noch eine kleine Ergänzung zur Benutzung der Sourcecode Textarea. Soll der PHP Code nur an bestimmten Stellen des Ablaufs ausgeführt werden kann dies durch folgende if - Abfragen beeinflusst werden. |
* if (!$validate && !$back && !$submit){ /* bei Aufruf des Formulars */ } | * if (!$validate && !$back && !$submit){ /* bei Aufruf des Formulars */ } | ||
* if ($validate){ /* auf der Kontrollseite */ } | * if ($validate){ /* auf der Kontrollseite */ } | ||
- | * if ($back){ /* bei nderung der Daten */ } | + | * if ($back){ /* bei Änderung der Daten */ } |
* if ($submit){ /* auf der Seite der Erfolgsmeldung */ } | * if ($submit){ /* auf der Seite der Erfolgsmeldung */ } | ||
- | Alle anderen Mglichkeiten sollten sich hieraus ergeben. Ich hoffe, ich konnte mit dieser kleinen Anleitung die Funktionsweise des FormBuilders ein wenig transparenter gestalten. Vielleicht kann der Eine oder Andere ihn ja gebrauchen | + | Alle anderen Möglichkeiten sollten sich hieraus ergeben. Ich hoffe, ich konnte mit dieser kleinen Anleitung die Funktionsweise des FormBuilders ein wenig transparenter gestalten. Vielleicht kann der Eine oder Andere ihn ja gebrauchen? |
Wer Fragen oder Anregungen zum Formbuilder hat kann sich gerne per PM im Forum bei mir melden. | Wer Fragen oder Anregungen zum Formbuilder hat kann sich gerne per PM im Forum bei mir melden. | ||
- | Viel Spa mit dem Modul! | + | Viel Spaß mit dem Modul! |
Stand: 08.11.2004 (bearbeitet von mika am 06.04.05) | Stand: 08.11.2004 (bearbeitet von mika am 06.04.05) | ||
- | fr FormBuilder: v1.21 | + | für FormBuilder: v1.21 |
Doku-Version: v1.21.01 | Doku-Version: v1.21.01 | ||
[[Category:Moduldokumentationen|F]] | [[Category:Moduldokumentationen|F]] |
Aktuelle Version
Der FormBuilder ist ein Modul für das Open Source CMS "Der Dirigent" und ermöglicht es, auf einfache Weise Formulare mit beliebigen Elementen zu erstellen, diese auszuwerten und die eingegebenen Daten an eine E-Mail Adresse oder eine andere url zu versenden. Die folgenden Seiten beschäftigen sich mit der grundsätzlichen Konfiguration des Moduls, weitergehenden einzelnen Einstellungsmöglichkeiten und ausgewählten Anwendungsbeispielen.
[bearbeiten] Grundlegende Einstellungen
Zuerst werde ich auf die Konfiguration des Moduls eingehen. Ich gehe davon aus, dass folgende Vorraussetzungen gegeben sind.
- installiertes, lauffähiges DeDi System
- php 4.1 oder höher
- mit mcrypt Unterstützung
Wenden wir uns nun der Erstellung der einzelnen Formularfelder zu.
[bearbeiten] Die Konfiguration der Formularelemente
Hier gehe ich kurz auf die vorhandenen Felder uns Ihre Bedeutung ein.
[bearbeiten] Nummer
Hier wird die laufende Nummer des Feldes angezeigt, welches bearbeitet wird.
[bearbeiten] mögliche Elemente
Es stehen folgende Elemente zur Verfügung.
- Textzeile
- Textarea
- Checkboxen (Mehrfachauswahl möglich)
- Radiobutton
- Liste
- Dropdown-Liste
- multiple Liste (Mehrfachauswahl möglich)
- verstecktes Feld
Auf eine weitergehende Erklärung der Elemente verzichte ich an dieser Stelle.
[bearbeiten] Name und id
Vergeben Sie hier einen eindeutigen(!) Namen für das Formularfeld. Dieser wird später für die Templateerstellung benötigt und gleichzeitig als name und id des Formularelements verwendet. Der Wert emp_mail sollte nur mit Bedacht verwendet werden (siehe 2.1.2.). Der Wert fbantispamcheck ist dem Anti-Spam Schlüssel zugeordnet und sollte daher nicht benutzt werden.
[bearbeiten] Default
Hier kann der default-Wert des Formulars eingetragen werden. Dieser wird bei Aufruf immer ausgewählt. Bei Auswahlelementen ist hier stets der value-Wert (siehe 1.1.4.) einzutragen. Bei Formularelementen mit multipler Auswahl (multiple Liste und Checkboxen) können auch mehrere default-Werte in der Form
a|b|c
angegeben werden.
[bearbeiten] Option / Value
Hier sind bei Auswahlelementen die verschiedenen Wahlmöglichkeiten zu definieren. Dies geschieht in der Form
option1=value1|option2=value2
Im Value-Teil sollten keine Sonderzeichen verwendet werden.
[bearbeiten] Validierung
Hier können Sie festlegen, ob die Eingaben des Users auf bestimmte Kriterien hin überprüft werden sollen. Es stehen folgende Möglichkeiten zu Wahl:
- nicht leer > Es muss eine Eingabe erfolgen.
- Postleitzahl > Es wird geprüft, ob eine fünfstellige Zahl eingegeben wurde.
- E-Mail > Es wird geprüft, ob eine syntaktisch korrekte E-Mail Adresse eingetragen wurde. Möglich ist hier auch eine Überprüfung darauf, ob ein entsprechender MX, A oder CNAME Eintrag für die angegebene Domain existiert. Dazu mehr unter Punkt 1.2.6.
[bearbeiten] Attribute
Hier können Sie den einzelnen Formularelementen weitere Attribute wie z.B. maxlength, size, etc. hinzufügen. Dies ist insbesondere interessant, wenn Sie das Formular barrierefrei gestalten wollen. Einträge erfolgen durch Leerzeichen getrennte in der Form maxlenght=40 size=40
[bearbeiten] CSS
Hier können Sie den einzelnen Elementen eine CSS-Klasse(!) zuweisen. Diese müssen im Vorfeld erstellt worden sein. Die Formatierung der Beschriftung der Elemente erfolg später.
[bearbeiten] Die Moduleinstellungen
Nun werde ich die Einstellungen und Möglichkeiten des Modul näher beschreiben.
[bearbeiten] versenden an
Hier können Sie festlegen, was mit den Daten nach absenden des Formulars geschehen soll. Es gibt folgende Optionen:
- E-Mail > Die Daten werden per E-Mail an eine später angegebene (1.2.2.) E-Mail Adresse versendet.
- idcatside > Die Daten werden an eine Seite innerhalb Ihres DeDi Projekts versendet. Die idcatside der jeweiligen Seite finden sie im Menü unter Redaktion > Seiten im Info-PopUp
- url > Die Daten werden an eine url außerhalb ihres DeDi Projekts versendet. Zu beachten ist darüber hinaus, das die Daten aus Formularelementen mit multipler Auswahlmöglichkeit (Checkboxen und multiple Listen) immer als numerisches Array übergeben werden. Dies ist besonders für das Auslesen der Daten auf einer anderen Seite von Bedeutung.
[bearbeiten] E-Mail Adresse, idcatside oder url
Hier definieren Sie bitte das genaue Ziel, an das die Daten gesendet werden sollen. Beachten Sie, dass Ihre Angabe mit den unter Punkt 1.2.1. gemachten vereinbar sein muss. Die Angaben erfolgen in der den unter Punkt 1.2.1. vorgenommen Einstellungen entsprechenden Form:
- E-Mail mail@domain.de
- idcatside 99
- url http://www.meinedomain.de
[bearbeiten] Kontrollseite gewünscht
Hier können Sie festlegen, ob der User die Möglichkeit haben soll nach Eingabe der Daten diese noch einmal zu sehen und ggf. Änderungen vorzunehmen.
Wenn die Kontrollseite nicht aktiviert ist, kann das Formular ohne Inhalt oder mit ungeprüftem Inhalt verschickt werden.
[bearbeiten] Absenderadresse
Hier können Sie festlegen, aus welchem Formularelement die Absenderadresse der versendeten E-Mail entnommen werden soll.
[bearbeiten] Titel der E-Mail
Hier können Sie den Titel / Betreff definieren, den die versendete E-Mail tragen soll.
[bearbeiten] Domain der Absendermail prüfen
Hier können Sie die Überprüfung von E-Mail Adressen einschränken, so dass eine eingegebene Adresse lediglich auf korrekte Syntax überprüft wird. Sollte Sie eine Windows Server verwenden wird die Deaktivierung einer weitergehenden Prüfung wohl unumgänglich sein, da diese Funktion bisher nur für Linux-Systeme integriert ist.
Nehmen Sie hier die Einstellung "aktiviert" vor, werden alle Eingaben in Formularelemente für die eine E-Mail Validation definiert ist auf die Existenz eines MX, A oder CNAME Eintrags für die entsprechende Domain überprüft.
[bearbeiten] Anti-Spam Key und Wert
Um Missbrauch des Formular vorzubeugen wurde hier eine Methode implementiert, die sicherstellen soll, dass das komplette Formular Seite für Seite abgearbeitet wurde, und nicht lediglich der Teil, welcher abschließend die E-Mail versendet direkt aufgerufen wird. Da der FormBuilder - wie später klar werden sollte - auch mit variablem Empfängeradressen umgehen kann besteht ansonsten die Gefahr des Missbrauchs des Formulars für Spamming.
Bitte gegen Sie in beiden Feldern einen zufälligen(!) Wert aus Buchstaben, Zahlen und Sonderzeichen ein. Beim Aufruf des Formulars wird der von Ihnen eingegebene Anti-Spam Wert zusammen mit dem aktuellen Timestamp verschlüsselt, und zusammen mit einem 10 stelligen Schlüssel in der Datenbank (prefix_content_external) abgelegt. Dieser Schlüssel wird nun im Formular versteckt mit gesendet. Direkt vor dem eigentlichen Versenden der E-Mail wird nun geprüft, ob es einen zu dem Schlüssel passenden Wert in der Datenbank gibt. Dies ist nur der Fall, wenn das eigentliche Formular besucht wurde.
Nach dem Versenden der E-Mail wird der zugehörige Schlüssel wieder gelöscht, so dass für eine erneute E-Mail wieder die Startseite besucht werden muss. Damit sich nicht etliche Schlüssel von Besucher die das Formular angesehen aber letztendlich keine E-Mail geschrieben haben in der Datenbank sammeln werde diese nach 24 Stunden beim nächsten E-Mail Versand automatisch gelöscht.
[bearbeiten] Schriftarten zur Templategestaltung
Hier können Sie CSS-Klassen auswählen, mit denen Sie später die Anzeigetemplates gestalten möchten
[bearbeiten] Schriftart für Fehlermeldungen
Hier wird die CSS-Klasse definiert, die auf Fehler- bzw. Warnmeldungen des FormBuilder (fehlerhafte Eingaben / falsche Anti-Spam Wert) angewandt werden soll
[bearbeiten] Schriftart für Checkboxen / Radiobutton
Definieren Sie hier eine CSS-Klasse für die Beschriftung von Radiobutton und Checkboxen. Die Beschriftung wird entsprechend des angegebenen Option-Wertes für das zugehörige Element angezeigt.
[bearbeiten] CSS-Klasse für Button
Hier können Sie eine CSS-Klasse für die Button "Daten senden", "Daten ändern" und "Daten zurücksetzen" definieren.
[bearbeiten] Die Konfiguration der Templates
Wenden wir uns nun der Bedeutung und Konfiguration der einzelnen Templates zu.
[bearbeiten] Template für Formulardesign
Hier müssen einfach die vorher definierten Elementnamen eingeschlossen in {} an die gewünschten Stellen im HTML Code gesetzt werden. Zusätzlich noch die Button
- {bs} => Button zum senden
- {br} => Button zum zurücksetzen der Daten einbinden.
Hier können Sie auch Fieldsets bestimmen, wenn dies gewünscht ist. Eine Vorlage für ein mögliches Design finden Sie direkt in den Standardeinstellungen des Moduls.
[bearbeiten] Template für Design der Kontrollseite
Hier müssen ebenfalls die vorher definierten Elementnamen eingeschlossen in {} an die gewünschten Stellen im HTML Code gesetzt werden. Diese Einstellungen werden natürlich nur benötigt, wenn die Kontrollseite aktiviert ist. Zusätzlich noch den
- {bs} => Button zum senden
- {bb} => Button zum ändern der Daten
einbinden. Auch hier finden Sie ein Beispiel direkt in den Standardeinstellungen des Moduls.
[bearbeiten] Template für Design der E-Mail
Auch hier alle zu senden Elementnamen eingeschlossen in {} positionieren. In diesem Template bitte kein HTML verwenden, da die E-Mail als Textmail versendet wird. Zeilenumbrüche und sonstige Einträge im Template werden in den Text der E-Mail übernommen. Auch hier finden Sie ein Beispiel direkt in den Standardeinstellungen des Moduls.
[bearbeiten] Template für Erfolgsmeldung nach E-Mail Versand
Hier definieren Sie eine Meldung für den Fall des erfolgreichen Versands der E-Mail in HTML. Auch hier finden Sie ein Beispiel direkt in den Standarteinstellungen des Moduls.
[bearbeiten] Spezielle Möglichkeiten und Beispiele
Neben den beschriebenen grundlegenden Funktionen bietet das Modul einige Features, die einen vielseitigeren und dynamischeren Einsatz ermöglichen. Auf einige solche Funktionen geht diese Dokumentation im Folgenden näher ein.
[bearbeiten] Dynamische Erstellung von Formularinhalten
Besonders bei der Verwendung von Formularelementen mit umfangreichen und wechselnden Auswahlmöglichkeiten (Checkboxen, Listen etc.) kann es hilfreich sein die zur Auswahl stehenden Optionen dynamisch erzeugen zu lassen. Hierzu zwei praktische Bespiele:
[bearbeiten] Erstellung einer Datumsauswahl
Möchte man zum Beispiel eine Datumsauswahl erzeugen, wäre es relativ aufwendig alle Tage und Monate als Optionen von Hand einzutragen. Einfacher ist es die gewönschten Daten durch PHP Code im Sourcecode Feld der Modulkonfiguration erstellen zu lassen. Der in diesem Feld eingetragene Code wird vor dem Aufbau des eigentlichen Formulars ausgeführt. Er darf nicht von <?php ?> eingeschlossen sein.
[bearbeiten] Textarea Sourcecode vor Modulausführung
Im Konfigurationsbereich "Sourcecode vor Modulausführung" notieren wir unseren php-Code, der die entsprechenden Werte generiert. In der for-Schleife werden die einzelnen Angaben aneinandergereiht. Anschließend wird das unnötige | Zeichen am Ende des Strings entfernt.
Die jeweiligen Variablen werden dann einfach anstelle der Eingaben in der Definition des Elements eingesetzt. Auf diese Weise lassen sich leicht auch umfangreichere Auswahlmöglichkeiten schaffen. Natürlich ist auch jeder andere PHP Code in der Sourcecode Textarea erlaubt.
[bearbeiten] Elementdefinition
Nun müssen wir noch die Elementdefinitionen anpassen. Hierzu tragen wir einfach bei "Option / Value" die entsprechende Variable ein und vergeben eindeutige Namen für die Elemente.
for($t=1;$t<32;$t++) { $tage .=''.$t.'='.$t.'|'; } $tage = substr($tage,0,strlen($tage)-1); for($m=1;$m<13;$m++) { $monate .=''.$m.'='.$m.'|'; } $monate = substr($monate,0,strlen($monate)-1); for($j=2004;$j<2020;$j++) { $jahre .=''.$j.'='.$j.'|'; } $jahre = substr($jahre,0,strlen($jahre)-1);
Der Formbuilder kann auf diese Weise auch mit Daten aus einer Datenbank versorgt werden. Dies hat den Vorteil, dass die Elementdefinitionen auch bei sich schnell ändernden Daten nicht ständig angepasst werden muss.
[bearbeiten] Das Ergebnis
Nachdem wir nun noch die Templates angepasst haben könnte das ganze im Frontend so aussehen.
[bearbeiten] Variabler E-Mail Empfänger
Im nächsten Beispiel soll der Empfänger der E-Mail vom Benutzer gewählt werden können. Die E-Mail Adresse, an die die Daten versendet werden ist in der Variable $emp_mail gespeichert. Die zur Wahl stehenden Empfänger sind in diesem Beispiel Benutzer aus der Tabelle dedi_users. In der Sourcecode Textarea muss also die Datenbank hierauf hin abgefragt werden.
[bearbeiten] Textarea Sourcecode vor Modulausführung
Im Konfigurationsbereich "Sourcecode vor Modulausführung" notieren wir unseren php-Code, der die entsprechenden Werte auslesen soll.
$sql = "SELECT name, surname, email FROM ". $dedi_ db[users] ." WHERE is_deletable = 1 ORDER BY surname"; $db->query($sql); while ($db->next_record()) { $daten .= "".$db->f("surname").",".$db- >f("name")."=".$db->f("email")."|"; } $daten = substr($daten,0,strlen($daten)-1);
[bearbeiten] Elementdefinitionen
Im der Elementdefinition wird die Liste der potentiellen Empfänger mit emp_mail benannt. Ist dieser Elementname vergeben, wird die in der Templatekonfiguration eingegebene Einstellung automatisch überschrieben.
Die Variable $daten, welche die Auswahl der Liste enthält, wird wie gewohnt in die Elementdefinition eingebunden.
[bearbeiten] Das Ergebnis
Nach Anpassung der Templates sieht das ganze dann zum Beispiel so aus. Nun kann der Benutzer festlegen, an wen die E-Mail gehen soll.
[bearbeiten] weiteres Wissenswertes
Nun noch eine kleine Ergänzung zur Benutzung der Sourcecode Textarea. Soll der PHP Code nur an bestimmten Stellen des Ablaufs ausgeführt werden kann dies durch folgende if - Abfragen beeinflusst werden.
- if (!$validate && !$back && !$submit){ /* bei Aufruf des Formulars */ }
- if ($validate){ /* auf der Kontrollseite */ }
- if ($back){ /* bei Änderung der Daten */ }
- if ($submit){ /* auf der Seite der Erfolgsmeldung */ }
Alle anderen Möglichkeiten sollten sich hieraus ergeben. Ich hoffe, ich konnte mit dieser kleinen Anleitung die Funktionsweise des FormBuilders ein wenig transparenter gestalten. Vielleicht kann der Eine oder Andere ihn ja gebrauchen?
Wer Fragen oder Anregungen zum Formbuilder hat kann sich gerne per PM im Forum bei mir melden. Viel Spaß mit dem Modul!
Stand: 08.11.2004 (bearbeitet von mika am 06.04.05)
für FormBuilder: v1.21
Doku-Version: v1.21.01