Weihnachstgeschenk 2...

Thema wurde von Avenger, 22. Dezember 2011 erstellt.

  1. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    #1 Avenger, 22. Dezember 2011
    Zuletzt bearbeitet: 22. Dezember 2011
    Aus der Serie "Weil doch bald Weihnachten ist" noch eine kleine "große" Erweiterung...

    Bei der Eingabe ihrer Daten bei der Registrierung sind Kunden ja oft faul, so dass man nur unschöne kleingeschriebene Daten erhält.

    Beispiel: "klaus dieter müller-lüdenscheid bad orb"

    Mit der folgenden Javascript-Erweiterung wird daraus automatisch der "Klaus Dieter Müller-Lüdenscheid Bad Orb"..

    Diese Daten werden direkt nach verlassen des entsprechenden Eingabefelds umgewandelt, so dass der Kunde auch eine visuelle Rückmeldung erhält..

    Und sie kommt, wie man sieht, auch mit Mehrfachnamen zurecht. (Die meisten solchen Aktivitäten wandeln einfach den ersten Buchstaben des Feldes in Großbuchstaben um, total uncool..)

    Und E-Mail-Adressen sind von dieser Behandlung natürlich ausgenommen!

    Folgenden Javascript-Code an das Ende von

    "templates/EyeCandy/module/create_account.html",
    "templates/EyeCandy/module/create_account_guest.html",
    "templates/EyeCandy/module/account_edit.html",
    "templates/EyeCandy/module/address_book_process.html",
    "templates/EyeCandy/module/checkout_new_address.html"

    einfügen:

    Code:
    <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script>
    <script type="text/javascript">
    /*
    Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms
    Copyright 2011: Avenger, entwicklung@powertemplate.de
    */
    {literal}
       // Uppercase the first character of every word in a string
    function ucwords (str) {
      return str.replace(/^([a-zäöü])|[\s\-]+([a-zäöü])/g, function ($1) {
        return $1.toUpperCase();
      });
    }
    
    $(document).ready(function(){
      $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){
        var value=$(this).val();
    
        //Ignore numeric data and data in "email" fields...
        if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1)
        {
          value=ucwords(value);
          $(this).val(value);
        }
      });
    });
    {/literal}
    </script>
    Wie man sieht: mit ein paar Zeilen Javascript/jQuery kann man wieder große Wirkung erzielen...

    Have phun!
     
  2. chpl1

    chpl1 Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2011
    Beiträge:
    181
    Danke erhalten:
    10
    Danke vergeben:
    28
    #2 chpl1, 22. Dezember 2011
    Zuletzt bearbeitet: 22. Dezember 2011
    Und noch ein Weihnachtsgeschenk - cool!

    Werde das über Weihnachten gleich mal einbauen - DANKE!
     
  3. C h r i s t i a n

    C h r i s t i a n G-WARD 2012

    Registriert seit:
    26. April 2011
    Beiträge:
    3.456
    Danke erhalten:
    330
    Danke vergeben:
    551
    Schön! funktioniert.
     
  4. Petra

    Petra G-WARD 2013/14/15

    Registriert seit:
    27. August 2011
    Beiträge:
    6.998
    Danke erhalten:
    1.219
    Danke vergeben:
    227
    Super, danke! Ich ärgere mich immer über die hässliche Ausgabe in der Rechnung und auf den Adresslabels.
     
  5. iOS5

    iOS5 Erfahrener Benutzer

    Registriert seit:
    24. September 2011
    Beiträge:
    543
    Danke erhalten:
    44
    Danke vergeben:
    29
    Um auch Namen wie "érik Peters" korrigieren zu können und zwecks Wartbarkeit

    einfach in
    "templates/EyeCandy/module/create_account.html",
    "templates/EyeCandy/module/create_account_guest.html",
    "templates/EyeCandy/module/account_edit.html",
    "templates/EyeCandy/module/address_book_process.html",
    "templates/EyeCandy/module/checkout_new_address.html"

    an das Ende folgenden Quellcode einfügen
    Code:
    {* Formularcheck einbauen *}
    {include file='$tpl_path/javascript/Formularcheck.js'}
    den nachfolgenden Quellcode in eine Datei Formularcheck.js packen und nach /templates/EyeCandy/javascript/ uploaden
    Code:
    <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script>
    <script type="text/javascript">
    /*
    Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms
    Copyright 2011: Avenger, entwicklung@powertemplate.de
    */
    {literal}
       // Uppercase the first character of every word in a string
    function ucwords (str) {
      return str.replace(/^([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])|[\s\-]+([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])/g, function ($1) {
        return $1.toUpperCase();
      });
    }
    
    $(document).ready(function(){
      $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){
        var value=$(this).val();
    
        //Ignore numeric data and data in "email" fields...
        if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1)
        {
          value=ucwords(value);
          $(this).val(value);
        }
      });
    });
    {/literal}
    </script>
    Ich hab noch ein paar mehr Sonderzeichen reingepackt als nötig, aber lieber zu viel, als zu wenig.
     
  6. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Noch eine kleine Verbesserung:

    die Texte werden vor der Konvertierung erst mal in Kleinschreibung umgewandelt, für den Fall, dass der Kunde insgesamt (oder teilweise) Großbuchstaben verwendet hat...

    '
    Code:
    <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script>
    <script type="text/javascript">
    /*
    Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms
    Copyright 2011: Avenger, entwicklung@powertemplate.de
    */
    {literal}
    // Uppercase the first character of every word in a string
    function ucwords (str) {
      return str.replace(/^([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])|[\s\-]+([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])/g, function ($1) {
        return $1.toUpperCase();
      });
    }
    
    $(document).ready(function(){
      $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){
        var value=$(this).val();
    
        //Ignore numeric data and data in "email" fields...
        if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1)
        {
          value=value.toLowerCase();
          value=ucwords(value);
          $(this).val(value);
        }
      });
    });
    {/literal}
    </script>
     
  7. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.477
    Danke erhalten:
    5.932
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Danke. 3h zu spät :)
    Nu muss ich noch mal ran. Aber wirklich gut.
    Evtl. noch ne sperre das man bei PLZ und Geb. Datum nur Zahlen und "." eingeben kann?
    Falls das nciht zu viel verlangt ist
     
  8. Danny

    Danny Erfahrener Benutzer

    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    Vielen Dank an Avenger, für das nette Wiehnachtsgeschenk. Allein in der Vorweihnachtszeit hatte ich bestimmt wieder 3x Kunden, die alles klein geschrieben hatten... nun hat es endlich ein ENDE!!! :D Super

    Nochmals Danke und schon jetzt einen guten Rutsch ins neue Jahr an alle!!!!
     
  9. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Wünsche Frohe Weihnachten gehabt zu haben.....

    Das ist jetzt schon mal ein großer Schritt vorwärts, aber es lauert immer noch ein großes Problem: die E-Mail-Adresse:

    Viele Kunden vertippen sich dabei, so dass die Bestellbestätigungen usw. dann nicht richtig ankommen (auch mit Auswirkungen z.B. auf die ordnungsgemäße Widerrufsbelehrung).

    Was kann man diesbezüglich tun?

    Nun, zunächst mal kann man die formale Richtigkeit der eMail-Adresse prüfen, das hilft schon mal etwas.

    Als nächstes kann man mit PHP die DNS- und MX-Records der Mail-Adresse abfragen, so dass man zumindest dann schon mal weiß, dass der Mailserver existiert, was denn noch etwas mehr Sicherheit bietet.

    Aber immer noch ist unklar, ob das angegebene Postfach existiert, bzw. ob das nicht z.B. voll ist (was bei Freemailern gerne mal passiert..).

    Um auch diese letzte Unsicherheit zu beseitigen, habe ich das weiter getrieben: nach Absolvierung der vorgenannten Prüfungen wird dann mit dem Ziel-Mailserver eine SMTP-Dialog initiiert, wie er auch stattfindet, wenn eine eMail verschickt wird.....

    Vor dem letzten Schritt (dem Absenden der Daten) wird das dann beendet.

    Aber man weiß an dieser Stelle genau, ob er Ziel-Mailserver bereit wäre, eine eMail an die eMail-Adresse zu akzeptieren, oder nicht....

    Und hat dann eine genaue Mail-Adresse!

    Ich habe dieses Check-Programm mal hochgeladen...

    Unter

    http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=entwicklung@powertemplate.de

    ist die Antwort "true|Executed in 0.0068 seconds".

    Mit

    http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=xxxxx@powertemplate.de

    ist die Antwort

    false|550 5.1.1 : Recipient address rejected: User unknown in virtual alias table |Executed in 0.0252 seconds

    (Also Ablehnung und Fehlergrund....)

    Man hat damit also eine genaue Aussage über die Akzeptanz genau dieser Mail-Adresse durch den Mail-Server!

    Das Ganze muss jetzt noch in die Formular-Checkroutine integriert werden, dann ist auch das eMail-Problem ein ganzes Stück entschärft...

    Und wie man sieht, kostet das kaum Zeit.
     
  10. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.477
    Danke erhalten:
    5.932
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Wenn man weiß wie es geht xD

    Aber geniale Ideen die du da umsetzt. Muss man erst mal drauf kommen.
    Hab das aber nun mal mit 2 von unseren Adressen getestet und da kommt
    Code:
    http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=info@copy-weilburg.de
    
    Ausgabe ist dann
    
    false|555 5.5.2 Syntax error. rf5si10390517bkb.72 |Executed in 0.1205 seconds
    evtl. machen das nicht alle mailserver mit, kann das sein? Oder hab ich deine Variable am ende falsch verstanden?
     
  11. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    So viel zum Thema Standards....

    Den Syntax Error habe ich jetzt überwunden, aber dann läuft er endgültig in einen anderen Fehler:

    false|Step 6 ("info@copy-weilburg.de") -- 553-5.1.2 We weren't able to find the recipient domain. Please check for any |Executed in 0.2007 seconds
     
  12. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.477
    Danke erhalten:
    5.932
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    habs aber auch mit meiner googlemail adresse versucht. Da kam auch nix bei raus. und unsere andere kommt nach 60 sek. erst ne False meldung.

    Die Idee ist klasse, aber denke mal das einige Mailserver das einfach blocken wenn keine echte Mail kommt oder so. Kenn mich da nicht so aus.

    Bei der @print-weilburg.de (anderer Mailserver)
    Code:
    false|Step 4 ("p4FD91872.dip0.t-ipconnect.de") -- |Executed in 60.1012 seconds
    bei meiner @gmail.com
    Code:
    false|Step 6 ("XXXXXXX@gmail.com") -- 553-5.1.2 We weren't able to find the recipient domain. Please check for any |Executed in 1.0939 seconds
     
  13. iOS5

    iOS5 Erfahrener Benutzer

    Registriert seit:
    24. September 2011
    Beiträge:
    543
    Danke erhalten:
    44
    Danke vergeben:
    29
    Und wie findest du für den SMTP Dialog den SMTP Port heraus?
    Angenommen ich betreibe meinen SMTP Server auf Port 19674.
    Würde das so einfach gehen hätte man eine Spam-E-Mail-Sammelmaschine.
     
  14. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.539
    Danke vergeben:
    908
    Ort:
    Bremen
    #14 Manni_HB, 27. Dezember 2011
    Zuletzt bearbeitet: 28. Dezember 2011
    Auch die Prüfung der Telefon-Nummer wäre wünschenswert.
    Erlaubte Zeichen:
    - beginnen darf diese mit + - - Ziffern 0-9
    - Sonderzeichen: - / , ()
    - Leerzeichen
    - Keine Buchstaben

    Eine superintelegende Kundin gab als TelNr. ein: "1234/5678tomate"
    Ergebnis war: Der Versuch mit "Sofort auf Rechnung" zu bezahlen wurde mit Fehler "Validation" abgelehnt - Kundin bestellte (beleidigt!?) gar nix!
     
  15. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das ist eine Mail-Adresse, die von Google verwaltet wird, und da gibt es im Internet viele gleichartige Problemmeldungen.

    Aber ich habe jetzt nach einigen Internet-Recherchen eine Lösung gefunden, die auch Google zufrieden stellt....

    http://www.powertemplate.de/kunden/...il.php?debug=true&email=info@copy-weilburg.de

    findet jetzt das richtige Ergebnis...

    Habe noch den Parameter "debug=true" hinzugefügt, damit wird der Dialog zwischen dem Ziel-Mailserver und dem Programm angezeigt.

    Das sieht dann so aus:

    Der Google-Mailserver ist grottenlangsam....

    http://www.powertemplate.de/kunden/...il.php?debug=true&email=info@powertemplate.de

    zeigt folgendes:

    Google braucht 120 Mal länger, als der "all-inkl"-Mailserver...

    Liegt wahrscheinlich daran, dass der in den USA liegt...
     
  16. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das geht so einfach, sonst wäre ja überhaupt kein Mailverkehr möglich.

    Alle Mailer wissen ja über den Empfänger auch nicht mehr.

    Aber die Server schützen sich schon gegen SPAM, man muss konsistente Informationen übermitteln.

    Hat einige Zeit gedauert, bis ich das auf der Reihe hatte...
     
  17. Danny

    Danny Erfahrener Benutzer

    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    Super Sache...freue mich schon darauf, es endlich in unserem Shop einbinden zu können...:D

    Danke Avenger, für deinen Einsatz!
     
  18. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.477
    Danke erhalten:
    5.932
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    OK, dann noch ein @t-online.de Problem

    Hab es mit 2 @t-online getestet kommt immer diese Meldung

    ps.
    Ich helf ja gerne neue Probleme zu finden xD
     
  19. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Dateneingabeseite mit allen verfügbaren Features und Checks

    Ich habe mal alles, was wir so zu bieten haben, in einem Dateneingabeformular aktiviert.

    http://www.powertemplate.de/kunden/babyneo/create_account.php

    Da ist u.a. die Eingabe von Geburtsdaten als "Dropdowns" drin, so dass auch das Datum dann garantiert (formal) korrekt ist.

    Weiterhin wird die "Passwortstärke" geprüft und angezeigt, ebenso die Übereinstimmung der beiden Passworte.

    (Die "Passwortstärke" wird aus der Verwendung von Klein- und Großbuchstaben, Ziffern und Sonderzeichen abgeleitet. Einfach mal ein Passwort eingeben...)

    Dann werden die Eingabe-Daten in lesbares Format gewandelt (erster Buchstab jedes Wortes groß), auch bei festgestellter "Umschalttaste".

    Die Telefon- und Fax-Nummern werden auf (formale) Gültigkeit geprüft.

    Ebenso die eMail-Adresse, bis hin zur Validierung der Adresse beim Mailserver der eMail-Adressen-Domain.

    Ich denke, mehr Validierung geht nicht....
     
  20. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.477
    Danke erhalten:
    5.932
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Find deine Arbeit gut, daher hier die Knackpunkte die mir aufgefallen sind:
    1. @t-online.de Adressen bringen Fehlermeldung
    1.1 wenn ich die ignoriere bleibt die Adresse
    1.2 Prüfen ob E-Mail 2. eingabe übereinstimmt mit sofortiger Anzeige durch Grün oder Rot
    2. Passwortstärke beim wiederholen gegen Stimmt überein oder Nicht überein ändern.
    3. Fehlermeldung bei Tel. mit Buchstaben kommt. Aber wenn ich da OK Klicke kann ich ins nächste Feld und die Buchstaben bleiben stehen.
    4. Fehlermeldung nach abschicken (PLZ) und Bitte Bundesland auswählen. Bundesland is schwer ohne Eingabefeld

    keep on. Das wird gut wenn es fertig ist !