style: aggiunte iconcine per copia numero ticket e titolo nella pagina di riepilogo del ticket e copia titolo nella pagina ticket/a mio carico. style: rimosso link apri in otrs sul titolo dell'header di un ticket
This commit is contained in:
@@ -13,7 +13,7 @@ const TicketDetailView = {
|
||||
const body = this.noteQuill ? this.noteQuill.root.innerHTML.trim() : '';
|
||||
const subject = document.getElementById('note-subject') ? document.getElementById('note-subject').value.trim() : '';
|
||||
const time_unit = document.getElementById('note-time-units') ? document.getElementById('note-time-units').value.trim() : '';
|
||||
|
||||
|
||||
if ((body !== '<p><br></p>' && body !== '') || subject !== '' || time_unit !== '' || this.noteAttachments.length > 0) {
|
||||
App.saveDraft(this.ticketId, {
|
||||
type: 'note',
|
||||
@@ -96,7 +96,7 @@ const TicketDetailView = {
|
||||
const data = await App.api(`/api/tickets/${id}`);
|
||||
const { ticket, articles, attachments } = data;
|
||||
// No automatic tab creation here anymore
|
||||
|
||||
|
||||
let groupsData = { asMaster: [], asMember: [] };
|
||||
try {
|
||||
groupsData = await App.api(`/api/groups/by-ticket/${id}`);
|
||||
@@ -153,13 +153,14 @@ const TicketDetailView = {
|
||||
<div class="card">
|
||||
<div class="ticket-header">
|
||||
<div class="ticket-header-info">
|
||||
<div class="ticket-number">#${ticket.tn}</div>
|
||||
<h2 class="ticket-detail-title">
|
||||
${data.otrsWebUrl ? `
|
||||
<a href="${data.otrsWebUrl}" target="_blank" style="color:inherit; text-decoration:none; border-bottom:1px dashed transparent; transition:border-bottom 0.1s ease;" onmouseover="this.style.borderBottom='1px dashed var(--text-primary)'" onmouseout="this.style.borderBottom='transparent'" title="Apri in OTRS">
|
||||
${App.escapeHtml(ticket.title || '(senza titolo)')}
|
||||
</a>
|
||||
` : App.escapeHtml(ticket.title || '(senza titolo)')}
|
||||
<div class="ticket-number" style="display:inline-flex; align-items:center; gap:6px;">
|
||||
<span class="copy-ticket-btn" data-tn="${ticket.tn}" style="cursor: pointer; font-size: 0.85rem;" title="Copia numero ticket">📋</span>
|
||||
#${ticket.tn}
|
||||
-
|
||||
</div>
|
||||
<h2 class="ticket-detail-title" style="display:inline-flex; align-items:center; gap:6px; flex-wrap:wrap;">
|
||||
<span class="copy-ticket-btn" data-tn="${App.escapeHtml(ticket.title || '')}" style="cursor: pointer; font-size: 0.85rem;" title="Copia titolo ticket">📋</span>
|
||||
${App.escapeHtml(ticket.title || '(senza titolo)')}
|
||||
</h2>
|
||||
<div class="ticket-meta-badges">
|
||||
<span class="badge badge-state" data-state-type="${(ticket.state_type || '').toLowerCase()}">${ticket.state_name}</span>
|
||||
@@ -287,7 +288,7 @@ const TicketDetailView = {
|
||||
<div class="articles-timeline">
|
||||
${articles.length > 0 ? articles.map(a => {
|
||||
const hasHtml = (a.a_content_type || '').toLowerCase().includes('html') || a.a_body.includes('</') || a.a_body.includes('/>');
|
||||
|
||||
|
||||
let processedBody = a.a_body || '';
|
||||
const articleAttachments = (attachments || []).filter(att => att.article_id === a.article_id);
|
||||
|
||||
@@ -521,7 +522,7 @@ const TicketDetailView = {
|
||||
modules: {
|
||||
toolbar: [
|
||||
['bold', 'italic', 'underline', 'strike'],
|
||||
[{ 'list': 'ordered'}, { 'list': 'bullet' }],
|
||||
[{ 'list': 'ordered' }, { 'list': 'bullet' }],
|
||||
['link', 'image'],
|
||||
['clean']
|
||||
],
|
||||
@@ -529,7 +530,7 @@ const TicketDetailView = {
|
||||
bindings: {
|
||||
tab: {
|
||||
key: 'Tab',
|
||||
handler: function() {
|
||||
handler: function () {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -939,7 +940,7 @@ const TicketDetailView = {
|
||||
|
||||
if (window.EmailCompose) {
|
||||
const hasHtml = (article.a_content_type || '').toLowerCase().includes('html') || article.a_body.includes('</') || article.a_body.includes('/>');
|
||||
|
||||
|
||||
let processedQuoted = article.a_body || '';
|
||||
if (hasHtml) {
|
||||
const articleAttachments = (attachments || []).filter(att => att.article_id === article.article_id);
|
||||
@@ -961,7 +962,7 @@ const TicketDetailView = {
|
||||
}
|
||||
|
||||
const quotedBody = hasHtml ? processedQuoted : App.escapeHtml(article.a_body || '').replace(/\n/g, '<br>');
|
||||
|
||||
|
||||
const initialBodyHtml = `
|
||||
<p><br></p>
|
||||
<p>Il ${App.formatDateTime(article.create_time)}, <strong>${App.escapeHtml(article.a_from || 'Sistema')}</strong> ha scritto:</p>
|
||||
@@ -1292,7 +1293,7 @@ const TicketDetailView = {
|
||||
if (doc && doc.readyState === 'complete') {
|
||||
attachImageClick();
|
||||
}
|
||||
} catch (_) {}
|
||||
} catch (_) { }
|
||||
});
|
||||
|
||||
document.querySelectorAll('.attachment-badge[data-is-image="true"]').forEach(badge => {
|
||||
@@ -1302,5 +1303,19 @@ const TicketDetailView = {
|
||||
this.openImageLightbox(badge.href);
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('.copy-ticket-btn').forEach(btn => {
|
||||
btn.addEventListener('click', (e) => {
|
||||
e.stopPropagation();
|
||||
const tn = btn.dataset.tn;
|
||||
if (tn) {
|
||||
navigator.clipboard.writeText(tn).then(() => {
|
||||
Toast.success('Copiato negli appunti!');
|
||||
}).catch(err => {
|
||||
Toast.error('Errore durante la copia: ' + err.message);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user