Completed
Push — master ( cac9ba...8627fd )
by Michał
17s
created

MainMenuBuilder::configureCatalogSubMenu()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 0 Features 2
Metric Value
c 4
b 0
f 2
dl 0
loc 23
rs 9.0856
cc 1
eloc 16
nc 1
nop 1
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->configureCatalogSubMenu($menu);
32
        $this->configureCustomersSubMenu($menu);
33
        $this->configureMarketingSubMenu($menu);
34
        $this->configureConfigurationSubMenu($menu);
35
36
        $this->eventDispatcher->dispatch(self::EVENT_NAME, new MenuBuilderEvent($this->factory, $menu));
37
38
        return $menu;
39
    }
40
41
    /**
42
     * @param ItemInterface $menu
43
     */
44
    private function configureCatalogSubMenu(ItemInterface $menu)
45
    {
46
        $catalogSubMenu = $menu
47
            ->addChild('catalog')
48
            ->setLabel('sylius.menu.admin.main.catalog.header')
49
        ;
50
51
        $catalogSubMenu
52
            ->addChild('taxons', ['route' => 'sylius_admin_taxon_create'])
53
            ->setLabel('sylius.menu.admin.main.catalog.taxons')
54
            ->setLabelAttribute('icon', 'folder')
55
        ;
56
        $catalogSubMenu
57
            ->addChild('attributes', ['route' => 'sylius_admin_product_attribute_index'])
58
            ->setLabel('sylius.menu.admin.main.catalog.attributes')
59
            ->setLabelAttribute('icon', 'cubes')
60
        ;
61
        $catalogSubMenu
62
            ->addChild('options', ['route' => 'sylius_admin_product_option_index'])
63
            ->setLabel('sylius.menu.admin.main.catalog.options')
64
            ->setLabelAttribute('icon', 'options')
65
        ;
66
    }
67
68
    /**
69
     * @param ItemInterface $menu
70
     */
71
    private function configureCustomersSubMenu(ItemInterface $menu)
72
    {
73
        $customerSubMenu = $menu
74
            ->addChild('customers')
75
            ->setLabel('sylius.menu.admin.main.customers.header')
76
        ;
77
78
        $customerSubMenu
79
            ->addChild('customers', ['route' => 'sylius_admin_customer_index'])
80
            ->setLabel('sylius.menu.admin.main.customers.customers')
81
            ->setLabelAttribute('icon', 'users')
82
        ;
83
    }
84
85
    /**
86
     * @param ItemInterface $menu
87
     */
88
    private function configureMarketingSubMenu(ItemInterface $menu)
89
    {
90
        $marketingSubMenu = $menu
91
            ->addChild('marketing')
92
            ->setLabel('sylius.menu.admin.main.marketing.header')
93
        ;
94
95
        $marketingSubMenu
96
            ->addChild('promotions', ['route' => 'sylius_admin_promotion_index'])
97
            ->setLabel('sylius.menu.admin.main.marketing.promotions')
98
            ->setLabelAttribute('icon', 'in cart')
99
        ;
100
    }
101
102
    /**
103
     * @param ItemInterface $menu
104
     */
105
    private function configureConfigurationSubMenu(ItemInterface $menu)
106
    {
107
        $configurationSubMenu = $menu
108
            ->addChild('configuration')
109
            ->setLabel('sylius.menu.admin.main.configuration.header')
110
        ;
111
112
        $configurationSubMenu
113
            ->addChild('channels', ['route' => 'sylius_admin_channel_index'])
114
            ->setLabel('sylius.menu.admin.main.configuration.channels')
115
            ->setLabelAttribute('icon', 'share alternate')
116
        ;
117
118
        $configurationSubMenu
119
            ->addChild('countries', ['route' => 'sylius_admin_country_index'])
120
            ->setLabel('sylius.menu.admin.main.configuration.countries')
121
            ->setLabelAttribute('icon', 'flag')
122
        ;
123
124
        $configurationSubMenu
125
            ->addChild('zones', ['route' => 'sylius_admin_zone_index'])
126
            ->setLabel('sylius.menu.admin.main.configuration.zones')
127
            ->setLabelAttribute('icon', 'world')
128
        ;
129
130
        $configurationSubMenu
131
            ->addChild('currencies', ['route' => 'sylius_admin_currency_index'])
132
            ->setLabel('sylius.menu.admin.main.configuration.currencies')
133
            ->setLabelAttribute('icon', 'dollar')
134
        ;
135
136
        $configurationSubMenu
137
            ->addChild('locales', ['route' => 'sylius_admin_locale_index'])
138
            ->setLabel('sylius.menu.admin.main.configuration.locales')
139
            ->setLabelAttribute('icon', 'translate')
140
        ;
141
142
        $configurationSubMenu
143
            ->addChild('payment_methods', ['route' => 'sylius_admin_payment_method_index'])
144
            ->setLabel('sylius.menu.admin.main.configuration.payment_methods')
145
            ->setLabelAttribute('icon', 'payment')
146
        ;
147
148
        $configurationSubMenu
149
            ->addChild('shipping_methods', ['route' => 'sylius_admin_shipping_method_index'])
150
            ->setLabel('sylius.menu.admin.main.configuration.shipping_methods')
151
            ->setLabelAttribute('icon', 'shipping')
152
        ;
153
154
        $configurationSubMenu
155
            ->addChild('tax_categories', ['route' => 'sylius_admin_tax_category_index'])
156
            ->setLabel('sylius.menu.admin.main.configuration.tax_categories')
157
            ->setLabelAttribute('icon', 'tags')
158
        ;
159
160
        $configurationSubMenu
161
            ->addChild('tax_rates', ['route' => 'sylius_admin_tax_rate_index'])
162
            ->setLabel('sylius.menu.admin.main.configuration.tax_rates')
163
            ->setLabelAttribute('icon', 'money')
164
        ;
165
166
        $configurationSubMenu
167
            ->addChild('channels', ['route' => 'sylius_admin_channel_index'])
168
            ->setLabel('sylius.menu.admin.main.configuration.channels')
169
            ->setLabelAttribute('icon', 'random')
170
        ;
171
    }
172
}
173