Zum Inhalt springen

Powermail 1.4.1 + eigene JS-Fehlertexte

Erstellt am 18. November 2008 · 7 Antworten · letzte Antwort am 6. Dezember 2008

Tags: Powermail, JavaScript & AJAX, Frage

webzigartig ·

Ich habe gerade auf 2 TYPO3 4.2.3-Installationen die Extension Powermail von 1.3.x auf 1.4.1 geupgradet. Anschließend habe ich gemäß http://forge.typo3.org/issues/show/2171 die ext_typoscript_setup.txt modifziert, so dass jetzt alle JS-Dateien im Seiten-Header sauber eingebunden werden.

Mein Problem: die JS-Validierung gibt bei fehlerhaften Formulareingaben nur dann eine Fehlermeldung aus, wenn ich die Texte dieser Fehlermeldungen nicht verändert habe. Sobald ich aber im TS-Setup folgende Zeilen einbinde...

plugin.tx_powermail_pi1._LOCAL_LANG.de{
	JSvalidation_label_required = Bitte dieses Feld ausfüllen (Pflichtfeld).
	JSvalidation_label_validate_email = Bitte geben Sie eine gültige E-Mail-Adresse ein.
}
# Only needed if JS language marker should be changed (Jsvalidation_label_...)
powermailJS.10 < plugin.tx_powermail_pi1

... erscheinen die JS-Fehlermeldungen nach einer Fehleingabe nicht mehr.

Bei der Ursachenforschung bin ich auf folgenden Effekt gestossen:

Rufe ich die www.domain.de/validation/dingens/kirchens.html direkt auf (also die Seite vom PageType 3131), dann erhalte ich folgende Fehlermeldungen:

PowerMail-Fehler!! Bitte folgende Felder im Backend ausfüllen:Betreff für E-Mail an Empfänger
PowerMail-Fehler!! Bitte folgende Felder im Backend ausfüllen:E-Mail-Adresse des Empfängers

Die Fehlermeldung sind "ungerechtfertigt" - die bemängelten Felder sind korrekt ausgefüllt 😉

Verzichte ich auf den obigen TS-Code und rufe diese Seite auf, tauchen diese Fehlermeldungen nicht auf.

Viele Grüße

Christian

einpraegsam.​net ·

Also natürlich lässt sich das machen, aber es verwundert mich dass es nicht mehr mit der alten Methode funktionieren soll.

Seit 1.4 wird das dynamische JS komplett mit TS erzeugt (Blick in die ext_typoscript_setup.txt):

...
powermailJS = PAGE
powermailJS {
	typeNum = 3131
	
	config {
		disableAllHeaderCode = 1
		disablePrefixComment = 1
		xhtml_cleaning = 0
		admPanel = 0
	}
	
	10 = TEMPLATE
	10 {
		template = FILE
		template.file = EXT:powermail/js/mandatoryjs/validation.js
		
		subparts.REQUIRED = TEXT
		subparts.REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_required
		subparts.VALIDATE_REQUIRED = TEXT
		subparts.VALIDATE_REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_number
		subparts.VALIDATE_DIGITS = TEXT
		subparts.VALIDATE_DIGITS.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_digits
		subparts.VALIDATE_ALPHA = TEXT
		subparts.VALIDATE_ALPHA.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_alpha
		subparts.VALIDATE_ALPHANUM = TEXT
		subparts.VALIDATE_ALPHANUM.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_alphanum
		subparts.VALIDATE_DATE = TEXT
		subparts.VALIDATE_DATE.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_date
		subparts.VALIDATE_EMAIL = TEXT
		subparts.VALIDATE_EMAIL.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_email
		subparts.VALIDATE_URL = TEXT
		subparts.VALIDATE_URL.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_url
		subparts.VALIDATE_DATE_AU = TEXT
		subparts.VALIDATE_DATE_AU.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_date_au
		subparts.VALIDATE_CURRENCY_DOLLAR = TEXT
		subparts.VALIDATE_CURRENCY_DOLLAR.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_currency_dollar
		subparts.VALIDATE_SELECTION = TEXT
		subparts.VALIDATE_SELECTION.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_selection
		subparts.VALIDATE_ONE_REQUIRED = TEXT
		subparts.VALIDATE_ONE_REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_one_required
	}
}

Jetzt dürfte auch klar sein, wie man die Fehlermeldungen anpassen kann...

webzigartig ·

Etwa so?

powermailJS.10 {
	subparts.REQUIRED.value = Eigener Fehlertext
	subparts.REQUIRED.data >
	subparts.VALIDATE_EMAIL.value= Eigener Fehlertext
	subparts.VALIDATE_EMAIL.data >
}

Scheint mir irgendwie "unsauber" zu sein - gibt's eine "sauberer" Lösung als meine? 😉

Viele Grüße

Christian

webzigartig ·

Womit ich auch schon seit Tagen kämpfe: seit dem Upgrade auf Version 1.4.1 werden in Formularen im Französischen überhaupt keine JS-Fehlermeldungen mehr ausgegeben: http://www.eeginfo.ch/fr/eeginfo/contact.html.

Ich habe die JS-Fehlermeldungstexte zwar angepaßt, aber selbst wenn ich die Anpassungen rauswerfe und alles auf den Standardeinstellungen belasse, spuckt das Formular zwar im Deutschen (UID0), Englischen (UID1) und Spanischen (UID3) brav JS-Fehlermeldungen aus, im Französischen (UID2) jedoch nicht.

Anders formuliert: ich erstelle ein Powermailformular, setze die Sprache auf Französisch - es werden keine JS-Fehlermeldungen ausgegeben. Ich setze die Sprache auf Englisch - es werden JS-Fehlermeldungen ausgegeben.

Meine französischen Spracheinstellungen:

config.language = fr
config.locale_all = fr_FR.utf8
config.sys_language_uid = 2

Weiß jemand Rat? Hat jemand einen Tipp, wonach ich suchen könnte?

Christian

einpraegsam.​net ·

Fehler gefunden:

['validate-digits', 'Veuillez utiliser uniquement des chiffres dans ce champ. Evitez les espaces et d'autres caractères comme les points ou les virgules', function(v)

Das Hochkomma im Text muss escaped werden

webzigartig ·

Habe das Hochkomma in pi1/locallang.xml escaped - und tatsächlich, jetzt spuckt auch das französische Formular JS-Fehlermeldungen aus. Tausend Dank!

Soll ich das unter http://forge.typo3.org als Bug "reporten"?

Viele Grüße

Christian

webzigartig ·

Ohne Eingriff in die locallang.xml geht's auch - einfach ins TS-Setup:

powermailJS.10.subparts.VALIDATE_DIGITS=Veuillez utiliser uniquement des chiffres dans ce champ. Evitez les espaces et d'autres caractères comme les points ou les virgules