Modul neue spalte in /admin/admin.php?do=OrdersOverview

Thema wurde von ff-webdesigner, 13. September 2021 erstellt.

  1. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
    hallo beisammen,

    ich habe gerade die alte anleitung unter https://developers.gambio.de/tutorials.html?v=3.1.1.0&p=das-extender-system befolgt und in einer gambio 4.3.3.0 unter GXUserComponents/overloads/AdminOrderOverviewTableExtenderComponent die datei EmailColumn.php angelegt. Inhalt:


    PHP:
    <?php
    class EmailColumn extends EmailColumn_parent
    {
        private 
    $columnName 'EmailColumn';
       
        public function 
    __construct()
        {
            
    $this->setHeadCell($this->columnName'Email');
            
    $this->setWidth($this->columnName'50px');
            
    $this->setHeadClasses($this->columnName'link-style email-style');
           
            
    parent::__construct();
        }

        public function 
    proceed()
        {
            
    $this->setClasses($this->columnName'sample_class_2');
            
    $this->setContent($this->columnName$this->getContent());

            
    parent::proceed();
        }

        private function 
    getContent()
        {
            
    $orderReadService StaticGXCoreLoader::getService('OrderRead');
            
    $order $orderReadService->getOrderById($this->orderId);
            
    $email $order->getCustomerEmail();

            
    $content '<a href="mailto:' $email '">' $email '</a>';

            return 
    $content;
        }
    }
    es tut sich aber auch nach leeren aller caches rein gar nichts. stimmt da irgendein z.b. klassenname nicht mehr unter 4.3.3.0?
     
  2. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    Der Pfad passt nicht.
    GXUserComponents wird in einem GX 4x gar nicht mehr genutzt.

    Das müsste jetzt so aufgebaut sein (ich schreibe es mal mit Abständen, damit man das besser sieht, die Leerzeichen müssen aber natürlich weg):

    GXModules / Name oder Kürzel / Modul oder Anpassung / Admin / Overloads /....
    oder wenn es auf Kundenseite sein soll:
    GXModules / Name oder Kürzel / Modul oder Anpassung / Shop / Overloads /....
     
  3. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
    #3 ff-webdesigner, 13. September 2021
    Zuletzt bearbeitet: 13. September 2021
    ouch. danke barbara!
    ok, den fehler hab ich behoben. jedoch unter \GXModules\ff-webdesigner\AMZ_order_ID\Admin\overloads\OrdersOverviewColumns mit allen relevanten dateien unten angepasst erscheint zwar eine neue spalte kundennummer, aber es werden keinerlei daten mehr geladen.

    https://www.gambio.de/forum/threads...-spalte-kundennummer.34116/page-2#post-279832

    \GXModules\ff-webdesigner\AMZ_order_ID\Admin\overloads\OrderListGenerator\CustomersIdOrderListGenerator.inc.php

    PHP:
    <?php

    class CustomersIdOrderListGenerator extends CustomersIdOrderListGenerator_parent
    {
        protected function 
    _setFilterArguments(array $filterParameters,
                                               
    IntType $startIndex null,
                                               
    IntType $maxCount null,
                                               
    StringType $orderBy null)
        {
            
    parent::_setFilterArguments($filterParameters,$startIndex,$maxCount,$orderBy);
       
            
    // Filter by customer.
            
    if(!empty($filterParameters['KdNr']))
            {
                
    $this->db->group_start();
                if(
    strpos($filterParameters['KdNr'], '#') === 0)
                {
                    
    $this->db->where('orders.customers_id'substr($filterParameters['KdNr'], 1))
                        ->
    or_where('orders.customers_cid'substr($filterParameters['KdNr'], 1));
                }
                else
                {
                    
    $this->db->where('orders.customers_id'$filterParameters['KdNr'])
                        ->
    or_like('orders.customers_cid'$filterParameters['KdNr'])
                        ->
    or_like('orders.customers_id'$filterParameters['KdNr']);
                }
                
    $this->db->group_end();
            }
       
            return 
    $this;
        }
    }
    \GXModules\ff-webdesigner\AMZ_order_ID\Admin\overloads\OrdersOverviewAjaxController\CustomColumnOrdersOverviewAjaxController.inc.php

    PHP:
    <?php
    class CustomColumnOrdersOverviewAjaxController extends CustomColumnOrdersOverviewAjaxController_parent
    {
        protected function 
    _getTableData()
        {
            
    $tableData parent::_getTableData();
      
            foreach(
    $tableData as $row=>$values)
            {
                
    $tableData[$row]['KdNr'] = $values['DT_RowData']['customerId'];
            }
      
            return 
    $tableData;
        }
    }
    \GXModules\ff-webdesigner\AMZ_order_ID\Admin\overloads\OrdersOverviewColumns\CustomColumnOrdersOverviewColumns.inc.php

    PHP:
    <?php
    class CustomColumnOrdersOverviewColumns extends CustomColumnOrdersOverviewColumns_parent
    {
        public function 
    __construct()
        {
            
    parent::__construct();
            
    // Custom
            
    $this->columns[] = MainFactory::create('DataTableColumn')
                                          ->
    setTitle(new StringType('KdNr'))
                                          ->
    setName(new StringType('KdNr'))
                                          ->
    setType(new DataTableColumnType(DataTableColumnType::NUMBER));
        }
    }
    \GXModules\ff-webdesigner\AMZ_order_ID\Admin\overloads\OrdersOverviewController\CustomColumnOrdersOverviewController.inc.php

    PHP:
    <?php
    class CustomColumnOrdersOverviewController extends CustomColumnOrdersOverviewController_parent
    {
        protected function 
    _getAssetsArray()
        {
            
    $assetsArray parent::_getAssetsArray();
            
    $assetsArray[] = MainFactory::create('Asset'DIR_WS_CATALOG.'GXModules/ff-webdesigner/Admin/add_custom_column.js');
            return 
    $assetsArray;
        }
    }
    \GXModules\ff-webdesigner\AMZ_order_ID\Admin\add_custom_column.js

    Code:
    $(function() {
        'use strict';
    
        // Be careful to not overwrite existing object definitions.
        jse.libs.orders_overview_columns = jse.libs.orders_overview_columns || {};
    
        // Custom column definition.
        jse.libs.orders_overview_columns.KdNr = {
            data: 'KdNr',
            minWidth: '75px',
            widthFactor: 0.9
        };
    });

    was auffällt ist schon mal dass das js keinen alert ausgibt....
     
  4. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    Hast du den Beitrag dazu gesehen?
    (Link nur für registrierte Nutzer sichtbar.)
     
  5. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @ff-webdesigner Hier ist das bereits für GXModules angepasst (Link nur für registrierte Nutzer sichtbar.)

    Bitte prüfe ob das so unverändert erstmal funktioniert. Wenn ja, kannst du anfangen Anpassungen vorzunehmen.
     
  6. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
    hi till,

    danke! hatte ich nicht selbst gefunden. eingebaut, caches geleert. leider keinerlei neue spalte unter 4.3.3.0. zumindest auch keine fehlermeldungen und bestellungen werden weiterhin angezeigt.
     
  7. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @ff-webdesigner Du musst die neue Spalte erst aktivieren, dazu auf das Zahnrad klicken und die neue Spalte aus der Liste wählen. Dann speichern und nach einen Reload der Seite sollte die Spalte dann sichtbar sein.
     
  8. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
    hi till,

    das hatte ich schon probiert...aber nicht genau genug geschrieben: auch hier erscheint die kundennummer nicht als spalte zur auswahl.
     

    Anhänge:

  9. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
  10. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @ff-webdesigner mach mal ein Ticket auf und sende uns entsprechende Daten, damit wir uns das direkt in deinem Testshop ansehen können. Aus dem Thread kann ich keine Probleme ableiten, weil es bei mir im Testshop ohne Probleme funktioniert.
     
  11. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
  12. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
  13. clemens_stromeyer
    Registriert seit:
    6. Februar 2017
    Beiträge:
    24
    Danke erhalten:
    6
    Habe das von Till erstellte Modul versuchsweise für Version 4.9.2.1 installiert (völlig ungeändert). Die KdNr kann ich bei den Einstellungen dann auswählen und aktivieren. Die Spalte erscheint dann jedoch kaum erkennbar am rechten Bildschirmrand (rechts vom Dropdown "Anzahl pro Seite"). Kann nur Teil des Kopfes wirklich erkennen.
    Nach Leeren des Cache (Modul & Seiten) ist die neue Spalte verschwunden (auch in den Einstellungen!).
    Leert man den Cache "händisch" per FTP (auch Smarty), dann erscheint die Spalte wieder so wie oben beschrieben.
    Hat jemand Erfahrung mit diesem Modul für die aktuellen Gambioversionen?
    Clemens
     
  14. ff-webdesigner
    ff-webdesigner Erfahrener Benutzer
    Registriert seit:
    22. Januar 2014
    Beiträge:
    548
    Danke erhalten:
    53
    Danke vergeben:
    60
    cache seiten UND module geleert? denke nein, wäre sonst unerklärlich wenns verschwindet. der einfachste fix für spalte zu weit rechts? grösserer monitor oder temporär strg - / strg +
     
  15. clemens_stromeyer
    Registriert seit:
    6. Februar 2017
    Beiträge:
    24
    Danke erhalten:
    6
    Das habe ich zur Genüge probiert. Wie oben beschrieben ist die Kundennummer in den Einstellungen der Bestellübersicht erst sichtbar, wenn alle Dateien im Cacheverzeichnis mittels FTP gestrichen werden. Cache leeren (Seiten und Module) im Admin reicht nicht.
    Die KdNr erscheint dann unnatürlich ganz rechts (obwohl ich sie in den Einstellungen an die vorletzte Stelle vorschoben habe siehe Fig 2.jpg, und ist eigentlich nur sichtbar wenn ich die Ansicht mit Strg- erweitere (siehe Fig 1.jpg). Die eigentlichen Einträge (customers_id) fehlen, nur der Spaltenkopf wird angezeigt.
    Da scheint es merkliche Änderungen zwischen Version 4.3 und 4.9 zu geben?
    Clemens
     

    Anhänge: