128 lines
5.5 KiB
HTML
128 lines
5.5 KiB
HTML
{% extends 'layouts/base.html' %}
|
|
|
|
{% block title %}Suite Consultance - {% if template %}Modifier{% else %}Créer{% endif %} un template d'email{% endblock %}
|
|
{% block module_name %}crm{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h1 class="h2 text-crm">{% if template %}Modifier{% else %}Créer{% endif %} un template d'email</h1>
|
|
<a href="{{ url_for('email_templates') }}" class="btn btn-outline-crm">
|
|
<i class="fas fa-arrow-left"></i> Retour aux templates
|
|
</a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<form method="POST" action="{{ url_for('edit_email_template', template_id=template.id) if template else url_for('create_email_template') }}">
|
|
<div class="row g-3">
|
|
<!-- Informations du template -->
|
|
<div class="col-12">
|
|
<h5 class="border-bottom pb-2 mb-3">Informations du template</h5>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="mb-3">
|
|
<label for="name" class="form-label">Nom du template *</label>
|
|
<input type="text" class="form-control" id="name" name="name" value="{{ template.name if template else '' }}" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="mb-3">
|
|
<label for="description" class="form-label">Description</label>
|
|
<input type="text" class="form-control" id="description" name="description" value="{{ template.description if template else '' }}">
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Contenu du template -->
|
|
<div class="col-12">
|
|
<h5 class="border-bottom pb-2 mb-3 mt-3">Contenu du template</h5>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="mb-3">
|
|
<label for="subject" class="form-label">Sujet *</label>
|
|
<input type="text" class="form-control" id="subject" name="subject" value="{{ template.subject if template else '' }}" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="mb-3">
|
|
<label for="content" class="form-label">Contenu *</label>
|
|
<textarea class="form-control" id="content" name="content" rows="15" required>{{ template.content if template else '' }}</textarea>
|
|
<small class="text-muted">Variables disponibles: {{name}}, {{company}}, {{email}}, {{phone}}. Vous pouvez utiliser du texte formaté HTML.</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 mt-3">
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="fas fa-save"></i> {% if template %}Mettre à jour{% else %}Enregistrer{% endif %} le template
|
|
</button>
|
|
<a href="{{ url_for('email_templates') }}" class="btn btn-outline-secondary">
|
|
Annuler
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Aperçu du template -->
|
|
<div class="card mt-4">
|
|
<div class="card-header bg-info text-white">
|
|
<h5 class="card-title mb-0">Aperçu du template</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="mb-3">
|
|
<h6>Sujet</h6>
|
|
<p id="preview_subject" class="border p-2">{{ template.subject if template else 'Votre sujet apparaîtra ici' }}</p>
|
|
</div>
|
|
<div>
|
|
<h6>Contenu</h6>
|
|
<div id="preview_content" class="border p-3">
|
|
{{ template.content|safe if template else '<p>Votre contenu apparaîtra ici</p>' }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block extra_js %}
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const subjectInput = document.getElementById('subject');
|
|
const contentInput = document.getElementById('content');
|
|
const previewSubject = document.getElementById('preview_subject');
|
|
const previewContent = document.getElementById('preview_content');
|
|
|
|
// Mise à jour de l'aperçu lors de la saisie
|
|
subjectInput.addEventListener('input', updatePreview);
|
|
contentInput.addEventListener('input', updatePreview);
|
|
|
|
function updatePreview() {
|
|
// Mettre à jour le sujet
|
|
previewSubject.textContent = subjectInput.value || 'Votre sujet apparaîtra ici';
|
|
|
|
// Mettre à jour le contenu
|
|
let content = contentInput.value || '<p>Votre contenu apparaîtra ici</p>';
|
|
|
|
// Remplacer les variables par des valeurs d'exemple
|
|
const replacements = {
|
|
'{{name}}': 'Nom du prospect',
|
|
'{{company}}': 'Entreprise du prospect',
|
|
'{{email}}': 'email@exemple.com',
|
|
'{{phone}}': '01 23 45 67 89'
|
|
};
|
|
|
|
for (const [variable, value] of Object.entries(replacements)) {
|
|
content = content.replace(new RegExp(variable, 'g'), value);
|
|
}
|
|
|
|
previewContent.innerHTML = content;
|
|
}
|
|
|
|
// Initialiser l'aperçu au chargement
|
|
updatePreview();
|
|
});
|
|
</script>
|
|
{% endblock %}
|