Skip to content

Commit

Permalink
[TASK] Allow LLL: references in policy URL setting
Browse files Browse the repository at this point in the history
  • Loading branch information
garfieldius committed Mar 19, 2024
1 parent 1497a7f commit 1a79ff2
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
20 changes: 16 additions & 4 deletions Classes/DataProcessing/ItemsProcessor.php
Expand Up @@ -4,6 +4,7 @@

namespace Supseven\Supi\DataProcessing;

use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
use TYPO3\CMS\Core\Utility\MathUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
Expand All @@ -13,15 +14,26 @@
*/
class ItemsProcessor implements DataProcessorInterface
{
public function __construct(
private readonly LanguageServiceFactory $languageServiceFactory,
) {
}

public function process(ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData): array
{
// Generate URLs for policy pages
foreach ($processedData['settings']['elements'] ?? [] as $i => $element) {
foreach ($element['items'] ?? [] as $j => $item) {
$policy = $item['table']['policy'] ?? '';

if ($policy && MathUtility::canBeInterpretedAsInteger($policy)) {
$policy = $cObj->typoLink_URL(['parameter' => $policy, 'forceAbsoluteUrl' => true]);
$policy = (string)($item['table']['policy'] ?? '');

if ($policy) {
if (MathUtility::canBeInterpretedAsInteger($policy)) {
$policy = $cObj->typoLink_URL(['parameter' => $policy, 'forceAbsoluteUrl' => true]);
} elseif (str_starts_with($policy, 'LLL:')) {
$siteLanguage = $cObj->getRequest()->getAttribute('language');
$languageService = $this->languageServiceFactory->createFromSiteLanguage($siteLanguage);
$policy = $languageService->sL($policy);
}
}

$processedData['settings']['elements'][$i]['items'][$j]['table']['policyUrl'] = $policy;
Expand Down
9 changes: 2 additions & 7 deletions Configuration/Services.yaml
Expand Up @@ -3,13 +3,8 @@ services:
autowire: true
autoconfigure: true

Supseven\Supi\DataProcessing\SettingsProcessor:
public: true

Supseven\Supi\DataProcessing\TyposcriptProcessor:
public: true

Supseven\Supi\DataProcessing\YoutubeProcessor:
Supseven\Supi\DataProcessing\:
resource: '../Classes/DataProcessing/*'
public: true

Supseven\Supi\ContentObject\SupiJsContentObject:
Expand Down
7 changes: 6 additions & 1 deletion Tests/DataProcessing/ItemsProcessorTest.php
Expand Up @@ -6,6 +6,7 @@

use PHPUnit\Framework\TestCase;
use Supseven\Supi\DataProcessing\ItemsProcessor;
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;

/**
Expand Down Expand Up @@ -75,8 +76,12 @@ public function testProcess(): void

$cObj = $this->createMock(ContentObjectRenderer::class);
$cObj->expects(static::once())->method('typoLink_URL')->with(static::equalTo($ts))->willReturn($policyUrl);
$cObj->expects(static::never())->method('getRequest');

$subject = new ItemsProcessor();
$languageServiceFactory = $this->createMock(LanguageServiceFactory::class);
$languageServiceFactory->expects($this->never())->method('create');

$subject = new ItemsProcessor($languageServiceFactory);
$actual = $subject->process($cObj, [], [], $vars);

static::assertEquals($expected, $actual);
Expand Down

0 comments on commit 1a79ff2

Please sign in to comment.