Anfrageformular

    Mit dem Bakehouse können Formulare sehr einfach integriert und auf die eigenen Bedürfnisse angepasst werden. Um diese Funktion zu benützen, muss die Formular-Erweiterung installiert sein.

    Die Erweiterung liefert zwei Standardformulare aus:

    • simple: Einfaches Kontaktformular mit Name, E-Mail und Nachricht 
    • inquire: Anfrageformular mit Adressfeldern, An- und Abreise (geeignet für z. B. Hotels) 

    Beide Varianten sind lokal verfügbar (fileadmin/templates/ext/coo_quickanfrage) und auf eigene Bedürfnisse anpassbar. 

    Um sicherzustellen, dass das Formular funktioniert, müssen Fluid-Formular-Tags und folgendes Grundgerüst verwendet werden:

    HTML
    {namespace bh=TYPO3\Bh\ViewHelpers} {namespace anfrage=TYPO3\CooQuickanfrage\ViewHelpers} <anfrage:form> <f:form.textfield name="mail" placeholder="E-Mail*" /> <f:form.submit value="Anfrage absenden" /> <div class="formloader"></div> </anfrage:form>

    Zuerst sollten die beiden Namespaces für bh und anfrage definiert werden, da diese für das Generieren der Felder benötigt werden. Es muss der anfrage:form-ViewHelper verwendet werden, da dieser bereits viele Dinge für das Anfrageformular vorbereitet. Er generiert den form-Tag sowie Einstellungen, damit das Formular an die richtige Aktion im Bakehouse geleitet wird und fügt auch automatisch die Felder hinzu, die für die Antispamsicherheit benötigt werden.

    Folgende Punkte müssen bei der Implementierung beachtet werden: 

    • Das Feld mail <f:form.textfield name="mail" placeholder="E-Mail*" /> muss immer vorhanden sein, da dieses als Absender verwendet wird. Falls dieser statisch sein soll, kann man sich mit einem Hidden-Field helfen und dort die statische E-Mail-Adresse im value-Attribut setzen.
    • Die CSS-Klasse formloader muss für den Container des Loader-GIFS, das beim Absenden (submit) des ausgefüllten Formulars angezeigt wird, verwendet werden.
    • Empfängermail, Formularauswahl, Verteiler usw. können vom/von der Redakteur:in in den Plugin-Settings angegeben werden. Alle Anfragen werden gespeichert und sind unter
      adresslist Anfragen bei den Bakehouse-Apps einsehbar.

    Konfiguration eines Anfrageformulars inkl. Validierung

    Typoscript
    plugin.tx_bh.settings.contentElements { bhAnfrage { forms { inquire { properties { datum { validators { notempty.name = NotEmpty notempty.errorMessage = TEXT notempty.errorMessage.value = Datum darf nicht leer sein notempty.errorMessage.lang.en = Date must not be empty } } } } } } }

    Referenzdaten einbinden

    Will man in seinem Formular Datensätze verwenden (z. B. für Checkboxen), kann man dies mit dem bh:repository.load-ViewHelper machen:

    HTML
    <bh:repository.load repository="MyRepository" method="findAll" as="rooms"> <f:for each="{rooms}" as="room"> <span><f:form.checkbox name="rooms[]" value="{room.name}" /></span> </f:for> </bh:repository.load>

    Beispiel:

    HTML
    <f:for each="{refData.zimmer}" as="zimmer"> ... </f:for> <f:for each="{refData.pauschalen}" as="pauschale"> ... </f:for>

    Newsletter-Anmeldung

    Um bei Formularen eine Newsletter-Anmeldung hinzuzufügen, z. B. in Form einer Checkbox, kann das Feld newsletter mit dem Wert 1 hinzugefügt werden. Wird ein Formular jedoch nur zur Newsletter-Anmeldung verwendet, sollte das Newsletter-Anmeldung-Plugin verwendet werden.

    Folgende Felder werden in das Newsletter-Modul übernommen:

    • mail
    • vorname
    • nachname
    • forename
    • surname
    • name

    Checkbox-Beispiel:

    HTML
    <f:form.checkbox name="newsletter" value="1" />

    Datei-Upload (Anhänge)

    Um es zu ermöglichen, dem Anfrageformular Dateien hinzuzufügen, die dann an die Mail angehängt werden, muss dem anfrage:form-ViewHelper folgendes enctype-Attribut mitgegeben werden:

    HTML
    <anfrage:form enctype="multipart/form-data">

    Im Formular selber muss dann noch ein Upload-Feld eingebaut werden. Wir empfehlen dies mit dem Fluid-ViewHelper f:form.upload zu machen.

    HTML
    <f:form.upload name="upload" additionalAttributes="{accept: 'image/x-png,image/gif,image/jpeg'}" />

    Wenn die Dateien zu groß für den E-Mail-Anhang sind (Standardgrenze: 10 Megabyte), werden sie auf dem Webserver zwischengespeichert. Ein Link zum Herunterladen der Datei wird der E-Mail als Anhang hinzugefügt. Die auf dem Webserver gespeicherten Dateien werden nach einer bestimmten Zeit automatisch gelöscht (Standard: 30 Tage).

    Typoscript
    # Maximale Größe in MB plugin.tx_cooquickanfrage.settings.attachmentMaxSize = 10 # Maximale Speicherdauer in Tage plugin.tx_cooquickanfrage.settings.attachmentExpiration = 30

    Mail Versandadresse ändern

    Diese E-Mail-Adresse muss im SPF Eintrag alle Bakehouse Server hinterlegt haben.

    Typoscript
    plugin.tx_bh.settings.contentElements.bhAnfrage.forms.[FORMKEY] { mailConfirmFrom = donotreply@bakehouse.at }

    Notwendige und empfohlene DNS Einträge:

    DNS Einstellungen für den Versand von Mails

    Bestätigungsmail und Daten

    Das Bestätigungsmail kann selbst angepasst werden. Auf die HTML-Datei verweist man folgendermaßen:

    Typoscript
    plugin.tx_bh.settings.contentElements.simple.forms.warenkorb.mailTemplate = fileadmin/templates/confirmation.html

    Auf die Daten kann via {data} beziehungsweise {item} zugegriffen werden.

    Mehrere Mail-Templates pro Formular anbieten

    Sollten bei einem Formular mehrere Mail-Templates benötigt werden, so können im TypoScript für jedes Formular weitere Send- und Confirm-Mail-Templates definiert werden:

    Typoscript
    plugin.tx_bh.settings.contentElements.el-form-manager { forms { [FORMKEY] { mailTemplates { sendMail { gewinnspiel = fileadmin/templates/mails/gewinnspiel_send.html zimmer = fileadmin/templates/mails/zimmer_send.html } confirmMail { gewinnspiel = fileadmin/templates/mails/gewinnspiel_confirm.html zimmer = fileadmin/templates/mails/zimmer_confirm.html } } } } }

    Sobald im TypoScript weitere Templates definiert sind, kann der/die Redakteur:in im Settingsformular des Anfrage-Managers zwischen den angebotenen Templates wählen.

    Daten nicht speichern

    In seltenen Fällen kann es nötig sein, die Anfrage nicht im System zu erfassen. Das trifft vor allem zu, wenn es um sehr sensible Daten geht. Hierfür kann man man pro Formular im TypoScript festlegen, ob die Daten in der Datenbank gespeichert werden oder nicht:

    Typoscript
    # 0 = nicht speichern # 1 = speichern (default, wenn nicht gesetzt) plugin.tx_bh.settings.contentElements.bhAnfrage.forms.[FORMKEY] { saveToDatabase = 0 }
    Hinweis

    Hooks und Mails

    Durch diese Option wird nur das Speichern in der Datenbank unterbunden. Hooks und dergleichen werden trotzdem, falls vorhanden, ausgeführt und eingestellt.