diff --git a/DependencyInjection/Compiler/AddProviderCompilerPass.php b/DependencyInjection/Compiler/AddProviderCompilerPass.php index e9533d8d9..3c8fe277a 100644 --- a/DependencyInjection/Compiler/AddProviderCompilerPass.php +++ b/DependencyInjection/Compiler/AddProviderCompilerPass.php @@ -32,14 +32,10 @@ public function process(ContainerBuilder $container) $this->attachArguments($container, $settings); $this->attachProviders($container); + $format = $container->getParameter('sonata.media.admin_format'); + foreach ($container->findTaggedServiceIds('sonata.media.provider') as $id => $attributes) { - $container->getDefinition($id)->addMethodCall('addFormat', array('admin', array( - 'quality' => 90, - 'width' => 200, - 'format' => 'jpg', - 'height' => false, - 'constraint' => true, - ))); + $container->getDefinition($id)->addMethodCall('addFormat', array('admin', $format)); } } diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index d3afbe767..eab8f9ef5 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -34,6 +34,17 @@ public function getConfigTreeBuilder() ->children() ->scalarNode('db_driver')->isRequired()->end() ->scalarNode('default_context')->isRequired()->end() + ->arrayNode('admin_format') + ->info('Configures the thumbnail preview for the admin') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('width')->defaultValue(200)->end() + ->scalarNode('height')->defaultValue(false)->end() + ->scalarNode('quality')->defaultValue(90)->end() + ->scalarNode('format')->defaultValue('jpg')->end() + ->scalarNode('constraint')->defaultValue(true)->end() + ->end() + ->end() ->end() ; diff --git a/DependencyInjection/SonataMediaExtension.php b/DependencyInjection/SonataMediaExtension.php index 0c07602b0..d48893f3c 100644 --- a/DependencyInjection/SonataMediaExtension.php +++ b/DependencyInjection/SonataMediaExtension.php @@ -110,6 +110,8 @@ public function load(array $configs, ContainerBuilder $container) $pool->addMethodCall('addContext', array($name, $settings['providers'], $formats, $settings['download'])); } + $container->setParameter('sonata.media.admin_format', $config['admin_format']); + $strategies = array_unique($strategies); foreach ($strategies as $strategyId) { diff --git a/Resources/doc/reference/advanced_configuration.rst b/Resources/doc/reference/advanced_configuration.rst index 2b25dfebe..a909a5688 100644 --- a/Resources/doc/reference/advanced_configuration.rst +++ b/Resources/doc/reference/advanced_configuration.rst @@ -14,6 +14,7 @@ Full configuration options: category: Application\Sonata\ClassificationBundle\Entity\Category default_context: default + admin_format: { width: 200 , quality: 90, format: 'jpg'} contexts: default: # the default context is mandatory download: diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php new file mode 100644 index 000000000..99da8842c --- /dev/null +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Sonata\MediaBundle\Tests; + +use Sonata\MediaBundle\DependencyInjection\Configuration; +use Symfony\Component\Config\Definition\Processor; + +class ConfigurationTest extends \PHPUnit_Framework_TestCase +{ + public function testAdminFormat() + { + $processor = new Processor(); + + $config = $processor->processConfiguration(new Configuration(), array( + array( + 'db_driver' => 'foo', + 'default_context' => 'default', + ), + )); + + $this->assertNotNull($config['admin_format']); + $this->assertSame(200, $config['admin_format']['width']); + $this->assertSame(false, $config['admin_format']['height']); + $this->assertSame(90, $config['admin_format']['quality']); + $this->assertSame('jpg', $config['admin_format']['format']); + $this->assertSame(true, $config['admin_format']['constraint']); + } +}