• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FluidTYPO3 / flux / 27753814608

18 Jun 2026 10:39AM UTC coverage: 89.162% (-3.5%) from 92.646%
27753814608

Pull #2288

github

web-flow
Merge 37edf9f2e into 2614049c6
Pull Request #2288: [FEATURE] Prepare for v14 support

210 of 348 new or added lines in 56 files covered. (60.34%)

121 existing lines in 9 files now uncovered.

6228 of 6985 relevant lines covered (89.16%)

40.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.12
/Classes/Integration/PreviewRenderer.php
1
<?php
2
namespace FluidTYPO3\Flux\Integration;
3

4
/*
5
 * This file is part of the FluidTYPO3/Flux project under GPLv2 or later.
6
 *
7
 * For the full copyright and license information, please read the
8
 * LICENSE.md file that was distributed with this source code.
9
 */
10

11
use FluidTYPO3\Flux\Enum\PreviewOption;
12
use FluidTYPO3\Flux\Provider\ProviderInterface;
13
use FluidTYPO3\Flux\Provider\ProviderResolver;
14
use TYPO3\CMS\Core\Domain\RawRecord;
15
use TYPO3\CMS\Core\Domain\Record;
16
use TYPO3\CMS\Core\Page\PageRenderer;
17

18
class PreviewRenderer
19
{
20
    protected static bool $assetsIncluded = false;
21
    private PageRenderer $pageRenderer;
22
    private ProviderResolver $providerResolver;
23

24
    public function __construct(PageRenderer $pageRenderer, ProviderResolver $providerResolver)
25
    {
26
        $this->pageRenderer = $pageRenderer;
44✔
27
        $this->providerResolver = $providerResolver;
44✔
28
    }
29

30
    public function renderPreview(array|Record|RawRecord $row, ?string $header, ?string $currentPreview): ?array
31
    {
32
        if ($row instanceof Record) {
44✔
NEW
33
            $row = $row->getRawRecord()->toArray();
×
34
        } elseif ($row instanceof RawRecord) {
44✔
NEW
35
            $row = $row->toArray();
×
36
        }
37
        $fieldName = null;
44✔
38
        $headerContent = $header;
44✔
39
        $drawItem = true;
44✔
40
        $itemContent = $currentPreview;
44✔
41
        $preview = [$headerContent, $itemContent, $drawItem];
44✔
42
        $anchorLink = '<a name="c' . $row['uid'] . '"></a>';
44✔
43
        $providers = $this->providerResolver->resolveConfigurationProviders('tt_content', $fieldName, $row);
44✔
44
        foreach ($providers as $provider) {
44✔
45
            /** @var ProviderInterface $provider */
46
            $form = $provider->getForm($row);
44✔
47
            if (!$form) {
44✔
48
                continue;
4✔
49
            }
50

51
            $previewOptions = $form->getOption(PreviewOption::PREVIEW);
40✔
52
            $previewOptionValue = is_array($previewOptions) ? $previewOptions[PreviewOption::MODE] ?? null : null;
40✔
53

54
            if ($previewOptionValue === PreviewOption::MODE_NONE) {
40✔
55
                continue;
8✔
56
            }
57

58
            [$previewHeader, $previewContent, $continueDrawing] = $provider->getPreview($row);
32✔
59
            if (!empty($previewContent)) {
32✔
60
                $drawItem = false;
32✔
61
                $itemContent = match ($previewOptionValue) {
32✔
62
                    PreviewOption::MODE_PREPEND => $anchorLink . $previewContent . $currentPreview,
32✔
63
                    PreviewOption::MODE_APPEND => $anchorLink . $currentPreview . $previewContent,
32✔
64
                    default => $anchorLink . $previewContent,
32✔
65
                };
32✔
66
            }
67

68
            if (!empty($previewHeader)) {
32✔
69
                $drawItem = false;
32✔
70
                $headerContent = match ($previewOptionValue) {
32✔
71
                    PreviewOption::MODE_PREPEND => $previewHeader . (!empty($header) ? ': ' . $header : ''),
32✔
72
                    PreviewOption::MODE_APPEND => (!empty($header) ? $header . ': ' : '') . $previewHeader,
32✔
73
                    default => $previewHeader,
32✔
74
                };
32✔
75
            }
76

77
            $preview = [$headerContent, $itemContent, $drawItem];
32✔
78
            if (!$continueDrawing) {
32✔
79
                break;
32✔
80
            }
81
        }
82
        $this->attachAssets();
44✔
83
        return $preview;
44✔
84
    }
85

86
    /**
87
     * @codeCoverageIgnore
88
     */
89
    protected function attachAssets(): void
90
    {
91
        if (!static::$assetsIncluded) {
92
            $this->pageRenderer->addCssFile('EXT:flux/Resources/Public/css/flux.css');
93
            static::$assetsIncluded = true;
94
        }
95
    }
96
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc