Completed
Push — master ( 1ecbe4...2ec63c )
by Kamil
21:52
created

MainMenuBuilder::configureCatalogSubMenu()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

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