mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
[Semi-modular] View Latest Ticket ahelp command for players (#2958)
* it compiles \o/ * fixes everything lol * Removes caveman debugging * closed_at -> opened_at Co-authored-by: Ranged <nickvanderkroon@gmail.com>
This commit is contained in:
@@ -536,7 +536,8 @@
|
||||
if(player_ckey)
|
||||
create_message("note", player_ckey, admin_ckey, note_reason, null, null, 0, 0, null, 0, severity)
|
||||
var/client/C = GLOB.directory[player_ckey]
|
||||
var/datum/admin_help/AH = admin_ticket_log(player_ckey, "[kna] [msg]")
|
||||
// var/datum/admin_help/AH = admin_ticket_log(player_ckey, "[kna] [msg]") // SKYRAT EDIT ORIGINAL
|
||||
var/datum/admin_help/AH = admin_ticket_log(player_ckey, "[kna] [msg]", FALSE) // SKYRAT EDIT -- Player ticket viewing
|
||||
var/appeal_url = "No ban appeal url set!"
|
||||
appeal_url = CONFIG_GET(string/banappeals)
|
||||
var/is_admin = FALSE
|
||||
|
||||
@@ -215,9 +215,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
statclick = new(null, src)
|
||||
_interactions = list()
|
||||
_interactions_player = list() // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
|
||||
if(is_bwoink)
|
||||
AddInteraction("<font color='blue'>[key_name_admin(usr)] PM'd [LinkedReplyName()]</font>")
|
||||
AddInteractionPlayer("<font color='blue'>[key_name_admin(usr, FALSE)] PM'd [LinkedReplyName()]</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
message_admins("<font color='blue'>Ticket [TicketHref("#[id]")] created</font>")
|
||||
else
|
||||
MessageNoRecipient(msg)
|
||||
@@ -286,6 +288,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
var/admin_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> <span class='linkify'>[keywords_lookup(msg)]</span></span>"
|
||||
|
||||
AddInteraction("<font color='red'>[LinkedReplyName(ref_src)]: [msg]</font>")
|
||||
AddInteractionPlayer("<font color='red'>[LinkedReplyName(ref_src)]: [msg]</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
log_admin_private("Ticket #[id]: [key_name(initiator)]: [msg]")
|
||||
|
||||
//send this msg to all admins
|
||||
@@ -330,6 +333,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
initiator.current_ticket = src
|
||||
|
||||
AddInteraction("<font color='purple'>Reopened by [key_name_admin(usr)]</font>")
|
||||
AddInteractionPlayer("<font color='purple'>Reopened by [key_name_admin(usr, FALSE)]</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
var/msg = "<span class='adminhelp'>Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)].</span>"
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
@@ -361,6 +365,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
state = AHELP_CLOSED
|
||||
GLOB.ahelp_tickets.ListInsert(src)
|
||||
AddInteraction("<font color='red'>Closed by [key_name].</font>")
|
||||
AddInteractionPlayer("<font color='red'>Closed by [key_name_admin(usr, FALSE)].</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
if(!silent)
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "closed")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name]."
|
||||
@@ -387,6 +392,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50)
|
||||
|
||||
AddInteraction("<font color='green'>Resolved by [key_name].</font>")
|
||||
AddInteractionPlayer("<font color='green'>Resolved by [key_name_admin(usr, FALSE)].</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
to_chat(initiator, "<span class='adminhelp'>Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.</span>", confidential = TRUE)
|
||||
if(!silent)
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "resolved")
|
||||
@@ -421,6 +427,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
AddInteraction("Rejected by [key_name].")
|
||||
AddInteractionPlayer("Rejected by [key_name_admin(usr, FALSE)].") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
SSblackbox.LogAhelp(id, "Rejected", "Rejected by [usr.key]", null, usr.ckey)
|
||||
Close(silent = TRUE)
|
||||
|
||||
@@ -447,6 +454,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
AddInteraction("Marked as IC issue by [key_name]")
|
||||
AddInteractionPlayer("Marked as IC issue by [key_name_admin(usr, FALSE)]") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
SSblackbox.LogAhelp(id, "IC Issue", "Marked as IC issue by [usr.key]", null, usr.ckey)
|
||||
Resolve(silent = TRUE)
|
||||
|
||||
@@ -587,7 +595,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
//Use this proc when an admin takes action that may be related to an open ticket on what
|
||||
//what can be a client, ckey, or mob
|
||||
/proc/admin_ticket_log(what, message)
|
||||
// /proc/admin_ticket_log(what, message) // SKYRAT EDIT ORIGINAL
|
||||
/proc/admin_ticket_log(what, message, admin_only = TRUE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
var/client/C
|
||||
var/mob/Mob = what
|
||||
if(istype(Mob))
|
||||
@@ -596,11 +605,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
C = what
|
||||
if(istype(C) && C.current_ticket)
|
||||
C.current_ticket.AddInteraction(message)
|
||||
// SKYRAT EDIT ADDITION START -- Player ticket viewing
|
||||
if(!admin_only)
|
||||
C.current_ticket.AddInteractionPlayer(message)
|
||||
// SKYRAT EDIT ADDITION END
|
||||
return C.current_ticket
|
||||
if(istext(what)) //ckey
|
||||
var/datum/admin_help/AH = GLOB.ahelp_tickets.CKey2ActiveTicket(what)
|
||||
if(AH)
|
||||
AH.AddInteraction(message)
|
||||
// SKYRAT EDIT ADDITION START -- Player ticket viewing
|
||||
if(!admin_only)
|
||||
AH.AddInteractionPlayer(message)
|
||||
// SKYRAT EDIT ADDITION END
|
||||
return AH
|
||||
|
||||
//
|
||||
|
||||
@@ -205,6 +205,7 @@
|
||||
html = "<span class='notice'>PM to-<b>Admins</b>: <span class='linkify'>[rawmsg]</span></span>",
|
||||
confidential = TRUE)
|
||||
var/datum/admin_help/AH = admin_ticket_log(src, "<font color='red'>Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>External</i>: [keywordparsedmsg]</font>")
|
||||
AH.AddInteractionPlayer("<font color='red'>Reply PM from-<b>[key_name(src, TRUE, FALSE)]</b> to <i>External</i>: [keywordparsedmsg]</font>") // SKYRAT EDIT ADDITION -- Player ticket viewing
|
||||
externalreplyamount--
|
||||
send2adminchat("[AH ? "#[AH.id] " : ""]Reply: [ckey]", rawmsg)
|
||||
else
|
||||
@@ -223,13 +224,16 @@
|
||||
confidential = TRUE)
|
||||
//omg this is dumb, just fill in both their tickets
|
||||
var/interaction_message = "<font color='purple'>PM from-<b>[key_name(src, recipient, 1)]</b> to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</font>"
|
||||
admin_ticket_log(src, interaction_message)
|
||||
// admin_ticket_log(src, interaction_message) // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(src, interaction_message, FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
if(recipient != src) //reeee
|
||||
admin_ticket_log(recipient, interaction_message)
|
||||
// admin_ticket_log(recipient, interaction_message) // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(recipient, interaction_message, FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
SSblackbox.LogAhelp(current_ticket.id, "Reply", msg, recipient.ckey, src.ckey)
|
||||
else //recipient is an admin but sender is not
|
||||
var/replymsg = "Reply PM from-<b>[key_name(src, recipient, 1)]</b>: <span class='linkify'>[keywordparsedmsg]</span>"
|
||||
admin_ticket_log(src, "<font color='red'>[replymsg]</font>")
|
||||
// admin_ticket_log(src, "<font color='red'>[replymsg]</font>") // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(src, "<font color='red'>[replymsg]</font>", FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
to_chat(recipient,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
html = "<span class='danger'>[replymsg]</span>",
|
||||
@@ -281,7 +285,8 @@
|
||||
html = "<span class='notice'>Admin PM to-<b>[key_name(recipient, src, 1)]</b>: <span class='linkify'>[msg]</span></span>",
|
||||
confidential = TRUE)
|
||||
|
||||
admin_ticket_log(recipient, "<font color='purple'>PM From [key_name_admin(src)]: [keywordparsedmsg]</font>")
|
||||
// admin_ticket_log(recipient, "<font color='purple'>PM From [key_name_admin(src)]: [keywordparsedmsg]</font>") // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(recipient, "<font color='purple'>PM From [key_name_admin(src, FALSE)]: [keywordparsedmsg]</font>", FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
|
||||
if(!already_logged) //Reply to an existing ticket
|
||||
SSblackbox.LogAhelp(recipient.current_ticket.id, "Reply", msg, recipient.ckey, src.ckey)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/admin_help
|
||||
var/handler
|
||||
var/list/_interactions_player
|
||||
|
||||
//Let the initiator know their ahelp is being handled
|
||||
/datum/admin_help/proc/HandleIssue(key_name = key_name_admin(usr))
|
||||
@@ -23,5 +24,31 @@
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
AddInteraction("Being handled by [key_name]")
|
||||
AddInteractionPlayer("Being handled by [key_name_admin(usr, FALSE)]")
|
||||
|
||||
handler = "[usr.ckey]"
|
||||
|
||||
/datum/admin_help/proc/PlayerTicketPanel()
|
||||
var/list/dat = list("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Player Ticket</title></head>")
|
||||
dat += "<b>State: "
|
||||
switch(state)
|
||||
if(AHELP_ACTIVE)
|
||||
dat += "<font color='red'>OPEN</font></b>"
|
||||
if(AHELP_RESOLVED)
|
||||
dat += "<font color='green'>RESOLVED</font></b>"
|
||||
if(AHELP_CLOSED)
|
||||
dat += "CLOSED</b>"
|
||||
else
|
||||
dat += "UNKNOWN</b>"
|
||||
dat += "<br><br>Opened at: [gameTimestamp("hh:mm:ss", opened_at)] (Approx [DisplayTimeText(world.time - opened_at)] ago)"
|
||||
if(closed_at)
|
||||
dat += "<br>Closed at: [gameTimestamp("hh:mm:ss", closed_at)] (Approx [DisplayTimeText(world.time - closed_at)] ago)"
|
||||
dat += "<br><br>"
|
||||
dat += "<br><b>Log:</b><br><br>"
|
||||
for(var/I in _interactions_player)
|
||||
dat += "[I]<br>"
|
||||
|
||||
usr << browse(dat.Join(), "window=ahelp[id];size=620x480")
|
||||
|
||||
/datum/admin_help/proc/AddInteractionPlayer(formatted_message)
|
||||
_interactions_player += "[time_stamp()]: [formatted_message]"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
// File for more general procs, admin_help.dm is focused on the datum/admin_help/
|
||||
/client/verb/viewlatestticket()
|
||||
set category = "Admin"
|
||||
set name = "View Latest Ticket"
|
||||
|
||||
if(!current_ticket)
|
||||
// Check if the client had previous tickets, and show the latest one
|
||||
var/list/prev_tickets = list()
|
||||
var/datum/admin_help/last_AH
|
||||
// Check all resolved tickets for this player
|
||||
for(var/datum/admin_help/AH in GLOB.ahelp_tickets.resolved_tickets)
|
||||
if(AH.initiator_ckey == ckey) // Initiator is a misnomer, it's always the non-admin player even if an admin bwoinks first
|
||||
prev_tickets += AH
|
||||
// Check all closed tickets for this player
|
||||
for(var/datum/admin_help/AH in GLOB.ahelp_tickets.closed_tickets)
|
||||
if(AH.initiator_ckey == ckey)
|
||||
prev_tickets += AH
|
||||
// Take the most recent entry of prev_tickets and open the panel on it
|
||||
if(LAZYLEN(prev_tickets))
|
||||
last_AH = pop(prev_tickets)
|
||||
last_AH.PlayerTicketPanel()
|
||||
return
|
||||
|
||||
// client had no tickets this round
|
||||
to_chat(src, "<span class='warning'>You have not had an ahelp ticket this round.</span>")
|
||||
return
|
||||
|
||||
current_ticket.PlayerTicketPanel()
|
||||
@@ -3389,6 +3389,7 @@
|
||||
#include "modular_skyrat\modules\additionalert\code\modules\clothing\outfit\ert.dm"
|
||||
#include "modular_skyrat\modules\additionalert\code\modules\clothing\spacesuits\hardsuit.dm"
|
||||
#include "modular_skyrat\modules\admin\code\admin_help.dm"
|
||||
#include "modular_skyrat\modules\admin\code\adminhelp.dm"
|
||||
#include "modular_skyrat\modules\admin\code\aooc.dm"
|
||||
#include "modular_skyrat\modules\admin\code\loud_say.dm"
|
||||
#include "modular_skyrat\modules\admin\code\sooc.dm"
|
||||
|
||||
Reference in New Issue
Block a user