Skip to content

Commit 8e20cab

Browse files
authored
Merge branch 'master' into update-dependencies
2 parents 46d5856 + d8df0ce commit 8e20cab

File tree

3 files changed

+60
-68
lines changed

3 files changed

+60
-68
lines changed

DependencyInjection/AdmingeneratorFormExtensionsExtension.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Admingenerator\FormExtensionsBundle\Form\Extension\HelpMessageExtension;
88
use Admingenerator\FormExtensionsBundle\Form\Extension\NoValidateExtension;
99
use Admingenerator\FormExtensionsBundle\Form\Extension\SingleUploadExtension;
10+
use Admingenerator\FormExtensionsBundle\Twig\Extension\ImageAssetsExtension;
1011
use Symfony\Component\Config\FileLocator;
1112
use Symfony\Component\DependencyInjection\ContainerBuilder;
1213
use Symfony\Component\DependencyInjection\Loader;
@@ -43,6 +44,8 @@ public function load(array $configs, ContainerBuilder $container)
4344
$container->setParameter('admingenerator.form.include_blueimp', $config['include_blueimp']);
4445
$container->setParameter('admingenerator.form.include_gmaps', $config['include_gmaps']);
4546

47+
$this->configureAssetsExtension($container, $config['upload_manager'], $config['image_manipulator']);
48+
4649
$this->configureExtensions($config['extensions'], $container);
4750

4851
$this->loadUploadCollectionListener($config['upload_collection'], $container);
@@ -113,4 +116,31 @@ private function registerExtension(ContainerBuilder $container, string $serviceI
113116
]);
114117
$container->setDefinition($serviceId, $extensionDefinition);
115118
}
119+
120+
private function configureAssetsExtension(ContainerBuilder $container, string $uploadManager, string $imageManipulator) {
121+
$uploaderHelperDefinition = null;
122+
$imageExtensionDefinition = null;
123+
if ('vich_uploader' === $uploadManager) {
124+
if ($container->hasDefinition('vich_uploader.templating.helper.uploader_helper') || $container->hasAlias('vich_uploader.templating.helper.uploader_helper')) {
125+
$uploaderHelperDefinition = $container->findDefinition('vich_uploader.templating.helper.uploader_helper');
126+
} else {
127+
$uploaderHelperDefinition = new Reference('Vich\UploaderBundle\Twig\Extension\UploaderExtension');
128+
}
129+
}
130+
if ('liip_imagine' === $imageManipulator) {
131+
if (class_exists('\Liip\ImagineBundle\Templating\ImagineExtension')) {
132+
$imageExtensionDefinition = new Reference('liip_imagine.twig.extension');
133+
} else {
134+
$imageExtensionDefinition = new Reference('liip_imagine.templating.filter_extension');
135+
}
136+
} else if ('avalanche_imagine' === $imageManipulator) {
137+
$imageExtensionDefinition = new Reference('imagine.twig.extension');
138+
}
139+
140+
$assetsExtensionDefinition = new Definition(ImageAssetsExtension::class);
141+
$assetsExtensionDefinition->setArgument('$uploaderExtension', $uploaderHelperDefinition);
142+
$assetsExtensionDefinition->setArgument('$filterExtension', $imageExtensionDefinition);
143+
$assetsExtensionDefinition->addTag('twig.extension');
144+
$container->setDefinition('admingenerator.twig.extension.image_assets', $assetsExtensionDefinition);
145+
}
116146
}

Resources/config/services.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,6 @@
114114
</service>
115115

116116
<!-- Twig extensions -->
117-
<service id="admingenerator.twig.extension.image_assets" class="Admingenerator\FormExtensionsBundle\Twig\Extension\ImageAssetsExtension">
118-
<tag name="twig.extension" />
119-
<argument type="service" id="service_container" />
120-
</service>
121117

122118
<service id="admingenerator.twig.extension.include_globals" class="Admingenerator\FormExtensionsBundle\Twig\Extension\IncludeGlobalsExtension">
123119
<tag name="twig.extension" />

Twig/Extension/ImageAssetsExtension.php

Lines changed: 30 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,32 @@
22

33
namespace Admingenerator\FormExtensionsBundle\Twig\Extension;
44

5-
use Symfony\Component\DependencyInjection\ContainerInterface;
6-
use Symfony\Component\DependencyInjection\Container;
75
use Twig\Extension\AbstractExtension;
86
use Twig\TwigFilter;
97
use Twig\TwigFunction;
108

119
/**
12-
* This extension adds common twig function for various upload manager
13-
* bundles and common twig filter image manipulation bundles.
14-
*
15-
* Depending on %admingenerator.form.upload_manager% setting a diffrent
10+
* This extension adds common twig function for various upload manager
11+
* bundles and common twig filter image manipulation bundles.
12+
*
13+
* Depending on %admingenerator.form.upload_manager% setting a diffrent
1614
* upload manager bundle is used.
17-
*
18-
* Depending on %admingenerator.form.image_manipulator% setting a diffrent
15+
*
16+
* Depending on %admingenerator.form.image_manipulator% setting a diffrent
1917
* image manipulation bundle is used.
20-
*
18+
*
2119
* @author Piotr Gołębiewski <[email protected]>
2220
*/
2321
class ImageAssetsExtension extends AbstractExtension
2422
{
25-
protected $container;
23+
protected $uploaderExtension;
2624

27-
public function __construct(ContainerInterface $container)
25+
protected $filterExtension;
26+
27+
public function __construct($uploaderExtension, $filterExtension)
2828
{
29-
$this->container = $container;
29+
$this->uploaderExtension = $uploaderExtension;
30+
$this->filterExtension = $filterExtension;
3031
}
3132

3233
/**
@@ -48,7 +49,7 @@ public function getFilters()
4849
'image_filter' => new TwigFilter('image_filter', array($this, 'filter')),
4950
);
5051
}
51-
52+
5253
/**
5354
* Gets the browser path for the image and filter to apply.
5455
*
@@ -57,20 +58,16 @@ public function getFilters()
5758
public function asset($object, $field)
5859
{
5960
$params = func_get_args();
60-
61-
if ('vich_uploader' === $this->getUploadManager()) {
62-
// Note: requires v0.13.0 or higher
63-
$ext = new \Vich\UploaderBundle\Twig\Extension\UploaderExtension(
64-
$this->container->get('vich_uploader.templating.helper.uploader_helper')
65-
);
66-
67-
return call_user_func_array(array($ext, "asset"), $params);
61+
62+
if ($this->uploaderExtension instanceof \Vich\UploaderBundle\Templating\Helper\UploaderHelper
63+
|| $this->uploaderExtension instanceof \Vich\UploaderBundle\Twig\Extension\UploaderExtension) {
64+
return call_user_func_array(array($this->uploaderExtension, "asset"), $params);
6865
}
69-
66+
7067
// In case no upload manager is used we expect object to have
7168
// a special method returning file's path
7269
$getter = "get".Container::Camelize($field)."WebPath";
73-
70+
7471
return $object->$getter();
7572
}
7673

@@ -83,54 +80,23 @@ public function filter()
8380
{
8481
$params = func_get_args();
8582
$path = $params[0];
86-
87-
if ('liip_imagine' === $this->getImageManipulator()) {
88-
if(class_exists('\Liip\ImagineBundle\Templating\ImagineExtension')) {
89-
$ext = new \Liip\ImagineBundle\Templating\ImagineExtension(
90-
$this->container->get('liip_imagine.cache.manager')
91-
);
92-
} else {
93-
$ext = new \Liip\ImagineBundle\Templating\FilterExtension(
94-
$this->container->get('liip_imagine.cache.manager')
95-
);
96-
}
97-
98-
return call_user_func_array(array($ext, "filter"), $params);
83+
84+
if (($this->filterExtension instanceof \Liip\ImagineBundle\Templating\ImagineExtension)
85+
|| ($this->filterExtension instanceof \Liip\ImagineBundle\Templating\FilterExtension)) {
86+
87+
return call_user_func_array(array($this->filterExtension, "filter"), $params);
9988
}
100-
101-
if ('avalanche_imagine' === $this->getImageManipulator()) {
102-
$ext = new \Avalanche\Bundle\ImagineBundle\Templating\ImagineExtension(
103-
$this->container->get('imagine.cache.path.resolver')
104-
);
105-
106-
return call_user_func_array(array($ext, "applyFilter"), $params);
89+
90+
if ($this->filterExtension instanceof \Avalanche\Bundle\ImagineBundle\Templating\ImagineExtension) {
91+
92+
return call_user_func_array(array($this->filterExtension, "applyFilter"), $params);
10793
}
108-
94+
10995
// In case no image manipulator is used we
11096
// return the unmodified path
11197
return $path;
11298
}
11399

114-
/**
115-
* Get upload manager name
116-
*
117-
* @return string|null Parameter value
118-
*/
119-
public function getUploadManager()
120-
{
121-
return $this->container->getParameter('admingenerator.form.upload_manager');
122-
}
123-
124-
/**
125-
* Get image manipulator name
126-
*
127-
* @return string|null Parameter value
128-
*/
129-
public function getImageManipulator()
130-
{
131-
return $this->container->getParameter('admingenerator.form.image_manipulator');
132-
}
133-
134100
/**
135101
* Returns the name of the extension.
136102
*

0 commit comments

Comments
 (0)