77 public function showmenu($mode, $moredata =
null)
79 global $user, $conf, $langs, $dolibarr_main_db_name;
83 require_once DOL_DOCUMENT_ROOT.
'/core/class/menu.class.php';
84 $this->menu =
new Menu();
86 $res =
'ErrorBadParameterForMode';
91 if ($mode ==
'topnb') {
103 if ($mode !=
'jmobile' && $mode !=
'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
105 $classname =
'class="tmenu menuhider nohover"';
108 $this->menu->add(
'#',
'', 0, $showmode, $atarget,
"xxx",
'', 0, $id, $idsel, $classname);
113 $classname =
'class="tmenusel"';
116 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
120 $this->menu->liste =
dol_sort_array($this->menu->liste,
'position');
123 foreach ($this->menu->liste as $menkey => $menuval) {
128 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'] : $atarget));
147 if ($mode ==
'jmobile') {
148 $this->topmenu = clone $this->menu;
149 unset($this->menu->liste);
153 if ($mode ==
'jmobile') {
156 $classname =
'class="tmenusel"';
159 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
165 $lastlevel = array();
166 print
'<!-- Generate menu list from menu handler '.$this->name.
' -->'.
"\n";
167 foreach ($this->menu->liste as $key => $val) {
168 print
'<ul class="ulmenu" data-inset="true">';
169 print
'<li class="lilevel0">';
173 if ($val[
'enabled'] == 1) {
175 $canonurl = preg_replace(
'/\?.*$/',
'', $val[
'url']);
177 print
'<a class="alilevel0" href="#">';
180 if ($val[
'level'] == 0 && $val[
'mainmenu'] ==
'home') {
181 print
'<span class="fa fa-home fa-fw paddingright" aria-hidden="true"></span>';
188 $tmpmainmenu = $val[
'mainmenu'];
189 $tmpleftmenu =
'all';
190 $submenu =
new Menu();
192 $langs->load(
"admin");
193 $submenu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"), 0);
194 $submenu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"), 1);
195 $submenu->add(
"/admin/modules.php", $langs->trans(
"Modules"), 1);
196 $submenu->add(
"/admin/menus.php", $langs->trans(
"Menus"), 1);
197 $submenu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"), 1);
198 $submenu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"), 1);
199 $submenu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"), 1);
201 $submenu->add(
"/admin/boxes.php?mainmenu=home", $langs->trans(
"Boxes"), 1);
202 $submenu->add(
"/admin/delais.php?mainmenu=home", $langs->trans(
"Alerts"), 1);
203 $submenu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"), 1);
204 $submenu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"), 1);
205 $submenu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"), 1);
206 $submenu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"), 1);
207 $submenu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"), 1);
208 $submenu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"), 1);
209 $submenu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"), 1);
219 $canonrelurl = preg_replace(
'/\?.*$/',
'', $relurl);
220 $canonnexturl = preg_replace(
'/\?.*$/',
'', $nexturl);
224 if (($canonrelurl != $canonnexturl && !in_array($val[
'mainmenu'], array(
'tools')))
225 || (strpos($canonrelurl,
'/product/index.php') !==
false || strpos($canonrelurl,
'/compta/bank/list.php') !==
false)) {
227 print str_pad(
'', 1).
'<li class="lilevel1 ui-btn-icon-right ui-btn">';
228 print
'<a href="'.$relurl.
'">';
229 if ($langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard") == ucfirst($val[
'mainmenu']).
"Dashboard") {
230 if (in_array($val[
'mainmenu'], array(
'cashdesk',
'websites'))) {
231 print $langs->trans(
"Access");
233 print $langs->trans(
"Dashboard");
236 print $langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard");
242 if ($val[
'level'] == 0) {
243 if ($val[
'enabled']) {
244 $lastlevel[0] =
'enabled';
245 } elseif ($showmenu) {
246 $lastlevel[0] =
'greyed';
248 $lastlevel[0] =
'hidden';
252 $lastlevel2 = array();
253 foreach ($submenu->liste as $key2 => $val2) {
255 if (!empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2[
'enabled'])) {
260 if ($val2[
'level'] > 0) {
261 $levelcursor = $val2[
'level'] - 1;
262 while ($levelcursor >= 0) {
263 if ($lastlevel2[$levelcursor] !=
'enabled') {
274 $canonurl2 = preg_replace(
'/\?.*$/',
'', $val2[
'url']);
276 if (in_array($canonurl2, array(
'/admin/index.php',
'/admin/tools/index.php',
'/core/tools.php'))) {
281 if (!$val2[
'enabled']) {
282 $disabled =
" vsmenudisabled";
285 print str_pad(
'', $val2[
'level'] + 1);
286 print
'<li class="lilevel'.($val2[
'level'] + 1);
287 if ($val2[
'level'] == 0) {
288 print
' ui-btn-icon-right ui-btn';
290 print $disabled.
'">';
292 if ($val2[
'enabled']) {
294 print
'<a href="'.$relurl2.
'">';
295 $lastlevel2[$val2[
'level']] =
'enabled';
298 print
'<a href="#" class="vsmenudisabled">';
299 $lastlevel2[$val2[
'level']] =
'greyed';
302 if ($val2[
'enabled']) {
303 $lastlevel2[$val2[
'level']] =
'enabled';
305 $lastlevel2[$val2[
'level']] =
'greyed';
310 print $val2[
'titre'];
312 if ($val2[
'enabled']) {
326 if ($val[
'enabled'] == 2) {
327 print
'<span class="vsmenudisabled">'.$val[
'titre'].
'</span>';
334 if ($mode ==
'left') {
338 $langs->load(
"admin");
339 $this->menu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"), 0);
340 $this->menu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"), 1);
341 $this->menu->add(
"/admin/modules.php", $langs->trans(
"Modules"), 1);
342 $this->menu->add(
"/admin/menus.php", $langs->trans(
"Menus"), 1);
343 $this->menu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"), 1);
344 $this->menu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"), 1);
345 $this->menu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"), 1);
347 $this->menu->add(
"/admin/boxes.php?mainmenu=home", $langs->trans(
"Boxes"), 1);
348 $this->menu->add(
"/admin/delais.php?mainmenu=home", $langs->trans(
"Alerts"), 1);
349 $this->menu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"), 1);
350 $this->menu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"), 1);
351 $this->menu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"), 1);
352 $this->menu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"), 1);
353 $this->menu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"), 1);
354 $this->menu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"), 1);
355 $this->menu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"), 1);
359 $menu_array_before = array();
360 $menu_array_after = array();
364 $menu_array = $this->menu->liste;
365 if (is_array($menu_array_before)) {
366 $menu_array = array_merge($menu_array_before, $menu_array);
368 if (is_array($menu_array_after)) {
369 $menu_array = array_merge($menu_array, $menu_array_after);
372 if (!is_array($menu_array)) {
379 $blockvmenuopened =
false;
380 $num = count($menu_array);
381 for ($i = 0; $i < $num; $i++) {
383 if (empty($menu_array[$i][
'level'])) {
385 $blockvmenuopened =
true;
387 for ($j = ($i + 1); $j < $num; $j++) {
388 if (empty($menu_array[$j][
'level'])) {
394 if (($alt % 2 == 0)) {
395 print
'<div class="blockvmenub lockvmenuimpair blockvmenuunique'.($lastopened ?
' blockvmenulast' :
'').($alt == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
397 print
'<div class="blockvmenu blockvmenupair blockvmenuunique'.($lastopened ?
' blockvmenulast' :
'').($alt == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
403 $tabul = ($menu_array[$i][
'level'] - 1);
405 for ($j = 0; $j < $tabul; $j++) {
406 $tabstring .=
' ';
410 if ($menu_array[$i][
'level'] == 0) {
411 if ($menu_array[$i][
'enabled']) {
412 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";
414 print
'<div class="menu_titre">'.$tabstring.
'<span class="vmenudisabled">'.$menu_array[$i][
'titre'].
'</span></div>'.
"\n";
416 print
'<div class="menu_top"></div>'.
"\n";
419 if ($menu_array[$i][
'level'] > 0) {
421 if ($menu_array[$i][
'url']) {
422 $cssmenu =
' menu_contenu'.dol_string_nospecial(preg_replace(
'/\.php.*$/',
'', $menu_array[$i][
'url']));
425 print
'<div class="menu_contenu'.$cssmenu.
'">';
427 if ($menu_array[$i][
'enabled']) {
429 if ($menu_array[$i][
'url']) {
430 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'].
'"' :
'').
'>';
432 print
'<span class="vsmenu" title="'.dol_escape_htmltag($menu_array[$i][
'titre']).
'">';
434 if ($menu_array[$i][
'url']) {
435 print $menu_array[$i][
'titre'].
'</a>';
440 print $tabstring.
'<span class="vsmenudisabled vsmenudisabledmargin">'.$menu_array[$i][
'titre'].
'</span>';
444 if (!strstr($menu_array[$i][
'titre'],
'<table')) {
451 if (empty($menu_array[$i + 1][
'level'])) {
452 print
'<div class="menu_end"></div>'.
"\n";
458 print
'<div class="blockvmenuend"></div>';
462 if ($mode ==
'jmobile') {
463 $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...