From 9f699257de71e73e9be41e393113dd795627caae Mon Sep 17 00:00:00 2001 From: Leshana Date: Fri, 27 May 2016 16:16:29 -0400 Subject: [PATCH] Organize and Beautify Admin Secrets Panel * Add browser styles to Admin Secrets panel to make it look nice. * Show only one category at once, with buttons to switch between categories at the top. --- code/modules/admin/admin.dm | 23 +++++++++++++++-------- code/modules/admin/admin_secrets.dm | 7 +++++++ code/modules/admin/topic.dm | 4 ++++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index c7dc8f4ae1..e045c19f1e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -594,26 +594,33 @@ proc/admin_notice(var/message, var/rights) usr << browse(dat, "window=admin2;size=210x280") return -/datum/admins/proc/Secrets() +/datum/admins/proc/Secrets(var/datum/admin_secret_category/active_category = null) if(!check_rights(0)) return + // Print the header with category selection buttons. var/dat = "The first rule of adminbuse is: you don't talk about the adminbuse.
" for(var/datum/admin_secret_category/category in admin_secrets.categories) if(!category.can_view(usr)) continue - dat += "[category.name]
" - if(category.desc) - dat += "[category.desc]
" - for(var/datum/admin_secret_item/item in category.items) + dat += "[category.name] " + dat += "
" + + // If a category is selected, print its description and then options + if(istype(active_category) && active_category.can_view(usr)) + dat += "[active_category.name]
" + if(active_category.desc) + dat += "[active_category.desc]
" + for(var/datum/admin_secret_item/item in active_category.items) if(!item.can_view(usr)) continue dat += "[item.name()]
" dat += "
" - usr << browse(dat, "window=secrets") + + var/datum/browser/popup = new(usr, "secrets", "Secrets", 500, 500) + popup.set_content(dat) + popup.open() return - - /////////////////////////////////////////////////////////////////////////////////////////////////admins2.dm merge //i.e. buttons/verbs diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm index 38bebb844a..b6d0abbe1c 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -22,6 +22,9 @@ var/datum/admin_secrets/admin_secrets = new() dd_insertObjectList(category.items, item) items += item +// +// Secret Item Category - Each subtype is a category for organizing secret commands. +// /datum/admin_secret_category var/name = "" var/desc = "" @@ -37,6 +40,10 @@ var/datum/admin_secrets/admin_secrets = new() return 1 return 0 +// +// Secret Item Datum - Each subtype is a command on the secrets panel. +// Override execute() with the implementation of the command. +// /datum/admin_secret_item var/name = "" var/category = null diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 99b3f7a2f4..cf98ede72f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1644,6 +1644,10 @@ log_and_message_admins("created [number] [english_list(paths)]") return + else if(href_list["admin_secrets_panel"]) + var/datum/admin_secret_category/AC = locate(href_list["admin_secrets_panel"]) in admin_secrets.categories + src.Secrets(AC) + else if(href_list["admin_secrets"]) var/datum/admin_secret_item/item = locate(href_list["admin_secrets"]) in admin_secrets.items item.execute(usr)