recordArray($item);
// v14: StandaloneView was removed - views come from the ViewFactory.
$view = GeneralUtility::makeInstance(\TYPO3\CMS\Core\View\ViewFactoryInterface::class)
->create(new \TYPO3\CMS\Core\View\ViewFactoryData(
templatePathAndFilename: 'EXT:vitec/Resources/Private/Templates/Preview/Usecaseshow.html',
request: $GLOBALS['TYPO3_REQUEST'] ?? null,
));
// 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 = $this->recordArray($item);
// 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 '🎯 Usecase Show Plugin (Usecase ID: ' . $usecaseUid . ')';
}
return '🎯 Usecase Show Plugin (No usecase selected)';
}
/**
* v14: GridColumnItem::getRecord() returns a Domain\Record object, no
* longer an array (found 2026-10-02 - crashed the page module preview).
* Normalizes both shapes to the raw database array.
*
* @return array
*/
private function recordArray(GridColumnItem $item): array
{
$record = $item->getRecord();
if ($record instanceof \TYPO3\CMS\Core\Domain\Record) {
$raw = $record->getRawRecord();
return $raw !== null ? $raw->toArray() : [];
}
return (array)$record;
}
}