23 print
"Error, template page can't be called as URL";
26'@phan-var-force Context $context';
28global
$conf, $hookmanager, $langs;
30$navMenu = $navGroupMenu = $navUserMenu = array();
37 $navMenu[
'propal_list'] = array(
38 'id' =>
'propal_list',
40 'url' =>
$context->getControllerUrl(
'propallist'),
41 'name' => $langs->trans(
'WebPortalPropalListMenu'),
42 'group' =>
'administrative'
47 $navMenu[
'order_list'] = array(
50 'url' =>
$context->getControllerUrl(
'orderlist'),
51 'name' => $langs->trans(
'WebPortalOrderListMenu'),
52 'group' =>
'administrative'
57 $navMenu[
'invoice_list'] = array(
58 'id' =>
'invoice_list',
60 'url' =>
$context->getControllerUrl(
'invoicelist'),
61 'name' => $langs->trans(
'WebPortalInvoiceListMenu'),
62 'group' =>
'administrative'
67 $navMenu[
'ficheinter_list'] = array(
68 'id' =>
'ficheinter_list',
70 'url' =>
$context->getControllerUrl(
'ficheinterlist'),
71 'name' => $langs->trans(
'WebPortalFicheinterListMenu'),
72 'group' =>
'administrative'
77 $navMenu[
'ticket_list'] = array(
78 'id' =>
'ticket_list',
80 'url' =>
$context->getControllerUrl(
'ticketlist'),
81 'name' => $langs->trans(
'WebPortalTicketListMenu'),
82 'group' =>
'administrative'
87 $navMenu[
'document_list'] = array(
88 'id' =>
'document_list',
90 'url' =>
$context->getControllerUrl(
'documentlist'),
91 'name' => $langs->trans(
'MyDocuments'),
92 'group' =>
'administrative'
97 $navMenu[
'shared_documents'] = array(
98 'id' =>
'shared_documents',
100 'url' =>
$context->getControllerUrl(
'shareddocuments'),
101 'name' => $langs->trans(
'SharedDocuments'),
102 'group' =>
'administrative'
108 && in_array($cardAccess, array(
'visible',
'edit'))
112 $navMenu[
'member_card'] = array(
113 'id' =>
'member_card',
115 'url' =>
$context->getControllerUrl(
'membercard'),
116 'name' => $langs->trans(
'WebPortalMemberCardMenu'),
117 'group' =>
'administrative'
123 && in_array($cardAccess, array(
'visible',
'edit'))
125 &&
$context->logged_partnership->id > 0
127 $navMenu[
'partnership_card'] = array(
128 'id' =>
'partnership_card',
130 'url' =>
$context->getControllerUrl(
'partnershipcard'),
131 'name' => $langs->trans(
'WebPortalPartnershipCardMenu'),
132 'group' =>
'administrative'
138 $navUserMenu[
'user'] = array(
139 'id' =>
'user_account',
142 'name' =>
'<img class="top-nav-icon user-account" src="' .
WebPortalTheme::getIconImagesUrl() .
'user.svg" aria-hidden="true" /> <span class="user-account-name">'.
$context->logged_thirdparty->getFullName($langs).
'</span>',
148 $navUserMenu[
'user_logout'] = array(
149 'id' =>
'user_logout',
151 'url' =>
$context->getControllerUrl() .
'logout.php',
152 'name' =>
'<img class="top-nav-icon log-out-img" src="'.WebPortalTheme::getIconImagesUrl() .
'logout.svg" title="'.dol_escape_htmltag($langs->trans(
'Logout')).
'" />',
156$navGroupMenu = array(
157 'administrative' => array(
158 'id' =>
'administrative',
161 'name' => $langs->trans(
'WebPortalGroupMenuAdmin'),
162 'children' => array()
164 'technical' => array(
168 'name' => $langs->trans(
'WebPortalGroupMenuTechnical'),
169 'children' => array()
174 'controller' =>
$context->controller,
175 'Tmenu' => & $navMenu,
176 'TUserMenu' => & $navUserMenu,
177 'TGroupMenu' => & $navGroupMenu,
178 'maxTopMenu' => & $maxTopMenu
181$reshook = $hookmanager->executeHooks(
'PrintTopMenu', $parameters,
$context,
$context->action);
183 $context->setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
186if (empty($reshook)) {
187 if (!empty($hookmanager->resArray)) {
189 $navMenu = array_replace($navMenu, $hookmanager->resArray);
192 if (!empty($navMenu)) {
194 uasort($navMenu,
'menuSortInv');
196 if (!empty($maxTopMenu) && $maxTopMenu < count($navMenu)) {
198 foreach ($navMenu as $menuId => $menuItem) {
200 if (!empty($menuItem[
'group']) && !empty($navGroupMenu[$menuItem[
'group']])) {
201 $goupId = $menuItem[
'group'];
204 $navGroupMenu[$goupId][
'children'][$menuId] = $menuItem;
207 if (!empty($navGroupMenu[$goupId][
'rank']) && $navGroupMenu[$goupId][
'rank'] > 0) {
209 $navGroupMenu[$goupId][
'rank'] = min(abs($navGroupMenu[$goupId][
'rank']), abs($menuItem[
'rank']));
214 foreach ($navGroupMenu as $groupId => $groupItem) {
216 if (!empty($groupItem[
'children']) && count($groupItem[
'children']) > 1) {
218 $navMenu[$groupId] = $groupItem;
221 foreach ($groupItem[
'children'] as $menuId => $menuItem) {
222 if (isset($navMenu[$menuId])) {
223 unset($navMenu[$menuId]);
230 uasort($navMenu,
'menuSortInv');
235<nav
class=
"primary-top-nav container-fluid">
236 <ul
class=
"menu-entries-alt">
239 print
'<li data-deep="0" class="nav-item">';
240 print
' <details class="main-nav-dropdown dropdown">';
241 print
' <summary><img class="top-nav-icon menu-icon-dropdown" src="' .
WebPortalTheme::getIconImagesUrl() .
'menu.svg" alt="'.dol_escape_htmltag($langs->trans(
"Menu")).
'" /></summary>';
254 print
'<a class="brand__logo-link" href="'.$context->getControllerUrl().
'" >';
255 if (!empty(
$context->theme->menuLogoUrl)) {
258 print
'<span class="brand__name">' . $brandTitle .
'</span>';
264 <ul
class=
"menu-entries">
266 if (empty(
$context->doNotDisplayMenu) && empty($reshook) && !empty($navMenu)) {
275 if (empty(
$context->doNotDisplayMenu) && empty($reshook) && !empty($navUserMenu)) {
277 uasort($navUserMenu,
'menuSortInv');
278 print
getNav($navUserMenu);
static getIconImagesUrl()
return current icons folder url
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
getNav($Tmenu)
Get nav menu.
$context
@method int call_trigger(string $triggerName, ?User $user)