standardContentPreviewRenderer->renderPageModulePreviewHeader($item); } public function renderPageModulePreviewContent(GridColumnItem $item): string { $record = $item->getRecord(); $request = $item->getContext()->getCurrentRequest(); $persistenceIdentifier = null; if ($record->has('pi_flexform')) { $flexFormData = $record->get('pi_flexform'); if ($flexFormData instanceof FlexFormFieldValues) { if ($flexFormData->has('sDEF/settings.persistenceIdentifier')) { $persistenceIdentifier = $flexFormData->get('sDEF/settings.persistenceIdentifier'); } else { $this->logger->warning( 'Field "pi_flexform" for record-uid "{uid}" does not contain a persistence identifier.', ['uid' => $record->getUid()] ); } } else { $this->logger->warning( 'Type "{type}" of field "pi_flexform" for record-uid "{uid}" is not valid.', ['type' => get_debug_type($flexFormData), 'uid' => $record->getUid()] ); } } $languageService = $this->getLanguageService(); if (!empty($persistenceIdentifier)) { try { try { $formDefinition = $this->formPersistenceManager->load($persistenceIdentifier); $formLabel = $formDefinition['label']; } catch (ParseErrorException $e) { $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.invalidPersistenceIdentifier'), $persistenceIdentifier ); } catch (PersistenceManagerException $e) { $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.inaccessiblePersistenceIdentifier'), $persistenceIdentifier ); } catch (Exception $e) { $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.notExistingdPersistenceIdentifier'), $persistenceIdentifier ); } } catch (NoSuchFileException $e) { $this->addInvalidFrameworkConfigurationFlashMessage($persistenceIdentifier, $e); $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.notExistingdPersistenceIdentifier'), $persistenceIdentifier ); } catch (ParseErrorException $e) { $this->addInvalidFrameworkConfigurationFlashMessage($persistenceIdentifier, $e); $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.invalidFrameworkConfiguration'), $persistenceIdentifier ); } catch (\Exception $e) { // Top level catch - FAL throws top level exceptions on missing files, eg. in getFileInfoByIdentifier() of LocalDriver $this->addInvalidFrameworkConfigurationFlashMessage($persistenceIdentifier, $e); $formLabel = sprintf( $languageService->sL('form.database:tt_content.preview.invalidFrameworkConfiguration.text'), $persistenceIdentifier, $e->getMessage() ); } } else { $formLabel = $languageService->sL('form.database:tt_content.preview.noPersistenceIdentifier'); } $itemContent = '' . htmlspecialchars($item->getContext()->getContentTypeLabels()['form_formframework']) . '
'; return $this->fieldProcessor->linkToEditForm($itemContent . htmlspecialchars($formLabel), $record, $request); } public function renderPageModulePreviewFooter(GridColumnItem $item): string { return $this->standardContentPreviewRenderer->renderPageModulePreviewFooter($item); } public function wrapPageModulePreview(string $previewHeader, string $previewContent, GridColumnItem $item): string { return $this->standardContentPreviewRenderer->wrapPageModulePreview($previewHeader, $previewContent, $item); } private function addInvalidFrameworkConfigurationFlashMessage(string $persistenceIdentifier, \Exception $e): void { $languageService = $this->getLanguageService(); $this->flashMessageService ->getMessageQueueByIdentifier('core.template.flashMessages') ->enqueue( new FlashMessage( sprintf( $languageService->sL('form.database:tt_content.preview.invalidFrameworkConfiguration.text'), $persistenceIdentifier, $e->getMessage() ), $languageService->sL('form.database:tt_content.preview.invalidFrameworkConfiguration.title'), ContextualFeedbackSeverity::ERROR, true ) ); } private function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }