AdminMenuListener   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 37
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A addAdminMenuItems() 0 19 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Setono\SyliusSchedulerPlugin\Menu;
6
7
use Knp\Menu\ItemInterface;
8
use Knp\Menu\Util\MenuManipulator;
9
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
10
11
final class AdminMenuListener
12
{
13
    /**
14
     * @var MenuManipulator
15
     */
16
    private $menuManipulator;
17
18
    /**
19
     * @param MenuManipulator $menuManipulator
20
     */
21
    public function __construct(MenuManipulator $menuManipulator)
22
    {
23
        $this->menuManipulator = $menuManipulator;
24
    }
25
26
    /**
27
     * @param MenuBuilderEvent $event
28
     */
29
    public function addAdminMenuItems(MenuBuilderEvent $event): void
30
    {
31
        $menu = $event->getMenu();
32
33
        /** @var ItemInterface $configurationSubmenu */
34
        $configurationSubmenu = $menu->getChild('configuration');
35
36
        $scheduleMenuItem = $configurationSubmenu
37
            ->addChild('setono_sylius_scheduler_schedules', [
38
                'route' => 'setono_sylius_scheduler_admin_schedule_index',
39
            ])
40
            ->setAttribute('type', 'link')
41
            ->setLabel('setono_sylius_scheduler.menu.admin.main.configuration.schedules')
42
            ->setLabelAttributes([
43
                'icon' => 'clone',
44
            ])
45
        ;
46
47
        $this->menuManipulator->moveToFirstPosition($scheduleMenuItem);
48
    }
49
}
50