Skip to content
Extraits de code Groupes Projets
Valider abc7193e rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Intégration dans SPIP de la possibilité de gérer des liens entre objets

avec des rôles.

On intègre l'API présente actuellement dans le plugin Rôles, en modifiant
un peu les fonctions d'édition de liens.

Celles-ci permettent maintenant d'éditer des liens ayant donc des rôles.
Ces différents rôles et le nom de la colonne SQL qui les reçoit,
s'ils sont utilisés, doivent être déclarés avec la déclaration
de l'objet éditorial correspondant.

Un exemple est donné avec le plugin «Roles auteurs» qui définit
quelques rôles. Les champs décrivant les rôles : `roles_colonne`, `roles_titres` et `roles_objets`
doivent être déclarés (via le pipeline declarer_tables_objets_sql).

```
"roles_colonne" => "role",
"roles_titres" => array(
	'redacteur'  => 'info_statut_redacteur',
	'traducteur' => 'roles_auteurs:traducteur',
	'correcteur' => 'roles_auteurs:correcteur',
	'relecteur'  => 'roles_auteurs:relecteur',
),
"roles_objets" => array(
	'articles' => array(
		'choix' => array('redacteur', 'traducteur', 'correcteur', 'relecteur'),
		'defaut' => 'redacteur'
	)
	#'*' => array()
)
```

Une fois déclaré, on peut appeler les fonctions d'édition de lien
en transmettant des valeurs de rôles, tel que :

```
objet_associer(
	array('auteur' => 3),
	array('article' => 11),
	array('role' => 'correcteur')
);

// utilisera le rôle par défaut
objet_associer(
	array('auteur' => 3),
	array('article' => 11)
);
```

Si aucun rôle n'est indiqué, le rôle par défaut est appliqué.

Dans le cas d'une dissociation également, si aucun rôle n'est indiqué,
seuls les liaisons avec le rôle par défaut seront supprimés ; pour
supprimer tous les rôles, il faut à ce moment là indiquer '*' :

```
objet_dissocier(
	array('auteur' => 3),
	array('article' => 11),
	array('role' => 'correcteur')
);

// utilisera le rôle par défaut
objet_dissocier(
	array('auteur' => 3),
	array('article' => 11)
);

// enlèvera tous les rôles
objet_dissocier(
	array('auteur' => 3),
	array('article' => 11),
	array('role' => '*')
);
```


Le formulaire d'édition de liens n'utilisera pas les mêmes squelettes
de liaison lorsqu'une colonne de rôle est déclarée.

Ainsi dans cet exemple, au lieu de `prive/objets/liste/auteurs_lies.html`
et `auteurs_associer.html`, cela utiliserait `prive/objets/liste/auteurs_roles_lies.html`
et `auteurs_roles_associer.html`. Il faut donc créer ces squelettes.


Ces squelettes peuvent poster les valeurs au formulaire pour insérer
de nouveaux liens, de la forme `qualifier_lien[auteur-3-article-11][role]`
en postant `redacteur` par exemple.

Il est possible au passage de poster en plus d'autres valeurs, qui seront
intégrées dans l'enregistrement du lien.
Ainsi, poster en même temps `qualifier_lien[auteur-3-article-11][valeur]` = `50`
enregistrera la valeur 50 dans la colonne `valeur` de la table de lien (qui doit
exister !).

D'autres informations sont présentes dans http://contrib.spip.net/Des-roles-sur-des-liens,
http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles_auteurs ou encore
http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles
parent ea418c69
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Chargement en cours
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter