myty - Handbuch für Redakteure und Administratoren

Aktuelle Info zu Sicherheitsrisiken: In den aktuellen Versionen ab 4.1. sind keine Sicherheitsprobleme bekannt.  

Backendfunktionen

modul: formmanager
Release Info
Version: 4.0
SELECT SQL_CALC_FOUND_ROWS modulesfaq_questions.*, modulesfaq_answers.Version,`modulesfaq_questions`.`id`,`modulesfaq_questions`.`status` FROM `modulesfaq_questions` LEFT JOIN modulesfaq_answers ON modulesfaq_questions.id=modulesfaq_answers.modulesfaq_questions_id AND modulesfaq_answers.id=571 WHERE 1 AND modulesfaq_questions.id=394 AND `modulesfaq_questions`.`language` = 'de' AND `modulesfaq_questions`.status = 'enabled' LIMIT 0,1

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

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.

Datenausgabe innerhalb der Mailvorlage
Variante 1

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://&lt;?php echo $_SERVER['HTTP_HOST'].$GLOBALS['mytyBasePath']; ?&gt;/file.php?id={fileId}/&gt;">Link</a>
Variante 2

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:

  • für das Attribut col des Tags ty-db:colvalue muss der Spaltenname aus der Tabelle angegeben werden
<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>

Mail-Versand mit Dateianhang

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.

Beispiel für das Script

Hinweise:

  • im Konstruktor der Klasse mytyMail muss die Variable $topic durch Das Topic der Mailvorlage ersetzt werden. Dieses finden Sie beim Bearbeiten der Mailvorlage in der URL. Ein Topic beginnt immer mit tyNavigationTopicID_
  • Im Konstruktor der Klasse tyFileDB muss im Array $row als Schlüssel der Spaltenname für den Dateiupload verwendet

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();

Weiterleiten

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.
Autor: Conrad Gerlach
letzte Änderung: 07.09.2011
Kommentare 0
Fragen von Nutzern 0
ähnliche Themen 0

Ähnliche Beiträge

Es sind keine Beiträge verfügbar.

Empfohlene Beiträge

Es sind keine Beiträge verfügbar.

Kommentieren

 

Stellen Sie eine Frage

 

offene Fragen

Zu diesem Beitrag existieren keine offenen Fragen.

SELECT modulesfaq_questions.*, (SELECT modulesfaq_answers.id FROM modulesfaq_answers WHERE modulesfaq_answers.status='enabled' AND modulesfaq_answers.modulesfaq_questions_id = modulesfaq_questions.id ORDER BY modulesfaq_answers.Version DESC Limit 1) AS answer, (SELECT modulesfaq_answers.id FROM modulesfaq_answers WHERE modulesfaq_answers.modulesfaq_questions_id = modulesfaq_questions.id ORDER BY modulesfaq_answers.Version DESC Limit 1) AS answerCount, (SELECT COUNT(*) FROM modulesfaq_questions AS MQ WHERE MQ.Modul = modulesfaq_questions.Modul GROUP BY MQ.Modul) AS questionsByModul FROM modulesfaq_questions WHERE 1 AND modulesfaq_questions.language = 'de' AND modulesfaq_questions.status = 'enabled' AND modulesfaq_questions.Modul = 'formmanager' ORDER BY modulesfaq_questions.Modul, modulesfaq_questions.pos, modulesfaq_questions.Frage

Alle Beiträge zum Thema

Auf Facebook teilen