Wir verwenden auf einer Internetseite Joomla! mit installiertem ArtForms Version: 2.1b7.1 [RC1 For Joomla 1.5]. Wie zu erwarten sind noch einige Fehler in dem Modul zu finden. Im Folgenden möchte ich einige Lösungen für kleine Bugs vorstellen:
Bei falscher Captcha-Eingabe werden Eingabefelder gelöscht
Wird das Formular abgesendet, jedoch ein falscher Captcha-Code eingegeben, so werden alle anderen Eingabefelder geleert und man muss das gesamte Formular erneut ausfüllen. Wünschenswert wäre ja, wenn die Felder bestehen blieben und man lediglich das Captcha erneug eingeben müsste.
Um diesen Bug zu beheben, muss die direkte Weiterleitung nach dem Überprüfen des Captchas ausgeschaltet werden. Hierfür die Datei /components/com_artforms/artforms.html.php
öffnen. Die Captcha-Überprüfung beginnt hier in der Zeile 103. Hier werden die einzelnen Varianten überprüft und gegebenenfalls der Benutzer zurückgeleitet. Die Zeile
1 |
$mainframe->redirect( JRoute::_( $alink.'&formid='.$formid.'&Itemid='.$Itemid.'&afmsg='.$msg ) ); |
die in jeder Überprüfung die Weiterleitung einleitet, unterbindet, dass andere Fehler überprüft werden und die Felder wieder mit Inhalt gefüllt werden.
Diese Zeile einfach durch die folgende ersetzen:
1 2 |
$a_errors[] = '<div class="artforms-errorfield">Überprüfung des Sicherheitscodes ist fehlgeschlagen!</div>'; $a_error_ids[] = $item->item_id; |
Dies bewirkt, dass nur eine Fehlermeldung erzeugt wird. Text, etc. der Meldung kann man hier entsprechend anpassen. Nachdem nun ein Fehler erzeugt wurde, wird das Script trotzdem weiter ausgeführt, andere Fehler werden gescannt und die Felder werden auch wieder mit Inhalten gefüllt.
Bei fehlerhaftem Absenden des Formulars werden Textarea-Felder geleert
Bei der Überprüfung und dem erneuten Füllen der Formularfelder, falls ein Fehler auftritt, haben die Programmierer vergessen, auch Textarea-Felder wieder mit Inhalt zu füllen. Deshalb werden diese geleert, wenn das Formular nicht erfolgreich abgeschickt werden konnte. Um diesen Bug zu beheben, die Datei /administrator/components/com_artforms/lib/af.lib.artforms.php
öffnen und in der Zeile 327 den folgenden Code einfügen:
1 2 3 4 5 |
if(isset($_POST['item_'.$item->item_id])){ $value = $_POST['item_'.$item->item_id]; } else { $value = $item->default_values; } |