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
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...
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
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
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
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
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