From 058c122ce6e2a5c3ac5377cdaa31fefec2761387 Mon Sep 17 00:00:00 2001 From: Alexander Schnitzler Date: Tue, 16 Jun 2026 09:41:13 +0200 Subject: [PATCH] [FEATURE] Dispatch GenerateDocumentEvent This implementation replaces the hard coded genertion of pdf documents which isn't compatible with any current version of extcode/cart-pdf. A generic event can be handled by any extension. A follow-up-patch in extcode/cart-pdf guarantees future compatibility with this change. Refs: #743 --- .../Backend/Order/DocumentController.php | 19 ++--------------- .../Event/Document/GenerateDocumentEvent.php | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 Classes/Event/Document/GenerateDocumentEvent.php diff --git a/Classes/Controller/Backend/Order/DocumentController.php b/Classes/Controller/Backend/Order/DocumentController.php index bbe55be1..df8145a9 100644 --- a/Classes/Controller/Backend/Order/DocumentController.php +++ b/Classes/Controller/Backend/Order/DocumentController.php @@ -15,11 +15,9 @@ use Extcode\Cart\Domain\Model\Cart\Cart; use Extcode\Cart\Domain\Model\Order\Item; use Extcode\Cart\Domain\Repository\Order\ItemRepository; +use Extcode\Cart\Event\Document\GenerateDocumentEvent; use Extcode\Cart\Event\Order\NumberGeneratorEvent; -use Extcode\CartPdf\Service\PdfService; use Psr\Http\Message\ResponseInterface; -use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; -use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager; use TYPO3\CMS\Extbase\Utility\LocalizationUtility; @@ -57,7 +55,7 @@ public function createAction(Item $orderItem, string $pdfType): ResponseInterfac $this->persistenceManager->persistAll(); } - $this->generatePdfDocument($orderItem, $pdfType); + $this->eventDispatcher->dispatch(new GenerateDocumentEvent($orderItem, $pdfType)); $this->itemRepository->update($orderItem); $this->persistenceManager->persistAll(); @@ -91,17 +89,4 @@ public function downloadAction(Item $orderItem, string $pdfType): ResponseInterf return $this->htmlResponse(); } - - protected function generatePdfDocument(Item $orderItem, string $pdfType): void - { - if (ExtensionManagementUtility::isLoaded('cart_pdf')) { - if (class_exists(PdfService::class)) { - $pdfService = GeneralUtility::makeInstance( - PdfService::class - ); - - $pdfService->createPdf($orderItem, $pdfType); - } - } - } } diff --git a/Classes/Event/Document/GenerateDocumentEvent.php b/Classes/Event/Document/GenerateDocumentEvent.php new file mode 100644 index 00000000..b542071f --- /dev/null +++ b/Classes/Event/Document/GenerateDocumentEvent.php @@ -0,0 +1,21 @@ +