diff --git a/public/css/style.css b/public/css/style.css index 0b39076..46453eb 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1929,4 +1929,58 @@ body { .retrodate-btn-action.cancel { color: var(--error); +} + +/* HTML switch & attachments styles */ +.article-header-wrapper { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-md); +} + +.html-toggle-container { + display: flex; + align-items: center; + gap: var(--space-xs); + font-size: 0.82rem; + color: var(--text-secondary); +} + +.html-toggle-input { + cursor: pointer; +} + +.article-attachments { + margin-top: var(--space-md); + padding-top: var(--space-sm); + border-top: 1px dashed var(--border-subtle); + display: flex; + flex-wrap: wrap; + gap: var(--space-sm); +} + +.attachment-badge { + display: inline-flex; + align-items: center; + gap: var(--space-xs); + background: var(--bg-secondary); + border: 1px solid var(--border-light); + border-radius: var(--radius-md); + padding: 4px 10px; + font-size: 0.78rem; + color: var(--text-primary); + text-decoration: none; + transition: all var(--transition-fast); +} + +.attachment-badge:hover { + background: var(--bg-card-hover); + border-color: var(--accent-primary); + color: var(--accent-primary-hover); +} + +.attachment-size { + color: var(--text-muted); + font-size: 0.72rem; } \ No newline at end of file diff --git a/public/js/views/ticketDetail.js b/public/js/views/ticketDetail.js index 415d761..f1d3f3f 100644 --- a/public/js/views/ticketDetail.js +++ b/public/js/views/ticketDetail.js @@ -4,17 +4,19 @@ */ const TicketDetailView = { ticketId: null, + htmlMode: false, originalValues: {}, async render(id) { this.ticketId = id; + this.htmlMode = localStorage.getItem('otrs_turbo_html_mode') === 'true'; const container = document.getElementById('view-container'); container.innerHTML = '

Caricamento ticket...

'; try { await App.ensureLookups(); const data = await App.api(`/api/tickets/${id}`); - const { ticket, articles } = data; + const { ticket, articles, attachments } = data; const localISO = (dateStr) => { if (!dateStr) return ''; const d = new Date(dateStr); @@ -130,37 +132,64 @@ const TicketDetailView = {
-
Articoli & Note (${articles.length})
+
+
Articoli & Note (${articles.length})
+ +
- ${articles.length > 0 ? articles.map(a => ` -
-
-
- ${a.sender_type || 'System'} - ID: ${a.article_id} - ${App.escapeHtml(a.a_from || a.creator_first + ' ' + a.creator_last || 'Sistema')} - ${a.channel_name ? `via ${a.channel_name}` : ''} -
-
- ${a.time_unit ? `⏱ ${parseFloat(a.time_unit)} min` : ''} - -
- ${App.formatDateTime(a.create_time)} - -