DotClear : fonction d'édition dans les billets
Par Benjamin le vendredi 11 mars 2005, 13h53 - DotClear - Lien permanent - URL miniature
L'idée avait été soulevée par dan_cak sur le forum DotClear. La fonction allait permettre d'afficher un lien d'édition sur les pages des billets avec un lien direct vers la partie administration, et ce uniquement pour les rédacteurs qui auraient une session active. Vu que je trouvais l'idée bien bonne, j'ai fais quelques bricolages et essais pour en arriver finalement à ce bout de code qui fonctionne ici.
dans 'post.php', après le lien permanent et le lien du fil rss
<?php $idcookie = unserialize($_COOKIE['dc_admin']); $identifiant = $idcookie["user_id"]; if(!empty($identifiant)) { global $blog; $sql = "SELECT `user_id`, `user_nom`, `user_prenom`, `user_pseudo`, `user_level` FROM `".DB_PREFIX."user` WHERE `user_id` = '$identifiant'"; $rs = $blog->con->select($sql, "editlink", false); if($rs->f('user_pseudo')) { $id = $rs->f('user_pseudo'); } else { $id = ($rs->f('user_prenom')) ? $rs->f('user_prenom')." ".$rs->f('user_nom') : $rs->f('user_nom'); } $level = $rs->f('user_level'); } if($level == 9 || $id == $GLOBALS['news']->getUserCN()): ?> <span>::</span> <a href="/blog/ecrire/poster.php?post_id=<?php dcPostID(); ?>" title="éditer ce billet">éditer</a> <?php endif; ?>
Le code vérifie donc le champ 'user_id' du cookie 'dc_admin' et s'il le trouve, il vérifie dans la base de données le nom et le niveau de l'utilisateur. Si on a affaire à un administrateur (niveau 9), on affiche le lien sur tous les billets. Dans le cas contraire, on vérifie simplement si le nom du rédacteur est bien celui de l'auteur du billet 
Commentaires
je taf sur une fonction, car je ne veux pas modifier le post.php
j'ai constaté qu'effectivement ton code fonctionne
en fait je cherche à faire une fonction (donc dans fonctions.php) mais ou seul l'auteur peut modifier (meme pas l'admin .. pas besoin) et je ne vois pas ... je cale
rectification je viens de tester ton code, chez moi il ne marche pas
mon admin post un message, je m'identifie avec un redacteur et tous les billets ont le lien "editer"
remplace simplement
if($level == 9 || $id == $GLOBALS['news']->getUserCN()):
par
if($id == $GLOBALS['news']->getUserCN()):
ca marche
cv.createkater.com/blog/i...
en revanche le code qui permet de colorer le texte m'interesse enormément
quel code ? quelle coloration ?
Si tu n'as qu'un seul rédacteur, autant mettre ce lien là qui fait tout: <a href="ecrire/poster.php?post_id=<?php dcPostID(); ?>">Editer ce billet (admin)</a>
Super ! Merci pour ce système !!!!