Modul update auf Metadata 2.0 für Kompatibilität mit Oxid 6.4

Hallo zusammen,

ich habe vor einiger Zeit mal ein Modul gebastelt Order processed
welches bis zur Shopversion 6.1 super funktioniert hat.
Jetzt steht ein Update auf die Version 6.4 an und ich schaffe es einfach nicht, das Modul für Shopversionen die höher als 6.1 sind, anzupassen…
Speziell die metadata.php bereitet mir Probleme.
Ich stehe einfach auf dem Schlauch und kann auch mit der Dokumentation nicht so richtig was anfangen. Ich bin halt doch nur ein Hobby-Programmierer…
Lange Rede, kurzer Sinn - vielleicht findet sich hier jemand, der das machen kann.

Hier die aktuelle metadata.php:

<?php
/**
 * ALL24 OrderStatus Modul
 *
 * @author Markus Koller
 */
$sMetadataVersion = '1.0';
$aModule = array(
    'id'           => 'all24OrderStatus',
    'title'        => 'ALL24 OrderStatus',
    'description'  => 'erweitert Bestellungen mit "jetzt bearbeiten"',
    'thumbnail'    => 'all24_orderstatus.png',
    'version'      => '1.0.0',
    'author'       => 'Markus Koller',
    'email'        => '',
    'extend'       => array(
			'order_overview' => 'all24/all24OrderStatus/application/controllers/admin/all24_order_overview',
			'oxemail' => 'all24/all24OrderStatus/core/all24_oxemail'
			
    ),
    'files'        => array(
			'all24orderoverview' =>'all24/all24OrderStatus/application/controllers/admin/all24_order_overview.php',
			'oxemail' => 'all24/all24OrderStatus/core/all24_oxemail.php'
	),
	'templates' => array(
    'processed_html.tpl' => 'all24/all24OrderStatus/application/views/tpl/email/html/processed_html.tpl',
	'processed_plain.tpl'=> 'all24/all24OrderStatus/application/views/tpl/email/plain/processed_plain.tpl',
 ),
    'blocks'       => array(
			array('template'=> 'order_overview.tpl',
				'block' => 'admin_order_overview_send_form',
				'file'  => '/application/views/admin/all24_order_overview.tpl'),
			array('template'=> 'page/account/order.tpl',
				'block'=> 'account_order_history',
				'file' => '/application/views/tpl/page/account/all24_order.tpl'),
			array('template'=> 'shop_main.tpl',
				'block'=> 'admin_shop_main_emailsubject',
				'file' => '/application/views/admin/all24_shop_main.tpl'),
			
    
    )
	
    
);

Ich hoffe, es findet sich jemand…
SG Markus

Migrations — OXID eShop developer documentation 6.2.0 documentation (oxid-esales.com)

Demo 2 Versionen:
downloads.foxido.de/Mobiile-Detect.zip

Ok - mal schauen, ob ich da irgendwas richtig mache (im Moment läufts noch nicht):

Soll das in etwa so ausschauen?:

aus:
'extend' => array( 'order_overview' => 'all24/all24OrderStatus/application/controllers/admin/all24_order_overview', 'oxemail' => 'all24/all24OrderStatus/core/all24_oxemail'

wird:
'extend' => array( \OxidEsales\Eshop\Application\Controller\Admin\OrderMain::class => all24\all24OrderStatus\application\controllers\admin\all24_order_overview::class \OxidEsales\Eshop\Core\Email::class => all24\all24OrderStatus\core\all24_oxemail::class

Irgendwas kapiere ich noch nicht ganz - “verweist” hier “\OxidEsales\Eshop..” auf den ordner "vendor/OXID-esales/oxideshop-ce/… ?
Und wenn ich oben angebe: …\OxidEsales\Eshop\Application\Controller\Admin\OrderMain::class , betrifft das dann die Datei vendor/OXID-esales/oxideshop-cd/Application/Controller/Admin/OrderMain.php?

Aktuell bekomme ich noch folgende Fehlermeldung im LOG:

OXID Logger.ERROR: Function 'canResetProcessedDate' does not exist or is not accessible!

Ist hier der namespace in der datei all24_order_overview.php falsch?:

namespace all24\all24OrderStatus\application\controllers\admin

Sorry für meine ganzen Fragen, aber ich steh da wirklich auf dem Schlauch…

LG Markus

und aus “files” wird “controllers”

Um das zu beantworten, musst ja nur den Ordner kontrollieren. Und es wird eine Methode als nicht erreichbar beschrieben. Beim Aufruf von was?

Nachtrag:

dürfte falsch sein, besser:
extend’ => array( \OxidEsales\Eshop\Application\Controller\Admin\OrderOverview::class

Danke für die Hinweise - aber ich hab da noch einen Knoten im Hirn…

Mit dem herumprobieren habe die Dateipfade/Ordnerstruktur noch angepasst, die Pfade der vorherigen Posts sind also nicht mehr richtig!

Ich habe in der composer.json folgendes angelegt:

"autoload": {
        "psr-4": {
            "All24\\": "../../../source/modules/all24"
        }

Hier wird der Ordner “source/modules/all24” unter dem Namespace “All24” abgelegt?

Dann in meiner metadata:

'extend'       => array(
			\OxidEsales\Eshop\Application\Controller\Admin\OrderOverview::class => \All24\all24OrderStatus\Application\Controller\Admin\OrderOverview::class,
	),
	'controllers'  => array(
		'all24orderoverview' => All24\all24OrderStatus\Application\Controller\Admin\OrderOverview::class,
    ),

Hier erweitere ich “vendor/OXID-esales/oxideshop-ce/source/Application/Controller/Admin/OrderOverview.php” mit “modules/all24/all24OrderStatus/Application/Controller/Admin/OrderOverview.php”?

In /modules/all24/all24OrderStatus/Application/Controller/Admin/OrderOverview.php:

namespace All24\all24OrderStatus\Application\Controller\Admin;
 
class OrderOverview extends \OxidEsales\Eshop\Application\Controller\Admin\OrderOverview
{
	public function render()
    {
        $return = parent::render();
        return $return;
    }

erweitere ich die OrderOverview-Klasse.

Wenn ich das Modul aktiviere, bekomme ich bei der Modulübersicht folgende Meldung:

Es wurden ungültige Module erkannt!

all24OrderStatus * OxidEsales\Eshop\Application\Controller\Admin\OrderOverview => All24\all24OrderStatus\Application\Controller\Admin\OrderOverview

Im Log steht folgendes:

OXID Logger.ERROR: Module class All24\all24OrderStatus\Application\Controller\Admin\OrderOverview not found. Module ID (module id not availible) ["[object] (OxidEsales\\Eshop\\Core\\Exception\\SystemComponentException(code: 0): Module class All24\\all24OrderStatus\\Application\\Controller\\Admin\\OrderOverview not found. Module ID (module id not availible) at vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleChainsGenerator.php:418)

Für mich heißt das, dass die Klasse (Datei) “OrderOverview”(.php) nicht gefunden werden kann.
Die Datei liegt unter “modules/all24/all24OrderOverview/Application/Controller/Admin/OrderOverview.php”

Wo habe ich da was übersehen?

LG Markus

Da fehlt IMHO was (target.directory?)
All24\all24OrderStatus\\ ../../../source/modules/all24/all24OrderStatus

IMHO falsch

class OrderOverview extends OrderOverview_parent
{

Achtung beim Kopieren aus diesem Forum. Besser selbst korrigieren.

So… jetzt habe ich es geschafft!
Ich habe das Ganze jetzt ohne Namespace gemacht und jetzt funktioniert es.
composer update / install und co. ist aber immer fehlerfrei durchgelaufen.

Auf jeden Fall möchte ich mich für die “Lehrstunde” bedanken!
Habe einiges gelernt und jetzt packt mich noch dazu die Neugier. Kann ja keine unlösbare Aufgabe sein, ein Modul zu schreiben!
Nur gut, dass ich nicht dafür bezahlt werde OXID Module zu schreiben… :sweat_smile:

Danke nochmal!

SG Markus