Completed
Push — symfony3-fqcn ( 04e8c2...ea8d6b )
by Kamil
18:56
created

MainMenuBuilder::addConfigurationSubMenu()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 79
Code Lines 52

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 79
rs 8.8701
c 0
b 0
f 0
cc 1
eloc 52
nc 1
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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->addCatalogSubMenu($menu);
32
        $this->addSalesSubMenu($menu);
33
        $this->addCustomersSubMenu($menu);
34
        $this->addMarketingSubMenu($menu);
35
        $this->addConfigurationSubMenu($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 addCatalogSubMenu(ItemInterface $menu)
46
    {
47
        $catalog = $menu
48
            ->addChild('catalog')
49
            ->setLabel('sylius.menu.admin.main.catalog.header')
50
        ;
51
52
        $catalog
53
            ->addChild('taxons', ['route' => 'sylius_admin_taxon_create'])
54
            ->setLabel('sylius.menu.admin.main.catalog.taxons')
55
            ->setLabelAttribute('icon', 'folder')
56
        ;
57
58
        $catalog
59
            ->addChild('products', ['route' => 'sylius_admin_product_index'])
60
            ->setLabel('sylius.menu.admin.main.catalog.products')
61
            ->setLabelAttribute('icon', 'cube')
62
        ;
63
64
        $catalog
65
            ->addChild('attributes', ['route' => 'sylius_admin_product_attribute_index'])
66
            ->setLabel('sylius.menu.admin.main.catalog.attributes')
67
            ->setLabelAttribute('icon', 'cubes')
68
        ;
69
70
        $catalog
71
            ->addChild('options', ['route' => 'sylius_admin_product_option_index'])
72
            ->setLabel('sylius.menu.admin.main.catalog.options')
73
            ->setLabelAttribute('icon', 'options')
74
        ;
75
76
        $catalog
77
            ->addChild('association_types', ['route' => 'sylius_admin_product_association_type_index'])
78
            ->setLabel('sylius.menu.admin.main.catalog.association_types')
79
            ->setLabelAttribute('icon', 'tasks')
80
        ;
81
    }
82
83
    /**
84
     * @param ItemInterface $menu
85
     */
86
    private function addCustomersSubMenu(ItemInterface $menu)
87
    {
88
        $customers = $menu
89
            ->addChild('customers')
90
            ->setLabel('sylius.menu.admin.main.customers.header')
91
        ;
92
93
        $customers
94
            ->addChild('customers', ['route' => 'sylius_admin_customer_index'])
95
            ->setLabel('sylius.menu.admin.main.customers.customers')
96
            ->setLabelAttribute('icon', 'users')
97
        ;
98
99
        $customers
100
            ->addChild('groups', ['route' => 'sylius_admin_customer_group_index'])
101
            ->setLabel('sylius.menu.admin.main.customers.groups')
102
            ->setLabelAttribute('icon', 'archive')
103
        ;
104
    }
105
106
    /**
107
     * @param ItemInterface $menu
108
     */
109
    private function addMarketingSubMenu(ItemInterface $menu)
110
    {
111
        $marketing = $menu
112
            ->addChild('marketing')
113
            ->setLabel('sylius.menu.admin.main.marketing.header')
114
        ;
115
116
        $marketing
117
            ->addChild('promotions', ['route' => 'sylius_admin_promotion_index'])
118
            ->setLabel('sylius.menu.admin.main.marketing.promotions')
119
            ->setLabelAttribute('icon', 'in cart')
120
        ;
121
122
        $marketing
123
            ->addChild('product_reviews', ['route' => 'sylius_admin_product_review_index'])
124
            ->setLabel('sylius.menu.admin.main.marketing.product_reviews')
125
            ->setLabelAttribute('icon', 'newspaper')
126
        ;
127
    }
128
129
    /**
130
     * @param ItemInterface $menu
131
     */
132
    private function addSalesSubMenu(ItemInterface $menu)
133
    {
134
        $sales = $menu
135
            ->addChild('sales')
136
            ->setLabel('sylius.menu.admin.main.sales.header')
137
        ;
138
139
        $sales
140
            ->addChild('orders', ['route' => 'sylius_admin_order_index'])
141
            ->setLabel('sylius.menu.admin.main.sales.orders')
142
            ->setLabelAttribute('icon', 'cart')
143
        ;
144
    }
145
146
    /**
147
     * @param ItemInterface $menu
148
     */
149
    private function addConfigurationSubMenu(ItemInterface $menu)
150
    {
151
        $configuration = $menu
152
            ->addChild('configuration')
153
            ->setLabel('sylius.menu.admin.main.configuration.header')
154
        ;
155
156
        $configuration
157
            ->addChild('channels', ['route' => 'sylius_admin_channel_index'])
158
            ->setLabel('sylius.menu.admin.main.configuration.channels')
159
            ->setLabelAttribute('icon', 'share alternate')
160
        ;
161
162
        $configuration
163
            ->addChild('countries', ['route' => 'sylius_admin_country_index'])
164
            ->setLabel('sylius.menu.admin.main.configuration.countries')
165
            ->setLabelAttribute('icon', 'flag')
166
        ;
167
168
        $configuration
169
            ->addChild('zones', ['route' => 'sylius_admin_zone_index'])
170
            ->setLabel('sylius.menu.admin.main.configuration.zones')
171
            ->setLabelAttribute('icon', 'world')
172
        ;
173
174
        $configuration
175
            ->addChild('currencies', ['route' => 'sylius_admin_currency_index'])
176
            ->setLabel('sylius.menu.admin.main.configuration.currencies')
177
            ->setLabelAttribute('icon', 'dollar')
178
        ;
179
180
        $configuration
181
            ->addChild('exchange_rates', ['route' => 'sylius_admin_exchange_rate_index'])
182
            ->setLabel('sylius.menu.admin.main.configuration.exchange_rates')
183
            ->setLabelAttribute('icon', 'sliders')
184
        ;
185
186
        $configuration
187
            ->addChild('locales', ['route' => 'sylius_admin_locale_index'])
188
            ->setLabel('sylius.menu.admin.main.configuration.locales')
189
            ->setLabelAttribute('icon', 'translate')
190
        ;
191
192
        $configuration
193
            ->addChild('payment_methods', ['route' => 'sylius_admin_payment_method_index'])
194
            ->setLabel('sylius.menu.admin.main.configuration.payment_methods')
195
            ->setLabelAttribute('icon', 'payment')
196
        ;
197
198
        $configuration
199
            ->addChild('shipping_methods', ['route' => 'sylius_admin_shipping_method_index'])
200
            ->setLabel('sylius.menu.admin.main.configuration.shipping_methods')
201
            ->setLabelAttribute('icon', 'shipping')
202
        ;
203
204
        $configuration
205
            ->addChild('tax_categories', ['route' => 'sylius_admin_tax_category_index'])
206
            ->setLabel('sylius.menu.admin.main.configuration.tax_categories')
207
            ->setLabelAttribute('icon', 'tags')
208
        ;
209
210
        $configuration
211
            ->addChild('tax_rates', ['route' => 'sylius_admin_tax_rate_index'])
212
            ->setLabel('sylius.menu.admin.main.configuration.tax_rates')
213
            ->setLabelAttribute('icon', 'money')
214
        ;
215
216
        $configuration
217
            ->addChild('channels', ['route' => 'sylius_admin_channel_index'])
218
            ->setLabel('sylius.menu.admin.main.configuration.channels')
219
            ->setLabelAttribute('icon', 'random')
220
        ;
221
222
        $configuration
223
            ->addChild('admin_users', ['route' => 'sylius_admin_admin_user_index'])
224
            ->setLabel('sylius.menu.admin.main.configuration.admin_users')
225
            ->setLabelAttribute('icon', 'lock')
226
        ;
227
    }
228
}
229