86 lines
2.9 KiB
PHP
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>';
|
|
}
|
|
} |