From 89297332f7a8b24ba2e27b4e05050e7e4e8fec82 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Fri, 25 Dec 2020 13:14:35 -0800 Subject: [PATCH] tgui: Secrets Panel (#55698) Tgui-izes the secrets panel Removes one terrible shuttle button, but just know all of them are pretty shit There can only be one (40 second delay) was condensed into an option for there can only be one Before it was a blank HTML document. It has some kind of useful stuff, and also some shitpost-y stuff. Using some tab system really helps you pick out where the logging/issue fixing buttons are and where the silly garbage --- code/modules/admin/admin_verbs.dm | 7 - code/modules/admin/topic.dm | 3 - code/modules/admin/verbs/onlyone.dm | 3 +- code/modules/admin/{ => verbs}/secrets.dm | 962 ++++++++++------------ tgstation.dme | 2 +- tgui/packages/tgui/interfaces/Secrets.js | 678 +++++++++++++++ tgui/public/tgui-common.chunk.js | 2 +- tgui/public/tgui-panel.bundle.js | 2 +- tgui/public/tgui.bundle.js | 2 +- 9 files changed, 1098 insertions(+), 563 deletions(-) rename code/modules/admin/{ => verbs}/secrets.dm (56%) create mode 100644 tgui/packages/tgui/interfaces/Secrets.js diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d5349bf05fd..ef8bd903c37 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -415,13 +415,6 @@ GLOBAL_PROTECT(admin_verbs_hideable) holder.Game() SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/secrets() - set name = "Secrets" - set category = "Admin.Game" - if (holder) - holder.Secrets() - SSblackbox.record_feedback("tally", "admin_verb", 1, "Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/proc/poll_panel() set name = "Server Poll Management" set category = "Admin" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index bb548e460d5..9dc2f959163 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1691,9 +1691,6 @@ break return - else if(href_list["secrets"]) - Secrets_topic(href_list["secrets"],href_list) - else if(href_list["ac_view_wanted"]) //Admin newscaster Topic() stuff be here if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 40d2fb9f14d..cbee1b49dbd 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -5,6 +5,7 @@ GLOBAL_VAR_INIT(highlander, FALSE) return GLOB.highlander = TRUE + sound_to_playing_players('sound/misc/highlander.ogg') send_to_playing_players("THERE CAN BE ONLY ONE") for(var/obj/item/disk/nuclear/N in GLOB.poi_list) @@ -41,7 +42,7 @@ GLOBAL_VAR_INIT(highlander, FALSE) send_to_playing_players("Bagpipes begin to blare. You feel Scottish pride coming over you.") message_admins("[key_name_admin(usr)] used (delayed) THERE CAN BE ONLY ONE!") log_admin("[key_name(usr)] used delayed THERE CAN BE ONLY ONE.") - addtimer(CALLBACK(src, .proc/only_one), 420) + addtimer(CALLBACK(src, .proc/only_one), 42 SECONDS) /mob/living/carbon/human/proc/make_scottish() mind.add_antag_datum(/datum/antagonist/highlander) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/verbs/secrets.dm similarity index 56% rename from code/modules/admin/secrets.dm rename to code/modules/admin/verbs/secrets.dm index 1dbab89d88e..8c319f145b3 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -1,127 +1,165 @@ -/datum/admins/proc/Secrets() - if(!check_rights(0)) + + +/client/proc/secrets() //Creates a verb for admins to open up the ui + set name = "Secrets" + set desc = "Abuse harder than you ever have before with this handy dandy semi-misc stuff menu" + set category = "Admin.Game" + SSblackbox.record_feedback("tally", "admin_verb", 1, "Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + var/datum/secrets_menu/tgui = new(usr)//create the datum + tgui.ui_interact(usr)//datum has a tgui component, here we open the window + +/datum/secrets_menu + var/client/holder //client of whoever is using this datum + var/is_debugger = FALSE + var/is_funmin = FALSE + +/datum/secrets_menu/New(user)//user can either be a client or a mob due to byondcode(tm) + if (istype(user, /client)) + var/client/user_client = user + holder = user_client //if its a client, assign it to holder + else + var/mob/user_mob = user + holder = user_mob.client //if its a mob, assign the mob's client to holder + + is_debugger = check_rights(R_DEBUG) + is_funmin = check_rights(R_FUN) + +/datum/secrets_menu/ui_state(mob/user) + return GLOB.admin_state + +/datum/secrets_menu/ui_close() + qdel(src) + +/datum/secrets_menu/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Secrets") + ui.open() + +/datum/secrets_menu/ui_data(mob/user) + var/list/data = list() + data["is_debugger"] = is_debugger + data["is_funmin"] = is_funmin + return data + +/datum/secrets_menu/ui_act(action, params) + . = ..() + if(.) + return + if((action != "admin_log" || action != "show_admins") && !check_rights(R_ADMIN)) return - - var/list/dat = list("The first rule of adminbuse is: you don't talk about the adminbuse.
| Name | Position |
|---|---|
| [t.fields["name"]] | [t.fields["rank"]] |
| Name | DNA | Blood Type |
|---|---|---|
| [H] | [H.dna.unique_enzymes] | [H.dna.blood_type] |
| Name | Fingerprints |
|---|---|
| [H] | [md5(H.dna.uni_identity)] |
| Name | Position |
|---|---|
| [t.fields["name"]] | [t.fields["rank"]] |
| Name | DNA | Blood Type |
|---|---|---|
| [H] | [H.dna.unique_enzymes] | [H.dna.blood_type] |
| Name | Fingerprints |
|---|---|
| [H] | [md5(H.dna.uni_identity)] |
'+(n?e:ee(e,!0))+"\n":""+(n?e:ee(e,!0))+"\n"}return e}(),t.blockquote=function(){function e(e){return"\n"+e+"\n"}return e}(),t.html=function(){function e(e){return e}return e}(),t.heading=function(){function e(e,t,n,r){return this.options.headerIds?"
"+e+"
\n"}return e}(),t.table=function(){function e(e,t){return t&&(t=""+t+""),""+e+""}return e}(),t.br=function(){function e(){return this.options.xhtml?""+se(c.message+"",!0)+"";throw c}}return pe.options=pe.setOptions=function(e){return ue(pe.defaults,e),fe(pe.defaults),pe},pe.getDefaults=le,pe.defaults=de,pe.use=function(e){var t=ue({},e);if(e.renderer&&function(){var n=pe.defaults.renderer||new te,r=function(){function t(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a
'+(n?e:ee(e,!0))+"\n":""+(n?e:ee(e,!0))+"\n"}return e}(),t.blockquote=function(){function e(e){return"\n"+e+"\n"}return e}(),t.html=function(){function e(e){return e}return e}(),t.heading=function(){function e(e,t,n,r){return this.options.headerIds?"
"+e+"
\n"}return e}(),t.table=function(){function e(e,t){return t&&(t=""+t+""),""+e+""}return e}(),t.br=function(){function e(){return this.options.xhtml?""+se(c.message+"",!0)+"";throw c}}return pe.options=pe.setOptions=function(e){return ue(pe.defaults,e),fe(pe.defaults),pe},pe.getDefaults=le,pe.defaults=de,pe.use=function(e){var t=ue({},e);if(e.renderer&&function(){var n=pe.defaults.renderer||new te,r=function(){function t(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a