Completed
Push — master ( d81c19...f57266 )
by Kamil
20s
created

Sylius/Bundle/AdminBundle/Menu/MainMenuBuilder.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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
declare(strict_types=1);
13
14
namespace Sylius\Bundle\AdminBundle\Menu;
15
16
use Knp\Menu\FactoryInterface;
17
use Knp\Menu\ItemInterface;
18
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
19
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
20
21
final class MainMenuBuilder
22
{
23
    public const EVENT_NAME = 'sylius.menu.admin.main';
24
25
    /**
26
     * @var FactoryInterface
27
     */
28
    private $factory;
29
30
    /**
31
     * @var EventDispatcherInterface
32
     */
33
    private $eventDispatcher;
34
35
    /**
36
     * @param FactoryInterface $factory
37
     * @param EventDispatcherInterface $eventDispatcher
38
     */
39
    public function __construct(FactoryInterface $factory, EventDispatcherInterface $eventDispatcher)
40
    {
41
        $this->factory = $factory;
42
        $this->eventDispatcher = $eventDispatcher;
43
    }
44
45
    /**
46
     * @param array $options
47
     *
48
     * @return ItemInterface
49
     */
50
    public function createMenu(array $options): ItemInterface
0 ignored issues
show
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

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