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 += "
| [message] |
| [message] |