Auto-commit local changes before build (2026-01-08 13:31:57)

This commit is contained in:
Ivo Oskamp 2026-01-08 13:31:57 +01:00
parent b8f86c183c
commit 60f6f8e3d6

View File

@ -219,84 +219,92 @@
<script> <script>
(function () { (function () {
var table = document.getElementById('mailAuditTable'); function initAdminAllMailPopup() {
var modalEl = document.getElementById('mailMessageModal'); var table = document.getElementById('mailAuditTable');
if (!table || !modalEl) return; var modalEl = document.getElementById('mailMessageModal');
if (!table || !modalEl) return;
var modal = new bootstrap.Modal(modalEl); // base.html loads Bootstrap JS after the page content. Initialize after DOMContentLoaded
// so bootstrap.Modal is guaranteed to be available.
if (typeof bootstrap === 'undefined' || !bootstrap.Modal) return;
function setText(id, value) { var modal = new bootstrap.Modal(modalEl);
var el = document.getElementById(id);
if (el) el.textContent = value || '';
}
function renderObjects(objects) { function setText(id, value) {
var container = document.getElementById('msg_objects_container'); var el = document.getElementById(id);
if (!container) return; if (el) el.textContent = value || '';
container.innerHTML = '';
if (!objects || !objects.length) {
container.innerHTML = '<div class="text-muted">No objects stored.</div>';
return;
} }
var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' + function renderObjects(objects) {
'<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>'; var container = document.getElementById('msg_objects_container');
if (!container) return;
container.innerHTML = '';
for (var i = 0; i < objects.length; i++) { if (!objects || !objects.length) {
var o = objects[i] || {}; container.innerHTML = '<div class="text-muted">No objects stored.</div>';
tableHtml += '<tr>' + return;
'<td>' + (o.name || '') + '</td>' + }
'<td>' + (o.type || '') + '</td>' +
'<td>' + (o.status || '') + '</td>' + var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' +
'<td style="white-space: pre-wrap;">' + (o.error_message || '') + '</td>' + '<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>';
'</tr>';
for (var i = 0; i < objects.length; i++) {
var o = objects[i] || {};
tableHtml += '<tr>' +
'<td>' + (o.name || '') + '</td>' +
'<td>' + (o.type || '') + '</td>' +
'<td>' + (o.status || '') + '</td>' +
'<td style="white-space: pre-wrap;">' + (o.error_message || '') + '</td>' +
'</tr>';
}
tableHtml += '</tbody></table></div>';
container.innerHTML = tableHtml;
} }
tableHtml += '</tbody></table></div>'; function setIframeHtml(html) {
container.innerHTML = tableHtml; var iframe = document.getElementById('msg_body_container_iframe');
} if (!iframe) return;
iframe.srcdoc = html || '<p>No message content stored.</p>';
function setIframeHtml(html) {
var iframe = document.getElementById('msg_body_container_iframe');
if (!iframe) return;
iframe.srcdoc = html || '<p>No message content stored.</p>';
}
async function openMessage(messageId) {
try {
var res = await fetch('{{ url_for('main.inbox_message_detail', message_id=0) }}'.replace('/0', '/' + messageId));
if (!res.ok) throw new Error('Failed to load message');
var data = await res.json();
if (!data || data.status !== 'ok') throw new Error('Invalid response');
var meta = data.meta || {};
setText('msg_from', meta.from_address);
setText('msg_backup', meta.backup_software);
setText('msg_type', meta.backup_type);
setText('msg_job', meta.job_name);
setText('msg_overall', meta.overall_status);
setText('msg_customer', meta.customer_name);
setText('msg_received', meta.received_at);
setText('msg_parsed', meta.parsed_at);
setText('msg_overall_message', meta.overall_message);
setIframeHtml(data.body_html);
renderObjects(data.objects);
modal.show();
} catch (e) {
alert('Unable to open message details.');
} }
async function openMessage(messageId) {
try {
var res = await fetch('{{ url_for('main.inbox_message_detail', message_id=0) }}'.replace('/0', '/' + messageId));
if (!res.ok) throw new Error('Failed to load message');
var data = await res.json();
if (!data || data.status !== 'ok') throw new Error('Invalid response');
var meta = data.meta || {};
setText('msg_from', meta.from_address);
setText('msg_backup', meta.backup_software);
setText('msg_type', meta.backup_type);
setText('msg_job', meta.job_name);
setText('msg_overall', meta.overall_status);
setText('msg_customer', meta.customer_name);
setText('msg_received', meta.received_at);
setText('msg_parsed', meta.parsed_at);
setText('msg_overall_message', meta.overall_message);
setIframeHtml(data.body_html);
renderObjects(data.objects);
modal.show();
} catch (e) {
alert('Unable to open message details.');
}
}
table.addEventListener('click', function (e) {
var tr = e.target.closest('tr.mail-row');
if (!tr) return;
var id = tr.getAttribute('data-message-id');
if (!id) return;
openMessage(id);
});
} }
table.addEventListener('click', function (e) { document.addEventListener('DOMContentLoaded', initAdminAllMailPopup);
var tr = e.target.closest('tr.mail-row');
if (!tr) return;
var id = tr.getAttribute('data-message-id');
if (!id) return;
openMessage(id);
});
})(); })();
</script> </script>