From 3711d931ca670268dc41247ddfeb859feb1bd960 Mon Sep 17 00:00:00 2001 From: Damian Zabawa Date: Tue, 29 Oct 2019 14:41:55 +0100 Subject: [PATCH] EZP-31086: Redirect based on router, not url alias https://jira.ez.no/browse/EZP-31086 --- bundle/Resources/config/services.yml | 4 - lib/Form/Processor/ContentFormProcessor.php | 7 +- .../Processor/SystemUrlRedirectProcessor.php | 108 ------------------ 3 files changed, 3 insertions(+), 116 deletions(-) delete mode 100644 lib/Form/Processor/SystemUrlRedirectProcessor.php diff --git a/bundle/Resources/config/services.yml b/bundle/Resources/config/services.yml index 9b73b9983..a5c06fe3c 100644 --- a/bundle/Resources/config/services.yml +++ b/bundle/Resources/config/services.yml @@ -252,10 +252,6 @@ services: tags: - { name: kernel.event_subscriber } - EzSystems\RepositoryForms\Form\Processor\SystemUrlRedirectProcessor: - autowire: true - autoconfigure: true - # Controllers ezrepoforms.controller.content_edit: class: "%ezrepoforms.controller.content_edit.class%" diff --git a/lib/Form/Processor/ContentFormProcessor.php b/lib/Form/Processor/ContentFormProcessor.php index d90363c5f..5c26e86e5 100644 --- a/lib/Form/Processor/ContentFormProcessor.php +++ b/lib/Form/Processor/ContentFormProcessor.php @@ -41,7 +41,6 @@ class ContentFormProcessor implements EventSubscriberInterface * @param \eZ\Publish\API\Repository\ContentService $contentService * @param \eZ\Publish\API\Repository\LocationService $locationService * @param \Symfony\Component\Routing\RouterInterface $router - * @param \eZ\Publish\API\Repository\URLAliasService $urlAliasService */ public function __construct( ContentService $contentService, @@ -125,7 +124,7 @@ public function processPublish(FormActionEvent $event) $event->setPayload('is_new', $draft->contentInfo->isDraft()); $redirectUrl = $form['redirectUrlAfterPublish']->getData() ?: $this->router->generate( - '_ezpublishLocation', [ + 'ez_urlalias', [ 'locationId' => $content->contentInfo->mainLocationId, ] ); @@ -146,7 +145,7 @@ public function processCancel(FormActionEvent $event) if ($data->isNew()) { $response = new RedirectResponse($this->router->generate( - '_ezpublishLocation', + 'ez_urlalias', ['locationId' => $data->getLocationStructs()[0]->parentLocationId] )); $event->setResponse($response); @@ -171,7 +170,7 @@ public function processCancel(FormActionEvent $event) } $url = $this->router->generate( - '_ezpublishLocation', + 'ez_urlalias', ['locationId' => $redirectionLocationId], UrlGeneratorInterface::ABSOLUTE_URL ); diff --git a/lib/Form/Processor/SystemUrlRedirectProcessor.php b/lib/Form/Processor/SystemUrlRedirectProcessor.php deleted file mode 100644 index 9446beb7c..000000000 --- a/lib/Form/Processor/SystemUrlRedirectProcessor.php +++ /dev/null @@ -1,108 +0,0 @@ -router = $router; - $this->urlAliasService = $urlAliasService; - $this->locationService = $locationService; - } - - /** - * @return array - */ - public static function getSubscribedEvents(): array - { - return [ - RepositoryFormEvents::CONTENT_PUBLISH => ['processRedirectAfterPublish', 2], - RepositoryFormEvents::CONTENT_CANCEL => ['processRedirectAfterCancel', 2], - ]; - } - - /** - * @param \EzSystems\RepositoryForms\Event\FormActionEvent $event - * - * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException - * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException - */ - public function processRedirectAfterPublish(FormActionEvent $event): void - { - if ($event->getForm()['redirectUrlAfterPublish']->getData()) { - return; - } - - $this->resolveSystemUrlRedirect($event); - } - - /** - * @param \EzSystems\RepositoryForms\Event\FormActionEvent $event - * - * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException - * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException - */ - public function processRedirectAfterCancel(FormActionEvent $event): void - { - $this->resolveSystemUrlRedirect($event); - } - - /** - * @param \EzSystems\RepositoryForms\Event\FormActionEvent $event - * - * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException - * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException - */ - private function resolveSystemUrlRedirect(FormActionEvent $event): void - { - /** @var \Symfony\Component\HttpFoundation\RedirectResponse $response */ - $response = $event->getResponse(); - - if (!$response instanceof RedirectResponse) { - return; - } - - $params = $this->router->match($response->getTargetUrl()); - - if (!in_array('locationId', $params)) { - return; - } - - $location = $this->locationService->loadLocation($params['locationId']); - - $event->setResponse(new RedirectResponse($this->urlAliasService->reverseLookup($location)->path)); - } -}