Le code ci-dessous permet de composer une chaîne de caractères utilisable en tant que "droits" dans les actions (ID_DROITSP, ID_DROITSM, ID_DROITSV de la table ACTIONS).
Il faut d'abord prendre en compte le fait que si on souhaite accorder des droits à tous, il suffit de renvoyer une chaîne de caractères vide. Si tel n'est pas le cas, on peut utiliser ce code.
private string getDroits()
{
using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
{
var group_tech = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Tech");
if (group_tech != null)
{
var node_guy = group_tech.Nodes.FirstOrDefault(n => n.Text == "Guy");
if (node_guy != null)
node_guy.Checked = true;
}
var group_comm = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Comm");
if (group_comm != null)
{
var node_wim = group_comm.Nodes.FirstOrDefault(n => n.Text == "Wim");
if (node_wim != null)
node_wim.Checked = true;
}
var group_hors = droits.Tree.Nodes.FirstOrDefault(n => n.DataKeyString == "GROUP_??????????");
if (group_hors != null)
{
var node_stephane = group_hors.Nodes.FirstOrDefault(n => n.Text == "Stephane");
if (node_stephane != null)
node_stephane.Checked = true;
}
return droits.Value;
}
}
Notez qu'il n'est jamais nécessaire de cocher un nœud de groupe. Le statut de ces nœuds est géré automatiquement par Mercator.
En ce qui concerne "Droits pour" (ID_DROITSP), il faut fixer au préalable la propriété IdProprio
private string getDroits()
{
using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
{
droits.IdProprio = "..."; // id user
...
}
}
Il est aussi possible de modifier une chaîne existante (et valide) avec un code tel que celui-ci. Dans le groupe "Tech", cocher "Guy2" et dans le groupe "Comm", décocher "Wim"
var s = getDroits();
using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
{
droits.Value = s;
var group_tech = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Tech");
if (group_tech != null)
{
var node_guy2 = group_tech.Nodes.FirstOrDefault(n => n.Text == "Guy2");
if (node_guy2 != null)
node_guy2.Checked = true;
}
var group_comm = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Comm");
if (group_comm != null)
{
var node_wim = group_comm.Nodes.FirstOrDefault(n => n.Text == "Wim");
if (node_wim != null)
node_wim.Checked = false;
}
s = droits.Value;
}
Les nœuds peuvent être identifiés par leur propriété DataKeyString (comme le nœud du groupe "Hors groupe" dans le premier code). Cette propriété est construite comme ceci :
- Nœud "Tous" : "EVERYONE"
- Nœud "Propriétaire" : "CREATOR_" + IdProprio
- Nœud de groupe : "GROUP_" + id du groupe
- Nœud du groupe "Hors groupe" : "GROUP_??????????"
- Nœud utilisateur : "USER_" + id du groupe+ "_" + id de l'utilisateur