v4.4.x AdminOrderActionExtenderComponent nicht überladbar

Thema wurde von WinHelp GmbH, 9. September 2021 erstellt.

  1. WinHelp GmbH

    WinHelp GmbH Aktives Mitglied

    Registriert seit:
    2. April 2019
    Beiträge:
    29
    Danke erhalten:
    3
    Danke vergeben:
    2
    Hallo Zusammen,

    laut Doku sollte der AdminOrderActionExtenderComponent über die proceed function überladen werden können.

    Leider ist dies nicht möglich, bevor der proceed des Extenders aufgerufen wird geschieht bereits ein redirect. Damit kommt es nie zur Ausführung.

    Wenn ich mich nun nämlich an die action "gm_multi_status" oder "update_order" anhängen möchte (Wie in der Dokue beschrieben: https://developers.gambio.de/tutori...er-extender#AdminOrderActionExtenderComponent) kommt es nicht zur Ausführung.

    Beispiel Action "gm_multi_status":
    orders.ph Zeile 584
    PHP:
    $coo_order_action_extender_component->set_data('order_updated'$order_updated);
           
    xtc_redirect(xtc_href_link(FILENAME_ORDERSxtc_get_all_get_params(['action']) . 'action=edit'));
           
    break;
    Proceed wird jedoch erst in Zeile 782 aufgerufen, da ist die Anfrage jedoch schon längst weg.

    PHP:
    if(isset($_GET['action']) && !empty($_GET['action']))
    {
        
    $coo_order_action_extender_component->set_data('action'$_GET['action']);
        
    $coo_order_action_extender_component->proceed();
    }
     
  2. WinHelp GmbH

    WinHelp GmbH Aktives Mitglied

    Registriert seit:
    2. April 2019
    Beiträge:
    29
    Danke erhalten:
    3
    Danke vergeben:
    2
    Nachtrag: Ist nicht Version 4.4 spezifisch dieses Verhalten ist Beispielsweise auch in der 3.14 identisch
     
  3. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @WinHelp GmbH Das scheint nur dann ausgeführt zu werden wenn beim Ändern des Bestellbestatus auch der Kunde informiert wird.

    Diese Bedingung muss erfüllt sein:

    Code:
     if ($notifyCustomer) {
    Sonst wird die Proceed Methode wirklich nicht ausgeführt.
    Scheint tatsächlich eingeschränkt zu sein.

    Wenn es dafür ein validen Anwendungsfall gibt, das auch außerhalb der Bedingung auszuführen, würde wir das noch mal überdenken.
     
  4. WinHelp GmbH

    WinHelp GmbH Aktives Mitglied

    Registriert seit:
    2. April 2019
    Beiträge:
    29
    Danke erhalten:
    3
    Danke vergeben:
    2
    Hallo @Till (Gambio), wir wollten im Dialog des OrderStatus eine weitere Option hinzufügen, um eine eigene Programmierung anzubinden. Natürlich kann man auch den OrdersOverviewExtender nehmen um die Daten zu verarbeiten.

    Aber wenn die Beschreibung lautet "Dieser Extender wird ausgeführt wenn über die Bestellübersicht (admin/orders.php) Aktionen durchgeführt werden". Gehe ich zunächst einmal davon aus, dass dieser bei jeder Aktion ausgeführt wird.

    Also meine Frage: Warum nicht einfach immer ausführen und den jeweiligen Programmierer entscheiden lassen? Der Payload enthält die Information ob der Kunde Informiert werden soll und kann somit geprüft werden.
     
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @WinHelp GmbH Es wird weiter unten im Code in der orders.php noch einmal ausgeführt:

    Hier nach nach allen switch case Fällen, ca. Zeile 779:

    PHP:
    if(isset($_GET['action']) && !empty($_GET['action']))
    {
       
    $coo_order_action_extender_component->set_data('action'$_GET['action']);
       
    $coo_order_action_extender_component->proceed();
    }
    Sag uns mal ob das dort funktioniert, wenn nicht, müssen wir uns das nochmal genauer ansehen. Dann lasse uns einmal ein vollstädiges Beispiel zukommen.
     
  6. WinHelp GmbH

    WinHelp GmbH Aktives Mitglied

    Registriert seit:
    2. April 2019
    Beiträge:
    29
    Danke erhalten:
    3
    Danke vergeben:
    2
    Siehe, erste Post dieser Punkt wird nie erreicht bei gm_multi_order_status.
     
  7. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @WinHelp GmbH Sorry, ja du hast recht. Also würde es helfen, wenn direkt vor dem xtc_redirct das proceed ausgeführt würde? Oder brauchst du es noch an einer anderen Stelle?
     
  8. WinHelp GmbH

    WinHelp GmbH Aktives Mitglied

    Registriert seit:
    2. April 2019
    Beiträge:
    29
    Danke erhalten:
    3
    Danke vergeben:
    2
    Es würde genügen, dass vor dem redirect die proceed function ausgeführt werden würde
     
  9. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @WinHelp GmbH Hab das als Bug aufgenommen und als Lösung erstmal die Proceed Methode vor den xtc_redirect hinzugefügt (Link nur für registrierte Nutzer sichtbar.)

    In welcher Shopversion die dann endgültig implementiert wird, kann ich zum jetzigen Zeitpunkt noch nicht sagen