jeudi 21 septembre 2006

Dotclear2 et les gravatars

Voici une astuce pour gérer les gravatars dans les commentaires de votre blog Dotclear2. Dans le répertoire de votre thème courant, créez un fichier _public.php et ajoutez-y ces quelques lignes de code [1] :

<?php
$core->tpl->addValue('gravatar', array('gravatar', 'tplGravatar'));
class gravatar {
  public static function tplGravatar($attr)
  {
    return '<?php echo md5(strtolower($_ctx->comments->getEmail(false))); ?>';
  }
}
?>

Maintenant, dans votre fichier de template pour les billets (généralement, il s'agit de post.html), vous pouvez appeller votre image de gravatar de cette façon entre les balises <tpl:Comments> et </tpl:Comments> :

<img src="http://www.gravatar.com/avatar.php?gravatar_id={{tpl:gravatar}}"
     class="gravatar_img" alt="Gravatar Image" />

Voila, c'est codé en 5 minutes et vous aurez constaté que je ne génère pas directement l'url complète du gravatar et encore moins la syntaxe HTML de la balise image depuis la classe PHP, c'est tout simplement car :

  1. J'en ai la flemme,
  2. Je préfère gérer ça dans le template.

Hope it helps anyway :)

Edit du 22 septembre 2006

Bon, voila finalement une version un poil plus customizable. Le code qui suit annule et remplace le précedent dans votre fichier _public.php :

<?php
$core->tpl->addValue('gravatar', array('gravatar', 'tplGravatar'));

class gravatar {

  const
    URLBASE = 'http://www.gravatar.com/avatar.php?gravatar_id=%s&amp;default=%s&amp;size=%d',
    HTMLTAG = '<img src="%s" class="%s" alt="%s" />',
    DEFAULT_SIZE = '40',
    DEFAULT_CLASS = 'gravatar_img',
    DEFAULT_ALT = 'Gravatar de %s';

  public static function tplGravatar($attr)
  {
    $md5mail = '\'.md5(strtolower($_ctx->comments->getEmail(false))).\'';
    $size    = array_key_exists('size',   $attr) ? $attr['size']   : self::DEFAULT_SIZE;
    $class   = array_key_exists('class',  $attr) ? $attr['class']  : self::DEFAULT_CLASS;
    $alttxt  = array_key_exists('alt',    $attr) ? $attr['alt']    : self::DEFAULT_ALT;
    $altimg  = array_key_exists('altimg', $attr) ? $attr['altimg'] : '';
    $gurl    = sprintf(self::URLBASE,
                       $md5mail, urlencode($altimg), $size);
    $gtag    = sprintf(self::HTMLTAG,
                       $gurl, $class, eregi("%s", $alttxt) ?
                                      sprintf($alttxt, '\'.$_ctx->comments->comment_author.\'') : $alttxt);
    return '<?php echo \'' . $gtag . '\'; ?>';
  }

}
?>

Du côté de votre template post.html et toujours entre vos deux balises <tpl:Comments> et </tpl:Comments>, voila comment ça se passe :

{{tpl:gravatar class="gravatar_img" size="80" altimg="http://www.example.host/default_gravatar.png" alt="Gravatar de %s"}}

Je crois que les attributs sont assez parlants, mais en voici le détail au cas où :

  • class : le nom de la classe CSS à appliquer à l'image
  • size : la taille en pixels
  • alt : Le contenu du texte alternatif à l'image (acepte la syntaxe de sprintf)
  • altimg : L'url de l'image par defaut en l'absence de gravatar (sera url encodée automatiquement)

Enjoy.

Finalement, voila le plugin :-)

Bon, je suis incorrigible mais l'occasion était trop belle pour commencer à mettre le nez dans le nouveau système de plugins de Dotclear2 ; voici donc le plugin Gravatars [2] :

Bien évidemment, pour une toute première version, il doit exister quelques bugs et limitations :

  • Pas de traduction française
  • Pas d'aide contextuelle
  • Pas de configuration par blog (à venir)
  • Utilisation d'un archaïque fichier INI (pas compris comment mettre les settings en base)

Au chapitre des fonctionnalités :

  • Possibilité de définir les paramètres des gravatars de façon globale...
  • ou individuellement au niveau du template d'appel (voir plus haut)

Edit du 25 août 2007 : Grâce à Goulven, vous avez droit à la version patchée compatible Dotclear2b7 du plugin :

Notes

[1] Prochaine étape : gérer la coloration syntaxique du code dans Dotclear2.

[2] Packagé grâce au plugin Pack it! d'Elaboration.be

dimanche 30 octobre 2005

Citer proprement un mail

Ce billet en fera certainement sourire plus d'un (vétérans d'Usenet, bonsoir), mais au vu du nombre de mails difficilement déchiffrables que je reçois, je me dis que ça peut faire avancer le schmilblick.

Quand on répond à un mail, que l'on soit en mode texte ou en HTML, une bonne pratique est de quoter (citer) le message initial de l'éxpéditeur, afin par exemple de lui répondre point par point. Pour cela, il existe quelques conventions qui ne sont pas compliquées à mettre en place et qui peuvent grandement simplifier le suivi des propos échangés.

Lire la suite...

jeudi 19 mai 2005

Mac OSX Server et Postfix

Il me reste un OSX server 10.3.9 au taf, configuré comme serveur de mail. C'est une sombre bouse, qui n'a jamais vraiment marché, et a toujours nécessité un reboot minimum hebdomadaire, pourtant en configuration de base (pas de fink, rien !).

Sauf que là, il me fait vraiment chier plus que de coutume : postfix se lance correctement, puis s'instancie n fois jusqu'à saturer complètement le serveur et rendre le service de courrier sortant (smtpd) complètement indisponible :-C Cliquez sur lire la suite pour voir un aperçu du souci et éventuellement m'aider :

Lire la suite...