Backendfunktionen

Duplizieren eines Formulars

Durch auswählen eines existierenden Formulares in der Navigationsleiste und Klick auf das Icon :icon-form-duplicate.jpg wird dieses dupliziert. Das neue Formular wird in der selben Kategorie mit der Namenserweiterung '(Kopie)' abgelegt.

ID des erstellten Datensatzes

Der Tabellenname und die ID des Datensatztes der durch ein Formular erstellt/aktualisiert wird durch folgende Session-Variable übergeben:

$_SESSION['formmanager']['insData']['table']; $_SESSION['formmanager']['insData']['id'];

Standardwerte

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";

Auswahlfelder

Definition der Werte und Bezeichnungen

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...

HTML in ein Formular integrieren

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" />

Update von Datensätzen

Es gibt zwei Möglichkeiten einen Update eines Datensätzes zu ermöglichen. Diese sind im folgenden beschrieben. Wichtig: Bis jetzt hat der Update per formmanager-Tag einen höhere Priorität als die erste Methode!

Updatefeld im Formularmanager

Für jedes Formularelement gibt es eine Checkbox 'Updatefeld'. Sind eine oder mehrere aktiviert erhält man ein Formular, dass bei der Dateneingabe überprüft ob ein Datensatz mit den eingegebenen Daten existiert. Ist dies der Fall wird der gefundene Datensatz verwendet und bei den weiteren Tabellenfeldern (bei denen die Checkbox 'Updatefeld' nicht gesetzt ist) mit den neu eingegeben Daten aktualisiert. Ist der Datensatz nicht vorhanden dann erscheint die Standardfehlermeldung, sowie die Formularfeldfehlermeldung. Zu beachten ist, dass zu Beginn keine Daten in das Formular geladen werden.

Beispiel:

Bei der folgenden Abbildung wird für die Felder 'email' und 'password' geprüft ob ein Datensatz mit den Eingabewerten vorhanden ist. Ist dies der Fall werden die eingegebenen Daten für die Felder 'firsname' und 'surname' aktualisiert.

:form-update-field.jpg

Update per formmanager-Tag

Als weitere Möglichkeit kann ein Datensatz in ein Formular eingelesen werden. Bei korrekten Änderungen wird dieser dann aktualisiert. Dies ist möglich durch angeben der Attribute 'dbField' bzw 'dbFields' (Name(n) der/des Tabellenspalte(n)) und 'dbValue' bzw. 'dbValues' (Wert(e) der Tabellenspalte(n)). Bei der verwendung von 'dbFields' und 'dbValues' werden die einzelnen Werte durch | abgetrennt. Ist ein passender Datensatz nicht vorhanden wird ein neuer angelegt.

Das folgende Beispiel lädt falls vorhanden den Datensatz mit der aktuellen User-ID.

Bsp:

<ty:formmanager id="profile" dbField="user_id" dbValue="<? echo $_SESSION['subject_id'];?>" />
<ty:formmanager id="profile" dbFields="id|user_id" dbValues="<? echo $id ?>|<? echo $_SESSION['subject_id'];?>" />

Unique-Zuweisung

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.

Weiterleitung

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.

Backendformular in DB-Modul einbinden

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=1

Dabei 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.

Fehlermeldung

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)

Siteroles-Verwaltung

Mit dem Formularmanager kann ein Formular mit Zugriff auf die Siteroles erstellt werden. Folgende Typen von Formularelementen besitzen dafür nötige Einstellmöglichkeiten.

Formularelemente

  • text - Mail-Adresse
  • password
  • password - Validierung
  • einzelne Checkbox (Wenn diese nicht aktiviert ist werden die angegebenen Rollen entfernt (falls gesetzt))
  • hidden text

Einstellungen

  • Checkbox „aktivieren“ : das gewählte Formularelement wird für die Siteroles-Verwaltung aktiviert
  • Mehrfachauswahl Rollen : Auswahl der Rollen (Mehrfachauswahl: Strg-Taste + Rechtsklick)
  • Textfeld Attribute : pro Zeile kann ein Attribut getrennt durch „“ mit dazugehörigen Wert angegeben werden

Beschreibung

Aktuell angemeldeten Nutzer bearbeiten

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.

Neuen Nutzer anlegen

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.

Einen Nutzer bearbeiten

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.

Dateiupload

Um ein Formular mit Dateiupload zu erzeugen wählt man für ein den Formulartyp „File“ .

Datei-Prüfung

MIME-Types

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.

Dateigröße

Es kann optional eine maximale Dateigröße in Byte angegeben werden.

Speicherung

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.

Eigenes Dateihandling

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.

Datums-Feld

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>

Bekannte Bugs

  1. class=„desc-fieldset“ erscheint auch bei Feldern, denen man ein Klasse mit dem dem Wert: „display:none“ übergeben hat, die deshalb versteckt sind. Da die Fieldset-Beschreibung eine Standardklasse (desc-fieldset) nutzt, kann sie nicht auf „display:none“ gesetzt werden, alle anderen Fieldset-Beschreibungen würden sonst auch unsichtbar werden. Abhilfe schaft der Trick > Formularfeld einem bestehenden Fieldset zuordnen, so erzeugt es kein eigenes Fieldset. Es muss deshalb auch nicht versteckt werden.
  2. Formularfelder ohne Fieldsetzuweisung erscheinen immer am Anfang des Formulars
  3. Formularfelder können nur verschoben werden, in dem man die Feldeinstellungen in der Datenbank (Icon:Bleistift) ändern und die Positionierung tauscht.
  4. Richeditfelder erhalten immer eine ID, die dem Namen des Felds in der Datenbank entspricht. Ist diese ID bereits auf der Webseite für ein anderes Element vorhanden, wird das Richeditfeld nicht gespeichert.

Frontendfunktionen

Plugins

Der Formularmanager unterstützt Plugins um zusätzliche Formularelemente in einem Formular zu ermöglichen. Diese können in Abhängigkeit von bestimmten anderen Modulen stehen.

Plugins für den Formularmanager müssen sich im Ordner “/tycon/modules/formmanager/plugins“ befinden. Jedes Plugin muss das Interface „tyFormmanagerPlugins“ implementieren, welches sich in der Datei “/tycon/modules/formmanager/classes/tyFormmanagerPlugins.class.php“ befindet.

Der Name der Plugin-Klasse muss dem Dateinamen ohne die Dateiendung entsprechen (auch auf Groß-/Kleinschreibung achten - es empfiehlt sich deshalb Klassen- und Dateinamen komplett klein zu schreiben).

Das Interface tyFormmanagerPlugins

Das Interface besteht aus folgenden sechs Funktionen, die in jedem Plugin implementiert werden müssen:

public static function getAdditionalWidgets();
public static function getAdditionalWidgetSettings($widget,$formWidgetId,$values,$trClass);
public static function getWidgetCodeFor($widget,$layoutData,$pluginSettings);
public static function processWidgetData($widget,$inputName,$dbColumn,$pluginSettings);
public static function processWidgetDataError($widget,$inputName,$dbColumn,$pluginSettings);
public static function saveAdditionalData($dbData,$processedWidgets,$subjectId,$allPluginSettings);

Ist eine Funktion für ein bestimmtes Plugin nicht notwendig, muss diese lediglich aus einem return null bestehen. Dadurch signalisiert das Plugin, dass es das entsprechende Element nicht verarbeitet hat. Weiterhin muss jede Funktion für alle nicht verarbeiteten Felder null zurückliefern

Weitere Details zu den Funktionen sowie deren Anwendung finden sich direkt im Interface.

Aktuell verfügbare Plugins

Newsletter Themenauswahl ("newsletter_standard_plugin.php")

Liefert eine Auswahl mit Themengruppen eines Newsletters. Diese können zusätzlich zur angedockten Tabelle auch in den Nutzereinstellungen gespeichert werden.

 
forms.txt · Zuletzt geändert: 2010/05/27 12:00 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki