|
Claire Spaenlein
|
Vendredi 16 Mars 2007 4:51:58 pm
Faire afficher 1 objet en fonction des droits utilisateurs
Bonjour,
Je recherche le code ez permettant de faire afficher le bouton "publier" (donnant accès à un formulaire) en fonction des droits de l'utilisateur courant. Je m'explique : à l'heure actuelle, sur mon site, A, B et C voient tous le bouton "publier" donnant accès au formulaire de création d'articles en ligne. Or seul A a le droit de créer et publier des articles dans la section concernée (B et C se voient l'accès refusé quand ils cliquent sur "publier" . Pour plus de cohérence, j'aimerais que B et C ne puissent pas voir le bouton "publier". Pouvez-vous me prêter main forte pour écrire le template correspondant (si l'utilisateur courant a le droit de créer et publier un article dans la section S, alors afficher le bouton "publier", sinon, ne rien afficher)?
Merci d'avance pour votre aide
Claire S.
|
|
Sylvain Guittard
|
Vendredi 16 Mars 2007 11:13:24 pm
Re: Faire afficher 1 objet en fonction des droits utilisateurs
Bonjour Claire,
Une petite remarque préalable: je trouve étonnant que tes utilisateurs voient un bouton "Publier". Je ne sais pas quelle version tu utilises, mais si j'ai bien compris ton bouton "Publier" sert à la création d'article.
En fait, tu as 3 utilisateurs: A peut créer des articles, B et C ne peuvent pas en créer.
1) Définir les droits:
-Créer 3 rôles différents.
-Mettre dans le rôle A, la politique content/create/article, content/edit/article. Tu peux définir des restrictions supplémentaires si tu ne veux pas que A puisse publier partout.
2) Surcharger le template pour la classe FOLDER:
Généralement, les articles se situent en dessous des rubriques. Il faut donc surcharger le template node/view/full pour la classe "folder".
Reprendre le code du template précédent (celui de la rubrique), et ajouter le code suivant:
{* Authorisation création ? *}
{section show=count($node.object.can_create_class_list)}
<form method="post" action={"/content/action"|ezurl}>
<input type="hidden" name="NodeID" value="{$node.node_id}" />
<select name="ClassID">
{section var=class loop=$node.object.can_create_class_list}
<option value="{$class.id}">{$class.name|wash}</option>
{/section}
</select>
<input type="submit" name="NewButton" value="{'Create here'|i18n('design/standard/node/view')}" />
</form>
{section-else}
Pour ajouter un article, <a href={"/user/login"|ezurl()}>identifiez-vous </a>
{/section}
3) Surcharger le template pour la classe ARTICLE
Je pense qu'il faut aussi permettre à A de pouvoir modifier son article après publication. Pour cela, il faut surcharger le template node/view/full pour la classe "article".
Reprendre le code du template précédent (celui de l'article) et ajouter le code:
{* Authorisation modification ? *}
{section show=$node.object.can_edit}
<form method="get" action={concat("/content/edit/", $node.object.id)|ezurl}>
<input class="button" type="submit" name="EditButton" value="{'Edit'|i18n('design/standard/node/view')}" />
<input type="hidden" name="ContentNodeID" value="{$node.node_id}" />
<input type="hidden" name="ContentObjectID" value="{$node.object.id}" />
<input type="hidden" name="ViewMode" value="full" />
</form>
{/section}
Voila.
En espérant que cela puisse t'aider.
Bon courage,
Sylvain
|
|
Claire Spaenlein
|
Vendredi 23 Mars 2007 4:18:20 pm
Re: Faire afficher 1 objet en fonction des droits utilisateurs
Merci pour tout, cela fonctionne parfaitement!!
Pour info, j'utilise la version 3.8.6, et le bouton "publier" sert effectivment à la création d'articles.
Claire S.
|