Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: Händlerbund - Haken bei Bestellung, AGB, Widerruf, Datenschutz

    icecrash

    • Neu im Forum
    • Beiträge: 35
    So hab die Boxen mal eingebaut.
    Ist einem aufgefallen das man auch ohne die Datenschutzbedingungen an nimmt weiter gehen kann?
    Sind die Boxen eigentlich rechtssicher? Ich hab dazu einige Artikel gelesen in dennen stand , dass diese nicht ok sind.

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo icecrash,

    da hast Du vollkommen Recht. Für die Datenschutzerklärung ist die Abprüfung per Javascript vergessen worden.

    Folgendes muss ergänzt werden:
    In includes/classes/payment.php in Z. 158 nach:

    Code: PHP  [Auswählen]
      $js .= "\n" . '  if (!document.getElementById("checkout_payment").withdrawal.checked) {' . "\n" .
             '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_WITHDRAWAL_NOT_ACCEPTED) . '");' . "\n" .
             '    error = 1;' . "\n" .
             '  }' . "\n\n";
     
    das einfügen:

    Code: PHP  [Auswählen]
      $js .= "\n" . '  if (!document.getElementById("checkout_payment").DATA_PRIVACY.checked) {' . "\n" .
             '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_DATA_PRIVACY_NOT_ACCEPTED) . '");' . "\n" .
             '    error = 1;' . "\n" .
             '  }' . "\n\n";
     
    Anbei sende ich Euch noch mal die komplette Umbauanleitung (inkl. Englisch) für AGB, Widerruf, Datenschutz als PDF.
    Für alle die bereits die PHP Dateien umgebaut haben.

     :thx: an modified eCommerce Shopsoftware_newbie für die Mitarbeit!

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.185
    • Geschlecht:
    Ich habe die verlinkten Lösungen in Beitrag 1 nochmal überarbeitet. Passt das jetzt so? Nichts gegen deine PDFs, aber übersichtlich ist anders. :-PP

    Grüße

    Torsten

    franky_n

    • Experte
    • Beiträge: 4.950
    Hi Torsten,

    na dann sag Du mir mal wie ich das am besten machen soll wenn ich es aus dem Forum rauskopieren will.
    Welches Programm nutzt Du zum Dokumentieren solcher Forenbeiträge?
    Das hatte ich Dich schon gefragt, aber das konntest Du mir nicht beantworten!  :PP

    Übrigens hatte ich danach mal Webkiste gefragt, aber der konnte mir auch keine Empfehlung geben.

    Es sollte nach Möglichkeit ohne viel Aufwand möglch sein so was zusammenzufassen.
    In einer Textverarbeitung habe ich das schon probiert das sieht ganz furchtbar aus... noch schlimmer als jetzt schon!

    Also nochmal wonach ich suche:
    Ein "Textverarbeitungsprogramm" was genauso wie hier im Forum funktioniert.
    Ich markiere den Text im Dokument der Quellcode sein soll und der Texteditor erstellt ein Kästchen mit den Zeilennummern markert die Zeilen von mir aus in einer Farbe...

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.185
    • Geschlecht:
    Ich würde das einfach hier ins Forum oder ins Wiki stellen, das hat den Vorteil, dass wir immer direkt editieren können und nicht jedes Mal den Anhang löschen und neu anhängen müssen. ;-)

    Grüße

    Torsten

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Torsten,

    jo trotzdem  :thx: für Deine Mühe!

    Ich bin echt am Überlegen ob ich einen Button für Dein Forum bauen soll mit automatischer PDF Ausgabe und Quelltext "Highlighting", aber das wird ja eh bald geändert...

    Ich finds so derzeit doch einfach kompliziert, wo es auch einfach ginge... ;)

    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Tomcraft,

    diesen Beitrag habe ich noch mal neu erstellt und direkt verlinkt.

    Händlerbund - Haken bei Bestellung: AGB, Widerruf, Datenschutz

    In includes/classes/payment.php in Z. 153 nach:

    Code: PHP  [Auswählen]
      $js .= "\n" . '  if (!document.getElementById("checkout_payment").conditions.checked) {' . "\n" .
             '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_CONDITIONS_NOT_ACCEPTED) . '");' . "\n" .
             '    error = 1;' . "\n" .
             '  }' . "\n\n";

    das einfügen:

    Code: PHP  [Auswählen]
      $js .= "\n" . '  if (!document.getElementById("checkout_payment").withdrawal.checked) {' . "\n" .
             '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_WITHDRAWAL_NOT_ACCEPTED) . '");' . "\n" .
             '    error = 1;' . "\n" .
             '  }' . "\n\n";
      $js .= "\n" . '  if (!document.getElementById("checkout_payment").DATA_PRIVACY.checked) {' . "\n" .
             '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_DATA_PRIVACY_NOT_ACCEPTED) . '");' . "\n" .
             '    error = 1;' . "\n" .
             '  }' . "\n\n";

    Dann in der checkout_payment.php nach der Z. 223:

    Code: PHP  [Auswählen]
        $smarty->assign('AGB_checkbox', '<input type="checkbox" value="conditions" name="conditions" />');
      }
      // EOF - Tomcraft - 2009-10-01 - AGB checkbox re-implemented

    das einfügen:

    Code: PHP  [Auswählen]
      // BOF Withdrawal
      $shop_content_query2 = xtc_db_query("SELECT content_title,
                                                  content_heading,
                                                  content_text,
                                                  content_file
                                             FROM "
    . TABLE_CONTENT_MANAGER . "
                                            WHERE content_group='9' "
    . $group_check . "
                                              AND languages_id='"
    . $_SESSION['languages_id'] . "'");
      $shop_content_data2 = xtc_db_fetch_array($shop_content_query2);
      if ($shop_content_data2['content_file'] != '') {
        $conditions2 = '<div class="withdrawalframe">' . file_get_contents(DIR_FS_DOCUMENT_ROOT . 'media/content/' . $shop_content_data2['content_file']) . '</div>';
      } else {
        $conditions2 = '<div class="withdrawalframe">' . $shop_content_data2['content_text'] . '</div>';
      }
      $smarty->assign('WITHDRAWAL', $conditions2);
      $smarty->assign('WITHDRAWAL_LINK', $main->getContentLink(9, MORE_INFO,'SSL'));
      if (isset ($_GET['step']) && $_GET['step'] == 'step2') {
        $smarty->assign('WITHDRAWAL_checkbox', '<input type="checkbox" value="withdrawal" name="withdrawal" checked />');
      } else {
        $smarty->assign('WITHDRAWAL_checkbox', '<input type="checkbox" value="withdrawal" name="withdrawal" />');
      }
      // EOF Withdrawal

      // BOF DATA_PRIVACY
      $shop_content_query3 = xtc_db_query("SELECT content_title,
                                                  content_heading,
                                                  content_text,
                                                  content_file
                                             FROM "
    . TABLE_CONTENT_MANAGER . "
                                            WHERE content_group='2' "
    . $group_check . "
                                              AND languages_id='"
    . $_SESSION['languages_id'] . "'");
      $shop_content_data3 = xtc_db_fetch_array($shop_content_query3);
      if ($shop_content_data3['content_file'] != '') {
        $conditions3 = '<div class="DATA_PRIVACYframe">' . file_get_contents(DIR_FS_DOCUMENT_ROOT . 'media/content/' . $shop_content_data3['content_file']) . '</div>';
      } else {
        $conditions3 = '<div class="DATA_PRIVACYframe">' . $shop_content_data3['content_text'] . '</div>';
      }
      $smarty->assign('DATA_PRIVACY', $conditions3);
      $smarty->assign('DATA_PRIVACY_LINK', $main->getContentLink(2, MORE_INFO,'SSL'));
      if (isset ($_GET['step']) && $_GET['step'] == 'step2') {
        $smarty->assign('DATA_PRIVACY_checkbox', '<input type="checkbox" value="DATA_PRIVACY" name="DATA_PRIVACY" checked />');
      } else {
        $smarty->assign('DATA_PRIVACY_checkbox', '<input type="checkbox" value="DATA_PRIVACY" name="DATA_PRIVACY" />');
      }
      // EOF DATA_PRIVACY

    In der /templates/xtc5/module/checkout_payment.html in Z. 31 nach:

    Code: PHP  [Auswählen]
      <table width="100%" border="0" cellspacing="0" cellpadding="4">
        <tr>
          <td>{$AGB_checkbox}</td>
          <td width="100%"><strong>{#text_accept_agb#}</strong></td>
       </tr>
      </table>

    das einfügen:

    Code: PHP  [Auswählen]
      <h2>{#title_withdrawal#}</h2>
     <p class="checkoutwithdrawal">{$WITHDRAWAL}</p>
      <table width="100%" border="0" cellspacing="0" cellpadding="4">
        <tr>
          <td>{$WITHDRAWAL_checkbox}</td>
          <td width="100%"><strong>{#text_accept_withdrawal#}</strong></td>
       </tr>
      </table>
      <h2>{#title_DATA_PRIVACY#}</h2>
     <p class="checkoutDATA_PRIVACY">{$DATA_PRIVACY}</p>
      <table width="100%" border="0" cellspacing="0" cellpadding="4">
        <tr>
          <td>{$DATA_PRIVACY_checkbox}</td>
          <td width="100%"><strong>{#text_accept_DATA_PRIVACY#}</strong></td>
       </tr>
      </table>

    Dann noch in der /templates/xtc5/stylesheet.css in Z.1052 nach:

    Code: CSS  [Auswählen]
      /* AGB ON CHECKOUT SITE */
      p.checkoutagb textarea {
        width:100%;
      }

    das einfügen:

    Code: CSS  [Auswählen]
      /* WITHDRAWAL ON CHECKOUT SITE */
      p.checkoutwithdrawal textarea {
        width:100%;
      }
      p.checkoutDATA_PRIVACY textarea {
        width:100%;
      }

    In der /templates/xtc5/stylesheet.css Z. 1236 nach:

    Code: CSS  [Auswählen]
      /* BOF - Hetfield - 2010-01-20 - Remove agb-textarea from checkout_payment */
      div.agbframe {
        width:100%;
        height:200px;
        overflow:auto;
        padding:10px;
        background:url(img/input_bg.gif) no-repeat;
        border:1px solid #666;
      }
      /* EOF - Hetfield - 2010-01-20 - Remove agb-textarea from checkout_payment */
      /* BOF - web28 - 2010-04-29 - fix ol and ul Tag  in checkout_payment agbframe */
      div.agbframe ol, div.agbframe ul  {
        margin-left:30px;
      }
      /* EOF - web28 - 2010-04-29 - fix ol and ul Tag  in checkout_payment agbframe */

    das einfügen:

    Code: CSS  [Auswählen]
      /* BOF - withdrawalframe */
      div.withdrawalframe {
        width:100%;
        height:200px;
        overflow:auto;
        padding:10px;
        background:url(img/input_bg.gif) no-repeat;
        border:1px solid #666;
      }
      div.withdrawalframe ol, div.withdrawalframe ul  {
        margin-left:30px;
      }
      /* EOF - withdrawalframe */
      /* BOF - DATA_PRIVACYframe */
      div.DATA_PRIVACYframe {
        width:100%;
        height:200px;
        overflow:auto;
        padding:10px;
        background:url(img/input_bg.gif) no-repeat;
        border:1px solid #666;
      }
      div.DATA_PRIVACYframe ol, div.DATA_PRIVACYframe ul  {
        margin-left:30px;
      }
      /* EOF - DATA_PRIVACYframe */

    Dann in der /lang/german/lang_german.conf nach Z.350:

    Code: PHP  [Auswählen]
      title_agb = 'Allgemeine Geschäftsbedingungen:'
      text_accept_agb = 'Ich akzeptiere die allgemeinen Geschäfts- und Lieferbedingungen'

    das einfügen:

    Code: PHP  [Auswählen]
      title_withdrawal = 'Widerrufsrecht:'
      text_accept_withdrawal = 'Ich akzeptiere das Widerrufsrecht'
      title_DATA_PRIVACY = 'Datenschutzerklärung:'
      text_accept_DATA_PRIVACY = 'Ich akzeptiere die Datenschutzerklärung'

    In /lang/german/german.php in Z.263 nach:

    Code: PHP  [Auswählen]
      define('ERROR_CONDITIONS_NOT_ACCEPTED', '* Sofern Sie unsere Allgemeinen Geschäftsbedingungen nicht akzeptieren,\n können wir Ihre Bestellung bedauerlicherweise nicht entgegennehmen!\n\n');

    das einfügen:

    Code: PHP  [Auswählen]
      define('ERROR_WITHDRAWAL_NOT_ACCEPTED', '* Sofern Sie unser Widerrufsrecht nicht akzeptieren,\n können wir Ihre Bestellung bedauerlicherweise nicht entgegennehmen!\n\n');
      define('ERROR_DATA_PRIVACY_NOT_ACCEPTED', '* Sofern Sie unsere Datenschutzerklärung nicht akzeptieren,\n können wir Ihre Bestellung bedauerlicherweise nicht entgegennehmen!\n\n');

    Dann in der /lang/english/lang_english.conf nach Z.349:

    Code: PHP  [Auswählen]
      title_agb = 'General terms and conditions:'
      text_accept_agb = 'I accept your general terms and conditions as well as your conditions of delivery'

    das einfügen:

    Code: PHP  [Auswählen]
      title_withdrawal = 'Cancellation right:'
      text_accept_withdrawal = 'I accept the cancellation right'
      title_DATA_PRIVACY = 'Data protection explanation'
      text_accept_DATA_PRIVACY = 'I have read data protection explanation'

    In /lang/english/english.php in Z.263 nach:

    Code: PHP  [Auswählen]
      define('ERROR_CONDITIONS_NOT_ACCEPTED', '* Sofern Sie unsere Allgemeinen Geschäftsbedingungen nicht akzeptieren,\n können wir Ihre Bestellung bedauerlicherweise nicht entgegennehmen!\n\n');

    das einfügen:

    Code: PHP  [Auswählen]
      define('ERROR_WITHDRAWAL_NOT_ACCEPTED', '* Provided that you do not accept our cancellation right,\n we cannot accept your order,\n regrettably!\n\n');
      define('ERROR_DATA_PRIVACY_NOT_ACCEPTED', '*Provided that you have not read our data protection explanation,\n we cannot accept your order,\n regrettably!\n\n');

    Das ist alles, fix und fertig inkl. aller 3 Boxen mit englischer Sprache.

    Erweiterung bei ausgeschaltetem Javascript:

    Falls es noch jemanden interessiert.
    Ich habe in der "checkout_confirmation.php" ab Zeile 83 noch folgendes eingefügt:

    Code: PHP  [Auswählen]
    if (DISPLAY_CONDITIONS_ON_CHECKOUT == 'true') {
            if ($_POST['withdrawal'] == false) {
                    $error = str_replace('\n', '<br />', ERROR_WITHDRAWAL_NOT_ACCEPTED);
                    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode($error), 'SSL', true, false));
            }
    }

    jetzt klappt es auch, wenn Javascript ausgeschaltet ist.

    Viele Grüße

    Franky

    [EDIT Tomcraft 25.01.2012: Erweiterung bei ausgeschaltetem Javascript von joeyboombang1 mit eingefügt.]

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.185
    • Geschlecht:
    Ja, genau so meinte ich das und Danke für die Verlinkung in Beitrag 1! :D

    Grüße

    Torsten

    SchwarzerNebel

    • Fördermitglied
    • Beiträge: 115
    Hallo zusammen,

    ich habe mir die Abfrage in einem Test Shop eingebaut und fürchte, daß icecrash wohl Recht hat.
    Was habe ich gemacht: Wie oben von franky_n beschrieben, alle Dateien modifiziert.
    Ist dann auch alles da und lässt sich auch schön über die Content IDs steuern.
    Aber der Shop gibt sich vollstens damit zufrieden, wenn man die eigentliche "alte" AGB Box abhakt.
    die anderen beiden Boxen interessieren den Shop scheinbar nicht.
    Oder habe ich da evtl. einen Bedienfehler? Muss da im Admin noch etwas eingestellt werden bzw. umgestellt werden? Oder habe ich mir einen Fehler eingebaut?
    Besten Dank für Nachricht.

    Beste Grüße
    SchwarzerNebel
    Maddy

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo SchwarzerNebel,

    wahrscheinlich sind dann die folgenden Zeilen nicht korrekt oder gar nicht eingebaut worden:

    Code: PHP  [Auswählen]
    $js .= "\n" . '  if (!document.getElementById("checkout_payment").withdrawal.checked) {' . "\n" .
           '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_WITHDRAWAL_NOT_ACCEPTED) . '");' . "\n" .
           '    error = 1;' . "\n" .
           '  }' . "\n\n";
    $js .= "\n" . '  if (!document.getElementById("checkout_payment").DATA_PRIVACY.checked) {' . "\n" .
           '    error_message = error_message + unescape("' . xtc_js_lang(ERROR_DATA_PRIVACY_NOT_ACCEPTED) . '");' . "\n" .
           '    error = 1;' . "\n" .
           '  }' . "\n\n";

    Das ist das Javascript was die Checkboxen kontrolliert.

    Viele Grüße

    Franky

    SchwarzerNebel

    • Fördermitglied
    • Beiträge: 115
    Hallo franky_n,

    tatsächlich! Ich hatte mir in der besagten Datei irgendwie einen Fehler mit eingebaut.  :lol1:
    Nach nochmaligem Einbau funktioniert es prima. Sorry, war mein Fehler.

    Besten Dank an alle Beteiligten für die feine Arbeit!
    Grüße
    SchwarzerNebel
    Maddy

    xtcnutzer

    • Neu im Forum
    • Beiträge: 30
    Interessante Diskussion,

    Ich will mich gleich mal dranhängen.
    Über die drei Haken mag man streiten, aber fehlt in XTC standardmäßig nicht ein Downloadlink zu den AGB?
    Wenn man hierbei Angst hat, dann würde ich den eher einbauen als x-fache Abfrage.

    Habt ihr einen solchen Downloadlink drin? Wenn ja, wie definiert man den?

    Beste Grüße, Gerhard

    xtcm_newbie

    • Fördermitglied
    • Beiträge: 30
    • Geschlecht:
    Hallo zusammen,
    nur mal eine frage am Rande:
    kann ich in der checkout_payment.php die variable $shop_content_dataX mit einer externen Datei füllen (externes Dateien bzw AGB-hosting)?
    Falls ja - wie stellt man das an (Beispiel oder Link zu Infos wäre gut) - meine bisherigen Versuche sind fehlgeschlagen.. :(
    Danke im Voraus!!
    Gruss Andreas aka modified eCommerce Shopsoftware_nebie

    NMWorkwear

    • Mitglied
    • Beiträge: 114
    hallo Leute,

    jetzt muss ich aber auch nochmal nachfragen!
    Wieso brauche ich 3 checkboxen.

    Die Datenschutzerklärung bestätigt doch der Kunde noch vor einleiten des Bestellvorgangen! Also rechtssicher!

    Die ABG bestätigt der Kunde im nächsten abschnitt benfalls! Also rechtsicher!

    Im Anschluss wird dem Kunden die Widerrufsbelehrung angezeigt und bei Bestellabschluss in der Bestellbestätigung als Textform zugesendet! Also auch rechtssicher!

    Wozu brauche ich jetzt diese 3 Checkboxen!

    xMerchant

    • Frisch an Board
    • Beiträge: 87
    [...]
    Wieso brauche ich 3 checkboxen.

    Die Datenschutzerklärung bestätigt doch der Kunde noch vor einleiten des Bestellvorgangen! Also rechtssicher!

    Die ABG bestätigt der Kunde im nächsten abschnitt benfalls! Also rechtsicher!
    [...]

    Nur, wenn der Kunde seine Erstbestellung tätigt und die Registrierung taggleich erfolgt. Was ist mit Kunden, die nach Monaten wieder kommen und in der Zwischenzeit wurde die Datenschutzerklärung geändert? Der Kunde hat die alte akzeptiert, Du setzt implizit voraus, dass er bei der Bestellung die neue akzeptiert hat. Also muss der Kunde bei jeder Bestellung die Datenschutzerklärung akzeptieren, damit das ganze rechtssicher ist.

    [...]
    Im Anschluss wird dem Kunden die Widerrufsbelehrung angezeigt und bei Bestellabschluss in der Bestellbestätigung als Textform zugesendet! Also auch rechtssicher!

    Wozu brauche ich jetzt diese 3 Checkboxen!

    Verzichten könnte man auf die WRB, da sie eh nur in Textform gilt und das Anzeigen keine Textform ist. Allerdings nimmt der Kunde sie durch das Setzen der Checkbox bewusst zu Kenntnis, was nicht schlecht ist.
    0 Antworten
    2024 Aufrufe
    01. März 2015, 22:49:38 von cooperraser
    1 Antworten
    2994 Aufrufe
    23. Januar 2012, 14:37:44 von taxidd3
    4 Antworten
    4558 Aufrufe
    04. November 2013, 10:19:33 von MoSaG