Skip to content

Commit 56a2a1a

Browse files
committed
Merge branch 'hotfix/fix_sizes' into 'feature/2.3.0'
Fix image size See merge request metamodels/attribute_translatedfile!46
2 parents 5a518e9 + 08fc50e commit 56a2a1a

File tree

3 files changed

+106
-6
lines changed

3 files changed

+106
-6
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?php
2+
3+
/**
4+
* This file is part of MetaModels/attribute_translatedfile.
5+
*
6+
* (c) 2012-2024 The MetaModels team.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*
11+
* This project is provided in good faith and hope to be usable by anyone.
12+
*
13+
* @package MetaModels/attribute_translatedfile
14+
* @author Ingolf Steinhardt <[email protected]>
15+
* @copyright 2012-2024 The MetaModels team.
16+
* @license https://github.com/MetaModels/attribute_translatedfile/blob/master/LICENSE LGPL-3.0-or-later
17+
* @filesource
18+
*/
19+
20+
declare(strict_types=1);
21+
22+
namespace MetaModels\AttributeTranslatedFileBundle\EventListener\DcGeneral\Table\RenderSetting;
23+
24+
use ContaoCommunityAlliance\DcGeneral\Contao\RequestScopeDeterminator;
25+
use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetPropertyOptionsEvent;
26+
use Doctrine\DBAL\Connection;
27+
use MetaModels\AttributeTranslatedFileBundle\EventListener\ImageSizeOptionsProvider;
28+
use MetaModels\CoreBundle\EventListener\DcGeneral\Table\RenderSetting\AbstractListener;
29+
use MetaModels\IFactory;
30+
31+
/**
32+
* Add the options for the file image size.
33+
*/
34+
final class FileImageSizeOptions extends AbstractListener
35+
{
36+
public function __construct(
37+
RequestScopeDeterminator $scopeDeterminator,
38+
IFactory $factory,
39+
Connection $connection,
40+
private readonly ImageSizeOptionsProvider $optionsProvider,
41+
) {
42+
parent::__construct($scopeDeterminator, $factory, $connection);
43+
}
44+
45+
/**
46+
* Invoke the event.
47+
*
48+
* @param GetPropertyOptionsEvent $event The event.
49+
*
50+
* @return void
51+
*/
52+
public function __invoke(GetPropertyOptionsEvent $event): void
53+
{
54+
if (
55+
('file_imageSize' !== $event->getPropertyName())
56+
|| (false === $this->wantToHandle($event))
57+
|| (false === $this->isAttributeFile($event))
58+
) {
59+
return;
60+
}
61+
62+
$this->optionsProvider->addOptions($event);
63+
}
64+
65+
/**
66+
* If used attribute type of file.
67+
*
68+
* @param GetPropertyOptionsEvent $event The event.
69+
*
70+
* @return bool
71+
*/
72+
private function isAttributeFile(GetPropertyOptionsEvent $event): bool
73+
{
74+
$builder = $this->connection->createQueryBuilder();
75+
$builder
76+
->select('t.type')
77+
->from('tl_metamodel_attribute', 't')
78+
->where($builder->expr()->eq('t.id', ':id'))
79+
->setParameter('id', $event->getModel()->getProperty('attr_id'));
80+
81+
$statement = $builder->executeQuery();
82+
if (0 === $statement->columnCount()) {
83+
return false;
84+
}
85+
86+
$result = $statement->fetchAssociative();
87+
88+
return 'translatedfile' === ($result['type'] ?? null);
89+
}
90+
}

src/Resources/config/event_listeners.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ services:
1515
method: buildAttribute
1616

1717
metamodels.attribute_translatedfile.event_listener.image_size_options:
18-
class: MetaModels\AttributeTranslatedFileBundle\EventListener\ImageSizeOptions
19-
tags:
20-
- name: kernel.event_listener
21-
event: dc-general.view.contao2backend.get-property-options
22-
method: getPropertyOptions
18+
class: MetaModels\AttributeTranslatedFileBundle\EventListener\ImageSizeOptionsProvider
19+
arguments:
20+
$imageSizes: '@contao.image.sizes'
21+
$translator: '@translator'
2322

2423
metamodels.attribute_translatedfile.event_listener.remove_type_options:
2524
class: MetaModels\AttributeTranslatedFileBundle\EventListener\DcGeneral\Table\Attribute\RemoveTypeOptions
@@ -46,3 +45,14 @@ services:
4645
tags:
4746
- name: kernel.event_listener
4847
event: dc-general.view.contao2backend.get-property-options
48+
49+
MetaModels\AttributeTranslatedFileBundle\EventListener\DcGeneral\Table\RenderSetting\FileImageSizeOptions:
50+
public: false
51+
arguments:
52+
$scopeDeterminator: '@cca.dc-general.scope-matcher'
53+
$factory: '@MetaModels\IFactory'
54+
$connection: '@database_connection'
55+
$optionsProvider: '@metamodels.attribute_translatedfile.event_listener.image_size_options'
56+
tags:
57+
- name: kernel.event_listener
58+
event: dc-general.view.contao2backend.get-property-options

tests/DependencyInjection/MetaModelsAttributeTranslatedFileExtensionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
use MetaModels\AttributeTranslatedFileBundle\EventListener\DcGeneral\Table\DcaSetting\FileWidgetModeOptions;
3232
use MetaModels\AttributeTranslatedFileBundle\EventListener\DcGeneral\Table\FilterSetting\RemoveAttIdOptions;
3333
use MetaModels\AttributeTranslatedFileBundle\EventListener\Factory\AddAttributeInformation;
34-
use MetaModels\AttributeTranslatedFileBundle\EventListener\ImageSizeOptions;
34+
use MetaModels\AttributeTranslatedFileBundle\EventListener\ImageSizeOptionsProvider;
3535
use PHPUnit\Framework\TestCase;
3636
use Symfony\Component\DependencyInjection\ContainerBuilder;
3737
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;

0 commit comments

Comments
 (0)