Completed
Push — master ( caeb59...e7b0db )
by Axel
05:20
created

ExtensionsInterfaceController::footerAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 4
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 - 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 header(
36
        RequestStack $requestStack,
37
        ExtensionRepositoryInterface $extensionRepository,
38
        Asset $assetHelper
39
    ): Response {
40
        $currentRequest = $requestStack->getCurrentRequest();
41
        $caller = $requestStack->getMasterRequest()->attributes->all();
42
        $caller['info'] = !empty($caller['_zkModule']) ? $extensionRepository->get($caller['_zkModule']) : [];
43
44
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/header.html.twig', [
45
            'caller' => $caller,
46
            'title' => '' !== $currentRequest->attributes->get('title')
47
                ? $currentRequest->attributes->get('title')
48
                : ($caller['info']['displayname'] ?? ''),
49
            'titlelink' => '' !== $currentRequest->attributes->get('titlelink') ? $currentRequest->attributes->get('titlelink') : false,
50
            'setpagetitle' => true === $currentRequest->attributes->get('setpagetitle') ? $currentRequest->attributes->get('setpagetitle') : false,
51
            'insertflashes' => true === $currentRequest->attributes->get('insertflashes') ? $currentRequest->attributes->get('insertflashes') : false,
52
            'menufirst' => true === $currentRequest->attributes->get('menufirst') ? $currentRequest->attributes->get('menufirst') : false,
53
            'type' => 'admin' === $currentRequest->attributes->get('type') ? $currentRequest->attributes->get('type') : 'user',
54
        ]);
55
    }
56
57
    /**
58
     * @Route("/footer")
59
     *
60
     * Module footer
61
     */
62
    public function footer(RequestStack $requestStack): Response
63
    {
64
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/footer.html.twig', [
65
            'caller' => $requestStack->getMasterRequest()->attributes->all()
66
        ]);
67
    }
68
69
    /**
70
     * @Route("/breadcrumbs", methods = {"GET"})
71
     *
72
     * Admin breadcrumbs
73
     */
74
    public function breadcrumbs(
75
        RequestStack $requestStack,
76
        ExtensionRepositoryInterface $extensionRepository
77
    ): Response {
78
        $caller = $requestStack->getMasterRequest()->attributes->all();
79
        $caller['info'] = $extensionRepository->get($caller['_zkModule']);
80
81
        return $this->render('@ZikulaExtensionsModule/ExtensionsInterface/breadcrumbs.html.twig', [
82
            'caller' => $caller
83
        ]);
84
    }
85
86
    /**
87
     * @Route("/links")
88
     *
89
     * Open the admin container
90
     */
91
    public function links(
92
        RequestStack $requestStack,
93
        ExtensionRepositoryInterface $extensionRepository,
94
        ExtensionMenuCollector $extensionMenuCollector
95
    ): Response {
96
        /** @var Request $masterRequest */
97
        $masterRequest = $requestStack->getMasterRequest();
98
        /** @var Request $currentRequest */
99
        $currentRequest = $requestStack->getCurrentRequest();
100
        $caller = $masterRequest->attributes->all();
101
        $caller['info'] = !empty($caller['_zkModule']) ? $extensionRepository->get($caller['_zkModule']) : [];
102
        // your own links array
103
        $links = '' !== $currentRequest->attributes->get('links') ? $currentRequest->attributes->get('links') : '';
104
        // you can pass module name you want to get links for
105
        $moduleName = '' !== $currentRequest->attributes->get('modname')
106
            ? $currentRequest->attributes->get('modname')
107
            : ($caller['_zkModule'] ?? '');
108
109
        // no own links array
110
        if (empty($links)) {
111
            // define type - default
112
            $linksType = 'user';
113
            // detect from masterRequest
114
            $linksType = '' !== $masterRequest->attributes->get('type') ? $masterRequest->attributes->get('type') : $linksType;
115
            // passed to currentRequest most important
116
            $linksType = '' !== $currentRequest->attributes->get('type') ? $currentRequest->attributes->get('type') : $linksType;
117
            // get the menu links
118
            $extensionMenu = $extensionMenuCollector->get($moduleName, $linksType);
119
            if (isset($extensionMenu)) {
120
                $extensionMenu->setChildrenAttribute('class', 'nav nav-modulelinks');
121
            }
122
        }
123
124
        // menu css
125
        $menu_css = [
126
            'menuId' => $currentRequest->attributes->get('menuid', ''),
127
            'menuClass' => $currentRequest->attributes->get('menuclass', ''),
128
            'menuItemClass' => $currentRequest->attributes->get('itemclass', ''),
129
            'menuFirstItemClass' => $currentRequest->attributes->get('first', ''),
130
            'menuLastItemClass' => $currentRequest->attributes->get('last', '')
131
        ];
132
133
        $template = '' !== $currentRequest->attributes->get('template')
134
            ? $currentRequest->attributes->get('template')
135
            : '@ZikulaExtensionsModule/ExtensionsInterface/links.html.twig';
136
137
        return $this->render($template, [
138
            'caller' => $caller,
139
            'menu_css' => $menu_css,
140
            '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...
141
            'current_path' => $masterRequest->getPathInfo()
142
        ]);
143
    }
144
}
145