Completed
Push — master ( da2f6e...d3b8cb )
by Kamil
20:06
created

MainMenuBuilder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 3
lcom 1
cbo 5
dl 0
loc 51
rs 10
c 2
b 0
f 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createMenu() 0 10 1
B addConfigurationMenu() 0 29 2
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Bundle\AdminBundle\Menu;
13
14
use Knp\Menu\ItemInterface;
15
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
16
17
/**
18
 * @author Paweł Jędrzejewski <[email protected]>
19
 */
20
final class MainMenuBuilder extends AbstractAdminMenuBuilder
21
{
22
    const EVENT_NAME = 'sylius.menu.admin.main';
23
24
    /**
25
     * @return ItemInterface
26
     */
27
    public function createMenu()
28
    {
29
        $menu = $this->factory->createItem('root');
30
31
        $this->addConfigurationMenu($menu);
32
33
        $this->eventDispatcher->dispatch(self::EVENT_NAME, new MenuBuilderEvent($this->factory, $menu));
34
35
        return $menu;
36
    }
37
38
    /**
39
     * @param ItemInterface $menu
40
     */
41
    private function addConfigurationMenu(ItemInterface $menu)
42
    {
43
        $child = $menu
44
            ->addChild('configuration')
45
            ->setLabel('sylius.menu.admin.main.configuration.header')
46
        ;
47
48
        $child
49
            ->addChild('tax_categories', ['route' => 'sylius_admin_tax_category_index'])
50
            ->setLabel('sylius.menu.admin.main.configuration.tax_categories')
51
            ->setLabelAttribute('icon', 'tags')
52
        ;
53
54
        $child
55
            ->addChild('countries', ['route' => 'sylius_admin_country_index'])
56
            ->setLabel('sylius.menu.admin.main.configuration.countries')
57
            ->setLabelAttribute('icon', 'flag')
58
        ;
59
60
        $child
61
            ->addChild('locale', ['route' => 'sylius_admin_locale_index'])
62
            ->setLabel('sylius.menu.admin.main.configuration.locales')
63
            ->setLabelAttribute('icon', 'translate')
64
        ;
65
66
        if (!$child->hasChildren()) {
67
            $menu->removeChild('configuration');
68
        }
69
    }
70
}
71