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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
    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:
    33.578
    Danke erhalten:
    10.418
    Danke vergeben:
    1.498
    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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
    #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:
    33.578
    Danke erhalten:
    10.418
    Danke vergeben:
    1.498
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
    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.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
    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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
  10. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @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:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29
  12. ff-webdesigner

    ff-webdesigner Erfahrener Benutzer

    Registriert seit:
    22. Januar 2014
    Beiträge:
    242
    Danke erhalten:
    24
    Danke vergeben:
    29