Korjaa allekirjoituksen valinta vastattaessa tiketteihin

Poistettu virheellinen fallback joka valitsi ensimmäisen satunnaisen
allekirjoituksen (esim. serverihuone.com) väärään tikettiin. Nyt
generoidaan oikea oletusallekirjoitus tiketin kontekstin perusteella
(käyttäjänimi + yritys + vastaanottava sähköposti + puhelin).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 01:47:58 +02:00
parent 627bec1f47
commit c4e7f45bca
2 changed files with 38 additions and 18 deletions

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Noxus HUB</title>
<link rel="stylesheet" href="style.css?v=20260313g">
<link rel="stylesheet" href="style.css?v=20260313h">
</head>
<body>
<!-- Login -->
@@ -2233,6 +2233,6 @@
</div>
</div>
<script src="script.js?v=20260313g"></script>
<script src="script.js?v=20260313h"></script>
</body>
</html>

View File

@@ -1848,6 +1848,7 @@ async function showTicketDetail(id, companyId = '') {
// Mailbox-valinta — Zammad-tiketit vastaa Zammadin kautta, muut SMTP:llä
const mbSelect = document.getElementById('reply-mailbox-select');
let replyMailboxes = []; // tallennetaan postilaatikkodata allekirjoitushakua varten
if (mbSelect) {
if (ticket.source === 'zammad' && ticket.zammad_ticket_id) {
// Zammad-tiketti: vastaus menee Zammadin kautta
@@ -1855,8 +1856,8 @@ async function showTicketDetail(id, companyId = '') {
mbSelect.innerHTML = `<option value="zammad" selected>${esc(zTo)} (Zammad)</option>`;
} else {
try {
const mailboxes = await apiCall('all_mailboxes');
const visibleMailboxes = mailboxes.filter(mb =>
replyMailboxes = await apiCall('all_mailboxes');
const visibleMailboxes = replyMailboxes.filter(mb =>
String(mb.id) === String(ticket.mailbox_id || '') ||
(!currentHiddenMailboxes.includes(String(mb.id)) && !currentHiddenMailboxes.includes(mb.id))
);
@@ -1875,25 +1876,36 @@ async function showTicketDetail(id, companyId = '') {
});
}
// Allekirjoituksen esikatselu
// Allekirjoituksen esikatselu — generoi oikea oletus jos tallennettua ei löydy
const _sigUserName = currentUser?.nimi || currentUser?.username || '';
function _buildDefaultSig(companyName, email, phone) {
let sig = _sigUserName + '\n' + companyName + '\n' + email;
if (phone) sig += '\n' + phone;
return sig;
}
function updateSignaturePreview(mbId) {
const sigPreview = document.getElementById('signature-preview');
const useSigCheck = document.getElementById('reply-use-signature');
let sig = '';
// Zammad-tiketti: hae allekirjoitus zammad:email -avaimella
if (mbId === 'zammad' && ticket.zammad_to_email) {
// Zammad-tiketti: hae allekirjoitus zammad:email -avaimella
sig = currentUserSignatures['zammad:' + ticket.zammad_to_email] || '';
}
if (!sig) {
sig = currentUserSignatures[mbId] || '';
}
if (!sig && mbId) {
sig = currentUserSignatures[String(mbId)] || currentUserSignatures[Number(mbId)] || '';
}
if (!sig) {
// Fallback: käytä ensimmäistä löytyvää allekirjoitusta
const keys = Object.keys(currentUserSignatures);
if (keys.length > 0) sig = currentUserSignatures[keys[0]] || '';
if (!sig) {
// Generoi oletus Zammad-tiketin tiedoilla
const cName = currentCompany?.nimi || '';
const cPhone = currentCompany?.phone || '';
sig = _buildDefaultSig(cName, ticket.zammad_to_email, cPhone);
}
} else if (mbId) {
// SMTP-postilaatikko: hae tallennettu allekirjoitus
sig = currentUserSignatures[mbId] || currentUserSignatures[String(mbId)] || currentUserSignatures[Number(mbId)] || '';
if (!sig) {
// Generoi oletus postilaatikon tiedoilla
const mb = replyMailboxes.find(m => String(m.id) === String(mbId));
if (mb) {
sig = _buildDefaultSig(mb.company_nimi || '', mb.smtp_from_email || '', mb.company_phone || '');
}
}
}
if (sig && useSigCheck && useSigCheck.checked) {
sigPreview.textContent = '-- \n' + sig;
@@ -2004,7 +2016,15 @@ document.getElementById('btn-send-reply').addEventListener('click', async () =>
let zBody = body;
const useSig = document.getElementById('reply-use-signature');
if (useSig && useSig.checked && currentTicketData.zammad_to_email) {
const zSig = currentUserSignatures['zammad:' + currentTicketData.zammad_to_email] || '';
let zSig = currentUserSignatures['zammad:' + currentTicketData.zammad_to_email] || '';
if (!zSig) {
// Generoi oletus allekirjoitus
const _un = currentUser?.nimi || currentUser?.username || '';
const _cn = currentCompany?.nimi || '';
const _cp = currentCompany?.phone || '';
zSig = _un + '\n' + _cn + '\n' + currentTicketData.zammad_to_email;
if (_cp) zSig += '\n' + _cp;
}
if (zSig) zBody += '\n\n-- \n' + zSig;
}
// Lähetä Zammad API:n kautta