mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Ahelp and Mhelp QOL (#24597)
* Bound ahelp/mhelp replies more tightly to their ticket. * Hardened PMs further against missing data. * Support expanding Discord notifications for ahelp/mhelp. Functionality changes: * Informs the user when their ticket is reopened. * Informs other mentors/admins when tickets are converted. * Discord messages now get a "Ticket 3, " or similar prefix. Not useful by itself, but will be with the following PR. Code changes: * When you create a ticket, you get the ticket object back. * checkForTicket now allows you to fetch a ticket by number, and falls back to searching for open tickets if the ticket isn't found. * Corrected and simplified the logic for adding PMs to tickets. * Responses are now added through the ticket system, not the tickets directly.
This commit is contained in:
@@ -110,8 +110,9 @@ SUBSYSTEM_DEF(tickets)
|
||||
to_chat(C.mob, "<span class='[span_class]'>Your [ticket_name] #[ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.</span>")
|
||||
var/url_message = makeUrlMessage(C, text, ticketNum)
|
||||
message_staff(url_message, NONE, TRUE)
|
||||
return T
|
||||
else
|
||||
newTicket(C, text, text)
|
||||
return newTicket(C, text, text)
|
||||
|
||||
/**
|
||||
* Will add the URLs usable by staff to the message and return it
|
||||
@@ -126,13 +127,13 @@ SUBSYSTEM_DEF(tickets)
|
||||
if(istype(target, /datum/ticket))
|
||||
var/datum/ticket/T = target
|
||||
M = get_mob_by_ckey(T.client_ckey)
|
||||
key_and_name = M ? key_name(M, TRUE, ticket_help_type) : "[T.client_ckey] (DC)/(DELETED)"
|
||||
key_and_name = M ? key_name(M, TRUE, ticket_help_type, ticket_id = T.ticketNum) : "[T.client_ckey] (DC)/(DELETED)"
|
||||
msg = T.title
|
||||
ticketNum = T.ticketNum
|
||||
else if(isclient(target))
|
||||
var/client/C = target
|
||||
M = C.mob
|
||||
key_and_name = key_name(M, TRUE, ticket_help_type)
|
||||
key_and_name = key_name(M, TRUE, ticket_help_type, ticket_id = ticketNum)
|
||||
|
||||
var/list/L = list()
|
||||
L += "<span class='[ticket_help_span]'>[ticket_help_type]: </span><span class='boldnotice'>[key_and_name] "
|
||||
@@ -165,12 +166,14 @@ SUBSYSTEM_DEF(tickets)
|
||||
SEND_SOUND(C, sound('sound/effects/adminticketopen.ogg'))
|
||||
|
||||
message_staff(url_title, NONE, TRUE)
|
||||
return T
|
||||
|
||||
//Set ticket state with key N to open
|
||||
/datum/controller/subsystem/tickets/proc/openTicket(N)
|
||||
var/datum/ticket/T = allTickets[N]
|
||||
if(T.ticketState != TICKET_OPEN)
|
||||
message_staff("<span class='[span_class]'>[usr.client] / ([usr]) re-opened [ticket_name] number [N]</span>")
|
||||
to_chat_safe(returnClient(N), "<span class='[span_class]'>Your [ticket_name] has been re-opened.</span>")
|
||||
T.ticketState = TICKET_OPEN
|
||||
return TRUE
|
||||
|
||||
@@ -183,6 +186,12 @@ SUBSYSTEM_DEF(tickets)
|
||||
to_chat_safe(returnClient(N), "<span class='[span_class]'>Your [ticket_name] has now been resolved.</span>")
|
||||
return TRUE
|
||||
|
||||
/datum/controller/subsystem/tickets/proc/addResponse(list/tickets, who, message)
|
||||
var/list/ticket_numbers = list()
|
||||
for(var/datum/ticket/T in tickets)
|
||||
ticket_numbers += T.ticketNum
|
||||
T.addResponse(who, message)
|
||||
|
||||
/datum/controller/subsystem/tickets/proc/convert_to_other_ticket(ticketId)
|
||||
if(!check_rights(rights_needed))
|
||||
return
|
||||
@@ -195,6 +204,7 @@ SUBSYSTEM_DEF(tickets)
|
||||
to_chat(usr, "<span class='warning'>This ticket has already been converted!</span>")
|
||||
return
|
||||
convert_ticket(T)
|
||||
message_staff("<span class='[span_class]'>[usr.client] / ([usr]) converted [ticket_name] number [ticketId]</span>")
|
||||
|
||||
/datum/controller/subsystem/tickets/proc/other_ticket_system_staff_check()
|
||||
var/list/staff = staff_countup(other_ticket_permission)
|
||||
@@ -301,7 +311,9 @@ SUBSYSTEM_DEF(tickets)
|
||||
return FALSE
|
||||
|
||||
//Check if the user has ANY ticket not resolved or closed.
|
||||
/datum/controller/subsystem/tickets/proc/checkForTicket(client/C)
|
||||
/datum/controller/subsystem/tickets/proc/checkForTicket(client/C, ticket_id = -1)
|
||||
if(ticket_id > 0 && ticket_id <= length(allTickets))
|
||||
return list(allTickets[ticket_id])
|
||||
var/list/tickets = list()
|
||||
for(var/datum/ticket/T in allTickets)
|
||||
if(T.client_ckey == C.ckey && (T.ticketState == TICKET_OPEN || T.ticketState == TICKET_STALE))
|
||||
|
||||
Reference in New Issue
Block a user