Limiter les accès aux états dans le Menu en fonction des droits utilisateur

Bonjour,

Pour éviter d’avoir systématiquement à l’affichage une longue liste d’un diagramme d’état, serait-il possible d’ajouter l’option « Etendu » au niveau de ses états ? avec en affichage permanent seulement « Tout voir » et « Banettes », les statuts détaillés, qui sont cochés « étendu » seront affichés seulement si on ouvre le sous-menu (via la flèche d’extension du sous-menu) ?

Merci d’avance pour votre retour.

Abed.

Oui c’est envisageable de faire cette évolution en V5, la V4 en release étant figée au niveau méta-modèle MPD.

En V4 vous pouvez uniquement masquer certains états de menu via CSS :

.main-menu [data-obj="MyObject"][data-state="XXX"] {
   display: none;
}

ou les retirer dans le handler ui.ready :

$('.main-menu [data-obj="MyObject"][data-state="XXX"]').remove();

ou paramétrer les états comme non visibles dans le menu (Accès direct = non).

Merci @Francois pour cette info.
Serait-il possible aussi d’ajouter une option qui permet d’afficher (O/N) uniquement les statuts qui ont des lignes correspondantes dans l’objet en question ? exemple : si l’utilisateur connecté n’a accès à aucun bail loué, le statut « Loué » ne sera pas affiché dans la liste.
Ceci permettra d’éviter de surcharger inutilement les menus avec des statuts qui ne sert pas à l’utilisateur à l’instant T (même si on aura l’option “Étendu”).

Il n’y a pas d’habilitation sur les sous-items “statuts” de menu dans le méta-modèle.

Pour traiter ce besoin, il faut à mon avis améliorer le hook isMenuEnable en incluant plsu de paramètres. On va regarder ce qu’on peut faire.

Un nouveau PlatformHooks est disponible en 5.4, actuellement en alpha :

public boolean isMenuItemEnabled(Grant g, MenuItem item,
    ObjectField field, MenuItem.State state, EnumItem enumItem, Activity activity);

Il permet de limiter les accès :

  • item = à un item du menu (objet interne/externe, vue, process) dans un domaine donné
  • field = à un champ statut ou énuméré (optionnel)
  • state = accès direct à un état du champ statut (optionnel)
  • enumItem = accès direct à un item du champ liste de valeurs (optionnel)
  • activity = accès direct à une activité d’un processus long (optionnel)

PlatformHooks.isMenuEnable sera donc encore appelé mais deprecated.