Completed
Push — master ( a8108c...0038c7 )
by Axel
14:25 queued 08:34
created

ExtensionsInterfaceController::breadcrumbsAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 9
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\ExtensionsModule\Controller;
15
16
use Symfony\Component\HttpFoundation\Request;
17
use Symfony\Component\HttpFoundation\RequestStack;
18
use Symfony\Component\HttpFoundation\Response;
19
use Symfony\Component\Routing\Annotation\Route;
20
use Zikula\Bundle\CoreBundle\Controller\AbstractController;
21
use Zikula\ExtensionsModule\Entity\RepositoryInterface\ExtensionRepositoryInterface;
22
use Zikula\MenuModule\ExtensionMenu\ExtensionMenuCollector;
23
use Zikula\ThemeModule\Engine\Asset;
24
25
/**
26
 * @Route("/extensionsinterface")
27
 */
28
class ExtensionsInterfaceController extends AbstractController
29
{
30
    /**
31
     * @Route("/header")
32
     *
33
     * Module header
34
     */
35
    public function headerAction(
36
        RequestStack $requestStack,
37
        ExtensionRepositoryInterface $extensionRepository,
38
        Asset $assetHelper
39
    ): Response {
40
        $currentRequest = $requestStack->getCurrentRequest();
41
        $caller = $requestStack->getMasterRequest()->attributes->all();
42
        $caller['info'] = $extensionRepository->get($caller['_zkModule']);
43
44
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/header.html.twig', [
45
            'caller' => $caller,
46
            'title' => '' !== $currentRequest->attributes->get('title') ? $currentRequest->attributes->get('title') : $caller['info']['displayname'],
47
            'titlelink' => '' !== $currentRequest->attributes->get('titlelink') ? $currentRequest->attributes->get('titlelink') : false,
48
            'setpagetitle' => true === $currentRequest->attributes->get('setpagetitle') ? $currentRequest->attributes->get('setpagetitle') : false,
49
            'insertflashes' => true === $currentRequest->attributes->get('insertflashes') ? $currentRequest->attributes->get('insertflashes') : false,
50
            'menufirst' => true === $currentRequest->attributes->get('menufirst') ? $currentRequest->attributes->get('menufirst') : false,
51
            'type' => 'admin' === $currentRequest->attributes->get('type') ? $currentRequest->attributes->get('type') : 'user',
52
        ]);
53
    }
54
55
    /**
56
     * @Route("/footer")
57
     *
58
     * Module footer
59
     */
60
    public function footerAction(RequestStack $requestStack): Response
61
    {
62
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/footer.html.twig', [
63
            'caller' => $requestStack->getMasterRequest()->attributes->all()
64
        ]);
65
    }
66
67
    /**
68
     * @Route("/breadcrumbs", methods = {"GET"})
69
     *
70
     * Admin breadcrumbs
71
     */
72
    public function breadcrumbsAction(
73
        RequestStack $requestStack,
74
        ExtensionRepositoryInterface $extensionRepository
75
    ): Response {
76
        $caller = $requestStack->getMasterRequest()->attributes->all();
77
        $caller['info'] = $extensionRepository->get($caller['_zkModule']);
78
79
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/breadcrumbs.html.twig', [
80
            'caller' => $caller
81
        ]);
82
    }
83
84
    /**
85
     * @Route("/links")
86
     *
87
     * Open the admin container
88
     */
89
    public function linksAction(
90
        RequestStack $requestStack,
91
        ExtensionRepositoryInterface $extensionRepository,
92
        ExtensionMenuCollector $extensionMenuCollector
93
    ): Response {
94
        /** @var Request $masterRequest */
95
        $masterRequest = $requestStack->getMasterRequest();
96
        /** @var Request $currentRequest */
97
        $currentRequest = $requestStack->getCurrentRequest();
98
        $caller = $masterRequest->attributes->all();
99
        $caller['info'] = $extensionRepository->get($caller['_zkModule']);
100
        // your own links array
101
        $links = '' !== $currentRequest->attributes->get('links') ? $currentRequest->attributes->get('links') : '';
102
        // you can pass module name you want to get links for but
103
        $moduleName = '' !== $currentRequest->attributes->get('modname') ? $currentRequest->attributes->get('modname') : $caller['_zkModule'];
104
105
        // no own links array
106
        if (empty($links)) {
107
            // define type - default
108
            $linksType = 'user';
109
            // detect from masterRequest
110
            $linksType = '' !== $masterRequest->attributes->get('type') ? $masterRequest->attributes->get('type') : $linksType;
111
            // passed to currentRequest most important
112
            $linksType = '' !== $currentRequest->attributes->get('type') ? $currentRequest->attributes->get('type') : $linksType;
113
            // get the menu links
114
            $extensionMenu = $extensionMenuCollector->get($moduleName, $linksType);
115
            if (isset($extensionMenu)) {
116
                $extensionMenu->setChildrenAttribute('class', 'nav nav-modulelinks');
117
            }
118
        }
119
120
        // menu css
121
        $menu_css = [
122
            'menuId' => $currentRequest->attributes->get('menuid', ''),
123
            'menuClass' => $currentRequest->attributes->get('menuclass', ''),
124
            'menuItemClass' => $currentRequest->attributes->get('itemclass', ''),
125
            'menuFirstItemClass' => $currentRequest->attributes->get('first', ''),
126
            'menuLastItemClass' => $currentRequest->attributes->get('last', '')
127
        ];
128
129
        $template = '' !== $currentRequest->attributes->get('template')
130
            ? $currentRequest->attributes->get('template')
131
            : '@ZikulaExtensionsModule/ExtensionsInterface/links.html.twig';
132
133
        return $this->render($template, [
134
            'caller' => $caller,
135
            'menu_css' => $menu_css,
136
            'extensionMenu' => $extensionMenu,
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $extensionMenu does not seem to be defined for all execution paths leading up to this point.
Loading history...
137
            'current_path' => $masterRequest->getPathInfo()
138
        ]);
139
    }
140
}
141