Fixed an ahelp follow up bug. Works now

This commit is contained in:
joep van der velden
2019-03-09 22:20:19 +01:00
parent 8d6cee7915
commit 842615cd5b
10 changed files with 139 additions and 85 deletions
+1
View File
@@ -28,6 +28,7 @@
#define CHAT_NO_TICKETLOGS 65536
#define UI_DARKMODE 131072
#define DISABLE_KARMA 262144
#define CHAT_NO_MENTORTICKETLOGS 524288
#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC)
+15 -11
View File
@@ -76,13 +76,12 @@ SUBSYSTEM_DEF(tickets)
var/datum/ticket/existingTicket = checkForOpenTicket(C)
if(existingTicket)
existingTicket.setCooldownPeriod()
to_chat(C.mob, "[span_text]Your ticket #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.</span>")
to_chat(C.mob, "[span_text]Your [ticket_name] #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.</span>")
return
if(!title)
title = passedContent
message_admins("making new ticket title: [title]; src type: [src.type]")
var/datum/ticket/T = new(title, passedContent, getTicketCounterAndInc())
allTickets += T
T.clientName = C
@@ -265,7 +264,6 @@ UI STUFF
popup.open()
/datum/controller/subsystem/tickets/proc/showDetailUI(mob/user, ticketID)
message_admins("src type: [src.type]; ticketID [ticketID]; allTickets len [LAZYLEN(allTickets)]")
var/datum/ticket/T = allTickets[ticketID]
var/status = "[T.state2text()]"
@@ -275,7 +273,7 @@ UI STUFF
dat += "<h2>Ticket #[T.ticketNum]</h2>"
dat += "<h3>[T.clientName] / [T.mobControlled] opened this ticket at [T.timeOpened] at location [T.locationSent]</h3>"
dat += "<h3>[T.clientName] / [T.mobControlled] opened this [ticket_name] at [T.timeOpened] at location [T.locationSent]</h3>"
dat += "<h4>Ticket Status: <font color='red'>[status]</font>"
dat += "<table style='width:950px; border: 3px solid;'>"
dat += "<tr><td>[T.title]</td></tr>"
@@ -288,7 +286,7 @@ UI STUFF
dat += "<a href='?src=[UID()];detailreopen=[T.ticketNum]'>Re-Open</a><a href='?src=[UID()];detailresolve=[T.ticketNum]'>Resolve</a><br /><br />"
if(!T.stafAssigned)
dat += "No staf member assigned to this ticket - <a href='?src=[UID()];assignstaf=[T.ticketNum]'>Take Ticket</a><br />"
dat += "No staf member assigned to this [ticket_name] - <a href='?src=[UID()];assignstaf=[T.ticketNum]'>Take Ticket</a><br />"
else
dat += "[T.stafAssigned] is assigned to this Ticket. - <a href='?src=[UID()];assignstaf=[T.ticketNum]'>Take Ticket</a><br />"
@@ -309,7 +307,7 @@ UI STUFF
//dat
var/tickets = checkForTicket(user.client)
var/dat
dat += "<h1>Your open tickets</h1>"
dat += "<h1>Your open [ticket_system_name]</h1>"
dat += "<table>"
for(var/datum/ticket/T in tickets)
dat += "<tr><td><h2>Ticket #[T.ticketNum]</h2></td></tr>"
@@ -317,7 +315,7 @@ UI STUFF
dat += "<tr><td>[T.content[i]]</td></tr>"
dat += "</table>"
var/datum/browser/popup = new(user, "userticketsdetail", "Tickets", 1000, 600)
var/datum/browser/popup = new(user, "[ticket_system_name]userticketsdetail", ticket_system_name, 1000, 600)
popup.set_content(dat)
popup.open()
@@ -377,6 +375,9 @@ UI STUFF
showDetailUI(usr, indexNum)
if(href_list["detailclose"])
if(!check_rights(R_ADMIN))
to_chat(usr, "Admin status is required to close tickets.")
return
var/indexNum = text2num(href_list["detailclose"])
if(alert("Are you sure? This will send a negative message.",,"Yes","No") != "Yes")
return
@@ -385,9 +386,10 @@ UI STUFF
to_chat_safe(returnClient(indexNum), list(
"<font color='red' size='4'><b>- [ticket_name] Rejected! -</b></font>",
"<span class='boldmessage'>Please try to be calm, clear, and descriptive in admin helps, do not assume the staf member has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.</span>",
"[span_text]Your ticket has now been closed.</span>"
"[span_text]Your [ticket_name] has now been closed.</span>"
))
showDetailUI(usr, indexNum)
if(href_list["detailreopen"])
var/indexNum = text2num(href_list["detailreopen"])
@@ -397,8 +399,10 @@ UI STUFF
if(href_list["assignstaf"])
var/indexNum = text2num(href_list["assignstaf"])
if(assignStafToTicket(usr.client, indexNum))
message_staf("[usr.client] / ([usr]) has taken ticket number [indexNum]")
to_chat_safe(returnClient(indexNum), "[span_text]Your ticket is being handled by [usr.client].")
takeTicket(indexNum)
showDetailUI(usr, indexNum)
/datum/controller/subsystem/tickets/proc/takeTicket(var/index)
if(assignStafToTicket(usr.client, index))
message_staf("[usr.client] / ([usr]) has taken [ticket_name] number [index]")
to_chat_safe(returnClient(index), "[span_text]Your [ticket_name] is being handled by [usr.client].")
+1 -1
View File
@@ -31,7 +31,7 @@ var/global/nologevent = 0
/proc/message_mentorTicket(var/msg)
for(var/client/C in GLOB.admins)
if(check_rights(R_ADMIN | R_MENTOR | R_MOD, 0, C.mob))
if(C.prefs && !(C.prefs.toggles & CHAT_NO_TICKETLOGS))
if(C.prefs && !(C.prefs.toggles & CHAT_NO_MENTORTICKETLOGS))
to_chat(C, msg)
/proc/admin_ban_mobsearch(var/mob/M, var/ckey_to_find, var/mob/admin_to_notify)
+21 -3
View File
@@ -205,6 +205,9 @@ var/list/admin_verbs_mentor = list(
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/cmd_admin_pm_by_key_panel, /*admin-pm list by key*/
/client/proc/openMentorTicketUI,
/client/proc/openMentorUserUI,
/client/proc/toggleMentorTicketLogs,
/client/proc/cmd_mentor_say /* mentor say*/
// cmd_mentor_say is added/removed by the toggle_mentor_chat verb
)
@@ -219,10 +222,11 @@ var/list/admin_verbs_snpc = list(
/client/proc/hide_snpc_verbs
)
var/list/admin_verbs_ticket = list(
/client/proc/openTicketUI,
/client/proc/openAdminTicketUI,
/client/proc/toggleticketlogs,
/client/proc/resolveAllTickets,
/client/proc/openUserUI
/client/proc/resolveAllAdminTickets,
/client/proc/resolveAllMentorTickets,
/client/proc/openAdminUserUI
)
/client/proc/on_holder_add()
@@ -940,6 +944,20 @@ var/list/admin_verbs_ticket = list(
else
to_chat(usr, "You now will get admin log messages.")
/client/proc/toggleMentorTicketLogs()
set name = "Toggle Mentor Ticket Messgaes"
set category = "Preferences"
if(!check_rights(R_MENTOR))
return
prefs.toggles ^= CHAT_NO_MENTORTICKETLOGS
prefs.save_preferences(src)
if(prefs.toggles & CHAT_NO_MENTORTICKETLOGS)
to_chat(usr, "You now won't get admin ticket messages.")
else
to_chat(usr, "You now will get admin ticket messages.")
/client/proc/toggleticketlogs()
set name = "Toggle Admin Ticket Messgaes"
set category = "Preferences"
@@ -1,8 +1,8 @@
//Verbs
/client/proc/openTicketUI()
/client/proc/openAdminTicketUI()
set name = "Open Ticket Interface"
set name = "Open Admin Ticket Interface"
set category = "Admin"
if(!holder || !check_rights(R_ADMIN))
@@ -10,8 +10,8 @@
SStickets.showUI(usr)
/client/proc/resolveAllTickets()
set name = "Resolve All Open Tickets"
/client/proc/resolveAllAdminTickets()
set name = "Resolve All Open Admin Tickets"
set category = "Admin"
if(!holder || !check_rights(R_ADMIN))
@@ -22,9 +22,9 @@
SStickets.resolveAllOpenTickets()
/client/proc/openUserUI()
/client/proc/openAdminUserUI()
set name = "My Tickets"
set name = "My Admin Tickets"
set category = "Admin"
if(!holder || !check_rights(R_ADMIN))
@@ -0,0 +1,33 @@
//Verbs
/client/proc/openMentorTicketUI()
set name = "Open Mentor Ticket Interface"
set category = "Admin"
if(!holder || !check_rights(R_MENTOR))
return
SSmentor_tickets.showUI(usr)
/client/proc/resolveAllMentorTickets()
set name = "Resolve All Open Mentor Tickets"
set category = "Admin"
if(!holder || !check_rights(R_ADMIN))
return
if(alert("Are you sure you want to resolve ALL open tickets?","Resolve all open tickets?","Yes","No") != "Yes")
return
SSmentor_tickets.resolveAllOpenTickets()
/client/proc/openMentorUserUI()
set name = "My Mentor Tickets"
set category = "Admin"
if(!holder || !check_rights(R_MENTOR))
return
SSmentor_tickets.userDetailUI(usr)
+7 -16
View File
@@ -1552,22 +1552,13 @@
check_antagonists()
else if(href_list["take_question"])
var/mob/M = locateUID(href_list["take_question"])
var/is_mhelp = href_list["is_mhelp"]
if(ismob(M))
var/helptype = "ADMINHELP"
if(is_mhelp)
helptype = "MENTORHELP"
var/take_msg = "<span class='notice'><b>[helptype]</b>: <b>[key_name_hidden(usr.client)]</b> is attending to <b>[key_name(M)]'s</b> question.</span>"
for(var/client/X in GLOB.admins)
if(check_rights(R_ADMIN, 0, X.mob))
to_chat(X, take_msg)
else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob))
to_chat(X, take_msg)
to_chat(M, "<span class='notice'><b>Your question is being attended to by [key_name_hidden(usr.client, null, 0)]. Thanks for your patience!</b></span>")
else
to_chat(usr, "<span class='warning'>Unable to locate mob.</span>")
var/index = text2num(href_list["take_question"])
if(href_list["is_mhelp"])
SSmentor_tickets.takeTicket(index)
else //Ahelp
SStickets.takeTicket(index)
else if(href_list["cult_nextobj"])
if(alert(usr, "Validate the current Cult objective and unlock the next one?", "Cult Cheat Code", "Yes", "No") != "Yes")
return
+38 -37
View File
@@ -103,44 +103,45 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(check_rights(R_MENTOR, 0, X.mob))
mentorholders += X
continue
var/ticketNum // Holder for the ticket number
var/prunedmsg ="[src]: [msg]" // Message without links
var/datum/ticket/T
var/isMhelp = selected_type == "Mentorhelp"
var/span
if(isMhelp)
span = "<span class='mentorhelp'>"
if(SSmentor_tickets.checkForOpenTicket(src)) // If user already has an open ticket
T = SSmentor_tickets.checkForOpenTicket(src)
else
ticketNum = SSmentor_tickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
else //Ahelp
span = "<span class='adminhelp'>"
if(SStickets.checkForOpenTicket(src)) // If user already has an open ticket
T = SStickets.checkForOpenTicket(src) // Make T equal to the ticket they have open
else
ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
if(T)
ticketNum = T.ticketNum // ticketNum is the number of their ticket.
T.addResponse(src, msg)
msg = "[span][selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;[isMhelp ? "openmentorticket" : "openadminticket"]=[ticketNum]'>TICKET</A>) [ai_found ? "(<A HREF='?_src_=holder;adminchecklaws=[mob.UID()]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[ticketNum][isMhelp ? ";is_mhelp=1" : ""]'>TAKE</A>) :</span> [span][msg]</span>"
if(isMhelp)
//Open a new adminticket and inform the user.
SSmentor_tickets.newTicket(src, prunedmsg, msg)
for(var/client/X in mentorholders + modholders + adminholders)
if(X.prefs.sound & SOUND_MENTORHELP)
X << 'sound/effects/adminhelp.ogg'
to_chat(X, msg)
else //Ahelp
//Open a new adminticket and inform the user.
SStickets.newTicket(src, prunedmsg, msg)
for(var/client/X in modholders + adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
window_flash(X)
to_chat(X, msg)
switch(selected_type)
if("Mentorhelp")
var/ticketNum // Holder for the ticket number
var/prunedmsg ="[usr.client]: [msg]" // Message without links
if(SSmentor_tickets.checkForOpenTicket(usr)) // If user already has an open ticket
var/datum/ticket/T = SSmentor_tickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
ticketNum = T.ticketNum // ticketNum is the number of their ticket.
T.addResponse(usr.client, msg)
message_admins("open Mticket found num [ticketNum]")
else
ticketNum = SSmentor_tickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;openmentorticket=[ticketNum]'>TICKET</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[mob.UID()]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
//Open a new adminticket and inform the user.
SSmentor_tickets.newTicket(src, prunedmsg, msg)
for(var/client/X in mentorholders + modholders + adminholders)
if(X.prefs.sound & SOUND_MENTORHELP)
X << 'sound/effects/adminhelp.ogg'
to_chat(X, msg)
if("Adminhelp")
var/ticketNum // Holder for the ticket number
var/prunedmsg ="[usr.client]: [msg]" // Message without links
if(SStickets.checkForOpenTicket(usr)) // If user already has an open ticket
message_admins("open ticket found")
var/datum/ticket/T = SStickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
ticketNum = T.ticketNum // ticketNum is the number of their ticket.
T.addResponse(usr.client, msg)
message_admins("open Aticket found num [ticketNum]")
else
ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;openadminticket=[ticketNum]'>TICKET</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[mob.UID()]'>CL</A>)" : ""](<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
//Open a new adminticket and inform the user.
SStickets.newTicket(src, prunedmsg, msg)
for(var/client/X in modholders + adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
window_flash(X)
to_chat(X, msg)
//show it to the person adminhelping too
to_chat(src, "<span class='boldnotice'>[selected_type]</b>: [original_msg]</span>")
+16 -11
View File
@@ -182,23 +182,28 @@
else
if(check_rights(R_ADMIN|R_MOD, 0, X.mob))
to_chat(X, "<span class='boldnotice'>[type]: [key_name(src, TRUE, type)]-&gt;[key_name(C, TRUE, type)]: [emoji_msg]</span>")
if(type == "Mentorhelp")
return
//Check if the mob being PM'd has any open admin tickets.
var/tickets = list()
tickets = SStickets.checkForTicket(C)
if(type == "Mentorhelp")
tickets = SSmentor_tickets.checkForTicket(C)
else
tickets = SStickets.checkForTicket(C)
if(tickets)
for(var/datum/ticket/i in tickets)
i.addResponse(src, msg) // Add this response to their open tickets.
return
if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets
tickets = SStickets.checkForTicket(src)
if(tickets)
for(var/datum/ticket/i in tickets)
i.addResponse(src, msg)
return
if(type == "Mentorhelp")
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets
tickets = SSmentor_tickets.checkForTicket(src)
else // Ahelp
if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets
tickets = SStickets.checkForTicket(src)
if(tickets)
for(var/datum/ticket/i in tickets)
i.addResponse(src, msg)
return
/client/proc/cmd_admin_irc_pm()
+1
View File
@@ -1135,6 +1135,7 @@
#include "code\modules\admin\DB ban\functions.dm"
#include "code\modules\admin\permissionverbs\permissionedit.dm"
#include "code\modules\admin\tickets\adminticketsverbs.dm"
#include "code\modules\admin\tickets\mentorticketsverbs.dm"
#include "code\modules\admin\verbs\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminpm.dm"