Je tourne en rond sur la gestion des rôles.
J’ai fait un proto rapide avec la fabrique, j’ai un objet A
qui déclare des rôles dans sa liaison avec un objet B
, par une table de liaison spip_A_liens
.
Dans la déclaration de A, j’ai bien :
'roles_colonne' => 'role',
'roles_titres' => [
'role1'=>'A:role_role1',
'role2'=>'A:role_role2',
],
'roles_objets' => [
'B' => [
'choix' => ['role1', 'role2'],
'defaut' => 'role1'],
],
Dans le pipeline affiche_milieu
, la fabrique a bien généré
// A sur les B
if (
$e
and !$e['edition']
and in_array($e['type'], ['B'])
) {
$texte .= recuperer_fond('prive/objets/editer/liens', [
'table_source' => 'A',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']]
]);
}
Et sur la vue d’un B, je peux donc associer des A avec leurs rôles.
Mais je tourne en rond pour faire l’inverse, avec une déclaration dans le pipeline, pour associer des B sur la vue des A :
// B sur les A
if (
$e
and !$e['edition']
and in_array($e['type'], ['A'])
) {
$texte .= recuperer_fond('prive/objets/editer/liens', [
'table_source' => 'B',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']],
'lien' => $e['type']
]);
}
J’ai bien une interface pour l’association de B sur la vue d’un A, mais sans les rôles.
J’ai suivi le code : c’est parce que dans le cas de B sur A roles_presents
ne renvoie rien :
https://git.spip.net/spip/prive/-/blob/2.x/formulaires/editer_liens.php?ref_type=heads#L123
et c’est donc le squelette objets/liste/A_lies.html
qui est appelé au lieu de objets/liste/A_roles_lies.html
J’ai l’impression qu’il y a un manque et que ce n’est pas possible à faire en restant dans les clous.
Me trompe-je ?