var wakaTemplate = function(){ // variable de localisation! return { chargementTemplate : new Ext.Template('
').compile() , suggestionTemplate : new Ext.Template(["
", "{suggestions}", "
"].join("")).compile() , dlgLogin : new Ext.Template( '
' + '
' + 'Utilisateur existant' + '
' + '
' + '


' + '

' + '
' + '' + '
' + '
' + 'Vous avez oublié votre mot de passe?' + '
' + '
' + 'Nouvel utilisateur' + '
' + '

Se créer un compte Waka permet de visualiser ses recherches à partir de différents postes informatiques de n'importe quel endroit.

S'enregistrer permet aussi de protéger son dossier immobilier en cas de suppression des cookies sur son ordinateur.

' + '
' + '
' + '
' + '
').compile() , frmDenonciation : new Ext.Template( '
' + '' + 'Contenu inapproprié' + '
' + '' + '
' + '' + '
' + '

' + '
' ).compile() , frmUtilitisme : new Ext.Template( 'Réponse utile? ' + 'Oui ({nb_utilitisme}) | ' + 'Non ({nb_inutilitisme}) ' + '' + 'Contenu inapproprié?' ).compile() , inscrireUsagerTemplate : new Ext.Template( '
' + '
' + '
' + '
' + 'Inscription
' + '


' + '


' + '


' + '
' + '
' + '
' + 'Identité publique
' + '

' + '
' + '' + '

** Une fois votre pseudonyme choisi et enregistré, il vous sera impossible de le modifier.

' + '

' + '
' + '
' + '' + '
' + '
').compile() , getPwdTemplate : new Ext.Template( ['
' , '' , '
' , '
' , "Entrez votre courriel" , '
' , '
' , '
' , '' , '
' , '
' , '
'].join("") ).compile() /*, infoTemplate : new Ext.Template( '
' + '

Choisissez vos critères de recherche

' + '

' + 'Sélectionner une ville ou une région dans l'arbre de gauche puis utilisez les boutons au centre de la page pour les ajouter ou les retirer de votre choix.' + '

' + '
' + '1. Secteurs / Villes' + '
' + '' + '
' + '
Utiliser ce champ pour trouver une ville ou une région en particulier (ex. "Amqui", "matane")
' + '
' + '' + '
' + '
' + '
' + '
' + 'Votre sélection' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '2. Genres' + '
' + 'Votre sélection' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '3. Nombre de chambres / Fourchette de prix' + ' - Facultatif' + '' + '
' + '
' + 'Chambre(s)
' + '' + '
' + '
' + 'Fourchette de prix
' + '' + '' + '
' + '
' + '
' + '
' + '' + 'Rechercher' + '' + '
' + '
' + '
' ).compile()*/ , infoTemplate : new Ext.Template( '
' + '

Choisissez vos critères de recherche

' + //'

' + // 'Sélectionner une ville ou une région dans l'arbre de gauche puis utilisez les boutons au centre de la page pour les ajouter ou les retirer de votre choix.' + //'

' + '
' + '1. Sélectionnez une province' + '
' + 'Province
' + '' + /*'
' + '
Utiliser ce champ pour trouver une ville ou une région en particulier (ex. "Amqui", "matane")
' + '
' + '' + '' + '
' + '
' + '
' + '
' +*/ '
' + '
' + '
' + '2. Secteurs / Villes' + '
' + '
' + '
Utiliser ce champ pour trouver une ville ou une région en particulier (ex. "Amqui", "matane")
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + 'Votre sélection' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '3. Genres' + '
' + 'Votre sélection' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '4. Nombre de chambres / Fourchette de prix' + ' - Facultatif' + '' + '
' + '
' + 'Chambre(s)
' + '' + '
' + '
' + 'Fourchette de prix
' + '' + '' + '
' + '
' + '
' + '
' + '' + 'Rechercher' + '' + '
' + '
' + '
' ).compile() , pjvAgentsTemplate : new Ext.Template( '
' + '
' + ' ' + '
' + '
{prenom} {nom}
{agence}
' + '
').compile() , pjvTemplate : new Ext.Template('' + '
' + '
' + //'
' + ' ' + //'
' + '      ' + '
' + '
{ville}
' + '{prix}
' + '
').compile() , contactezNousTemplate : new Ext.Template( '
' + '
' + '
' + '

' + '

' + '

' + '

' + '
' + '
').compile() , detailsTemplate : new Ext.Template( '
DESCRIPTION
' + '
' + '
Nouveauté
' + '
' + '' + '
' + '
' + '{ville:ellipsis(25)}
' + '{genre:ellipsis(25)},
' + '{chambres} chambre(s)
' + '{prix}
' + '{source:ellipsis(25)}' + '

' + 'Voir la fiche' + '
' + '
' + '' + '
' + 'STATISTIQUES' + '
' + '
' + '
{vuisme} consultation(s)
' + '
{favorisme} fois aux favoris
' + '
{poubellisme} fois à la poubelle
' + '
{questionisme} question(s)
' + '
{reponseisme} réponse(s)
' + '
' + '
POSEZ UNE QUESTION
' + '
' + '' + '

' + '
' ).compile() , detailsAgentTemplate : new Ext.Template( '
DESCRIPTION
' + '
' + '
'+ '{prenom} {nom}
' + '{secteur},
' + '{compagnie}

' + '' + 'Contactez-moi' + '


' + 'Voir la fiche de l'agent' + '
' ).compile() , frmImgUploadTmpl : new Ext.Template( '
' + '' + 'Modifier votre avatar' + '
' + '' + '
' + '' + '' + '' + '
' + '
' ).compile() , frmTypeTmpl : new Ext.Template( '
' + '' + 'Type' + '' + '' + '' + '
' ).compile() , frmEtatTmpl : new Ext.Template( '
' + '' + 'Statut' + '' + '' + '' + '' + '
' ).compile() , frmAjouterNote : new Ext.Template( '
' + '' + 'Ajouter une note' + '

' + '' + '

' + '' + '' + '
' ).compile() , frmContactAgent : new Ext.Template( '
' + '' + '{prenom} {nom}' + '

' + '' + '{courriel}' + '' + '
' ).compile() , frmAjouterSite : new Ext.Template( '
' + '' + 'Suggérer un site
' + '
' + '
' + '' + '

' + '' + '
' + '
' ).compile() , frmAjoutAmelioration : new Ext.Template( '
' + '' + 'Suggérer une amélioration
' + '
' + '' + '' + '' + '
' + '
' ).compile() } }(); /* --- JSON ENCODING & DECODING --- */ function json_encode(obj){ return Ext.encode(obj); } function json_decode(obj){ return Ext.decode(obj); } String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");}; //nos regex pour la validation des courriels et des URLs var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; // format accepte : www.patate.ca var urlFilter = /^(http:\/\/www.|http:\/\/|https:\/\/www.|www.|http:\/\/[\w]+){1}([\w-]+)((\.[\w]{2,4}){1,2})$/; // cette regex ne s'arrete pas apres le .com! // format accepte : http://www.patate.ca/... var urlFilter2 = /^(http:\/\/www.|http:\/\/|https:\/\/www.|www.|http:\/\/[\w]+){1}([\w-]+)((\.[\w]{2,4}){1,2})\/.*/; // format accepte : http://www.patate.ca var urlFilter3 = /^(http:\/\/www.|http:\/\/|https:\/\/www.|http:\/\/[\w]+){1}([\w-]+)((\.[\w]{2,4}){1,2})/; var htmlFilter = /<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>(.*) 15){ return '' + str.substring(0,14) + '...'; } return str; } function formatLongStringWithoutHTML(str){ if (str.length > 10){ return [str.substring(0,9), "..."].join(''); } return str; } function cleanHtml(s){ ns = s.trim(); var a = ["http://", "www."]; for (var x = 0; x < a.length; x ++){ var str = a[x]; if (ns.indexOf(str) > -1) { ns = ns.replace(str, ""); } } return ns; } function extraireVille(ville){ // une regex pour extraire le nom de la ville d'une balise A lorsque le nom de la ville est trop long. // var villeFilter = /title=\"([\w\s-]+)\"/; var villeFilter = /title=\"(.*)\"/; // var ville = uneFiche.data.ville; var m = villeFilter.exec(ville); if (m && m.length > 0){ return m[m.length - 1]; }else{ return ville; } } var isInArray = function(el, array){ for (var x = 0; x < array.length; x ++){ if (el == array[x]){ return true; } } return false; } var wakaMsg = function(){ var msgCt; function createBox(t, s){ return ['
','
','
','
','
','
','
','
','','
','

', t, '

', s, '
','
','
','
','
'].join(''); } return { alert : function(title, format, error, close){ var msgCt; if(Ext.fly("msg-div")){ Ext.fly("msg-div").remove(); } msgCt = Ext.DomHelper.insertFirst(document.body, {id:'msg-div'}, true); var s = String.format.apply(String, Array.prototype.slice.call(arguments, 1)); var pauseTimeOut = 2; var wordCount = s.length; if (wordCount > 0){ pauseTimeOut = 5; }else if(wordCount > 10){ pauseTimeOut = 7; }else if(wordCount > 20){ pauseTimeOut = 9; }else if(wordCount > 30){ pauseTimeOut = 11; }else if(wordCount > 40){ pauseTimeOut = 13; }else if(wordCount > 50){ pauseTimeOut = 15; }else{ pauseTimeOut = 17; } var img = error ? "  " : "  "; var m = Ext.DomHelper.append(msgCt, {html:createBox(img + title, s)}, true); var height = msgCt.dom.offsetHeight; var width = msgCt.dom.clientWidth; msgCt.alignTo(document, 't-t'); m.fadeIn(); if (close && typeof close == "boolean" && close == true){ msgCt.on("click", function(e){ var id = e.getTarget().className; if (id == "fermerAlert"){ m.fadeOut({remove:true}); } }, this, true ); }else{ Ext.select("img.fermerAlert", msgCt).each(function(e){ e.remove(); }); m.pause(pauseTimeOut).fadeOut({remove:true}); } } }; }(); // overriding the window.alert window for our custom one! // if(document.getElementById){window.alert = function(str, error, close){if (!close && typeof close != "boolean"){close = false;};wakaMsg.alert("Waka.ca", str, error, close);}} var noeudSelectionne = null; var scrollFn = function(startEl, stopEl){ var doc = startEl ? Ext.get(startEl) : Ext.get(document.body.parentNode); var x = function() { // si le scroller est plus bas que l'element ou l'on doit arreter if (doc.getScroll().top >= stopEl.getTop()) { return doc.getScroll().top - stopEl.getTop() - stopEl.getHeight() } else { // si le scroller est plus haut que l'element ou l'on doit arreter return doc.getScroll().top; } }(); doc.scrollTo("top", parseInt(x), true); } var hlFocus = function(el, blnScroll){ /*fonction qui met le focus sur l'element en parametre et fait une surbrilliance*/ el.focus(); if (blnScroll){ scrollFn(null, el); } el.highlight(); } var hlMsg = function(el, msg, blnScroll){ /*fonction qui insere un message d'erreur et qui fait une surbrilliance*/ if (!el) { el = Ext.get("messErrGlobale"); } el.update(msg); el.removeClass("hide"); el.setStyle({"display" : "block"}); if (blnScroll) { scrollFn(null,el); } el.highlight(); } var wakaInitLoad = function(){ return { init : function(){ this.el = Ext.get("initLoading"); if (this.el) { this.titleEl = Ext.get(Ext.query("div h4", "initLoading")[0]); this.textEl = Ext.get(Ext.query("div p", "initLoading")[0]); } } , setText : function(i){ if (!this.el) {return false;} var a = [ "Initialisation..." , "Obtention des informations de votre dossier immobilier..." , "Chargement de l'arbre de recherche..." , "Chargement de la grille..." , "Chargement des critères de recherche..." ]; this.textEl.update(a[i]); return true; } , destroy : function() { if (!this.el) {return false;} this.el.fadeOut({remove: true}); this.el = null; this.titleEl = null; this.textEl = null; return true; } } }(); wakaInitLoad.init(); wakaInitLoad.setText(0); var wakaExt = function(){ function replaceBr(text){ while (text.indexOf("
") > -1 || text.indexOf("
") > -1 || text.indexOf("
") > -1){ text = text.replace("
", "\n"); text = text.replace("
", "\n"); text = text.replace("
", "\n"); } return text; } function replaceBackslashN(text){ while (text.indexOf("\n") > -1){ text = text.replace("\n", "
"); } return text; } var dh = Ext.DomHelper; var desactiverChamp = function(cible, focus){ var el = Ext.get(cible); if (el){ el.setStyle({"border" : "0px", "color" : "green", "background-color": "white"}); el.removeAllListeners(); el.on("focus", function(){ Ext.get(focus).focus(); }, this, true ); } } var spanToInput = function(els, ids){ // fonction qui transforme les span en Input var blnIds = false; if (ids) { blnIds = true; } for (var x = 0; x < els.length; x ++) { var cn = Ext.fly(els[x]); var text = cn.dom.innerHTML; var pn = cn.dom.parentNode; cn.remove(); dh.append(pn , {"tag": "input" , "type": "text" , "id": blnIds ? ids[x] : cn.dom.id , "cls" : "inputText" , "value": text}, true ); } } var spanToAnything = function(els, ids, tag){ // fonction qui transforme les span en Input var blnIds = false; if (ids) { blnIds = true; } for (var x = 0; x < els.length; x ++) { // the currentNode var cn = Ext.fly(els[x]); // its value var text = replaceBr(cn.dom.innerHTML); // si le text contient du HTML, on le dépouille et on ne prends que le text dans la balise if (htmlFilter.test(text)){ var m = htmlFilter.exec(text); if (m.length > 0){ text = m[m.length - 1]; } } // its parentNode var pn = cn.dom.parentNode; cn.remove(); var newEl = dh.append(pn , function(){ var dict = { "input" : { "tag": "input" , "type": "text" , "id": blnIds ? ids[x] : cn.dom.id , "cls" : "inputText" , "value": text } , "textarea" : { "tag": "textarea" , "rows" : 3 , "id": blnIds ? ids[x] : cn.dom.id , "cls" : "inputText" , "style" : "width:85%;" } }[tag]; return dict; }() , true ); if (isInArray(tag, ["textarea"])){ newEl.update( replaceBr(text) ); } } } var tagToInput = function(els){ for (var x = 0; x < els.length; x ++) { var cn = Ext.fly(els[x]); var text = cn.dom.innerHTML; var pn = cn.dom.parentNode; cn.remove(); dh.append(pn , {"tag": "input" , "type": "text" , "cls" : "inputText" , "value": text}, true ); } } var inputToTag = function(els, tag){ for (var x = 0; x < els.length; x ++) { var cn = Ext.fly(els[x]); var p = cn.dom.parentNode; var value = cn.getValue(); if (urlFilter2.test(value) || urlFilter.test(value) ) { value = ["", value, ""].join("") } if (cn.dom.tagName.toLowerCase() == "textarea"){ value = replaceBackslashN(value); } cn.remove(); var newTag = dh.append(p , { "id" : cn.dom.id , "tag" : tag }, true ); newTag.update(value); } } return { langue : "fr" , viewType : "grille" , pageSize : 26 , pageCursor : 0 , infoDossier : {} , init: function(){ var cConnecter = cookieManager.get("cConnecter"); var cDeconnecter = cookieManager.get("cDeconnecter"); if (!cConnecter && !cDeconnecter){ // si l'usager n'est jamais venu auparavant! var creerNouveauDossier = function (){ //fonction qui demande un idDossier au serveur var lang = navigator.language!=null ? navigator.language : navigator.browserLanguage; if (lang != "fr"){ lang = "fr"; } var params = {"langue" : lang.toLowerCase().substring(0,2)} //params.langue = wakaExt.langue; wakaExt.xhrCall("creerDossier" , Ext.urlEncode(params) , function(reponse){ var infoDossier = eval("(" + reponse.responseText + ")"); if (infoDossier.idDossier){ cookieManager.set("cDeconnecter", infoDossier.idDossier, 60); cookieManager.set("cLangue", wakaExt.langue, 60); this.infoDossier.idDossier = infoDossier.idDossier; this.infoDossier.connecter = false; this.initInfoDossier(this.infoDossier.idDossier); } } , null, false, wakaExt ); }(); }else if(cConnecter){ // si le cookie cConnecter existe... this.infoDossier.idDossier = cConnecter; this.infoDossier.connecter = true; this.initInfoDossier(this.infoDossier.idDossier); }else if(cDeconnecter){ // si le cookie cDeconnecter existe... this.infoDossier.idDossier = cDeconnecter; this.infoDossier.connecter = false; this.initInfoDossier(this.infoDossier.idDossier); } // si tout se deroule bien this.addListeners(); this.globalCollapser(); this.addVisualEffects(); //this.addResizable(); } , who : function(blnEncode){ /*fonction qui retourne un dictionnaire contenant les informations de base sur le dossier courant*/ var who = {idDossier: this.infoDossier.idDossier, idProfil: this.infoDossier.idProfilCourant}; if (blnEncode){ return json_encode(who); }else { return who; } } , initInfoDossier: function(id){ wakaInitLoad.setText(1); params = {"who" : json_encode({idDossier: id}), "page" : window.location.href}; this.xhrCall("getInfosDossier", Ext.urlEncode(params) , function(xhr){ var infosDossier = eval("(" + xhr.responseText + ")"); this.infoDossier = { "idDossier" : id , "connecter" : function(){ if (cookieManager.get("cConnecter") == null ){ return false; }else{ return true; } }() , "idProfilCourant" : infosDossier.id , "langue" : infosDossier.langue , "afficherAstuce" : infosDossier.astuces == 0 ? true : false , "nom" : infosDossier.nom == null ? "" : infosDossier.nom , "prenom" : infosDossier.prenom == null ? "" : infosDossier.prenom , "url_blog" : infosDossier.url_blog == null ? "" : infosDossier.url_blog , "use_real_name" : infosDossier.use_real_name == 0 ? false : true , "statut_immo" : infosDossier.statut_immo == null ? "" : infosDossier.statut_immo , "alias" : infosDossier.alias == null ? "" : infosDossier.alias , "about_me" : infosDossier.about_me == null ? "" : infosDossier.about_me , "cherche_quoi" : infosDossier.cherche_quoi == null ? "" : infosDossier.cherche_quoi , "alert_qr_ui" : infosDossier.alert_qr_ui == 0 ? false : true , "url_siteweb" : infosDossier.url_siteweb == null ? "" : infosDossier.url_siteweb , "public" : (infosDossier.public == 0) ? false : true , "alert_qr_courriel" : infosDossier.alert_qr_courriel == 0 ? false : true , "alert_qr_ui" : infosDossier.alert_qr_ui == 0 ? false : true , "show_favoris" : infosDossier.show_favoris == 0 ? false : true , "url_photo" : cheminServer + "picture_get" + "?" + Ext.urlEncode({ "who" :json_encode(wakaExt.who()),"alias" : this.infoDossier.alias}) } cookieManager.set("cLangue", wakaExt.langue, 60); var pageDeLusager = function(){ /* fonction lambda qui verifie si l'usager courant est celui dont la page courante "appartient" */ // on extrait l'alias de la page courante var usagerPageCourante = window.document.URL.split("/").pop(); if (usagerPageCourante != ""){ // si son alias est identique a son alias courant ou a son idDossier if (usagerPageCourante == wakaExt.infoDossier.alias || usagerPageCourante == wakaExt.infoDossier.idDossier) { return true; } } return false; }(); // si l'alias est vide on invite l'usager à en saisir un. /*if (this.infoDossier.alias == "" && pageDeLusager){ // si son alias est vide et que c'est sa page perso... this.modifyProfil(); }*/ this.buildTree ? this.buildTree() :0; }, null, this, false ); return true; } , userParams : function(e, blnEncode){ /* fonction qui construit un dictionnaire complexe pour des modifs sur les informations d'un usager */ // fonction qui verifie une valeur boolean... var checkedOrNot = function(chk){if (chk == true || chk == false){return chk;}return null;} var stringOrNot = function(str){if (str || str == ""){return str;}return null;} var up = { "who" : wakaExt.who(true) , "stdInfo" : { "nomUsager" : e.nomUsager ? e.nomUsager : null , "oldMotDePasse" : e.oldMotDePasse ? e.oldMotDePasse : null , "motDePasse" : e.motDePasse ? e.motDePasse : null , "lang" : e.lang ? e.lang : null , "province" : e.province ? e.province : null } , "publicInfo" : { "alias" : e.alias ? e.alias : null , "prenom" : stringOrNot(e.prenom) , "nom" : stringOrNot(e.nom) , "about_me" : stringOrNot(e.about_me) , "statut_immo" : e.statut_immo ? e.statut_immo : null , "url_siteweb" : stringOrNot(e.url_siteweb) , "url_blog" : stringOrNot(e.url_blog) , "cherche_quoi" : stringOrNot(e.cherche_quoi) } , "config" : { "publique" : checkedOrNot(e.publique) , "use_real_name" : checkedOrNot(e.use_real_name) , "alert_qr_courriel" : checkedOrNot(e.alert_qr_courriel) , "alert_qr_ui" : checkedOrNot(e.alert_qr_ui) , "show_favoris" : checkedOrNot(e.show_favoris) } }; return (blnEncode) ? this.encodeUserParams(up): up; } , encodeUserParams : function(e){ /* fonction qui encode les info de l'usager */ e.stdInfo = json_encode(e.stdInfo); e.publicInfo = json_encode(e.publicInfo); e.config = json_encode(e.config); return e; } , wait: function(){ /* Fonction qui fait apparaitre une boite de chargement qui bloque les actions dans la page */ if (!this.loadingDlg){ this.loadingDlg = new Ext.BasicDialog("loadingDlg", {autoCreate: true,title: "Chargement en cours" ,animateTarget: null,draggable: false,modal:true,width:225,height:68,shadow:false,resizable: false,proxyDrag: false, shim: true, closable: false} ); wakaTemplate.chargementTemplate.overwrite(this.loadingDlg.body.id); //wakaExt.loadingDlg.header.setStyle({"background-color" : "yellow", "font-weight": "bolder"}); this.loadingDlg.show(); //this.loadingDlg.moveTo(Ext.fly("conteneur").getWidth() / 2, 0); }else{ if ( !this.loadingDlg.isVisible()){ this.loadingDlg.show(); //this.loadingDlg.moveTo(Ext.fly("conteneur").getWidth() / 2, 0); } } } , clear: function(){ /* fonction retire la boite de chargement !*/ if (this.loadingDlg){ if( this.loadingDlg.isVisible() ){ this.loadingDlg.hide(); } } } , xhrCall: function(sUrl, params, successCB, failureCB, blnShowLoading, scope) { /* fonction qui effectue un appel XHR selon ces parametres */ if (blnShowLoading){if (blnShowLoading == true){this.wait();}} if(!successCB){successCB = function(){this.clear();};} if(!failureCB){failureCB = function(){this.clear();};} if (!scope){scope = this;} var callback = {success: successCB.createDelegate(scope), failure: failureCB.createDelegate(scope)}; // call pour google analytics... if (urchinTracker){ urchinTracker([cheminServer, sUrl, finChemin].join("")); } Ext.Ajax.request({ "url": [cheminServer, sUrl, finChemin].join("") , "method": "POST" , "params": params , "success" : callback.success , "failure" : callback.failure , "scope": scope }); } , addListeners: function(){ // listener pour la zone de détails d'une fiche dans la page de fiche Waka! if (Ext.query("div#details").length > 0) { Ext.fly("details").on("click" , function(e){ var el = e.getTarget(); if (!el) {return false;} // hack pour IE6! var tagname = el.tagName.toLowerCase(); var tagid = el.id; if (tagname == "a" && tagid == "modif_etat"){ if (Ext.fly("ctFrmEtat")) { return false; } var spanEtat = Ext.get("etatFiche"); var st = Ext.get("etatFiche_valeur").getValue(); var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} // 1. afficher les choix de types et sélectionné celui de l'usager courant wakaTemplate.frmEtatTmpl.append(document.body); // aligner le formulaire et l'afficher var frm = Ext.get("ctFrmEtat"); frm.alignTo(spanEtat, "c-c", [0,0], true); frm.fadeIn(); // gestion du click sur le formulaire en question! frm.on("click" , function(e){ var id = e.getTarget().id; if (id == "fermer-ctFrmEtat"){ // si c'est le bouton de fermeture! nettoyer(); return false; }else{ // id a exclure if (isInArray(id, ["ctFrmEtat"])){ return false; } // si c'est un des 3 boutons radios! // construction des parametres var params = { "who" : wakaExt.who(true) , "etat" : "" , "idFiche" : "" }; alert(params.toString()); /*params = wakaExt.userParams(params, true); // appel XHR wakaExt.xhrCall("alter_user", Ext.urlEncode(params) , function(xhr){ wakaExt.infoDossier.statut_immo = id; spanType.update(Ext.select("div#ctFrmType label[for^=" + id + "]").elements[0].innerHTML.split(">").pop()) frm.removeAllListeners(); nettoyer(); } , null , this, false );*/ } return true } , this, true ); } return true } ); } // listener globale pour la section de message d'erreur if (Ext.fly("messErrGlobale")){ Ext.fly("messErrGlobale").on("click" , function(){ var m = Ext.get("messErrGlobale"); m.update(""); m.setStyle({"display" : "none"}); m.addClass("hide"); }, this, true ); } // ajout d'un listener globale sur la zone des boutons se trouvant en haut à droite if (Ext.fly("conBtns")){ Ext.fly("conBtns").on("click" , function(e){ var cMgr = cookieManager //var dh = Ext.DomHelper; var whatId = e.getTarget().id; var el = e.getTarget(); var eln = e.getTarget().tagName.toLowerCase(); if (eln == "a") { var lang = ""; //debugger; if (el.href == "http://ww.waka.ca"){ wakaExt.changerLangue("fr"); }else if(el.href == "http://www.wakahomes.com"){ wakaExt.changerLangue("en"); } } switch(whatId){ // le bouton de connexion case "btnConn": this.showLoginDialog(); return true; break; // le bouton de deconnexion case "btnDeconn": // ** Deconnecte l'usager cMgr.destroy("cConnecter"); cMgr.destroy("cLangue"); window.location.reload(); return true; break; } return true; } , this, true ); } if (Ext.query("#mesQuestionsReponses").length > 0) { // listener pour la zone des QR d'un usager. // il crée un cookie pour que la zone de réponse ne se ferme pas lorsque l'usager va consulter la page // de la fiche Ext.get("mesQuestionsReponses").on("click" , function(e){ var el = e.getTarget(); if (!el) {e.cancel = true; return false;} var eln = el.tagName.toLowerCase(); var eli = el.id; if (eln == "a" && (eli.indexOf("qr_lnk_") > -1 || eli.indexOf("qr_img_") > -1)){ cookieManager.set("cDoNotCollapse", eli.split("_").pop()); } return true; } , this, true ); } // listener pour la zone qui contient les questions-reponses d'une fiche if (Ext.select(".mesQuestions")){ Ext.select(".mesQuestions").on("click" , function(e){ var dh = Ext.DomHelper; var whatId = e.getTarget().id; var definirDouCaVient = function(el){ // fonction permettant de determiner d'ou provient le clic d'un lien d'evaluation if (!el){return null} if (el.dom.className == "reponse"){ return "a"; }else{ return "q"; } }; if (whatId){ var arrId = whatId.split("_"); var nom = arrId[0]; var id = arrId[1]; var arrDomIds = function(){ // fonction qui retourne un array contenant les ids des éléments pour // lesquels nous n'afficherons pas un message comme de quoi l'usager n'est pas loggé! // [!] cette fonction est éxécuté immédiatement. [!] var elDecapiter = function(a){ // fonction qui décapite un array d'élément et qui retourne que son id var newA = []; for (var x = 0; x < a.length; x ++){ newA.push(a[x].id); } return newA; } // obtention de tous les éléments possédants des IDs dans les 3 zones du profil publique return ["lnkExpander", "zonePerso", "zonePerso2", "containerBoutons", "profilContainer", "favHeader", "qaHeader", "imgUserProfil", "colonneDroite", "enteteUser"].concat( elDecapiter(Ext.query("*[id]", "zonePerso")) , elDecapiter(Ext.query("*[id]", "zonePerso2")) , elDecapiter(Ext.query("*[id]", "containerBoutons")) , elDecapiter(Ext.query("span[id*=toggler]")) ); }(); // un if qui fait sortir de la fonction if (!isInArray( nom, arrDomIds) && !this.infoDossier.connecter ){ hlMsg(Ext.get("messErrGlobale"), "Vous devez être connecter pour utiliser cette fonctionnalité. Cliquer içi pour vous connecter", true); return true; } switch(nom){ // ceci est le lien qui ferme la region des reponses case "lnkExpander": this.toggler(Ext.fly(whatId)); return true; break; // la question est utile! case "lnkOui": this.evaluerQA(id, definirDouCaVient(Ext.get(id)), 1); return true; break; // la question n'est pas utile case "lnkNon": this.evaluerQA(id, definirDouCaVient(Ext.get(id)), 0); return true; break; // denoncons la questions ou la reponse! case "lnkDenoncer": this.denoncerQA(id, definirDouCaVient(Ext.get(id))); return true; break; // donnons une reponse case "btnReponse": this.soumettreReponse(id); cookieManager.set("cDoNotCollapse", ["lnkExpander_", id].join(""), 1); return true; break; // soumettons une question! case "btnQuestion": this.soumettreQuestion(id); return true; break; } } return true; }, this, true ); } // listener pour la zone de switch entre la vue mosaique et la vue details if (Ext.fly("toolbar")) { Ext.fly("toolbar").on("click" , function(e){ var tagname = e.getTarget().tagName.toLowerCase(); var id = ""; if (tagname.indexOf("span") > -1){ id = e.getTarget().parentNode.id; }else{ return false; } if (id.indexOf("newSearch") > -1){ wakaRecherche.creerNoeudRecherche(); return true; } var toggler = function(el){ /* fonction qui fait en sorte que la vue passe d'un etat a l'autre Elle gere egalement le onFocus des boutons de modif de vue */ Ext.fly("mosaique").removeClass("choisi"); Ext.fly("details").removeClass("choisi"); Ext.fly(el).addClass("choisi"); wakaExt.viewType = ((el == "details") ? "grille": el); var id = noeudSelectionne.id; if (id.indexOf("favoris") > -1){ wakaFavori.afficherFavori(); return true; } if (id.indexOf("poubelle") > -1){ wakaPoubelle.afficherPoubelle(); return true; } if (id.indexOf("agent") > -1){ wakaAgent.afficherAgent(); return true; } wakaRecherche.afficherVueSelonType(false); return true; }(id); return true; }, this, true ); } if (Ext.fly("contactezNous")){ Ext.fly("contactezNous").on("click" , function(){ this.contactezNous(); },this,true ); } /* ** Listener pour l'en tete du dossier immobilier ** */ if (Ext.fly("enteteUser")){ Ext.fly("enteteUser").on("mousedown" , function(e){ var elid = e.getTarget().id; switch(elid){ case "modif_img": if (Ext.fly("ctFrmImgUpload")){ return false; } // afficher un formulaire pour uploader l'image wakaTemplate.frmImgUploadTmpl.append(document.body, {alias : this.infoDossier.alias}); Ext.fly("who").dom.value = this.who(true); var frm = Ext.get("ctFrmImgUpload"); var lnkFermer = Ext.get("fermer-frmImgUpload"); var aligner = Ext.select("img[id^=imgUserProfil_]").elements[0]; // le faire apparaitre au bon endroit! frm.alignTo(aligner, "c-c", [0,0], true); frm.fadeIn(); // fonction qui ferme et élimine le formulaire du DOM var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} lnkFermer.on("click", nettoyer, this, true); break; case "modif_type": if (Ext.fly("ctFrmType")) { return false; } var spanType = Ext.get("typeUsager"); var stImmo = this.infoDossier.statut_immo; var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} // 1. afficher les choix de types et sélectionné celui de l'usager courant wakaTemplate.frmTypeTmpl.append(document.body , { "chkA" : stImmo == "a" ? "checked" : "" , "chkV" : stImmo == "v" ? "checked" : "" , "chkP" : stImmo == "p" ? "checked" : "" } ); // aligner le formulaire et l'afficher var frm = Ext.get("ctFrmType"); frm.alignTo(spanType, "c-c", [0,0], true); frm.fadeIn(); // gestion du click sur le formulaire en question! frm.on("click" , function(e){ var id = e.getTarget().id; if (id == "fermer-ctFrmType"){ // si c'est le bouton de fermeture! nettoyer(); return false; }else{ // id a exclure if (isInArray(id, ["", wakaExt.infoDossier.statut_immo, "ctFrmType"])){ return false; } // si c'est un des 3 boutons radios! // construction des parametres var params = { "who" : wakaExt.who(true) , "statut_immo" : function(){ if (isInArray(id, ["a", "v", "p"])){ return id; } return wakaExt.infoDossier.statut_immo; }() }; params = wakaExt.userParams(params, true); // appel XHR wakaExt.xhrCall("alter_user", Ext.urlEncode(params) , function(xhr){ wakaExt.infoDossier.statut_immo = id; spanType.update(Ext.select("div#ctFrmType label[for^=" + id + "]").elements[0].innerHTML.split(">").pop()) frm.removeAllListeners(); nettoyer(); } , null , this, false ); } return true; } , this, true ); break; } return false; }, this, true ); } /* ** listener pour la zone de connexion! ** */ if (Ext.fly("infoConnexion")){ // listener pour la zone d'info de connexion Ext.fly("infoConnexion").on("click" , function(e){ var el = e.getTarget(); if (!el) {return false;} // hack pour IE6! var tagname = el.tagName.toLowerCase(); var tagId = el.id; // catcher le click du lien de modification! if (tagname == "a" || tagId == "modif_infoConnexion") { // caché le lien de modification var modifEl = Ext.get(el); modifEl.addClass("hide"); // transformer le span du courriel en input pour la saisie spanToAnything(Ext.query("span span", "infoConnexion"), ["txtCourriel_iu"], "input"); Ext.fly("txtCourriel_iu").focus(); Ext.fly("infoConnexion").highlight().addClass("ctModif"); Ext.fly("infoConnexion").setStyle({"margin": "10px"}); // afficher le conteneur du formulaire qui permet de changer ses infos persos var ctForm = Ext.get(Ext.query("div:nth(2)", "infoConnexion")[0]); ctForm.removeClass("hide"); // fonction qui nettoie la zone et replace l'affichage comme c'était au départ! var clearer = function(){ // vider la zone de message d'erreur Ext.fly("msgError_iu").update(""); // vider les champs de mot de passe Ext.fly("txtOldPwd_iu").dom.value = ""; Ext.fly("txtNewPwd_iu").dom.value = ""; Ext.fly("txtNewPwd2_iu").dom.value = ""; var inputEl = Ext.query("span input", "infoConnexion"); inputToTag(inputEl, "span"); // oter les bordures Ext.fly("infoConnexion").removeClass("ctModif"); Ext.fly("infoConnexion").setStyle({"margin": "0px"}); // cacher le formulaire ctForm.addClass("hide"); // réafficher le lien de modif modifEl.removeClass("hide"); // supprimer le listener pour la zone du formulaire ctForm.removeAllListeners(); } // y ajouter un listener pour le bouton de soumission et d'annulation ctForm.on("click" , function(e){ var el = e.getTarget(); var elname = el.tagName.toLowerCase(); var elid = el.id; if (elname == "input") { var switcher = { "btnSubmit_iu" : function(){ var messageErr = Ext.get("msgError_iu"); var nomUsager = Ext.get("txtCourriel_iu"); var oldMotDePasse = Ext.get("txtOldPwd_iu"); var motDePasse = Ext.get("txtNewPwd_iu"); var motDePasse2 = Ext.get("txtNewPwd2_iu"); // valider le courriel if(!emailFilter.test(nomUsager.dom.value)){ hlMsg(messageErr, 'Le courriel doit être au format: usager@domaine.com'); hlFocus(nomUsager); return false; }; // valider le nouveau mot de passe if (oldMotDePasse){ if (oldMotDePasse.dom.value.length > 0){ if (motDePasse.dom.value.length == 0 || motDePasse2.dom.value.length == 0 || motDePasse.dom.value != motDePasse2.dom.value) { hlMsg(messageErr, 'Veuillez reconfirmer votre nouveau mot de passe'); if (motDePasse.dom.value != motDePasse2.dom.value) { hlFocus(motDePasse2); hlFocus(motDePasse); } if (motDePasse2.dom.value.length == 0) { hlFocus(motDePasse2); } if (motDePasse.dom.value.length == 0) { hlFocus(motDePasse); } return false; } }else{ if (motDePasse.dom.value.length == 0 || motDePasse2.dom.value.length == 0) { hlMsg(messageErr, 'Veuillez entrer votre ancien mot de passe'); hlFocus(oldMotDePasse); return false; } } } // construction des paramètres pour la modif du mot de passe ou du courriel de connexion var params = { "who": wakaExt.who(true) , "nomUsager" : nomUsager.dom.value.trim() , "motDePasse" : motDePasse.dom.value.trim() , "oldMotDePasse" : oldMotDePasse.dom.value.trim() } // melting pot des parametres! params = wakaExt.userParams(params, true); // appel XHR wakaExt.xhrCall("alter_user" , Ext.urlEncode(params) , function(e) { var tmp = function(){ clearer(); wakaExt.clear(); alert('Vos informations personnelles de connexion ont été sauvegardé'); }.defer(500, wakaExt); } , function(e) { clearer(); } , true, this ); return true; } , "btnCancel_iu" : clearer }; if (switcher[elid]){ switcher[elid](); } } }, this, true ); } return true; }, this, true ); } /* ** listener pour la région de la fiche perso ** */ if (Ext.fly("fichePerso")){ Ext.fly("fichePerso").on("click" , function(e){ var el = e.getTarget(); var elname = el.tagName.toLowerCase(); var elid = el.id; if (elid == "") { /* si le click se fait sur un element qui ne possede pas d'id, j'arrete l'evenement click et je sors de la fonction! */ e.cancel = true; return false; } // écouter le click du lien de modification if (elname == "a" || elid == "modif_infoPerso") { // caché le lien de modification var modifEl = Ext.get(el); modifEl.addClass("hide"); Ext.fly(modifEl.dom.parentNode).setStyle({"border" : "0px none"}); // transformer les en input pour la saisie var els = Ext.query("#fichePerso span span"); spanToAnything(els.splice(0,4), null, "input"); spanToAnything(els, null, "textarea"); // ajouter une classe de séparation pour les nouveaux input var cts = Ext.query("#fichePerso span").splice(0,4); for (var x = 0; x < cts.length; x ++) { Ext.fly(cts[x]).addClass("spanFichePerso"); } // focus sur le champ prenom Ext.fly("u_prenom").focus(); // modif du conteneur de la zone pour afficher une certaine interaction Ext.fly("fichePerso").highlight().addClass("ctModif"); Ext.fly("fichePerso").setStyle({"margin": "10px"}); // afficher les boutons de soumission et d'annulation Ext.select("#fichePerso div.hide").removeClass("hide"); Ext.fly("msgError_u").addClass("hide"); } var clearer = function(){ // retirer une classe de séparation pour les nouveaux input var cts = Ext.query("#fichePerso span").splice(0,4); for (var x = 0; x < cts.length; x ++) { Ext.fly(cts[x]).removeClass("spanFichePerso"); } // transformer tous les éléments en span! var els = Ext.query("#fichePerso input").splice(0,4); inputToTag(els, "span"); inputToTag(Ext.query("#fichePerso textarea"), "span"); // oter les bordures Ext.fly("fichePerso").removeClass("ctModif"); Ext.fly("fichePerso").setStyle({"margin": "0px"}); // cacher le formulaire Ext.select("#fichePerso div:nth(2)").addClass("hide"); // réafficher le lien de modif Ext.select("#fichePerso p").setStyle({"border" : ""}) Ext.select("#fichePerso p a").removeClass("hide"); // vider la zone de message d'erreur et le cacher Ext.fly("msgError_u").update(""); Ext.fly("msgError_u").addClass("hide"); // vider les champs for (var x = 0; x < els.length; x ++) { Ext.fly(els[x]).dom.value = ""; } } if (elname == "input" && elid.indexOf("btnSubmit") > -1) { var params = wakaExt.userParams({ "who" : wakaExt.who(true) , "prenom" : Ext.get("u_prenom").dom.value.trim() , "nom" : Ext.get("u_nom").dom.value.trim() , "about_me" : Ext.get("u_about").dom.value.trim() , "url_siteweb" : Ext.get("u_site").dom.value.trim() , "url_blog" : Ext.get("u_blog").dom.value.trim() , "cherche_quoi" : Ext.get("u_searchingFor").dom.value.trim() }, true); wakaExt.xhrCall("alter_user", Ext.urlEncode(params) , function(e){ wakaExt.initInfoDossier(this.infoDossier.idDossier); wakaExt.clear.defer(500, wakaExt); clearer(); } , function(e){ wakaExt.clear(); clearer(); }, true, this ); } if (elname == "input" && elid.indexOf("btnCancel") > -1) { clearer(); } return true; }, this, true ); } if (Ext.fly("mesRecherches")) { // listener pour la zone de mes recherches Ext.fly("mesRecherches").on("click" , function(e){ var el = e.getTarget(); var elname = el.tagName.toLowerCase(); var elid = el.id; // catcher le click sur le nom de la recherche en soi if (elname == "a" && elid.indexOf("advancedSearch_") > -1){ var idRech = elid.split("_").pop(); // creer un cookie de recherche courante cookieManager.set("rechercheCourante", idRech); /* la redirection se fait ensuite de marnière normale via la propriété href du lien en question */ } // catcher le click sur le lien de stats if (elname == "a" && elid.indexOf("stats_") > -1){ alert("ha ha vous pensiez que ca marcherais n'est ce pas? eh bien non!"); return false; var idRech = elid.split("_").pop(); var who = wakaExt.who(); who.idRecherche = idRech; var params = { "who" : json_encode(who) } wakaExt.xhrCall("rech_stats", Ext.urlEncode(params) , function(e) { // agrandir le TR de la recherche et afficher les infos // prévoir un bouton de fermeture? wakaExt.clear.defer(500, wakaExt); } , function(e) { wakaExt.clear.defer(500, wakaExt); } , true, this ); } // catcher le click sur le checkbox if (elname == "input" && elid.indexOf("chkGetEmail") > -1) { // construction du mega parametres pour alerter le serveur de la modif var params = wakaExt.userParams({ "who" : wakaExt.who(true) , "alert_qr_courriel" : function(){ var c = Ext.fly("chkGetEmail").dom.checked; return c; }() } , true ); // appel XHR!! wakaExt.xhrCall("alter_user" , Ext.urlEncode(params) , function(e){ // success : modif de l'info en mémoire wakaExt.infoDossier.alert_qr_courriel = Ext.fly("chkGetEmail").dom.checked ? 1 : 0 // cacher le loading apres une demi-seconde wakaExt.clear.defer(500, wakaExt); } , function(e){ wakaExt.clear.defer(500, wakaExt); } , true, this ); } }, this, true ); } /* ** Listener pour les en-tetes de toutes les sections! ** */ Ext.select("div[id*=Header]").on("click" , function(e){ var el = e.getTarget(); var elname = el.tagName.toLowerCase(); var elid = el.id; // catcher le click sur les collapser if (elname == "span" && elid.indexOf("toggler") > -1 ) { // alert("à faire!"); } // catcher le click sur les inputs pour la publication if (elname == "input" && elid.indexOf("publiciser") > -1) { switch(elid){ case "favori-publiciser": // construction du mega parametres pour alerter le serveur de la modif var params = wakaExt.userParams({ "who" : wakaExt.who(true) , "show_favoris" : function(){ var c = Ext.fly("favori-publiciser").dom.checked; return c; }() } , true ); // appel XHR!! wakaExt.xhrCall("alter_user" , Ext.urlEncode(params) , function(e){ // success : modif de l'info en mémoire wakaExt.infoDossier.show_favoris = Ext.fly("favori-publiciser").dom.checked ? 1 : 0 // cacher le loading apres une demi-seconde wakaExt.clear.defer(500, wakaExt); } , function(e){ wakaExt.clear(); } , true, this ); break; } } if (elname == "img" && elid.indexOf("imgAjouterNote") > -1) { if (Ext.fly("ctFrmAjouterNote")) { return false; } var imgAjout = Ext.get("imgAjouterNote"); var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} wakaTemplate.frmAjouterNote.append(document.body); // aligner le formulaire et l'afficher var frm = Ext.get("ctFrmAjouterNote"); frm.alignTo(imgAjout, "c-c", [0,0], true); frm.fadeIn(); // gestion du click sur le formulaire en question! frm.on("click" , function(e){ var id = e.getTarget().id; // id a exclure car IE capture l'evenement lors du clique ailleurs que sur les boutons d'actions if (isInArray(id, ["ctFrmAjouterNote"])){return false;} // si c'est le bouton de fermeture! if (id == "fermer-ctFrmAjouterNote"){ nettoyer();return false; } if(id == "btnAjouterNote"){ // idFiche, note, publication if (Ext.get("txtNote").getValue() != '') { var params = { "what" : "add" , "who" : wakaExt.who(true) , "params" : json_encode({ "note" : Ext.fly("txtNote").getValue() , "publication" : Ext.get("publicNote").dom.checked ? 1 : 0 , "idFiche" : Ext.get("idFiche").getValue() }) }; // appel XHR wakaExt.xhrCall("note_services", params , function(xhr){ frm.removeAllListeners(); nettoyer(); window.location.reload(); } , null , this, false ); }else{ hlFocus(Ext.get("txtNote"), false); } } return true } , this, true ); } return true; }, this, true ); /* ** Listener pour la zone de note pour une fiche ** */ if (Ext.query("div#noteCt").length > 0) { Ext.select("div#noteCt").on("click" , function(e){ var el = e.getTarget(); if (!el) {return false;} var elTag = el.tagName.toLowerCase(); var elid = el.id; if (!el.id) {return false;} // modifier une note! if ((elTag == "img" || elTag == "a") && elid.indexOf("modifNote") > -1 ){ var id = elid.split("_").pop(); var p = Ext.query("#note_" + id + " div p"); // tranformer le P en un textarea spanToAnything(p, null, "textarea"); // obtenir une référence var ctrl = Ext.select("#note_" + id + " div[id*=edit_ctrl]"); if (ctrl.hasClass("hide")){ // decacher la zone de controle! ctrl.removeClass("hide"); var clear = function(){ // fonction qui nettoie apres la transformation temporaire! ctrl.removeAllListeners(); ctrl.addClass("hide"); inputToTag(Ext.query("#note_" + id + " div textarea"), "p"); Ext.select("#note_" + id + " div p").highlight(); } // un listener dans la zone de control pour savoir quand l'usager click sur Soumettre ou Annuler ctrl.on("click" , function(e){ var _el = e.getTarget(); var _elTag = _el.tagName.toLowerCase(); var _elid = _el.id; if (_elTag == "input" && _elid.indexOf("btnSubmit_note") > -1) { var idNote = elid.split("_").pop() var params = { "what" : "edit" ,"params" : json_encode({ "idNote" : idNote , "idFiche" : Ext.get("idFiche_notes").getValue() , "note" : Ext.fly("note_" + idNote).child("textarea").getValue() , "publication" : Ext.get("publicNote_" + idNote).dom.checked ? 1 : 0 }) , "who" : wakaExt.who(true) } wakaExt.xhrCall("note_services", params , function(e){ var response = eval("(" + e.responseText + ")"); wakaExt.clear(); clear(); } , function(e){ wakaExt.clear(); } , false, this ); } // cancellation d'une soumission de modification de note! if (_elTag == "input" && _elid.indexOf("btnCancel_note") > -1) { clear(); } } , true, this ); } } // supprimer une note! if ((elTag == "img" || elTag == "a") && elid.indexOf("delNote") > -1 ){ var id = elid.split("_").pop(); if (confirm("Supprimer cette note?")) { var params = { "what" : "supp" , "who" : wakaExt.who(true) , "params" : json_encode({ "idNote" : id }) } wakaExt.xhrCall("note_services" , params , function(e){ var resp = eval("(" + e.responseText + ")"); if (resp.confirmation == "ok"){ Ext.get("note_" + id).highlight().fadeOut({ "duration" : 1 , "remove": true , "callback" : function(){ // s'il ne reste plus de note apres la suppression if (Ext.query("#mesNotes .note").length == 0){ Ext.select("#mesNotes table").remove(); var noNote = "Aucune note"; var newDiv = Ext.DomHelper.append( "mesNotes" , { "tag" : "div" , "style" : "font-style: italic; font-size: 10px;" } , true ); newDiv.update(noNote); } } }); }else{ alert("error"); } } , function(e){ alert("error"); } , false, this ); } } } , this, true ); } /* ** Listener pour la zone qui contient le filtre de la grille! ** */ if (Ext.fly("zoneFiltre")) { this.addListenerFiltre(); } if (Ext.query("#zoneDetails").length > 0){ Ext.get("zoneDetails").on("click" , function(e){ var el = e.getTarget(); var elTag = el.tagName.toLowerCase(); var elid = el.id; if (!el){return false;} // pour sortir du listener si el ne contient pas de valeur! if (elTag == "a" && elid == "lnkContactAgent"){ if (Ext.fly("ctFrmContactAgent")){ return false; } var unAgent = function(){ var a = null; if (wakaExt.viewType == "grille"){ return wakaExt.grid.selModel.getSelected().data; }else{ var i = wakaExt.view.getSelectedIndexes()[0]; return wakaExt.view.store.getAt(i).data; } } // afficher un formulaire pour afficher un pop up de contact pour les agents wakaTemplate.frmContactAgent.append( document.body, unAgent() ); var frm = Ext.get("ctFrmContactAgent"); var lnkFermer = Ext.get("fermer-ctFrmContactAgent"); var aligner = Ext.select("a#lnkContactAgent").elements[0]; // le faire apparaitre au bon endroit! frm.alignTo(aligner, "c-c", [0,0], false); frm.fadeIn(); // fonction qui ferme et élimine le formulaire du DOM var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} lnkFermer.on("click", nettoyer, this, true); } if (elTag == "div" && elid == "seeAllQA_question" || elid == "seeAllQA_reponse"){ var uneFiche = function(){ var a = null; if (wakaExt.viewType == "grille"){ return wakaExt.grid.selModel.getSelected().data; }else{ var i = wakaExt.view.getSelectedIndexes()[0]; return wakaExt.view.store.getAt(i).data; } } var url = "http://www.waka.ca/fiche/" + uneFiche().id_annonce; window.open(url); } return true; } , this, true); } /* ** LISTENER POUR LA ZONE DE SUGGESTIONS DE MP ** */ if (Ext.query("div#colonneResultats").length > 0) { Ext.select("div#colonneResultats").on("click" , function(e){ var el = e.getTarget(); if (!el) {return false;} var elTag = el.tagName.toLowerCase(); var elid = el.id; // ajoutSite if (elTag == "img" && elid.indexOf("ajoutSite") > -1) { if (Ext.fly("ctFrmAjoutSite")) { return false; } var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} wakaTemplate.frmAjouterSite.append(document.body); // aligner le formulaire et l'afficher var frm = Ext.get("ctFrmAjoutSite"); frm.alignTo(el, "c-c", [0,0], true); frm.fadeIn(); // Ext.select("#ctFrmAjoutSite #txt").focus(); // gestion du click sur le formulaire en question! frm.on("click" , function(e){ var id = e.getTarget().id; if (id.indexOf("fermer-ctFrmAjoutSite") > -1){ // si c'est le bouton de fermeture! nettoyer(); return false; } // lors du clique sur le bouton de soumission if (id.indexOf("btnAjoutSite") > -1) { var form = Ext.select("#ctFrmAjoutSite form").elements[0]; var value = Ext.get("txt").getValue(); // soumission du formulaire si l'url est valide! if (urlFilter3.test(value)) { form.submit(); }else{ hlMsg(Ext.get("errMsg"), "L'adresse que vous avez entrez n'est pas valide. Il doit être sous ce format : 'http://www.google.com'", false ); hlFocus(Ext.get("txt"), false); } } return true; } , this, true ); } // ajoutAmelioration if (elTag == "img" && elid.indexOf("ajoutAmelioration") > -1) { if (Ext.fly("ctFrmAjoutAmelioration")) { return false; } var nettoyer = function(){frm.removeAllListeners(); frm.fadeOut({remove: true});} wakaTemplate.frmAjoutAmelioration.append(document.body); // aligner le formulaire et l'afficher var frm = Ext.get("ctFrmAjoutAmelioration"); frm.alignTo(el, "c-c", [0,0], true); frm.fadeIn(); // Ext.select("#ctFrmAjoutAmelioration #txt").focus(); frm.on("click" , function(e){ var id = e.getTarget().id; if (id.indexOf("fermer-ctFrmAjoutAmelioration") > -1){ // si c'est le bouton de fermeture! nettoyer(); return false; } return true; } , this, true ); } /* listener pour la denonciation de message/reponse */ if (elTag == "img" && elid.indexOf("denoncer_rep_") > -1 || elid.indexOf("denoncer_msg_") > -1 ) { var idFlag = elid.split("_").pop(); var typeFlag = {"rep" : "reponse", "msg" : "message"}[ elid.split("_")[1] ]; var params = { "who": wakaExt.who(true) , "state" : json_encode({ "what" : typeFlag , "id" : parseInt(idFlag) , "etat" : 1 }) } wakaExt.xhrCall("forum_set_etat", params , function(e){ var answer = eval("(" + e.responseText + ")"); if (answer.confirmation == "ok") { if (typeFlag == "reponse") { alert("Cette réponse a été dénoncé avec succès"); }else{ alert("Ce message a été dénoncé avec succès"); } }else{ hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); } } , function(e){ hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); } , false, this ); } } , this, true ); } /* ** listener pour le forum: il permet d'écouter la zone qui permet d'ajouter un nouveau sujet dans un forum ** */ if (Ext.query("div#ctNouveauSujet").length > 0) { Ext.select("div#ctNouveauSujet").on("click" , function(e){ var el = e.getTarget(); if (!el) {return false;} var eltag = el.tagName.toLowerCase(); var elid = el.id; if (eltag == "img"){ function cancelFrm() { // fonction qui modifie l'image et fait disparaitre le formulaire! var elToggle = Ext.get("lnkNouveauSujet"); elToggle.dom.src = elToggle.dom.src.replace("_up_", "_dn_"); var frm = Ext.get("frmNouveauSujet"); Ext.get("txtSujet").dom.value = ""; Ext.get("txtMessage").dom.value = ""; frm.fadeOut({ duration: .5 , remove: false , afterCls : "hide" , callback : function(){ var ct = Ext.get("ctNouveauSujet"); ct.removeClass("over"); } }); } switch(elid){ case "lnkNouveauSujet": el.src = el.src.replace("_dn_", "_up_"); var frm = Ext.get("frmNouveauSujet"); var ct = Ext.get("ctNouveauSujet"); if (!ct.hasClass("over")) { ct.addClass("over"); } if (frm.hasClass("hide")){ frm.removeClass("hide").slideIn('t', { easing: 'easeOut' , duration: .5 , callback : function(){ Ext.fly("txtSujet").focus(); } }); }else{ cancelFrm(); } break; case "sbmtNouveauSujet": if (wakaExt.infoDossier.alias != "") { var params = { "who" : wakaExt.who(true) , "message" : { "sujet" : Ext.get("txtSujet").getValue() , "texte" : Ext.get("txtMessage").getValue() , "idSection" : Ext.get("idSection").getValue() } } if (params.message.sujet != "" && params.message.texte != "") { params.message = json_encode(params.message); wakaExt.xhrCall("forum_add_message", params , function(e){ var rep = eval("(" + e.responseText + ")" ); if (rep.confirmation != "ok") { hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); }else{ Ext.get("txtSujet").dom.value = ""; Ext.get("txtMessage").dom.value = ""; window.location.reload(); } } , function(e){ hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); } , false, this ); }else{ hlMsg(null, "Veuillez entrer un sujet et un message", true); Ext.get("txtSujet").focus(); } }else{ hlMsg(null, "Vous devez être connecter pour utiliser cette fonctionnalité. Cliquer içi pour vous connecter" , true); } break; case "cancelNouveauSujet": cancelFrm(); break; } } } , this, true ); } /* ** listener pour le forum: il permet d'écouter la zone qui permet d'ajouter une nouvelle réponse dans un sujet ** */ if (Ext.query("div#ctNouvelleReponse").length > 0) { Ext.select("div#ctNouvelleReponse").on("click" , function(e){ var el = e.getTarget(); var eltag = el.tagName.toLowerCase(); var elid = el.id; if (!el) {return false;} if (eltag == "img"){ function cancelFrm(){ // fonction qui modifie l'image et fait disparaitre le formulaire! var elToggle = Ext.get("lnkNouvelleReponse"); elToggle.dom.src = elToggle.dom.src.replace("_up_", "_dn_"); var frm = Ext.get("frmNouvelleReponse"); Ext.get("txtReponse").dom.value = ""; frm.fadeOut({ duration: .5 , remove: false , afterCls : "hide" , callback : function(){ var ct = Ext.get("ctNouvelleReponse"); ct.removeClass("over"); } }); } switch(elid){ case "lnkNouvelleReponse": el.src = el.src.replace("_dn_", "_up_"); var frm = Ext.get("frmNouvelleReponse"); var ct = Ext.get("ctNouvelleReponse"); if (!ct.hasClass("over")) {ct.addClass("over");} if (frm.hasClass("hide")){ frm.removeClass("hide").slideIn('t', { easing: 'easeOut' , duration: .5 , callback : function(){ Ext.fly("txtReponse").focus(); } }); }else{ cancelFrm(); } break; case "cancelNouvelleReponse" : cancelFrm(); break; case "sbmtNouvelleReponse": if (wakaExt.infoDossier.alias != "") { var params = { "who" : wakaExt.who(true) , "reponse" : { "texte" : Ext.fly("txtReponse").getValue() , "idMessage" : Ext.fly("idMessage").getValue() } } if (params.reponse.texte != "") { params.reponse = json_encode(params.reponse); wakaExt.xhrCall("forum_add_reponse", params , function(e){ var rep = eval("(" + e.responseText + ")"); if (rep.confirmation != "ok") { hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); }else{ Ext.get("txtReponse").dom.value = ""; window.location.reload(); } } , function(e){ hlMsg(null, "Une erreur est survenu lors de l'envoi du message. Veuillez réessayer plus tard", true); } , false, this ); }else{ hlMsg(null, "Veuillez entrer une réponse", true); Ext.get("txtReponse").focus(); } }else{ hlMsg(null, "Vous devez être connecter pour utiliser cette fonctionnalité. Cliquer içi pour vous connecter" , true); } break; } } } , this, true ); // lnkNouvelleReponse // frmNouvelleReponse a } return true; } , toggler : function(e){ // fonction qui ferme ou ouvre ou ferme un lien de zone de reponse! var arrId = e.dom.id.split("_"); if (e.hasClass("expand")){ // fermeture de la zone e.replaceClass("expand", "collapse"); var zoneRep = Ext.get("zoneReponses_" + arrId[1]); zoneRep.fadeOut().addClass("hide"); }else{ // ouverture de la zone e.replaceClass("collapse", "expand"); var zoneRep = Ext.get("zoneReponses_" + arrId[1]); zoneRep.fadeIn().removeClass("hide"); } } , sectionToggler : function(e){ var zoneToggler = e.split("-")[0]; if (e.hasClass("collapse")){ //Ext.fly(zoneToggler).slideOut("t"); el.replaceClass("collapse", "expand"); }else{ //Ext.fly(zoneToggler).slideIn("t"); el.replaceClass("expand", "collapse"); } } , globalCollapser : function(){ // fonction qui fais une recherche globale dans le DOM pour retrouver les liens // qui ouvre ou ferme les zones de reponses. // Elle fait ensuite un appel a la fonction qui ferme ou ouvre le lien! // obtention du cookie qui nous dit la question à laquelle nous avons répondu auparavant. var cDoNotCollapse = cookieManager.get("cDoNotCollapse"); var results = Ext.select("a[id^='lnkExpander']") if (cDoNotCollapse){ // si le cookie existe, nous ne voulons pas fermer la zone en question for (var x = 0; x < results.elements.length; x ++){ var el = results.elements[x]; if (el.id.indexOf(cDoNotCollapse) > -1){ results.elements.splice(x,1); cookieManager.destroy("cDoNotCollapse"); break; } } cookieManager.destroy("cDoNotCollapse"); } results.each( function(e){ this.toggler(e); }, this ); } , showLoginDialog: function(){ /* fonction qui affiche la boite de dialogue servant à se connecter ou s'inscrire */ var show = function(bd){ wakaTemplate.dlgLogin.overwrite(bd.body.id); Ext.get("lienGetPwd").removeAllListeners(); Ext.get("lienGetPwd").on('click' , function(){ wakaExt.afficherDlgGetPwd(); }, this, true ); var btnConnecter = new Ext.Button("btnConnecter", {text: "Se connecter" , handler: function(){ var blnValide = true; var nomUsager = Ext.get("txtNomUsager").dom.value; var motDePasse = Ext.get("password").dom.value; var messErr = Ext.get("inscription-message-err"); if (nomUsager == "" || motDePasse == ""){ hlMsg(messErr, "Veuillez entrer votre courriel et votre mot de passe"); hlFocus(Ext.get("password")); hlFocus(Ext.get("txtNomUsager")); blnValide = false; } if (blnValide){ var params = {"nomUsager" : nomUsager, "motDePasse" : motDePasse}; wakaExt.xhrCall("connexion", Ext.urlEncode(params), function(o){ wakaExt.clear(); var reponse = eval("(" + o.responseText + ")"); switch(reponse.confirmation){ case "ok": var cMgr = cookieManager; cMgr.set("cConnecter", reponse.idDossier, 60); cMgr.set("cLangue", wakaExt.langue, 60); if (reponse.alias != "" && reponse.alias != null) { window.location.href = "http://www.waka.ca/usager/" + reponse.alias; }else{ window.location.href = "http://www.waka.ca/statutConnexion.php"; } // // break; case "loginInvalide": hlMsg(messErr, "Le courriel ou le mot de passe est erroné"); hlFocus(Ext.get("txtNomUsager")); break; } }, function(o){ wakaExt.clear();} ); } }, scope: this} ); var btnSInscrire = new Ext.Button("conn-lien-inscrire", {text: "S'inscrire maintenant!" , handler: wakaExt.showSubscriptionDialog, scope: wakaExt} ); /*Ext.get("lienGetPwd").on("click", function(){ }, this, true );*/ Ext.get("inscription-message-err").update(""); bd.show("conBtns"); } if(!this.dlgLogin){ this.dlgLogin = new Ext.BasicDialog("dlgLogin", {autoCreate: true, title: "Connexion" , modal:true, width:450, height:325, shadow:true,draggable: false, resizable: false, proxyDrag: false, shim: true} ); show(this.dlgLogin); }else{ this.dlgLogin.setTitle( "Connexion" ); this.dlgLogin.resizeTo(450, 310); show(this.dlgLogin); } } , showSubscriptionDialog : function(){ wakaExt.dlgLogin.setTitle( "Nouvel utilisateur" ); // changement du corps de la boite de dialogue pour le template d'inscription wakaTemplate.inscrireUsagerTemplate.overwrite(wakaExt.dlgLogin.body , {"lnkWhy": "http://www.waka.ca/faqs-fr.html#vraiNomQA"} ); Ext.fly("inscription-nomUsager").focus(); Ext.fly("inscription-message-err").update(""); var btnEnregistrement = new Ext.Button("btnEnregistrer" ,{text: "M'inscrire" , handler: wakaExt.validerInscription , scope: wakaExt } ); wakaExt.dlgLogin.resizeTo(450, 325); } , addVisualEffects : function(){ /*fonction qui permet d'ajouter des petits effets visuels ici et la*/ /*pour rajouter une belle boite autour du lien qui redirige vers la fiche originelle.*/ //Ext.select("a.lienWaka[style*=14px]").boxWrap(); } , afficherDlgGetPwd: function(){ /*fonction qui affiche la boite de dialogue pour l'obtention de son mot de passe*/ var getPwdEl = Ext.fly("conteneurGetPwd"); if (!getPwdEl){ // Ecrire le DOM du formulaire pour obtenir le mot de passe wakaTemplate.getPwdTemplate.append(Ext.query("body")[0]); getPwdEl = Ext.get("conteneurGetPwd"); // obtenir une instance du formulaire. Ext.fly("fermer-conteneurGetPwd").on('click', getPwdEl.remove, getPwdEl, true); var btnGetPwd = new Ext.Button("btnGetPwd" , {text: "Obtenir mon mot de passe" , handler: wakaExt.soumettrePwd , scope: this} ); // alignement avec le lien pour obtenir son mot de passe. getPwdEl.alignTo('lienGetPwd', 'tl', [10,10]) getPwdEl.show(); Ext.fly("courriel").focus(); }else{ Ext.fly("courriel").dom.value = ""; getPwdEl.show(); Ext.fly("courriel").focus(); } return true; } , soumettrePwd : function(){ /*fonction qui envoie un courriel au serveur pour obtenir un mot de passe d'usager*/ var courriel = Ext.get("courriel"); var messageErr = Ext.get("getPwdError"); // validation du courriel if(!emailFilter.test(courriel.dom.value)){ hlMsg(messageErr, "Le courriel doit être au format: usager@domaine.com"); hlFocus(courriel); return false; }; // construction des parametres var params = {"courriel" : courriel.dom.value}; // envoie de l'appel XHR wakaExt.xhrCall("lostPassword", Ext.urlEncode( params ), function(xhr){ var reponse = eval("(" + xhr.responseText + ")"); switch(reponse.confirmation){ case "ok": Ext.fly("frmGetPwd").update( "
Un courriel avec votre mot de passe vous a été envoyé"); break; case "errExistePas": hlMsg(messageErr, "" + courriel.dom.value + " n'est pas un usager Go.Waka.ca."); hlFocus(courriel); break; } }, function(){ Ext.get("frmGetPwd").update( "
Une erreur est survenu lors de l'envoi de votre courriel contenant votre mot de passe. Veuillez réessayer plus tard"); }, false ); return true; } , validerInscription: function(){ /* fonction qui valide toutes les informations de l'inscription ! */ var error = {'loginInvalide': 'Le courriel ou le mot de passe est erroné', 'emptyField': 'Tous les champs sont obligatoires', 'errExistePas': 'n'est pas un usager Go.Waka.ca.', 'inscription': {'cbFailure': 'Une erreur est survenu lors de votre inscription. Veuillez ré-essayer plus tard'}, 'prenomNom': {'vide': 'Veuillez entrer votre prénom et votre nom'}, 'contactezNous': {'failure': 'Une erreur est survenu lors de l'envoi du message. Veuillez r\xc3\xa9essayer plus tard', 'vide': {'nom': 'Veuillez entrer votre nom', 'texte': 'Veuillez entrer un message', 'sujet': 'Veuillez entrer un sujet', 'courriel': 'Veuillez entrer votre courriel'}}, 'secteur': {'absent': 'Veuillez s\xc3\xa9lectionner un secteur ou une ville'}, 'prix': {'incoherent': 'Le prix maximum doit \xc3\xaatre plus \xc3\xa9lev\xc3\xa9 que le prix minimum'}, 'pwd': {'reconfirmer': 'Veuillez reconfirmer votre mot de passe', 'confirmerOld': 'Veuillez saisir votre ancien mot de passe', 'IncorrectOldPassword': '?', 'reconfirmerNew': 'Veuillez reconfirmer votre nouveau mot de passe', 'PasswordVide': '?', 'incorrectOld': 'Votre ancien mot de passe est incorrect'}, 'alias': {'AliasTropLong': 'Le pseudonyme ne doit pas dépasser 25 caractères de long', 'AliasDejaFait': 'Ce pseudonyme est deja utilisé. Veuillez nous en soumettre un autre', 'vide': 'Veuillez entrer un pseudonyme', 'AliasTaken': 'Ce pseudonyme est deja utilisé. Veuillez nous en soumettre un autre'}, 'courriel': {'cbFailure': 'Une erreur est survenu lors de l'envoi de votre courriel contenant votre mot de passe. Veuillez réessayer plus tard', 'invalide': 'Le courriel doit être au format: usager@domaine.com'}, 'genre': {'absent': 'Veuillez s\xc3\xa9lectionner un genre'}, 'nomUsager': {'UsernameTaken': 'Le courriel est déjà utilisé', 'longueur': 'Le nom d'usager doit contenir de 5 à 50 caractères'}, 'forums': {'failure': 'Une erreur est survenu lors de l'envoi du message. Veuillez r\xc3\xa9essayer plus tard'}}; var nomUsager = Ext.get("inscription-nomUsager"); var motDePasse = Ext.get("inscription-mot-de-passe"); var motDePasse2 = Ext.get("inscription-mot-de-passe-2"); var messageErr = Ext.get("inscription-message-err"); var alias = Ext.get("txtiAlias"); //var prenom = Ext.get("txtiPrenom"); //var nom = Ext.get("txtiNom"); //var vraiNom = Ext.get("chkiVraiNom"); //Validation général du courriel, du nom d'usager et du mot de passe if(!emailFilter.test(nomUsager.dom.value)){ hlMsg(messageErr, error.courriel.invalide); hlFocus(nomUsager); return false;}; if (nomUsager.dom.value.length < 5 || nomUsager.dom.value.length > 50){ hlMsg(messageErr, error.nomUsager.longueur); hlFocus(nomUsager); return false;} if (motDePasse.dom.value == "" || motDePasse2.dom.value == ""){ hlMsg(messageErr, error.emptyField); hlFocus(motDePasse); return false;} if (motDePasse.dom.value != motDePasse2.dom.value){hlMsg(messageErr, error.pwd.reconfirmer); hlFocus(motDePasse2); return false;} //Si le formulaire est valide ! var who = json_encode({ idDossier: wakaExt.idDossier}); var params = {"nomUsager" : nomUsager.dom.value, "motDePasse" : motDePasse.dom.value}; var validation_identite_publique = function(){ /* fonction lambda qui s'execute automatiquement */ if ( alias.getValue() == "") { hlMsg(messageErr, error.alias.vide); hlFocus(alias); return false; } /*if (alias.getValue() == "" && (prenom.getValue() != "" || nom.getValue() != "")) { hlMsg(messageErr, error.alias.vide); hlFocus(alias); return false; } if (vraiNom.dom.checked && (prenom.getValue() == "" && nom.getValue() == "")){ hlMsg(messageErr, error.prenomNom.vide); hlFocus(prenom); return false; }*/ return true; }(); if (!validation_identite_publique){ return false; }else{ // ajout des valeurs dans le dictionnaire de de paramètre params.alias = alias.getValue(); /*params.prenom = prenom.getValue(); params.nom = nom.getValue(); params.use_real_name = vraiNom.dom.checked;*/ } params = wakaExt.userParams(params, true); wakaExt.xhrCall("alter_user", Ext.urlEncode(params), function(o){ wakaExt.clear(); var reponse = eval("(" + o.responseText + ")"); switch(reponse.confirmation){ case "ok": cookieManager.set("cConnecter", wakaExt.infoDossier.idDossier, 60); cookieManager.destroy("cDeconnecter"); window.location.href = function(){ var alias = Ext.fly("txtiAlias").getValue(); if (alias != ""){ return "http://www.waka.ca/usager/" + alias; } return window.document.URL; }(); break; case "AliasDejaFait": hlMsg(messageErr, error.alias[reponse.confirmation]); hlFocus(alias); break; case "AliasTaken": hlMsg(messageErr, error.alias[reponse.confirmation]); hlFocus(alias); break; case "AliasTropLong": hlMsg(messageErr, error.alias[reponse.confirmation]); hlFocus(alias); break; case "UsernameTaken": hlMsg(messageErr, error.nomUsager[reponse.confirmation]); hlFocus(nomUsager); break; } }, function(o){ hlMsg(messageErr, error.inscription.cbFailure );} , false ); return true; } , soumettreProfil : function(){ /* fonction qui soumet le profil et qui effectue toutes les validations à faire! */ var url = ""; var params = {}; var publicInfo = {}; var nomUsager = Ext.get("txtAlias"); var oldMotDePasse = Ext.get("txtOldPwd"); var motDePasse = Ext.get("txtPwd"); var motDePasse2 = Ext.get("txtPwd2"); var messageErr = Ext.get("ErrMessage"); var validation_nomUsager = function(){ /* fonction qui valide le courriel et le nom d'usager */ /*if(!emailFilter.test(nomUsager.dom.value)){ hlMsg(messageErr, local.msg.error.courriel.invalide ); hlFocus( nomUsager); return false; };*/ /*if (nomUsager.dom.value.length < 5 || nomUsager.dom.value.length > 50){ hlMsg(messageErr, local.msg.error.nomUsager.longueur ); hlFocus( nomUsager); return false;}*/ return true; } var validation_pwd = function(blnVide){ /* variable qui valide tout ce qui a un rapport avec le mot de passe */ var input = Ext.select("input[id*='Pwd']").elements[0]; var p = Ext.fly(Ext.fly(input).dom.parentNode); if (p.hasClass("show")){ if (blnVide && blnVide == false){ if (motDePasse.dom.value == "" || motDePasse2.dom.value == ""){ hlMsg(messageErr, "Tous les champs sont obligatoires"); hlFocus(motDePasse); return false; } } if (oldMotDePasse){ if (oldMotDePasse.dom.value != ""){ if (motDePasse.dom.value == ""){ hlMsg(messageErr, "Veuillez reconfirmer votre nouveau mot de passe"); hlFocus(motDePasse); return false; } if (motDePasse.dom.value != motDePasse2.dom.value){ hlMsg(messageErr, "Veuillez reconfirmer votre nouveau mot de passe"); hlFocus(motDePasse2); return false; } }else{ hlMsg(messageErr, "Veuillez reconfirmer votre mot de passe"); hlFocus(oldMotDePasse); return false; } } } return true; } var addAlias = function(){ // pour envoyer l'alias, l'usager de doit pas en avoir un. if (wakaExt.infoDossier.alias == "" || wakaExt.infoDossier.alias == null){ params.alias = Ext.fly("txtAlias").dom.value.trim(); } } var validation_identite_publique = function(){ var alias = Ext.get("txtAlias"); var prenom = Ext.get("txtPrenom"); var nom = Ext.get("txtNom"); var vraiNom = Ext.get("chkVraiNom"); if (alias.getValue() == "" && wakaExt.infoDossier.alias == ""){ /* si l'alias est vide et que l'usager en a pas */ hlMsg(messageErr, "Veuillez entrer un pseudonyme"); hlFocus(alias); return false; } if (vraiNom.dom.checked && (prenom.getValue() == "" && nom.getValue() == "")){ // si la case pour utiliser son vrai nom est cocher et que le prenom et le nom sont vide hlMsg(messageErr, "Veuillez entrer votre prénom et votre nom"); hlFocus(prenom); return false; } return true; } if(!validation_nomUsager()){return false;} if (!validation_pwd(false)) {return false;} if (!validation_identite_publique()){ return false; } var denulliser = function(e){ if (e == null){return "";}else{return e;} } var from = function(){ if (!wakaExt.infoDossier.connecter) { return "deconnecter"; } if (wakaExt.infoDossier.alias == ""){ return "pasAlias" } return ""; }(); // construction du dictionnaire qui contient les donnees de l'usager selon le contexte switch(from){ case "pasAlias": /* dans ce cas-ci l'usager est logger, mais n'a pas encore d'alias... */ params = { "who" : wakaExt.who(true) , "nomUsager" : null //denulliser(nomUsager.dom.value.trim()) , "prenom" : denulliser(Ext.get("txtPrenom").dom.value.trim()) , "nom" : denulliser(Ext.get("txtNom").dom.value.trim()) , "about_me" : denulliser(Ext.get("txtAPropos").dom.value.trim()) , "url_siteweb" : denulliser(Ext.get("txtSite").dom.value.trim()) , "url_blog" : denulliser(Ext.get("txtBlog").dom.value.trim()) , "use_real_name" : Ext.get("chkVraiNom").dom.checked , "alert_qr_courriel" : Ext.get("chkAviserCourriel").dom.checked , "cherche_quoi" : denulliser(Ext.get("txtCeQueJeCherche").dom.value.trim()) }; // nous verifions si le mot de passe a été saisi pour une modification subsequente. if (validation_pwd(true)){ if (oldMotDePasse){ params["oldMotDePasse"] = denulliser(oldMotDePasse.dom.value.trim()); } params["motDePasse"] = denulliser(motDePasse.dom.value.trim()); } addAlias(params); break; case "deconnecter": params = { "who": wakaExt.who(true) , "nomUsager" : denulliser(nomUsager.dom.value.trim()) , "motDePasse" : denulliser(motDePasse.dom.value.trim()) , "oldMotDePasse" : function(){if(oldMotDePasse){return denulliser(oldMotDePasse.dom.value.trim());}else{return null;}} , "prenom" : denulliser(Ext.get("txtPrenom").dom.value.trim()) , "nom" : denulliser(Ext.get("txtNom").dom.value.trim()) , "about_me" : denulliser(Ext.get("txtAPropos").dom.value.trim()) , "url_siteweb" : denulliser(Ext.get("txtSite").dom.value.trim()) , "url_blog" : denulliser(Ext.get("txtBlog").dom.value.trim()) , "use_real_name" : Ext.get("chkVraiNom").dom.checked , "alert_qr_courriel" : Ext.get("chkAviserCourriel").dom.checked , "cherche_quoi" : denulliser(Ext.get("txtCeQueJeCherche").dom.value.trim()) } addAlias(params); break; default: params = { "who" : wakaExt.who(true) , "nomUsager" : denulliser(nomUsager.dom.value.trim()) , "prenom" : denulliser(Ext.get("txtPrenom").dom.value.trim()) , "nom" : denulliser(Ext.get("txtNom").dom.value.trim()) , "about_me" : denulliser(Ext.get("txtAPropos").dom.value.trim()) , "url_siteweb" : denulliser(Ext.get("txtSite").dom.value.trim()) , "url_blog" : denulliser(Ext.get("txtBlog").dom.value.trim()) , "use_real_name" : Ext.get("chkVraiNom").dom.checked , "alert_qr_courriel" : Ext.get("chkAviserCourriel").dom.checked , "cherche_quoi" : denulliser(Ext.get("txtCeQueJeCherche").dom.value.trim()) } if (validation_pwd(true)){ if (oldMotDePasse){ params["oldMotDePasse"] = denulliser(oldMotDePasse.dom.value.trim()); } params["motDePasse"] = denulliser(motDePasse.dom.value.trim()); } addAlias(params); break; } // if (Ext.get("selStatut")){ // params["statut_immo"] = Ext.get("selStatut").dom.value; // } //params += "&alert_qr_ui=" + Ext.get("chkAviserProfil").dom.checked; /** Appel de la fonction qui structure le dictionnaire pour que Syl le méchant serveur tyranausaurussique nous comprenne sans nous manger tout cru. Nous devons egalement broyer le tout en format JSON pour ne pas briser ses dents en diamant. */ params = wakaExt.userParams(params, true); url = "alter_user"; wakaExt.xhrCall(url, Ext.urlEncode(params), function(xhr){ wakaExt.clear(); var messageErr = Ext.get("ErrMessage"); messageErr.update(""); var reponse = eval("(" + xhr.responseText + ")"); switch(reponse.confirmation){ case "ok": switch(from){ case "pasAlias": // l'usager n'avait pas d'alias au départ // on lui crée les cookies approprié cookieManager.set("cConnecter", wakaExt.infoDossier.idDossier, 60); cookieManager.destroy("cDeconnecter"); // et on le redirige vers sa nouvelle page! window.location.href = function(){ var baseUrl = window.document.URL.split("/").splice(0,4); var alias = Ext.fly("txtAlias").getValue(); // si l'alias est vide if (alias != "" && !""){ baseUrl.push(alias); return baseUrl.join("/"); } return window.document.URL; }(); break; } break; case "AliasTaken": hlMsg(messageErr, "Ce pseudonyme est deja utilisé. Veuillez nous en soumettre un autre"); break; case "UsernameTaken": hlMsg(messageErr, "Le courriel est déjà utilisé"); break; case "PasswordVide": hlMsg(messageErr, "?"); break; case "IncorrectOldPassword": hlMsg(messageErr, "?"); break; } }, function(){wakaExt.clear();}, false ); return true; } , signalerSortie : function(idFiche){ if (!idFiche) {throw("passé un id en parametre a la fonction signalerSortie()"); return false;} var params = {"who" : json_encode(this.who()), "idFiche" : idFiche}; this.xhrCall("signalerSortie", Ext.urlEncode(params)); } , logError: function(params){ this.xhrCall("logger", Ext.urlEncode(params) , function(e){} , function(e){} , false, this ); } , changerLangue : function(lang){ // modifie le cookie de langue et rafraichi la page! creerCookie("cLangue", lang, 60); var who = json_encode(wakaExt.who()); var params = { "who" : who , "langue" : lang }; wakaExt.xhrCall("modifierLangue", params , function(xhr){this.clear();} , function(xhr){this.clear();} , true ); } , soumettreReponse : function(idQuestion){ if (idQuestion.indexOf("q") > -1){ idQuestion = idQuestion.replace("q", ""); } /*fonction qui soumet une reponse pour une question*/ if (wakaExt.infoDossier.alias != "" && wakaExt.infoDossier.alias != null){ var idReponse = "txtReponse_q" + idQuestion; var reponse = Ext.get(idReponse); if (reponse.getValue() == ""){ return false; } var who = this.who(); who.alias = this.infoDossier.alias; var params = {"who" : json_encode(who), "idQuestion" : idQuestion, "reponse" : reponse.dom.value}; // setter un cookie de la question pour ne pas fermer la zone lors du reload! cookieManager.set("cDoNotCollapse", idQuestion); wakaExt.xhrCall("qr_reponse", Ext.urlEncode(params), function(xhr){ reponse.dom.value = ""; window.location.reload(); }, function(xhr){ reponse.dom.value = ""; window.location.reload(); }, false, this ); }else{ alert("Vous devez être connecter pour utiliser cette fonctionnalité. Cliquer içi pour vous connecter"); } return true; } , soumettreQuestion : function(idFiche){ /*fonction qui soumet une question pour une fiche*/ if (wakaExt.infoDossier.alias != "" && wakaExt.infoDossier.alias != null){ var question = Ext.get("txtQuestion_" + idFiche); var value = question.getValue(); if (value != ""){ var params = {"who" : this.who(true),"question" : value, "idFiche" : idFiche} wakaExt.xhrCall("qr_question", Ext.urlEncode(params), function(xhr){ // vider le champ de saisie de la question. question.dom.value = ""; window.location.reload(); }, function(xhr){wakaExt.clear();} , false ); }else{ var err = Ext.get("messErrGlobale"); hlMsg(err, "Veuillez entrer une question", true); return false; } }else{ alert("Vous devez être connecter pour utiliser cette fonctionnalité. Cliquer içi pour vous connecter"); return false; } return true; } , evaluerQA : function(id, quoi, evaluation, raison){ /* fonction globale qui gerer l'évaluation d'un QA */ var params = {"who" : json_encode(this.who())}; var url = ""; var msg = ""; switch(quoi){ case "a": url = "qr_reponse_eval"; params.idReponse = id.replace("r", ""); params.evaluation = evaluation; params.raison = ""; if (evaluation == "x"){ params.raison = raison; msg = "La réponse a bien été dénoncée."; } break; case "q": url = "qr_question_eval"; params.idQuestion = id.replace("q", ""); params.raison = raison; msg = "La question a bien été dénoncée."; break; } wakaExt.xhrCall(url, Ext.urlEncode(params), function(o){ var reponse = eval("(" + o.responseText + ")"); // rechercher la zone de denonciation dans le dom var frmDenoncer = Ext.select("div#" + id + " p.conteneurInapproprie").elements[0]; // extraire l'alias de l'usager que l'on a denonce... // syntaxe fucké qui ressemble a des REGEX pour obtenir toutes les balises IMGs avec un id // commencant par imgUser_ + un chiffre!!!! var alias = Ext.select('img[id^="imgUser_' + id + ']').elements[0].id.split("_").pop(); // reecriture de la zone de denonciation avec les donnees fraiches! wakaTemplate.frmUtilitisme.overwrite(frmDenoncer, {"id" : id, "alias" : alias, "nb_utilitisme" : reponse.nb_ouis, "nb_inutilitisme": reponse.nb_nons} ); if (url == "qr_question_eval"){ Ext.get(frmDenoncer).select("span").remove(); } if (msg != ""){ alert(msg); } } ,function(o){ alert(o.responseText, false); } , false, this ); } , denoncerQA : function(id, quoi){ /* fonction qui permet d'envoyer une denonciation au serveur */ wakaTemplate.frmDenonciation.append(document.body, {"id" : id}); var frmDenoncer = Ext.get("frmDenonciation_" + id); var lnkDenoncer = Ext.select('a[id^="lnkDenoncer_' + id + ']').elements[0]; frmDenoncer.alignTo(lnkDenoncer, "c-c", [0,0], true); frmDenoncer.fadeIn(); var nettoyer = function(){ frmDenoncer.fadeOut({remove: true}); } // ajout d'un listener pour fermer la fenetre courante Ext.get("fermer-frmDenoncer-" + id).on("click", nettoyer, this, true); Ext.get("btnDenoncer").on("click", function(){ var raison = Ext.get("txtCommentaires").getValue(); this.evaluerQA(id, quoi, "x", raison); nettoyer(); wakaExt.clear(); }, this, true); } } }();