comunic/assets/js/global.js
2016-11-19 12:08:12 +01:00

1549 lines
48 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Main library for the Comunic Project
*
* @author Pierre HUBERT
*/
//Inclusion de la page
window.onkeydown = receive_key;
//Fonction d'analyse et de détermination des raccourcis claviers envoyés dans Comunic
function receive_key(e){
//Pour IE
if (!e){
e = window.event;
}
//Enregistre du code de la touche
code = e.keyCode;
//Analyse du code de la touche saisie
//Pour le blocage des flux de streaming réseaux (Code 117 - Touche F6)
if(code == 117)
{
//Blocage des flux réseaux
if(autoriser_flux_streaming_live == false)
{
autoriser_flux_streaming_live = true;
affiche_notification_succes('Le flux réseau a été réactivé. Appuyez sur F6 pour le désactiver à nouveau.');
}
else
{
//Demande confirmation
if(confirm('Vous avez appuye sur la touche F6 de votre clavier. Dans Comunic, cette touche permet de bloquer l\'actualisation rapide des nouvelles notifications. Confirmez-vous le bloquage?'))
{
autoriser_flux_streaming_live = false;
affiche_notification('Le flux réseaux sera normalement maintenant limité aux requêtes que vous envoyez, jusqu\'à la prochaine ouverture de page. Appuyez sur F6 pour réactiver le flux reseau.');
}
}
}
}
//Fonction Ajax rapide sans réponse attendue
function ajax_rapide(adresse){
request = new XMLHttpRequest();
request.open("GET", adresse);
request.send(null);
}
//Fonction de recherche et d'affichage si nécessaire des notifications
//Nécessite: prepare_joue_son
//Nécessite: joue_son
function getpopupnotification(file) {
var xhr_popup_notifications = new XMLHttpRequest();
// Récupération du contenu du fichier
xhr_popup_notifications.open('GET', file);
xhr_popup_notifications.onreadystatechange = function() {
if (xhr_popup_notifications.readyState == 4 && xhr_popup_notifications.status == 200) {
if(xhr_popup_notifications.responseText != "")
{
affiche_notification(xhr_popup_notifications.responseText, "Notification", 5);
joue_son("son_notification");
}
else
{
//Do nothing
}
} else if (xhr_popup_notifications.readyState == 4 && xhr_popup_notifications.status != 200) {
//Do nothing
}
}
xhr_popup_notifications.send(null);
}
//Fonction de redirection
function redirige(adresse)
{
//On redirige la page
document.location.href=adresse;
}
//Préparation d'un contrôleur de son
function prepare_joue_son(adresse_ogg, adresse_mp3, id)
{
//On ajoute le code HTML
document.getElementById(id + "_area").innerHTML = "<audio id='" + id + "'><source src='" + adresse_ogg + "'></source><source src='" + adresse_mp3 +"'></source></audio>";
}
function joue_son(id)
{
//On récupère les informations du son
var player = document.querySelector('#' + id);
player.play();
}
//Fonction d'affichage de notification
function affiche_notification(message, titre, temps)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!titre)
{
var titre = "Information";
}
if(!temps)
{
var temps = 3;
}
//On calcule de temps
temps = temps*1000;
$(function(){
$.Notify({
shadow: true,
position: 'bottom-right',
content: message,
caption: titre,
timeout: temps
});
});
}
//Fonction d'affichage de notification (erreur)
function affiche_notification_erreur(message, titre, temps)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!titre)
{
var titre = "Erreur";
}
if(!temps)
{
var temps = 3;
}
//On calcule de temps
temps = temps*1000;
$(function(){
$.Notify({
shadow: true,
position: 'bottom-right',
content: message,
caption: titre,
timeout: temps,
style: {background: 'red', color: 'white',},
});
});
}
//Fonction d'affichage de notification (succès)
function affiche_notification_succes(message, titre, temps)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!titre)
{
var titre = "Succ&egrave;s";
}
if(!temps)
{
var temps = 3;
}
//On calcule de temps
temps = temps*1000;
$(function(){
$.Notify({
shadow: true,
position: 'bottom-right',
content: message,
caption: titre,
timeout: temps,
style: {background: 'green', color: 'white'}
});
});
}
//Fonction de validation d'adresse mail
function validermail(mailarea)
{
var email = document.getElementById(mailarea).value;
if (email.match(/^[a-zA-Z0-9_.]+@[a-zA-Z0-9-]{1,}[.][a-zA-Z]{2,3}$/))
{
return true;
}
else
{
alert('Votre adresse mail est incorrecte!');
return false;
}
}
//Fonction pour afficher ou cacher des éléments
function MM_showHideLayers() { //v9.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3)
with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}
//Script de confirmation pour effectuer une opération
function confirmaction(destination, message) {
if (confirm(message))
{
document.location.href=destination;
}
else
{
affiche_notification("Op&eacute;ration annul&eacute;e.", "Information", 7);
}
}
//Affiche une fenêtre (code source dans l'appel de la fonction)
function affiche_fenetre(titre, code_source, icone, lock_screen, window_width, window_height)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!icone)
{
var icone = "icon-file";
}
if(!lock_screen)
{
var lock_screen = false;
}
if(!window_width)
{
var window_width = 500;
}
if(!window_height)
{
var window_height = 200;
}
$(function(){
$.Dialog({
shadow: true,
overlay: lock_screen,
draggable: true,
flat: true,
icon: '<span class="' + icone + '"></span>',
title: titre,
width: window_width,
padding: 10,
height : window_height,
content: code_source
});
});
}
//Affiche la liste des smiley
function affiche_liste_smile(destination, liste)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!liste)
{
var liste = liste_smile;
}
var source = "<table class='liste_smile'>";
var count = 0;
//On parcours la liste
for (var i = 0; i < liste.length; i++) {
if(count == 0)
{
source = source + "<tr>";
}
source = source + "<td><img class='un_smile_de_liste' onClick='" + 'ajout_source("'+liste[i][0]+'", "'+ destination +'"); ' + "' src='" + liste[i][1] + "' title='" + liste[i][2] + "' /></td>"; //Code retiré : $.Dialog.close();
count = count + 1;
if(count == 7)
{
source = source + "</tr>";
count = 0;
}
}
source = source + "</table>";
//Affichage de la fenêtre
affiche_fenetre("", source, "icon-smiley", true, 130, 100);
}
//Ajout de la source à un champs de texte (ex:Smiley)
function ajout_source(source_ajout, destination)
{
//On récupère l'ancienne source
var source_original = document.getElementById(destination).value;
//On ajoute la nouvelle
document.getElementById(destination).value = source_original + source_ajout;
}
//Affichage des notifications V.2
function affiche_notifications(show_pannel)
{
if(!show_pannel)
{
show_pannel = 1;
}
//On vérifie si il faut afficher le panneau des notifications
if(show_pannel == 1)
{
//Affichage du panneau des notifications
//document.getElementById('new_notification').style.visibility = "visible";
MM_showHideLayers("new_notification", "", "show");
}
else
{
//On masque le panneau des notifications
//document.getElementById('new_notification').style.visibility = "hidden";
MM_showHideLayers("new_notification", "", "hide");
}
//Ouverture de la requête
xhr_notifications = new XMLHttpRequest();
xhr_notifications.open("GET", "notification.php");
xhr_notifications.onreadystatechange = function() {
if (xhr_notifications.readyState == 4 && (xhr_notifications.status == 200 || xhr_notifications.status == 0)) {
document.getElementById('new_iframenotification').innerHTML = xhr_notifications.responseText;
}
};
//Envoi de la requête
xhr_notifications.send(null);
}
//Affichage d'une fenêtre de chat privé (ancienne version)
function affiche_chat_prive_old(id)
{
if(!id)
{
id = "";
}
else
{
id = "?screen=chat&id=" + id;
}
affiche_fenetre("Chat priv&eacute;", "<iframe src='privatechat.php" + id + "' class='iframenotification'>Votre navigateur n'est pas compatible avec le logiciel de chat priv&eacute;. Veuillez mettre votre navigateur &agrave; jour ou utiliser Mozilla Firefox.</iframe>", "icon-user", true, 415, 170);
}
//Fermer le panneau des amis
function ferme_panneau_amis()
{
//On masque le panneau
document.getElementById('listeamis').style.display = "none";
//On enregistre le choix de l'utilisateur par une requête Ajax
ajax_rapide("index.php?miseajourpanneau=0");
//On affiche un message à l'utilisateur
affiche_notification("Masquage du panneau des amis termin&eacute;.", "Information", 2);
}
//Fermer le panneau des amis
function affiche_panneau_amis()
{
//On masque le panneau
document.getElementById('listeamis').style.display = "block";
//On enregistre le choix de l'utilisateur par une requête Ajax
ajax_rapide("index.php?miseajourpanneau=1");
//On affiche un message à l'utilisateur
affiche_notification("Affichage du panneau des amis termin&eacute;.", "Information", 2);
}
//Fonction de post de commentaires
function submitCommentaire(destination, idcommentaireform, iddestination, idtexte, page, iduser)
{
var commentaire = encodeURIComponent(document.getElementById(idcommentaireform).value);
//var touscommentaires = document.getElementById(iddestination);
if(page == 0)
{
//Préparation de la recherche des nouveaux commentaires
filegetcommentaire = "commentaire.php?idtexte=" + idtexte + "&id=" + iduser;
}
else
{
//Préparationn de la recherche des nouveaux ccommentaires
filegetcommentaire = "commentaire.php?idtexte="+idtexte+"&page="+page+ "&id=" + iduser;
}
//On vérifie si une image est jointe
if(document.getElementById('image_' + idtexte).value != "")
{
//On effectue le nécessaire
var vFD = new FormData(document.getElementById("addcommentaire_" + idtexte));
// create XMLHttpRequest object, adding few event listeners, and POSTing our data
var oXHR = new XMLHttpRequest();
oXHR.onreadystatechange = function() {
if (oXHR.readyState == 4 && (oXHR.status == 200 || oXHR.status == 0)) {
affiche_notification_succes("Commentaire enregistr&eacute;.", "");
requeteajaxcommentairesmobiles(filegetcommentaire, iddestination); //Affiche tous les commentaires
}
};
oXHR.open('POST', destination);
oXHR.send(vFD);
}
else
{
document.getElementById(idcommentaireform).value = ""; //Commentaire (forumlaire) vidé
if(commentaire == "")
{
affiche_notification_erreur("L'ajout de commentaires vides est interdit !", "Erreur", 5);
}
else
{
//Nouvel affichage des commentaires
//touscommentaires = touscommentaires + "<tr><td>Vous</td><td>" + commentaire + "</td></tr>";
document.getElementById("addcommentaire_" + idtexte).innerHTML = "<tr><td>Veuillez patienter, chargement en cours...</td></tr>";;
//Requête AJAX
var xhr = new XMLHttpRequest();
xhr.open("POST", destination, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("commentaire="+commentaire+"&idtexte="+idtexte);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
affiche_notification_succes("Commentaire enregistr&eacute;.", "");
requeteajaxcommentairesmobiles(filegetcommentaire, iddestination); //Affiche tous les commentaires
}
};
}
}
}
//Fonction de recherche de commentaires (nécessaire pour le post de commentaire)
function requeteajaxcommentairesmobiles(file, balisescommentaires) {
var xhr = new XMLHttpRequest();
// Récupération du contenu du fichier
xhr.open('GET', file);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById(balisescommentaires).innerHTML = xhr.responseText;
} else if (xhr.readyState == 4 && xhr.status != 200) {
document.getElementById(balisescommentaires).innerHTML = 'Une erreur est survenue. Merci de r&eacute;essayer ult&eacute;rieurment. ';
}
}
xhr.send(null);
}
//Fonction de détection de la résolution d'écran
function get_screen_width()
{
//Minimum for desktop : 620
var viewportwidth;
var viewportheight;
// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
if (typeof window.innerWidth != 'undefined')
{
viewportwidth = window.innerWidth,
viewportheight = window.innerHeight
}
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
{
viewportwidth = document.documentElement.clientWidth,
viewportheight = document.documentElement.clientHeight
}
// older versions of IE
else
{
viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
viewportheight = document.getElementsByTagName('body')[0].clientHeight
}
//Renvoi du résultat
return viewportwidth;
}
//Fonction d'envoi au Serveur la résolution (width) du client
//Nécessite:
// get_screen_width
// ajax_rapide
function send_serveur_width()
{
var width_screen = get_screen_width();
ajax_rapide("index.php?screen_width=" + width_screen);
}
//Fonction permettant la mise en évidence de la présence de nouveaux messages pour l'utilisateur
function verifie_messages_non_lus(type)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!type)
{
var type = 1;
}
//Détermination du fichier
if(type == 1)
{
//Pour les nouveaux messages
fichier = 'action.php?actionid=1';
}
else
{
//Pour les demandes d'amis
fichier = 'action.php?actionid=7';
}
// Récupération du contenu du fichier
var xhr = new XMLHttpRequest();
xhr.open('GET', fichier);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
if(xhr.responseText == "1")
{
if(type == 1) {
document.getElementById('new_message').innerHTML = '<a class="element brand" href="messagerie.php" title="Vous avez de nouveaux messages non lus"><span class="icon-mail"></span></a>'; //Pour les nouveaux messages
}
else {
document.getElementById('new_friend').innerHTML = '<a class="element brand" href="amis.php" title="Nouvelles demandes d\'amis"><span class="icon-stats-up"></span></a>'; //Pour les demandes d'amis
}
}
else
{
//Do nothing
}
}
}
xhr.send(null);
}
//Fonction permettant la mise en évidence de la présence de nouvelles notifications pour l'utilisateur
function verifie_notifications_non_vues(debut_URL)
{
//On vérifie si le flux est bien autorisé
if(autoriser_flux_streaming_live == false)
{
console.log("La requete de recherche de nouvelles notifications a ete bloquee en raison de la configuration de la page l'ayant demande.");
return false;
}
var xhr = new XMLHttpRequest();
// Récupération du contenu du fichier
xhr.open('GET', debut_URL + 'action.php?actionid=3');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
if(xhr.responseText != "0")
{
//source_notification = document.getElementById('nb_notification_area').innerHTML;
source_notification = "<b><font class='nb_unread_notification'>" + xhr.responseText + "</font></b>";
//Application des modifications si nécessaire
if(document.getElementById('nb_notification_area').innerHTML != source_notification)
{
//Modification du nombre
document.getElementById('nb_notification_area').innerHTML = source_notification;
//Actualisation de l'iframe
//document.getElementById('new_iframenotification').src = 'notification.php';
}
//Modification (si nécessaire) du titre de la page
if (~document.title.indexOf('(' + xhr.responseText + ')'))
{
//Ne rien faire
}
else
{
//On vérifie alors si un autre numéro de notifications a été affiché
if(/(\d)/.test(document.title))
{
//Si un autre nombre de notifications a déjà été affiché, on le modifie
document.title = document.title.replace(/(\d)/, xhr.responseText);
}
else
{
//Modification du titre
document.title = "(" + xhr.responseText + ") " + document.title;
}
}
}
else
{
document.getElementById('nb_notification_area').innerHTML = "";
//On s'assure que le nombre de notifications est à 0
document.title = document.title.replace(/(\d)/, "");
document.title = document.title.replace("()", "");
}
} else if (xhr.readyState == 4 && xhr.status != 200) {
//Do nothing
}
}
xhr.send(null);
}
//Fonction permettant de vider des éléments
function vide_id(id)
{
document.getElementById(id).innerHTML = "";
}
//Fonction d'édition des commentaires
function editcommentaire (idcommentaire, idtexte, iduser, page)
{
var new_comment = "";
new_comment = prompt('Saisissez le nouveau commentaire qui va remplacer l\'ancien :', " ");
if(confirm('Confirmez-vous ce nouveau commentaire ? : ' + new_comment))
{
if(new_comment != "" && new_comment != " ")
{
//Détermination de la zone d'arrivée des commentaires
iddestination = "tablecommentaire" + idtexte;
//On vide la zone de commentaires
document.getElementById(iddestination).innerHTML = "<tr><td>Veuillez patienter, chargement en cours...</td></tr>";
//-------------------------------------------------------------------------------------------//
// -------------------------------- Modification du commentaire -----------------------------//
//-------------------------------------------------------------------------------------------//
//Requête AJAX
var xhr = new XMLHttpRequest();
xhr.open("POST", "action.php?actionid=8", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("commentaire="+new_comment+"&idtexte="+idtexte+"&idcommentaire="+idcommentaire);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
//Pour débogage uniquement
//alert(xhr.responseText);
//Message de succès
affiche_notification_succes("Modification du commentaire termin&eacute;e.", "");
//-------------------------------------------------------------------------------------------//
// -------------------------------- Téléchargement des nouveaux commentaires ----------------//
//-------------------------------------------------------------------------------------------//
if(page == 0)
{
//Préparationn de la recherche des nouveaux commentaires
filegetcommentaire = "commentaire.php?idtexte=" + idtexte + "&id=" + iduser;
}
else
{
//Préparationn de la recherche des nouveaux ccommentaires
filegetcommentaire = "commentaire.php?idtexte="+idtexte+"&page="+page+ "&id=" + iduser;
}
requeteajaxcommentairesmobiles(filegetcommentaire, iddestination);
//-------------------------------------------------------------------------------------------//
}
};
xhr.send(null);
//-------------------------------------------------------------------------------------------//
}
else
{
affiche_notification_erreur("Le commentaire est vide !", "Erreur", 3);
}
}
else
{
affiche_notification_erreur("Modification du commentaire annul&eacute;e.", "Erreur", 3);
}
}
//Fonction permettant d'ouvrir une fenêtre d'upload de vidéo
function ouvre_fenetre_upload_video()
{
window.open("action.php?actionid=10","upload_video","width=730px,height=400")
}
//Fonction permettant de changer le nom d'une vidéo
function change_nom_video(id, adresse_rafraichissement)
{
var new_video_name = "";
new_video_name = prompt('Saisissez le nouveau nom pour la video qui va remplacer l\'ancien :', " ");
if(confirm('Confirmez-vous ce nouveau nom ? (OK : oui, Annuler : non) : ' + new_video_name))
{
if(new_video_name != "" && new_video_name != " ")
{
//-------------------------------------------------------------------------------------------//
// ---------------------------- Modification du nom de la vidéo -----------------------------//
//-------------------------------------------------------------------------------------------//
//Requête AJAX
var xhr = new XMLHttpRequest();
xhr.open("POST", "action.php?actionid=12", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("nouveau_nom_video="+new_video_name+"&idvideo="+id);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
//Pour débogage uniquement
//alert(xhr.responseText);
//Message de succès
affiche_notification_succes("Modification du nom de la vid&eacute;o termin&eacute;e.", "");
//-------------------------------------------------------------------------------------------//
// -------------------------------- Rafraîchissement de la page web -------------------------//
//-------------------------------------------------------------------------------------------//
window.location = adresse_rafraichissement;
//-------------------------------------------------------------------------------------------//
}
};
xhr.send(null);
//-------------------------------------------------------------------------------------------//
}
else
{
affiche_notification_erreur("Le nom saisi est vide !", "Erreur", 3);
}
}
else
{
affiche_notification_erreur("Modification du nom de la vid&eacute;o annul&eacute;e.", "Erreur", 3);
}
}
//Fonction permettant de demander la confirmation de la suppression d'une vidéo
function confirm_delete_video(URL_if_yes)
{
if(confirm('Voulez-vous vraiment supprimer cette video ? (OK : oui, Annuler : non) : '))
{
//Redirection pour la suppression de la vidéo
window.location = URL_if_yes;
}
else
{
affiche_notification("Suppression de la vid&eacute;o annul&eacute;e.");
}
}
// Fonction permettant d'afficher ou de masquer des éléments
// Service Pierre 2015, tous droits de réutilisation ou de
// Reproduction réservés.
function show_hide_id(id, visibilite)
{
//On définit les variables complémentaire si cela n'a pas été fait
if(!visibilite)
{
var visibilite = "visible";
}
document.getElementById(id).style.visibility = visibilite;
}
//Fonction permettant de changer le niveau de visibilité d'un post
function change_niveau_visibilite_post(id_post, niveau)
{
//Requete de modification
ajax_rapide("action.php?actionid=14&nouveau_niveau_visibilite=" + niveau + "&idtexte=" + id_post);
//Détermination de l'ID de l'image
id_image = "change_niveau_visibilite_" + id_post + "_img";
//Modification de l'image
if(niveau == 1)
{
document.getElementById(id_image).src = config['pathAssets'] + "img/users_5.png";
}
else
{
if(niveau == 2)
{
document.getElementById(id_image).src = config['pathAssets'] + "img/users_3.png";
}
else
{
document.getElementById(id_image).src = config['pathAssets'] + "img/user.png";
}
}
//Message de succès
affiche_notification_succes("Modification du niveau de visibilit&eacute; du post termin&eacute;e.", "");
//Masquage du menu de changement du niveau de visibilté
show_hide_id("change_niveau_visibilite_" + id_post, 'hidden');
}
//Fonction de suppression de commentaire
function delete_comment(idcommentaire, idtexte, iduser, page)
{
if(confirm('Voulez-vous vraiment supprimer ce commentaire ? : '))
{
//Détermination de la zone d'arrivée des commentaires
iddestination = "tablecommentaire" + idtexte;
//On vide la zone de commentaires
document.getElementById(iddestination).innerHTML = "<tr><td>Veuillez patienter, chargement en cours...</td></tr>";
//-------------------------------------------------------------------------------------------//
// -------------------------------- Suppression du commentaire -----------------------------//
//-------------------------------------------------------------------------------------------//
//Requête AJAX
ajax_rapide("action.php?idtexte=" + idtexte + "&idcommentaire=" + idcommentaire + "&actionid=15");
//Pour débogage uniquement
//alert(xhr.responseText);
//Message de succès
affiche_notification_succes("Suppression du commentaire termin&eacute;e.", "");
//-------------------------------------------------------------------------------------------//
// -------------------------------- Téléchargement des nouveaux commentaires ----------------//
//-------------------------------------------------------------------------------------------//
if(page == 0)
{
//Préparationn de la recherche des nouveaux commentaires
filegetcommentaire = "commentaire.php?idtexte=" + idtexte + "&id=" + iduser;
}
else
{
//Préparationn de la recherche des nouveaux ccommentaires
filegetcommentaire = "commentaire.php?idtexte="+idtexte+"&page="+page+ "&id=" + iduser;
}
//Exécution de la requête
requeteajaxcommentairesmobiles(filegetcommentaire, iddestination);
//-------------------------------------------------------------------------------------------//
}
else
{
affiche_notification_erreur("Suppression du commentaire annul&eacute;e.", "Erreur", 3);
}
}
//Fonction permettant d'aimer un commentaire
function like_comment(idcommentaire, idtexte, aime_deja)
{
//On détermine si la personne doit aimer ou pas
var aime = 0;
if(/aime_vide/i.test(document.getElementById("like_comment_" + idcommentaire).src))
aime = 1;
//Envoi d'une requête pour aimer
ajax_rapide("action.php?actionid=16&idcommentaire=" + idcommentaire + "&idtexte=" + idtexte + "&aime=" + aime);
//Modification de l'image
//Définition de la variable
var complement_nom_image = "";
//On modifie le complément du nom de l'image si il ne s'agit de ne plus aimer
if(aime == 0)
complement_nom_image = "_vide";
//Modification de l'image
document.getElementById("like_comment_" + idcommentaire).src = config['pathAssets'] + "img/aime" + complement_nom_image + ".png";
//Message de succès
if(aime == 1)
affiche_notification_succes("Vous aimez d&eacute;sormais ce commentaire.", "");
else
affiche_notification_succes("Vous n'aimez d&eacute;sormais plus ce commentaire.", "");
}
//Fonction permettant d'aimer un texte ou une page
function like_text_page(id, type, aime_deja)
{
//On détermine si il faut aimer ou pas
if(aime_deja == 1)
like = 0;
else
like = 1;
//On détermine l'ID du conteneur
if(type == "page")
id_conteneur = "aime_page";
else
id_conteneur = "aime_texte_" + id;
//On envoie une requête AJAX pour récupérer le nouveau code source du conteneur
var xhr = new XMLHttpRequest();
// Récupération du contenu du fichier
xhr.open('GET', "action.php?actionid=21&type=" + type + "&id=" + id + "&aime=" + like);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById(id_conteneur).innerHTML = xhr.responseText;
} else if (xhr.readyState == 4 && xhr.status != 200) {
//Message d'erreur
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé. Conséquence: Impossible d'aimer ce text ou cette page.");
}
}
xhr.send(null);
//On affiche un message de succès, suivant le type et si l'on aime ou l'on aime plus.
if(type == "page")
{
if(like == 1)
affiche_notification_succes("Vous aimez d&eacute;sormais cette page.", "");
else
affiche_notification_succes("Vous n'aimez d&eacute;sormais plus cette page.", "");
}
else
{
if(like == 1)
affiche_notification_succes("Vous aimez d&eacute;sormais ce post.", "");
else
affiche_notification_succes("Vous n'aimez d&eacute;sormais plus ce post.", "");
}
}
//Fonction permettant de faire une recherche AJAX lors de la saisie d'un nom d'utilisateur dans la barre de recherche
function search_user_ajax()
{
//Récupération du contenu du champs de texte
var contenu = document.getElementById("search_user_input").value;
//On vide le tableau des précédents affichages
document.getElementById("result_search").innerHTML = "";
document.getElementById("list_results").innerHTML = "";
//On vérifie que le champ n'est pas vide
if(contenu != "")
{
//Requête de recherche
var xhr = new XMLHttpRequest();
// Récupération du contenu du fichier
xhr.open('GET', "action.php?actionid=22&search=" + contenu);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
//Décodage du contenu
var reponse = xhr.responseText;
reponse = reponse.split('<|>');
var longueur_reponse = reponse.length;
//On masque la zone de résultat si il n'y en a pas
if(xhr.responseText == "")
document.getElementById("result_search").style.visibility = "hidden";
//Préparation du parcours du tablau
results = document.getElementById("result_search");
liste_results = document.getElementById("list_results");
//Parcours du tableau
for (var i = 0, div ; i < longueur_reponse ; i++) {
//Décodage du contenu
analyse = reponse[i].split('*!*');
//On vérifie que le résultat est correct
if(analyse.length == 3)
{
//Afficahge de la zone de résultat
document.getElementById("result_search").style.visibility = "visible";
//On vérifie que le résultat n'est pas déjà affiché
contenu_liste = liste_results.innerHTML;
if((contenu_liste.lastIndexOf("|" + analyse[0] + "|")) == -1)
{
//On peut afficher le résultat
div = results.appendChild(document.createElement('div'));
//On vérifie si on est sur la page d'un utilisateur ou pas
var vide_form = "document.getElementById(\"search_user_input\").value = \"\"; document.getElementById(\"result_search\").style.visibility = \"hidden\";";
if(!check_if_we_are_on_user_page())
{
//Un rechargement est nécessaire en cas de clic
var debut_source = "<a href='index.php?id=" + analyse[0] + "' ";
}
else
{
//Un rechargement rapide peut être effectué
var debut_source = "<a style='cursor: pointer;' onClick='"+ vide_form +" change_page_personne(" + analyse[0] + ")' "
}
div.innerHTML = debut_source + ">" + analyse[2] + analyse[1] + "</a>" + ' <a onclick="affiche_chat_prive(' + analyse[0] + ');"><img src="' + config['pathAssets'] + 'img/prive.png" border="0" height="16" width="16"></a>';
//On enregistre l'affichage du résultat
liste_results.innerHTML = liste_results.innerHTML + "|" + analyse[0] + "|";
}
}
}
} else if (xhr.readyState == 4 && xhr.status != 200) {
//Message d'erreur
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé. Conséquence: Impossible d'aimer ce text ou cette page.");
}
}
xhr.send(null);
}
else
{
//Sinon on masque la zone de résultat
document.getElementById("result_search").style.visibility = "hidden";
}
}
//Fonction permettant de supprimer toute les notifications
function supprime_toute_les_notifications()
{
if(confirm("Voulez-vous vraiment supprimer toute les notifications ?"))
{
//On supprime les notifications
ajax_rapide('notification.php?all_vu');
//On affiche un message de succès
affiche_notification_succes('Les notifications ont &eacute;t&eacute; supprim&eacute;es.', '', 3);
//On actualise le panneau des notifications
affiche_notifications();
}
}
//Fonction permettant de supprimer les anciennes notififications
function delete_old_notifications()
{
$.Dialog({
flat: false,
shadow: true,
icon: "<span class='icon-history'></span>",
overlay: true,
draggable: true,
title: 'Supprimer les anciennes notifications',
content: '<iframe src="action.php?actionid=24" id="delete_old_notifications"></iframe>',
height: 200,
width: 350
});
}
//Fonction permettant de voir, d'ajouter et de supprimer un abonnement
function get_abonnement(id, change)
{
//On vérifie si il faut changer l'abonnement
if(change != 0)
var change = "&change";
else
var change = "";
//Définition de l'ID de destination
var id_destination = 'abonnement_' + id;
//On fait une requête ajax de recherche
xhr_abonnement = new XMLHttpRequest();
xhr_abonnement.open("GET", "action.php?actionid=25&id=" + id + change);
xhr_abonnement.onreadystatechange = function() {
if (xhr_abonnement.readyState == 4 && xhr_abonnement.status == 200) {
document.getElementById(id_destination).innerHTML = xhr_abonnement.responseText;
} else if (xhr_abonnement.readyState == 4 && xhr_abonnement.status != 200) {
//Message d'erreur
document.getElementById(id_destination).innerHTML = "Erreur";
//Message d'erreur (console)
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé.");
}
}
xhr_abonnement.send(null);
}
//Fonction permettant de transférer le contenu du canvas vers un champ de texte (de préférence caché) et d'envoyer le contenu
function send_snapshot_webcam_for_avatar()
{
//Récupération de la source du canvas
var source = document.getElementById("target_image_webcam_nouvel_avatar").toDataURL();
//Renvoi de la source du canvas vers le champs de texte
document.getElementById("data").value = source;
//Envoi du formulaire
document.getElementById("post_new_image_from_webcam").submit();
}
//Fonction de récupération et d'affichage de textes
function get_show_textes(id, id_destination, page, post)
{
//On vérifie si il faut recharge tous les textes ou non
var complement = "";
//On vérifie si il faut chercher un post précis ou non
if(post != 0)
{
complement += "&post=" + post;
}
//On fait une requête ajax de recherche
xhr_show_textes = new XMLHttpRequest();
xhr_show_textes.open("GET", "action.php?actionid=29&id=" + id + "&page=" + page + complement);
xhr_show_textes.onreadystatechange = function() {
if (xhr_show_textes.readyState == 4 && xhr_show_textes.status == 200) {
//Décodage de la réponse
var response = xhr_show_textes.responseText;
/<tr id="view_more">(.+)tr>/.exec(response);
var valeurs = (RegExp.$1);
valeurs = valeurs.replace("<", "");
valeurs = valeurs.split('|');
//On vérifie que les données sont correctes
complement = "";
if(valeurs.length == 2)
{
if(post == 0)
complement = "<tr class='metro'><td colspan='2'><input type='button' value='Afficher plus de textes' onClick=" + '"' + "get_show_textes(" + valeurs[0] + ", 'corpstexte', " + valeurs[1] + ", 0); this.parentNode.parentNode.style.display = 'none'" + '"' + " /></td></tr>";
//On supprime les valeurs du fichier réponse
response = response.replace(valeurs[0] + "|" + valeurs[1], "");
}
var new_textes = document.createElement('tbody');
new_textes.innerHTML = response + complement;
document.getElementById(id_destination).appendChild(new_textes);
//Affichage des comptes à rebours
var timers = document.getElementsByTagName('timers'),
timersLen = timers.length;
for (var i = 0 ; i < timersLen ; i++) {
infos = timers[i].innerHTML.split('|');
/*
$("#" + infos[0]).countdown({
blink: true, // blink divider
stoptimer: infos[1], // the string value of datetime, example '2013-07-05 12:00'
});*/
//var ts = countdown(infos[1], null, -2018, 11, 0);
// document.getElementById(infos[0]).innerHTML = infos[1]+" - " + ts;
launch_countdown(infos[1], infos[0]);
}
//Affichage des camemberts des sondages
var liste_sondages = document.getElementsByTagName('sondage_result'),
SondageLen = liste_sondages.length;
for (var i = 0 ; i < SondageLen ; i++) {
infos = liste_sondages[i].innerHTML.split('|');
//alert('draw_camembert(' + infos[0] + ', ' + infos[1] + ');'); //Debug only
draw_camembert(infos[0], infos[1]);
}
//Affichage des vidéos
var videos = document.getElementsByTagName('video'),
VideosLen = videos.length;
for (var i = 0 ; i < VideosLen ; i++) {
id = videos[i].id;
videojs(id, {}, function(){
// Player (this) is initialized and ready.
});
}
} else if (xhr_show_textes.readyState == 4 && xhr_show_textes.status != 200) {
//Message d'erreur
document.getElementById(id_destination).innerHTML += "Erreur, merci de r&eacute;essayer ult&eacute;rieurement.";
//Message d'erreur (console)
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé.");
}
}
xhr_show_textes.send(null);
}
//Fonction de récupération et d'affichage de textes
function get_show_header(id, demander_ami)
{
//Définition des variables
id_destination_header = 'header_contenu';
//On détermine si il faut ajouter un complément ou pas
if(demander_ami == 0)
complement = "";
else
complement = "&demanderamis";
//On fait une requête ajax de recherche
xhr_show_header = new XMLHttpRequest();
xhr_show_header.open("GET", "action.php?actionid=31&id=" + id + complement);
xhr_show_header.onreadystatechange = function() {
if (xhr_show_header.readyState == 4 && xhr_show_header.status == 200) {
document.getElementById(id_destination_header).innerHTML = xhr_show_header.responseText;
//Chargement de l'abonnement de la personne
get_abonnement(id, 0);
//Adaptation du titre de la page
document.title = document.getElementById('nom_personne').innerHTML + " - Comunic";
} else if (xhr_show_header.readyState == 4 && xhr_show_header.status != 200) {
//Message d'erreur
document.getElementById(id_destination_header).innerHTML = "Erreur, merci de r&eacute;essayer ult&eacute;rieurement en appuyant sur F5 ou en rechargeant la page.";
//Message d'erreur (console)
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé.");
}
}
xhr_show_header.send(null);
}
//Fonction de récupération et d'affichage du formulaire d'envoi de texte
function get_show_form_send_text(id)
{
//Définition des variables
id_destination_add_form_texte = 'add_form_texte';
//On fait une requête ajax de recherche
xhr_show_add_form = new XMLHttpRequest();
xhr_show_add_form.open("GET", "action.php?actionid=32&id=" + id);
xhr_show_add_form.onreadystatechange = function() {
if (xhr_show_add_form.readyState == 4 && xhr_show_add_form.status == 200) {
//Affichage du formulaire
document.getElementById(id_destination_add_form_texte).innerHTML = xhr_show_add_form.responseText;
//Chargement de l'éditeur TinyMce pour l'ajout de textes
var scriptElement = document.createElement('script');
scriptElement.src = config['pathAssets'] + 'js/ajoutsimple.js';
document.body.appendChild(scriptElement);
} else if (xhr_show_add_form.readyState == 4 && xhr_show_add_form.status != 200) {
//Message d'erreur
document.getElementById(id_destination_add_form_texte).innerHTML = "Erreur, merci de r&eacute;essayer ult&eacute;rieurement en appuyant sur F5 ou en rechargeant la page.";
//Message d'erreur (console)
console.log("Il semblerait qu'il y a un problème de connexion Internet. Vérifiez que tous les cables réseau sont branchés ou que le Wi-Fi est activé.");
}
}
xhr_show_add_form.send(null);
}
//Fonction de changement de personne
function change_page_personne(id, post)
{
//Définition d'une nouvelle url
//On vérifie si il faut afficher un texte précis
var complement_url = "";
var idpost = 0;
if(post > 0)
{
complement_url = "&post=" + post;
idpost = post;
}
//On vérifie si on est sur la page de l'utilisateur
if(/\?/.test(document.URL))
{
//Récupération des paramètres de l'URL
/\?(.+)/.exec(document.URL);
var parametres_url = RegExp.$1;
var nouvelle_url = document.URL;
nouvelle_url = nouvelle_url.replace(parametres_url, "id=" + id) + complement_url;
}
else
{
//Sinon on rajoute directement les bons paramètres
var nouvelle_url = document.URL + "?id=" + id + complement_url;
}
//Changement de l'URL
window.history.pushState(document.title,document.title, nouvelle_url);
//Changement de l'header
get_show_header(id, 0);
//Définition du champs de destination des textes
var id_destination_champs_texte = "corpstexte";
//On vide le champs de textes
document.getElementById(id_destination_champs_texte).innerHTML = "";
document.getElementById("add_form_texte").innerHTML = "";
//document.getElementById('backup_content').value = "";
if(idpost == 0)
{
//Changement du formulaire d'envoi de texte
get_show_form_send_text(id);
}
//On recharge le champs de textes
get_show_textes(id, id_destination_champs_texte, 0, idpost);
}
//Fonction permettant de vérifier si on est sur la page d'un utilisateur ou pas
function check_if_we_are_on_user_page()
{
//On vérifie si l'adresse contient un ".php"
if(/.php/.test(document.URL))
{
//On vérifie alors si on est sur la page index.php
if(/index.php/.test(document.URL))
{
//On est sur la page d'un utilisateur
return true;
}
else
{
//On n'est pas sur la page d'un utilisateur
return false;
}
}
else
{
//On est sur la page d'acceuil ou sur la page d'un utilisateur
return true;
}
}
//Fonction permettant de changer la page de l'utilisateur avec auto adaptation ( en fonction de si on est déjà sur la page d'un utilisateur ou pas )
function open_page_ameliore(id)
{
//On vérifie si on est sur la page d'un utilisateur
if(check_if_we_are_on_user_page())
change_page_personne(id); //Chargement rapide de la page de l'utilisateur
else
location.href = "index.php?id=" + id; //Rechargement complet de la page
}
//Fonction permettant d'informer que l'on nécessite un rechargement de tous les posts
function require_reload_all_posts()
{
//document.getElementById("backup_content").value = "require reload";
}
//Fonction de changement de la page d'une personne pour un post précis
function change_page_personne_with_post(id, idpost)
{
//On vérifie si on est sur la page d'un utilisateur
if(check_if_we_are_on_user_page())
change_page_personne(id, idpost); //Chargement rapide de la page de l'utilisateur
else
location.href = "index.php?id=" + id + "&post=" + idpost; //Rechargement complet de la page
}
//Fonction d'ouverture d'une page web
function change_webpage(url)
{
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.send(null);
if (request.status == 200){
window.history.pushState(document.title,document.title, url);
document.title = "Comunic";
document.body.parentNode.innerHTML = "";
var page = document.createElement("html");
page.innerHTML = request.responseText;
document.body.parentNode.appendChild(page);
} else {
//quelque chose sest mal passé
alert("Erreur: " + request.status + ": " + request.statusText);
} // fin de if
} // fin de la fonction
//Fonction de réponse à un sonage
function voteSondage(id_sondage, id_personne)
{
//Récupération du choix de vote
var id_select_choix_vote = "reponse_sondage_" + id_sondage;
var list = document.getElementById(id_select_choix_vote);
var choix_vote = list.options[list.selectedIndex].value;
// Debug only
// alert(id_sondage + " " + id_personne + " " + choix_vote);
//Envoi de la réponse de l'utilisateur
var url_reponse = "action.php?actionid=37&id_user=" + id_personne + "&id_sondage=" + id_sondage + "&id_reponse=" + choix_vote+"&type=vote";
ajax_rapide(url_reponse);
//On enlève le formulaire de vote
var id_contener_form_choix_reponse = "reponse_sondage_" + id_sondage + "_contener";
document.getElementById(id_contener_form_choix_reponse).innerHTML = "Votre r&eacute;ponse a &eacute;t&eacute; envoy&eacute;e au serveur. Merci de votre participation &agrave; ce sondage.";
}
/* Graphiques - Camembert */
function draw_camembert(id_array, id_canvas)
{
///// STEP 0 - setup
// source data table and canvas tag
var data_table = document.getElementById(id_array);
var canvas = document.getElementById(id_canvas);
var td_index = 1; // which TD contains the data
///// STEP 1 - Get the data
// get the data[] from the table
var tds, data = [], color, colors = [], value = 0, total = 0;
var trs = data_table.getElementsByTagName('tr'); // all TRs
for (var i = 0; i < trs.length; i++) {
tds = trs[i].getElementsByTagName('td'); // all TDs
if (tds.length === 0) continue; // no TDs here, move on
// get the value, update total
value = parseFloat(tds[td_index].innerHTML);
data[data.length] = value;
total += value;
// random color
color = getColor_random();
colors[colors.length] = color; // save for later
trs[i].style.backgroundColor = color; // color this TR
}
///// STEP 2 - Draw pie on canvas
// exit if canvas is not supported
if (typeof canvas.getContext === 'undefined') {
return;
}
// get canvas context, determine radius and center
var ctx = canvas.getContext('2d');
var canvas_size = [canvas.width, canvas.height];
var radius = Math.min(canvas_size[0], canvas_size[1]) / 2;
var center = [canvas_size[0]/2, canvas_size[1]/2];
var sofar = 0; // keep track of progress
// loop the data[]
for (var piece in data) {
var thisvalue = data[piece] / total;
ctx.beginPath();
ctx.moveTo(center[0], center[1]); // center of the pie
ctx.arc( // draw next arc
center[0],
center[1],
radius,
Math.PI * (- 0.5 + 2 * sofar), // -0.5 sets set the start to be top
Math.PI * (- 0.5 + 2 * (sofar + thisvalue)),
false
);
ctx.lineTo(center[0], center[1]); // line back to the center
ctx.closePath();
ctx.fillStyle = colors[piece]; // color
ctx.fill();
sofar += thisvalue; // increment progress tracker
}
}
// utility - generates random color
function getColor_random() {
var rgb = [];
for (var i = 0; i < 3; i++) {
rgb[i] = Math.round(100 * Math.random() + 100) ; // [155-255] = lighter colors
}
//Renvoi du résultat
return 'rgb(' + rgb.join(',') + ')';
}