Für jedes Formularelement kann im Formularmanager über das Feld „Standardwert“ ein Text als Standardwert angegeben. Außerdem kann man den Wert einer Variablen als Standardwert eines Formularelementes übergeben. Dazu gibt man im Schnipsel vor dem Tag <ty:formmanager … /> die Wert für die Variable $GLOBALS['tyFormManager']['<FELDNAME>']['value'] an. Für FELDNAME wird dabei der Name des Tabellenfeldes angegeben bzw. wenn eingetragen der Wert für das „name-Attribut“.
Beispiel:
$GLOBALS['tyFormManager']['firstname']['value']="Standardwert von firstname";
Um die Werte getrennt von den Bezeichnungen zu definieren (z.B. für Mehrsprachige Formular), kann man im Textfeld „Werte (pro Wert, eine Zeile)“ diese Werte folgendermaßen hinterlegen:
Bezeichnung|value=wert zweite Bezeichnung|value=wert_2 usw...
Ist es notwendig in ein Formular eigenen HTML-Code einzubinden kann dies jeweils vor bzw. nach einen jeden Formularelement geschehen. Für 'feldname' wird dabei der Name des Tabellenfeldes angegeben bzw. wenn eingetragen der Wert für das “name-Attribut“.
Beispiel:
<?php
$GLOBALS['tyFormManager']['feldname']['before'] = "<p>Ein Formularelement</p>";
$GLOBALS['tyFormManager']['feldname']['after'] = "<p>Ende des Elementes</p>";
?>
<ty:formmanager id="profile" />
Mit dieser Zuweisung kann man ein bestimmtes Formularelement als eindeutiges Feld definieren. Sollte der Inhalt dieses Feldes schon in einem vorhandenem Datensatz in der Tabelle stehen, kann das Formular nicht abgeschickt werden. Der Unique-Text wird in diesem Fall im Formular angezeigt. Diese Zuweisung dient dazu, doppelte Datensätze zu vermeiden.
Die Formulardaten können im Text mit {SPALTENNAME} eingetragen werden.
<ty:db table="<?php echo $_SESSION['formmanager']['insData']['table'];?>" id="<?php echo (int)$_SESSION['formmanager']['insData']['id'];?>" limit="1" > Name: {name} Dateidownload: <a href="http://<?php echo $_SERVER['HTTP_HOST'].$GLOBALS['mytyBasePath']; ?>/file.php?id={fileId}/>">Link</a>
Die Formulardaten können über das ty:db-Tag ausgelesen werden. Die Dokumentation für dieses Tag finden Sie unter http://tags.myty.de/.
Die ID des Datensatz ist in der Variable $_SESSION['formmanager']['insData']['id'] gespeichert.
Beispiel:
<ty:db table="<?php echo $_SESSION['formmanager']['insData']['table'];?>" id="<?php echo (int)$_SESSION['formmanager']['insData']['id'];?>" limit="1" > Name: <ty-db:colvalue col="name"/> Dateidownload: <a href="http://<?php echo $_SERVER['HTTP_HOST'].$GLOBALS['mytyBasePath']; ?>/file.php?id=<ty-db:colvalue col="fileId"/>">Link</a> </ty:db>
Soll der Mail-Versand mit Dateianhang erfolgen muss ein eigenes Script erstellt und im /templates/-Ordner gespeichert werden.
Der Pfad muss beim Bearbeiten des Formulars unter Script-Anbindung - Datenspeicherung eingetragen werden.
Liegt das Script im Verzeichnis /httpdocs/templates/includes/form.php muss /includes/form.php eingetragen werden.
Hinweise:
werden.
include_once($GLOBALS['mytyInstallPath'].'/modules/mail/class.mail.php'); require_once($GLOBALS['mytyInstallPath'].'/modules/filemanagerv2/inc.php'); require_once($GLOBALS['mytyInstallPath'].'/modules/filemanagerv2/classes/tyFileDB.class.php'); //Daten laden $row = array(); try { $res = tyDB::query('SELECT * FROM `'.$_SESSION['formmanager']['insData']['table'].'` WHERE `id` = '.(int)$_SESSION['formmanager']['insData']['id'].' LIMIT 1'); $row = tyDB::fetchAssoc($res); tyDB::free($res); } catch (Exception $e) { trigger_error($e->getMessage()); } //Datei laden $tyFileDB = new tyFileDB((int)$row['fileId']); $filePath = $tyFileDB->getRealPath(); //Mail initialisieren $mail = new mytyMail($topic,false); // Variablen in der Mailvorlage bereitstellen (können im Text mit {Variablenname} abgerufen werden) $mail->setVariables($row); $mail->load(true); // optionale Einstellungen $mail->setRecipient($rec_mail); $mail->setRecipientCC($rec_mail_cc); $mail->setSender($senderMail); $mail->setSenderName($sender_name); $mail->setSubject($subject); // Dateien als Anhang versenden $mail->setFiles(array($filePath)); $mail->send();
Nach erfolgreicher Dateneingabe kann an eine Weiterleitung erfolgen. Dabei kann der Pfad zu einen Script im templates-Ordner oder an eine Seite mit bestimmten Topic erfolgen.
Soll ein Formular mehrfach verwendet werden und an jeder Stelle an ein anderes Topics weitergeleitet werden kann man dies über das Attribut „nextTopic“ im formmanager-Tag erreichen.
Ein im Formularmanager generiertes Formular für das Backend (Haken bei Backend muss gesetzt sein), kann im Datenbank-Manager als Formular für die Bearbeitung der einzelnen Datensätze verwendet werden, dazu muss folgender Link im Setup (Datentabelleneinstellungen) einer Datentabelle im Feld „Formulardatei“ eingefügt werden:
/tycon/modules/formmanager/form_preview.php?form=1Dabei wird mit „form=1“ das festgelegte Formular aus den Formular-Manager angesprochen. Die ID kann man herausbekommen, in dem man sich im Formular-Manager eine Formularpreview anzeigen lässt und sich unter Eigenschaften den Dateipfad anschaut. Dort ist der Wert beschrieben.
Die CSS-Klasse bei fehlerhaften Eingaben kann im Feld „class-Attribut bei Eingabefehler“ angegeben werden. Falls keine eigene CSS-Fehlerklasse angegeben wurde wird standardmäßig „tyFmError“ in dem DIV-Element verwendet, welches das Label und das Formularelement umschließt.
<div class="div-form-text tyFmError">
<div class="form-label">
<label for="formEl_4">Vorname</label>
</div>
<input type="text" class="form-text" id="formEl_4" name="firstName"/>
</div>
Treten bei der Dateneingabe Fehler auf (z.B nicht ausgefülltes Pflichfeld)
Mit dem Formularmanager kann ein Formular mit Zugriff auf die Siteroles erstellt werden. Folgende Typen von Formularelementen besitzen dafür nötige Einstellmöglichkeiten.
Die Rollen bzw. Attribute das aktuell angemeldeten Benutzer werden entsprechend den Einstellungen geändert, falls keine E-Mail aus dem Formularelemente text - Mail-Adresse übergeben wird bzw. kein entsprechendes Formularelement im Formular existiert.
Das Formular muss mindestend die Formularelemente text - Mail-Adresse und password bzw. password - Validierung enthalten. Die E-Mail-Adresse wird standardmäßig auf Gültigkeit geprüft und ob diese bereits im System registriert ist. Ist dies nicht der Fall wird ein neuer Nutzer mit den angegebenen Werten (E-Mail, Passwort, Rollen und Attributen) angelegt. Außerdem wird die Registrierungszeit (Attribut register_date, Wert als Timestamp) gespeichert. Ist die E-Mail in den Siteroles bereits registriert wird die definierte Fehlermeldung ausgegeben. Zu beachten ist, dass die Checkbox „Updatefeld“ nicht aktiviert ist. Im erstellten Datensatz wird im Feld user_id die ID des neu erstellten Nutzers gespeichert.
Die Siteroles-Daten eines registrierten Nutzers können folgendermaßen verändert werden. Für das Formularelemente text - Mail-Adresse muss die Checkbox „Updatefeld“ aktiviert sein. Gibt der Nutzer in das E-Mail-Feld seine Mail-Adresse an wird geprüft ob diese im System registriert ist. Ist dies der Fall werden die Änderungen in den Siteroles entsprechend den Einstellungen geändert.
Um ein Formular mit Dateiupload zu erzeugen wählt man für ein den Formulartyp „File“ .
Um den Dateiupload auf bestimmte Dateitypen einzuschränken kann optional unter „MIME-Types“ ein oder mehrere (mit Komma getrennt) MIME-Types angegeben werden. Für Bilder wären dies „image/jpeg,image/pjpeg,image/jpg,image/pjpeg“. Die Angabe von z.B Image/* ist noch nicht möglich. Unter http://de.selfhtml.org/diverses/mimetypen.htm#uebersicht findet man eine Übersicht über alle möglichen MIME-Types.
Es kann optional eine maximale Dateigröße in Byte angegeben werden.
Unter „Upload-Verzeichnis“ muss der Name des Ordners unter Media/Files angegeben werden, in dem die Dateien gespeichert werden sollen. Es können auch PHP-Variablen mit angegeben werden z.B.:
"User_".$_SESSION['subject_id'];
Ist der Ordner nicht vorhanden wird er neu angelegt.
Standardmäßig wird die Datei in den Dateimanager importiert und die ID des Datei-Eintrages gespeichert.
Soll ein eigenes Script für den Dateiupload verwendet werden, muss man am unteren Ende des Formularmanagers unter „Datei-Upload“ die checkbox aktivieren. Die Prüfung auf die maximale Dateigröße und den angegebenen MIME-Types wird trotzdem durchgeführt.
Für die Auswahl eines Datums gibt es das Formularelement „text - Datumsauswahl“ Bei diesem Element wird eine Textbox mit einen Button erzeugt. Bei Click auf den Button öffnet sich ein Kalender. Damit dies funktioniert muss folgende Styles und JavaScripts eingebunden werden und JavaScript aktiviert sein:
<link type="text/css" rel="stylesheet" href="/tycon/calendar/calendar-blue.css" />
<script type="text/javascript" src="/tycon/calendar/calendar.js"></script>
<script type="text/javascript" src="/tycon/calendar/lang/calendar-de.js"></script>
<script type="text/javascript" src="/tycon/calendar/calendar_start.js"></script>
Der Formularmanager unterstützt Plugins um zusätzliche Formularelemente in einem Formular zu ermöglichen. Eine Anleitung zum Erstellen eigener Plugins mit PHP gibt es hier.
Verarbeitet einige Elemente die für das Anlegen von Blogeinträgen notwendig sind. Weiterhin werden auch die Blog-Plugins durch dieses Plugin aufgerufen und es werden die Blog-Mails versendet. Ersetzt das klassische Einträge-Anlegen-Formular des Blogs ohne Formularmanager. (Nur verfügbar in der Blog Tabelle)
Verarbeitet einige Elemente die für das Anlegen von Blogkommentaren notwendig sind. Weiterhin werden auch die Blog-Plugins durch dieses Plugin aufgerufen und es werden die Blog-Mails versendet. Ersetzt das klassische Kommentarformular des Blogs ohne Formularmanager. (Nur verfügbar in der Blog Tabelle)
Speichert die ID des aktuellen myty Projekts in das betreffende Feld.
Liefert eine Auswahl mit Themengruppen eines Newsletters. Diese können zusätzlich zur angedockten Tabelle auch in den Nutzereinstellungen gespeichert werden. (Nur verfügbar mit dem Newsletter Standard Modul)
Bindet ein externes CAPTCHA in das Formular ein. Kann als Alternative zum integrierten CATPCHA verwendet werden. Es ist wichtig, dass bei diesem Plugin das Häkchen bei „Pflichtfeld“ NICHT gesetzt ist. Da die Auswertung des CATPCHAs durch Google stattfindet und nicht durch den Formularmanager, ist der Wert, den der Formularmanager erhält immer leer. Der Wert des reCAPTCHAs kann somit auch nicht gespeichert werden.
Weitere Informationen zu reCAPTCHA findet man hier.
Bietet eine alternative Datumsauswahl und die Möglichkeit neben dem Datum auch eine Zeit einzugeben. Das Format des Datums kann am Plugin definiert werden (entspricht in der Standardeinstellung dem deutschen Datumsformat), weiterhin können zusätzliche Parameter für die Darstellung und eine alternative CSS-Datei definiert werden. Weitere Informationen über die möglichen Parameter, die im Feld „Kalender Optionen“ eingetragen werden können, befindet sich auf der Webseite des Datepicker Plugins.