Plugin SpipCatChat

Étant donné que SPIP n’intègre pas d’origine de fonction de discussion instantanée et afin de pallier à ce manque je vous propose ce plugin.

Il permet, dans l’espace public de votre site, d’ouvrir et d’administrer des salons de discussions (clavardoir) de la manière la plus simple qu’il soit.

Grâce à son environnement minimaliste, toutes les fonctions se résument en un seul clic, le contenu de celui-ci reste sur le serveur dans l’environnement de SPIP sans qu’il soit nécessaire de disposer d’un service étranger.

Aucun flux n’est dirigé vers l’extérieur, le tout reste stocké temporairement dans un répertoire du plugin.

Présentation de SpipCatChat

Fraîchement sortie, SpipCatChat fait déjà office de prologue à l’introduction de SpipCatChat2 (mise en plugin), marquant ainsi la volonté d’une intégration parfaite dans l’environnement de SPIP, tout en respectant l’intégrité du système.

C’est pour cette raison qu’il est préférable de choisir cette dernière version, plutôt que la précédente, laquelle ne sera pas maintenue.

Les objectifs poursuivis

Le cahier des charges s’inspire des critères du Wiki de YannX et les différents points qui ne seront pas résolus ici trouveront, je l’espère, une réponse à travers l’évolution des différentes versions.

  1. réactivité immédiate
  2. accès interne et externe
  3. non-dépendant à un service externe
  4. affectation à un objet spécifique, à une rubrique ou zone pour visualisation
  5. archivage local ou distant

Aspects techniques

La réactivité dépend principalement des accès disques du serveur, car le flux des salons est redirigé dans des fichiers temporaires au format Json.
Il en va de même pour les statuts des participants et leurs autorisations.

De ce fait, plus aucune connexion à la base de données de SPIP n’est requise pour les tâches spécifiques du plugin, gardant ainsi une compatibilité totale avec les moteurs de bases SQLite.

Les données relatives aux chats sont stockées dans le répertoire DB_CATCHAT du plugin.
Mais prenez garde au fait que ce dossier est à récupérer lors des mises à jour et à replacer au même endroit.

Installation de SpipCatChat

Ce plugin s’installe dans le répertoire du même nom ou dans le dossier « plugins auto » de SPIP.
Il s’active dans l’espace privé comme tout autre plugin, en cliquant sur « GESTIONS DES PLUGINS ».
Vous trouverez sous l’onglet « INACTIFS » la case à cocher face à l’icône de « SPIPCATCHAT ».

Après l’activation du plugin, n’oubliez pas de vider le cache en vous rendant dans la rubrique « MAINTENANCE » de votre CMS.

Pour la seconde étape, rendez-vous dans l’espace public sur l’URL :
http://www.mon_site_spip/spip.php?page=spipcatchat

ou placez la balise ci-dessous sur n’importe quelle page de votre site,

<INCLURE{fond=modeles/spipcatchat}
	{logad=#ENV{logad}}
	{chat=#ENV{chat}}
	{salon=#ENV{spipsalon}}
	{add=#ENV{adduser}}	
>	

 [1]
 [2]
Patientez une minute, le temps nécessaire à la construction de son système de données.

Si toutefois cela prend plus de temps, rafraîchissez votre navigateur et si le problème persiste, consultez la rubrique : « Dépannage des erreurs » de ce document.

Configuration de l’espace privé et public

Il est possible de configurer SpipCatChat, le thème, le temps de rafraichissement, le pack d’icônes, sont des élément paramétrables sur la page ecrire/?exec=configurer_spipcatchat&cfg=accueil.

Le champ LARGEUR sert simplement à définir la largeur du chat en pixels ou en pourcentage.

Le deuxième vous propose deux méthodes de configuration pour le thème, AUTOMATIQUE sur la base d’une couleur dominante et MANUEL pour un thème personnalisé.

Le champ COULEUR DU THÈME permet de modifier la couleur dominante du thème en mode automatique.

Les couleurs disponibles sont : orange, bleu, noir, brun, jaune, rose, vert, pourpre, gris, rouge, lavande, bleu_ciel, blanc et vert_aubergine.

En mode manuel, il vous faudra choisir la couleur dominante, secondaire et la couleur du pack d’icônes.

Le code de couleur du fond prend comme valeur la palette des couleurs standard du langage HTML sans le tag ex. (#FFFFFF - FFFFFF) .

On entend par OMBRAGE l’activation /ou pas de la fonction “CSS box-shadow”, qui n’est pas forcément compatible avec certain navigateur.

Pour le champ COIN ARRONDI, je crois que cela ne demande pas d’explication, sauf que, comme la fonction précédente, elle n’est pas forcément compatible avec certain navigateur.

Le taux de rafraîchissement des messages du chat est en millisecondes, il se configure indépendamment pour le privé et le public .

Vous pouvez régler ce paramètre selon votre convenance.

Dans cet exemple, il est réglé sur 1.000 millisecondes, soit une seconde, et la temporisation des postes entre les messages est dès lors aussi égale à une seconde, afin d’éviter le problème du maintien accidentel de la touche entrée.

Pour le statut, la temporisation est de deux minutes et est invariable. C’est pour cette raison que les personnes qui quittent les salons peuvent être toujours visibles après ces deux minutes.

Tableau de réglage de la variable refresh. [3]

  1. 1000 = serveur très rapide (idéal en local)
  2. 2000 = serveur rapide
  3. 3000 = serveur normal
  4. 4000 = serveur lent
  5. 5000 = serveur très lent
  6. 6000 = serveur en surcharge

Et l’espace privé alors ?

Il est parfois nécessaire, lorsque l’on travaille de manière collaborative, de pouvoir s’échanger des messages en temps réel.

C’est pourquoi dans cette version, vous trouverez un salon de discussion dans l’espace privé sous le menu PUBLICATION.

Dépannage des erreurs

Si sur la page « Entrée des Salons de chat » vous avez toujours, après une minute, le message « chargement », effectuez, en mode Console UNIX, les commandes suivantes :

- SUDO CHMOD -R 0777 /plugins/spipcatchat/db_catchat/

Sur Filezilla :

Pour le fichier SpipCatChat2 :

Cliquez droit sur le dossier « spipcatchat », ensuite « Droits d’accès aux fichiers… » , cochez-y « Récursion dans les sous-dossiers », ainsi que « Appliquer à tous les fichiers et dossiers » et dans le champ « Valeur numérique » tapez 777.

Pour le fichier DB_CATCHAT :

Si le fichier n’existe pas, créez le dossier « DB_CATCHAT » à la racine du répertoire, suivi d’un clique-droit à la racine du fichier « spipcatchat ». Sélectionnez « ‘Créer un dossier », puis entrez dans le champ (en minuscule) « spipcatchat ».

Pour la suite, répétez la même procédure en sélectionnant le fichier « DB_CATCHAT », mais dans le champ « Valeur numérique » entrez 777.

Si le problème n’est pas résolu, changer les droits, en mode récursif, par un 777 sur l’ensemble des fichiers du répertoire spipcatchat.

Pour les serveurs NGINX :

Ajoutez, dans votre fichier de configuration, la ligne ci-dessous :

sudo nano /etc/nginx/sites-enabled/ « non de votre fichier »

Remplissez-le fichier comme suit :

location ~ ^/db_catchat {
return 403;
}

Terminez par :

sudo service nginx  restart

Mode d’emploi de SpipCatChat

Si en apparence SpipCatChat2 ne semble pas différent de son prédécesseur, techniquement il n’en est rien. Mais pour les utilisateurs cela reste transparent ; Il partage toujours le même mode de fonctionnement, hormis son installation. C’est donc pour cette raison que je vous prie de vous référer à la documentation de la première version.

Les petits extras

Les raccourcis typographiques de SPIP sont reconnus par SpipCatChat, vous pouvez en ajouter de nouveaux dans le fichier mes_fonction_javascript.js.

/plugins/SpipCatChat2/javascript/mes_fonction_javascript.js

{{{intertitre}}} {{gras}} {italique}

Cliquez ici pour un test en ligne et ici pour l’ inscription au Chat

Login : spipcatchat
Mot de passe : spipcatchat

Footnotes

[1Ne vous préoccupez pas de la liste des variables techniques.

[3Les références de ce tableau sont établis à titre indicatif.

Portfolio

updated on 2 October 2019

Discussion

9 discussions

  • 3

    Bonjour,
    J’utilise ce plugin sur un site multilingue français et arabe.
    Mon problème est que quand je veux créer un salon de discussion en arabe, j’obtiens des caractères qui n’ont rien à voir avec cette langue.
    J’ai essayé de modifier le fichier spipcatchat.js.html en ajoutant une ligne pour la variable texte.
    J’y ai placé une lettre de l’alphabet arabe avec le code htmlEntities correspondant.
    J’ai encodé le fichier au format ANSI.
    Résultat : le javascript du chat ne fonctionne plus. Je suis bloqué avec “chargement...” pour les salons.
    Voici l’adresse de la page : http://fkirina.com/spip.php?page=chat&lang=ar
    Par exemple : je crée un salon avec ce nom en arabe مرحبًا بكم
    dans la liste, sa m’affiche مرحبًا بكم

    Dans l’attente et avec l’espoir que vous avez la solution à cette colle :
    A bientôt

    • PS : j’ai pensé que peut être vous auriez besoin d’une capture d’écran. Il est dit qu’une image vaut mieux qu’un long discours. ;-)

    • Bonjour,
      Peut-être qu’il faut que j’apporte plus d’explications. Ceci afin que vous puissiez comprendre ce j’ai ajouté dans le code.
      Je tiens à vous préciser que je suis débutant en javascript.
      Ce que j’ai fait :
      j’ai ajouté une ligne dans les fonctions htmlentities(texte) et html_entity_decode(texte).
      Cette ligne est la suivante : texte = texte.replace(/ا/g,'&#1575;'); // 256 627
      J’ai utilisé un convertisseur sur ce site pour avoir le numéro de caractère en hex. Dans mon exemple, j’ai utilisé la première lettre de l’alphabet arabe. Son numéro hex est 627. J’ai utilisé l’appel de caractère numérique décimal &#1575; c’est ce qui permet à un navigateur d’afficher le caractère “alif” : “ا” en arabe.

      Il y a une question que je me pose : à quoi correspond le nombre avant la valeur hex. Dans mon exemple 256
      J’ai constaté que dans les autres lignes, ce nombre ne sert pas à classer dans l’ordre. Puisqu’il y a des sauts. Vous pouvez le constater dans la capture jointe.

      Je pense n’avoir rien oublié. Je vous prie de m’excuser de vous demander un peu de votre temps.
      Merci pour votre éventuelle aide

    • Bonjour,
      Je fouille encore.
      C’est certainement un problème d’encodage du fichier. C’est expliqué ici.
      J’ai compris le problème, mais je n’ai pas trouvé la solution.
      Donc pour le moment : pas de langue arabe. J’encode le fichier en utf8 pour l’utilisation normale.
      Je ne désespère pas de trouver. Je pense que ce sujet n’est pas clos.
      Bonne continuation et à bientôt de vous lire.

    Reply to this message

  • Patrocle

    Bonjour,

    ce plugin est bien mais est-ce possible d’avoir :

    1) Une connexion sans inscription pour un usage public
    2) Une connexion automatique à un salon défini
    3) Avoir un modérateur afin qu’il puisse supprimer les posts inadéquat. J’ai vu que nous pouvons supprimer le salon mais non supprimer les posts

    Par avance, merci de m’avoir lu

    Reply to this message

  • 5

    Bonjour,

    super plugin, mais j’ai quelque soucis de fonctionnement

    notre association a besoin d’un salon de discussion public (ouvert a tous)
    il fraudais que lorsqu’on arrive sur la page des salons qu’on entre directement dans le salon

    c’est a dire ne pas passer par http://sfanm.shost.ca/spip.php?page=chat

    comment puis je pratiquer ?

    faut il modifier salon=#ENVspipsalon

    merci du coup de pouce

    • Bonjour,

      Vous voulez dire que vous désirez avoir un salon unique avec une entrée directe sans passé par le sélecteur des salons ?

    • tout a fait

    • Bonjour,

      J’essayerais de répondre à votre problème ce week-end avec une refonte personnelle du plugin.

    • Hello

      est ce que la new version est arrivé ?

    • Patrocle

      Bonjour,

      j’ai besoin de la même chose. Une nouvelle version où nous n’avons pas besoin de nous inscrire est-elle en préparation? De même sur le salon automatique?

      Merci par avance

    Reply to this message

  • 7

    Bonjour !

    Hâte de pouvoir essayer et triturer ce petit plugin l’adapter parfaitement à mes attentes =)

    Toutefois, j’ai un petit soucis (sans doute de débutant).

    J’ai bien le comportement indiqué dans le Dépannage des erreurs, à savoir, la mention “Chargement” qui reste affiché dans la liste des salon lors du premier accès à la page http://monsite/spip.php?page=spipcatchat

    Or je suis en local actuellement, dans le but de préparer l’intégration du chat (entre autre) sans nuire aux membres et visiteurs du site (online).

    Dès lors, via Filezilla, je n’est pas accès au droit d’écriture comme indiqué.

    Existe-il une alternative ?

    Cdt. et merci d’avance :D

    • Petite précision : le plus étrange c’est que le chat est bien fonctionnel depuis l’espace privé...

      J’ai essayé plusieurs fois de réinstaller, de supprimer le cache par l’espace privé et manuellement, etc

    • Bonjour Logo,

      Je me permets déjà de vous féliciter pour votre excellent choix :)

      Dans le répertoire “ db_catchat “ du plugin, veillez que le fichier “catchat.xml” soit bien présent et libre en droit d’accès.

      Êtes-vous sous Mac OSX ? Car en local, il faut sans doute revoir aussi les privilèges accordés par le système aux fichiers.

      En espérant vous avoir été utile.

    • Merci de votre réponse et désoler pour le temps de retour de ma part ; j’ai du entreprendre d’autre choses importantes entre temps nécessitant le standby de ce petit chantier.

      Je ne suis pas sur Mac, mais bien Windows ; De mémoire, ce fichier y était, mais dans un soucis de rigueur, je vérifie ce soir en rentrant.

      Et oui ce plugin me semble très bien dans l’idée ; bien que nécessairement, de nombreuses choses peuvent être apporté pour l’améliorer, et surtout pour l’adapter aux attentes de chacun :p

      Malheureusement, je suis un simple petit bricoleur de code ^^ Mais le temps est à l’oeuvre !

    • Dans un soucis de rigueur, j’ai réinstallé intégralement le plugin.

      Le fichier xml que vous m’indiquez est bien présent de base dans le répertoire.

      Et j’ai toujours le même problème ; La mention chargement sur la page de “connexion” avec le choix de la “room”. J’ai donc pour tester, supprimé le xml d’origine (ayant vu dans le code qu’en cas d’absence, celui-ci se récréait automatiquement ;

      Lors d’un nouveau chargement de la page SpipCatChat, celui-ci se recréait bien, y compris un nouveau dossier qui je pense correspond à la création d’une “room”.

      Toutefois le problème persiste ; dans le doute, j’ai, via l’explorateur windows, dans les propriété du répertoire, donné un contrôle total sur ce dernier au système. Et j’en suis toujours au même point ^^

    • Bonsoir LoGo,

      Je crois que vous trouverez les réponses à vos problèmes d’affichage avec les dernières corrections.

      Pouvez-vous nous tenir informés si cette correction répond à votre problème?

    • Réponse très tardive, mais une chose en entrainant une autre j’étais passé à autre chose =).

      Je me remet sur ce plugin d’ici très peu de temps et vous tiendrais informé pour la mise en œuvre local.

    • Du coup, après suppression et réinstallation de la nouvelle version, vidage du cache... tjr le même problème d’accès depuis le site publique. Le libélé “chargement” sur le listing des salons demeurant.

      Et comme dans l’ancienne version, le salon des auteurs depuis l’espace privée fonctionne quant à lui.«»

      Je vais devoir songer à le mettre en œuvre et le triturer directement en ligne ^^.

    Reply to this message

  • 2

    Bonjour,
    J’ai quelques soucis d’affichage, je ne suis pas super doué, et je ne peux pas faire de tests en local (EasyPHP) car je rencontre les mêmes soucis que LoGo (mention “chargement” qui persiste).
    Voici à quoi ressemble mon affichage :
    -  en haut à droite, les logos quitter / supprimer qui se chevauchent (pas très grave)
    -  en bas, la barre d’insertion des émoticones quasi-totalement masquée par la zone de saisie de texte.
    Je suis sous SpipR / Sarkaspip, je pense avoir un conflit de CSS, mais sans pouvoir tester en local je vais avoir du mal.
    Merci
    Christophe

    • Ah oui, petit addendum, je n’ai pas de son par événement (je m’attendais à ce qu’une réponse déclenche un “bip”).
      Christophe

    • Bonjour Chantoine,

      J’avoue qu’il est difficile de s’accorder avec toutes les configurations possibles de Spip, ce plug-in a été développé avec le squelette par défaut de celui-ci.

      Le paramétrage permet normalement de ne pas devoir modifier les fichiers soi-même afin d’obtenir une concordance avec le thème de votre site.
      Dans certains cas, vous avez compris, il n’y a rien d’autre à faire que de s’y coller, j’en suis désolé !
      Je vous le confirme, le problème vient de l’ajout du plug-in Sarkaspip.

      Cordialement Claude

    Reply to this message

  • 1

    Bonjour,
    Ne pas tenir compte de mon 2e message relatif au bip, j’ai bien la notification sonore avec Firefox et Vivaldi. C’est avec mon navigateur habituel (Pale Moon) que ça ne passe pas.
    Christophe

    • Hum,
      Encore moi, désolé pour le flood.
      J’ai résolu vite fait le masquage de la barre des émoticones en retouchant spitcatchat.css et en mettant margin-top:3% (au lieu de -3%) dans la propriété .post_message #message
      Christophe

    Reply to this message

  • 15

    Bonjour,

    Pour ma part, impossible de faire fonctionner ce plugin. Sur l’espace public, j’ai une page blanche, et sur l’espace privé “chargement du chat en cours” qui reste indéfiniment.

    La console d’erreurs me signale un problème de javascript (voir ci-dessous).

    Puis-je faire quelque chose pour débloquer la situation ?

    Merci beaucoup.

    Erreur : SyntaxError: unterminated string literal
    Fichier source : /ecrire/?exec=spipcatchat
    Ligne : 377, colonne : 27
    Code source :
    var nom=encodeURIComponent(’

    • Je précise qu’il y a mon nom après var nom=encodeURIComponent(’
      Puis cela s’arrête là.

    • Bonjour,

      Est-il possible d’avoir un lien vers votre site avec un utilisateur test ?

      Cordialement Claude

    • Bonjour,

      Merci pour la réponse. C’est un peu compliqué car je suis sur un site de test et celui-ci est derrière une protection en htaccess.
      Si cela est vraiment nécessaire, ça peut néanmoins s’arranger.

      En attendant, le problème semble venir du fait que le js inséré dans la page se présente tout la forme :
      var nom=encodeURIComponent(’Prenom Nom
      ’);

      avec, donc, un retour à ligne après nom et avant le ’ (j’ai copié directement du code source).

      Je ne sais pas quoi faire pour corriger ce problème.

      Merci de l’aide.

    • Bonjour,

      Merci de la réponse. Cela est un peu compliqué car je suis sur un site de test, protégé par un htpassword pour le moment. Cela peut néanmoins s’arranger si nécessaire.

      Le problème semble venir du fait que le js inséré dans la page se présente sous la forme :

      var langShowChat = new Array(“Aucun message n´a été envoyé pour le moment.”);
      var catchatrefresh= 1000;
      var catchatrefreshstatut=125000;
      var scrollBar = false;
      var nombreMessage;
      var emosta = ’status’;
      var pack = “basic”||“classic”;

      Sauf pour la ligne nom :

      var nom=encodeURIComponent(’Prenom Nom
      ’);

      avec un saut de ligne donc, ce qui provoque une erreur.

      Je ne sais pas comment résoudre ce problème.

      Merci beaucoup de l’aide.

    • Désolé pour le double message, j’ai eu un petit problème de cache...

    • Bonjour,

      J’ai temporairement résolu le problème en remplaçant #ENV{nom} par [(#ENV{nom}|trim)] ligne 5 dans le fichier prive/javascript/prive-spipcatchat.js.html

      Comme ça, ça marche.

      Merci,

    • En fait ça ne marche que dans le salon de l’espace privé, pas à partir de la page /spip.php?page=spipcatchat...

    • Bonsoir,

      Pour les salons de l’espace public, c’est dans modeles/spipcatchat.html, ligne 73, où il faut remplacer SpipCatChatLang,['(#NOM|sinon{#LOGIN})'] par SpipCatChatLang,['(#NOM|trim|sinon{#LOGIN})'].

    • Un grand merci VS, sans jamais avoir pu reproduire cette erreur, j’ai cherché bien longtemps la réponse à ce problème.

    • De rien. En revanche, c’est en fait tout les #NOM qu’il faut remplacer par ['(#NOM|trim|sinon{#LOGIN})'], dans le fichier modeles/spipcatchat.html mais aussi dans modeles/spipcatchat_addusers.html

      Est-ce que cette solution sera ajoutée dans les prochaines versions ou dois-je prévoir de la remettre ?

      Merci beaucoup,
      Tout fonctionne bien maintenant.

    • Je viens de voir la mise à jour, mais sauf erreur de ma part, il reste un ['(#NOM|sinon{#LOGIN})'] dans le fichier modeles/spipcatchat_addusers.html

      Bonne soirée !

    • Bonjour VS,

      Merci ! je vais finir par être vraiment embarrassé ;)

      Agréable journée à vous

    • Bonjour,

      Après mise à jour, impossible d’ajouter des utilisateurs aux salons privés. J’obtiens une erreur js :

      Erreur : SyntaxError: missing } after property list
      Fichier source : url/spip.php?page=spipcatchat

      Je n’arrive pas à trouver d’où vient l’erreur, si ce n’est que cela semble concerner le fichier modeles/spipcatchat_addusers.html

      Merci de l’aide,

    • Bonjour VS,

      J’ai ajouté la fonction Json_encode sur la variable contenant la liste des auteurs, le problème semble provenir de ce côté.

      Merci ;)

    • Bonsoir,

      En effet, je vous confirme que cela fonctionne.

      Merci infiniment !

    Reply to this message

  • Ça alors quelle bonne surprise, j’attends ça depuis si longtemps, il me tarde de l’installer. Mille merci

    Reply to this message

  • Bonjour Logo,

    Je me permets déjà de vous féliciter pour votre excellent choix :)

    Dans le répertoire “ db_catchat “ du plugin, veillez que le fichier “catchat.xml ” soit bien présent et libre en droit d’accès.

    Êtes-vous sous Mac OSX ? Car en local, il faut sans doute revoir aussi les privilèges accordés par le système aux fichiers.

    En espérant vous avoir été utile.

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom