.. You may want to use the usual include line. Uncomment and adjust the path. .. include:: ../Includes.txt ============ Logical Form ============ :Author: Kasper Skårhøj :Created: 2002-11-01T00:32:00 :Changed by: dirk :Changed: 2015-01-08T15:19:02 :Classification: logical_form :Description: This extension is helpful, if you have to evaluate the values of a form. The form will be evaluated after sending and it will differs between a success and a failure case. The form handles the result. :Keywords: form :Author: Dirk Wildt (Die Netzmacher) :Email: http://wildt.at.die-netzmacher.de :Website: http://die-netzmacher.de :Language: en |img-1| |img-2| Logical Form (logical\_form) |img-3| .. _Logical-Form: Logical Form ============ This extension is helpful, if you have to evaluate the values of a form. The form will be evaluated after sending and it will differs between a success and a failure case. The form handles the result. |img-4| Version: 2.0.0 - 2015-01-08 Extension Key: logical\_form Language: en Keywords: form Copyright 2007-2015, Dirk Wildt (Die Netzmacher), This document is published under the Open Content License available from `http://www.opencontent.org/opl.shtml `_ The content of this document is related to TYPO3 - a GNU/GPL CMS/Framework available from `www.typo3.org `_ .. _Table-of-Contents: Table of Contents ----------------- `Logical Form 1 <#__RefHeading__1081_2025896289>`_ `Introduction 3 <#__RefHeading__5314_972996133>`_ `What does it do? 3 <#__RefHeading__5316_972996133>`_ `Screenshots 4 <#__RefHeading__5318_972996133>`_ `Users manual 5 <#__RefHeading__5320_972996133>`_ `Quick start 5 <#__RefHeading__5322_972996133>`_ `Update 5 <#__RefHeading__5324_972996133>`_ `Installation 6 <#__RefHeading__5326_972996133>`_ `Extension Manager 6 <#__RefHeading__5328_972996133>`_ `Tutorial 7 <#__RefHeading__5330_972996133>`_ `Default mode 7 <#__RefHeading__5332_972996133>`_ `Disclaimer with two steps 9 <#__RefHeading__5334_972996133>`_ `Confirmation mode 14 <#__RefHeading__5336_972996133>`_ `Mail 21 <#__RefHeading__5338_972996133>`_ `Avoid Spam 23 <#__RefHeading__5340_972996133>`_ `Troubleshooting 23 <#__RefHeading__5342_972996133>`_ `Reference 25 <#__RefHeading__5344_972996133>`_ `General Settings 25 <#__RefHeading__5346_972996133>`_ `Captcha 26 <#__RefHeading__5348_972996133>`_ `Workflow and Pids 26 <#__RefHeading__5350_972996133>`_ `General Field Settings 27 <#__RefHeading__5352_972996133>`_ `Settings for an Input Field 27 <#__RefHeading__5354_972996133>`_ `Settings for a Textarea 28 <#__RefHeading__5356_972996133>`_ `Settings for a Radio Button 28 <#__RefHeading__5358_972996133>`_ `Settings for a Checkbox 29 <#__RefHeading__5360_972996133>`_ `Settings for a Selectbox 29 <#__RefHeading__5362_972996133>`_ `General Mail Settings 30 <#__RefHeading__5364_972996133>`_ `Mail Settings for a Report Mail 30 <#__RefHeading__5366_972996133>`_ `Mail Settings for the Client Mail 30 <#__RefHeading__5368_972996133>`_ `Language and translation 31 <#__RefHeading__5370_972996133>`_ `Files 32 <#__RefHeading__5372_972996133>`_ `Helpful suggestions 33 <#__RefHeading__5374_972996133>`_ `ToDo 34 <#__RefHeading__5376_972996133>`_ `Further Information 35 <#__RefHeading__7558_383428842>`_ `Other extensions published by Die Netzmacher 35 <#__RefHeading__47337_1076586945>`_ `Changelog 36 <#__RefHeading__5384_972996133>`_ `Illustration Index 37 <#__RefHeading__1147_2025896289>`_ `Alphabetical Index 38 <#__RefHeading__47339_1076586945>`_ .. _Introduction: Introduction ------------ .. _What-does-it-do: What does it do? ^^^^^^^^^^^^^^^^ This extension is helpful, if you have to evaluate the values of a form. The form will be evaluated after sending and it will differs between a success and a failure case. The form handles the result. There are two alternate workflows: - Disclaiming: In case of a failure there will be a failure page. - Confirmation: In case of a failure there will be an error message in the form. The form will configured in typoscript. So you don't have to know anything about php but you need a little experience in configuring typoscript. If you want, the form generates mails to providers and visitors. .. _Features: Features """""""" - A plugin with a form with an internal logic, which is evaluating values and has two possible workflows. - In the default mode there are a select field for countries and an input field for a city. In the default mode you have to configure nothing but the pids of the success page and the failure page. - If you like, the web master and the provider or the visitor of your website will get a mail with values and the result. - It's possible to check mail addresses if they have a wrong syntax like a missing @. - Full multi language support with TYPO3, configuration with typoscript. - The form is in Xhtml. .. _Requirements: Requirements """""""""""" Nothing. .. _Screenshots: Screenshots ----------- .. _generated: ((generated)) ^^^^^^^^^^^^^ .. _Form-and-Workflow: Form and Workflow """"""""""""""""" |img-5| |img-5| |img-5| |img-5| |img-5| |img-5| .. _Plugin: Plugin """""" |img-5| |img-6| .. _Users-manual: Users manual ------------ .. _Quick-start: Quick start ^^^^^^^^^^^ - Install the extension with the extension manager. - Create the pages Disclaiming - Success - Failure - Insert the plugin in the page content. - Include static extension template - Configure the extension logical\_form in the template setup. .. _Update: Update ^^^^^^ If you are update from Version 0.0.12 or earlier you have to load the include static template a second time. See "Configure the extension template" on page 8. .. _Installation: Installation ------------ .. _Extension-Manager: Extension Manager ^^^^^^^^^^^^^^^^^ Open the extension manager download the Logical Form extension (key logical\_form) and install it: |img-5| .. _Tutorial: Tutorial -------- .. _Default-mode: Default mode ^^^^^^^^^^^^ You can use the logical form immediately. In the default mode the logical form has - a country field and - a city field. The form evaluates - if obligated fields are filled up and - if the visitor is from the European Union or not. .. _Create-pages-with-content: Create pages with content """"""""""""""""""""""""" Add three pages with the following structure to your typo3 backend: Default sample - Success - Failure |img-5| In the page “Success” you add a text element with this content e.g.: You are European Union! The evaluation of the data was successful. You can publish here everything for visitors who are from a country in the European Union like - Germany or - Spain In the page “Failure” you add a text element with this content e.g.: Not a member of EU You can publish here everything for visitors who are not from the European Union because they are from - Switzerland or - USA Add the plugin “logical form” to the page “Default sample” .. _Configure-the-extension-template: Configure the extension template """""""""""""""""""""""""""""""" Next, please add an extension template with the name “+ext logical\_form”. |img-5| Configure the template: Insert in the field “setup” the following lines (the pids are the pids of your pages “Success” and “Failure): plugin.tx\_logicalform\_pi1.pids.success = 637 plugin.tx\_logicalform\_pi1.pids.failure = 636 Insert in the field “include static template” the template “Logical Form (logical\_form)” like in the illustration below. |img-5| .. _The-result-in-the-frontend: The result in the frontend """""""""""""""""""""""""" |img-5| The result in the frontend have to be the logical form like in the illustration. Please test your logical form (look the examples above in the chapter “screenshots” on page 4): Send the form without any value: There will be two error messages. Send it with the values “Germany” and a city of your choice: There will be the message, that you are a member of the European Union. Send it with the values “Switzerland” and a city of your choice: There will be the message, that you aren't a member of the European Union. If you want to know, how to configure the logical form plugin - give the two further examples a trial in the tutorial below or - take a look in the reference on page 25 or - check the setup of the tx\_logicalform\_pi1 with the typoscript object browser. .. _Disclaimer-with-two-steps: Disclaimer with two steps ^^^^^^^^^^^^^^^^^^^^^^^^^ In this exercise we use the logical form in a cascading way: We ask, if the user understand our disclaimer. If yes we will guide our visitor to the next page, where we will ask him, if he is a member of the European Union. We will add some country fields. |img-7| Illustration 13: Page tree in the backend We need following pages and structure: Disclaiming - Country - Success - Failure - Failure Feel free to add the following content: Disclaiming:DisclaimerThis is the place where you can explain what to disclaim. In the first step you can ask your visitor if he understands your explanation. - Country:Are you a member of EU?We want to know, if a visitor is coming from a country which is a member from the european union. If yes, we will guide him to a "success"-page. We will guide all other vistors to a "unsuccess"-page. - SuccessYou are European Union!The evaluation of the data was successful. You can publish here everything for visitors who are from a country in the European Union like- Germany or- Spain - Failure:Not a member of EUYou can publish here everything for visitors who are not from the European Union because they are from- Switzerland or- USA - FailureSorry, you are to stupidWe can't help you anymore. Now we build our first own logical form. .. _Add-the-plugin-logical-form: Add the plugin logical form """"""""""""""""""""""""""" Add the plugin logical form in the pages Disclaiming and Country .. _Configure-the-extension-template-of-the-page-Disclaiming: Configure the extension template of the page Disclaiming """""""""""""""""""""""""""""""""""""""""""""""""""""""" Next, please add an extension template with the name “+ext logical\_form” like in the example of “configure the extension template” on page 8. Insert in the field “setup” the following lines (the pids are the pids of your pages “Country” (case success) and “Failure” (like the illustration on page Fehler: Referenz nicht gefunden): # \# WORKFLOW \# ======== # plugin.tx\_logicalform\_pi1.workflow = failure\_page plugin.tx\_logicalform\_pi1.pids.failure = 493 plugin.tx\_logicalform\_pi1.pids.success = 494 # \# FIELDS, WE DON'T NEED \# ===================== # plugin.tx\_logicalform\_pi1.fields.country > plugin.tx\_logicalform\_pi1.fields.city > # \# FIELDS \# ====== # plugin.tx\_logicalform\_pi1.fields.confirm.radio.br = 0 plugin.tx\_logicalform\_pi1.fields.confirm.radio.required = 1 plugin.tx\_logicalform\_pi1.fields.confirm.radio.value.0 = no plugin.tx\_logicalform\_pi1.fields.confirm.radio.value.1 = yes plugin.tx\_logicalform\_pi1.fields.confirm.radio.failure.0 = no # \# LANGUAGE EN (DEFAULT) \# ===================== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_confirm = I have understand the disclaimer plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.legend = Confirmation plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_yes = Yes plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_no = No plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.submit\_button\_label = Send # \# LANGUAGE DE \# =========== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_confirm = Ich habe den Disclaimer verstanden plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.legend = Bestätigung plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_yes = Ja plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_no = Nein plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.submit\_button\_label = Weiter The whole setup is written in the file pi1/samples/setup\_disclaim\_1st.txt. You can read the file with the extension manager: |img-5| Or copy the code above and paste it into your setup. Insert in the field “include static template” the template “static (logical\_form)” like in the illustration in the example of “configure the extension template” on page 8. The Logical Form should look like this in the frontend now: |img-5| If you choose “No” the logical form will guide you to the failure page. If you choose “Yes” the logical form will guide you to the success page. Now we have to configure the success page. But before we explain the used setup code. .. _Explanation-of-the-setup-code: Explanation of the setup code """"""""""""""""""""""""""""" The “workflow” has to possibilities: failure\_page form The first (“failure\_page”) means, that if the values aren't the values we want (the visitor doesn't understand the disclaimer), then the visitor will guided to a page with a message. The second (“form”) means, that the visitor will get an error message on the same page – the page with the logical form. Example for this message: Sorry, there is a mistake in your mail address. # \# WORKFLOW \# ======== # plugin.tx\_logicalform\_pi1.workflow = failure\_page The pids are the pids of your pages for success (in this example the page “Country”) and failure (like the illustration on page Fehler: Referenz nicht gefunden). plugin.tx\_logicalform\_pi1.pids.failure = 493 plugin.tx\_logicalform\_pi1.pids.success = 494 In the default mode the logical form has two fields – country and city. We don't need it, we delete it. # \# FIELDS, WE DON'T NEED \# ===================== # plugin.tx\_logicalform\_pi1.fields.country > plugin.tx\_logicalform\_pi1.fields.city > But we need a radio button with the two values “no” and “yes”. “fields.confirm” is the name of the field. “fields.confirm.radio” is the Html type of the field in the form. “fields.confirm.radio.br” has the following effect: - 0: There will be no line break between the values - 1: There will be a line break between the values “fields.confirm.radio.required” has the following effect: - 0: The visitor doesn't have to fill up the field. - 1: The visitor has to fill up the field. There will be added an asterisk to the field name in the form automatically. There will be added the comment “Please complete fields which have an asterisk” at the bottom of the form automatically.You can edit every language expression. See Chapter “How to configure language for fields and values“ on page 20. “fields.confirm.radio.value” is an array with the values of the radio button. “fields.confirm.radio.failure” is an array with the values, we don't want to accept for the success case. # \# FIELDS \# ====== # plugin.tx\_logicalform\_pi1.fields.confirm.radio.br = 0 plugin.tx\_logicalform\_pi1.fields.confirm.radio.required = 1 plugin.tx\_logicalform\_pi1.fields.confirm.radio.value.0 = no plugin.tx\_logicalform\_pi1.fields.confirm.radio.value.1 = yes plugin.tx\_logicalform\_pi1.fields.confirm.radio.failure.0 = no With the \_LOCAL\_LANG array you can configure the display of your field names and values. If you want to determine the displayed name of the field, you have to set it in this format: language.field\_name = value “language” has the value of the language like “en” for English or “de” for german. “field\_name” has the value “field\_” and than the name of the field. In the example above we defined the displayed name of the field “confirm”:\_LOCAL\_LANG.en.field\_confirm = I have understand the disclaimer. If you want to determine the displayed values of a field, you have to set it in this format: language.value\_name = value “language” has the value of the language like “en” for English or “de” for german. “value\_name” has the value “value\_” and than the name of the value. In the example above we defined the displayed name of the value “yes”:\_LOCAL\_LANG.en.value\_yes = Yes Here you have the value for the submitbutton: \_LOCAL\_LANG.en.submit\_button\_label = Yes # \# LANGUAGE EN (DEFAULT) \# ===================== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_confirm = I have understand the disclaimer plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.legend = Confirmation plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_yes = Yes plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_no = No plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.submit\_button\_label = Send Below there is the same example for german language: # \# LANGUAGE DE \# =========== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_confirm = Ich habe den Disclaimer verstanden plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.legend = Bestätigung plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_yes = Ja plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_no = Nein plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.submit\_button\_label = Weiter .. _Configuring-the-success-page: Configuring the success page """""""""""""""""""""""""""" The success page “Country” is showing the same logical form like the page “Disclaiming”. |img-5| This isn't a surprise really, because we didn't configure the extension template of the page “Country”. Our page “Country” should look like this: |img-5| We have to complete the following orders: We want to display the default logical form with the fields “country” and “city”. We have to configure the pids of the success and failure page. We have to delete the field confirm. .. _Configure-the-extension-template: Configure the extension template """""""""""""""""""""""""""""""" Next, please add an extension template with the name “+ext logical\_form”. |img-5| Configure the template: Insert in the field “setup” the following lines (the pids are the pids of your pages “Success” and “Failure): # \# WORKFLOW \# ======== # plugin.tx\_logicalform\_pi1.workflow = failure\_page plugin.tx\_logicalform\_pi1.pids.failure = 496 plugin.tx\_logicalform\_pi1.pids.success = 495# \# FIELDS, WE DON'T WANT AND WE DELETE \# =================================== # plugin.tx\_logicalform\_pi1.fields.confirm > Insert in the field “include static template” the template “static (logical\_form)” like in the illustration below. |img-5| The result in the frontend should look like this: |img-5| .. _Confirmation-mode: Confirmation mode ^^^^^^^^^^^^^^^^^ This exercise demonstrate, how to create a form for ordering something: - We need only a success page (for confirmation) and we don't need a failure page. - We have to delete the default fields. - We have to create some fields. - We have to configure the mails to the provider and the visitor. .. _Create-pages-with-the-content-and-the-plugin: Create pages with the content and the plugin """""""""""""""""""""""""""""""""""""""""""" |img-8| Illustration 21: Confirmation example Add two pages in the following structure to your typo3 backend: Confirmation Success Please add to the page “Confirmation” - this content:ConfirmationThis an example for the confirmation case.E.g. a visitor like to get a document by postal delivery. He can order the document with the form above. He will get a confirmation if he filled up every field and if there is no mistake in the mail. - the plugin “Logical Form” - and an extension template “+ext logical\_form” Please add to the page “Success” this content: Thank youThanks for ordering our document.If you have any question please call us.\* Contact (Link to your contact page) .. _Configure-the-extension-template-of-the-page-Confirmation: Configure the extension template of the page Confirmation """"""""""""""""""""""""""""""""""""""""""""""""""""""""" Next, please add an extension template with the name “+ext logical\_form” like in the example of “configure the extension template” on page 8. Insert in the field “include static template” the template “static (logical\_form)” like in the illustration in the example of “configure the extension template” on page 8. Insert in the field “setup” the following lines (the pid is the pid of your page “Success”: # \# WORKFLOW \# ======== # plugin.tx\_logicalform\_pi1.workflow = form plugin.tx\_logicalform\_pi1.pids.failure > plugin.tx\_logicalform\_pi1.pids.success = 634 # \# MAIL TO THE CLIENT, THE VISITOR OF OUR WEBSITE \# ============================================== # plugin.tx\_logicalform\_pi1.mail.to\_client = 1 plugin.tx\_logicalform\_pi1.mail.to\_client.from.mail = name@my.provider.com plugin.tx\_logicalform\_pi1.mail.to\_client.from.name = my provider company plugin.tx\_logicalform\_pi1.mail.to\_client.bcc = dirk.wildt@think- visually.com plugin.tx\_logicalform\_pi1.mail.to\_client.field = mail plugin.tx\_logicalform\_pi1.mail.to\_client.body = mail\_client plugin.tx\_logicalform\_pi1.mail.to\_client.signature.0 = my provider company plugin.tx\_logicalform\_pi1.mail.to\_client.signature.1 = my provider contact plugin.tx\_logicalform\_pi1.mail.to\_client.signature.2 = my provider street plugin.tx\_logicalform\_pi1.mail.to\_client.signature.3 = my provider zip and city plugin.tx\_logicalform\_pi1.mail.to\_client.signature.4 = my provider phone plugin.tx\_logicalform\_pi1.mail.to\_client.signature.5 = my provider mail address # \# FIELDS, WE DON'T NEED \# ===================== # plugin.tx\_logicalform\_pi1.fields.country > plugin.tx\_logicalform\_pi1.fields.city > # \# NEW FIELDS \# ========== # plugin.tx\_logicalform\_pi1.fields.mail.input.failure.0 = my.name@example.com plugin.tx\_logicalform\_pi1.fields.mail.input.failure.1 = dirk.wildt @think-visually.com plugin.tx\_logicalform\_pi1.fields.mail.input.default = my.name@example.com plugin.tx\_logicalform\_pi1.fields.mail.input.size = 30 plugin.tx\_logicalform\_pi1.fields.mail.input.maxlength = 60 plugin.tx\_logicalform\_pi1.fields.mail.input.required = 1 plugin.tx\_logicalform\_pi1.fields.mail.input.mail = 1 plugin.tx\_logicalform\_pi1.fields.sexus.radio.br = 0 plugin.tx\_logicalform\_pi1.fields.sexus.radio.required = 1 plugin.tx\_logicalform\_pi1.fields.sexus.radio.value.0 = male plugin.tx\_logicalform\_pi1.fields.sexus.radio.value.1 = female plugin.tx\_logicalform\_pi1.fields.name.input.size = 30 plugin.tx\_logicalform\_pi1.fields.name.input.maxlength = 60 plugin.tx\_logicalform\_pi1.fields.name.input.required = 1 plugin.tx\_logicalform\_pi1.fields.street.input.size = 30 plugin.tx\_logicalform\_pi1.fields.street.input.maxlength = 60 plugin.tx\_logicalform\_pi1.fields.street.input.required = 1 plugin.tx\_logicalform\_pi1.fields.zip\_city.input.size = 30 plugin.tx\_logicalform\_pi1.fields.zip\_city.input.maxlength = 60 plugin.tx\_logicalform\_pi1.fields.zip\_city.input.required = 1 plugin.tx\_logicalform\_pi1.fields.phone.input.size = 30 plugin.tx\_logicalform\_pi1.fields.phone.input.maxlength = 60 plugin.tx\_logicalform\_pi1.fields.phone.input.required = 1 plugin.tx\_logicalform\_pi1.fields.note.textarea.cols = 30 plugin.tx\_logicalform\_pi1.fields.note.textarea.rows = 5 plugin.tx\_logicalform\_pi1.fields.note.textarea.required = 0 # \# LANGUAGE EN (DEFAULT) \# ===================== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.legend = I want this document plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_mail = Mail plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_name = First and last Name plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_note = Message to the provider plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_phone = Phone plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_sexus = Gender plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_street = Street plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_zip\_city = ZIP and City plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_subject = Delivery of the ordered document plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_text ( Dear ###VALUE\_NAME###, Thanks for ordering our document. We will send it with postal delivery to your address: ###VALUE\_NAME### ###VALUE\_STREET### ###VALUE\_ZIP\_CITY### You have send the following data: ###VALUES### If there is any mistake please send the correct data. Please visit this page and fill up the form: ###URL### This is a mechanical message. Best Regards ###SIGNATURE### ) plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_female = Female plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_male = Male # \# LANGUAGE DE \# =========== # plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.legend = Ich möchte das Dokument plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_mail = eMail plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_name = Vor- und Nachname plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_note = Nachricht an den Betreiber plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_phone = Telefon plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_sexus = Anrede plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_street = Straße plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.field\_zip\_city = PLZ und Ort plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.mail\_client\_subject = Versand des bestellten Dokuments plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.mail\_client\_text ( Hallo ###VALUE\_NAME###, herzlichen Dank für die Bestellung unseres Dokuments. Wir senden Ihnen das Dokument per Post an Ihre Adresse: ###VALUE\_NAME### ###VALUE\_STREET### ###VALUE\_ZIP\_CITY### Sie haben uns folgende Daten gesendet: ###VALUES### Sollte in den Daten ein Fehler stecken, senden Sie uns Ihre richtigen Daten bitte ein zweites Mal. Besuchen Sie dafür bitte folgende Seite: ###URL### Dies ist eine automatische generierte Mitteilung. Mit freundlichen Grüßen ###SIGNATURE### ) plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_female = Frau plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.de.value\_male = Herr The whole setup is written in the file pi1/samples/setup\_disclaim\_2nd.txt. You can read the file with the extension manager: |img-5| Or copy the code above and paste it into your setup. .. _Explanation-of-the-setup-code: Explanation of the setup code """"""""""""""""""""""""""""" We don't repeat the explanation of the example above “Explanation of the setup code” on page 11. If you didn't read it, please read and understand it now. The workflow value is “form”, because there is only the failure case of missing data or wrong mail addresses. In this case every error should displayed with a message in the form and not in a failure page: - We set workflow to: form - We delete the value pids.failure # \# WORKFLOW \# ======== # plugin.tx\_logicalform\_pi1.workflow = form plugin.tx\_logicalform\_pi1.pids.failure > plugin.tx\_logicalform\_pi1.pids.success = 634 The array mail.to\_client is explained in the chapter “mail” on page 21. .. _How-to-configure-fields: How to configure fields """"""""""""""""""""""" |img-9| Illustration 23: The form without language configuration In our form we need the following fields: - mail (input) - sexus (radio) - name (input) - street (input) - zip\_city (input) - note (input) It is easier to understand the controlling of the Logical Form, if we don't use the language configuration. Therefor we commented out the lines with the language configuration as shown below: #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.legend = I want this document #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_mail = Mail #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_name = First and last Name #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_note = Message to the provider #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_phone = Phone #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_sexus = Gender #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_street = Street #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_zip\_city = ZIP and City #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_female = Female #plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.value\_male = Male The following images show, how to control fields. **Field name, field type and field values** |img-5| |img-5| |img-5| **Required fields** |img-5| **Default values and evaluating of a mail address** |img-5| |img-5| .. _How-to-configure-language-for-fields-and-values: How to configure language for fields and values """"""""""""""""""""""""""""""""""""""""""""""" In our example we want that - the field “mail” will be displayed as “Mail”, - “sexus” as “Gender” and - the values “male” as “Male” and “female” as “Female” # \# LANGUAGE EN (DEFAULT) \# ===================== # ... plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.field\_mail = Mail ... |img-5| |img-5| |img-5| .. _Mail: Mail ^^^^ .. _Configuring-the-mail-to-the-client-the-visitor-of-our-website: Configuring the mail to the client – the visitor of our website """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" You have to configure the array “ mail.to\_client...”. You have to set the flag “mail.to\_client” to 1, otherwise the server won't send any mail to a client. # \# MAIL TO THE CLIENT, THE VISITOR OF OUR WEBSITE \# ============================================== # plugin.tx\_logicalform\_pi1.mail.to\_client = 1 plugin.tx\_logicalform\_pi1.mail.to\_client.from.mail = name@my.provider.com plugin.tx\_logicalform\_pi1.mail.to\_client.from.name = my provider company plugin.tx\_logicalform\_pi1.mail.to\_client.bcc = dirk.wildt@think- visually.com plugin.tx\_logicalform\_pi1.mail.to\_client.field = mail plugin.tx\_logicalform\_pi1.mail.to\_client.body = mail\_client plugin.tx\_logicalform\_pi1.mail.to\_client.signature.0 = my provider company plugin.tx\_logicalform\_pi1.mail.to\_client.signature.1 = my provider contact plugin.tx\_logicalform\_pi1.mail.to\_client.signature.2 = my provider street plugin.tx\_logicalform\_pi1.mail.to\_client.signature.3 = my provider zip and city plugin.tx\_logicalform\_pi1.mail.to\_client.signature.4 = my provider phone plugin.tx\_logicalform\_pi1.mail.to\_client.signature.5 = my provider mail address We hope, that the illustration below shows the relation between the mail and the controlling with the setup understandably. With the value plugin.tx\_logicalform\_pi1.mail.to\_client.field = mail you determine, in which field of the form we found the mail address of the client. We explain in step II, how to configure the mail subject and the mail message. |img-5| |img-5| .. _Configuring-the-subject-and-the-message-of-the-mail-to-the-client: Configuring the subject and the message of the mail to the client """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" You have to define - the subject and - the message text in the language array “\_LOCAL\_LANG”. You are free, to define the string, which is marked yellow. But is has to be the same string like in the setup variable “.mail.to\_client.body. plugin.tx\_logicalform\_pi1.mail.to\_client.body = mail\_client ... .. _plugin-tx-logicalform-pi1-LOCAL-LANG-en-mail-client-subject: plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_subject = ... plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_text = ... In the message – the mail body – you may work with markers. If you want use values, which the client have written in the form, there is this main principle: ###VALUE\_ *fieldname* ### For example: In the form is a field called “street”, than the marker in the mail is ###VALUE\_STREET###. If you want a list of all form values, than you use the marker ###VALUES###. There a two markers additionaly: - ###URL###: The Url of the form - ###SIGNATURE###: The setup array “.mail.to\_client.signature...” **Our Example** plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_subject = Delivery of the ordered document plugin.tx\_logicalform\_pi1.\_LOCAL\_LANG.en.mail\_client\_text ( Dear ###VALUE\_NAME###, Thanks for ordering our document. We will send it with postal delivery to your address: ###VALUE\_NAME### ###VALUE\_STREET### ###VALUE\_ZIP\_CITY### You have send the following data: ###VALUES### If there is any mistake please send the correct data. Please visit this page and fill up the form: ###URL### This is a mechanical message. Best Regards ###SIGNATURE### ) And the result: |img-5| |img-5| .. _Configuring-a-report-mail: Configuring a report mail """"""""""""""""""""""""" With Logical Form you can configure a report mail. This mail send all datas of the form to a mail address of your choice. Example for a configuration: # \# MAIL REPORT I.E. TO THE ADMIN OR/AND THE PROVIDER OF THE WEBSITE \# ================================================================ # plugin.tx\_logicalform\_pi1.mail.report = 1 plugin.tx\_logicalform\_pi1.mail.report.from.mail = webmaster@my- domain.com plugin.tx\_logicalform\_pi1.mail.report.from.name = Typo3 Logical Form Report plugin.tx\_logicalform\_pi1.mail.report.to.0 = henry@statistic.com plugin.tx\_logicalform\_pi1.mail.report.to.1 = mary@statistic.com plugin.tx\_logicalform\_pi1.mail.report.signature.0 = My company plugin.tx\_logicalform\_pi1.mail.report.signature.1 = My name plugin.tx\_logicalform\_pi1.mail.report.signature.2 = My street plugin.tx\_logicalform\_pi1.mail.report.signature.3 = My zipcode and my city plugin.tx\_logicalform\_pi1.mail.report.signature.4 = My phone plugin.tx\_logicalform\_pi1.mail.report.signature.5 = my.name@my- domain.com If you want to edit the mail content, please edit pi1/locallang.xml (see chapter “Language” on page 31) .. _Avoid-Spam: Avoid Spam ^^^^^^^^^^ If you want to avoid spam use captcha. Please install the extension Captcha Library (extension key: captcha) or freeCap CAPTCHA (extension key: sr\_freecap) Configure the use of captcha in the logical form plugin.tx\_logicalform\_pi1.captcha.extkey.captcha = 1 or plugin.tx\_logicalform\_pi1.captcha.extkey.sr\_freecap = 1 .. _Troubleshooting: Troubleshooting ^^^^^^^^^^^^^^^ If the logical\_form extension doesn't display anything (not even an error message) check the following: - Did you set a “static template (from Extensions)” in your TS-template? - Clear all TYPO3 caches, including the temp files in typo3conf, clear your Browser cache. .. _Debug-Mode: Debug Mode """""""""" The Logical Form has a debug mode. In this mode the extension will print messages in your Html code. The debug mode makes sense, if you have any problem with mailing. Turn the debug mode on: plugin.tx\_logicalform\_pi1.mail.debug = 1 You will get the following output e.g.: |img-5| .. _Reference: Reference --------- **plugin.tx\_logicalform\_pi1 properties: TS configuration.** .. _General-Settings: General Settings ^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _templateFile: templateFile """""""""""" .. container:: table-row Property templateFile Data type string Description The template file for the form **Example:** :: plugin.tx_logicalform_pi1 { templateFile = typo3conf/ext/logical_form/ \ pi1/template.html } Default typo3conf/ext/logical\_form/pi1/template.html .. _code: code """" .. container:: table-row Property code Data type string Description The marker for the form subpart in the template file **Example:** :: plugin.tx_logicalform_pi1 { code = FORM } Default FORM .. _key-prod: key\_prod """"""""" .. container:: table-row Property key\_prod Data type int Description You need this key for encrypting input values.Integer values will be multiplied with key\_prod. See also the reference "input.send\_keyed" on page 28. **Example:** :: plugin.tx_logicalform_pi1 { key_prod = 4523 } Default 123 .. _error-wrap: error.wrap """""""""" .. container:: table-row Property error.wrap Data type string Description The wrap for an error message in the form. The message will be displayed, if a field is required but the value of this field is an empty string. **Example:** :: plugin.tx_logicalform_pi1.error { wrap =
|
} Default
\|
.. _required-wrap: required.wrap """"""""""""" .. container:: table-row Property required.wrap Data type string Description The wrap for the line required in the form.The required line will be displayed, if there is any field which is required. **Example:** :: plugin.tx_logicalform_pi1.required { wrap =
|
} Default
\|
.. _date: date """" .. container:: table-row Property date Data type string Description Output format for a timestamp. A timestamp is used in a report mail. :: plugin.tx_logicalform_pi1{ date = Y-m-d H:i:s } Default Y-m-d H:i:s .. ###### END~OF~TABLE ###### .. _Captcha: Captcha ^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _captcha: captcha """"""" .. container:: table-row Property captcha Data type deprecated Description Please use captcha.extkey (see below) Default .. _captcha-extkey-captcha: captcha.extkey.captcha """""""""""""""""""""" .. container:: table-row Property captcha.extkey.captcha captcha.extkey.sr\_freecap Data type boolean Description If you want use captcha or sr\_freecap, you have to activate it with a 1 (true) You have to install the extension captcha or sr\_freecap of course. **Example:** :: plugin.tx_logicalform_pi1 { captcha.extkey.captcha = 1 } Default 0 .. _captcha-wrap-error: captcha.wrap.error """""""""""""""""" .. container:: table-row Property captcha.wrap.error Data type string Description **Example:** :: plugin.tx_logicalform_pi1 { captcha.wrap.error =
|
} Default
\|
.. ###### END~OF~TABLE ###### .. _Workflow-and-Pids: Workflow and Pids ^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _debug: debug """"" .. container:: table-row Property debug Data type boolean Description Debug mode of the logical form. Maybe you will get a helpful hint. If you like to debug problems with mails, please see mail.debug below. **Example:** :: plugin.tx_logicalform_pi1 { debug = 1 } Default 0 .. _workflow: workflow """""""" .. container:: table-row Property workflow Data type string *failure\_page,* *form* Description The workflow of the logical form. failure\_page: In case of a failure the visitor will be guidedto a failure page. You have to configure the setup value pids.failure! form: In case of a failure there will be an error messagein the form. **Example:** :: plugin.tx_logicalform_pi1 { workflow = failure_page } Default failure\_page .. _pids-failure: pids.failure """""""""""" .. container:: table-row Property pids.failure pids.success Data type integer Description The ids of the pages with the failure and success message. You have to configure the value pids.success in every case! You have to configure the value pids.failure, if your workflow (see above) is failure\_page (this is the default mode). **Example:** :: plugin.tx_logicalform_pi1.pids { failure = 417 success = 418 } Default .. ###### END~OF~TABLE ###### .. _General-Field-Settings: General Field Settings ^^^^^^^^^^^^^^^^^^^^^^ Settings for all field in the extension logical\_form .. ### BEGIN~OF~TABLE ### .. _fields-field-name-field-type: fields.[field\_name].[field\_type] """""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].[field\_type] Data type array [field\_type]: *input* *textarea* *radio* *checkbox* *select* Description Create a field **Example for a select field:** :: plugin.tx_logicalform_pi1.fields.country.select { ... } **Example for an input field:** :: plugin.tx_logicalform_pi1.fields.city.input { ... } See tables below Default country.select, city.input .. _fields-field-name-field-type-required: fields.[field\_name].[field\_type].required """"""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].[field\_type].required Data type boolean Description If the field is required the extension won't accept an empty value The field name will be completed with an asterisk. The last line in the form will be an information, that required fields have to be completed. **Example:** :: plugin.tx_logicalform_pi1.fields.country.select { required = 1 } Default .. _fields-field-name-field-type-failure-x: fields.[field\_name].[field\_type].failure. *x* """"""""""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].[field\_type].failure. *x* Data type string Description Value, which shouldn't be accepted **Example:** :: plugin.tx_logicalform_pi1.fields.country.select { failure.0 = Switzerland failure.1 = USA } Default .. _fields-field-name-field-type-default: fields.[field\_name].[field\_type].default """""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].[field\_type].default Data type string Description Default value of a field **Example:** :: plugin.tx_logicalform_pi1.fields.city.input { default = Berlin } Default .. ###### END~OF~TABLE ###### .. _Settings-for-an-Input-Field: Settings for an Input Field ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _fields-field-name-input-size: fields.[field\_name].input.size """"""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.size Data type integer Description Html length of the input field **Example:** :: plugin.tx_logicalform_pi1.fields.city.input { size = 30 } Default .. _fields-field-name-input-maxlength: fields.[field\_name].input.maxlength """""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.maxlength Data type integer Description Allowed length of the value in the input field **Example:** :: plugin.tx_logicalform_pi1.fields.city.input { maxlength = 60 } Default .. _fields-field-name-input-mail: fields.[field\_name].input.mail """"""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.mail Data type boolean Description If set the value of the input field have to be a valid mail address m(e.g. with an @). Otherwise there will be an error message **Example:** :: plugin.tx_logicalform_pi1.fields.email.input { mail = 1 } Default 0 .. _fields-field-name-input-int: fields.[field\_name].input.int """""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.int Data type boolean Description If set the value of the input field have to be an integer. Otherwise there will be an error message **Example:** :: plugin.tx_logicalform_pi1.fields.email.input { int = 1 } Default 0 .. _fields-field-name-input-send-keyed: fields.[field\_name].input.send\_keyed """""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.send\_keyed Data type boolean Description If set, this value will bey keyed in mails. Example output in a mail: \- Sended value: 12345678 \- Displayed value: ######## Output in the report mail: \- if input.int = 1 then there will be displayed: 1518518394/123 (value \* key\_prod, keyprod is the value after the slash)key\_prod: see General Settings key\_prod. \- without input.int there will be displayed 87654321/rev **Example:** :: plugin.tx_logicalform_pi1.fields.account_no.input { send_keyed = 1 } You can configure the output for the client mail (see the below) Default 0 .. _fields-field-name-input-send-keyed-start: fields.[field\_name].input.send\_keyed.start """""""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.send\_keyed.start Data type int Description Start point of the mask in the client mail. Example for start value 3: \- Sended value: 12345678 \- Displayed value: 123##### **Example:** :: plugin.tx_logicalform_pi1.fields.account_no.input { send_keyed.start = 3 } Default 0 .. _fields-field-name-input-send-keyed-symbol: fields.[field\_name].input.send\_keyed.symbol """"""""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].input.send\_keyed.symbol Data type char Description You can set the symbol, with which values will be substituted in the client mail **Example:** :: plugin.tx_logicalform_pi1.fields.account_no.input { send_keyed.symbol = * } Default # .. ###### END~OF~TABLE ###### .. _Settings-for-a-Textarea: Settings for a Textarea ^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _fields-field-name-texarea-cols: fields.[field\_name].texarea.cols """"""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].texarea.cols Data type integer Description Html cols of the texarea **Example:** :: plugin.tx_logicalform_pi1.fields.note.texarea { cols = 30 } Default .. _fields-field-name-texarea-rows: fields.[field\_name].texarea.rows """"""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].texarea.rows Data type integer Description Html rows of the texarea **Example:** :: plugin.tx_logicalform_pi1.fields.note.texarea { rows = 5 } Default .. ###### END~OF~TABLE ###### .. _Settings-for-a-Radio-Button: Settings for a Radio Button ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _fields-field-name-radio-value-x: fields.[field\_name].radio.value. *x* """"""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].radio.value. *x* Data type string Description Option field of a radio button **Example:** :: plugin.tx_logicalform_pi1.fields.sexus.radio { value.0 = male value.1 = female } Default .. _fields-field-name-radio-br: fields.[field\_name].radio.br """"""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].radio.br Data type boolean Description If set, then there will be a
-tag between the option fields **Example:** :: plugin.tx_logicalform_pi1.fields.sexus { br = 1 } Default .. ###### END~OF~TABLE ###### .. _Settings-for-a-Checkbox: Settings for a Checkbox ^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _fields-field-name-checkbox-value-x: fields.[field\_name].checkbox.value. *x* """""""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].checkbox.value. *x* Data type string Description Option field of a checkbox **Example:** :: plugin.tx_logicalform_pi1.fields.profile.checkbox { value.0 = sport value.1 = culture value.2 = vacation } Default .. _fields-field-name-checkbox-default-x: fields.[field\_name].checkbox.default.x """"""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].checkbox.default.x Data type string Description Default value of a field **Example:** :: plugin.tx_logicalform_pi1.fields.profile.checkbox { default.0 = sport default.1 = vacation } Default .. ###### END~OF~TABLE ###### .. _Settings-for-a-Selectbox: Settings for a Selectbox ^^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _fields-field-name-select-size: fields.[field\_name].select.size """""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].select.size Data type integer Description Amount of the displayed items in the option list **Example:** :: plugin.tx_logicalform_pi1.fields.country.select { size = 5 } Default .. _fields-field-name-select-value-x: fields.[field\_name].select.value. *x* """""""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].select.value. *x* Data type string Description Option value of a selectbox **Example:** :: plugin.tx_logicalform_pi1.fields.country.select { value.0 = value.1 = Germany value.2 = Spain value.3 = Switzerland value.4 = USA } Default .. _fields-field-name-select-multiple: fields.[field\_name].select.multiple """""""""""""""""""""""""""""""""""" .. container:: table-row Property fields.[field\_name].select.multiple Data type boolean Description Enable the multiple choice of a selectbox **Example:** :: plugin.tx_logicalform_pi1.fields.country.select { multiple = 1 } Default .. ###### END~OF~TABLE ###### .. _General-Mail-Settings: General Mail Settings ^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _mail-from: mail.from """"""""" .. container:: table-row Property mail.from Data type string Description The sender of the mail, which will send in cases of failure and success to the provider of the website and others **Example:** :: plugin.tx_logicalform_pi1.mail { from = webmaster@my-client.com } Default webmaster@my-client.com .. _mail-debug: mail.debug """""""""" .. container:: table-row Property mail.debug Data type boolean Description If set there is a output in Html **Example:** :: plugin.tx_logicalform_pi1.mail { debug = 1 } Default 0 .. _mail-charset: mail.charset """""""""""" .. container:: table-row Property mail.charset Data type string Description The charset for the mail **Example:** :: plugin.tx_logicalform_pi1.mail { charset = UTF-8 } Default iso-8859-15 .. ###### END~OF~TABLE ###### .. _Mail-Settings-for-a-Report-Mail: Mail Settings for a Report Mail ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _mail-report: mail.report """"""""""" .. container:: table-row Property mail.report Data type boolean, array Description Activating a report mail (you have to configure the report array). **Example:** :: plugin.tx_logicalform_pi1.mail { report = 1 } Default 0 .. _mail-report-from-mail: mail.report.from.mail, """""""""""""""""""""" .. container:: table-row Property mail.report.from.mail, mail.report.from.name Data type strings Description Sender of the report mail **Example:** :: plugin.tx_logicalform_pi1.mail.report { from.mail = webmaster@my-domain.com from.name = Typo3 Logical Form Report } Default .. _mail-report-to-x: mail.report.to. *x* """"""""""""""""""" .. container:: table-row Property mail.report.to. *x* Data type string Description Receiver of the report mail **Example:** :: plugin.tx_logicalform_pi1.mail.report { to.0 = webmaster@my-domain.com to.1 = henry@statistics.com } Default .. _mail-report-signature-x: mail.report.signature. *x* """""""""""""""""""""""""" .. container:: table-row Property mail.report.signature. *x* Data type string Description Signature of the report mail **Example:** :: plugin.tx_logicalform_pi1.mail.report { signature.0 = My company signature.1 = My name signature.2 = webmaster@my-domain.com } Default .. ###### END~OF~TABLE ###### .. _Mail-Settings-for-the-Client-Mail: Mail Settings for the Client Mail ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _mail-client: mail.client """"""""""" .. container:: table-row Property mail.client Data type boolean, array Description Activating a mail to the client, the visitor, who filled up the values in the form (you have to configure the mail client array). **Example:** :: plugin.tx_logicalform_pi1.mail { client = 1 } Default 0 .. _mail-client-from-mail: mail.client.from.mail, """""""""""""""""""""" .. container:: table-row Property mail.client.from.mail, mail.client.from.name Data type strings Description Sender of the report mail **Example:** :: plugin.tx_logicalform_pi1.mail.client { from.mail = name@my.provider.com from.name = My provider company } Default .. _mail-client-bcc: mail.client.bcc """"""""""""""" .. container:: table-row Property mail.client.bcc Data type string Description Comma separated list of mail addresses for a blind copy **Example:** :: plugin.tx_logicalform_pi1.mail.client { bcc = name@my.provider.com, \ webmaster@my-domain.com } Default .. _mail-client-field: mail.client.field """"""""""""""""" .. container:: table-row Property mail.client.field Data type string Description The name of the field in the form, which contained the mail address of the visitor (see the mail tutorial on page 21) **Example:** :: plugin.tx_logicalform_pi1.mail.client { field = mail } Default .. _mail-client-body: mail.client.body """""""""""""""" .. container:: table-row Property mail.client.body Data type string Description The name of the field for mail subject and mail message in the language configuration (see the mail tutorial on page 21) **Example:** :: plugin.tx_logicalform_pi1.mail.client { body = mailclient } Default .. _mail-client-signature-x: mail.client.signature. *x* """""""""""""""""""""""""" .. container:: table-row Property mail.client.signature. *x* Data type string Description Signature of the report mail **Example:** :: plugin.tx_logicalform_pi1.mail.client { signature.0 = My provider company signature.1 = My provider name signature.2 = name@my-provider.com } Default .. ###### END~OF~TABLE ###### .. _Language-and-translation: Language and translation ^^^^^^^^^^^^^^^^^^^^^^^^ There are translations for some words and phrases in the file pi1/locallang.xml especially for - error\_mail: "There is a mistake in your mail address ###MAIL###” - error\_not\_accepted: "The system doesn't accept this value!” - error\_not\_accepted\_checkbox "The system doesn't accept one of the values!” - "error\_not\_accepted\_select: "The system doesn't accept one of the values!” - legend: "Logical Form” - mail\_report\_subject: "Logical Form Report” - mail\_report\_text: A text with markers. If you want to change the values, - you can edit locallang.xml (but maybe you will get trouble in case of updating the extension) - or edit the array “\_Local\_Lang” (recommended). If you want to edit the array “\_LOCAL\_LANG” please take a look in the tutorial “How to configure language for fields and values” on page 20. .. _Files: Files ----- Files for the configuration of language items and for documentation. .. ### BEGIN~OF~TABLE ### .. _pi1-class-tx-logicalform-pi1-php: pi1/class.tx\_logicalform\_pi1.php ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. container:: table-row File pi1/class.tx\_logicalform\_pi1.php Description Main PHP-class used to display the form and the confirmation. The class validates mail addresses and sends mails to logical\_form and the subscriber or unsubscriber. .. _pi1-locallang-xml: pi1/locallang.xml ^^^^^^^^^^^^^^^^^ .. container:: table-row File pi1/locallang.xml Description Language file for class.tx\_logicalform\_pi1.php .. _pi1-template-html: pi1//template.html ^^^^^^^^^^^^^^^^^^ .. container:: table-row File pi1//template.html Description Template file for the form. .. _ext-php-api-dat: ext\_php\_api.dat ^^^^^^^^^^^^^^^^^ .. container:: table-row File ext\_php\_api.dat Description API documentation of the logical\_form extension. .. _pi1-samples: pi1/samples/\* ^^^^^^^^^^^^^^ .. container:: table-row File pi1/samples/\* Description Setup code for the tutorial .. ###### END~OF~TABLE ###### .. _Helpful-suggestions: Helpful suggestions ------------------- If you have helpful suggestions, feel free to contact me: Dirk Wildt (Die Netzmacher), http://wildt.at.die-netzmacher.de. .. _ToDo: ToDo ---- - Extend for tt\_news categories - Check related tt\_news .. _Further-Information: Further Information ------------------- .. _Other-extensions-published-by-Die-Netzmacher: Other extensions published by Die Netzmacher ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - |img-10| +AOE Linkhandler Configurator: Configure the AOE linkhandler supported by userinterfaces. Out-of-the-box templates for cal, org, tt\_news and tt\_products. Don't edit page TSconfig any longer. `http://typo3.org/extensions/repository/view/linkhandlerconf/ `_ - |img-11| autositemap: A smart site-map optimised for the footer. It groups menus in columns. Great menus will get two columns. Configuration is based on TypoScript HMENU. `http://typo3.org/extensions/repository/view/autositemap/ `_ - |img-12| Browser – TYPO3 without PHP. Develop your TYPO3 extension 8 times faster! You need one line TypoScript for a result list with a search form, a record browser and an index browser. Images are wrapped self-acting. SEO, Search Engine Optimization, is integrated. `http://typo3.org/extensions/repository/view/browser/ `_ - |img-13| Caddy – the TYPO3 shopping cart. You can use it for your own needs. You need a database with products or any other items only. You can install Caddy out of the box with one mouse click – see Quick Shop below. `http://typo3.org/extensions/repository/view/caddy/ `_ - |img-13| Deal! – TYPO3 Quick Shop interface for the marketplace ebay. Manage all items with TYPO3 and publish it on ebay. Amazon is under construction. `http://typo3.org/extensions/repository/view/deal/ `_ - |img-14| Duty – collection of helpful scheduler tasks. Here: remove deprecated files from directories. `http://typo3.org/extensions/repository/view/duty/ `_ - |img-15| Flip it! offers lovely and smooth page flip transitions. It enables you to run over pages in PDF documents like in a real magazine. It is based on flash. Flipt it! can convert PDF documents to swf files automatically. `http://typo3.org/extensions/repository/view/flipit/ `_ - |img-16| Jobmarket is a catalogue with job offers. Views, the a-z-browser, the page-browser, the search, social bookmarks and a lot of other stuff can configured by the Browser plugin with the mouse. Job Market hasn't any PHP code, it should be easy to adapt it to your needs. `http://typo3.org/extensions/repository/view/job\_market/ `_ - |img-17| Organiser – TYPO3 for the lobby and the organisers. Handle news, events, staff, headquarters, locations, workshops and a calendar with one extension. Sell online tickets! Install the Organiser with one mouse click! `http://typo3-organiser.de/ `_ - |img-13| Quick Shop – the fastest shop in the history of TYPO3. Install it with one mouse click! Quick Shop is based on the browser (see above) and powermail. `http://typo3-quick-shop.de/ `_ - |img-18| PDF Controller: Easy to install. Add to your HTML page the PDF-controller-button. Link from the button to the controller. Adjust the controller by mouseclicks. The PDF Controller supports CSS 3. `http://typo3-pdfcontroller.de/ `_ - |img-19| Radial Search (Umkreissuche) – Enable the browsing through your data by geo location. 'Your data must have a latitude and a longitude. Address data can geocoded automatically by the Browser - TYPO3 without PHP. `http://typo3.org/extensions/repository/view/radialsearch/ `_ - |img-19| Route – Publish your routes with GoogleMaps or OpenStreetMap. Routes have points of interest (POI). You can categorise and filter both: routes and POI. Address data can geocoded automatically. `http://typo3.org/extensions/repository/view/route/ `_ - |img-20| seo\_dynamic\_tag: Search Engine Optimization for the title tag, the canonical tag and the meta tags author, description and keywords. Configuration by a user interface. `http://typo3.org/extensions/repository/view/seo\_dynamic\_tag/ `_ - |img-21| Slick - jQuery Carousel: Fully responsive. Scales with its container. Separate settings per breakpoint. Uses CSS3 when available. Swipe enabled. Desktop mouse dragging. Infinite looping. Fully accessible. `http://typo3.org/extensions/repository/view/slick/ `_ - |img-22| TSconfig Pages and Users by extManager (extkey: tsconf): Configure the the eight most commonly used TSconfig porperties with the mouse - like page tree uids, activated extended view, activated clipboard, ... `http://typo3.org/extensions/repository/view/tsconf/ `_ .. _Changelog: Changelog --------- 2.0.0 **Maintenance** \* #i0001: Update for TYPO3 6.2 1.0.0 **New Main Version** - Change status to stable- Corporate Design Die Netzmacher GbR 0.0.13 **Bugfix** - There was a php warning, if a checkbox hasn't any default value. **Maintenance** - There is only one proper static template now.- Every dd-tag and dl-tag got a class- Empty mail fields will be now accepted, if they aren't required 0.0.12 **Maintenance** - We deleted a link to an empty typoscript template in ext\_tables.php 0.0.10 **New Feature** - It's possible to choose between captcha and sr\_freecap. **New Feature** - General debug modeImprovement- The form is XHTML-strict. 0.0.9 **Bugfix** - Manual: There was a syntax error 0.0.8- **Bugfix** - We fixed a problem with handling the subject in mails 0.0.7 **Bugfix** - There was a bug in the setup. Now it is possible to install this extension global too. 0.0.6 **Improvement** - Captcha 0.0.5 **New Feature** - Captcha 0.0.4 **Bugfix** - There was a bug with evaluating integers. We fixed it. 0.0.3 **New Feature** - It is possible to choose the charset in mails by typoscript 0.0.2 **New Feature** - We added the options- to send values of input fields in mails keyed – for bank accounts e.g.- to evaluate, if a value of an input field is an integer – for bank accounts e.g. 0.0.1 **Initial release** .. _Illustration-Index: Illustration Index ------------------ Illustration 1: Logical Form in the default mode 4 Illustration 2: Obligate fields will be evaluated 4 Illustration 3: Case 1 - visitor is member of EU country 4 Illustration 4: Case 1 - content for EU members 4 Illustration 5: Case 2 - visitor isn't a member of EU 4 Illustration 6: Case 2 - content for non EU members 4 Illustration 7: Logical Form in the typo3 backend 4 Illustration 8: Extension Logical Form 6 Illustration 9: Default example 8 Illustration 10: Default sample with the plugin and the template 8 Illustration 11: Configuration of the extension template 9 Illustration 12: The logical form in the frontend 9 Illustration 13: Page tree in the backend 9 Illustration 14: The setup code 11 Illustration 15: Your first logical form 11 Illustration 16: Page "Country" without configuration 13 Illustration 17: Page "Country" with configuration 13 Illustration 18: Default sample with the plugin and the template 14 Illustration 19: Configuration of the extension template 14 Illustration 20: Page "Country" with configuration 14 Illustration 21: Confirmation example 16 Illustration 22: The setup code 18 Illustration 23: The form without language configuration 19 Illustration 24:plugin.tx\_logicalform\_pi1.fields.mail...plugin.tx\_l ogicalform\_pi1.fields.sexus... 19 Illustration 25:plugin.tx\_logicalform\_pi1.fields.mail.input...plugin .tx\_logicalform\_pi1.fields.sexus.radio... 19 Illustration 26:plugin.tx\_logicalform\_pi1.fields.sexus.radio.value.0 = maleplugin.tx\_logicalform\_pi1.fields.sexus.radio.value.1 = female 19 Illustration 27:plugin.tx\_logicalform\_pi1.fields.mail.input.required = 1plugin.tx\_logicalform\_pi1.fields.sexus.radio.required = 1 20 Illustration 28:plugin.tx\_logicalform\_pi1.fields.mail.input.default = my.name... 20 Illustration 29:plugin.tx\_logicalform\_pi1.fields.mail.input.mail = 1 20 Illustration 30: Our form without any translation 20 Illustration 31:...\_LOCAL\_LANG.en.field\_mail = Mail...\_LOCAL\_LANG.en.field\_sexus = Gender 20 Illustration 32:...\_LOCAL\_LANG.en.value\_female = Female'...\_LOCAL\_LANG.en.value\_male = Male 20 Illustration 33:The field name of the mail address is “mail”.In the setup it's the line:plugin.tx\_logicalform\_pi1.fields.mail... 21 Illustration 34: The sent mail and the controlling with the setup 21 Illustration 35: Fields and values in the form 22 Illustration 36: Mail with values of the form and of the setup 22 Illustration 37: Example for Html output in the debug mode 24 .. _Alphabetical-Index: Alphabetical Index ------------------ 38 .. ######CUTTER_MARK_IMAGES###### .. |img-1| image:: img-1.png .. :align: left .. |img-2| image:: img-2.jpeg .. :border: 0 .. :height: 20 .. :id: Grafik1 .. :name: Grafik1 .. :width: 69 .. |img-3| image:: img-3.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: Grafik12 .. :name: Grafik12 .. :width: 18 .. |img-4| image:: img-4.png .. :align: bottom .. :border: 0 .. :height: 335 .. :id: graphics4 .. :name: graphics4 .. :width: 378 .. |img-5| image:: data: :alt: Frame1 .. :align: bottom .. :id: Frame1 .. :name: Frame1 .. |img-6| image:: img-6.jpeg .. :align: bottom .. :border: 0 .. :height: 162 .. :id: graphics3 .. :name: graphics3 .. :width: 123 .. |img-7| image:: img-7.jpeg .. :align: left .. :border: 0 .. :height: 90 .. :id: Grafik16 .. :name: Grafik16 .. :width: 227 .. |img-8| image:: img-8.jpeg .. :align: left .. :border: 0 .. :id: graphics40 .. :name: graphics40 .. :width: 100% .. |img-9| image:: img-9.jpeg .. :align: left .. :border: 0 .. :id: graphics39 .. :name: graphics39 .. :width: 100% .. |img-10| image:: img-10.png .. :border: 0 .. :height: 16 .. :id: graphics33 .. :name: graphics33 .. :width: 18 .. |img-11| image:: img-11.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics37 .. :name: graphics37 .. :width: 18 .. |img-12| image:: img-12.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics34 .. :name: graphics34 .. :width: 18 .. |img-13| image:: img-13.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics44 .. :name: graphics44 .. :width: 16 .. |img-14| image:: img-14.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics46 .. :name: graphics46 .. :width: 16 .. |img-15| image:: img-15.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics48 .. :name: graphics48 .. :width: 18 .. |img-16| image:: img-16.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: Grafik5 .. :name: Grafik5 .. :width: 18 .. |img-17| image:: img-17.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics47 .. :name: graphics47 .. :width: 16 .. |img-18| image:: img-18.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics55 .. :name: graphics55 .. :width: 18 .. |img-19| image:: img-19.png .. :align: bottom .. :border: 0 .. :height: 18 .. :id: graphics50 .. :name: graphics50 .. :width: 18 .. |img-20| image:: img-20.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics52 .. :name: graphics52 .. :width: 16 .. |img-21| image:: img-21.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics53 .. :name: graphics53 .. :width: 16 .. |img-22| image:: img-22.png .. :align: bottom .. :border: 0 .. :height: 16 .. :id: graphics54 .. :name: graphics54 .. :width: 16