04/13/2026 Fixed email ingres function

This commit is contained in:
2026-04-13 18:18:15 -04:00
parent 7f025c613f
commit cacc92636a
4 changed files with 257 additions and 59 deletions
+93 -3
View File
@@ -237,13 +237,103 @@
For other providers, ensure IMAP is enabled and check their specific settings.
</div>
<button type="submit" class="btn btn-primary mt-3">
<i class="bi bi-check2 me-2"></i>Save Email Settings
</button>
<div class="d-flex align-items-center gap-2 flex-wrap mt-3">
<button type="submit" class="btn btn-primary">
<i class="bi bi-check2 me-2"></i>Save Email Settings
</button>
<button type="button" class="btn btn-outline-secondary" id="btn-test-ingest"
onclick="emailIngestTest()">
<i class="bi bi-plug me-2"></i>Test Connection
</button>
<button type="button" class="btn btn-outline-primary" id="btn-run-ingest"
onclick="emailIngestRunNow()">
<i class="bi bi-play-circle me-2"></i>Run Now
</button>
</div>
<div id="ingest-result" class="mt-3" style="display:none;"></div>
</form>
</div>
</div>
<script>
(function () {
var csrfToken = document.querySelector('meta[name="csrf-token"]').content;
function setResult(ok, message) {
var el = document.getElementById('ingest-result');
el.style.display = '';
el.className = ok
? 'alert alert-success py-2 px-3'
: 'alert alert-danger py-2 px-3';
el.style.fontSize = '13px';
el.innerHTML = '<i class="bi bi-' + (ok ? 'check-circle' : 'x-circle') + ' me-2"></i>' +
message.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
function collectFields() {
return {
host : document.querySelector('[name="email_ingestion_host"]').value.trim(),
port : document.querySelector('[name="email_ingestion_port"]').value.trim(),
user : document.querySelector('[name="email_ingestion_user"]').value.trim(),
password: document.querySelector('[name="email_ingestion_password"]').value.trim(),
folder : document.querySelector('[name="email_ingestion_folder"]').value.trim(),
};
}
window.emailIngestTest = function () {
var btn = document.getElementById('btn-test-ingest');
btn.disabled = true;
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Testing…';
var fields = collectFields();
var body = new URLSearchParams(fields);
body.append('csrf_token', csrfToken);
fetch('{{ url_for("admin.email_ingestion_test") }}', {
method : 'POST',
headers: { 'X-CSRFToken': csrfToken, 'Content-Type': 'application/x-www-form-urlencoded' },
body : body.toString(),
})
.then(function (r) { return r.json(); })
.then(function (data) {
setResult(data.ok, data.message);
})
.catch(function (err) {
setResult(false, 'Request failed: ' + err);
})
.finally(function () {
btn.disabled = false;
btn.innerHTML = '<i class="bi bi-plug me-2"></i>Test Connection';
});
};
window.emailIngestRunNow = function () {
var btn = document.getElementById('btn-run-ingest');
btn.disabled = true;
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Running…';
var body = new URLSearchParams({ csrf_token: csrfToken });
fetch('{{ url_for("admin.email_ingestion_run_now") }}', {
method : 'POST',
headers: { 'X-CSRFToken': csrfToken, 'Content-Type': 'application/x-www-form-urlencoded' },
body : body.toString(),
})
.then(function (r) { return r.json(); })
.then(function (data) {
setResult(data.ok, data.message);
})
.catch(function (err) {
setResult(false, 'Request failed: ' + err);
})
.finally(function () {
btn.disabled = false;
btn.innerHTML = '<i class="bi bi-play-circle me-2"></i>Run Now';
});
};
})();
</script>
<!-- Satisfaction Survey -->
<div class="card mb-4" style="max-width:680px;">
<div class="card-header" style="padding:16px 20px;border-bottom:1px solid var(--border);">