Händlerbund_728x90_animiert
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:

Autor Thema: MODUL: Kommentare in Bestellübersicht als Tooltip anzeigen für Shopversion 2.x  (Gelesen 23278 mal)

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Ich habe die Tage mal in meiner osCommerce Bastelkiste gekruscht und Comments At-A-Glance gefunden.

In den meisten zu bearbeitenden Dateien habe ich leider keine include Punkte gefunden um das ganze updatesicher umzubauen.

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

Vielleicht hat auch jemand eine bessere Idee, wo die Codeschnipsel eingefügt werden.

[EDIT Tomcraft 03.03.2017: Anleitung in Modul aktualisiert.]
[EDIT Tomcraft 26.11.2017: Anleitung in Modul aktualisiert.]
[EDIT Tomcraft 01.12.2017: Anleitung in Modul aktualisiert.]
[EDIT Tomcraft 17.04.2018: Modul aktualisiert, Danke an kgd.]
[EDIT Tomcraft 19.04.2018: Modul aktualisiert, Danke an noRiddle.]
[EDIT Tomcraft 23.04.2018: Modul aktualisiert, Danke an oneQ.]
[EDIT Tomcraft 25.04.2019: Modul aktualisiert, Danke an noRiddle.]
[EDIT Tomcraft 25.04.2019: Modul aktualisiert.]
[EDIT Tomcraft 26.04.2019: Modul aktualisiert.]

Linkback: https://www.modified-shop.org/forum/index.php?topic=36805.0

Werbung / Banner buchen

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
ops. Da habe ich versehentlich die falsche install.txt genommen.

Hier die korrigierte.

Die Textbox ist jetzt auch "nur" noch weiß. Mir ist die Farbe verloren gegangen  :whistle:

[EDIT Tomcraft 03.03.2017: Anleitung in Modul aus Beitrag 1 aktualisiert.]

Offline Tomcraft

  • modified Team
  • *****
  • Gravatar
  • Beiträge: 43.661
  • Geschlecht: Männlich
    • Teile Beitrag
    • https://www.modified-shop.org
Danke dir. :thx:
Bevor ich das Modul aber unter "Übersicht der Module für Shops ab Version 2.0.0.0" mit aufnehme, müsste das wirklich noch ein wenig überarbeitet werden. ;-)

Grüße

Torsten

Offline web28

  • modified Team
  • *****
  • Beiträge: 9.404
    • Teile Beitrag
Nur 2 Hinweise:

Es ist völlig unnötig an der admin/includes/functions/general.php etwas zu ändern.

Dafür gibt es das auto_include Verzeicnis admin\includes\extra\functions

Desweiteren ist bereits ein Tooltipp Modul im Backend vorhanden. (function draw_tooltip($text) in html_output.php)

Zu sehen u.a in der Artikelmaske bei den Staffelpreisen.

Bleibt also nur die DB Abfrage und Zuweisung an die tooltip Funktion übrig.

Gruss Web28

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Danke web28!

Es ist völlig unnötig an der admin/includes/functions/general.php etwas zu ändern.

Dafür gibt es das auto_include Verzeicnis admin\includes\extra\functions
Die auto_include in der general.php hatte ich gesucht, aber nicht gefunden. Da schau ich dann nochmal rein. Vielleicht hatte ich mal wieder  :tomato:

Desweiteren ist bereits ein Tooltipp Modul im Backend vorhanden. (function draw_tooltip($text) in html_output.php)

Zu sehen u.a in der Artikelmaske bei den Staffelpreisen.

Bleibt also nur die DB Abfrage und Zuweisung an die tooltip Funktion übrig.

OK. Das versuche ich dann mal. Dann müsste der Teil in der header.php und .css komplett weg fallen. Ich hatte eher vermutet, dass es den Teil aus der gerneral.php schon irgendwo gibt (function xtc_html_noquote).

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Ich habe eine alte OSC Anpassung, die ich als sehr nützlich empfunden habe, auf modified "abgespeckt". Leider nicht updatesicher, da es in der Bestellübersicht an der passenden Stelle keine autoinclude gibt.

Dabei können die Anmerkungen der Kunden bei der Bestellung in der Bestellübersicht per Tooltipp angezeigt werden.

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

Option 1, zeigt alle Kommentare (also auch die eigenen, ggf. Hinweise Sendungsnummer usw.)
Option 2, zeigt nur die Kommentare des Kunden bei der Bestellung

Es muss nur die orders_listing.php angepasst und zwei Dateien hochgeladen werden.

Das entfernen der quotes ist evtl. nicht notwendig, aber habe ich sicherheitshalber mal drin gelassen (siehe Funktion "noquote").

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

Offline FräuleinGarn

  • Fördermitglied
  • *****
  • Beiträge: 2.972
    • Teile Beitrag
Vielen Dank für das Modul.

Grad eingebaut und funktioniert.  :thumbs:

Sehr praktische Hilfe. So muss man sich nun schon anstrengen die Kommentare zu übersehen.

Gruß Timm

Offline iconia

  • Frisch an Board
  • **
  • Beiträge: 97
    • Teile Beitrag
    • 1A-Campingshop.de
Funktioniert soweit gut. Zeigt nur leider bei fast jedem Kunden etwas an weil auch die Transaction-ID von Paypal angezeigt wird ...

Offline FräuleinGarn

  • Fördermitglied
  • *****
  • Beiträge: 2.972
    • Teile Beitrag
Ich hab mich für die zweite Variante der Installationsanleitung entschlossen und dadurch wird nur da was angezeigt, wo der Kunde schon bei der Bestellung einen Kommentar abgegeben hat. Das fällt viel mehr auf. Glaub bei einer ganzen Seite hab ich 4-5 solcher Erstkommentare durch den Kunden.

Die erste Variante der Installationsanleitung  führt nur dazu, dass fast überall eine Sprechblase zu sehen ist und dann hat das für mich keinen Mehrwert.

@oneQ
In der Installationsanleittung steht noch was von „Step 5“, was entfernt werden könnte.

Gruß Timm

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Funktioniert soweit gut. Zeigt nur leider bei fast jedem Kunden etwas an weil auch die Transaction-ID von Paypal angezeigt wird ...

Option 1, zeigt alle Kommentare (also auch die eigenen, ggf. Hinweise Sendungsnummer usw.)
Option 2, zeigt nur die Kommentare des Kunden bei der Bestellung

Die Transaktions-ID ist soweit ich weiß immer der zweite Eintrag. Mit Variante 2 wird nur der erste Kommentar vom Kunden angezeigt. Ist auch die Variante die ich bevorzuge.

Der Step 5 in der Anleitung is a Leich  ;-)

Offline noRiddle

  • Experte
  • *****
  • Beiträge: 10.036
  • Geschlecht: Männlich
    • Teile Beitrag
    • Webdesign Bonn - Köln
Als Tipp und allgemeines Vorbild für Möglichkeiten Erweiterungen auch da einzubauen wo es kein auto_include() gibt:
Mein Vorschlag ohne Core-File-Änderung:
  • Es werden alle Kommentare angezeigt.
    Das kann sich jeder anpassen bei Bedarf.
  • Um kein Core-File anzufassen wird die Ausgabe der Icons und Tooltips im Footer gemacht und dann per Javascript den einzelnen Bestellungen zugeordnet.
    Da Javascript im Backend ohnehin nötig ist, ist das kein Nachteil.
  • Das Tooltip ist nach unten positioniert damit es bei mehreren Kommentaren bei den ersten Bestellungen nicht nach oben im Nirwana verschwindet.

Den folgenden Code mit File-Name 10_ord_comments.php speichern in /admin/includes/extra/footer/.
(!! Das Verzeichnis /admin/ heißt bei euch evtl. anders !!)
Fertig.

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 = "";
       
        for($oc = 0, $ocl = count($comm_arr); $oc < $ocl; $oc++) {
            if($comm_arr[$oc] != '') {
                $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[$oc]).'</span>';
            }
        }
       
        echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px;">'.(!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ß,
noRiddle

*NACHTRAG*
Das xtc_html_noquote() habe ich rausgeworfen weil es unnötig ist.

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

Offline FräuleinGarn

  • Fördermitglied
  • *****
  • Beiträge: 2.972
    • Teile Beitrag
@noriddle
Updatesicher  :wohow:

Könntest du bitte die Variante für "lediglich erster Kommentar des Kunden bei Bestellung anzeigen" auch posten?

Ich hab wirklich vieles versucht. Da ich keine Programmierkenntnisse habe, konnte ich es mir nur anhand der Installationsanleitung von oneQ herleiten.

Ich habe alle möglichen Varianten ausprobiert: unteres while entfernt, 2Klammern entfernt, Apostroph gesetzt, 2 geschweifte Klammern entfernt und das alles noch in verschiedenen Kombinationen. Und das gleiche dann noch in Kombination mit dem oberen while Teil.

Ich möchte hier jetzt keinen falschen Code reinschreiben, um glaubhaft zu machen, dass ich wirklich probiert habe - die Bilder zeigen ja, dass es fast richtig sein muss und dass ich es probiert habe.

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

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

Das Problem ist, dass die zweite Testbestellung von oben "Nr.19" einen Kundenbestellkommentar hat, der auch in deiner Variante, wo alle Kommentare angezeigt werden, angezeigt wird. In meiner Variante, wo nur der erste Kundenkommentar angezeigt wird, entfallen die Sprechblasen für alle weiteren Bestellungen (was richtig ist, weil es nur Statusänderungen sind), aber eigentlich müsste nicht nur bei der Bestellnummer 20 sondern auch bei der Nr 19 etwas erscheinen. Tut es aber nicht.

In der Version von oneQ wurden beide Kommentare angezeigt in der Version "lediglich erster Kommentar des Kunden bei Bestellung anzeigen".

Gruß Timm

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Die while Schleifen ist für die order_id, also damit alle Bestellungen abgefragt werden *glaub*.

Versuche mal die das foreach wie folgt:

Code: PHP  [Auswählen]
    foreach($ord_comm_arr as $ordid => $comm_arr) {
        $ord_comments = "";
       
        for($oc = 0, $ocl = count($comm_arr); $oc < 1; $oc++) {
            if($comm_arr[$oc] != '') {
                $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[$oc]).'</span>';
            }
        }
       
        echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px;">'.(!empty($ord_comments) ? '<img src="images/icons/comment2.gif" style="border:0;"><em>'.$ord_comments.'</em>' : '').'</span>';
    }

Evtl. kann man auch die komplette for Zeile rausnehmen, aber mit der Änderung auf 1 kann man dann auch sehr einfach auf 2 oder zurück auf $ocl gehen.

Offline oneQ

  • Viel Schreiber
  • *****
  • Beiträge: 575
    • Teile Beitrag
Als Tipp und allgemeines Vorbild für Möglichkeiten Erweiterungen auch da einzubauen wo es kein auto_include() gibt:
Mein Vorschlag ohne Core-File-Änderung:
    :thx:

    Schön, dass es Euch Programmierer gibt.  :thumbs: Ich kann leider nur "klauen", d.h. Codeschnippsel zusammensuchen und ggf. für mich anpassen.  ;-)[/list]

    Offline FräuleinGarn

    • Fördermitglied
    • *****
    • Beiträge: 2.972
      • Teile Beitrag
    Funktioniert!  :thx:

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

    Vielleicht könnte man das noch als Kommentar in das Modul einfügen, dass man $ocl gegen 1 tauschen muss, um entweder alle Kommentare oder nur den ersten Kommentar anzeigen zu lassen.

    Ich danke euch beiden für das nützliche Modul.

    Gruß Timm

    Hier die komplette Version um "lediglich erster Kommentar des Kunden bei Bestellung anzeigen" zu lassen

    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 = "";
           
            for($oc = 0, $ocl = count($comm_arr); $oc < 1; $oc++) {
                if($comm_arr[$oc] != '') {
                    $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[$oc]).'</span>';
                }
            }
           
            echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px;">'.(!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
    }
    ?>


    Teile per facebook Teile per linkedin Teile per twitter