Changeset 87314 in spip-zone


Ignore:
Timestamp:
Feb 1, 2015, 2:44:28 PM (4 years ago)
Author:
claude.codden@…
Message:

Ajout de commentaires et amélioration de la lecture du script.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spipcatchat/trunk/prive/javascript/prive-spipcatchat.js.html

    r87257 r87314  
     1// Ici les liens entre nos variables de config de spip et les variables javascript de spipcatchat //
    12var URLplugin='#ENV{url_plugin}';
    23var idAuteur=encodeURIComponent('#ID_AUTEUR');
     
    910var scrollBar = false;
    1011var nombreMessage;
    11 function spipcatchatmessage(){t=[(#CONFIG{spipcatchat/refreshprive}|div{1000})];if(""==$("#message").val())$("#spipcatchatvide").css("display","block"),setTimeout(function(){$("#spipcatchatvide").css("display","none")},1E3);else if(timer){$("#spipcatchattimer").css("display","block");$("#spipcatchatcompt").html(t);var a=setInterval(function(){t--;if(t<0){t=0;}$("#spipcatchatcompt").html(t)},800);setTimeout(function(){$("#spipcatchattimer").css("display","none");clearTimeout(a)},catchatrefresh)}else if(120<$("#message").val().length){$("#spipcatchatroman").css("display","block");setTimeout(function(){$("#spipcatchatroman").css("display","none");},1E3);}else{timer=1, setTimeout(function(){timer=0},catchatrefresh),$("#spipcatchatpostmessage").submit(spipcatchatsetmessage(URLplugin, idAuteur,charset,catchatrefresh/1000))}}var timer;$(document).keypress(function(a){13==a.keyCode&&spipcatchatmessage()});$(document).keypress(function(a){if(13==a.keyCode)return!1});function spipcatchatShowChat(){$.ajax({url:URLplugin+"phpscripts/get-prive-autorisation.php",type:"POST",data:"id_auteur="+idAuteur+"&id_salon="+idSalon+"&nom="+nom+"&url="+URLplugin+"&char="+charset,success:function(e){startchat(catchatrefresh,catchatrefreshstatut,idSalon,idAuteur,URLplugin,langShowChat,charset);$("#spipcatchatselectsalon").css("display","block")}})}function getMessages(e,t,n,r,i){$.getJSON(n+"phpscripts/get-prive-message.php",{auteur:t,ref:e/1e3,aucunmessage:r[0],"char":i},function(e){var t=$("#text");$("#text").html(spipcatchattypo(e.messages,n));1!=scrollBar&&(t[0].scrollTop=t[0].scrollHeight,scrollBar=!0);void 0!==t&&t[0].childNodes.length>nombreMessage&&(t[0].scrollTop=t[0].scrollHeight,$("#soundGet").trigger("play"));void 0!==t&&(nombreMessage=t[0].childNodes.length)})}function spipcatchatsetmessage(e,t,n,r){var i=encodeURIComponent($("#message").val());$("#message").val("");$.ajax({type:"POST",url:e+"phpscripts/set-prive-message.php",data:"message="+i+"&auteur="+t+"&char="+encodeURIComponent(n)+"&ref="+encodeURIComponent(r),success:function(e){$("#soundPost").trigger("play");$("#soundGet").trigger("stop");1!=e&&$("#responsePost").html(e).slideDown("slow");$("#message").focus()},error:function(e){alert("Erreur - Set-Message")}})}function startchat(e,t,n,r,i,s,o){document.getElementById("message")&&(getOnlineUsers(n,r,i,s,o),statusStart=window.setInterval(function(){getOnlineUsers(n,r,i,s,o)},t),window.setInterval(function(){getMessages(e,r,i,s,o)},e),$("#message").focus())}function getOnlineUsers(e,t,n,r,i){$.getJSON(n+"phpscripts/get-prive-online.php",{auteur:t,salon:e},function(e){if(1==e.autorisation){var r="",i,s;for(s in e.list)"busy"==e.list[s].status?(texte="Occupé(e) [X]",i="inactive",t==e.list[s].id&&$("#SpipCatChatStatus option[value=2]").attr("selected","selected")):"inactive"==e.list[s].status?(texte=" Absent(e) [-] ",i="neutral",t==e.list[s].id&&$("#SpipCatChatStatus option[value=1]").attr("selected","selected")):(texte="En ligne [&radic;]",i="active",t==e.list[s].id&&$("#SpipCatChatStatus option[value=3]").attr("selected","selected")),r+='<span title="'+texte+'"><img src="'+n+"/images/status-"+i+'.png" /> '+e.list[s].login+"</span><br/>";$("#users").html(r)}else window.location=urlpage})}function SpipCatChatsetStatus(e,t,n){$.ajax({type:"POST",url:n+"phpscripts/set-prive-status.php",data:"status="+e+"&auteur="+t,success:function(e){$("#catchatprivestatut").addClass("spipcatchatpause");$("#spipcatchatpatientez").css("display","block");setTimeout(rmResponse,15e3)},error:function(e){alert("Erreur - Status");setTimeout(rmResponse,15e3)}})}function rmResponse(){$("#catchatprivestatut").removeClass("spipcatchatpause");$("#spipcatchatpatientez").css("display","none")}function spipcatchatrestartstatut(){setTimeout(function(){getOnlineUsers("0",idAuteur,URLplugin,langShowChat,charset)},6e3);setTimeout(function(){getOnlineUsers("0",idAuteur,URLplugin,langShowChat,charset)},12e3)}spipcatchatShowChat()
     12// -------------------------------------------------------------------------------------------------//
     13function spipcatchatmessage()
     14{       // 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
     15 t=[(#CONFIG{spipcatchat/refreshprive}|div{1000})];
     16 
     17  if(""==$("#message").val())
     18        $("#spipcatchatvide").css("display","block"), // Message d'erreur -> affichage message: Vide
     19        setTimeout(function(){$("#spipcatchatvide").css("display","none")},1E3); // Le message est de nouveau caché
     20  else if(timer) // Si le message n'est pas vide et que la varible TIMER est égale à TRUE -> batteries de teste
     21                {
     22                        $("#spipcatchattimer").css("display","block"); // Message d'erreur -> affichage message: temporisation
     23                        $("#spipcatchatcompt").html(t); // Initier le compte à rebours avec la variable T et premier affichage.
     24                        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.
     25                        setTimeout( // Retour à la normale après X millisecondes de la variable CATCHATREFRESH
     26                                function(){$("#spipcatchattimer").css("display","none"); // Le message est de nouveau caché
     27                                clearTimeout(a)},catchatrefresh
     28                                )
     29                        }
     30                else if(120<$("#message").val().length)
     31                {
     32                        $("#spipcatchatroman").css("display","block"); // Message d'erreur -> affichage message: message jugé trop long
     33                        setTimeout(function(){$("#spipcatchatroman").css("display","none");},1E3); // Le message est de nouveau caché
     34                        }
     35                else
     36                { // le message a rempli toutes les conditions
     37                        timer=1,
     38                        setTimeout(function(){timer=0},catchatrefresh), //Après X millisecondes la variable TIMER passe à FALSE
     39                        $("#spipcatchatpostmessage").submit(spipcatchatsetmessage(URLplugin, idAuteur,charset,catchatrefresh/1000)) // Le message est envoyer a la fonction javascript spipcatchatsetmessage pour la suite
     40                        }
     41}
     42var timer;
     43
     44$(document).keypress( // l'utilisateur presse la touche ENTER -> action de la fonction spipcatchatmessage
     45function(a)
     46        {       13==a.keyCode&&spipcatchatmessage()     });
     47
     48$(document).keypress( // Dans d'autres cas la touche ENTER ne produit pas d'action
     49function(a)
     50        {       if(13==a.keyCode)return!1}      );
     51
     52function spipcatchatShowChat()
     53{ // 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.
     54$.ajax({
     55        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.
     56        type:"POST",
     57        data:"id_auteur="+idAuteur+"&id_salon="+idSalon+"&nom="+nom+"&url="+URLplugin+"&char="+charset,
     58        success:function(e)
     59                { // Après l'exécution du script on lance la fonction STARTCHAT
     60                        startchat(catchatrefresh,catchatrefreshstatut,idSalon,idAuteur,URLplugin,langShowChat,charset);
     61                        $("#spipcatchatselectsalon").css("display","block");
     62                }
     63        })
     64}
     65
     66function getMessages(e,t,n,r,i)
     67{ // Cette fonction permet le retour des messages du chat
     68        $.getJSON(n+"phpscripts/get-prive-message.php", 
     69        {auteur:t,ref:e/1e3,aucunmessage:r[0],"char":i}, // On passe dans l'URL un tableau en format JSON
     70        function(e)
     71                {
     72                var t=$("#text");
     73                $("#text").html(spipcatchattypo(e.messages,n)); // On passe en revue avant l'affichage du tableau des messages du chat avec la fonction SPIPCATCHATTYPO pour les émoticons et la typo SPIP
     74                1!=scrollBar&&(t[0].scrollTop=t[0].scrollHeight,scrollBar=!0);
     75                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
     76                $("#soundGet").trigger("play")); // et comme tout chat qui se respecte on joue un son d'avertissement
     77                void 0!==t&&(nombreMessage=t[0].childNodes.length) // ensuite on compte le nombre de ligne du tableau et on rafraîchi notre variable
     78                }
     79          )
     80}
     81
     82function spipcatchatsetmessage(e,t,n,r)
     83{ // Cette fonction permet d'enregistrer les messages du chat
     84        var i=encodeURIComponent($("#message").val()); // On enregistre le message en l'encodant
     85        $("#message").val(""); // et ensuite on vide le champ MESSAGE
     86 $.ajax({
     87         type:"POST",
     88         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.
     89         data:"message="+i+"&auteur="+t+"&char="+encodeURIComponent(n)+"&ref="+encodeURIComponent(r),
     90         success:function(e)
     91         {
     92                 $("#soundPost").trigger("play");// On joue un son d'avertissement
     93                 $("#soundGet").trigger("stop");// et on stop le son d'avertissement du get sinon c'est la cacophonie assurée!
     94                 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)
     95                 $("#message").focus()
     96                 },
     97  error:function(e)
     98        {alert("Erreur - Set-Message")}
     99  })
     100}
     101
     102function startchat(e,t,n,r,i,s,o)
     103{ // 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
     104document.getElementById("message")&&(getOnlineUsers(n,r,i,s,o),statusStart=window.setInterval(function(){getOnlineUsers(n,r,i,s,o)},t),window.setInterval(function(){getMessages(e,r,i,s,o)},e),$("#message").focus())
     105}
     106
     107function getOnlineUsers(e,t,n,r,i)
     108{
     109        $.getJSON(n+"phpscripts/get-prive-online.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.
     110        {auteur:t,salon:e},
     111        function(e)
     112        {
     113        if(1==e.autorisation)
     114        { var r="",i,s;
     115                for(s in e.list)
     116                "busy"==e.list[s].status?(texte="Occupé(e) [X]",
     117                i="inactive",
     118                t==e.list[s].id&&$("#SpipCatChatStatus option[value=2]").attr("selected","selected")):"inactive"==e.list[s].status?(texte=" Absent(e) [-] ",
     119                i="neutral",
     120                t==e.list[s].id&&$("#SpipCatChatStatus option[value=1]").attr("selected","selected")):(texte="En ligne [&radic;]",
     121                i="active",
     122                t==e.list[s].id&&$("#SpipCatChatStatus option[value=3]").attr("selected","selected")),
     123                r+='<span title="'+texte+'"><img src="'+n+"/images/status-"+i+'.png" /> '+e.list[s].login+"</span><br/>";$("#users").html(r)
     124        }
     125        // else window.location=urlpage // C'est ici que l'on se fait éjecter si l'on n'a pas d'autorisation pour le chat, mais pour l'instant cette fonction n'a plus de raison car il n'y a pas de salon privé dans l'espace du même nom
     126        }
     127  )
     128}
     129
     130function SpipCatChatsetStatus(e,t,n)
     131{ // Cette fonction permet d'enregistrer le statut des auteurs
     132        $.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.
     133                data:"status="+e+"&auteur="+t,
     134                success:function(e)
     135                {
     136                        $("#catchatprivestatut").addClass("spipcatchatpause"); // On opacifie le conteneur
     137                        $("#spipcatchatpatientez").css("display","block"); // et un petit gif animé pour faire joli
     138                        setTimeout(rmResponse,15e3); // Mais à un moment donné il faut que ça s'arrête, alors on passe la fonction RemoveResponse
     139                },
     140                error:function(e)
     141                {
     142                        alert("Erreur - Status");
     143                        setTimeout(rmResponse,15e3)
     144                        }
     145                }
     146        )
     147}
     148
     149function rmResponse()
     150{ // Cette fonction permet un retour à la normale après un changement de statut
     151        $("#catchatprivestatut").removeClass("spipcatchatpause");
     152        $("#spipcatchatpatientez").css("display","none");
     153}
     154
     155function spipcatchatrestartstatut()
     156{ // Cette fonction permet de forcer l'actualisation du statut avant les deux minutes en deux passes
     157setTimeout(function(){getOnlineUsers("0",idAuteur,URLplugin,langShowChat,charset)},6e3);
     158setTimeout(function(){getOnlineUsers("0",idAuteur,URLplugin,langShowChat,charset)},12e3);
     159}
     160spipcatchatShowChat();
Note: See TracChangeset for help on using the changeset viewer.