Hallo Leute,
ich habe zwei Felder vom Typ "Date field" in meinem Powermailformular. Die beiden Felder habe ich als Pflichtfelder deklariert. Wenn ich mir das Formular im Frontend betrachte, werden die Felder ordentlich angezeigt und date2cal geht auch. Allerdings werden die Felder nicht auf Pflichtfeld per JavaScript geprüft. Wenn ich die Felder nicht ausfülle und das Formular absende, kommt dann die PHP Validierungsmeldung. Mir wäre es sehr wichtig, dass die Validierung auf Eingabe auch per JS geht.
Kann mir da jemand helfen?
Viele Grüße und danke, dabjoern
Hi,
hat denn keiner das beschriebene Problem? Ich pushe das Ganze jetzt noch einmal 😉
Viele Grüße, dabjoern
Fehlt die CSS Klasse "required" in den Datumsfeldern?
Hallo Alex,
du hast recht. Es fehlt die Klasse "required". Wie kann das sein? Zur Zeit sehe ich nur class="jscalendar validation-passed".
Grüße, dabjoern
Ein Blick in die class.tx_powermail_html.php verrät, dass das Feld komplett von date2cal gerendert wird und powermail keinen Einfluss hat CSS Klassen einzufügen...
Mmh, was denkst du, läuft da schief? Viel kann man da doch nicht falschmachen. Date2Cal läuft und an den Powermail Templates habe ich auch nichts geändert. Muss dazu etwas in den Templates stehen?
Grüße, dabjoern
dabjoern schrieb
Mmh, was denkst du, läuft da schief? Viel kann man da doch nicht falschmachen. Date2Cal läuft und an den Powermail Templates habe ich auch nichts geändert. Muss dazu etwas in den Templates stehen?
Das bedeutet, das sich das nicht machen lässt, sofern date2cal keine Klassenangabe von außen zulässt.
Ich habe mir die Datei ext/date2cal/src/class.jscalendar.php angeschaut. Die Funktion render() erzeugt die einzelnen Formularfelder. Das class Attribut ist hart codiert und kann nicht weiter ergänzt werden. Hier müsste ich dann wohl bei date2cal anfragen, ob dieses Feature zeitnah möglich ist. Das mache ich mal. Eine Erweiterung deines powermail Codes dürfte ja nicht zu schwierig sein, oder?
Viele Grüße, dabjoern
Okay, ich habe mal ein wenig gebastelt und habe folgenden Code gefunden, der zum Ziel führt. Ich habe in der Datei class.tx_powermail_html.php in der Funktion html_date() folgende Änderung vorgenommen:
<?php
if ($this->pi_getFFvalue(t3lib_div::xml2array($this->xml),'mandatory') == 1 || $this->conf['validate.']['uid'.$this->uid.'.'][required] == 1) {
$addClass = array('required');
}
$this->markerArray['###FIELD###'] .= $JSCalendar->render($value, 'tx_powermail_pi1[uid' . $this->uid . ']', '', '', $addClass);
?>
In der Datei class.jscalendar.php habe ich die render() Funktion ein wenig erweitert:
<?php
if ($addClass) {
$addClass = ' '.implode(' ', $addClass);
}
$content .= '<input type="text" size="' . $size . '" maxlength="' . $size . '" name="' . $name . '" id="' . $this-" />config['inputField'] . '_hr" class="jscalendar' . $addClass . '" ' .
'onchange="date2cal_activeDateField(\'' . $this->config['inputField'] . '_cb\', \'' .
$this->config['inputField'] . '_hr\');" value="' . $value . '" />';
?>
Damit klappt es super. Was denkst du? Einen Feature Request habe ich bereits bei Forge aufgemacht (http://forge.typo3.org/issues/show/3636).
Grüße, dabjoern
Wenn date2cal vorlegt wird powermail nachziehen 😃
Hehe, cool 😉
Es entstehen aber leider noch Probleme mit dem Image, dass den Kalender aufruft. Es rutscht nach unten, sobald der Fehlermeldungstext erscheint. Die Position der Fehlermeldung (div #advice-required-uidXY) kann man leider nicht bestimmen. Hier ist mir noch nichts eingefallen. Ich muss mal schauen, was du da im JavaScript machst. Hier arbeitest du ja mit parentNode.parentNode;
Ciao, dabjoern
einpraegsam.net schrieb
Wenn date2cal vorlegt wird powermail nachziehen 😃
date2cal hat vorgelegt 😃
Es würde nun genügen, wenn in der html_date() Funktion etwas in dieser Richtung einfügt werden würde.
if ($this->pi_getFFvalue(t3lib_div::ml2array($this->xml), 'mandatory') == 1){
$params['inputField']['class'] = 'jscalendar required';
}
Müsste dann xml2array sein, wird aber sonst durch ein smiley ersetzt.
Gruss