UX-parannukset postilaatikon asetuksiin

- Poista SMTP override-testikentät (ei tarpeen enää)
- Tallennus pitää lomakkeen auki + näyttää "Tallennettu" -ilmoituksen
- SMTP-kenttäjärjestys samaksi kuin IMAP: Palvelin → Portti → Tunnus → Salasana → Salaus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 00:07:46 +02:00
parent 335ed540f1
commit 96a35c7e0b
3 changed files with 13 additions and 37 deletions

View File

@@ -2590,9 +2590,17 @@ document.getElementById('btn-save-mailbox').addEventListener('click', async () =
aktiivinen: true,
};
try {
await apiCall('mailbox_save', 'POST', data);
document.getElementById('mailbox-form-container').style.display = 'none';
const saved = await apiCall('mailbox_save', 'POST', data);
// Päivitä lomakkeen ID (uusi laatikko saa ID:n backendiltä)
if (saved.id) document.getElementById('mailbox-form-id').value = saved.id;
// Päivitä lista taustalle mutta pidä lomake auki
loadMailboxes();
// Näytä lyhyt "Tallennettu" -ilmoitus
const btn = document.getElementById('btn-save-mailbox');
const orig = btn.textContent;
btn.textContent = '✓ Tallennettu';
btn.style.background = '#4caf50';
setTimeout(() => { btn.textContent = orig; btn.style.background = ''; }, 2000);
} catch (e) { alert(e.message); }
});
@@ -2601,7 +2609,7 @@ document.getElementById('btn-cancel-mailbox').addEventListener('click', () => {
});
// SMTP-testaus
async function runSmtpTest(overrideUser = '', overridePass = '') {
document.getElementById('btn-test-smtp').addEventListener('click', async () => {
const mailboxId = document.getElementById('mailbox-form-id').value;
const resultEl = document.getElementById('smtp-test-result');
if (!mailboxId) {
@@ -2611,13 +2619,8 @@ async function runSmtpTest(overrideUser = '', overridePass = '') {
}
resultEl.style.display = '';
resultEl.textContent = '⏳ Testataan SMTP-yhteyttä...';
// Näytä override-kentät
document.getElementById('smtp-test-override').style.display = '';
try {
const payload = { mailbox_id: mailboxId };
if (overrideUser) payload.override_user = overrideUser;
if (overridePass) payload.override_pass = overridePass;
const res = await apiCall('smtp_test', 'POST', payload);
const res = await apiCall('smtp_test', 'POST', { mailbox_id: mailboxId });
let output = '=== TIETOKANNAN ARVOT ===\n';
if (res.db_values) {
for (const [k, v] of Object.entries(res.db_values)) {
@@ -2625,27 +2628,16 @@ async function runSmtpTest(overrideUser = '', overridePass = '') {
}
}
output += `\n=== KÄYTETTÄVÄT ARVOT ===\n`;
if (res.using_override) output += ` ⚠️ KÄYTETÄÄN OVERRIDE-TUNNUKSIA\n`;
output += ` Käyttäjä: ${res.effective_user || '(tyhjä)'}\n`;
output += ` Salasana: ${res.effective_pass_hint || '?'} (${res.effective_pass_len} merkkiä)\n\n`;
output += `=== TESTIN VAIHEET ===\n`;
if (res.steps) {
res.steps.forEach(s => { output += ` ${s}\n`; });
}
if (res.ehlo_capabilities_tls) {
output += `\n=== EHLO (TLS jälkeen) ===\n${res.ehlo_capabilities_tls}\n`;
}
resultEl.textContent = output;
} catch (e) {
resultEl.textContent = '❌ Virhe: ' + e.message;
}
}
document.getElementById('btn-test-smtp').addEventListener('click', () => runSmtpTest());
document.getElementById('btn-test-smtp-override').addEventListener('click', () => {
const user = document.getElementById('smtp-test-user').value;
const pass = document.getElementById('smtp-test-pass').value;
runSmtpTest(user, pass);
});
// ==================== YRITYKSEN KÄYTTÄJÄOIKEUDET ====================