Zammad-asetukset API-välilehdelle, integraatio-checkboxit erilliseksi kortiksi, korjaa tyyppi puuttuu -virhe

- Integraatiot erillinen table-card yrityksen asetuksissa (vain superadmin)
- Zammad-konfiguraatio (URL, token, ryhmät, synkronointi) siirretty API-tabiin
- Saatavuus-API, Telegram ja Zammad kortit näkyvät API-tabissa kun integraatio on enabloitu
- Korjattu integration_save ja integration_test: puuttuva $input json_decode

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 20:00:36 +02:00
parent 648cb949ac
commit 4a46ce56f3
3 changed files with 61 additions and 43 deletions

View File

@@ -1535,6 +1535,32 @@
<button class="btn-secondary" id="btn-test-telegram">Testaa</button>
</div>
</div>
<!-- Zammad-asetukset -->
<div class="table-card" id="settings-zammad-card" style="padding:1.5rem;margin-top:1rem;display:none;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;border-bottom:2px solid #f0f2f5;padding-bottom:0.5rem;">📧 Zammad (O365-sähköposti)</h3>
<p style="color:#666;font-size:0.85rem;margin-bottom:1rem;">Synkronoi tiketit Zammad-helpdeskistä. Yhdistää O365-sähköpostit tikettijärjestelmään.</p>
<div class="form-grid" style="max-width:500px;">
<div class="form-group full-width">
<label>Zammad URL</label>
<input type="text" id="company-zammad-url" placeholder="https://desk.yritys.fi" style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>API Token</label>
<input type="password" id="company-zammad-token" placeholder="Token..." style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>Synkronoitavat ryhmät</label>
<div id="company-zammad-groups" style="color:#888;font-size:0.85rem;">Tallenna ensin, sitten valitse ryhmät.</div>
</div>
<div class="form-group full-width" style="display:flex;gap:0.5rem;flex-wrap:wrap;">
<button type="button" class="btn-secondary" id="btn-company-zammad-groups">Lataa ryhmät</button>
<button type="button" class="btn-secondary" id="btn-company-zammad-test">Testaa yhteys</button>
<button type="button" class="btn-primary" id="btn-company-zammad-sync" style="background:#28a745;">▶ Synkronoi</button>
</div>
</div>
<div id="company-zammad-result" style="margin-top:0.75rem;display:none;padding:0.75rem;border-radius:8px;font-size:0.85rem;"></div>
</div>
</div>
</div>
</div>
@@ -1640,46 +1666,6 @@
</label>
</div>
</div>
<!-- Integraatiot (vain superadmin) -->
<div id="company-integrations-section" style="margin-bottom:1.5rem;display:none;">
<h4 style="color:#0f3460;margin-bottom:0.5rem;font-size:0.95rem;">Integraatiot</h4>
<p style="color:#888;font-size:0.82rem;margin-bottom:0.75rem;">Ota käyttöön ulkoiset integraatiot tälle yritykselle.</p>
<div id="integrations-checkboxes" style="display:flex;flex-direction:column;gap:0.4rem;">
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="zammad"> 📧 Zammad (O365-sähköposti)
</label>
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="saatavuus_api"> 🌐 Saatavuus-API
</label>
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="telegram"> 🤖 Telegram-hälytykset
</label>
</div>
</div>
<!-- Zammad-asetukset (näkyy kun Zammad on valittu) -->
<div id="company-zammad-config" style="display:none;margin-bottom:1.5rem;padding:1rem;background:#f8f9fb;border-radius:10px;border-left:3px solid var(--primary-color);">
<h4 style="color:#0f3460;margin-bottom:0.5rem;font-size:0.95rem;">📧 Zammad-asetukset</h4>
<div class="form-grid" style="max-width:500px;">
<div class="form-group full-width">
<label>Zammad URL</label>
<input type="text" id="company-zammad-url" placeholder="https://desk.yritys.fi" style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>API Token</label>
<input type="password" id="company-zammad-token" placeholder="Token..." style="font-family:monospace;">
</div>
<div class="form-group full-width">
<label>Synkronoitavat ryhmät</label>
<div id="company-zammad-groups" style="color:#888;font-size:0.85rem;">Tallenna ensin, sitten valitse ryhmät.</div>
</div>
<div class="form-group full-width" style="display:flex;gap:0.5rem;flex-wrap:wrap;">
<button type="button" class="btn-secondary" id="btn-company-zammad-groups">Lataa ryhmät</button>
<button type="button" class="btn-secondary" id="btn-company-zammad-test">Testaa yhteys</button>
<button type="button" class="btn-primary" id="btn-company-zammad-sync" style="background:#28a745;">▶ Synkronoi</button>
</div>
</div>
<div id="company-zammad-result" style="margin-top:0.75rem;display:none;padding:0.75rem;border-radius:8px;font-size:0.85rem;"></div>
</div>
<div id="company-allowed-ips-section" class="form-group" style="margin-top:1rem;display:none;">
<label style="font-weight:600;font-size:0.9rem;">Sallitut IP-osoitteet</label>
<textarea id="company-edit-allowed-ips" rows="3" style="font-family:monospace;font-size:0.85rem;" placeholder="192.168.1.100&#10;10.0.0.0/8"></textarea>
@@ -1687,6 +1673,22 @@
</div>
<button class="btn-primary" id="btn-save-company-settings" style="font-size:0.85rem;">Tallenna asetukset</button>
</div>
<!-- Integraatiot (vain superadmin) -->
<div id="company-integrations-section" class="table-card" style="padding:1.5rem;margin-top:1rem;display:none;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;border-bottom:2px solid #f0f2f5;padding-bottom:0.5rem;">Integraatiot</h3>
<p style="color:#888;font-size:0.85rem;margin-bottom:1rem;">Ota käyttöön ulkoiset integraatiot tälle yritykselle.</p>
<div id="integrations-checkboxes" style="display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem;">
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="zammad"> 📧 Zammad (O365-sähköposti)
</label>
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="saatavuus_api"> 🌐 Saatavuus-API
</label>
<label style="display:flex;align-items:center;gap:0.5rem;font-size:0.9rem;cursor:pointer;">
<input type="checkbox" data-integration="telegram"> 🤖 Telegram-hälytykset
</label>
</div>
</div>
<!-- Postilaatikot -->
<div class="table-card" style="padding:1.5rem;margin-top:1rem;">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;">