Sur un lien N,N affiché en pillbox, j’aimerais que création, suppression et modification ne soient pas possibles si le parent ne peut pas être modifié. Mais j’ai l’impression que cela ne fonctionne pas comme pour les affichages en panel.
le parent est-il renseigné pour un affichage en pillbox ?
quelle est la fonction à utiliser pour identifier l’instance ? Je n’ai pas trouvé de méthode ressemblant à IsPillboxInstance, est-ce qu’il faut utiliser IsPanelInstance ?
Une pillbox UI simplifie l’affichage d’une liste fille complète et donc ne fonctionne pas tout à fait comme un panel complet.
Les actions de la pillbox ($ui.displayReferencePillbox) s’affichent en fonction des droits (grant.accessCreate, accessDelete… de la N,N) ou d’un paramètre read=true, mais ne doivent pas tenir compte des metadata remontés par les hooks de l’instance “panel” comme pour une liste fille.
On va regarder pour que ça en tienne compte (appel des metadata + filtrage des actions possibles).
Après vérification, les metadata du CONTEXT_PANELLIST sont effectivement présentes en front même pour une pillbox, l’évolution sera donc très simple à faire pour tenir compte du retour des hooks de la N,N.
@Override
public boolean isCreateEnable(String[] row) {
ObjectDB parent = getParentObject();
if (parent!=null && isPanelInstance() && parent.getName().equals("xxx"))
return parent.isUpdateEnable(parent.getValues());
...
}
Plutot que de ré-appeler les hooks parent ce qui peut prendre du temps car appelés de nombreuses fois pour chaque ligne d’une liste fille * (création + copy + suppr…).
Il faudrait passer par une variable qui indique que l’objet parent X est non modifiable.
Dans le hook parent isUpdateEnable : grant.setParameter("MY_UPDATE_X", "yes" or "no");
et dans les hooks isCreateEnable et isDeleteEnable de la N,N ...return "yes".equals(grant.getParameter("MY_UPDATE_X"));