var URLplugin='[(#ENV{url_plugin}|trim)]'; var idAuteur=encodeURIComponent('[(#ID_AUTEUR|trim)]'); var charset=encodeURIComponent('[(#CHARSET|trim)]'); var nom=encodeURIComponent('[(#ENV{nom}|trim)]'); var langShowChat = new Array("<:spipcatchat:catchat_message:>"); [var catchatrefresh=(#CONFIG{spipcatchat_prive/refreshprive,1000}|trim);] [var catcache="(#CONFIG{spipcatchat_commun/cache,non}|trim)";] [var hist=(#CONFIG{spipcatchat_commun/history,0}|trim);] [(#CONFIG{spipcatchat_commun/theme_emoticons}||non)var pack="classic"; #SET{catchatthememoti,classic}] [(#CONFIG{spipcatchat_commun/theme_emoticons}||oui)[var pack="(#CONFIG{spipcatchat_commun/theme_emoticons}|trim)";] #SET{catchatthememoti,#CONFIG{spipcatchat_commun/theme_emoticons}}] var catchatrefreshstatut=125000; var scrollBar = false; var nombreMessage; var emosta = 'status'; function spipcatchattypo(texte,url,pack) { #SET{spipcatchatregex2, [a-z A-Z 0-9]+.png$} #SET{grommeler2,#VALEUR|match{#GET{spipcatchatregex2}, Uims }|replace{\.png$,'',S} } [texte = texte.replace(/[:(#GET{grommeler2}|trim):]/g,' #GET{grommeler2} ');] texte = texte.replace(/[\W]{1}lol[^\S]{1}/g,' Sourire '); texte = texte.replace(/[\W]{1}mdr[^\S]{1}/g,' MDR '); texte = texte.replace(/[\W]{1}[p]+tdr[^\S]{1}/g,' PTDR '); texte = texte.replace(/_/gi,'
'); texte = texte.replace(/{{{/gi,''); texte = texte.replace(/}}}/gi,''); texte = texte.replace(/{{/gi,''); texte = texte.replace(/}}/gi,''); texte = texte.replace(/{/gi,''); texte = texte.replace(/}/gi,''); texte = texte.replace(/{/gi,''); texte = texte.replace(/}/gi,''); return texte; } function spipcatchatemoticonprive(emoticon) { $('#message').val($('#message').val()+''+emoticon); $('#emoticon').trigger("play"); } function spipcatchatmessage() { // l'utilisation de cette fonction a pour but d'afficher les messages d'erreur et d'éviter les appels inutiles au script PHP pour les motifs suivant t=[(#CONFIG{spipcatchat_prive/refreshprive}|div{1000})]; if(""==$("#message").val()) $("#spipcatchatvide").css("display","block"), // Message d'erreur -> affichage le message: Vide setTimeout(function(){$("#spipcatchatvide").css("display","none")},1E3); // Le message est de nouveau caché else if(timer) // Si le message n'est pas vide et que la variable TIMER est égale à TRUE -> batteries de test { $("#spipcatchattimer").css("display","block"); // Message d'erreur -> affichage message: temporisation $("#spipcatchatcompt").html(t); // Initier le compte à rebours avec la variable T et premier affichage. var a=setInterval(function(){t--;if(t<0){t=0;}$("#spipcatchatcompt").html(t)},800); // Contenu de la variable A -> fonction : On incrémente de -1 la variable T toutes les 800 millisecondes et on affiche et si elle est inférieure à zero la variable T prend la valeur 0. setTimeout( // Retour à la normale après X millisecondes de la variable CATCHATREFRESH function(){$("#spipcatchattimer").css("display","none"); // Le message est de nouveau caché clearTimeout(a)},catchatrefresh ) } else if(120<$("#message").val().length) { $("#spipcatchatroman").css("display","block"); // Message d'erreur -> affichage message: message jugé trop long setTimeout(function(){$("#spipcatchatroman").css("display","none");},1E3); // Le message est de nouveau caché } else { // le message a rempli toutes les conditions timer=1, setTimeout(function(){timer=0},catchatrefresh), //Après X millisecondes la variable TIMER passe à FALSE $("#spipcatchatpostmessage").submit(spipcatchatsetmessage(URLplugin, idAuteur,charset,catchatrefresh/1000)) // Le message est envoyer a la fonction javascript spipcatchatsetmessage pour la suite } } var timer; $(document).keypress( // l'utilisateur presse la touche ENTER -> action de la fonction spipcatchatmessage function(a) { 13==a.keyCode&&spipcatchatmessage() }); $(document).keypress( // Dans d'autres cas la touche ENTER ne produit pas d'action function(a) { if(13==a.keyCode)return!1} ); function spipcatchatShowChat() { // Cette fonction permet d'initialiser le chat dans le bon environnement. En assignant les valeurs utiles au déroulement du chat, le time-code, les autorisations, les statuts etc... dans des variables de sessions. $.ajax({ url:URLplugin+"phpscripts/get-prive-autorisation.php", // Pour ne pas interférer avec le chat public les script sont différent mais globalement les contenus sont les mêmes à part le nom des variables de sessions. type:"POST", data:"id_auteur="+idAuteur+"&nom="+nom+"&url="+URLplugin+"&char="+charset+"&historique="+hist, success:function(e) { // Après l'exécution du script on lance la fonction STARTCHAT if(e==3) { $("#spipcatchatacces2").css('display','block'); $(".formulaire_spip").css('display','none'); } else { emosta = 'status'; startchat(catchatrefresh,catchatrefreshstatut,idAuteur,URLplugin,langShowChat,charset); } } }) } function spipcatchatShowChatAdmin(admin) { // Cette fonction permet d'initialiser le chat dans le bon environnement. En assignant les valeurs utiles au déroulement du chat, le time-code, les autorisations, les statuts etc... dans des variables de sessions. spipcatchatrestartstatut(); $.ajax({ url:URLplugin+"phpscripts/get-prive-autorisation.php", // Pour ne pas interférer avec le chat public les scripts sont différent mais globalement les contenus sont les mêmes à part le nom des variables de sessions. type:"POST", data:"id_auteur="+idAuteur+"&nom="+nom+"&url="+URLplugin+"&char="+charset+"&admin="+admin+"&historique="+hist, success:function(e) { if(e==1) { $('#libre').css('display','none'); $('#occuper').css('display','block'); $('#public').css('display','none'); $('#prive').css('display','block'); $('#spipcatchattitreprive').css('display','block'); $('#spipcatchattitrepublic').css('display','none'); emosta = 'admin'; } if(e==0){ $('#libre').css('display','block'); $('#occuper').css('display','none'); $('#public').css('display','block'); $('#prive').css('display','none'); $('#spipcatchattitreprive').css('display','none'); $('#spipcatchattitrepublic').css('display','block'); emosta = 'status'; } if(e==3) { $("#spipcatchatacces2").css('display','block'); $(".formulaire_spip").css('display','none'); } $('#salonadmin').css('display','none'); $('#salonadminpatientez').css('display','block'); $('#switch').trigger("play"); setTimeout(function(){ $('#salonadmin').css('display','block');$('#salonadminpatientez').css('display','none');},6e3); } }) } function getMessages(e,t,n,r,i) { // Cette fonction permet le retour des messages du chat $.getJSON(n+"phpscripts/get-prive-message.php", {auteur:t,ref:e/1e3,aucunmessage:r[0],"char":i,"historique":hist,"cache":catcache}, // On passe dans l'URL un tableau en format JSON function(e) { var t=$("#text"); $("#text").html(spipcatchattypo(e.messages)); // On passe en revue avant l'affichage du tableau des messages du chat avec la fonction SPIPCATCHATTYPO pour les émoticons et la typo SPIP 1!=scrollBar&&(t[0].scrollTop=t[0].scrollHeight,scrollBar=!0); void 0!==t&&t[0].childNodes.length>nombreMessage&&(t[0].scrollTop=t[0].scrollHeight, // Ici le nombre de ligne du tableau est passé à plus un, donc on descend la scroll bar $("#soundGet").trigger("play")); // et comme tout chat qui se respecte on joue un son d'avertissement void 0!==t&&(nombreMessage=t[0].childNodes.length) // ensuite on compte le nombre de ligne du tableau et on rafraîchi notre variable if(e.cache=="oui"){$("#spipcatchatpointprive").css('display','block');}else{$("#spipcatchatpointprive").css('display','none');} } ) } function spipcatchatsetmessage(e,t,n,r) { // Cette fonction permet d'enregistrer les messages du chat var i=encodeURIComponent($("#message").val()); // On enregistre le message en l'encodant $("#message").val(""); // et ensuite on vide le champ MESSAGE $.ajax({ type:"POST", url:e+"phpscripts/set-prive-message.php", // Pour ne pas interférer avec le chat public les script sont différent mais globalement les contenus sont les mêmes à part le nom des variables de sessions. data:"message="+i+"&auteur="+t+"&char="+encodeURIComponent(n)+"&ref="+encodeURIComponent(r), success:function(e) { $("#soundPost").trigger("play");// On joue un son d'avertissement $("#soundGet").trigger("stop");// et on stop le son d'avertissement du get sinon c'est la cacophonie assurée! 1!=e&&$("#responsePost").html(e).slideDown("slow"); // si de retour on a un FALSE alors on l'affiche -> auto commentaire perso(mais je crois que celà n'a plus sa raison d'être avec la version plugin...à vérifier) $("#message").focus() }, error:function(e) {alert("Erreur - Set-Message")} }) } function startchat(e,t,r,i,s,o) { // Cette fonction permet de démarrer les deux autres fonctions des statuts des auteurs et le retour des messages à des intervalles programmés par les variables -> T&E document.getElementById("message")&&(getOnlineUsers(r,i,s,o),statusStart=window.setInterval(function(){getOnlineUsers(r,i,s,o)},t),window.setInterval(function(){getMessages(e,r,i,s,o)},e),$("#message").focus()) } function getOnlineUsers(t,n,r,i) { $.getJSON(n+"phpscripts/get-prive-online.php", // Pour ne pas interférer avec le chat public les scripts sont différent mais globalement les contenus sont les mêmes à part le nom des variables de sessions. {auteur:t}, function(e) { $('#SpipCatChatStatus option[value=1]').removeProp("selected"); $('#SpipCatChatStatus option[value=2]').removeProp("selected"); $('#SpipCatChatStatus option[value=3]').removeProp("selected"); $('#un').removeAttr("selected");$('#deux').removeAttr("selected");$('#trois').removeAttr("selected"); var r="",i,s; for(s in e.list){ if(e.list[s].id==t){ if("busy"==e.list[s].status) {$('#deux').attr("selected","selected");$('#SpipCatChatStatus option[value=2]').prop("selected",true);} else if("inactive"==e.list[s].status) {$('#un').attr("selected","selected");$('#SpipCatChatStatus option[value=1]').prop("selected",true);} else if("active"==e.list[s].status) {$('#trois').attr("selected","selected");$('#SpipCatChatStatus option[value=3]').prop("selected",true);} } "busy"==e.list[s].status?(texte="Occupé(e) [X]", i="inactive"):"inactive"==e.list[s].status?(texte=" Absent(e) [-] ", i="neutral"):(texte="En ligne [√]", i="active"), r+=' '+e.list[s].login+"
"; $("#users").html(r) } } ) } function SpipCatChatsetStatus(e,t,n) { // Cette fonction permet d'enregistrer le statut des auteurs $.ajax({type:"POST",url:n+"phpscripts/set-prive-status.php", // Pour ne pas interférer avec le chat public les script sont différent mais globalement les contenus sont les mêmes à part le nom des variables de sessions. data:"status="+e+"&auteur="+t, success:function(e) { $("#catchatprivestatut").addClass("spipcatchatpause"); // On opacifie le conteneur $("#spipcatchatpatientez").css("display","block"); // et un petit gif animé pour faire joli setTimeout(rmResponse,15e3); // Mais à un moment donné il faut que ça s'arrête, alors on passe la fonction RemoveResponse }, error:function(e) { alert("Erreur - Status"); setTimeout(rmResponse,15e3) } } ) } function rmResponse() { // Cette fonction permet un retour à la normale après un changement de statut $("#catchatprivestatut").removeClass("spipcatchatpause"); $("#spipcatchatpatientez").css("display","none"); } function spipcatchatrestartstatut() { // Cette fonction permet de forcer l'actualisation du statut avant les deux minutes en deux passes setTimeout(function(){getOnlineUsers(idAuteur,URLplugin,langShowChat,charset)},6e3); setTimeout(function(){getOnlineUsers(idAuteur,URLplugin,langShowChat,charset)},12e3); } spipcatchatShowChat();