Zum Inhalt springen

Formwizard der neuen Form extension (TYPO3 Ver. 4.6.0.)

Erstellt am 3. November 2011 · 29 Antworten · letzte Antwort am 9. Dezember 2014 · Seite 1 von 2

Tags: Frage

danaron ·

Hallo zusammen
Bin am testen der neuen TYPO3 Version 4.6.0., im speziellen die neue Form Extension. Mir ist aufgefallen, das unter IE9 der Wizard nicht funktioniert. Hat dazu jemand eine Lösung?

Auch konnte ich bis jetzt kein Sprachpacket runterladen. Suche vor allem Deutsch, Französisch und Italienisch.
Tipp: Beim Updaten von eine alten Version, müssen alle Sprachdateien neu geladen werden, da heues Konzept:
1.) Alle "alten" Erweiterungen bezüglich der Übersetzung entfernen
2.) Den Ordner "typo3conf/l10n" löschen
3.) Alle Zip Archive im Ordner typo3temp löschen
4.) Sprache im Erweiterungsmanager neu auswählen und aktualisieren. Ggfl. öfter wenn es nicht gleich klappt
Hat aber bis jetzt nicht funktioniert 🙁
http://test.aloco.ch/typo3
Benutzer: test
Passwort: test

Danke!

jansch ·

Hi!

IE9 nutze ich nicht, dazu kann ich leider nix sagen. Bist Du bei den Sprachpaketen weiter gekommen? Da habe ich leider auch keine Lösung gefunden.

Gruß, Jan

jansch ·

Hi Danaron,

ich hab's jetzt doch ans laufen bekommen. Beim ersten mal hatte ich nen dummen Fehler. Hier nun die Anleitung:

Aktuelle deutsche übersettzungen herunterladen:
http://translation.typo3.org/de/TYPO3.TYPO3.core.form/export/zip
dateien umbenennen indem ein “de.” An den Anfang des Namens kommt
ins verz. /typo3conf/l10n/de/form/Resources/Private/Language kopieren
fertig. Aktuell sind im backend wizard dann noch nicht alle Dinge übersetzt, weil hier auf dem translation server noch nicht alles freigegeben wurde. Das kann man ändern, indem man selbst dort wo zwischen <target> </target> nichts steht, die Werte einträgt

Wieso das Update vom Language Server nicht klappt, ist mir auch nicht ganz klar. Evtl. ist die Extension noch nicht freigegeben für ne deutsche Übersetzung?

danaron ·

Hi Jansch
Danke für den Tipp. Ist etwas kompliziert und deshalb hoffe ich auch, dass die Übersetzung bald freigegeben wird, so dass ich die 4.6 Version auch produktiv einsetzen kann.
Grüsse Dan

danaron ·

Noch was zum Thema neue form extension unter 4.6:
Bekomme das Form.css nicht weg. Scheint, da die Extension neu im Core ist nicht zu reagieren auf

page.config.removeDefaultCss = 1
plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE >
plugin.tt_news._CSS_DEFAULT_STYLE >
plugin.form._CSS_DEFAULT_STYLE >
plugin.form._CSS_DEFAULT_STYLE >
plugin.mailform._CSS_DEFAULT_STYLE >
plugin.mailform._CSS_DEFAULT_STYLE >
oder sonst was

Habe das CSS unter typo3\typo3_src\typo3\sysext\form\Resources\Public\CSS\Form.CSS mal angepasst. Ist aber sicher nicht die Lösung.
Wer kann hier helfen?

danaron ·

Zwei weitere Fragen drängen Sich mir auf, welche das Manual nicht beantworten kann:

Eingegebenes E-Mail als Sender?
Wie kann ich machen, dass die eingegebene E-Mail Adresse auch gerade als Senderadresse angegeben wird? Mit den Standard E-Mail Element klappt das nicht. Beim alten reichte die Bezeichung email des Elements...

Betreff (subject)
Bei mir steht im Betreff immer Formmail on pxxxxxx.webspaceconfig.de (mittwald), Wo kann ich diesen Betreff für das Formular jeweils ändern?

Im Anhang noch das Manual, da online nix zu finden...
Danke für eure Hilfe!

jansch ·
danaron schrieb

Zwei weitere Fragen drängen Sich mir auf, welche das Manual nicht beantworten kann:

Eingegebenes E-Mail als Sender?
Wie kann ich machen, dass die eingegebene E-Mail Adresse auch gerade als Senderadresse angegeben wird? Mit den Standard E-Mail Element klappt das nicht. Beim alten reichte die Bezeichung email des Elements...

Betreff (subject)
Bei mir steht im Betreff immer Formmail on pxxxxxx.webspaceconfig.de (mittwald), Wo kann ich diesen Betreff für das Formular jeweils ändern?

Im Anhang noch das Manual, da online nix zu finden...
Danke für eure Hilfe!

Hi Danaron,

das geht im Postprocessor. Hier mal mein Beispiel, wie Du es im Formular eintragen kannst.

postProcessor {
	1 = mail
	1 {
		recipientEmail = empfänger@mail.de
		senderEmail = absenderemail
		subject = Betreff der EMail
	}
}
10 = FIELDSET
10 {
	10 = TEXTLINE
	10 {
		name = Name
		label {
			value = Ihr Name
		}
	}
	20 = TEXTLINE
	20 {
		name = absenderemail
		label {
			value = Ihre Emailadresse
		}
	}
...

schöne Grüße!
jan

danaron ·

Der Betreff klappt wunderbar, Danke Jan!
Das mit dem eingegebenen E-Mail als Sender leider nicht.

Habe im localconf.php mal folgendes eingetragen:

$TYPO3_CONF_VARS['MAIL']['defaultMailFromAddress'] = 'absenderemail';
$TYPO3_CONF_VARS['MAIL']['defaultMailFromName'] = 'Name';

Hilft aber auch nicht wirklich. Was mach ich da falsch?

jansch ·
danaron schrieb

Der Betreff klappt wunderbar, Danke Jan!
Das mit dem eingegebenen E-Mail als Sender leider nicht.

Habe im localconf.php mal folgendes eingetragen:

$TYPO3_CONF_VARS['MAIL']['defaultMailFromAddress'] = 'absenderemail';
$TYPO3_CONF_VARS['MAIL']['defaultMailFromName'] = 'Name';

Hilft aber auch nicht wirklich. Was mach ich da falsch?

Hallo Danaron,

hast Du gesehen, dass dieses "absenderemail" der Name des Feldes ist, in dem der Nutzer seine Email eintragen muss? Deshalb hab ich auch ein Teil des Fieldsets noch gepostet.

die localconf hab ich nicht angefasst.

sg! jan

danaron ·

Danke Jan, ja, das habe ich gesehen...

Mein Code:

lang = de
method = post
title = Kontakt
prefix = kontakt
confirmation = 0
postProcessor {
	1 = mail
	1 {
		recipientEmail = max.muster@domain.com
		senderEmail = absenderemail
		subject = Kontakt
	}
}
10 = FIELDSET
10 {
	legend {
		value = Kontaktformular
	}
	10 = TEXTLINE
	10 {
		name = name
		label {
			value = Name
		}
	}
	20 = TEXTLINE
	20 {
		name = vorname
		label {
			value = Vorname
		}
	}
	30 = TEXTLINE
	30 {
		name = absenderemail
		label {
			value = E-Mail
		}
	}
	40 = TEXTAREA
	40 {
		cols = 40
		rows = 5
		name = enquiry
		label {
			value = Nachricht
		}
	}
	50 = RESET
	50 {
		value = löschen
	}
	60 = SUBMIT
	60 {
		name = submit
		value = senden
	}
	70 = TEXTBLOCK
	70 {
		class = content-textblock
		content = (Die mit <em>*</em> bezeichneten Felder müssen ausgefüllt werden)
	}
}
rules {
	1 = required
	1 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = name
	}
	2 = required
	2 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = vorname
	}
	3 = required
	3 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Dies ist ein Pflichtfeld
		element = absenderemail
	}
	4 = email
	4 {
		breakOnError = 0
		showMessage = 
		message = (max.muster@domain.com)
		error = Dies ist keine gültige E-Mail-Adresse
		element = absenderemail
	}
	5 = required
	5 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = enquiry
	}
}

Ist die confirmations Nachricht auch anpassbar pro Formular?

jansch ·

argh, mein fehler. das Feld heißt
senderEmailField
nicht
senderEmail

zu der anderen Frage weiß ich leider auch nix. wenn aber jemand herausfindet, wie man auf tsfe daten mit dem neuen Formhandler zugreift, lasst es mich wissen 🙂

sg! jan

jansch ·

So. habe jetzt auch das Problem gelöst, dass Variablen nicht mehr aufgelöst werden. Ob das ganze "sauber" gelöst ist, könnt ihr Euch ja streiten 😉 Hab keine Filter entfernen müssen, deshalb sollte es in jedem Fall sicher sein. Musste dazu in der Sysext rumpfuschen. die korrigierte Datei hängt an und ich erstelle gleich auch mal ein Featurerequest, falls es noch keins gibt.

Mit dieser Änderung ist es möglich, Werte aus dem TSFE auf folgende Weise direkt in den Formwizard zu schreiben.

20 = TEXTLINE
20 {
name = absenderemail
readonly = readonly
value = {TSFE:fe_user|user|email}
label.value = Deine Emailadresse
}

Typoscript.zip
3kB
anderlk ·

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Vielen Dank,
Anderl

jansch ·
anderlk schrieb

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Vielen Dank,
Anderl

Hi Anderl,

bei der ersten Teilfrage von 1. kann ich Dir helfen. Das kann man im Postprocessor eintragen.

postProcessor {
	1 = mail
	1 {
		messages {
			success = Hier Deine Erfolgstext
                        error = Fehlermeldung
		}
	}
}

Die anderen Dinge wären möglich, wenn Du Dir selbst einen weiteren Postprocessor schreibst. Das hab ich selbst aber auch noch nicht gemacht. Um die ganze Logik zu verstehen musst Du Dich mit Extbase gut auskennen, was ich selbst leider auch noch nicht tue. Der Typoscriptteil könnte dann so aussehen:

postProcessor {
	1 = mail
	1 {
		messages {
			success = Hier Deine Erfolgstext
                        error = Fehlermeldung
		}
	}
       2 = meinPostProc
       2 {
              forwardIDSeite = 36
              sendConfirmationMail = 1
       }
}

Jetzt musst Du der Form Extension noch irgendwie beibringen, dass sie eine PHP Klasse mit dem Namen tx_form_System_Postprocessor_meinPostProc erkennt und diese Klasse ausprogrammieren. Wenn Du es geschafft hast diese Klasse anzumelden, meld Dich mal wieder hier, die Klasse schreiben schaffen wir zusammen 🙂

Gruß, Jan

jansch ·
anderlk schrieb

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Hallo Anderl,

hab für die erste Frage jetzt mal einen eigenen Postprocessor geschrieben. Die Anleitung dazu findest Du hier: http://alumnitypo3.blogspot.com/2011/12/typo3-46-und-die-neue-form-extension.html

Auf gleiche Weise kannst Du Dir dann auch nen weiteren Postprocessor schreiben, der dann die Email an den Absender schickt. Alles, was Du dafür brauchst findest Du sicher im Mail Postprocessor. Dann natürlich daran denken den Redirect Postproc. als letzten Postproc. einzufügen.

Schöne Grüße!

Jan

anderlk ·

Hallo Janssch,

danke für Deine Tipps. Wenn man mit Extbase noch nichts zu tun hatte, finde ich den Einstieg in den neuen Formwizard schon herftig, wenn man nur ein wenig mehr hätte als ein einfaches Kontaktforumlar,...
In der Doku findet man zum Beispiel gar keine Hinweise zu den postProcessor.

Wenn ich deinen Link richtig verstanden habe, muss ich die PHP Datei im extension ordner von Form ablegen, und die Postprocessor.php um die beiden zeilen erwweitern? das ist aber nicht schön, denn wenn ich ein Update fahre, muss ich das ganze wieder anpassen. Habe ich da etwas falsch verstanden, oder geht das nicht eleganter?

Aber immerhin ich habe es jetzt zumindest schon mal soweit hinbekommen, das das Formular korrekt versendet wird.

Habe auch rausgefunden, wie man den Absendernamen in die Mail integriert.

  senderNameField = name

Bei meinem Formular ist es aber jetzt so, dass ich als Name gerne Vor- und Nachname hättte, und beide stehen in getrennten Feldern.
Ist das standardmäßig auch möglich, oder brauche ich da auch schon einen eigenen Postprozessor?

Danke, Anderl

jansch ·
anderlk schrieb

Hallo Janssch,

danke für Deine Tipps. Wenn man mit Extbase noch nichts zu tun hatte, finde ich den Einstieg in den neuen Formwizard schon herftig, wenn man nur ein wenig mehr hätte als ein einfaches Kontaktforumlar,...
In der Doku findet man zum Beispiel gar keine Hinweise zu den postProcessor.

Wenn ich deinen Link richtig verstanden habe, muss ich die PHP Datei im extension ordner von Form ablegen, und die Postprocessor.php um die beiden zeilen erwweitern? das ist aber nicht schön, denn wenn ich ein Update fahre, muss ich das ganze wieder anpassen. Habe ich da etwas falsch verstanden, oder geht das nicht eleganter?

Aber immerhin ich habe es jetzt zumindest schon mal soweit hinbekommen, das das Formular korrekt versendet wird.

Habe auch rausgefunden, wie man den Absendernamen in die Mail integriert.

  senderNameField = name

Bei meinem Formular ist es aber jetzt so, dass ich als Name gerne Vor- und Nachname hättte, und beide stehen in getrennten Feldern.
Ist das standardmäßig auch möglich, oder brauche ich da auch schon einen eigenen Postprozessor?

Danke, Anderl

Hi Anderl,

Du musst einfach die Datei im Ordner
sysext\form\Classes\System\Postprocessor
ablegen. Die 2 Zeilen sind schon aus der Forward.php brauchst, die also nirgends anzupassen. Das Typoscript sagt dem PostProcessor nach was es suchen soll. Ist aber wie im Blog geschrieben nicht wirklich optimal in dieser Lösung. Ich verstehe aber noch nicht, wie ich es anders adressieren könnte.

Zu der anderen Frage kommst Du so zu einer Antwort (wenn Try and Error zu einfach ist):
1. Die Email wird im Mail Postprocessor zusammengebaut und versandt. Also suchst Du in der Datei
Mail.php im Ordner sysext\form\Classes\System\Postprocessor nach senderNameField und findest folgende Zeile:
$fromName = $this->requestHandler->get($this->typoScript['senderNameField']);

2. Jetzt musst Du noch schauen, was die Methode get() aus dem $this->typoScript['senderNameField'] macht. In der Variable $this->typoScript['senderNameField'] steht ja erst Mal nur der Wert der Variablen, in der der Wert steht. Also suchst Du immer noch in der Mail.php nach "requestHandler" und findest ganz oben folgende Deklaration:
/**
* @var tx_form_System_Request
*/
protected $requestHandler;

Das @var tx_form_System_Request sagt Dir, dass Du im Ordner Classes\System\Request die Datei Request.php suchen musst. In dieser Datei gibt es die get() Methode. Die gibt aber nur eine Variable zurück aus Get oder Post:
return $_GET[$this->prefix][$key];

d. h. Du müsstest Dir einen eigenen Postprocessor schreiben für dein Problem.

anderlk ·

Hallo Jansch,

super vielen Dank für Deine ausführliche Erläuterungen.
Na dann werde ich mich da wohl mal einarbeiten müssen.

Danke Anderl