Completed
Pull Request — master (#169)
by Mikołaj
05:25
created

PageController   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 0
dl 0
loc 67
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A renderLinkAction() 0 34 3
A previewAction() 0 29 1
1
<?php
2
3
/*
4
 * This file has been created by developers from BitBag.
5
 * Feel free to contact us once you face any issues or want to start
6
 * another great project.
7
 * You can find more information about us on https://bitbag.shop and write us
8
 * an email on [email protected].
9
 */
10
11
declare(strict_types=1);
12
13
namespace BitBag\SyliusCmsPlugin\Controller;
14
15
use BitBag\SyliusCmsPlugin\Entity\PageContentInterface;
16
use FOS\RestBundle\View\View;
17
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
18
use Sylius\Component\Resource\ResourceActions;
19
use Symfony\Component\HttpFoundation\Request;
20
use Symfony\Component\HttpFoundation\Response;
21
22
final class PageController extends ResourceController
23
{
24
    public function renderLinkAction(Request $request): Response
25
    {
26
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
27
28
        $this->isGrantedOr403($configuration, ResourceActions::SHOW);
29
30
        $code = $request->get('code');
31
        $pageResourceResolver = $this->get('bitbag_sylius_cms_plugin.resolver.page_resource');
32
33
        $page = $pageResourceResolver->findOrLog($code);
34
35
        if (null === $page) {
36
            return new Response();
37
        }
38
39
        $this->eventDispatcher->dispatch(ResourceActions::SHOW, $configuration, $page);
40
41
        $view = View::create($page);
42
43
        if ($configuration->isHtmlRequest()) {
44
            $view
45
                ->setTemplate($configuration->getTemplate(ResourceActions::SHOW . '.html'))
46
                ->setTemplateVar($this->metadata->getName())
47
                ->setData([
48
                    'configuration' => $configuration,
49
                    'metadata' => $this->metadata,
50
                    'resource' => $page,
51
                    $this->metadata->getName() => $page,
52
                ])
53
            ;
54
        }
55
56
        return $this->viewHandler->handle($configuration, $view);
57
    }
58
59
    public function previewAction(Request $request): Response
60
    {
61
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
62
63
        $this->isGrantedOr403($configuration, ResourceActions::CREATE);
64
        $newResource = $this->newResourceFactory->create($configuration, $this->factory);
65
66
        $form = $this->resourceFormFactory->create($configuration, $newResource);
67
68
        $form->handleRequest($request);
69
70
        /** @var PageContentInterface $newResource */
71
        $newResource = $form->getData();
72
73
        $defaultLocale = $this->getParameter('locale');
74
75
        $newResource->setFallbackLocale($request->get('_locale', $defaultLocale));
76
        $newResource->setCurrentLocale($request->get('_locale', $defaultLocale));
77
78
        $view = View::create()
79
            ->setData([
80
                'resource' => $newResource,
81
                $this->metadata->getName() => $newResource,
82
            ])
83
            ->setTemplate($configuration->getTemplate(ResourceActions::CREATE . '.html'))
84
        ;
85
86
        return $this->viewHandler->handle($configuration, $view);
87
    }
88
}
89