diff --git a/code/modules/admin/tickets/admintickets.dm b/code/modules/admin/tickets/admintickets.dm
index 8f99c994037..b9b998fecba 100644
--- a/code/modules/admin/tickets/admintickets.dm
+++ b/code/modules/admin/tickets/admintickets.dm
@@ -7,7 +7,7 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke
//Defines
//Deciseconds until timeout
-#define ADMIN_TICKET_TIMEOUT 100
+#define ADMIN_TICKET_TIMEOUT 3000
//Decisecions before opening another ticket
#define ADMIN_TICKET_DUPLICATE_COOLDOWN 300
@@ -38,7 +38,8 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke
/datum/adminTicketHolder/proc/purgeAllTickets() // Delete ALL tickets
QDEL_LIST(allTickets)
- message_admins("[usr] purged all admin tickets!")
+ message_admins("[usr.client] purged all admin tickets!")
+ ticketCounter = 1
/datum/adminTicketHolder/proc/closeAllOpenTickets() // Close all open tickets
for(var/i in allTickets)
@@ -120,11 +121,9 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke
/datum/admin_ticket/proc/beginStaleCount()
if(!src)
- to_chat(world, "DEBUG: NO SRC")
return
while(world.time < timeUntilStale)
sleep(200)
- to_chat(world, "DEBUG: CHECKING STATE OF TICKET [ticketNum]")
if(ticketState == ADMIN_TICKET_OPEN && world.time > timeUntilStale)
message_admins("Ticket #[ticketNum] has been open for [ADMIN_TICKET_TIMEOUT * 0.1] seconds. Changing status to stale.")
ticketState = ADMIN_TICKET_STALE
@@ -135,4 +134,15 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke
/datum/admin_ticket/proc/setLastAdminResponse(var/client/C)
lastAdminResponse = C
- lastResponseTime = world.time
\ No newline at end of file
+ lastResponseTime = worldtime2text()
+
+/datum/admin_ticket/proc/state2text()
+ switch(ticketState)
+ if(ADMIN_TICKET_OPEN)
+ return "OPEN"
+ if(ADMIN_TICKET_RESOLVED)
+ return "RESOLVED"
+ if(ADMIN_TICKET_CLOSED)
+ return "CLOSED"
+ if(ADMIN_TICKET_STALE)
+ return "STALE"
\ No newline at end of file
diff --git a/code/modules/admin/tickets/adminticketsUI.dm b/code/modules/admin/tickets/adminticketsUI.dm
index 3e93d60eda3..4c30cd109dd 100644
--- a/code/modules/admin/tickets/adminticketsUI.dm
+++ b/code/modules/admin/tickets/adminticketsUI.dm
@@ -8,19 +8,35 @@
dat +="Refresh
Open TicketsResolved TicketsClosed Tickets"
if(tab == ADMIN_TICKET_OPEN)
dat += "
| Control | Ticket | Detail |
|---|
| Control | Ticket | Detail |
|---|---|---|
| ResolveClose | Ticket #[ticket.ticketNum]: at [ticket.timeOpened]: [ticket.content] | Details | " else continue + else if(tab == ADMIN_TICKET_RESOLVED) + dat += "
| ResolveClose | Ticket #[ticket.ticketNum]: at [ticket.timeOpened]: [ticket.content] | Details | " + else + continue + else if(tab == ADMIN_TICKET_CLOSED) + dat += "
| ResolveClose | Ticket #[ticket.ticketNum]: at [ticket.timeOpened]: [ticket.content] | Details | " + else + continue - dat += "
[T.content]
" dat += "Re-OpenResolveClose" + dat += "Last Admin Response: [T.lastAdminResponse] at [T.lastResponseTime]" + var/datum/browser/popup = new(usr, "adminticketsdetail", "Admin Ticket #[T.ticketNum]", 1200, 600) popup.set_content(dat) popup.open() @@ -81,6 +103,11 @@ showUI(usr) return + if(href_list["refreshdetail"]) + var/indexNum = text2num(href_list["refreshdetail"]) + showDetailUI(usr, indexNum) + return + if(href_list["showopen"]) showUI(usr, ADMIN_TICKET_OPEN) return @@ -100,14 +127,14 @@ var/indexNum = text2num(href_list["resolve"]) globAdminTicketHolder.resolveTicket(indexNum) message_admins("[usr.client] / ([usr]) resolved admin ticket number [indexNum]") - showUI(usr) + showUI(usr, ADMIN_TICKET_RESOLVED) return if(href_list["close"]) var/indexNum = text2num(href_list["close"]) globAdminTicketHolder.closeTicket(indexNum) message_admins("[usr.client] / ([usr]) closed admin ticket number [indexNum]") - showUI(usr) + showUI(usr, ADMIN_TICKET_CLOSED) return else if(href_list["reopen"]) diff --git a/code/modules/admin/tickets/adminticketsverbs.dm b/code/modules/admin/tickets/adminticketsverbs.dm index dbb29832158..1c3749638ff 100644 --- a/code/modules/admin/tickets/adminticketsverbs.dm +++ b/code/modules/admin/tickets/adminticketsverbs.dm @@ -4,10 +4,20 @@ set name = "Restart Admin Ticket System" set category = "Tickets" + if(!holder) + return + + if(!check_rights(R_DEBUG)) + return + if(!globAdminTicketHolder) var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicketHolder else - to_chat(world, "Already one running.") + if(alert("Are you sure you want to reboot the admin ticket system?",,"Yes","No") != "Yes") + return + message_admins("Restarting Admin Ticket System!") + globAdminTicketHolder = new /datum/adminTicketHolder + message_admins("Admin Ticket System Restarted!") /client/proc/vvadmintickets() set name = "Debug Admin Tickets" @@ -32,4 +42,4 @@ set category = "Tickets" var/testmsg = pick("REEEEEEE", "HELP ME I'm NOOB!!", "PLEASE ADMIN REVIVE ME", "IS THIS LEGIT?", "some1 killed me 4noraisen", "birdtalon is powergaming again") - globAdminTicketHolder.newTicket(src, testmsg) + globAdminTicketHolder.newTicket(src, testmsg) \ No newline at end of file diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index eec8a19cc8f..ddea7526314 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -76,7 +76,7 @@ //Check if the person has a current open admin ticket var/datum/admin_ticket/existingTicket = globAdminTicketHolder.checkForOpenTicket(C) if(existingTicket) - existingTicket.setLastAdminResponse(usr) + existingTicket.setLastAdminResponse(usr.client) if(ismob(C)) //Old stuff can feed-in mobs instead of clients var/mob/M = C C = M.client