diff --git a/api.php b/api.php index a087bdb..600e784 100644 --- a/api.php +++ b/api.php @@ -3942,6 +3942,20 @@ switch ($action) { echo json_encode($groups); break; + case 'ticket_zammad_emails': + requireAuth(); + $userCompanyIds = $_SESSION['companies'] ?? []; + $emails = []; + foreach ($userCompanyIds as $cid) { + $rows = _dbFetchAll("SELECT DISTINCT zammad_to_email FROM tickets WHERE company_id = ? AND source = 'zammad' AND zammad_to_email IS NOT NULL AND zammad_to_email != ''", [$cid]); + foreach ($rows as $r) { + if (!in_array($r['zammad_to_email'], $emails)) $emails[] = $r['zammad_to_email']; + } + } + sort($emails); + echo json_encode($emails); + break; + case 'company_create': requireSuperAdmin(); if ($method !== 'POST') break; diff --git a/index.html b/index.html index 24eeebd..1c57c76 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Noxus HUB - + @@ -2229,6 +2229,6 @@ - + diff --git a/script.js b/script.js index e46f052..eb2c80c 100644 --- a/script.js +++ b/script.js @@ -1879,10 +1879,15 @@ async function showTicketDetail(id, companyId = '') { function updateSignaturePreview(mbId) { const sigPreview = document.getElementById('signature-preview'); const useSigCheck = document.getElementById('reply-use-signature'); - // Etsi allekirjoitus: ensin suoraan mailbox-id:llä, sitten fallback ensimmäiseen löytyvään - let sig = currentUserSignatures[mbId] || ''; + let sig = ''; + // Zammad-tiketti: hae allekirjoitus zammad:email -avaimella + if (mbId === 'zammad' && ticket.zammad_to_email) { + sig = currentUserSignatures['zammad:' + ticket.zammad_to_email] || ''; + } + if (!sig) { + sig = currentUserSignatures[mbId] || ''; + } if (!sig && mbId) { - // Kokeile myös string/number-konversiota sig = currentUserSignatures[String(mbId)] || currentUserSignatures[Number(mbId)] || ''; } if (!sig) { @@ -1897,7 +1902,9 @@ async function showTicketDetail(id, companyId = '') { sigPreview.style.display = 'none'; } } - updateSignaturePreview(ticket.mailbox_id || ''); + // Zammad-tiketeille käytä 'zammad' avaimena, muille mailbox_id + const initialSigKey = (ticket.source === 'zammad' && ticket.zammad_ticket_id) ? 'zammad' : (ticket.mailbox_id || ''); + updateSignaturePreview(initialSigKey); // Allekirjoitus-checkbox: päivitä esikatselu vaihdettaessa const useSigCheckbox = document.getElementById('reply-use-signature'); @@ -1993,8 +2000,15 @@ document.getElementById('btn-send-reply').addEventListener('click', async () => // Tarkista onko Zammad-tiketti const isZammadTicket = currentTicketData?.zammad_ticket_id; if (isZammadTicket && ticketReplyType !== 'note') { + // Liitä allekirjoitus Zammad-vastaukseen + 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] || ''; + if (zSig) zBody += '\n\n-- \n' + zSig; + } // Lähetä Zammad API:n kautta - await apiCall('zammad_reply' + ticketCompanyParam(), 'POST', { ticket_id: currentTicketId, body }); + await apiCall('zammad_reply' + ticketCompanyParam(), 'POST', { ticket_id: currentTicketId, body: zBody }); } else { const action = ticketReplyType === 'note' ? 'ticket_note' : 'ticket_reply'; const payload = { id: currentTicketId, body }; @@ -2379,7 +2393,7 @@ async function initTicketSettings() { } // Allekirjoitukset per postilaatikko - sigContainer.innerHTML = mailboxes.map(mb => + let sigHtml = mailboxes.map(mb => `
+
`; + }); + } + } catch (e) {} + sigContainer.innerHTML = sigHtml; + // Postilaatikoiden näkyvyys — checkbox per postilaatikko let visHtml = mailboxes.map(mb => { const isHidden = currentHiddenMailboxes.includes(String(mb.id)) || currentHiddenMailboxes.includes(mb.id);