Files
VITEC-website/packages/vitec/Classes/Preview/UsecaseshowPluginPreview.php
2026-05-18 14:46:25 +02:00

86 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Preview;
use TYPO3\CMS\Backend\Preview\StandardContentPreviewRenderer;
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
use TYPO3\CMS\Core\Service\FlexFormService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\View\StandaloneView;
use Evomedien\Vitec\Domain\Repository\UsecaseRepository;
/**
* Preview class for the Usecaseshow plugin
*/
class UsecaseshowPluginPreview extends StandardContentPreviewRenderer
{
/**
* @param GridColumnItem $item
* @return string
*/
public function renderPageModulePreviewContent(GridColumnItem $item): string
{
$record = $item->getRecord();
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setTemplatePathAndFilename('EXT:vitec/Resources/Private/Templates/Preview/Usecaseshow.html');
// Parse FlexForm data
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($record['pi_flexform'] ?? '');
// Get usecase data if selected
$usecaseData = null;
$usecaseUid = (int)($flexFormData['settings']['usecase'] ?? 0);
if ($usecaseUid > 0) {
$usecaseRepository = GeneralUtility::makeInstance(UsecaseRepository::class);
$usecase = $usecaseRepository->findByUid($usecaseUid);
if ($usecase) {
$usecaseData = [
'uid' => $usecase->getUid(),
'title' => $usecase->getTitle(),
'subtitle' => $usecase->getSubtitle(),
'description' => $usecase->getDescription()
];
}
}
// Get layout setting
$layout = $flexFormData['settings']['layout'] ?? 'default';
// Assign variables to view
$view->assignMultiple([
'record' => $record,
'flexFormData' => $flexFormData,
'usecase' => $usecaseData,
'layout' => $layout,
'pluginName' => 'Usecaseshow'
]);
return $view->render();
}
/**
* @param GridColumnItem $item
* @return string
*/
public function renderPageModulePreviewHeader(GridColumnItem $item): string
{
$record = $item->getRecord();
// Parse FlexForm to get usecase info for header
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($record['pi_flexform'] ?? '');
$usecaseUid = (int)($flexFormData['settings']['usecase'] ?? 0);
if ($usecaseUid > 0) {
return '<strong>🎯 Usecase Show Plugin</strong> <small>(Usecase ID: ' . $usecaseUid . ')</small>';
}
return '<strong>🎯 Usecase Show Plugin</strong> <small style="color: orange;">(No usecase selected)</small>';
}
}