Comment (masquer ou desactivé) certain menu ?

Bonjour à toute la communauté,

Je suis nouveau sur Dolibarr mais pleinement satisfait de mes différents essai…
Je suis actuellement sur la version 3.9.1 avec le theme Oblyon.

Je souhaiterais supprimer ou désactiver certain menu dans le panneau de gauche:
J’ai déja réussi en partie grace au autorisation mais tous n’est pas désactivé à l’affichage.

Exemple:
Agenda
- Evénements.:
>Mes événement terminés*
>Mes événements incomplets*

Je souhaiterais masquer ces événements avec une *

J 'espère que ma question reste clair,

Merci par avance

David

Hello,

je sais que ce post date un peu, mais je recherche à faire la même chose.

Si quelqu’un a une idée ?

Merci,

Bonjour,

Que cherchez-vous exactement supprimé les menus qui sont grisés (non accessible) ou bien vraiment ne pas afficher certains menus ?

Si vous souhaitez supprimer les menus dont vous n’avez pas autorisation dessus il faut renseigner le paramétre:

Configuration => Menus => Divers et metre à ON le Masquer les menus non autorisés aussi pour les utilisateurs internes (sinon juste grisés).

Si c’est la 2ème option c’est que vous n’avez pas besoin de ce module est il faut donc le désactiver dans la configuration.

Bonne journée,

C’est la 2e option, sauf que personnellement, j’ai besoin de ce module mais j’ai pas besoin des mentions :

>Mes événement terminés
>Mes événements incomplets

J’ai trouvé la solution, un peu dégeu niveau code mais voici comment j’ai procédé :

Dans le fichier eldy.lib.php, quasiment en bas du fichier (// Menu niveau > 0) :

En dessous de

if ($menu_array[$i]['level'] > 0)

J’ai ajouté une condition qui vérifie si on est admin ou non :

if($user->admin == 1){
Si on est admin, on laisse le code tel quel.

Sinon : je duplique le code et j’y ajoute :

$var1 = substr($menu_array[$i]['url'],-1);
Permet de récupérer l’identifiant du menu présent dans l’url.

Ensuite, je vérifie dans mon URL s’il y a bien la mention agenda à l’aide d’un preg_match afin de ne toucher qu’au code de l’agenda :

if (preg_match("/\bagenda\b/i", $menu_array[$i]['url'])) {

Dans cette condition, j’ajoute une classe id+le numéro du menu ce qui donne :

print '<div class="menu_contenu id'.$var1.'">'.$tabstring;

Sinon, on laisse le print comme il était.

Puis j’ajoute un display none sur les class souhaitée. :happy:

Voici le code en entier :

[code]
// Menu niveau > 0
if ($menu_array[$i][‹ level ›] > 0)
{
if($user->admin == 1){
if ($menu_array[$i][‹ enabled ›])
{
print ‹ 

 ›.$tabstring;
if ($menu_array[$i][‹ url ›]) print ‹ <a class=« vsmenu » href=" ›.$url.’"’.($menu_array[$i][‹ target ›]?’ target="’.$menu_array[$i][‹ target ›].’"’:’’).’>’;
else print ‹  ›;
print $menu_array[$i][‹ titre ›];
if ($menu_array[$i][‹ url ›]) print ‹  ›;
else print ‹ 
 ›;
// If title is not pure text and contains a table, no carriage return added
if (! strstr($menu_array[$i][‹ titre ›],’<table’)) print ‹ 
 ›;
print ‹ 
 ›."\n";
}
else if ($showmenu)
{
print ‹ 
 ›.$tabstring.’’.$menu_array[$i][‹ titre ›].’
’."\n";
}
}else{
if ($menu_array[$i][‹ enabled ›])
{
$var1 = substr($menu_array[$i][‹ url ›],-1);
					if (preg_match("/\bagenda\b/i", $menu_array[$i]['url'])) {
						print '<div class="menu_contenu id'.$var1.'">'.$tabstring;
					}
					else{
						print '<div class="menu_contenu">'.$tabstring;
					}
						if ($menu_array[$i]['url']) print '<a class="vsmenu" href="'.$url.'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>';
						else print '<span class="vsmenu">';
						print $menu_array[$i]['titre'];
						if ($menu_array[$i]['url']) print '</a>';
						else print '</span>';
						// If title is not pure text and contains a table, no carriage return added
						if (! strstr($menu_array[$i]['titre'],'<table')) print '<br>';
						print '</div>'."\n";
					}
					else if ($showmenu)
					{
						print '<div class="menu_contenu">'.$tabstring.'<font class="vsmenudisabled vsmenudisabledmargin">'.$menu_array[$i]['titre'].'</font><br></div>'."\n";
					}
				}
		}[/code]

Pensez-juste bien que vos modifications seront perdues lors de votre prochaine mise à jour de Dolibarr…sauvegardez les!

Il n’y a pas possibilité de faire des override ?

Non. Il n’y a pas de système d’override natif.

Dommage, du coup on est très limité dans nos développement …

1 « J'aime »

Effectivement pour certaines fonctions. En revanche Dolibarr prévoit des surcharges techniques un peu partout( pas d’override de classe) ;pour votre problème vous pouvez créer votre propre système de menus en copiant le menu eldy et faire le vôtre comme cela il ne sera pas écrasé mais il vous faudra maintenir le développement de votre menus.

1 « J'aime »

Ça marche, merci :wink:

j’ai activé ‹ Masquer les menus non autorisés ›
mais ils demeurent grisés
pour les utilisateurs internes : dans la barre du haut et le menu gauche
pour les externes : seulement dans le menu gauche
comment les cacher effectivement ?

pour bien masquer les menus selon les permissions, merci pm17
dans Configuration/Divers, ajouter avec la valeur 1

J’espère ne pas arrivée trop tard j’ai fais un tuto la dessus car une ami avais un problème similaire.
Pour le faire sans toute fois avoir a payer le module adéquat j’ai du toucher le code source:
Recomposer ce lien et Ouvrez le sur votre navigateur.
(entete https)dialrock360.blogspot(point com)/2022/01/how-to-hide-or-disable-some-main-menus.html

Salut je sais que ce poste date un peu mais puis je avoir le code ci dessus un peu mieux formater j’ai le même soucis que vous.
Merci bien