79 public function showmenu($mode, $moredata =
null)
81 global $user, $conf, $langs, $dolibarr_main_db_name;
85 require_once DOL_DOCUMENT_ROOT.
'/core/class/menu.class.php';
86 $this->menu =
new Menu();
88 $res =
'ErrorBadParameterForMode';
93 if ($mode ==
'topnb') {
105 if ($mode !=
'jmobile' && $mode !=
'topnb' && $usemenuhider && !
getDolGlobalString(
'MAIN_OPTIMIZEFORTEXTBROWSER')) {
107 $classname =
'class="tmenu menuhider nohover"';
110 $this->menu->add(
'#',
'', 0, $showmode, $this->atarget,
"xxx",
'', 0, $id, $idsel, $classname);
115 $classname =
'class="tmenusel"';
118 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
122 $this->menu->liste =
dol_sort_array($this->menu->liste,
'position');
125 foreach ($this->menu->liste as $menkey => $menuval) {
130 print_text_menu_entry_empty($menuval[
'titre'], $menuval[
'enabled'], ($menuval[
'url'] !=
'#' ? DOL_URL_ROOT :
'').$menuval[
'url'], $menuval[
'id'], $menuval[
'idsel'], $menuval[
'classname'], ($menuval[
'target'] ? $menuval[
'target'] : $this->atarget));
149 if ($mode ==
'jmobile') {
150 $this->topmenu = clone $this->menu;
151 unset($this->menu->liste);
155 if ($mode ==
'jmobile') {
158 $classname =
'class="tmenusel"';
161 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
167 $lastlevel = array();
169 print
'<!-- Generate menu list from menu handler '.$this->name.
' -->'.
"\n";
170 foreach ($this->menu->liste as $key => $val) {
171 print
'<ul class="ulmenu" data-inset="true">';
172 print
'<li class="lilevel0">';
176 if ($val[
'enabled'] == 1) {
178 $canonurl = preg_replace(
'/\?.*$/',
'', $val[
'url']);
180 print
'<a class="alilevel0" href="#">';
183 if ($val[
'level'] == 0 && $val[
'mainmenu'] ==
'home') {
184 print
'<span class="fas fa-home fa-fw paddingright" aria-hidden="true"></span>';
191 $tmpmainmenu = $val[
'mainmenu'];
192 $tmpleftmenu =
'all';
193 $submenu =
new Menu();
195 $langs->load(
"admin");
196 $submenu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"), 0);
197 $submenu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"), 1);
198 $submenu->add(
"/admin/modules.php", $langs->trans(
"Modules"), 1);
199 $submenu->add(
"/admin/menus.php", $langs->trans(
"Menus"), 1);
200 $submenu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"), 1);
201 $submenu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"), 1);
202 $submenu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"), 1);
204 $submenu->add(
"/admin/boxes.php?mainmenu=home", $langs->trans(
"Boxes"), 1);
205 $submenu->add(
"/admin/delais.php?mainmenu=home", $langs->trans(
"Alerts"), 1);
206 $submenu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"), 1);
207 $submenu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"), 1);
208 $submenu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"), 1);
209 $submenu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"), 1);
210 $submenu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"), 1);
211 $submenu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"), 1);
212 $submenu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"), 1);
222 $canonrelurl = preg_replace(
'/\?.*$/',
'', $relurl);
223 $canonnexturl = preg_replace(
'/\?.*$/',
'', $nexturl);
226 if (($canonrelurl != $canonnexturl && !in_array($val[
'mainmenu'], array(
'tools')))
227 || (strpos($canonrelurl,
'/product/index.php') !==
false || strpos($canonrelurl,
'/compta/bank/list.php') !==
false)) {
229 print str_pad(
'', 1).
'<li class="lilevel1 ui-btn-icon-right ui-btn">';
230 print
'<a href="'.$relurl.
'">';
231 if ($langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard") == ucfirst($val[
'mainmenu']).
"Dashboard") {
232 if (in_array($val[
'mainmenu'], array(
'cashdesk',
'websites'))) {
233 print $langs->trans(
"Access");
235 print $langs->trans(
"Dashboard");
238 print $langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard");
244 if ($val[
'level'] == 0) {
245 if ($val[
'enabled']) {
246 $lastlevel[0] =
'enabled';
247 } elseif ($showmenu) {
248 $lastlevel[0] =
'greyed';
250 $lastlevel[0] =
'hidden';
254 $lastlevel2 = array();
255 foreach ($submenu->liste as $key2 => $val2) {
262 if ($val2[
'level'] > 0) {
263 $levelcursor = $val2[
'level'] - 1;
264 while ($levelcursor >= 0) {
265 if ($lastlevel2[$levelcursor] !=
'enabled') {
276 $canonurl2 = preg_replace(
'/\?.*$/',
'', $val2[
'url']);
278 if (in_array($canonurl2, array(
'/admin/index.php',
'/admin/tools/index.php',
'/core/tools.php'))) {
283 if (!$val2[
'enabled']) {
284 $disabled =
" vsmenudisabled";
287 print str_pad(
'', $val2[
'level'] + 1);
288 print
'<li class="lilevel'.($val2[
'level'] + 1);
289 if ($val2[
'level'] == 0) {
290 print
' ui-btn-icon-right ui-btn';
292 print $disabled.
'">';
294 if ($val2[
'enabled']) {
296 print
'<a href="'.$relurl2.
'">';
297 $lastlevel2[$val2[
'level']] =
'enabled';
300 print
'<a href="#" class="vsmenudisabled">';
301 $lastlevel2[$val2[
'level']] =
'greyed';
304 if ($val2[
'enabled']) {
305 $lastlevel2[$val2[
'level']] =
'enabled';
307 $lastlevel2[$val2[
'level']] =
'greyed';
310 print $val2[
'titre'];
312 if ($val2[
'enabled']) {
325 if ($val[
'enabled'] == 2) {
326 print
'<span class="vsmenudisabled">'.$val[
'titre'].
'</span>';
333 if ($mode ==
'left') {
337 $langs->load(
"admin");
338 $this->menu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"), 0);
339 $this->menu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"), 1);
340 $this->menu->add(
"/admin/modules.php", $langs->trans(
"Modules"), 1);
341 $this->menu->add(
"/admin/menus.php", $langs->trans(
"Menus"), 1);
342 $this->menu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"), 1);
343 $this->menu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"), 1);
344 $this->menu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"), 1);
346 $this->menu->add(
"/admin/boxes.php?mainmenu=home", $langs->trans(
"Boxes"), 1);
347 $this->menu->add(
"/admin/delais.php?mainmenu=home", $langs->trans(
"Alerts"), 1);
348 $this->menu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"), 1);
349 $this->menu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"), 1);
350 $this->menu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"), 1);
351 $this->menu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"), 1);
352 $this->menu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"), 1);
353 $this->menu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"), 1);
354 $this->menu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"), 1);
358 $menu_array_before = array();
359 $menu_array_after = array();
363 $menu_array = $this->menu->liste;
364 if (is_array($menu_array_before)) {
365 $menu_array = array_merge($menu_array_before, $menu_array);
367 if (is_array($menu_array_after)) {
368 $menu_array = array_merge($menu_array, $menu_array_after);
371 if (!is_array($menu_array)) {
378 $blockvmenuopened =
false;
379 $num = count($menu_array);
380 for ($i = 0; $i < $num; $i++) {
382 if (empty($menu_array[$i][
'level'])) {
384 $blockvmenuopened =
true;
386 for ($j = ($i + 1); $j < $num; $j++) {
387 if (empty($menu_array[$j][
'level'])) {
393 if (($alt % 2 == 0)) {
394 print
'<div class="blockvmenub lockvmenuimpair blockvmenuunique'.($lastopened ?
' blockvmenulast' :
'').($alt == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
396 print
'<div class="blockvmenu blockvmenupair blockvmenuunique'.($lastopened ?
' blockvmenulast' :
'').($alt == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
402 $tabul = ($menu_array[$i][
'level'] - 1);
404 for ($j = 0; $j < $tabul; $j++) {
405 $tabstring .=
' ';
409 if ($menu_array[$i][
'level'] == 0) {
410 if ($menu_array[$i][
'enabled']) {
411 print
'<div class="menu_titre">'.$tabstring.
'<a class="vmenu" href="'.
dol_buildpath($menu_array[$i][
'url'], 1).
'"'.($menu_array[$i][
'target'] ?
' target="'.$menu_array[$i][
'target'].
'"' :
'').
'>'.$menu_array[$i][
'titre'].
'</a></div>'.
"\n";
413 print
'<div class="menu_titre">'.$tabstring.
'<span class="vmenudisabled">'.$menu_array[$i][
'titre'].
'</span></div>'.
"\n";
415 print
'<div class="menu_top"></div>'.
"\n";
418 if ($menu_array[$i][
'level'] > 0) {
420 if ($menu_array[$i][
'url']) {
421 $cssmenu =
' menu_contenu'.dol_string_nospecial(preg_replace(
'/\.php.*$/',
'', $menu_array[$i][
'url']));
424 print
'<div class="menu_contenu'.$cssmenu.
'">';
426 if ($menu_array[$i][
'enabled']) {
428 if ($menu_array[$i][
'url']) {
429 print
'<a class="vsmenu" itle="'.dol_escape_htmltag($menu_array[$i][
'titre']).
'" href="'.
dol_buildpath($menu_array[$i][
'url'], 1).
'"'.($menu_array[$i][
'target'] ?
' target="'.$menu_array[$i][
'target'].
'"' :
'').
'>';
431 print
'<span class="vsmenu" title="'.dol_escape_htmltag($menu_array[$i][
'titre']).
'">';
433 if ($menu_array[$i][
'url']) {
434 print $menu_array[$i][
'titre'].
'</a>';
439 print $tabstring.
'<span class="vsmenudisabled vsmenudisabledmargin">'.$menu_array[$i][
'titre'].
'</span>';
443 if (!strstr($menu_array[$i][
'titre'],
'<table')) {
450 if (empty($menu_array[$i + 1][
'level'])) {
451 print
'<div class="menu_end"></div>'.
"\n";
457 print
'<div class="blockvmenuend"></div>';
461 if ($mode ==
'jmobile') {
462 $this->leftmenu = clone $this->menu;
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
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...