Skip to content

Commit

Permalink
Merge branch 'master' into update-dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
tobias-93 authored Dec 16, 2020
2 parents 46d5856 + d8df0ce commit 8e20cab
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 68 deletions.
30 changes: 30 additions & 0 deletions DependencyInjection/AdmingeneratorFormExtensionsExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Admingenerator\FormExtensionsBundle\Form\Extension\HelpMessageExtension;
use Admingenerator\FormExtensionsBundle\Form\Extension\NoValidateExtension;
use Admingenerator\FormExtensionsBundle\Form\Extension\SingleUploadExtension;
use Admingenerator\FormExtensionsBundle\Twig\Extension\ImageAssetsExtension;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader;
Expand Down Expand Up @@ -43,6 +44,8 @@ public function load(array $configs, ContainerBuilder $container)
$container->setParameter('admingenerator.form.include_blueimp', $config['include_blueimp']);
$container->setParameter('admingenerator.form.include_gmaps', $config['include_gmaps']);

$this->configureAssetsExtension($container, $config['upload_manager'], $config['image_manipulator']);

$this->configureExtensions($config['extensions'], $container);

$this->loadUploadCollectionListener($config['upload_collection'], $container);
Expand Down Expand Up @@ -113,4 +116,31 @@ private function registerExtension(ContainerBuilder $container, string $serviceI
]);
$container->setDefinition($serviceId, $extensionDefinition);
}

private function configureAssetsExtension(ContainerBuilder $container, string $uploadManager, string $imageManipulator) {
$uploaderHelperDefinition = null;
$imageExtensionDefinition = null;
if ('vich_uploader' === $uploadManager) {
if ($container->hasDefinition('vich_uploader.templating.helper.uploader_helper') || $container->hasAlias('vich_uploader.templating.helper.uploader_helper')) {
$uploaderHelperDefinition = $container->findDefinition('vich_uploader.templating.helper.uploader_helper');
} else {
$uploaderHelperDefinition = new Reference('Vich\UploaderBundle\Twig\Extension\UploaderExtension');
}
}
if ('liip_imagine' === $imageManipulator) {
if (class_exists('\Liip\ImagineBundle\Templating\ImagineExtension')) {
$imageExtensionDefinition = new Reference('liip_imagine.twig.extension');
} else {
$imageExtensionDefinition = new Reference('liip_imagine.templating.filter_extension');
}
} else if ('avalanche_imagine' === $imageManipulator) {
$imageExtensionDefinition = new Reference('imagine.twig.extension');
}

$assetsExtensionDefinition = new Definition(ImageAssetsExtension::class);
$assetsExtensionDefinition->setArgument('$uploaderExtension', $uploaderHelperDefinition);
$assetsExtensionDefinition->setArgument('$filterExtension', $imageExtensionDefinition);
$assetsExtensionDefinition->addTag('twig.extension');
$container->setDefinition('admingenerator.twig.extension.image_assets', $assetsExtensionDefinition);
}
}
4 changes: 0 additions & 4 deletions Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,6 @@
</service>

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

<service id="admingenerator.twig.extension.include_globals" class="Admingenerator\FormExtensionsBundle\Twig\Extension\IncludeGlobalsExtension">
<tag name="twig.extension" />
Expand Down
94 changes: 30 additions & 64 deletions Twig/Extension/ImageAssetsExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,32 @@

namespace Admingenerator\FormExtensionsBundle\Twig\Extension;

use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;

/**
* This extension adds common twig function for various upload manager
* bundles and common twig filter image manipulation bundles.
*
* Depending on %admingenerator.form.upload_manager% setting a diffrent
* This extension adds common twig function for various upload manager
* bundles and common twig filter image manipulation bundles.
*
* Depending on %admingenerator.form.upload_manager% setting a diffrent
* upload manager bundle is used.
*
* Depending on %admingenerator.form.image_manipulator% setting a diffrent
*
* Depending on %admingenerator.form.image_manipulator% setting a diffrent
* image manipulation bundle is used.
*
*
* @author Piotr Gołębiewski <[email protected]>
*/
class ImageAssetsExtension extends AbstractExtension
{
protected $container;
protected $uploaderExtension;

public function __construct(ContainerInterface $container)
protected $filterExtension;

public function __construct($uploaderExtension, $filterExtension)
{
$this->container = $container;
$this->uploaderExtension = $uploaderExtension;
$this->filterExtension = $filterExtension;
}

/**
Expand All @@ -48,7 +49,7 @@ public function getFilters()
'image_filter' => new TwigFilter('image_filter', array($this, 'filter')),
);
}

/**
* Gets the browser path for the image and filter to apply.
*
Expand All @@ -57,20 +58,16 @@ public function getFilters()
public function asset($object, $field)
{
$params = func_get_args();

if ('vich_uploader' === $this->getUploadManager()) {
// Note: requires v0.13.0 or higher
$ext = new \Vich\UploaderBundle\Twig\Extension\UploaderExtension(
$this->container->get('vich_uploader.templating.helper.uploader_helper')
);

return call_user_func_array(array($ext, "asset"), $params);

if ($this->uploaderExtension instanceof \Vich\UploaderBundle\Templating\Helper\UploaderHelper
|| $this->uploaderExtension instanceof \Vich\UploaderBundle\Twig\Extension\UploaderExtension) {
return call_user_func_array(array($this->uploaderExtension, "asset"), $params);
}

// In case no upload manager is used we expect object to have
// a special method returning file's path
$getter = "get".Container::Camelize($field)."WebPath";

return $object->$getter();
}

Expand All @@ -83,54 +80,23 @@ public function filter()
{
$params = func_get_args();
$path = $params[0];

if ('liip_imagine' === $this->getImageManipulator()) {
if(class_exists('\Liip\ImagineBundle\Templating\ImagineExtension')) {
$ext = new \Liip\ImagineBundle\Templating\ImagineExtension(
$this->container->get('liip_imagine.cache.manager')
);
} else {
$ext = new \Liip\ImagineBundle\Templating\FilterExtension(
$this->container->get('liip_imagine.cache.manager')
);
}

return call_user_func_array(array($ext, "filter"), $params);

if (($this->filterExtension instanceof \Liip\ImagineBundle\Templating\ImagineExtension)
|| ($this->filterExtension instanceof \Liip\ImagineBundle\Templating\FilterExtension)) {

return call_user_func_array(array($this->filterExtension, "filter"), $params);
}

if ('avalanche_imagine' === $this->getImageManipulator()) {
$ext = new \Avalanche\Bundle\ImagineBundle\Templating\ImagineExtension(
$this->container->get('imagine.cache.path.resolver')
);

return call_user_func_array(array($ext, "applyFilter"), $params);

if ($this->filterExtension instanceof \Avalanche\Bundle\ImagineBundle\Templating\ImagineExtension) {

return call_user_func_array(array($this->filterExtension, "applyFilter"), $params);
}

// In case no image manipulator is used we
// return the unmodified path
return $path;
}

/**
* Get upload manager name
*
* @return string|null Parameter value
*/
public function getUploadManager()
{
return $this->container->getParameter('admingenerator.form.upload_manager');
}

/**
* Get image manipulator name
*
* @return string|null Parameter value
*/
public function getImageManipulator()
{
return $this->container->getParameter('admingenerator.form.image_manipulator');
}

/**
* Returns the name of the extension.
*
Expand Down

0 comments on commit 8e20cab

Please sign in to comment.