Completed
Push — sf2.7 ( 9d05cb...0eab0c )
by Laurent
03:26
created

MenuBuilder::buildMainMenu()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 2
Metric Value
c 3
b 0
f 2
dl 0
loc 26
rs 8.8571
cc 1
eloc 18
nc 1
nop 2
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\ContainerAware;
19
20
/**
21
 * class MenuBuilder.
22
 *
23
 * @category   Menu
24
 */
25
class MenuBuilder extends ContainerAware
26
{
27
    public function buildMainMenu(FactoryInterface $factory, array $options)
0 ignored issues
show
Unused Code introduced by
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...
28
    {
29
        $menu = $factory->createItem('root');
30
        $menu->setChildrenAttribute('class', 'nav navbar-nav');
31
        
32
        $menu->addChild('manage', array('label' => 'menu.management'))
33
            ->setExtra('translation_domain', 'messages')
34
            ->setAttribute('dropdown', true)
35
            ->setAttribute('icon', 'fa fa-dashboard');
36
        
37
        $menu['manage']->addChild('suppliers', array(
38
            'label' => 'title',
39
            'route' => 'suppliers'
40
        ))
41
            ->setExtra('translation_domain', 'gs_suppliers')
42
            ->setAttribute('icon', 'glyphicon glyphicon-barcode');
43
 
44
        $menu['manage']->addChild('articles', array(
45
            'label' => 'title',
46
            'route' => 'articles'
47
        ))
48
            ->setExtra('translation_domain', 'gs_articles')
49
            ->setAttribute('icon', 'fa fa-shopping-basket');
50
 
51
        return $menu;
52
    }
53
 
54
    public function buildUserMenu(FactoryInterface $factory, array $options)
0 ignored issues
show
Unused Code introduced by
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...
55
    {
56
        $menu = $factory->createItem('root');
57
        $menu->setChildrenAttribute('class', 'nav navbar-nav navbar-right');
58
 
59
        $context = $this->container->get('security.context');
60
        if ($context->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
61
            /*
62
             *  Menu Administration
63
             */
64
            $menu->addChild('entities', array('label' => 'menu.configuration'))
65
                ->setExtra('translation_domain', 'messages')
66
                ->setAttribute('dropdown', true)
67
                ->setAttribute('class', 'multi-level')
68
                ->setAttribute('icon', 'glyphicon glyphicon-cog');
69
70
            $menu['entities']
71
                ->addChild('company', array(
72
                    'route' => 'admin_company',
73
                    'label' => 'gestock.settings.company.title'
74
                ))
75
                ->setExtra('translation_domain', 'messages')
76
                ->setAttribute('icon', 'glyphicon glyphicon-tower');
77
78
            $menu['entities']
79
                ->addChild('applcation', array(
80
                    'route' => 'admin_application',
81
                    'label' => 'gestock.settings.application.title'
82
                ))
83
                ->setExtra('translation_domain', 'messages')
84
                ->setAttribute('icon', 'glyphicon glyphicon-wrench');
85
86
            $divers = $menu['entities']
87
                ->addChild('divers', array('label' => 'gestock.settings.diverse.title'))
88
                ->setExtra('translation_domain', 'messages')
89
                ->setAttribute('dropdown', true)
90
                ->setAttribute('class', 'dropdown-submenu')
91
                ->setAttribute('icon', 'glyphicon glyphicon-info-sign');
92
            
93
            $divers
94
                ->addChild('familylog', array(
95
                    'route' => 'admin_familylog',
96
                    'label' => 'gestock.settings.diverse.familylog'
97
                ))
98
                ->setAttribute('icon', 'glyphicon glyphicon-tag');
99
100
            $divers
101
                ->addChild('zonestorage', array(
102
                    'route' => 'admin_zonestorage',
103
                    'label' => 'gestock.settings.diverse.zonestorage'
104
                ))
105
                ->setAttribute('icon', 'glyphicon glyphicon-map-marker');
106
107
            $divers
108
                ->addChild('unitstorage', array(
109
                    'route' => 'admin_unitstorage',
110
                    'label' => 'gestock.settings.diverse.unitstorage'
111
                ))
112
                ->setAttribute('icon', 'fa fa-cubes');
113
114
            $divers
115
                ->addChild('tva', array(
116
                    'route' => 'admin_rate',
117
                    'label' => 'gestock.settings.diverse.vat'
118
                ))
119
                ->setAttribute('icon', 'glyphicon glyphicon-piggy-bank');
120
121
            $menu['entities']
122
                ->addChild('divider')
123
                ->setAttribute('class', 'divider');
124
125
            $menu['entities']
126
                ->addChild('users', array(
127
                    'route' => 'admin_users',
128
                    'label' => 'menu.users'))
129
                ->setAttribute('icon', 'glyphicon glyphicon-user');
130
131
            $menu['entities']
132
                ->addChild('groups', array(
133
                    'route' => 'admin_groups',
134
                    'label' => 'menu.groups'))
135
                ->setAttribute('icon', 'fa fa-users');
136
        }
137
        /*
138
         *  Menu Profile
139
         */
140
        if ($context->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
141
            $menu->addChild('profile', array(
142
                        'label' => $context->getToken()->getUser()->getUsername()))
143
                ->setAttribute('dropdown', true)
144
                ->setAttribute('icon', 'fa fa-user');
145
            
146
            $menu['profile']->addChild('layout.logout', array('route' => 'fos_user_security_logout'))
147
                ->setExtra('translation_domain', 'FOSUserBundle')
148
                ->setAttribute('icon', 'fa fa-unlink');
149
        } else {
150
            $menu->addChild('profile', array(
151
                        'label' => 'menu.administration'
152
                ))
153
                ->setExtra('translation_domain', 'messages')
154
                ->setAttribute('dropdown', true)
155
                ->setAttribute('icon', 'fa fa-user');
156
        }
157
        $menu['profile']->addChild('menu.other_login', array('route' => 'fos_user_security_login'))
158
            ->setAttribute('icon', 'fa fa-link');
159
 
160
        return $menu;
161
    }
162
}
163