/** * @param Request $request * @param integer $movement * * @return RedirectResponse */ protected function move(Request $request, $movement) { $configuration = $this->requestConfigurationFactory->create($this->metadata, $request); $resource = $this->findOr404($configuration); $position = $configuration->getSortablePosition(); $accessor = PropertyAccess::createPropertyAccessor(); $accessor->setValue($resource, $position, $accessor->getValue($resource, $position) + $movement); if (!$configuration->isHtmlRequest()) { return $this->viewHandler->handle($configuration, View::create($resource, 204)); } $this->flashHelper->addSuccessFlash($configuration, 'move', $resource); return $this->redirectHandler->redirectToIndex($configuration, $resource); }
/** * @param Request $request * @param int $movement * * @return RedirectResponse */ protected function move(Request $request, $movement) { $configuration = $this->requestConfigurationFactory->create($this->metadata, $request); $resource = $this->findOr404($configuration); $position = $configuration->getSortablePosition(); $accessor = PropertyAccess::createPropertyAccessor(); $accessor->setValue($resource, $position, $accessor->getValue($resource, $position) + $movement); $this->eventDispatcher->dispatchPreEvent(ResourceActions::UPDATE, $configuration, $resource); $this->manager->flush(); $this->eventDispatcher->dispatchPostEvent(ResourceActions::UPDATE, $configuration, $resource); if (!$configuration->isHtmlRequest()) { return $this->viewHandler->handle($configuration, View::create(null, Response::HTTP_NO_CONTENT)); } $this->flashHelper->addSuccessFlash($configuration, 'move', $resource); return $this->redirectHandler->redirectToIndex($configuration, $resource); }
/** * @param Request $request * * @return Response */ public function deleteAction(Request $request) { $configuration = $this->requestConfigurationFactory->create($this->metadata, $request); $this->isGrantedOr403($configuration, ResourceActions::DELETE); $resource = $this->findOr404($configuration); $event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::DELETE, $configuration, $resource); if ($event->isStopped() && !$configuration->isHtmlRequest()) { throw new HttpException($event->getErrorCode(), $event->getMessage()); } if ($event->isStopped()) { $this->flashHelper->addFlashFromEvent($configuration, $event); return $this->redirectHandler->redirectToIndex($configuration, $resource); } $this->repository->remove($resource); $this->eventDispatcher->dispatchPostEvent(ResourceActions::DELETE, $configuration, $resource); if (!$configuration->isHtmlRequest()) { return $this->viewHandler->handle($configuration, View::create(null, Response::HTTP_NO_CONTENT)); } $this->flashHelper->addSuccessFlash($configuration, ResourceActions::DELETE, $resource); return $this->redirectHandler->redirectToIndex($configuration, $resource); }
function it_does_not_delete_a_resource_and_redirects_to_index_for_html_requests_stopped_via_event(MetadataInterface $metadata, RequestConfigurationFactoryInterface $requestConfigurationFactory, RequestConfiguration $configuration, AuthorizationCheckerInterface $authorizationChecker, RepositoryInterface $repository, SingleResourceProviderInterface $singleResourceProvider, ResourceInterface $resource, RedirectHandlerInterface $redirectHandler, FlashHelperInterface $flashHelper, EventDispatcherInterface $eventDispatcher, ResourceControllerEvent $event, Request $request, Response $redirectResponse) { $metadata->getApplicationName()->willReturn('sylius'); $metadata->getName()->willReturn('product'); $requestConfigurationFactory->create($metadata, $request)->willReturn($configuration); $configuration->hasPermission()->willReturn(true); $configuration->getPermission(ResourceActions::DELETE)->willReturn('sylius.product.delete'); $authorizationChecker->isGranted($configuration, 'sylius.product.delete')->willReturn(true); $singleResourceProvider->get($configuration, $repository)->willReturn($resource); $configuration->isHtmlRequest()->willReturn(true); $eventDispatcher->dispatchPreEvent(ResourceActions::DELETE, $configuration, $resource)->willReturn($event); $event->isStopped()->willReturn(true); $repository->remove($resource)->shouldNotBeCalled(); $eventDispatcher->dispatchPostEvent(ResourceActions::DELETE, $configuration, $resource)->shouldNotBeCalled(); $flashHelper->addSuccessFlash($configuration, ResourceActions::DELETE, $resource)->shouldNotBeCalled(); $flashHelper->addFlashFromEvent($configuration, $event)->shouldBeCalled(); $redirectHandler->redirectToIndex($configuration, $resource)->willReturn($redirectResponse); $this->deleteAction($request)->shouldReturn($redirectResponse); }