Skip to content

Commit 9fa982b

Browse files
authored
Merge pull request #367 from Rustmail/325-add-an-option-to-download-ticket-logs
feat(panel): add an option to download ticket logs
2 parents ca3a778 + f41d14a commit 9fa982b

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

crates/rustmail_panel/src/components/ticket.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,29 @@ pub fn ticket_details(props: &TicketDetailsProps) -> Html {
635635
}
636636
}
637637
</div>
638+
<div>
639+
<a
640+
href={
641+
let mut content = format!("Ticket #{}\nUser: {}\nCategory: {}\n\n", ticket.id, ticket.user_name, ticket.category_name.as_deref().unwrap_or("Unknown"));
642+
for msg in &ticket.messages {
643+
let prefix = match msg.message_type() {
644+
MessageType::User => "[User]",
645+
MessageType::Staff => "[Staff]",
646+
MessageType::System => "[System]",
647+
MessageType::Internal => "[Internal]",
648+
};
649+
content.push_str(&format!("{} {} ({}):\n{}\n\n", prefix, msg.user_name, msg.created_at, msg.content));
650+
}
651+
let encoded_content = urlencoding::encode(&content);
652+
format!("data:text/plain;charset=utf-8,{}", encoded_content)
653+
}
654+
download={format!("ticket-{}.txt", ticket.id)}
655+
class="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white text-sm rounded-lg inline-flex items-center justify-center gap-2 transition"
656+
>
657+
<i class="bi bi-download"></i>
658+
{i18n.t("panel.tickets.download")}
659+
</a>
660+
</div>
638661
</div>
639662

640663
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 text-sm">

crates/rustmail_panel/src/i18n/en/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@
196196
"unknown_date": "Unknown date",
197197
"loading_ticket": "Loading ticket...",
198198
"ticket_not_found": "Ticket not found.",
199+
"download": "Download ticket",
199200
"filters": "Message filters",
200201
"filter_user": "Users",
201202
"filter_staff": "Staff",

crates/rustmail_panel/src/i18n/fr/fr.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@
197197
"unknown_date": "Date inconnue",
198198
"loading_ticket": "Chargement du ticket...",
199199
"ticket_not_found": "Ticket introuvable.",
200+
"download": "Télécharger le ticket",
200201
"filters": "Filtres des messages",
201202
"filter_user": "Utilisateurs",
202203
"filter_staff": "Staff",

0 commit comments

Comments
 (0)