1
|
|
|
<?php |
2
|
|
|
|
|
|
|
|
3
|
|
|
namespace Db3v4l\Service; |
4
|
|
|
|
5
|
|
|
use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent; |
|
|
|
|
6
|
|
|
use KevinPapst\AdminLTEBundle\Model\MenuItemModel; |
|
|
|
|
7
|
|
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface; |
|
|
|
|
8
|
|
|
|
9
|
|
|
class MenuBuilderSubscriber implements EventSubscriberInterface |
|
|
|
|
10
|
|
|
{ |
11
|
|
|
public static function getSubscribedEvents(): array |
|
|
|
|
12
|
|
|
{ |
13
|
|
|
return [ |
14
|
|
|
SidebarMenuEvent::class => ['onSetupMenu', 100], |
15
|
|
|
]; |
16
|
|
|
} |
17
|
|
|
|
18
|
|
|
public function onSetupMenu(SidebarMenuEvent $event) |
|
|
|
|
19
|
|
|
{ |
20
|
|
|
$instances = new MenuItemModel('instances', 'DB Instances', 'instance_list', [], 'fas fa-server'); |
21
|
|
|
$adminer = new MenuItemModel('adminer', 'Adminer', '/admin/', [], 'fas fa-toolbox'); |
22
|
|
|
$docs = new MenuItemModel('docs', 'Docs', 'doc_list', [], 'fas fa-book'); |
23
|
|
|
$sources = new MenuItemModel('sources', 'Source code', 'https://github.com/gggeek/db-3v4l', [], 'fab fa-github'); |
24
|
|
|
|
25
|
|
|
$event->addItem($instances); |
26
|
|
|
$event->addItem($adminer); |
27
|
|
|
$event->addItem($docs); |
28
|
|
|
$event->addItem($sources); |
29
|
|
|
|
30
|
|
|
$this->activateByRoute( |
31
|
|
|
$event->getRequest()->get('_route'), |
32
|
|
|
$event->getItems() |
33
|
|
|
); |
34
|
|
|
} |
35
|
|
|
|
36
|
|
|
/** |
|
|
|
|
37
|
|
|
* @param string $route |
|
|
|
|
38
|
|
|
* @param MenuItemModel[] $items |
|
|
|
|
39
|
|
|
*/ |
|
|
|
|
40
|
|
|
protected function activateByRoute($route, $items) |
41
|
|
|
{ |
42
|
|
|
foreach ($items as $item) { |
43
|
|
|
if ($item->hasChildren()) { |
44
|
|
|
$this->activateByRoute($route, $item->getChildren()); |
45
|
|
|
} elseif ($item->getRoute() == $route) { |
46
|
|
|
$item->setIsActive(true); |
47
|
|
|
} |
48
|
|
|
} |
49
|
|
|
} |
50
|
|
|
} |
51
|
|
|
|