Smileys II, génération automatique

Ce filtre automatise l’affichage des smileys à partir du contenus du répertoire /smileys.

Si comme moi vous utilisez le filtre de spip-o-japanim adapté par titeuf pour afficher des smileys sur vos publications, vous serez sans doute intéresé par ceci.

Le principe

Comment faire pour ne pas avoir à réécrire son filtre smileys à chaque fois qu’on souhaite enrichir ou modifier la liste de smileys que l’on propose dans un forum ?

C’est en réfléchissant à un système pratique que j’ai pensé à celui là :

Pourquoi ne pas générer automatiquement un liste de smileys grâce à ceux qui sont contenus dans le repertoire /smileys ?

Du coup il suffirait d’ajouter ou de supprimer des smileys dans le repertoire /smileys par ftp pour gérer en direct sa liste de smileys.

Vous pouvez voir ce filtre en action sur les forums de bloOg

Cette contrib vous propose :
-  un tableau généré automatiquement qui récapitule les smileys disponibles dans votre dosier /smileys
-  le filtre qui permet de les interpréter dans un texte.

Une fois ce filtre mis en place, vous n’aurez plus qu’à écrire les smileys « en texte » ou les glisser-déposer à partir du tableau récapitulatif, ils seront automatiquement remplacés par l’image correspondante.

La syntaxe utilisée pour écrire un smiley en texte est :nom pour chaque fichier nom.ext situé dans le répertoire /smileys.

Mise en place

Tout d’abord récupérez des smileys (formats de votre choix) et placez les dans un dossier « smileys/ » à la racine de votre site SPIP. Je vous conseille des images pas trop grandes, du style 15x15 px.

Ensuite copiez_collez dans mes_fonctions.php3 le filtre suivant : (si vous avez déjà au moins un filtre, et donc une page mes_fonctions.php3, supprimez les balises <?php et ?> dans ce morceau de code)

<?php

/*
 *   +----------------------------------+
 *    Nom du Filtre :    smileys II
 *   +----------------------------------+
 *    Date : mercredi 14 octobre 2003
 *    Auteur :  BoOz (booz.bloog@laposte.net)
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *    Dans un texte, génère automatiquement le smiley 
 *    approprié à la place d'une chaine :nom.
 *    Ce filtre utilise les smileys disponibles dans       
 *    le répertoire smileys/
 *    Exemple d'application :
 *    [(#TEXTE|smileys)]
 *   +-------------------------------------+ 
 *  
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://www.uzine.net/spip_contrib/article.php3?id_article=261
*/

function smileys($chaine) {

$listimag=array();
$rep1="smileys/";
$listfich=opendir($rep1);
while ($fich=readdir($listfich))
{ 	if(($fich !='..') and ($fich !='.') and ($fich !='.test'))
	{ 
$nomfich=substr($fich,0,strrpos($fich, "."));
$listimag[$nomfich]="<img ALT=\"smiley\" src=\"smileys/".$fich."\">";
	}
}


ksort($listimag);
reset($listimag);

while (list($nom,$chem) = each($listimag))
{ 
  $chaine = str_replace(":".$nom, $chem , $chaine);
}

        return $chaine;
}
?>

Utiliser le filtre dans les squelettes

Maintenant que le filtre est en place il vous faut modifier les squelettes qui doivent prendre en compte ce filtre. Plus précisément ce sont sur les balises spip, affichant du texte (pouvant contenir des smileys), que vous devez appliquer ce filtre, par exemple dans vos squelettes de forums utilisez :

(#TEXTE

on peut également utiliser d’autres filtres en même temps que celui là, par exemple :

[(#TEXTE|justifier|smileys|autres_filtres)]

Pour plus de détails sur l’utilisation des filtres, voir : Les filtres de SPIP (dans la documentation officielle).

Tableau récapitulatif

Il faut aussi penser à montrer à vos rédacteurs ou visiteurs les smileys qui seront filtrés, et qu’ils peuvent utiliser. Par exemple, dans le squelette « forum.html » qui permet d’écrire un nouveau message, ajoutez le tableau récapitulatif ci-dessous.

Utilisez la commande

<br>
<INCLURE(inc_tableau_smileys.php3)>
<br>

Ce fichier appelle le fichier inc_tableau_smiley.html qui affiche la liste des smileys disponibles dans un tableau transparent.

Pour finir votre installation, téléchargez le fichier inc_tableau_smileys.html et son compère inc_tableau_smileys.php3 et placez les à la racine de votre site spip.

Pour les amateurs voici le code de inc_tableau_smileys.html :

<center>
  <H3>Smileys</H3>
(glisser-déposer)
<?php
$listimag=array();
$rep1="smileys/";
$listfich=opendir($rep1);
while ($fich=readdir($listfich))
{ 	if(($fich !='..') and ($fich !='.') and ($fich !='.test'))
	{ 
$nomfich=substr($fich,0,strrpos($fich, "."));
$listimag[$nomfich]=$rep1.$fich;
	}
}


ksort($listimag);
reset($listimag);
$compte=0;

// changer ci-dessous le nombre de colonnes (2 par défaut) //////////
$nbcol=3;

echo "<TABLE cellspacing=0
cellpadding=1><TR>\n";
while (list($nom,$chem) = each($listimag))
{ 
echo "<TD valign=bottom align=center class=\"t1\"><IMG
SRC=\"".$chem."\"><br>:".$nom."</TD>\n";
$compte++; 
	if ($compte % $nbcol == 0)
	{
	echo"</TR><TR>\n";}
	}
echo "</TR></TABLE>";
?>

</center>

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom