first commit
This commit is contained in:
commit
e6c52820cd
227 changed files with 16156 additions and 0 deletions
128
Templates/email/edit_template.html
Normal file
128
Templates/email/edit_template.html
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
{% 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 %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue