Smileys III : Un point d’entrée pour les Frimousses

Cette contribution adapte la précédente (Smileys) au système de points d’entrée dans le traitement des raccourcis SPIP apparue avec la version 1.7.2.

Cette adaptation présente plusieurs avantages par rapport à la précédente contribution (Smileys) :

  • présenté sous forme de point d’entrée, il n’y a plus besoin de rajouter le nom du filtre dans les squelettes (|smileys par exemple [(#TEXTE|smileys)]) [1] ;
  • le plugin permet d’afficher les frimousses (smileys) dès la prévisualisation (très utile dans les forum par exemple car, dorénavant, on peux voir le smiley avant de valider définitivement le post ;
  • la contribution ajoute des chaînes alternatives (alt) aux images, permettant de définir clairement ce qui est affiché à l’écran [2].

Les icônes viennent du site de Jimmac

l’archive des images de smileys

Comment installer la contrib Frimousses

Il faut :
-  copier le répertoire des frimousses où vous le souhaitez (par défaut dans le répertoire NAVPICS) et puis compléter ou modifier la variable $chemin au début du fichier plug_smileys.php.

Par exemple, si vos frimousses se trouvent dans le répertoire /smileys à la racine de votre site, vous devrez avoir au début de la fonction smileys dans le fichier plug_smileys.php les lignes suivantes :

if($flag_ecrire)
        $chemin = "../smileys/";
 else
        $chemin = "smileys/";

ainsi qu’à la ligne 103 :

  $chemin = "smileys/";

-  ensuite, il faut placer le fichier plug_smileys.php dans le répertoire racine de votre site :

fichier à inclure.
fichier contenant la déclaration de la nouvelle balise et du traitement des smileys.

-  et enfin, il faut déclarer le nouveau point d’entrée dans ecrire/mes_options.php3 :

if( !@file_exists(_DIR_RESTREINT_ABS . 'inc_version.php3')) {
  include('../plug_smileys.php');
} else {
  include('plug_smileys.php');
}

function avant_propre($texte) {
  $texte = smileys($texte);
  return $texte;
}

ATTENTION : s’il existe déjà une fonction avant_propre dans votre fichier ecrire/mes_options.php3 il faut ajouter la ligne $texte = smileys($texte); tout au début et ne mettre que les lignes 1 à 5 du code précédent.

-  et si l’on veut avoir des chaînes alternatives traduites dans les langues de son site [3], copier-coller le contenu de ce fichier suivant dans ecrire/lang/perso.php3

Exemple de fichier de traduction
Le contenue de ce fichier doit être mis dans le fichier ecrire/lang/perso.php3 (sans les <?php et ?> si le fichier existe déjà.

Afficher une liste des smileys disponibles

Ce Point d’entrée défini aussi une nouvelle balise : #SMILEY_DISPO que l’on peut placer dans ses squelettes pour afficher (par exemple à côté du formulaire de forum) les frimousses qui seront traduites en image.

Cette balise affiche une simple liste qui peut être personnalisée avec les classes css :

  1. listes_smileys qui contient la liste ;
  2. smiley_nom le nom de la frimousse ;
  3. smiley_image l’image ;
  4. smiley_alt la chaîne alternative de la frimousse.

Voici par exemple des styles applicables à cette liste :

ul.listes_smileys {
padding: 0;
margin: 0;
float: right;
max-width: 30%;
min-width: 4em;
}

ul.listes_smileys li.un_smiley {
list-style-type: none;
float: left;
border: 1px dashed;
width: 3em;
text-align: center;
padding: 3px;
margin: 0px;
}

ul.listes_smileys li.un_smiley  IMG.smiley_image {
vertical-align: middle;
margin: 5px 0 0 1em;
display: block;
align: center;
border: 0;
}


ul.listes_smileys li.un_smiley span.smiley_alt {
display:none;
}
balise #SMILEY_DISPO

Notes

[1Il est même obligatoire d’enlever les appels à ce filtre qui sont incompatibles avec cette contrib.

[2c’est aussi indispensable pour une validation XHTML correcte et une accessibilité optimum

[3voir les commentaires dans le fichier et la documentation de spip pour plus d’information sur l’ajout de nouvelles langues

Discussion

10 discussions

  • Pour info après changement des bornes

    compatibilite=« [3.0.0 ;3.2.*] »

    RAS

    Répondre à ce message

  • Bonjour, j’ai noté un petit bug, lorsque quelqu’un envoie un message privé avec un titre de ce genre :

    « Bonjour :) »

    Il en résulte que le smiley textuel se transforme en un code html assez indigeste pour un humain…

    En tout cas merci pour ce plugin bien sympa.

    Répondre à ce message

  • 1

    Bonjour,

    J’ai fait évoluer le plugin qui dispose maintenant de son entrée dans le Porte Plume.

    Ça pourrait être utile que je mette la documentation à jour ?

    • Ce serait pas mal d’avoir un petit screenshot de ce que cela donne dans le porte-plume non ?

    Répondre à ce message

  • 5

    Bonjour !

    J’essaie d’installer les smileys sur mon blog. Etant débutante, je patauge...J’ai recopié les images dans un dossier img et j’ai donc changé les chemins dans le fichier plug_smileys.php que j’ai placé à la racine. J’ai rajouté le code dans le fichier mes_fonctions.php3 propre à spipclear placé également à la racine et adapté le css. J’ai ensuite placé la balise après le formulaire...Je pense que l’erreur vient de là...J’ai essayé plusieurs combinaisons sans résultats... Une idée ?

    • qu’est ce qui se passe exactement ?

      qu’est ce qui ne marche pas ? la liste ne s’affiche pas ?
      et si tu mets un smilley dans un texte, est-ce qu’il s’affiche ?

      peut être tu peux t’inspirer de cette contrib :http://www.spip-contrib.net/ecrire/...

    • Merci de m’avoir répondu si rapidement...
      La liste ne s’affiche pas et les smileys dans le texte non plus...mais j’ai peut-être pas bien placé ma balise cfr code source...Ton exemple n’est pas accesible, il faut un mot de passe...

    • Autant pour moi, mot de passe envoyé après inscription...Bon j’ai suivi la démarche du wiki et les smileys apparaissent :.) mais ils n’interagissent pas...problème avec cette ligne de code :

      Parse error : parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/shim/julie/Web/mes_fonctions.php3 on line 234

      $texte = str_replace($match[0], '<li class="un_smiley"><a href="javascript:barre_inserer(''.$fr.'',document.getElementById('formulaire_'.($num_formulaire+1).''))" title="Inserer la frimousse: '.$match[1].'" 
    • le code du wiki etait pas à jour, mais celui de la contrib que je t’ai pointé si.

      Il aurait suffit de t’inscrire, tu verras c’est la caverne d’ali baba de l’autre côté, il y a plein de contrib à tester avant qu’on puisse les publier.

      Enfin, j’ai mis le wiki à jour si jamais :D

    • Ok tout marche correctement !
      Et c’est une vraie caverne d’alibaba !

    Répondre à ce message

  • Attention ! les smileys sont trop permissifs. Il vaut mieux ne conserver que ceux qui comportent le nez ( - ) sinon vous risquez d’avoir des surprises, genre :

    ... USB)

    Répondre à ce message

  • 1

    La fonction ne gère pas bien les smileys en fin de phrase car elle nécessite un espace avant et après le smiley pour que çà fonctionne. Avec cette petite modif :

    	$chaine = preg_replace('/(^'.$smiley.'\B|\B'.$smiley.'\B|\B'.$smiley.'$)/', "<img src=\"".$chemin.$file.'" alt="'.$alt.'" class="smiley"/>',

    cà règle le problème ;-).

    • Oui, ça traine depuis un moment et j’avais jamais trouvé la bonne solution.

      Merci

      je vais corriger dans le plugin à venir pour la 1.9, pour cette version, je laisse les gens corriger par eux même.

    Répondre à ce message

  • 2

    Tout d’abord, bonjour, et merci pour cette génialissime contrib !
    J’ai réussi à l’installer, seul hic, seuls les messages de forum appliquent cette fonction.
    Or le filtre précédent, le Smileys II permettait d’inclure des smileys visibles dans les titres... comment procéder pour que cette fonction soit généralisable sur les éléments tels que les titres également ?
    Comme je débute, je n’ai pas su résoudre ce mystère mystérieux toute seule... Une idée ? (si il faut, c’est super simple, mais bon, je dbute, donc...)
    merci merci merci par avance à tous ceux qui me répondraient !

    • mortimer

      Effectivement, la méthode utilisée n’est pas appliquer aux titres par spip.

      Tu pourrais essayer de renomer la fonction avant_propre en avant_typo dans le fichier mes_options.php3, je ne suis pas certain, mais ça réglera peut être le problème.

      Sinon, ce que tu peux faire, c’est mettre dans tes squelettes : [(#TITRE|smileys)] à la place de #TITRE

    • Ca marche !!!!!!!!!!!!!!!!! Rhâaaaaaaaaaaa !!!! :))
      Merci bôcou, cher ange !

    Répondre à ce message

  • Bonsoir,

    J’esais désespérément de modifier mon fichier « article_edit.php » pour qu’il m’affiche la liste des smileys pouvant être intégrés. La balise #SMILEY_DISPO ne fonctionnant pas ici, j’ai voulu insérer directement la fonction « balise_SMILEY_DISPO($p) », mais quel arguement dois-je faire passer dans $p ? car rien ne s’afiche...

    C’est vraiment domage de ne pouvoir avoir accès à cette liste que dans les forums public...

    Répondre à ce message

  • 3

    As-tu une astuce pour que la liste des smileys disponiblent apparaissent dans l’admin ? Ce serait intéressant pour les rédacteurs.

    • malheureusement, non, pas sans modifié les sources de SPIP.

    • Merci pour tes réponses, j’aimerais quand même implémanter cette fonction dans l’admin.

      Je sais que c’est délicat, mais as-tu une piste ?

    • Tu trouveras l’essentiel de la composition des formualires de forum de l’admin dans ecrire/forum_envoi.php3

      En dehors des soucis de mise en page, je ne pense pas que tu rencontreras de gros soucis

    Répondre à ce message

  • 1

    Pour que celà fonctionne sur ma 1.8, il à fallut mettre ’inc_version.php3’ en ’inc_version.php’ dans le fichier « mes_options.php »

    • ça doit être parce que tu as une distribution php et non php3 de la 1.8, c’est un cas spécial.

      il faudra aussi modifier les appels dans le fichier inclus alors.

    Répondre à ce message

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