37 var $menu_array_after;
48 $this->type_user=$type_user;
72 global $user,$conf,$langs,$dolibarr_main_db_name;
76 require_once DOL_DOCUMENT_ROOT.
'/core/class/menu.class.php';
77 $this->menu=
new Menu();
79 $res=
'ErrorBadParameterForMode';
93 $usemenuhider = (
GETPOST(
'testmenuhider',
'int') || ! empty($conf->global->MAIN_TESTMENUHIDER));
96 if ($mode !=
'jmobile' && $mode !=
'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
99 $classname =
'class="tmenu menuhider"';
102 $this->menu->add(
'#',
'', 0, $showmode, $atarget,
"xxx",
'', 0, $id, $idsel, $classname);
107 $classname=
'class="tmenusel"';
110 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
114 $this->menu->liste =
dol_sort_array($this->menu->liste,
'position');
117 foreach($this->menu->liste as $menkey => $menuval)
120 if (empty($noout))
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));
130 if ($mode ==
'jmobile')
132 $this->topmenu = clone $this->menu;
133 unset($this->menu->liste);
137 if ($mode ==
'jmobile')
141 $classname=
'class="tmenusel"';
144 $this->menu->add(
'/index.php', $langs->trans(
"Home"), 0, $showmode, $this->atarget,
'home',
'', 10, $id, $idsel, $classname);
149 $lastlevel = array();
150 print '<!-- Generate menu list from menu handler '.$this->name.
' -->'.
"\n";
151 foreach($this->menu->liste as $key => $val)
153 print '<ul class="ulmenu" data-inset="true">';
154 print '<li class="lilevel0">';
156 $substitarray = array(
'__LOGIN__' => $user->login,
'__USER_ID__' => $user->id,
'__USER_SUPERVISOR_ID__' => $user->fk_user);
157 $substitarray[
'__USERID__'] = $user->id;
160 if ($val[
'enabled'] == 1)
163 $canonurl=preg_replace(
'/\?.*$/',
'',$val[
'url']);
165 print '<a class="alilevel0" href="#">';
168 if ($val[
'level'] == 0 && $val[
'mainmenu'] ==
'home')
print '<span class="fa fa-home fa-fw paddingright" aria-hidden="true"></span>';
174 $tmpmainmenu=$val[
'mainmenu'];
178 $langs->load(
"admin");
179 $submenu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"),0);
180 $submenu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"),1);
181 $submenu->add(
"/admin/modules.php", $langs->trans(
"Modules"),1);
182 $submenu->add(
"/admin/menus.php", $langs->trans(
"Menus"),1);
183 $submenu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"),1);
184 $submenu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"),1);
185 $submenu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"),1);
187 $submenu->add(
"/admin/boxes.php", $langs->trans(
"Boxes"),1);
188 $submenu->add(
"/admin/delais.php",$langs->trans(
"Alerts"),1);
189 $submenu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"),1);
190 $submenu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"),1);
191 $submenu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"),1);
192 $submenu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"),1);
193 $submenu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"),1);
194 $submenu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"),1);
195 $submenu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"),1);
201 $canonrelurl=preg_replace(
'/\?.*$/',
'',$relurl);
202 $canonnexturl=preg_replace(
'/\?.*$/',
'',$nexturl);
206 if (($canonrelurl != $canonnexturl && ! in_array($val[
'mainmenu'],array(
'tools')))
207 || (strpos($canonrelurl,
'/product/index.php') !==
false || strpos($canonrelurl,
'/compta/bank/list.php') !==
false))
210 print str_pad(
'',1).
'<li class="lilevel1 ui-btn-icon-right ui-btn">';
211 print '<a href="'.$relurl.
'">';
212 if ($langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard") == ucfirst($val[
'mainmenu']).
"Dashboard")
214 if (in_array($val[
'mainmenu'], array(
'cashdesk',
'websites')))
print $langs->trans(
"Access");
215 else print $langs->trans(
"Dashboard");
217 else print $langs->trans(ucfirst($val[
'mainmenu']).
"Dashboard");
222 if ($val[
'level']==0)
226 $lastlevel[0]=
'enabled';
230 $lastlevel[0]=
'greyed';
234 $lastlevel[0]=
'hidden';
238 $lastlevel2 = array();
239 foreach($submenu->liste as $key2 => $val2)
242 if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2[
'enabled'])) $showmenu=
false;
245 if ($val2[
'level'] > 0)
247 $levelcursor = $val2[
'level']-1;
248 while ($levelcursor >= 0)
250 if ($lastlevel2[$levelcursor] !=
'enabled') $showmenu=
false;
257 $substitarray = array(
'__LOGIN__' => $user->login,
'__USER_ID__' => $user->id,
'__USER_SUPERVISOR_ID__' => $user->fk_user);
258 $substitarray[
'__USERID__'] = $user->id;
262 $canonurl2=preg_replace(
'/\?.*$/',
'',$val2[
'url']);
264 if (in_array($canonurl2,array(
'/admin/index.php',
'/admin/tools/index.php',
'/core/tools.php'))) $relurl2=
'';
267 if (! $val2[
'enabled'])
269 $disabled=
" vsmenudisabled";
272 print str_pad(
'',$val2[
'level']+1);
273 print '<li class="lilevel'.($val2[
'level']+1);
274 if ($val2[
'level']==0)
print ' ui-btn-icon-right ui-btn';
275 print $disabled.
'">';
278 if ($val2[
'enabled'])
280 print '<a href="'.$relurl2.
'"';
283 $lastlevel2[$val2[
'level']]=
'enabled';
287 print '<a href="#" class="vsmenudisabled">';
288 $lastlevel2[$val2[
'level']]=
'greyed';
293 if ($val2[
'enabled'])
295 $lastlevel2[$val2[
'level']]=
'enabled';
299 $lastlevel2[$val2[
'level']]=
'greyed';
304 print $val2[
'titre'];
307 if ($val2[
'enabled'])
318 if ($val[
'enabled'] == 2)
320 print '<font class="vsmenudisabled">'.$val[
'titre'].
'</font>';
332 $langs->load(
"admin");
333 $this->menu->add(
"/admin/index.php?leftmenu=setup", $langs->trans(
"Setup"),0);
334 $this->menu->add(
"/admin/company.php", $langs->trans(
"MenuCompanySetup"),1);
335 $this->menu->add(
"/admin/modules.php", $langs->trans(
"Modules"),1);
336 $this->menu->add(
"/admin/menus.php", $langs->trans(
"Menus"),1);
337 $this->menu->add(
"/admin/ihm.php", $langs->trans(
"GUISetup"),1);
338 $this->menu->add(
"/admin/translation.php?mainmenu=home", $langs->trans(
"Translation"),1);
339 $this->menu->add(
"/admin/defaultvalues.php?mainmenu=home", $langs->trans(
"DefaultValues"),1);
341 $this->menu->add(
"/admin/boxes.php", $langs->trans(
"Boxes"),1);
342 $this->menu->add(
"/admin/delais.php",$langs->trans(
"Alerts"),1);
343 $this->menu->add(
"/admin/proxy.php?mainmenu=home", $langs->trans(
"Security"),1);
344 $this->menu->add(
"/admin/limits.php?mainmenu=home", $langs->trans(
"MenuLimits"),1);
345 $this->menu->add(
"/admin/pdf.php?mainmenu=home", $langs->trans(
"PDF"),1);
346 $this->menu->add(
"/admin/mails.php?mainmenu=home", $langs->trans(
"Emails"),1);
347 $this->menu->add(
"/admin/sms.php?mainmenu=home", $langs->trans(
"SMS"),1);
348 $this->menu->add(
"/admin/dict.php?mainmenu=home", $langs->trans(
"DictionarySetup"),1);
349 $this->menu->add(
"/admin/const.php?mainmenu=home", $langs->trans(
"OtherSetup"),1);
357 $alt=0; $altok=0; $blockvmenuopened=
false;
358 $num=count($this->menu->liste);
359 for ($i = 0; $i < $num; $i++)
362 if (empty($this->menu->liste[$i][
'level']))
365 $blockvmenuopened=
true;
367 for($j = ($i + 1); $j < $num; $j++)
369 if (empty($menu_array[$j][
'level'])) $lastopened=
false;
375 print '<div class="blockvmenub lockvmenuimpair blockvmenuunique'.($lastopened?
' blockvmenulast':
'').($alt == 1 ?
' blockvmenufirst':
'').
'">'.
"\n";
379 print '<div class="blockvmenu blockvmenupair blockvmenuunique'.($lastopened?
' blockvmenulast':
'').($alt == 1 ?
' blockvmenufirst':
'').
'">'.
"\n";
385 $tabul=($this->menu->liste[$i][
'level'] - 1);
388 for ($j=0; $j < $tabul; $j++)
390 $tabstring.=
' ';
394 if ($this->menu->liste[$i][
'level'] == 0) {
395 if ($this->menu->liste[$i][
'enabled'])
397 print '<div class="menu_titre">'.$tabstring.
'<a class="vmenu" href="'.
dol_buildpath($this->menu->liste[$i][
'url'],1).
'"'.($this->menu->liste[$i][
'target']?
' target="'.$this->menu->liste[$i][
'target'].
'"':
'').
'>'.$this->menu->liste[$i][
'titre'].
'</a></div>'.
"\n";
401 print '<div class="menu_titre">'.$tabstring.
'<font class="vmenudisabled">'.$this->menu->liste[$i][
'titre'].
'</font></div>'.
"\n";
403 print '<div class="menu_top"></div>'.
"\n";
406 if ($this->menu->liste[$i][
'level'] > 0)
409 if ($this->menu->liste[$i][
'url']) $cssmenu =
' menu_contenu'.dol_string_nospecial(preg_replace(
'/\.php.*$/',
'',$this->menu->liste[$i][
'url']));
411 print '<div class="menu_contenu'.$cssmenu.
'">';
413 if ($this->menu->liste[$i][
'enabled'])
416 if ($this->menu->liste[$i][
'url'])
print '<a class="vsmenu" href="'.dol_buildpath($this->menu->liste[$i][
'url'],1).
'"'.($this->menu->liste[$i][
'target']?
' target="'.$this->menu->liste[$i][
'target'].
'"':
'').
'>';
417 else print '<span class="vsmenu">';
418 if ($this->menu->liste[$i][
'url'])
print $this->menu->liste[$i][
'titre'].
'</a>';
419 else print '</span>';
423 print $tabstring.
'<font class="vsmenudisabled vsmenudisabledmargin">'.$this->menu->liste[$i][
'titre'].
'</font>';
427 if (! strstr($this->menu->liste[$i][
'titre'],
'<table'))
print '<br>';
432 if (empty($this->menu->liste[$i+1][
'level']))
434 print '<div class="menu_end"></div>'.
"\n";
439 if ($altok)
print '<div class="blockvmenuend"></div>';
442 if ($mode ==
'jmobile')
444 $this->leftmenu = clone $this->menu;
445 unset($this->menu->liste);
523 print '<div class="tmenudiv">';
524 print '<ul role="navigation" class="tmenu"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?
'':
' title="Top menu"').
'>';
539 print '<li '.$classname.
' id="mainmenutd_'.$idsel.
'">';
541 print '<div class="tmenucenter">';
563 print '<a class="tmenuimage" tabindex="-1" href="'.$url.
'"'.($atarget?
' target="'.$atarget.
'"':
'').
'>';
564 print '<div class="'.$id.
' '.$idsel.
'"><span class="'.$id.
' tmenuimage" id="mainmenuspan_'.$idsel.
'"></span></div>';
566 print '<a '.$classname.
' id="mainmenua_'.$idsel.
'" href="'.$url.
'"'.($atarget?
' target="'.$atarget.
'"':
'').
'>';
567 print '<span class="mainmenuaspan">';
574 print '<div class="'.$id.
' '.$idsel.
' tmenudisabled"><span class="'.$id.
'" id="mainmenuspan_'.$idsel.
'"></span></div>';
575 print '<a class="tmenudisabled" id="mainmenua_'.$idsel.
'" href="#" title="'.
dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">';
GETPOST($paramname, $check='none', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
print
Draft customers invoices.
print_end_menu_entry_empty($showmode)
Output end menu entry.
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_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...
print_end_menu_array_empty()
Output menu array.
print_start_menu_entry_empty($idsel, $classname, $showmode)
Output start menu entry.
print_text_menu_entry_empty($text, $showmode, $url, $id, $idsel, $classname, $atarget)
Output menu entry.
print_start_menu_array_empty()
Output menu entry.
make_substitutions($text, $substitutionarray, $outputlangs=null)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newva...