From c669d642d4cbbfb077d5cc59fc3008330a922a13 Mon Sep 17 00:00:00 2001 From: tayyyyyyy Date: Mon, 6 May 2019 19:32:17 -0700 Subject: [PATCH] Add archiving and admin buttons --- code/modules/admin/verbs/adminpm.dm | 55 ++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 0fdd3d356f5..baed06dafc7 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -243,15 +243,25 @@ pm_tracker.show_ui(usr) /datum/pm_tracker - var/list/pms = list() var/current_title = "" var/open = FALSE + var/list/pms = list() + var/show_archived = FALSE var/window_id = "pms_window" +/datum/pm_convo + var/list/messages = list() + var/archived = FALSE + var/client/client + +/datum/pm_convo/New(var/client/C) + client = C + /datum/pm_tracker/proc/add_message(var/client/title, var/client/sender, var/message, mob/user) if(!pms[title.key]) - pms[title.key] = list() - pms[title.key].Add("[sender]: [message]") + pms[title.key] = new /datum/pm_convo(title) + pms[title.key].messages.Add("[sender]: [message]") + pms[title.key].archived = FALSE if(!open) // The next time the window's opened, it'll be open to the most recent message @@ -265,31 +275,47 @@ var/dat = "" dat += "Refresh" + dat += "[show_archived ? "Hide" : "Show"] Archived" dat += "
" for(var/title in pms) + if(pms[title].archived && !show_archived) + continue var/label = "[title]" if(title == current_title) label = "[label]" dat += "[label]" - dat += "

[current_title]

" - dat += "

" - dat += "" + if(pms[current_title]) + dat += "

[check_rights(R_ADMIN, FALSE, user) ? fancy_title(current_title) : current_title]

" + dat += "

" + dat += "

" - for(var/message in pms[current_title]) - dat += "" + for(var/message in pms[current_title].messages) + dat += "" - dat += "
[message]
[message]
" - dat += "
" - dat += "

" - dat += "Reply" + dat += "" + dat += "
" + dat += "" + dat += "Reply" + dat += "[pms[current_title].archived ? "Unarchive" : "Archive"]" var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src) popup.set_content(dat) popup.open() open = TRUE +/datum/pm_tracker/proc/fancy_title(var/title) + var/client/C = pms[title].client + if(!C) + return "[title] (Disconnected)" + return "[key_name(C, FALSE)] ([ADMIN_QUE(C.mob,"?")]) ([ADMIN_PP(C.mob,"PP")]) ([ADMIN_VV(C.mob,"VV")]) ([ADMIN_SM(C.mob,"SM")]) ([admin_jump_link(C.mob)]) (CA)" + /datum/pm_tracker/Topic(href, href_list) + if(href_list["archive"]) + pms[href_list["archive"]].archived = !pms[href_list["archive"]].archived + show_ui(usr) + return + if(href_list["refresh"]) show_ui(usr) return @@ -304,6 +330,11 @@ show_ui(usr) return + if(href_list["showarchived"]) + show_archived = !show_archived + show_ui(usr) + return + if(href_list["close"]) open = FALSE return