Fix menu entried must be greyed, sub menus not visible fi not allowed on

parent.
This commit is contained in:
Laurent Destailleur 2017-06-10 19:16:42 +02:00
parent 75452e6d19
commit 890ac81e4d
5 changed files with 145 additions and 27 deletions

View File

@ -5949,8 +5949,9 @@ function printCommonFooter($zone='private')
print '<!-- Set handler to switch left menu page (menuhider) -->'."\n"; print '<!-- Set handler to switch left menu page (menuhider) -->'."\n";
print 'jQuery(".menuhider").click(function() {'; print 'jQuery(".menuhider").click(function() {';
print ' console.log("We click on .menuhider");'."\n"; print ' console.log("We click on .menuhider");'."\n";
print " $('.side-nav').toggle();"; //print " $('.side-nav').animate({width:'toggle'},200);\n"; // OK with eldy theme but not with md
print " $('.login_block').toggle();"; print " $('.side-nav').toggle()\n";
print " $('.login_block').toggle()\n";
print '});'."\n"; print '});'."\n";
} }

View File

@ -115,7 +115,7 @@ class MenuManager
/** /**
* Show menu * Show menu
* *
* @param string $mode 'top', 'left', 'jmobile' * @param string $mode 'top', 'left', 'jmobile' (used to get full xml ul/li menu)
* @param array $moredata An array with more data to output * @param array $moredata An array with more data to output
* @return int 0 or nb of top menu entries if $mode = 'topnb' * @return int 0 or nb of top menu entries if $mode = 'topnb'
*/ */
@ -143,10 +143,13 @@ class MenuManager
return $this->menu->getNbOfVisibleMenuEntries(); return $this->menu->getNbOfVisibleMenuEntries();
} }
if ($mode == 'jmobile') if ($mode == 'jmobile') // Used to get menu in xml ul/li
{ {
print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode);
// $this->menu->liste is top menu
//var_dump($this->menu->liste);exit;
$lastlevel = array();
print '<!-- Generate menu list from menu handler '.$this->name.' -->'."\n"; print '<!-- Generate menu list from menu handler '.$this->name.' -->'."\n";
foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
{ {
@ -157,9 +160,17 @@ class MenuManager
$relurl=dol_buildpath($val['url'],1); $relurl=dol_buildpath($val['url'],1);
$relurl=preg_replace('/__LOGIN__/',$user->login,$relurl); $relurl=preg_replace('/__LOGIN__/',$user->login,$relurl);
$relurl=preg_replace('/__USERID__/',$user->id,$relurl); $relurl=preg_replace('/__USERID__/',$user->id,$relurl);
$canonurl=preg_replace('/\?.*$/','',$val['url']);
print '<a class="alilevel0" href="#">'.$val['titre'].'</a>'."\n"; print '<a class="alilevel0" href="#">';
// Search submenu fot this entry
// Add font-awesome
if ($val['level'] == 0 && $val['mainmenu'] == 'home') print '<span class="fa fa-home fa-fw paddingright" aria-hidden="true"></span>';
print $val['titre'];
print '</a>'."\n";
// Search submenu fot this mainmenu entry
$tmpmainmenu=$val['mainmenu']; $tmpmainmenu=$val['mainmenu'];
$tmpleftmenu='all'; $tmpleftmenu='all';
$submenu=new Menu(); $submenu=new Menu();
@ -179,19 +190,48 @@ class MenuManager
print '<a href="'.$relurl.'">'; print '<a href="'.$relurl.'">';
if ($langs->trans(ucfirst($val['mainmenu'])."Dashboard") == ucfirst($val['mainmenu'])."Dashboard") // No translation if ($langs->trans(ucfirst($val['mainmenu'])."Dashboard") == ucfirst($val['mainmenu'])."Dashboard") // No translation
{ {
if ($val['mainmenu'] == 'cashdesk') print $langs->trans("Access"); if (in_array($val['mainmenu'], array('cashdesk', 'websites'))) print $langs->trans("Access");
else print $langs->trans("Dashboard"); else print $langs->trans("Dashboard");
} }
else print $langs->trans(ucfirst($val['mainmenu'])."Dashboard"); else print $langs->trans(ucfirst($val['mainmenu'])."Dashboard");
print '</a>'; print '</a>';
print '</li>'."\n"; print '</li>'."\n";
} }
foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
if ($val['level']==0)
{
if ($val['enabled'])
{
$lastlevel[0]='enabled';
}
else if ($showmenu) // Not enabled but visible (so greyed)
{
$lastlevel[0]='greyed';
}
else
{
$lastlevel[0]='hidden';
}
}
$lastlevel2 = array();
foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
{ {
$showmenu=true; $showmenu=true;
if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false; if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false;
if ($showmenu) // Visible (option to hide when not allowed is off or allowed) // If at least one parent is not enabled, we do not show any menu of all children
if ($val2['level'] > 0)
{
$levelcursor = $val2['level']-1;
while ($levelcursor >= 0)
{
if ($lastlevel2[$levelcursor] != 'enabled') $showmenu=false;
$levelcursor--;
}
}
if ($showmenu) // Visible (option to hide when not allowed is off or allowed)
{ {
$relurl2=dol_buildpath($val2['url'],1); $relurl2=dol_buildpath($val2['url'],1);
$relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2); $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2);
@ -199,8 +239,17 @@ class MenuManager
$canonurl2=preg_replace('/\?.*$/','',$val2['url']); $canonurl2=preg_replace('/\?.*$/','',$val2['url']);
//var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']);
if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2='';
if ($val2['level']==0) print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).' ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic
else print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).'">'; // ui-btn to highlight on clic $disabled='';
if (! $val2['enabled'])
{
$disabled=" vsmenudisabled";
}
print str_pad('',$val2['level']+1);
print '<li class="lilevel'.($val2['level']+1);
if ($val2['level']==0) print ' ui-btn-icon-right ui-btn'; // ui-btn to highlight on clic
print $disabled.'">'; // ui-btn to highlight on clic
if ($relurl2) if ($relurl2)
{ {
if ($val2['enabled']) // Allowed if ($val2['enabled']) // Allowed
@ -208,12 +257,25 @@ class MenuManager
print '<a href="'.$relurl2.'"'; print '<a href="'.$relurl2.'"';
//print ' data-ajax="false"'; //print ' data-ajax="false"';
print '>'; print '>';
$lastlevel2[$val2['level']]='enabled';
} }
else // Not allowed but visible (greyed) else // Not allowed but visible (greyed)
{ {
print '<a href="#" class="vsmenudisabled">'; print '<a href="#" class="vsmenudisabled">';
$lastlevel2[$val2['level']]='greyed';
} }
} }
else
{
if ($val2['enabled']) // Allowed
{
$lastlevel2[$val2['level']]='enabled';
}
else
{
$lastlevel2[$val2['level']]='greyed';
}
}
print $val2['titre']; print $val2['titre'];
if ($relurl2) if ($relurl2)
{ {

View File

@ -113,7 +113,7 @@ class MenuManager
/** /**
* Show menu * Show menu
* *
* @param string $mode 'top', 'topnb', 'left', 'jmobile' * @param string $mode 'top', 'topnb', 'left', 'jmobile' (used to get full xml ul/li menu)
* @param array $moredata An array with more data to output * @param array $moredata An array with more data to output
* @return int 0 or nb of top menu entries if $mode = 'topnb' * @return int 0 or nb of top menu entries if $mode = 'topnb'
*/ */
@ -125,7 +125,7 @@ class MenuManager
if ($this->type_user == 1) if ($this->type_user == 1)
{ {
$conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED=0; $conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED=1;
$conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED=1; $conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED=1;
} }
@ -150,12 +150,13 @@ class MenuManager
return $this->menu->getNbOfVisibleMenuEntries(); return $this->menu->getNbOfVisibleMenuEntries();
} }
if ($mode == 'jmobile') if ($mode == 'jmobile') // Used to get menu in xml ul/li
{ {
print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); // Fill this->menu that is empty with top menu print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); // Fill this->menu that is empty with top menu
// $this->menu->liste is top menu // $this->menu->liste is top menu
//var_dump($this->menu->liste);exit; //var_dump($this->menu->liste);exit;
$lastlevel = array();
print '<!-- Generate menu list from menu handler '.$this->name.' -->'."\n"; print '<!-- Generate menu list from menu handler '.$this->name.' -->'."\n";
foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
{ {
@ -167,7 +168,7 @@ class MenuManager
$relurl=dol_buildpath($val['url'],1); $relurl=dol_buildpath($val['url'],1);
$relurl=preg_replace('/__LOGIN__/',$user->login,$relurl); $relurl=preg_replace('/__LOGIN__/',$user->login,$relurl);
$relurl=preg_replace('/__USERID__/',$user->id,$relurl); $relurl=preg_replace('/__USERID__/',$user->id,$relurl);
$canonurl=preg_replace('/\?.*$/','',$val['url']);
print '<a class="alilevel0" href="#">'; print '<a class="alilevel0" href="#">';
@ -176,6 +177,7 @@ class MenuManager
print $val['titre']; print $val['titre'];
print '</a>'."\n"; print '</a>'."\n";
// Search submenu fot this mainmenu entry // Search submenu fot this mainmenu entry
$tmpmainmenu=$val['mainmenu']; $tmpmainmenu=$val['mainmenu'];
$tmpleftmenu='all'; $tmpleftmenu='all';
@ -195,9 +197,7 @@ class MenuManager
{ {
// We add sub entry // We add sub entry
print str_pad('',1).'<li class="lilevel1 ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic print str_pad('',1).'<li class="lilevel1 ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic
print '<a href="'.$relurl.'"'; print '<a href="'.$relurl.'">';
//print ' data-ajax="false"';
print '>';
if ($langs->trans(ucfirst($val['mainmenu'])."Dashboard") == ucfirst($val['mainmenu'])."Dashboard") // No translation if ($langs->trans(ucfirst($val['mainmenu'])."Dashboard") == ucfirst($val['mainmenu'])."Dashboard") // No translation
{ {
if (in_array($val['mainmenu'], array('cashdesk', 'websites'))) print $langs->trans("Access"); if (in_array($val['mainmenu'], array('cashdesk', 'websites'))) print $langs->trans("Access");
@ -208,11 +208,39 @@ class MenuManager
print '</li>'."\n"; print '</li>'."\n";
} }
foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'] if ($val['level']==0)
{
if ($val['enabled'])
{
$lastlevel[0]='enabled';
}
else if ($showmenu) // Not enabled but visible (so greyed)
{
$lastlevel[0]='greyed';
}
else
{
$lastlevel[0]='hidden';
}
}
$lastlevel2 = array();
foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
{ {
$showmenu=true; $showmenu=true;
if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false; if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false;
// If at least one parent is not enabled, we do not show any menu of all children
if ($val2['level'] > 0)
{
$levelcursor = $val2['level']-1;
while ($levelcursor >= 0)
{
if ($lastlevel2[$levelcursor] != 'enabled') $showmenu=false;
$levelcursor--;
}
}
if ($showmenu) // Visible (option to hide when not allowed is off or allowed) if ($showmenu) // Visible (option to hide when not allowed is off or allowed)
{ {
$relurl2=dol_buildpath($val2['url'],1); $relurl2=dol_buildpath($val2['url'],1);
@ -221,8 +249,17 @@ class MenuManager
$canonurl2=preg_replace('/\?.*$/','',$val2['url']); $canonurl2=preg_replace('/\?.*$/','',$val2['url']);
//var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']);
if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2='';
if ($val2['level']==0) print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).' ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic
else print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).'">'; // ui-btn to highlight on clic $disabled='';
if (! $val2['enabled'])
{
$disabled=" vsmenudisabled";
}
print str_pad('',$val2['level']+1);
print '<li class="lilevel'.($val2['level']+1);
if ($val2['level']==0) print ' ui-btn-icon-right ui-btn'; // ui-btn to highlight on clic
print $disabled.'">'; // ui-btn to highlight on clic
if ($relurl2) if ($relurl2)
{ {
if ($val2['enabled']) // Allowed if ($val2['enabled']) // Allowed
@ -230,13 +267,28 @@ class MenuManager
print '<a href="'.$relurl2.'"'; print '<a href="'.$relurl2.'"';
//print ' data-ajax="false"'; //print ' data-ajax="false"';
print '>'; print '>';
$lastlevel2[$val2['level']]='enabled';
} }
else // Not allowed but visible (greyed) else // Not allowed but visible (greyed)
{ {
print '<a href="#" class="vsmenudisabled">'; print '<a href="#" class="vsmenudisabled">';
$lastlevel2[$val2['level']]='greyed';
} }
} }
print $val2['titre']; else
{
if ($val2['enabled']) // Allowed
{
$lastlevel2[$val2['level']]='enabled';
}
else
{
$lastlevel2[$val2['level']]='greyed';
}
}
//var_dump($val2['level']);
//var_dump($lastlevel2);
print $val2['titre'];
if ($relurl2) if ($relurl2)
{ {
if ($val2['enabled']) // Allowed if ($val2['enabled']) // Allowed
@ -246,6 +298,8 @@ class MenuManager
} }
print '</li>'."\n"; print '</li>'."\n";
} }
} }
//var_dump($submenu); //var_dump($submenu);
print '</ul>'; print '</ul>';

View File

@ -1790,6 +1790,7 @@ a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu {
font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; } font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; }
a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; white-space: nowrap; } a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; white-space: nowrap; }
font.vsmenudisabledmargin { margin: 1px 1px 1px 6px; } font.vsmenudisabledmargin { margin: 1px 1px 1px 6px; }
li a.vsmenudisabled, li.vsmenudisabled { color: #aaa !important; }
a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { font-size:<?php print $fontsizesmaller ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; text-decoration: none; } a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { font-size:<?php print $fontsizesmaller ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; text-decoration: none; }

View File

@ -1678,7 +1678,7 @@ div.login_block {
vertical-align: middle; vertical-align: middle;
background: #FFF; background: #FFF;
width: 228px; width: 228px;
height: 42px; height: 43px;
<?php if (GETPOST('optioncss','aZ09') == 'print') { ?> <?php if (GETPOST('optioncss','aZ09') == 'print') { ?>
display: none; display: none;
<?php } ?> <?php } ?>