Messages : 10,864
Sujets : 164
Inscription : Dec 2008
Réputation :
0
non, pas de mémoire en tout cas. :/
En modifiant le code du fichier editarticle.tpl (dans le module News), il est possible de créer une condition d'affichage de la liste des articles en fonction des utilisateurs (ça relève de la bidouille mais ça marche).
J'ai créé une balise utilisateur en php qui me permet de transférer les variables dans ce template.
Dès lors, ma question se résume à comment récupérer la variable id utilisateur (backend) ou id groupe en php ?
merci.
Bon je me réponds.
Cela relève de la bidouille mais ça marche.
Il faut créer des catégories d'article qui ont le même nom que les utilisateurs.
Exemple : l'utilisateur 'laurent' aura une catégorie d'article s’appelant 'laurent'.
On crée une balise utilisateur test (par exemple) qui récupère le nom d'utilisateur par la fonction $_SESSION :
if(isset($_SESSION['cms_admin_username']))
{
$userjack=$_SESSION['cms_admin_username'];
}
if($userjack=='admin') // si l'utilisateur est admin alors il a le droit de voir tous les articles.
{
$userjack='all';
}
$smarty->assign('userjack', $userjack);
On fait appel à la balise utilisateur dans le fichier template des News : articlelist.tpl
à la ligne 75 :
{foreach from=$items item=entry}
{test} on appelle la balise utilisateur qui nous donne le nom de l'utilisateur
{if $entry->category|strstr:$userjack or $userjack|strstr:'all'} on compare avec la catégorie qui doit porter le même nom ou all pour tout voir (admin)
<tr class="{$entry->rowclass}">
<td>{$entry->title}</td>
<td>{$entry->u_postdate|cms_date_format}</td>
......
{/if}
{/foreach}
Voilà cela permet à l'utilisateur 'laurent' de ne voir que les articles de la catégorie 'laurent'
Rien n'empêche de créer des sous catégories avec des noms différents. L'essentiel étant que la catégorie mère porte le nom de l'utilisateur.
admin quant à lui peut tout voir.
Bon c'est sûr, c'est pas propre et cela relève d'une pirouette mais en tout cas ça fonctionne pour moi.
a++
merci, effectivement je n'avais pas pensé aux mises à jour.
On doit également mettre l'appel à la balise {test} hors de la boucle foreach de articlelist.tpl, comme ça c'est mieux :
à la ligne 75 :
{test} on appelle la balise utilisateur qui nous donne le nom de l'utilisateur
{foreach from=$items item=entry}
{if $entry->category|strstr:$userjack or $userjack|strstr:'all'} on compare avec la catégorie qui doit porter le même nom ou all pour tout voir (admin)
<tr class="{$entry->rowclass}">
<td>{$entry->title}</td>
<td>{$entry->u_postdate|cms_date_format}</td>
......
{/if}
{/foreach}
a++
Exact, j'ai été obligé de modifier le code source. Ce serait bien qu'un module soit développé pour ça. Je pense que ça peut servir à pas mal de monde.
En tout cas merci pour le coup de main.
a+