Update app.js
Browse files
app.js
CHANGED
|
@@ -532,6 +532,33 @@ function buildChannelList() {
|
|
| 532 |
list.appendChild(div);
|
| 533 |
}
|
| 534 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 535 |
// Voice Channels
|
| 536 |
const vcCat=document.createElement('div');
|
| 537 |
vcCat.className='channel-category';
|
|
|
|
| 532 |
list.appendChild(div);
|
| 533 |
}
|
| 534 |
}
|
| 535 |
+
// βββ Ticket-Button in Sidebar βββ
|
| 536 |
+
const ticketCat = document.createElement('div');
|
| 537 |
+
ticketCat.className = 'channel-category';
|
| 538 |
+
ticketCat.textContent = 'β Support';
|
| 539 |
+
list.appendChild(ticketCat);
|
| 540 |
+
|
| 541 |
+
const myOpenTickets = Object.values(DB.tickets||{}).filter(t=>
|
| 542 |
+
(t.author===currentUser.username || hasRole('mod')) && t.status==='open'
|
| 543 |
+
).length;
|
| 544 |
+
|
| 545 |
+
const ticketBtn = document.createElement('div');
|
| 546 |
+
ticketBtn.className = 'channel-item ticket-sidebar-btn';
|
| 547 |
+
ticketBtn.innerHTML = `
|
| 548 |
+
<span class="channel-icon">π«</span>
|
| 549 |
+
<span class="channel-name">tickets</span>
|
| 550 |
+
${myOpenTickets>0 ? `<span class="unread-badge" style="background:var(--purple)">${myOpenTickets}</span>` : ''}
|
| 551 |
+
`;
|
| 552 |
+
ticketBtn.onclick = () => openTicketMenu();
|
| 553 |
+
list.appendChild(ticketBtn);
|
| 554 |
+
|
| 555 |
+
const newTicketBtn = document.createElement('div');
|
| 556 |
+
newTicketBtn.className = 'channel-item';
|
| 557 |
+
newTicketBtn.style.cssText = 'opacity:.75';
|
| 558 |
+
newTicketBtn.innerHTML = `<span class="channel-icon">β</span><span class="channel-name">neues ticket</span>`;
|
| 559 |
+
newTicketBtn.onclick = () => openCreateTicket();
|
| 560 |
+
list.appendChild(newTicketBtn);
|
| 561 |
+
|
| 562 |
// Voice Channels
|
| 563 |
const vcCat=document.createElement('div');
|
| 564 |
vcCat.className='channel-category';
|