diff --git a/apps/ops/src/modules/campaigns/pages/TemplateEditorPage.vue b/apps/ops/src/modules/campaigns/pages/TemplateEditorPage.vue index dab5869..627aa5b 100644 --- a/apps/ops/src/modules/campaigns/pages/TemplateEditorPage.vue +++ b/apps/ops/src/modules/campaigns/pages/TemplateEditorPage.vue @@ -13,12 +13,9 @@ Sauvegardé · {{ lastSavedLabel }} - - - 9 variables disponibles (Client / Offre / Système). - Insertion : clic dans un texte → barre flottante → icône {} Merge Tags. - Marche aussi dans les champs URL (boutons, images, mailto). - + + Voir toutes les variables Mustache disponibles et leur exemple @@ -178,6 +175,57 @@ + + + + + +
Variables disponibles
+ + +
+ +
+ Le worker du hub substitue ces variables dans le HTML au moment de l'envoi + (moteur Mustache). Tu peux les insérer dans n'importe quel texte ou champ URL. + Dans l'éditeur Unlayer, le moyen le plus rapide est : clique dans un texte → + barre flottante → icône { }. +
+
+
{{ cat.name }}
+ + + + {{ tag.value }} + + + {{ tag.name }} + exemple : {{ tag.sample }} + + + + Copier {{ tag.value }} + + + + +
+ + + Bientôt : à l'importation CSV, on pourra mapper chaque colonne + comme variable additionnelle (ex. {{plan_name}}, + {{renewal_date}}) sans toucher au code. + +
+
+
@@ -279,6 +327,18 @@ async function loadAvailableTemplates () { // ── AI translation (Gemini via hub) ───────────────────────────────────────── // Auto-detect source language from the template name suffix (-fr / -en) and // compute the target name with the OPPOSITE suffix. +// Reference card showing every Mustache variable. Read-only — the variables +// list lives in editorOptions.mergeTags above (same source Unlayer uses). +const variablesOpen = ref(false) +async function copyVariable (val) { + try { + await navigator.clipboard.writeText(val) + $q.notify({ type: 'positive', message: `${val} copié`, timeout: 1200 }) + } catch { + $q.notify({ type: 'negative', message: 'Impossible de copier — sélectionne et copie manuellement' }) + } +} + const aiTranslateOpen = ref(false) const aiTranslating = ref(false) const aiTranslateOverride = ref(false)