mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-17 10:05:27 +01:00
up ports a bunch of TGS commands (#17961)
* up ports a bunch of TGS commands * . * needing this * ... * Update datacore.dm * fix that * at least stack that * rework all user name handling * urg * urg * . * . * . * up port this * make this clearer * . * . * . * fix that * . * add returns * player ticket chat * this * . * . * umm * adjust messages * clean smitecode up * . * ummm * . * command filter
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
to_chat(src, span_warning("Ticket not found, creating new one..."))
|
||||
else
|
||||
current_ticket.AddInteraction("[usr.ckey] opened a new ticket.")
|
||||
current_ticket.Resolve()
|
||||
current_ticket.Resolve(usr)
|
||||
|
||||
new /datum/ticket(msg, src, FALSE, 0)
|
||||
|
||||
@@ -116,7 +116,7 @@ ADMIN_VERB(cmd_mentor_ticket_panel, (R_ADMIN|R_SERVER|R_MOD|R_MENTOR), "Mentor T
|
||||
to_chat(src, span_warning("Ticket not found, creating new one..."))
|
||||
else if(current_ticket)
|
||||
current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.")
|
||||
current_ticket.Close()
|
||||
current_ticket.Close(usr)
|
||||
|
||||
new /datum/ticket(msg, src, FALSE, 1)
|
||||
|
||||
|
||||
@@ -162,14 +162,14 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(C.current_ticket)
|
||||
C.current_ticket.AddInteraction("Client reconnected.")
|
||||
C.current_ticket.initiator = C
|
||||
// C.current_ticket.initiator.mob.throw_alert("open ticket", /obj/screen/alert/open_ticket) // Uncomment this line to enable player-side ticket ui
|
||||
C.current_ticket.initiator.mob.throw_alert("open ticket", /obj/screen/alert/open_ticket)
|
||||
|
||||
//Dissasociate ticket
|
||||
/datum/tickets/proc/ClientLogout(client/C)
|
||||
if(C.current_ticket)
|
||||
var/datum/ticket/T = C.current_ticket
|
||||
T.AddInteraction("Client disconnected.")
|
||||
// T.initiator.mob.clear_alert("open ticket") // Uncomment this line to enable player-side ticket ui
|
||||
T.initiator.mob.clear_alert("open ticket")
|
||||
T.initiator = null
|
||||
T = null
|
||||
|
||||
@@ -227,6 +227,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
var/closed_at
|
||||
|
||||
var/client/initiator //semi-misnomer, it's the person who ahelped/was bwoinked
|
||||
var/datum/weakref/handler_ref
|
||||
var/handler = "/Unassigned\\" // The admin handling the ticket
|
||||
var/initiator_ckey
|
||||
var/initiator_key_name
|
||||
@@ -287,7 +288,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
if(initiator.current_ticket) //This is a bug
|
||||
log_debug("Multiple ahelp current_tickets")
|
||||
initiator.current_ticket.AddInteraction("Ticket erroneously left open by code")
|
||||
initiator.current_ticket.Close()
|
||||
initiator.current_ticket.Close(usr)
|
||||
initiator.current_ticket = src
|
||||
|
||||
var/parsed_message = keywords_lookup(msg)
|
||||
@@ -340,12 +341,13 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
//TC.T = src
|
||||
//TC.tgui_interact(C.mob)
|
||||
|
||||
// C.mob.throw_alert("open ticket", /obj/screen/alert/open_ticket) // Uncomment this line to enable player-side ticket ui
|
||||
C.mob.throw_alert("open ticket", /obj/screen/alert/open_ticket)
|
||||
|
||||
/datum/ticket/Destroy()
|
||||
RemoveActive()
|
||||
GLOB.tickets.closed_tickets -= src
|
||||
GLOB.tickets.resolved_tickets -= src
|
||||
handler_ref = null
|
||||
return ..()
|
||||
|
||||
/datum/ticket/proc/AddInteraction(formatted_message)
|
||||
@@ -440,7 +442,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
*/
|
||||
|
||||
//Reopen a closed ticket
|
||||
/datum/ticket/proc/Reopen()
|
||||
/datum/ticket/proc/Reopen(user)
|
||||
if(state == AHELP_ACTIVE)
|
||||
to_chat(usr, span_warning("This ticket is already open."))
|
||||
return
|
||||
@@ -463,20 +465,22 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
if(initiator)
|
||||
initiator.current_ticket = src
|
||||
|
||||
AddInteraction(span_purple("Reopened by [key_name_admin(usr)]"))
|
||||
var/admin_reopener_name = ismob(user) ? key_name_admin(user) : user
|
||||
AddInteraction(span_purple("Reopened by [admin_reopener_name]"))
|
||||
if(initiator)
|
||||
to_chat(initiator, span_filter_adminlog("[span_purple("Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)].")
|
||||
to_chat(initiator, span_filter_adminlog("[span_purple("Ticket [TicketHref("#[id]")] was reopened by [ismob(user) ? key_name(usr,FALSE,FALSE) : user].")]"))
|
||||
var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [admin_reopener_name].")
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
feedback_inc("ticket_reopen")
|
||||
initiator.mob.throw_alert("open ticket", /obj/screen/alert/open_ticket)
|
||||
//TicketPanel() //can only be done from here, so refresh it
|
||||
|
||||
SSwebhooks.send(
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) reopened.",
|
||||
"body" = "Reopened by [key_name(usr)]."
|
||||
"body" = "Reopened by [ismob(user) ? key_name(user) : user]."
|
||||
)
|
||||
)
|
||||
|
||||
@@ -491,44 +495,46 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
initiator.current_ticket = null
|
||||
|
||||
//Mark open ticket as closed/meme
|
||||
/datum/ticket/proc/Close(silent = FALSE)
|
||||
/datum/ticket/proc/Close(user, silent = FALSE)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
RemoveActive()
|
||||
state = AHELP_CLOSED
|
||||
GLOB.tickets.ListInsert(src)
|
||||
AddInteraction(span_filter_adminlog(span_red("Closed by [key_name_admin(usr)].")))
|
||||
var/admin_closer_name = ismob(user) ? key_name_admin(user) : user
|
||||
AddInteraction(span_filter_adminlog(span_red("Closed by [admin_closer_name].")))
|
||||
if(initiator)
|
||||
to_chat(initiator, span_filter_adminlog("[span_red("Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
to_chat(initiator, span_filter_adminlog("[span_red("Ticket [TicketHref("#[id]")] was closed by [ismob(user) ? key_name(usr,FALSE,FALSE) : user].")]"))
|
||||
if(!silent)
|
||||
feedback_inc("ahelp_close")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name_admin(usr)]."
|
||||
var/msg = "Ticket [TicketHref("#[id]")] closed by [admin_closer_name]."
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
SSwebhooks.send(
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) closed.",
|
||||
"body" = "Closed by [key_name(usr)].",
|
||||
"body" = "Closed by [ismob(user) ? key_name(user) : user].",
|
||||
"color" = COLOR_WEBHOOK_BAD
|
||||
)
|
||||
)
|
||||
// initiator?.mob?.clear_alert("open ticket") // Uncomment this line to enable player-side ticket ui
|
||||
initiator?.mob?.clear_alert("open ticket")
|
||||
|
||||
//Mark open ticket as resolved/legitimate, returns ahelp verb
|
||||
/datum/ticket/proc/Resolve(silent = FALSE)
|
||||
/datum/ticket/proc/Resolve(user, silent = FALSE)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
RemoveActive()
|
||||
state = AHELP_RESOLVED
|
||||
GLOB.tickets.ListInsert(src)
|
||||
|
||||
AddInteraction(span_filter_adminlog(span_green("Resolved by [key_name_admin(usr)].")))
|
||||
var/admin_resolver_name = ismob(user) ? key_name_admin(user) : user
|
||||
AddInteraction(span_filter_adminlog(span_green("Resolved by [admin_resolver_name].")))
|
||||
if(initiator)
|
||||
to_chat(initiator, span_filter_adminlog("[span_green("Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
to_chat(initiator, span_filter_adminlog("[span_green("Ticket [TicketHref("#[id]")] was marked resolved by [ismob(user) ? key_name(usr,FALSE,FALSE) : user].")]"))
|
||||
if(!silent)
|
||||
feedback_inc("ticket_resolve")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name_admin(usr)]"
|
||||
var/msg = "Ticket [TicketHref("#[id]")] resolved by [admin_resolver_name]"
|
||||
if(type == 1)
|
||||
message_mentors(msg)
|
||||
else if (type == 0)
|
||||
@@ -540,14 +546,14 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) resolved.",
|
||||
"body" = "Marked as Resolved by [key_name(usr)].",
|
||||
"body" = "Marked as Resolved by [ismob(user) ? key_name(user) : user].",
|
||||
"color" = COLOR_WEBHOOK_GOOD
|
||||
)
|
||||
)
|
||||
// initiator?.mob?.clear_alert("open ticket") // Uncomment this line to enable player-side ticket ui
|
||||
initiator?.mob?.clear_alert("open ticket")
|
||||
|
||||
//Close and return ahelp verb, use if ticket is incoherent
|
||||
/datum/ticket/proc/Reject(key_name = key_name_admin(usr))
|
||||
/datum/ticket/proc/Reject(mob/user)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
@@ -559,23 +565,24 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
[span_red(span_bold("Your admin help was rejected."))]<br>\
|
||||
Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting."))
|
||||
|
||||
var/admin_rejecter_name = ismob(user) ? key_name_admin(user) : user
|
||||
feedback_inc("ahelp_reject")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name_admin(usr)]"
|
||||
var/msg = "Ticket [TicketHref("#[id]")] rejected by [admin_rejecter_name]"
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
AddInteraction("Rejected by [key_name_admin(usr)].")
|
||||
Close(silent = TRUE)
|
||||
AddInteraction("Rejected by [admin_rejecter_name].")
|
||||
Close(user, silent = TRUE)
|
||||
SSwebhooks.send(
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) rejected.",
|
||||
"body" = "Rejected by [key_name(usr)].",
|
||||
"body" = "Rejected by [ismob(user) ? key_name(user) : user].",
|
||||
"color" = COLOR_WEBHOOK_BAD
|
||||
)
|
||||
)
|
||||
|
||||
//Resolve ticket with IC Issue message
|
||||
/datum/ticket/proc/ICIssue(key_name = key_name_admin(usr))
|
||||
/datum/ticket/proc/ICIssue(user)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
@@ -586,51 +593,57 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
if(initiator)
|
||||
to_chat(initiator, span_filter_pm(msg))
|
||||
|
||||
var/admin_resolve_name = ismob(user) ? key_name_admin(user) : user
|
||||
feedback_inc("ahelp_icissue")
|
||||
msg = "Ticket [TicketHref("#[id]")] marked as IC by [key_name_admin(usr)]"
|
||||
msg = "Ticket [TicketHref("#[id]")] marked as IC by [admin_resolve_name]"
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
AddInteraction("Marked as IC issue by [key_name_admin(usr)]")
|
||||
Resolve(silent = TRUE)
|
||||
AddInteraction("Marked as IC issue by [admin_resolve_name]")
|
||||
Resolve(user, silent = TRUE)
|
||||
SSwebhooks.send(
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) marked as IC issue.",
|
||||
"body" = "Marked as IC Issue by [key_name(usr)].",
|
||||
"body" = "Marked as IC Issue by [ismob(user) ? key_name(user) : user].",
|
||||
"color" = COLOR_WEBHOOK_BAD
|
||||
)
|
||||
)
|
||||
|
||||
//Resolve ticket with IC Issue message
|
||||
/datum/ticket/proc/HandleIssue()
|
||||
//Handle ticket
|
||||
/datum/ticket/proc/HandleIssue(user)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
if(handler == key_name(usr, FALSE, TRUE))
|
||||
to_chat(usr, span_red("You are already handling this ticket."))
|
||||
var/handler_name = ismob(user) ? key_name(user, FALSE, TRUE) : user
|
||||
if(handler == handler_name)
|
||||
to_chat(user, span_red("You are already handling this ticket."))
|
||||
return
|
||||
|
||||
var/handler_shown_name = ismob(user) ? key_name_admin(user) : user
|
||||
var/msg
|
||||
switch(level)
|
||||
if(0)
|
||||
msg = span_green("Your MentorHelp is being handled by [key_name(usr,FALSE,FALSE)] please be patient.")
|
||||
msg = span_green("Your MentorHelp is being handled by [handler_shown_name] please be patient.")
|
||||
if(1)
|
||||
msg = span_red("Your AdminHelp is being handled by [key_name(usr,FALSE,FALSE)] please be patient.")
|
||||
msg = span_red("Your AdminHelp is being handled by [handler_shown_name] please be patient.")
|
||||
|
||||
if(initiator)
|
||||
to_chat(initiator, msg)
|
||||
|
||||
feedback_inc("ahelp_handling")
|
||||
msg = "Ticket [TicketHref("#[id]")] being handled by [key_name(usr,FALSE,FALSE)]"
|
||||
msg = "Ticket [TicketHref("#[id]")] being handled by [handler_shown_name]"
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
AddInteraction("[key_name_admin(usr)] is now handling this ticket.")
|
||||
handler = key_name(usr, FALSE, TRUE)
|
||||
AddInteraction("[handler_shown_name] is now handling this ticket.")
|
||||
handler = handler_name
|
||||
if(ismob(user))
|
||||
var/mob/our_handler_mob = user
|
||||
handler_ref = WEAKREF(our_handler_mob.client)
|
||||
SSwebhooks.send(
|
||||
WEBHOOK_AHELP_SENT,
|
||||
list(
|
||||
"name" = "Ticket ([id]) (Round ID: [GLOB.round_id ? GLOB.round_id : "No database"]) being handled.",
|
||||
"body" = "[key_name(usr)] is now handling the ticket."
|
||||
"body" = "[ismob(user) ? key_name(user) : user] is now handling the ticket."
|
||||
)
|
||||
)
|
||||
|
||||
@@ -681,7 +694,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
if("retitle")
|
||||
Retitle()
|
||||
if("reject")
|
||||
Reject()
|
||||
Reject(usr)
|
||||
if("reply")
|
||||
switch(level)
|
||||
if(0)
|
||||
@@ -689,15 +702,15 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
|
||||
if(1)
|
||||
usr.client.cmd_ahelp_reply(initiator)
|
||||
if("icissue")
|
||||
ICIssue()
|
||||
ICIssue(usr)
|
||||
if("close")
|
||||
Close()
|
||||
Close(usr)
|
||||
if("resolve")
|
||||
Resolve()
|
||||
Resolve(usr)
|
||||
if("handleissue")
|
||||
HandleIssue()
|
||||
HandleIssue(usr)
|
||||
if("reopen")
|
||||
Reopen()
|
||||
Reopen(usr)
|
||||
if("escalate")
|
||||
Escalate()
|
||||
|
||||
|
||||
@@ -6,22 +6,19 @@
|
||||
var/datum/ticket/T
|
||||
|
||||
/datum/ticket_chat/tgui_interact(mob/user, datum/tgui/ui)
|
||||
return // Remove this line to enable player-side ticket ui
|
||||
//ui = SStgui.try_update_ui(user, src, ui)
|
||||
//if(!ui)
|
||||
// ui = new(user, src, "TicketChat", "Ticket #[T.id] - [T.LinkedReplyName("\ref[T]")]")
|
||||
// ui.open()
|
||||
// user.clear_alert("open ticket")
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "TicketChat", "Ticket #[T.id] - [T.LinkedReplyName("\ref[T]")]")
|
||||
ui.open()
|
||||
user.clear_alert("open ticket")
|
||||
|
||||
/datum/ticket_chat/tgui_close(mob/user)
|
||||
. = ..()
|
||||
return // Remove this line to enable player-side ticket ui
|
||||
//if(user.client.current_ticket)
|
||||
// user.throw_alert("open ticket", /obj/screen/alert/open_ticket)
|
||||
if(user.client.current_ticket)
|
||||
user.throw_alert("open ticket", /obj/screen/alert/open_ticket)
|
||||
|
||||
/datum/ticket_chat/tgui_state(mob/user)
|
||||
return ADMIN_STATE(R_ADMIN|R_EVENT|R_DEBUG) // Remove this line to enable player-side ticket ui
|
||||
//return GLOB.tgui_ticket_state
|
||||
return GLOB.tgui_ticket_state
|
||||
|
||||
/datum/ticket_chat/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
@@ -29,9 +26,9 @@
|
||||
data["id"] = T.id
|
||||
|
||||
data["level"] = T.level
|
||||
// data["handler"] = T.handler // Uncomment this line to enable player-side ticket ui
|
||||
data["handler"] = T.handler
|
||||
|
||||
// data["log"] = T._interactions // Uncomment this line to enable player-side ticket ui
|
||||
data["log"] = T._interactions
|
||||
|
||||
return data
|
||||
|
||||
@@ -43,10 +40,27 @@
|
||||
if(!params["msg"])
|
||||
return
|
||||
|
||||
var/sane_message = sanitize(params["msg"])
|
||||
switch(T.level)
|
||||
if (0)
|
||||
ui.user.client.cmd_mentor_pm(ui.user.client, sanitize(params["msg"]), T)
|
||||
if(T.initiator == ui.user.client)
|
||||
var/client/handler = T.handler_ref?.resolve()
|
||||
if(handler)
|
||||
ui.user.client.cmd_mentor_pm(handler, sane_message, T)
|
||||
return TRUE
|
||||
T.AddInteraction("[T.initiator_key_name]: [sane_message]")
|
||||
return TRUE
|
||||
ui.user.client.cmd_mentor_pm(T.initiator, sane_message, T)
|
||||
return TRUE
|
||||
if (1)
|
||||
ui.user.client.cmd_admin_pm(ui.user.client, sanitize(params["msg"]), T)
|
||||
if(T.initiator == ui.user.client)
|
||||
var/client/handler = T.handler_ref?.resolve()
|
||||
if(handler)
|
||||
ui.user.client.cmd_admin_pm(handler, sane_message, T)
|
||||
return TRUE
|
||||
T.AddInteraction("[key_name_admin(ui.user)]: [sane_message]")
|
||||
return TRUE
|
||||
ui.user.client.cmd_admin_pm(T.initiator, sane_message, T)
|
||||
return TRUE
|
||||
|
||||
. = TRUE
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
"state" = get_ticket_state(T.state),
|
||||
"level" = T.level,
|
||||
"handler" = T.handler,
|
||||
"ishandled" = !!T.handler_ref?.resolve(),
|
||||
"opened_at" = (world.time - T.opened_at),
|
||||
"closed_at" = (world.time - T.closed_at),
|
||||
"opened_at_date" = gameTimestamp(wtime = T.opened_at),
|
||||
@@ -71,6 +72,7 @@
|
||||
"state" = get_ticket_state(T.state),
|
||||
"level" = T.level,
|
||||
"handler" = T.handler,
|
||||
"ishandled" = !!T.handler_ref?.resolve(),
|
||||
"opened_at" = (world.time - T.opened_at),
|
||||
"closed_at" = (world.time - T.closed_at),
|
||||
"opened_at_date" = gameTimestamp(wtime = T.opened_at),
|
||||
@@ -85,6 +87,7 @@
|
||||
"state" = get_ticket_state(T.state),
|
||||
"level" = T.level,
|
||||
"handler" = T.handler,
|
||||
"ishandled" = !!T.handler_ref?.resolve(),
|
||||
"opened_at" = (world.time - T.opened_at),
|
||||
"closed_at" = (world.time - T.closed_at),
|
||||
"opened_at_date" = gameTimestamp(wtime = T.opened_at),
|
||||
@@ -145,7 +148,7 @@
|
||||
to_chat(ui.user, span_warning("Ticket not found, creating new one..."))
|
||||
else
|
||||
player.current_ticket.AddInteraction("[key_name_admin(ui.user)] opened a new ticket.")
|
||||
player.current_ticket.Close()
|
||||
player.current_ticket.Close(ui.user)
|
||||
|
||||
// Create a new ticket and handle it. You created it afterall!
|
||||
var/datum/ticket/T = new /datum/ticket(ticket_text, player, TRUE, level)
|
||||
@@ -153,7 +156,7 @@
|
||||
T.level = 1
|
||||
else
|
||||
T.level = 0
|
||||
T.HandleIssue()
|
||||
T.HandleIssue(ui.user)
|
||||
switch(T.level)
|
||||
if (0)
|
||||
ui.user.client.cmd_mentor_pm(player, ticket_text, T)
|
||||
@@ -168,7 +171,7 @@
|
||||
ui.user.client.selected_ticket.Retitle()
|
||||
. = TRUE
|
||||
if("reopen_ticket")
|
||||
ui.user.client.selected_ticket.Reopen()
|
||||
ui.user.client.selected_ticket.Reopen(ui.user)
|
||||
. = TRUE
|
||||
if("undock_ticket")
|
||||
ui.user.client.selected_ticket.tgui_interact(ui.user)
|
||||
@@ -249,7 +252,7 @@
|
||||
Retitle()
|
||||
. = TRUE
|
||||
if("reopen")
|
||||
Reopen()
|
||||
Reopen(ui.user)
|
||||
. = TRUE
|
||||
if("legacy")
|
||||
TicketPanelLegacy(ui.user)
|
||||
|
||||
Reference in New Issue
Block a user