v0.0.4: e-mailtemplates met velden ({voornaam}, {model}, {afzender}…), te kiezen bij nieuwe e-mail, antwoord en contact; inbox met nieuwe e-mail, doorsturen, CC en bijlagen, Verzonden, Archief, zoeken, als ongelezen markeren en alles gelezen; agenda per gebruiker met CalDAV (/dav/, app-wachtwoord in Mijn account); zoeken en Nieuw in de bovenbalk; e-mailinstellingen met voorinstellingen (OVHcloud, Gmail), beveiliging per server, kopie in Verzonden en verbindingstest; offerte in het klantportaal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
81fc27fa86
commit
366a3f9d17
@@ -0,0 +1,52 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block title %}{{ t.name or 'Nieuwe template' }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="head">
|
||||
<div><a class="label" href="{{ url_for('mail_templates') }}">← Templates</a><h1>{{ 'Template bewerken' if t.id else 'Nieuwe template' }}</h1></div>
|
||||
{% if t.id %}<div class="actions"><a class="btn btn-outline-primary" href="{{ url_for('mail_new', template=t.id) }}">Gebruiken</a></div>{% endif %}
|
||||
</div>
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-8">
|
||||
<form method="post" class="card"><div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-12"><label class="form-label" for="name">Naam *</label><input class="form-control" id="name" name="name" value="{{ t.name or '' }}" placeholder="Bijvoorbeeld: Ontwerp ontvangen" required></div>
|
||||
<div class="col-12"><label class="form-label" for="subject">Onderwerp</label><input class="form-control" id="subject" name="subject" value="{{ t.subject or '' }}" data-field-target></div>
|
||||
<div class="col-12"><label class="form-label" for="body">Tekst</label><textarea class="form-control" id="body" name="body" rows="16" data-field-target>
|
||||
{{ t.body or '' }}</textarea></div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<button class="btn btn-primary">Opslaan</button>
|
||||
<a class="btn btn-outline-secondary" href="{{ url_for('mail_templates') }}">Annuleren</a>
|
||||
</div>
|
||||
</div></form>
|
||||
{% if t.id %}
|
||||
<form method="post" action="{{ url_for('mail_template_delete', tid=t.id) }}" onsubmit="return confirm('Template verwijderen?')">
|
||||
<button class="btn btn-outline-secondary btn-sm">Template verwijderen</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="card"><div class="card-body">
|
||||
<h2>Velden</h2>
|
||||
<p class="hint">Klik om een veld in te voegen in het onderwerp of de tekst (waar de cursor stond).</p>
|
||||
<ul class="mail-fields">
|
||||
{% for k, label in FIELDS %}<li><button type="button" class="btn btn-outline-primary btn-sm" data-field="{{ k }}">{{ '{' ~ k ~ '}' }}</button><span class="muted">{{ label }}</span></li>{% endfor %}
|
||||
</ul>
|
||||
</div></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
<script>
|
||||
// Veld invoegen in het laatst gebruikte tekstvak (standaard de tekst).
|
||||
(() => {
|
||||
let target = document.getElementById('body');
|
||||
document.querySelectorAll('[data-field-target]').forEach(el => el.addEventListener('focus', () => { target = el; }));
|
||||
document.querySelectorAll('[data-field]').forEach(btn => btn.addEventListener('click', () => {
|
||||
const text = `{${btn.dataset.field}}`, a = target.selectionStart ?? target.value.length, b = target.selectionEnd ?? a;
|
||||
target.setRangeText(text, a, b, 'end');
|
||||
target.focus();
|
||||
}));
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user