From 35a82bc0c00481d5afdf9b1c1a1912d809a98b93 Mon Sep 17 00:00:00 2001 From: Olivier Dolbeau Date: Fri, 29 Nov 2019 14:56:51 +0100 Subject: [PATCH] Do not extends extension marked as final --- DependencyInjection/TranslationExtension.php | 2 +- Resources/config/edit_in_place.yml | 6 ++-- Twig/EditInPlaceExtension.php | 33 ++++++++------------ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/DependencyInjection/TranslationExtension.php b/DependencyInjection/TranslationExtension.php index c7a802cc..ec495013 100644 --- a/DependencyInjection/TranslationExtension.php +++ b/DependencyInjection/TranslationExtension.php @@ -190,7 +190,7 @@ private function enableEditInPlace(ContainerBuilder $container, array $config): $def->replaceArgument(1, $activatorRef); $def = $container->getDefinition('php_translation.edit_in_place.extension.trans'); - $def->addMethodCall('setActivator', [$activatorRef]); + $def->replaceArgument(2, $activatorRef); } /** diff --git a/Resources/config/edit_in_place.yml b/Resources/config/edit_in_place.yml index 57690a06..7c3234e8 100644 --- a/Resources/config/edit_in_place.yml +++ b/Resources/config/edit_in_place.yml @@ -26,9 +26,9 @@ services: public: false class: Translation\Bundle\Twig\EditInPlaceExtension arguments: - - '@php_translator.edit_in_place.xtrans_html_translator' - calls: - - [setRequestStack, ['@request_stack']] + - '@twig.extension.trans' + - '@request_stack' + - ~ tags: - { name: 'twig.extension' } diff --git a/Twig/EditInPlaceExtension.php b/Twig/EditInPlaceExtension.php index 5a348615..f86a571e 100644 --- a/Twig/EditInPlaceExtension.php +++ b/Twig/EditInPlaceExtension.php @@ -11,8 +11,10 @@ namespace Translation\Bundle\Twig; +use Symfony\Bridge\Twig\Extension\TranslationExtension; use Symfony\Component\HttpFoundation\RequestStack; use Translation\Bundle\EditInPlace\ActivatorInterface; +use Twig\Extension\AbstractExtension; use Twig\TwigFilter; /** @@ -21,17 +23,18 @@ * * @author Damien Alexandre */ -final class EditInPlaceExtension extends \Symfony\Bridge\Twig\Extension\TranslationExtension +final class EditInPlaceExtension extends AbstractExtension { - /** - * @var ActivatorInterface - */ + private $extension; + private $requestStack; private $activator; - /** - * @var RequestStack - */ - private $requestStack; + public function __construct(TranslationExtension $extension, RequestStack $requestStack, ActivatorInterface $activator) + { + $this->extension = $extension; + $this->requestStack = $requestStack; + $this->activator = $activator; + } /** * {@inheritdoc} @@ -39,8 +42,8 @@ final class EditInPlaceExtension extends \Symfony\Bridge\Twig\Extension\Translat public function getFilters(): array { return [ - new TwigFilter('trans', [$this, 'trans'], ['is_safe_callback' => [$this, 'isSafe']]), - new TwigFilter('transchoice', [$this, 'transchoice'], ['is_safe_callback' => [$this, 'isSafe']]), + new TwigFilter('trans', [$this->extension, 'trans'], ['is_safe_callback' => [$this, 'isSafe']]), + new TwigFilter('transchoice', [$this->extension, 'transchoice'], ['is_safe_callback' => [$this, 'isSafe']]), ]; } @@ -52,16 +55,6 @@ public function isSafe($node): array return $this->activator->checkRequest($this->requestStack->getMasterRequest()) ? ['html'] : []; } - public function setActivator(ActivatorInterface $activator): void - { - $this->activator = $activator; - } - - public function setRequestStack(RequestStack $requestStack): void - { - $this->requestStack = $requestStack; - } - /** * {@inheritdoc} */