Fix sent emails: use data-attributes for read modal, fix delete route collision with /emails/<email_id>
This commit is contained in:
parent
7a9a69c86d
commit
04eaac3094
2 changed files with 29 additions and 20 deletions
|
|
@ -154,11 +154,16 @@
|
|||
</td>
|
||||
<td>
|
||||
<div class="d-flex gap-1">
|
||||
<button class="btn btn-sm btn-secondary"
|
||||
onclick="showSentEmail({{ mail.id }}, {{ mail.to_address|tojson }}, {{ mail.subject|tojson }}, {{ mail.sent_at|tojson }}, {{ mail.triggered_by|tojson }}, {{ (mail.body or '')|tojson }})"
|
||||
<button class="btn btn-sm btn-secondary sent-read-btn"
|
||||
data-id="{{ mail.id }}"
|
||||
data-to="{{ mail.to_address }}"
|
||||
data-subject="{{ mail.subject|e }}"
|
||||
data-date="{{ mail.sent_at }}"
|
||||
data-agent="{{ mail.triggered_by }}"
|
||||
data-body="{{ (mail.body or '')|e }}"
|
||||
title="Lesen">👁</button>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
onclick="deleteSentEmail({{ mail.id }})"
|
||||
<button class="btn btn-sm btn-danger sent-delete-btn"
|
||||
data-id="{{ mail.id }}"
|
||||
title="Löschen">✕</button>
|
||||
</div>
|
||||
</td>
|
||||
|
|
@ -214,22 +219,26 @@ function viewEmail(emailId, subject, from) {
|
|||
.catch(e => { document.getElementById('emailBody').textContent = 'Fehler: ' + e.message; });
|
||||
}
|
||||
|
||||
function showSentEmail(id, to, subject, date, agent, body) {
|
||||
document.getElementById('sentEmailSubject').textContent = subject;
|
||||
document.getElementById('sentEmailTo').textContent = to;
|
||||
document.getElementById('sentEmailDate').textContent = date.replace('T', ' ').slice(0, 16);
|
||||
document.getElementById('sentEmailAgent').textContent = agent;
|
||||
document.getElementById('sentEmailBody').textContent = body || '(kein Inhalt gespeichert)';
|
||||
// Lesen
|
||||
document.addEventListener('click', function(e) {
|
||||
const btn = e.target.closest('.sent-read-btn');
|
||||
if (!btn) return;
|
||||
document.getElementById('sentEmailSubject').textContent = btn.dataset.subject;
|
||||
document.getElementById('sentEmailTo').textContent = btn.dataset.to;
|
||||
document.getElementById('sentEmailDate').textContent = btn.dataset.date.replace('T',' ').slice(0,16);
|
||||
document.getElementById('sentEmailAgent').textContent = btn.dataset.agent;
|
||||
document.getElementById('sentEmailBody').textContent = btn.dataset.body || '(kein Inhalt gespeichert)';
|
||||
new bootstrap.Modal(document.getElementById('sentEmailModal')).show();
|
||||
}
|
||||
});
|
||||
|
||||
function deleteSentEmail(id) {
|
||||
// Löschen
|
||||
document.addEventListener('click', function(e) {
|
||||
const btn = e.target.closest('.sent-delete-btn');
|
||||
if (!btn) return;
|
||||
const id = btn.dataset.id;
|
||||
if (!confirm('Eintrag #' + id + ' aus dem Log löschen?')) return;
|
||||
fetch('/emails/sent/' + id + '/delete', {
|
||||
method: 'POST',
|
||||
headers: {'Accept': 'application/json'}
|
||||
})
|
||||
.then(r => r.json())
|
||||
fetch('/api/sent-emails/' + id + '/delete', {method: 'POST'})
|
||||
.then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })
|
||||
.then(d => {
|
||||
if (d.success) {
|
||||
const row = document.getElementById('sent-row-' + id);
|
||||
|
|
@ -238,7 +247,7 @@ function deleteSentEmail(id) {
|
|||
alert('Fehler: ' + d.message);
|
||||
}
|
||||
})
|
||||
.catch(() => alert('Netzwerkfehler.'));
|
||||
}
|
||||
.catch(err => alert('Fehler: ' + err.message));
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue