const isDev = false; function share() { window.location.href = 'mailto:?subject=' + encodeURIComponent('CIO - ' + document.querySelector('.faq h1').textContent) + '&body=' + encodeURIComponent('Ce lien ou ce document pourrait vous intéresser : ' + window.location.href) + '%0D%0A' + encodeURIComponent('Bonne lecture.'); } function showHideMenu(){ const menuArea = document.querySelector(".cio-menu-row"); if(menuArea){ menuArea.classList.toggle("visible"); } } const mobileMenu = document.querySelector(".navbar-toggle"); if(mobileMenu){ mobileMenu.onclick = showHideMenu; } function saveUserFeedback(url, question, feedback){ fetch(`${url}feedback?question=${question}`, { method: 'POST', headers: { 'Access-Control-Allow-Origin': window.origin, 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ feedback }) }).then(response => { console.log("Call response : ", response) const element = document.querySelector("#faq-feedback"); if (response.ok) { // Réponse 2xx element.innerHTML = "Merci pour votre feedback!"; } else { // Autre code de statut HTTP (par exemple 404 ou 500) element.innerHTML = "Votre feedback n'a pas pu être sauvegardé, réessayez"; } }).catch(error => { // En cas d'erreur réseau const element = document.querySelector("#faq-feedback"); if (element) { element.innerHTML = "Erreur de réseau, veuillez réessayer."; } console.error("Erreur réseau:", error); }); } /* Search Script */ const search = document.querySelector("#search"); const resultsArea = document.querySelector(".search-results"); let debounceTimeout = null; search.onkeyup = function (event) { clearTimeout(debounceTimeout); debounceTimeout = setTimeout(async () => { await doSearch(event); }, 500); }; document.onclick = function(event){ if(event.target?.id!="search-results" && event.target?.id!="search"){ const resultsArea = document.querySelector(".search-results"); resultsArea.classList.remove("visible"); } } function getUrlSegmentFromCategory(category){ switch(category){ case "1": return "eleve-du-secondaire" case "2": return "parent-d-eleve" case "3": return "etudiant" case "4": return "adulte-en-reprise-d-etudes" case "5": return "futur-diplome-diplome" case "6": return "futur-docteur-et-docteur" case "7": return "professionnel-les-de-l-enseignement-secondaire" case "8": return "professionnel-les-de-l-enseignement-superieur" } } async function doSearch(event){ const value = event?.target?.value; let idx = 0; if(value?.trim().length>=3) { const category = "2"; if(category<1 || category>8) return; const formData = new URLSearchParams(); formData.append('query', value); formData.append('category', category || ''); const response = await fetch('/search-faq', { method:'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: formData.toString() }) const result = await response.json(); console.log("Request search DONE :", result); let results=[]; if(!result || !result.length){ results = [{target:"#", title:"Aucun résultat pour la recherche '"+ value +"'"}] } await Promise.resolve(result?.forEach(r => { let url = (isDev ? "http://dev.cio_migration.be/":"https://conseils-orientation.uclouvain.be/") + getUrlSegmentFromCategory(category) + "/" + r.slug2 + "/" + r.slug + ".html"; results.push({target:url, title: r.question}); })) let output = ""; if(results.length && resultsArea){ results.forEach(r => { const link = `${r.title}`; output += idx==0?"" : "
  • " + link + "
  • " idx++; }) resultsArea.innerHTML = output; resultsArea.classList.add("visible"); } } }