dolibarr
20.0.0-beta
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
dolibarr_dev
htdocs
public
webportal
lib
webportal.lib.php
Go to the documentation of this file.
1
<?php
2
/* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
3
*/
4
17
function
getNav
($Tmenu)
18
{
19
$menu =
''
;
20
21
foreach
($Tmenu as $item) {
22
$menu .=
getNavItem
($item);
23
}
24
25
return
$menu;
26
}
27
36
function
getNavItem
($item, $deep = 0)
37
{
38
$context =
Context::getInstance
();
39
40
$menu =
''
;
41
42
$itemDefault = array(
43
'active'
=>
false
,
44
'separator'
=>
false
,
45
);
46
47
$item = array_replace($itemDefault, $item);
// applique les valeurs par default
48
49
if
($context->menuIsActive($item[
'id'
])) {
50
$item[
'active'
] =
true
;
51
}
52
53
if
(!isset($item[
'class'
])) {
54
$item[
'class'
] =
'--item-'
. preg_replace(
'/[^a-z0-9 ]/i'
,
'-'
, $item[
'id'
]);
55
}
56
57
58
if
(!empty($item[
'override'
])) {
59
$menu .= $item[
'override'
];
60
} elseif (!empty($item[
'children'
])) {
61
$menuChildren =
''
;
62
$haveChildActive =
false
;
63
64
foreach
($item[
'children'
] as $child) {
65
$item = array_replace($itemDefault, $item);
// applique les valeurs par default
66
'@phan-var-force array{id:string,rank:int,url:string,name:string,group:string,override?:int<0,1>,active?:bool,separator?:bool} $child'
;
67
68
if
(!empty($child[
'separator'
])) {
69
$menuChildren .=
'<li role="separator" class="divider"></li>'
;
70
}
71
72
if
($context->menuIsActive($child[
'id'
])) {
73
$child[
'active'
] =
true
;
74
$haveChildActive =
true
;
75
}
76
77
if
(!empty($child[
'children'
])) {
78
$menuChildren .=
"\n\r"
.
'<!-- print sub menu -->'
.
"\n\r"
;
79
$menuChildren .=
getNavItem
($child, $deep + 1);
80
$menuChildren .=
"\n\r"
.
'<!-- print sub menu -->'
.
"\n\r"
;
81
}
else
{
82
$menuChildren .=
'<li class="dropdown-item '
.$item[
'class'
].
'" data-deep="'
. $deep .
'" ><a href="'
. $child[
'url'
] .
'" class="'
. (!empty($child[
'active'
]) ?
'active'
:
''
) .
'" ">'
. $child[
'name'
] .
'</a></li>'
;
83
}
84
}
85
86
$active =
''
;
87
if
($haveChildActive || $item[
'active'
]) {
88
$active =
'active'
;
89
}
90
91
$menu .=
'<li data-deep="'
. $deep .
'" class="'
.$item[
'class'
].
' dropdown '
. ($deep > 0 ?
'dropdown-item dropdown-submenu'
:
'nav-item'
) .
' '
. $active .
'">'
;
92
$menu .=
'<a href="#" class="'
. ($deep > 0 ?
''
:
'nav-link'
) .
' dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'
. $item[
'name'
] .
' <span class="caret"></span></a>'
;
93
$menu .=
'<ul class="dropdown-menu ">'
. $menuChildren .
'</ul>'
;
94
$menu .=
'</li>'
;
95
}
else
{
96
$menu .=
'<li data-deep="'
. $deep .
'" class="'
.$item[
'class'
].
' '
. ($deep > 0 ?
'dropdown-item'
:
'nav-item '
) .
' '
. ($item[
'active'
] ?
'active'
:
''
) .
'"><a href="'
. $item[
'url'
] .
'" class="'
. ($deep > 0 ?
''
:
'nav-link'
) .
'" >'
. $item[
'name'
] .
'</a></li>'
;
97
}
98
99
return
$menu;
100
}
101
114
function
menuSortInv
($a, $b)
115
{
116
117
if
(empty($a[
'rank'
])) {
118
$a[
'rank'
] = 0;
119
}
120
if
(empty($b[
'rank'
])) {
121
$b[
'rank'
] = 0;
122
}
123
if
($a[
'rank'
] == $b[
'rank'
]) {
124
return
0;
125
}
126
127
return
($a[
'rank'
] < $b[
'rank'
]) ? -1 : 1;
128
}
Context\getInstance
static getInstance()
Singleton method to create one instance of this object.
Definition:
context.class.php:197
getNav
getNav($Tmenu)
Get nav menu.
Definition:
webportal.lib.php:17
getNavItem
getNavItem($item, $deep=0)
Get nav item.
Definition:
webportal.lib.php:36
menuSortInv
menuSortInv($a, $b)
Sort menu uasort callback function to Sort menu fields.
Definition:
webportal.lib.php:114
Generated on Sat Jun 1 2024 01:01:21 for
dolibarr
by Doxygen 1.9.1