Parfois, lorsqu'on écrit un commentaire sur le blog Dotclear 1 de quelqu'un on éprouve le besoin de se relire. Jusqu'à maintenant l'action du bouton Prévisualiser provoquait l'affichage d'une page vierge contenant uniquement le commentaire en cours d'écriture et le formulaire correspondant.

Dans ces conditions — surtout si le commentaire est long et/ou travaillé — on perd la possibilité de relire les commentaires précédents ou même le billet dont il est question. Dotclear 2 a corrigé ce problème en intégrant la prévisualisation au sein de l'affichage complet du billet.

Il est très facile d'obtenir le même comportement sur un blog Dotclear 1 et nous allons voir ce qu'il faut modifier en prenant comme exemple le thème defaut.

Première modification à effectuer, dans le fichier template.php. Vers la ligne 60 vous trouverez ceci :

<?php elseif ($preview) : /* Si on demande la prévisualisation d'un commentaire */?>
    <h3>Commentaire pour <?php dcPostTitle(); ?></h3>
    <div id="comment-preview">
        <blockquote>
        <?php dcCommentPreview(); ?>
        </blockquote>
    </div>
    
    <h3>Changer le commentaire</h3>
    <?php include dirname(__FILE__).'/form.php'; ?>

Supprimez simplement toutes ces lignes et enregistrez le fichier.

Ensuite la deuxième modification à faire, dans le fichier form.php. Vers la ligne 23 vous trouverez ceci :

<form action="<?php dcPostUrl(); ?>" method="post" id="comment-form">

Pour que l'utilisateur soit directement placé au début de sa prévisualisation dans la page (pratique s'il y a déjà plusieurs dizaines de commentaires), il faut rajouter #pr à l'URL fournie dans l'attribut action de la balise <form>. Voilà la nouvelle ligne (qui remplace la précédente) :

<form action="<?php dcPostUrl(); ?>#pr" method="post" id="comment-form">

Enfin, troisième et dernière modification, toujours dans le même fichier. Il suffit d'insérer juste devant la ligne que vous venez de modifier les lignes suivantes :

<?php if ($preview) : /* Si on demande la prévisualisation d'un commentaire */?>
    <h3>Votre commentaire</h3>
    <div id="pr">
        <blockquote>
        <?php dcCommentPreview(); ?>
        </blockquote>
    </div>
<?php endif; ?>

Enregistrez le fichier et appréciez ! Vous voilà muni d'un thème qui intègre la prévisualisation sur la page d'affichage du billet, juste après la liste des commentaires déjà présents et juste devant le formulaire permettant de le modifier.

Il n'est probablement pas difficile d'adapter ce changement à la plupart des thèmes existants et vous pouvez bien sûr adapter le code proposé (dans le fichier form.php) en fonction de vos goûts.