MrmBeCmImageplusPreviewRenderer.php 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Meramo\mrm_be\Hooks\PageLayoutView;
  3. /*
  4. * This file is part of the TYPO3 CMS project.
  5. *
  6. * It is free software; you can redistribute it and/or modify it under
  7. * the terms of the GNU General Public License, either version 2
  8. * of the License, or any later version.
  9. *
  10. * For the full copyright and license information, please read the
  11. * LICENSE.txt file that was distributed with this source code.
  12. *
  13. * The TYPO3 project - inspiring people to share!
  14. */
  15. use \TYPO3\CMS\Core\Utility\GeneralUtility;
  16. use \TYPO3\CMS\Core\Service\FlexFormService;
  17. use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
  18. use \TYPO3\CMS\Backend\View\PageLayoutView;
  19. /**
  20. * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
  21. */
  22. class MrmBeCmImageplusPreviewRenderer implements PageLayoutViewDrawItemHookInterface
  23. {
  24. /**
  25. * Preprocesses the preview rendering of a content element of type "My new content element"
  26. *
  27. * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
  28. * @param bool $drawItem Whether to draw the item using the default functionality
  29. * @param string $headerContent Header content
  30. * @param string $itemContent Item content
  31. * @param array $row Record row of tt_content
  32. *
  33. * @return void
  34. */
  35. public function preProcess(
  36. PageLayoutView &$parentObject,
  37. &$drawItem,
  38. &$headerContent,
  39. &$itemContent,
  40. array &$row
  41. )
  42. {
  43. if ($row['CType'] === 'mrm_be_cm_imageplus') {
  44. $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
  45. $ffs = GeneralUtility::makeInstance(FlexFormService::class);
  46. $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
  47. // print_r($flex);
  48. // die();
  49. $img = '';
  50. if($flex['image'] == "1"){
  51. $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
  52. $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
  53. if($fileObjects && sizeOf($fileObjects) >= 1){
  54. $img = array(
  55. 'reference' => $fileObjects[0]->getReferenceProperties(),
  56. 'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
  57. 'resource' => $fileObjects[0]
  58. );
  59. }
  60. $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
  61. $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
  62. $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
  63. }
  64. $headline = $flex['headline'] ?? '';
  65. $description = $flex['description'] ?? '';
  66. $link = $flex['link'] ?? '';
  67. $customcss = $flex['customcss'] ?? '';
  68. $itemContent .= '<div style="display: flex; flex-direction: column; justify-content: flex-start;">';
  69. $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;">';
  70. $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;">';
  71. $itemContent .= '<div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
  72. $itemContent .= '<div>'.$headline.'</div>';
  73. $itemContent .= '<div>'.$description.'</div>';
  74. $itemContent .= '<div>'.$link.'</div>';
  75. $itemContent .= '<div>'.$customcss.'</div></div>';
  76. $drawItem = false;
  77. }
  78. }
  79. }