Auto-commit local changes before build (2026-01-08 13:31:57)
This commit is contained in:
parent
b8f86c183c
commit
60f6f8e3d6
@ -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>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user