Phase 5: Audit-Spur pro Quelle (ausklappbares Modal)
Backend
- routers/audit.py: GET /api/audit-log nimmt jetzt resource_id als Filter
(zusätzlich zu resource_type, action, admin_id, from_ts/to_ts).
Frontend
- dashboard.html: modalAudit (Modal) für die Audit-Spur einer Ressource.
- style.css: audit-entry Styles (action-Badge mit Farbcode pro Action-Typ,
Diff als <details>-Block mit JSON-Pre).
- sources.js:
- showSourceAudit(id, name) öffnet Modal, lädt /audit-log?resource_type=source&resource_id=...
- renderAuditEntries: pro Eintrag Action-Badge + Meta (ts/admin/ip) +
optional ausklappbarer Diff (before/after-JSON)
- formatDateTime Helper
- Audit-Button in der Aktionen-Spalte der Grundquellen-Tabelle
Dieser Commit ist enthalten in:
@@ -642,6 +642,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal: Audit-Spur einer Ressource (Phase 5) -->
|
||||
<div class="modal-overlay" id="modalAudit">
|
||||
<div class="modal modal-large">
|
||||
<div class="modal-header">
|
||||
<h3 id="auditTitle">Audit-Spur</h3>
|
||||
<button class="modal-close" onclick="closeModal('modalAudit')">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div id="auditContent" class="audit-content">Lade...</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal: Confirm -->
|
||||
<div class="modal-overlay" id="modalConfirm">
|
||||
<div class="modal" style="max-width: 400px;">
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren