Completed
Push — master ( bd974f...6621ce )
by Laurent
03:12
created

MenuBuilder::buildUserMenu()   B

Complexity

Conditions 3
Paths 4

Size

Total Lines 46
Code Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 46
rs 8.9411
cc 3
eloc 31
nc 4
nop 1
1
<?php
2
/**
3
 * MenuBuilder KnpMenu.
4
 *
5
 * PHP Version 5
6
 *
7
 * @author     Quétier Laurent <[email protected]>
8
 * @copyright  2014 Dev-Int GLSR
9
 * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
10
 *
11
 * @version    since 1.0.0
12
 *
13
 * @link       https://github.com/Dev-Int/glsr
14
 */
15
namespace AppBundle\Menu;
16
17
use Knp\Menu\FactoryInterface;
18
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
19
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
20
21
/**
22
 * class MenuBuilder.
23
 *
24
 * @category   Menu
25
 */
26
class MenuBuilder implements ContainerAwareInterface
27
{
28
    use ContainerAwareTrait;
29
    public function buildOrderMenu(FactoryInterface $factory)
30
    {
31
        $menu = $factory->createItem('root');
32
        $menu->setChildrenAttribute('class', 'nav navbar-nav');
33
34
        $menu->addChild('order', array('label' => 'menu.order'))
35
            ->setExtra('translation_domain', 'messages')
36
            ->setAttribute('dropdown', true)
37
            ->setAttribute('icon', 'fa fa-shopping-cart');
38
39
        $menu['order']->addChild('orders', ['label' => 'title_short', 'route' => 'orders', ])
40
            ->setExtra('translation_domain', 'gs_orders')
41
            ->setAttribute('icon', 'fa fa-shopping-cart');
42
43
        $menu['order']->addChild('deliveries', ['label' => 'title_short', 'route' => 'deliveries', ])
44
            ->setExtra('translation_domain', 'gs_deliveries')
45
            ->setAttribute('icon', 'fa fa-truck');
46
47
        $menu['order']->addChild('invoices', ['label' => 'title_short', 'route' => 'invoices', ])
48
            ->setExtra('translation_domain', 'gs_invoices')
49
            ->setAttribute('icon', 'fa fa-calculator');
50
51
        return $menu;
52
    }
53
54
    public function buildStockMenu(FactoryInterface $factory)
55
    {
56
        $menu = $factory->createItem('root');
57
        $menu->setChildrenAttribute('class', 'nav navbar-nav');
58
59
        $menu->addChild('stock', array('label' => 'menu.stock'))
60
            ->setExtra('translation_domain', 'messages')
61
            ->setAttribute('dropdown', true)
62
            ->setAttribute('icon', 'fa fa-dashboard');
63
64
        $menu['stock']->addChild('inventory', ['label' => 'title_short', 'route' => 'inventory', ])
65
            ->setExtra('translation_domain', 'gs_inventories')
66
            ->setAttribute('icon', 'fa fa-tasks');
67
68
        $menu['stock']->addChild('articles', ['label' => 'menu.articles', 'route' => 'article', ])
69
            ->setExtra('translation_domain', 'gs_articles')
70
            ->setAttribute('icon', 'fa fa-list');
71
72
        return $menu;
73
    }
74
75
    public function buildConfigMenu(FactoryInterface $factory)
76
    {
77
        $menu = $factory->createItem('root');
78
        $menu->setChildrenAttribute('class', 'nav navbar-nav');
79
80
        $menu->addChild('config', array('label' => 'menu.configuration'))
81
            ->setExtra('translation_domain', 'messages')
82
            ->setAttribute('dropdown', true)
83
            ->setAttribute('icon', 'fa fa-cog');
84
85
        $menu['config']->addChild('suppliers', ['label' => 'title', 'route' => 'supplier', ])
86
            ->setExtra('translation_domain', 'gs_suppliers')
87
            ->setAttribute('icon', 'fa fa-barcode');
88
89
        $menu['config']->addChild('article', ['label' => 'title', 'route' => 'article', ])
90
            ->setExtra('translation_domain', 'gs_articles')
91
            ->setAttribute('icon', 'fa fa-shopping-basket');
92
93
        $menu['config']->addChild('company', ['route' => 'company', 'label' => 'gestock.settings.company.title', ])
94
            ->setExtra('translation_domain', 'messages')
95
            ->setAttribute('icon', 'glyphicon glyphicon-tower');
96
97
        $menu['config']->addChild('applcation', ['route' => 'application', 'label' => 'gestock.settings.settings.title', ])
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 123 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
98
            ->setExtra('translation_domain', 'messages')
99
            ->setAttribute('icon', 'glyphicon glyphicon-wrench');
100
101
        $divers = $menu['config']->addChild('divers', ['label' => 'gestock.settings.diverse.title', ])
102
            ->setExtra('translation_domain', 'messages')
103
            ->setAttribute('dropdown', true)
104
            ->setAttribute('class', 'dropdown-submenu')
105
            ->setAttribute('icon', 'glyphicon glyphicon-info-sign');
106
107
        $divers->addChild('familylog', ['route' => 'familylog', 'label' => 'gestock.settings.diverse.familylog', ])
108
            ->setAttribute('icon', 'glyphicon glyphicon-tag');
109
110
        $divers->addChild('zonestorage', ['route' => 'zonestorage', 'label' => 'gestock.settings.diverse.zonestorage', ])
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 121 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
111
            ->setAttribute('icon', 'glyphicon glyphicon-map-marker');
112
113
        $divers->addChild('unitstorage', ['route' => 'unitstorage', 'label' => 'gestock.settings.diverse.unitstorage', ])
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 121 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
114
            ->setAttribute('icon', 'fa fa-cubes');
115
116
        $divers->addChild('tva', ['route' => 'tva', 'label' => 'gestock.settings.diverse.vat', ])
117
            ->setAttribute('icon', 'glyphicon glyphicon-piggy-bank');
118
119
        return $menu;
120
    }
121
122
    public function buildUserMenu(FactoryInterface $factory)
123
    {
124
        $menu = $factory->createItem('root');
125
        $menu->setChildrenAttribute('class', 'nav navbar-nav navbar-right');
126
127
        $context = $this->container->get('security.authorization_checker');
128
        if ($context->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
129
            /*
130
             *  Menu Administration
131
             */
132
            $menu->addChild('entities', ['label' => 'menu.staf'])
133
                ->setExtra('translation_domain', 'messages')
134
                ->setAttribute('dropdown', true)
135
                ->setAttribute('class', 'multi-level')
136
                ->setAttribute('icon', 'glyphicon glyphicon-cog');
137
138
            $menu['entities']->addChild('users', ['route' => 'user', 'label' => 'menu.users', ])
139
                ->setAttribute('icon', 'glyphicon glyphicon-user');
140
141
            $menu['entities']->addChild('groups', ['route' => 'group', 'label' => 'menu.groups', ])
142
                ->setAttribute('icon', 'fa fa-users');
143
        }
144
        /*
145
         *  Menu Profile
146
         */
147
        $context2 = $this->container->get('security.token_storage');
148
        if ($context->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
149
            $menu->addChild('profile', array(
150
                        'label' => $context2->getToken()->getUser()->getUsername()))
151
                ->setAttribute('dropdown', true)
152
                ->setAttribute('icon', 'fa fa-user');
153
            
154
            $menu['profile']->addChild('layout.logout', ['route' => 'fos_user_security_logout', ])
155
                ->setExtra('translation_domain', 'FOSUserBundle')
156
                ->setAttribute('icon', 'fa fa-unlink');
157
        } else {
158
            $menu->addChild('profile', ['label' => 'menu.administration', ])
159
                ->setExtra('translation_domain', 'messages')
160
                ->setAttribute('dropdown', true)
161
                ->setAttribute('icon', 'fa fa-user');
162
        }
163
        $menu['profile']->addChild('menu.other_login', ['route' => 'fos_user_security_login', ])
164
            ->setAttribute('icon', 'fa fa-link');
165
 
166
        return $menu;
167
    }
168
}
169