[90% geloest] uc_legalaspects oder auch, "wenn Maenner weinen..."
am 29.09.2009 - 13:48 Uhr in
Vorab schon mal ein Danke schoen, fuer das Hineinklicken in diesen Hilferuf. ;)
Was benoetigt wird:
Drupal 6 mit eigenem Theme und funktionierendem Ubercart Shop, inklusive einer funktionierenden "AGB gelesen und einverstanden" Checkbox.
Was geht:
Drupal 6 Installation mit eigenem Theme und einem Ubercart Shop. Wenn die Seite von aussen zu erreichen ist, wird sich auch noch zeigen, ob die Anbindung von Paypal und ClickandBuy auch funktioniert, momentan kann ich das aber noch nicht testen.
Ich habe auf der ubercart Seite ein Modul uc_legalaspects gefunden, das sich in Beta2 Status befindet und eigentlich auch schon recht gut funktioniert.
Was nicht geht:
Man kommt im Shop tatsaechlich nicht weiter, wenn man die AGB Checkbox nicht anklickt. Allein, die Box wird nicht rot umrandet, man sieht also gar nicht, weshalb man immer und immer wieder auf der gleichen Seite landet.
Warum geht es nicht:
Es wird bei der Checkbox die Klasse "error" nicht gesetzt!
Was ich bereits getestet habe:
1) Ich habe zusaetzlich das Modul checkbox_validate installiert, dies ist auch bereits mit einem von mir neu erstellten Profilfeld in der Useranmeldung erfolgreich getestet worden. Man muss halt noch den Style outline fuer die entsprechende Klasse fuer den Firefox setzen, dann wird die Checkbox auch im Firefox artig rot umrandet, wenn man sie nicht angeklickt hat.
2) Ich habe in der Tabelle prefix_system in der Datenbank beim Modul checkbox_validate eine 1 in der Spalte weight gesetzt, sowie auch mal eine -1, in der Hoffnung, dass das Modul dann greift und die Klasse sauber setzt. Danach habe ich jeweils den cache geloescht. Oder muss man etwas anderes loeschen oder refreshen? Getan hat sich jedenfalls nichts.
3) Ich habe im Modul uc_legalaspects mal in Zeile 160 den Typ auf textfield gesetzt ('#type' => 'textfield',) und siehe da, ich bekomme meinen roten Rand um die Textbox.
Was ich nun irgendwie wissen muesste:
Was muss ich tun, damit beim Checken des Forms die "bloede" Checkbox mit der Klasse error versehen wird, wenn das Feld nicht angeklickt wurde? Oder gibt es einen Workaround, also zum Beispiel den ganzen Block rot umranden oder das Label der Checkbox auf rote Schrift setzen? Die rot umrandete Checkbox waere mir ja am Liebsten.
Ich wuerde mich wirklich sehr ueber einen sachdienlichen Hinweis freuen, da ich mich nun schon fast den ganzen Tag mit dieser "albernen" Checkbox beschaeftige...
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: Man kommt im Shop
am 29.09.2009 - 14:16 Uhr
Man kommt im Shop tatsaechlich nicht weiter, wenn man die AGB Checkbox nicht anklickt. Allein, die Box wird nicht rot umrandet, man sieht also gar nicht, weshalb man immer und immer wieder auf der gleichen Seite landet.
Kriegste nichma ne Fehlermeldung? Sowas wie "Das Feld Allgemeine Geschäftsbedingungen ist erforderlich" oder etwas in der Art?
Das Checkboxen rot umrandet werden, wenn diese erforderlich sind aber nicht aktiviert wurden, hab ich bis jetzt eher selten gesehn. Ich meine form_set_error ist auch nicht für checkbox vorgesehen.
Was du machen könntest: theoretisch kann man das mit JQuery lösen. Könntest dem Submit-Button ein onclick-Event verpassen, dabei prüfen ob die checkbox aktiviert ist und dieser dann nen roten Rahmen geben. Das Modul Custom CSS JS ist da sehr hilfreich. Ne andere Methode fällt mir auf Anhieb nich ein.
Danke
am 29.09.2009 - 15:29 Uhr
Man kommt im Shop tatsaechlich nicht weiter, wenn man die AGB Checkbox nicht anklickt. Allein, die Box wird nicht rot umrandet, man sieht also gar nicht, weshalb man immer und immer wieder auf der gleichen Seite landet.
Kriegste nichma ne Fehlermeldung? Sowas wie "Das Feld Allgemeine Geschäftsbedingungen ist erforderlich" oder etwas in der Art?
*duck* *rot werd, ganz gaaanz rot* *raeusper*
Also wenn man natuerlich $messages auch mal ausgeben wuerde, dann, ja dann saehe man auch die Box mit den Fehlern. *verkriech*
Ich muss zu meiner Verteidigung aber auch sagen, dass diese Seite meine erste Drupal Seite (von einer Miniseite zum Testen abgesehen) ist und ich bislang die Messages im "Frontend" nicht benoetigt habe. Irgendwie habe ich sie dann gaenzlich vergessen...
Das Checkboxen rot umrandet werden, wenn diese erforderlich sind aber nicht aktiviert wurden, hab ich bis jetzt eher selten gesehn. Ich meine form_set_error ist auch nicht für checkbox vorgesehen.
Na ja, inkonsequent ist es aber schon, wenn man die fehlerhaften Textfelder rot umrandet, bei den Checkboxen aber heile Welt vorgaukelt. Und eigentlich ist dafuer ja auch das Modul validate_checkbox zustaendig, keine Ahnung, weshalb das an dieser Stelle so renitent zu seni scheint. Wenn ich nur nicht den Zeitdruck haette... Aber ich werde mir das Problem nach Beendigung des Jobs definitiv noch mal gruendlich anschauen und hier Rueckmeldung geben.
Was du machen könntest: theoretisch kann man das mit JQuery lösen.
Jo, mit JQuery bastel ich eh schon immer an "Problemstellen", aber lieber waere mir eine "anstaendige" Loesung. Schwierig an dieser Stelle mit JQuery ist auch, dass die Seite ja erst mal neu geladen wird, ich dann also irgendwie festlegen muesste, ob die Seite jetzt zum ersten Mal aufgerufen wird und noch gar kein Fehler vorliegt, oder ob die Seite jetzt wegen der fehlenden Checkbox erneut aufgerufen wird.
Am Ende ist es aber nicht so arg wichtig, da ich ja nun einfach mal die $messages ausgebe *floet* und der User somit eine Rueckmeldung erhaelt.
Das Modul Custom CSS JS ist da sehr hilfreich.
Das Modul schaue ich mir mal an. Auf Anhieb sah ich da jetzt keinen direkten Vorteil der Funktion drupal_add_js() in der template.php gegenueber?
Ich muss ja sagen, Drupal ist schon wirklich schick, meist sitzt das Problem einfach nur vor dem Monitor. Vielen Dank dafuer, dass Du dir die Zeit genommen und mir den noetigen Hinweis gegeben hast!
Zitat: Schwierig an dieser
am 30.09.2009 - 06:12 Uhr
Schwierig an dieser Stelle mit JQuery ist auch, dass die Seite ja erst mal neu geladen wird, ich dann also irgendwie festlegen muesste, ob die Seite jetzt zum ersten Mal aufgerufen wird und noch gar kein Fehler vorliegt, oder ob die Seite jetzt wegen der fehlenden Checkbox erneut aufgerufen wird.
Das könnte man mit Hilfe eines Cookies lösen. Cookies müssen ja eh aktiviert sein, sonst funktionier Ubercart ja nich :-)
Das Modul schaue ich mir mal an. Auf Anhieb sah ich da jetzt keinen direkten Vorteil der Funktion drupal_add_js() in der template.php gegenueber?
Der Vorteil ist, dass du die JavaScript-Datei lediglich in einen Ordner, der vom Modul erstellt wird, hochladen musst. Das Einbinden geschieht automatisch.