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: MODUL: Kommentare in Bestellübersicht als Tooltip anzeigen für Shopversion 2.x

    karsta.de

    • Experte
    • Beiträge: 3.156
    Getestet, läuft fehlerfrei  :thumbs:

    Danke an noRiddle und hpzeller.

    BG kgd

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Mit welcher Version jetzt genau? :-?

    Grüße

    Torsten

    karsta.de

    • Experte
    • Beiträge: 3.156
    Habe hier die letzte Version nochmal neu zusammengepackt.

    BG kgd

    [edit]
    Habe die Datei eben noch einmal ersetzt,  in der vorherigen Datei waren einmal Anführungsstriche zuviel reingerutscht.

    [EDIT Tomcraft 17.04.2018: Modul in Beitrag 1 aktualisiert.]

    Timm

    • Fördermitglied
    • Beiträge: 6.256
    Könnte vielleicht jemand den neuen Code so ändern, dass er so wie in Antwort #20 und Antwort #21 lediglich den ersten gesendeten Kommentar anzeigt? Ich steig da nicht mehr durch beim vergleichen der Dateien und der neuen Änderungen.

    Zusätzlich ist mir vor einer Weile schonmal folgender mysteriöser Fehler aufgefallen. Das Icon wird einer Bestellung weiter oben zugeordnet (Bestellung 24) die eigentlich keinen Kommentar enthält und bei der Bestellung 20, die diesen Kommentar enthält, wird nichts angezeigt. Bei 19 und 23 das gleiche. Ab der 25 stimmts und auch wenn ich jetzt eine neue Bestellung mit Kommentar anlege. Im produktiven Shop funktioniert es auch seit jeher.

    Kann sich jemand dieses Verhalten erklären?

    Testbestellungen sind vom Januar, aber ich hab an der Datei seit Einbau im November nichts geändert.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruß Timm

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Du solltest das Paket lieber nochmal runter laden:

    [...]
    [edit]
    Habe die Datei eben noch einmal ersetzt,  in der vorherigen Datei waren einmal Anführungsstriche zuviel reingerutscht.

    Und genau so sieht das bei dir auf den Screenshots auch aus. ;-)

    Grüße

    Torsten

    Timm

    • Fördermitglied
    • Beiträge: 6.256
    Hab das Paket nur runtergeladen, um die Unterschiede mit meiner nachzuvollziehen. Ist mir nicht gelungen, deshalb auch die Frage, ob das jemand nur für den ersten Kommentar bereitstellen könnte. Aber danke für den Hinweis. Hatte es aber nicht eingebaut. Die Apostrophe sind mit Absicht in den Kommentaren unterschiedlich gesetzt, um die Funktion des Moduls zu testen. Hat nichts mit kgd´s neuem Download zu tun. Ganz weit oben in Antwort #5 steht ja, das die Apostrophe wegen möglicher Fehlfunktionen entfernt werden sollten. Das wurde aber in noRiddle`s Version nicht mit übernommen und ich hab es lieber getestet.

    Gruß Timm

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Ich denke am einfachsten ist es, wenn Du den gesamten Code deiner verwendeten Version hier postest.

    Gruss
    Hanspeter

    Timm

    • Fördermitglied
    • Beiträge: 6.256
    Code: PHP  [Auswählen]
    <?php
    /*******************************************
    * file: 10_ord_comments.php
    * use: display comments in order_listing
    * (c) noRiddle 11-2017
    *******************************************/


    if(strpos($PHP_SELF, FILENAME_ORDERS) && !isset($_GET['action'])) {
        xtc_db_data_seek($orders_query, 0);

        $ordc_in_str = '';
        $ord_comm_arr = array();

        while($ord = xtc_db_fetch_array($orders_query)) {
            $ordc_in_str .= "'".$ord['orders_id']."'".',';
        }
        $ordc_in_str = rtrim($ordc_in_str, ',');

        //echo '<pre>'.$ordc_in_str.'</pre>';
       
        $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added");
       
        while($orders_comments = xtc_db_fetch_array($orders_history_query)) {
            $ord_comm_arr[$orders_comments['orders_id']][] = $orders_comments['comments'];
        }
       
        //echo '<pre>'.print_r($ord_comm_arr, true).'</pre>';
       
        foreach($ord_comm_arr as $ordid => $comm_arr) {
            $ord_comments = "";
           
                if($comm_arr[0] != '') {
                    $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0;">'.nl2br($comm_arr[0]).'</span>';
            }
           
            echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px;float:right;">'.(!empty($ord_comments) ? '<img src="images/icons/comment2.gif" style="border:0;"><em>'.$ord_comments.'</em>' : '').'</span>';
        }
    ?>
    <style>
    .tooltip:hover em {bottom:auto; top:100%;}
    </style>
    <script>
    $(function() {
        var $tbc = $('.tableBoxCenter tr'),
            $oc = $('.ord-comm');

        $oc.each(function(index) {
            var $tbc_dtc = $tbc.eq(index + 1).find('.dataTableContent');

            $oc.eq(index).appendTo($tbc_dtc.eq(0));
        });
       
    });
    </script>
    <?php
    }
    ?>

    Gruß Timm

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Habe hier die letzte Version nochmal neu zusammengepackt.
    [...]

    Seid bitte so lieb und haltet euch an die Dateinamen der Vorgängerversionen, damit es vergleichbar bleibt.
    Ich habe die Dateien mal wieder umbenannt.

    Grüße

    Torsten

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo Timm,

    Du musst in deinem Code nur diese Zeile

    Code: PHP  [Auswählen]
    if(strpos($PHP_SELF, FILENAME_ORDERS) && !isset($_GET['action'])) {

    mit dieser ersetzen.

    Code: PHP  [Auswählen]
    if(strpos($PHP_SELF, FILENAME_ORDERS) && !isset($_GET['action']) && xtc_db_num_rows($orders_query) > 0) {

    Gruss
    Hanspeter

    Timm

    • Fördermitglied
    • Beiträge: 6.256
    Danke Hanspeter.

    Jetzt hab ich in dem ganzen Hin und Her der letzten Seiten gemerkt, dass letztlich nur die oberste Zeile geändert wurde.

    Gruß Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Um eventuelle Inkonsistenzen zu verhindern sollte man evtl. in der $orders_history_query das

    Code: SQL  [Auswählen]
    ORDER BY orders_id DESC, date_added
    ändern in

    Code: SQL  [Auswählen]
    ORDER BY orders_id DESC, date_added ASC

    Auf eine Default-Sortierung (ASC oder DESC) ist bei mySQL kein Verlass.

    @FräuleinGarn
    [...]
    Zusätzlich ist mir vor einer Weile schonmal folgender mysteriöser Fehler aufgefallen. Das Icon wird einer Bestellung weiter oben zugeordnet (Bestellung 24) die eigentlich keinen Kommentar enthält und bei der Bestellung 20, die diesen Kommentar enthält, wird nichts angezeigt. Bei 19 und 23 das gleiche. Ab der 25 stimmts und auch wenn ich jetzt eine neue Bestellung mit Kommentar anlege. Im produktiven Shop funktioniert es auch seit jeher.
    [...]

    Das kann ich mir nur dann vorstellen wenn es für eine Bestellung aus der Tabelle orders keinen Eintrag in der Tabelle orders_status_history gibt, was eigtl. nicht sein darf und kann.
    Mir fällt mom. auch keine Query ein die das abfangen könnte, zumindest nicht mit der IN() Funktion.
    Für jede orders_id eine einzelne Query in einem Loop aufzurufen, womit man dann das Problem abfangen könnte, wäre Overdrive und perfomance-killing.

    Gruß,
    noRiddle

    *NACHTRAG*
    Man kann das ganze auch noch mit mehr Javascript so gestalten, daß die richtigen Kommentare definitiv den richtigen Bestellungen zugeordnet werden.
    (Momentan habe ich's ja so gemacht, daß sich auf die gleiche Anzahl der Bestellungen in der Query für das Order-Listing und der Query für die Comments verlassen wird und sie werden schlicht nach Index zugeordnet.)
    Wenn man jeder table row einer Bestellung eine class="ord-BESTELLNUMMER" und jedem Kommentar-HTML ein data-ord="ord-BESTELLNUMMER" zuordnen würde könnte man die Kommentare eindeutig zuordnen ohne sich auf die Anzahl und Reihenfolge verlasen zu müssen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Hier das Javascript mit welchem es eine eindeutige Zuordnung gibt:
    (Das alte JS habe ich mal auskommentiert dringelassen.)

    Code: Javascript  [Auswählen]
    $(function() {
        /*var $tbc = $('.tableBoxCenter tbody tr'),
            $oc = $('.ord-comm');

        $oc.each(function(index) {
            var $tbc_dtc = $tbc.eq(index + 1).find('.dataTableContent');

            $oc.eq(index).appendTo($tbc_dtc.eq(0));
        });*/

       
        var $tbc = $('.tableBoxCenter tbody tr');

        $tbc.each(function(index) {
            var $skip_header = $tbc.eq(index + 1),
                $tbc_dtc = $skip_header.find('.dataTableContent'),
                $tbc_dtc_oid = $tbc_dtc.eq(1).text(),
                $class_data_var = 'ord-'+$tbc_dtc_oid;

            $tbc_dtc.eq(0).addClass($class_data_var);
           
            $('span[data-ord='+$class_data_var+']').appendTo($skip_header.find('.'+$class_data_var));
        });
    });

    Gruß,
    noRiddle

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Würdest du das nochmal als Komplett-Paket zusammen stellen?

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Here you go.

    Gruß,
    noRiddle

    [EDIT Tomcraft 19.04.2018: Modul in Beitrag 1 aktualisiert.]
               
    anything