|
Auf 'instant_form' haben Sie angegeben, welche Seite zur
Auswertung der Formular-Eingabe aufgerufen werden soll. Damit diese
Seite tatsächlich diese Eingaben auswerten kann, muss es z.B. die
External Source 'instant_form_feedback' enthalten. Diese External
Source wertet die Eingabe aus und ruft danach ein Skript auf, welches
die Eingabe weiterverwendet. In diesem Skript (referenziert durch den
zweiten Parameter) können Sie die weitere Verarbeitung der eingegebenen
Daten frei steuern. Sie können die Daten in einem Mail verschicken und
zusätzlich eine Bestätigungsmail an den Kunden versenden, Sie können
die Daten in einer Datenbank speichern etc.
Diese External Source hat vier Parameter:
Mit diesen Parametern können Sie steuern, wie die Eingabe
verarbeitet wird. Wenn Sie die beiden letzten Parameter (bezüglich
Bestätigung) leer lassen, so wird keine Bestätitungsseite eingeblendet.
Die Eingabe wird nach Betätigen der Senden-Schaltfläche sofort vom
Verarbeitungs-Skript (gemäss zweitem Parameter oder standardmässig)
ausgewertet.
Die Aufgabe dieser Skripte ist, die Eingabe aus dem Formular zu verarbeiten und eine sinnvolle Meldung zurückzugeben. Sie können mit der return Anweisung einen html-formatierten Text zurückgeben, welcher in der Folge auf dem dem Silva-Dokument an der Stelle des Bestätigungs-Elements angezeigt wird.
Die Skripte müssen genau einen Parameter besitzen. Mit
diesem Parameter werden den Skripten ein Resultat-Objekt übergeben.
Dieses Resultat-Objekt ermöglicht den Zugriff auf die Formular-Daten.
Mit Hilfe des Resultat-Objekts können Sie wie folgt auf die Felder zugreifen (Annahme: Der Parameter heisse 'result_obj', die ID des Eingabefelds sei 'mail_from'):
result_obj.fields()['mail_from']['value']
gibt die Benützer-Eingabe in das Feld 'mail_from' zurück.
result_obj.fields()['mail_from']['title']
gibt den Titel des Felds 'mail_from' auf dem Formular zurück (z.B. 'Absenderadresse').
Wenn
das Eingabefeld für 'mail_from' allerdins kein zwingendes Formularfeld
ist, so führt der Zugriff result_obj.fields()['mail_from'] unter Umständen zu einem
Fehler. In solchen Fällen empfiehlt sich folgende Variante:
field = result_obj.fields().get('mail_from', {'value':'', 'title':''})
Der Zugriffsmethode wird ein optionales Argument zugefügt, welches zurückgegeben wird, wenn das Dictionary keinen Eintrag mit dem Schlüssel 'mail_from' enthält. Auf diese Weise ist sichergestellt, dass die Variable
'field' ein Dictionary mit den beiden Einträgen 'value' und 'title'
enthält.
##parameters=result_obj ##title=Script to process form input from Products.SilvaExtETHLayout.helpers import send_mail if result_obj.isBotSuspect(): return '' mail_to = u'helpdesk@id.ethz.ch' fields = result_obj.fields() mail_from = fields.get('mail_from', {'value':u'', 'title':u''})['value'] mail_subject = u'[WCMS] Beispiel für Verarbeitungs-Skript' mail_text = u'Beispiel für Verarbeitungs-Skript\n\n' mail_text += result_obj.get_mailbody() result = send_mail(context, mail_to, mail_from, mail_subject, mail_text) if result: return '<p>%s</p>' %result out_html = '' for id, title, value in result_obj.get_fields(): if value: out_html += u'<i>%s</i>: %s<br />' %(title, value) #Send confirmation to user's address if mail_from: result = send_mail(context, mail_from, mail_from, mail_subject, mail_text) out = u'<p>Das Formular mit folgendem Inhalt wurde abgeschickt:</p><p>%s</p>' return out %out_html
Dem Skript werden im Parameter 'result_obj' die eingegebenen
Werte aus dem Formular übergeben. Mit diesen Eingaben werden die
Variable mait_to etc. initialisiert. Das Skript prüft dabei, ob die
Felder wirklich vorhanden sind. Mit diesen Eingaben soll ein Mail an
das Helpdesk geschickt werden. Zu diesem Zweck wird die Funktion send_mail
importiert und aufgerufen. Sind Probleme beim Abschicken der Mail
aufgetreten, so gibt die Funktion eine entsprechende Fehlermeldung
zurück. Im Erfolgsfall wird ein Leerstring zurückgegeben. Danach wird
zur Bestätigung eine Mail an den Sender geschickt. Am Schluss des
Skripts wird eine Meldung formatiert und mit return zurückgegeben.
Bemerkung: Alle Strings im Skript sind Unicode (mit Hilfe von u'Text ...'), ebenso die Werte, welche das 'result_obj' liefert.
Die Methode send_mail steht standardmässig zur Verfügung. Sie spricht den auf dem System konfigurierten Mail-Host an kann mit Products.SilvaExtETHLayout.helpers importiert werden.
##parameters=result_obj ##title=Script to prepare the confirmation page out_html = '' for id, title, value in result_obj.get_fields(): if value: out_html += '<i>%s</i>: %s<br />' %(title, value) return out_html + '<p> </p>'
Wichtiger Hinweis:
Diese Website wird in älteren Versionen von Netscape ohne
graphische Elemente dargestellt. Die Funktionalität der
Website ist aber trotzdem gewährleistet. Wenn Sie diese
Website regelmässig benutzen, empfehlen wir Ihnen, auf
Ihrem Computer einen aktuellen Browser zu installieren. Weitere
Informationen finden Sie auf
folgender
Seite.
Important Note:
The content in this site is accessible to any browser or
Internet device, however, some graphics will display correctly
only in the newer versions of Netscape. To get the most out of
our site we suggest you upgrade to a newer browser.
More
information