Messages & demandes
Vue d’ensemble des personnes qui t’ont contactée, pour préparer les devis et le suivi.
Maison ASL · Vision Identity Market™

Tableau des demandes

Ici, tu centralises toutes les demandes reçues via tes formulaires (pré-diagnostic, demandes d’appel, etc.). Le tableau ci-dessous se remplit automatiquement à partir de messages.json.

Date Nom Email Type de projet Statut
Aucun message intégré pour l’instant. Dès qu’un formulaire est rempli sur ta page publique, il apparaîtra ici.
const id = msg.id || ''; const currentStatus = msg.status || 'Nouveau'; let html = ''; html += `

Type : ${f(msg.form_type)}

`; html += `

Nom : ${f(msg.nom)}

`; html += `

Email : ${f(msg.email)}

`; if (msg.reseaux !== undefined || msg.type_besoin !== undefined) { html += `

Compte / site : ${f(msg.reseaux)}

`; html += `

Besoin principal : ${f(msg.type_besoin)}

`; html += `

Situation actuelle :
${f(msg.situation)}

`; html += `

Ce qui l’amène :
${f(msg.motif)}

`; html += `

Vision 12–36 mois :
${f(msg.vision)}

`; html += `

Budget : ${f(msg.budget)}

`; html += `

Source : ${f(msg.source)}

`; html += `

Confidentialité : ${f(msg.confidentialite)}

`; } else { html += `

Objet de l’appel : ${f(msg.type_besoin_call)}

`; html += `

Date souhaitée : ${f(msg.date)}

`; html += `

Créneau : ${f(msg.time)}

`; html += `

Notes :
${f(msg.notes)}

`; } html += `

Reçu le : ${f(msg.received_at)}

`; html += `

Statut :

`; detailContent.innerHTML = html; detailWrap.style.display = 'block'; const select = document.getElementById('statusSelect'); const feedback = document.getElementById('statusFeedback'); if (select) { select.value = currentStatus; select.addEventListener('change', function () { const newStatus = select.value; feedback.textContent = 'Mise à jour…'; feedback.style.color = '#a79f95'; updateStatus(id, newStatus, index, feedback); }); } } function updateStatus(id, newStatus, index, feedbackEl) { if (!id) { if (feedbackEl) { feedbackEl.textContent = 'ID manquant.'; feedbackEl.style.color = '#f45b6c'; } return; } const formData = new FormData(); formData.append('id', id); formData.append('status', newStatus); fetch('update_status.php', { method: 'POST', body: formData }) .then(res => res.json()) .then(data => { if (data && data.success) { if (MESSAGE_CACHE[index]) { MESSAGE_CACHE[index].status = newStatus; } const row = document.querySelector(`tr[data-msg-id="${id}"] .status-cell`); if (row) row.textContent = newStatus; if (feedbackEl) { feedbackEl.textContent = 'Statut mis à jour.'; feedbackEl.style.color = '#8fe39a'; } } else { if (feedbackEl) { feedbackEl.textContent = data && data.error ? data.error : 'Erreur lors de la mise à jour.'; feedbackEl.style.color = '#f45b6c'; } } }) .catch(() => { if (feedbackEl) { feedbackEl.textContent = 'Impossible de contacter le serveur.'; feedbackEl.style.color = '#f45b6c'; } }); }