Der Standard Warenkorb von WHMCS ist ja nicht wirklich Rechtskonform.
Wer nun schon eigene checkbox in der viewcart.tpl erstellt hat nutzt bestimmt auch ein JavaScript zu Prüfung ob der Kunde auch die Bedingungen selektiert hat.
Ja nun ist das so eine Sache mit den JavaScipt. Mir ist es schon passiert das der Kunde JavaScript deaktiviert hat oder auch ein Modul was selbst noch einmal JavaScipt inkludiert einen Fehler wirft und somit die Prüfung nicht mehr funktioniert.
Zusätzlich nervt es mich langsam ständig die Fehler im JavaScript zu suchen, wobei einige Modulentwickler JQuery nutzen und die anderen nicht, oder ein Template ein eigenes Script mitliefert.
Des weiteren bin ich der Meinung das solche Eingabeprüfungen über JavaScript rechtlich abmahnfähig ist, da technisch leicht manipulierbar.
Hierfür habe ich mir mal den Hook "ShoppingCartValidateCheckout" angeschaut.
Im Template viewcart.tpl habe ich mir folgende checkbox Felder erstellt:
<label><input type="checkbox" name="accepttos" id="checkbox_toc" />{$LANG.ordertosagreement} <a href="{$tosurl}" target="_blank">{$LANG.ordertos}</a></label>
<label><input type="checkbox" name="acceptsla" id="checkbox_sla" />{$LANG.orderslaagreement} <a href="/service/service-level-agreements.html" target="_blank">{$LANG.ordersla}</a></label>
<label><input type="checkbox" name="acceptpp" id="checkbox_pp" />{$LANG.orderppagreement} <a href="/service/privacy-statement.html" target="_blank">{$LANG.orderpp}</a></label>
<label><input type="checkbox" name="acceptri" id="checkbox_ri" />{$LANG.orderriagreement} <a href="/service/conditions.html" target="_blank">{$LANG.orderri}</a></label>
Folgende Sprachdatei Einträge müsst ihr noch erstellen.
in: /whmcs/lang/german.php
oder: /whmcs/lang/overrides/german.php
$_LANG['orderconditions'] = "Bitte bestätigen Sie unsere AGB und weitere Informationen";
$_LANG['ordertos'] = "AGB";
$_LANG['ordertosagreement'] = "Ich habe die allgemeinen Geschäftsbedingungen gelesen und bin damit einverstanden.";
$_LANG['ordererrortermsofservice'] = "Sie müssen unsere Allgemeinen Geschäftsbedingungen akzeptieren.";
$_LANG['ordersla'] = "SLA";
$_LANG['orderslaagreement'] = "Ich habe die Service Level Agreements gelesen und verstanden.";
$_LANG['ordererrorsla'] = "Sie müssen unsere Service Level Agreements akzeptieren.";
$_LANG['orderpp'] = "Datenschutzerklärung";
$_LANG['orderppagreement'] = "Ich habe die Datenschutzerklärung gelesen und verstanden.";
$_LANG['ordererrorpp'] = "Sie müssen unsere Datenschutzerklärung akzeptieren.";
$_LANG['orderri'] = "Widerrufsbelehrung";
$_LANG['orderriagreement'] = "Ich habe die Widerrufsbelehrung gelesen und verstanden.";
$_LANG['ordererrorri'] = "Sie müssen unsere Widerrufsbelehrung akzeptieren.";
Display More
nun erstellen den eigentlichen hook in: /whmcs/includes/hooks/CartValidateCheckout.php
<?php
if (!defined("WHMCS")) die("This file cannot be accessed directly");
function ShoppingCartValidateCheckoutTherms($vars) {
global $_LANG;
$errors = array();
// if ( $_REQUEST['accepttos'] != true ) {
// $errors[] = $_LANG['ordererrortermsofservice'];
// }
if ( $_REQUEST['acceptsla'] != true ) {
$errors[] = $_LANG['ordererrorsla'];
}
if ( $_REQUEST['acceptpp'] != true ) {
$errors[] = $_LANG['ordererrorpp'];
}
if ( $_REQUEST['acceptri'] != true ) {
$errors[] = $_LANG['ordererrorri'];
}
return $errors;
}
add_hook("ShoppingCartValidateCheckout",1,"ShoppingCartValidateCheckoutTherms");
?>
Display More
Danach könnt Ihr das JavaScript aus dem viewcart.tpl rausschmeißen. Wenn der Kunde nun auf "Jetzt Bestellen" klick prüft nun WHMCS ob alle Felder selektiert sind. Wenn nicht kommt eine Fehlermeldung wie im Bild zu sehen.
Bitte betrachtet die Texte und Quellcode als Beispiel und passt diese nach euren Bedürfnissen an! Verbesserungsvorschläge sind erwünscht!!!
Viel Spaß!!
Grüße STeaB