VORLÄUFIGES HOW TO: Fehler-Melden-Link: MAILFORMULAR mit CAPTCHA und ANGABE DER LETZTEN URL
nicht ganz elegant, aber funktionstüchtig:
Ein Mailformular, mit dem Fehler auf der gesamten Webseite gemeldet werden können. Übergeben wird die letzte URL. Schutz vor Bots durch Captcha
Benötigt: Extension "mailformplus" http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&no_cache=1&tx_terfe_pi1[sword]=MailformPlus+
Extension "sr_freecap" http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&no_cache=1&tx_terfe_pi1[sword]=sr_freecap
Eine gute Anleitung für die beiden Extensions gibts von speedprogs und liegt hier: #88058
Die Umsetzung des Fehler-Melden-Links
1.: Root-TypoScript
In der html-Vorlage für die ganze Seite wird an irgendeiner Stelle ein Marker für den Link "Fehler melden" gesetzt.
Dieser Marker wird im root-template der gesamte Seite angesprochen und die aktuelle URL in Form eines GET-Formulars übergeben. Das Formular hat als Ziel jene eine Seite, die die Fehlermeldung mittels Mailformular umsetzen soll.
seite = PAGE
seite {
typeNum = 0
stylesheet = fileadmin/shared/style/style.css
10 = TEMPLATE
10.template = FILE
10.template.file = fileadmin/shared/style/vorlage.html
###FEHLER-MELDEN###
10.marks {
FEHLER-MELDEN= TEXT
FEHLER-MELDEN.data = getIndpEnv:REQUEST_URI
FEHLER-MELDEN.wrap(
<form action="http://10.11.10.14/schadensmeldung.html" method="get" id="bloss_keinen_umbruch">
<input type=hidden name=prob_url value="
|
">
<input type=submit value="Fehler melden" class="LL_submit">
</form>
)
FEHLER-MELDEN.typolink.parameter.data = page:uid
FEHLER-MELDEN.typolink.no_cache
FEHLER-MELDEN.typolink.returnLast = url
}
2.: TypoScript für Kontaktformularseite
Die Seite, die das Plugin für die Fehlermeldung enthält, bekommt nun noch ein extension template verpasst. Neben den nötigen Angaben für sr_freecap wird die Variable übernommen und einem Marker zugeordnet. Warum das so geht steht in der Dokumentation der extension Mailformplus (http://typo3.org/documentation/document-library/extension-manuals/th_mailformplus/4.0.13/view/1/3/#id4173115)
plugin.tx_thmailformplus_pi1.freecapFieldname = captchafield
plugin.tx_thmailformplus_pi1.fieldConf.captchafield = required
plugin.tx_thmailformplus_pi1.markers.LASTURL = TEXT
plugin.tx_thmailformplus_pi1.markers.LASTURL.warp (
<p> Letzte besuchte URL
|
.</p>
)
plugin.tx_thmailformplus_pi1.markers.LASTURL.data = GPvar : prob_url
3.: html-Vorlage für Mailformplus
In das funktionierende Mailformular (ich hab die Vorlage der Extension selber genommen und modifiziert [example_form/singlepage_forms/mailformplus_demo.html]) baut man nun einen Marker ein, der die URL übernimmt. Der Marker sollte sichtbar im Formular übergeben werden und muss zweitens später per Mail übermittelt werden. All das wird in ein und der selben html-Vorlage definiert.
<!-- ###TEMPLATE_FORM### begin -->
###ERROR###
<form name="Formular" method="post" action="###REL_URL###" enctype="multipart/form-data">
<fieldset>
<legend>Schadensmeldung</legend>
<input type="hidden" name="id" value="###PID###" />
<input type="hidden" name="submitted" value="1" />
<input type="hidden" name="L" value="###value_L###" />
<input type="hidden" name="type" value="###value_type###" />
<!--###CAPTCHA_INSERT### -->
<div class="captcha"> <label for="captcha_response">###SR_FREECAP_NOTICE###</label> ###SR_FREECAP_CANT_READ### <input type="text" id="captcha_response" name="captchafield" title="###SR_FREECAP_NOTICE###" value="" /> ###SR_FREECAP_IMAGE### </div>
<!--###CAPTCHA_INSERT###-->
<div>
<b> <label for="fehlertyp" accesskey="ft">
Um welche Art von Fehler handelt es sich?
</label> </b> <br>
###error_fehlertyp###
<input tabindex="1" type="radio" name="fehlertyp" value="Design" id="fehlertyp_design" style="border-style:none;" ###checked_fehlertyp_design###><label for="fehlertyp_design">Design stimmt nicht </label><br>
<input tabindex="2" type="radio" name="fehlertyp" value="link" id="fehlertyp_link" style="border-style:none;" ###checked_fehlertyp_link###><label for="fehlertyp_link">Link defekt</label><br>
<input tabindex="3" type="radio" name="fehlertyp" value="inhalt" id="fehlertyp_inhalt" style="border-style:none;" ###checked_fehlertyp_inhalt###><label for="fehlertyp_inhalt">Inhalte sind nicht aktuell </label><br>
<input tabindex="4" type="radio" name="fehlertyp" value="inhalt" id="fehlertyp_anderes" style="border-style:none;" ###checked_fehlertyp_anderes###><label for="fehlertyp_anderes">sonstiger Fehler</label><br>
<br>
<b> <label for="errorSite" accesskey="es">
Der Fehler wurde gefunden auf der folgenden Seite (Ihre letzte besuchte Seite):
</label> </b> <br>
###error_errorSite###
<input type="text" name="errorSite" id="errorSite" value="###LASTURL###" tabindex="5" size='60' maxlength='60' readonly><br>
<br>
<b> <label for="beschreibung" accesskey="b">
Bitte machen Sie genauere Angaben zu dem Fehler.
</label> </b> <br>
###error_beschreibung###
<textarea cols="50" rows="5" name="beschreibung" id="beschreibung" cols='50' rows='10' tabindex="6">###value_beschreibung###</textarea><br>
<br>
<input type="submit" value="submit" tabindex="8"><br>
###ADDITIONAL_MULTIPAGE###
</fieldset>
</form>
<!-- ###TEMPLATE_FORM### end -->
<!-- ###TEMPLATE_EMAIL_RECEIVER_HTML### begin -->
SCHADENSMEDLUNG! <br><br>
SEITE: <a href="http://10.11.10.14/###LASTURL###"> ###LASTURL### </a> <br><br>
FEHLERTYP: ###value_fehlertyp###<br><br>
BESCHREIBUNG: ###value_beschreibung###<br><br>
<!-- ###TEMPLATE_EMAIL_RECEIVER_HTML### end -->
An alle die geholfen haben: DANKESCHÖN
An alle die bessere Lösungen haben: HER DAMIT (v.a. eine bessere Lösung für das Formular in Schritt 1!)