Files
Bubberstation/code/modules/admin/admin_pda_message.dm
SkyratBot 4759d84a2e [MIRROR] Admin verb to send message on PDA [MDB IGNORE] (#17252)
* Admin verb to send message on PDA (#70790)

* base

* oh, oh.

* uh, dots?

* no hdd, only computer

* kill let in UI(but not in func)

* Admin verb to send message on PDA

Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
2022-10-30 21:46:37 -04:00

87 lines
2.4 KiB
Plaintext

///Allows an admin to send messages on PDA
/client/proc/message_pda()
set name = "PDA Message"
set category = "Admin.Events"
if(!holder ||!check_rights(R_ADMIN))
return
holder.message_pda()
///Opens up the PDA Message Panel
/datum/admins/proc/message_pda()
if(!check_rights(R_ADMIN))
return
if(!length(GLOB.TabletMessengers))
to_chat(usr, span_warning("ERROR: There are no users you can send a message to"))
return
var/datum/admin_pda_panel/ui = new(usr)
ui.ui_interact(usr)
/// Panel
/datum/admin_pda_panel
/// PDA which have players(and we can send them message)
var/available_pdas = list()
/datum/admin_pda_panel/New()
for(var/obj/item/modular_computer/computer in GLOB.TabletMessengers)
for(var/datum/computer_file/program/messenger/app in computer.stored_files)
if(!computer.saved_identification || !computer.saved_job || app.monitor_hidden || app.invisible)
continue
available_pdas += list(list("tablet" = computer, "name" = computer.saved_identification))
/datum/admin_pda_panel/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AdminPDA")
ui.open()
/datum/admin_pda_panel/ui_state(mob/user)
return GLOB.admin_state
/datum/admin_pda_panel/ui_static_data(mob/user)
var/list/data = list()
data["users"] = list()
for(var/username in available_pdas)
data["users"] += username["name"]
return data
/datum/admin_pda_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
if(..())
return
if(!check_rights(R_ADMIN))
return
switch(action)
if("sendMessage")
var/targets = list()
var/spam = params["spam"]
for(var/target in available_pdas)
if(!spam && target["name"] != params["user"])
continue
targets += target["tablet"]
if(!length(targets))
to_chat(usr, span_warning("ERROR: Target is unavaiable(or not choosed)."))
return
var/datum/signal/subspace/messaging/tablet_msg/signal = new(targets[1], list(
"name" = params["name"],
"job" = params["job"],
"message" = html_decode(params["message"]),
"ref" = FALSE,
"targets" = targets,
"emojis" = FALSE,
"rigged" = FALSE,
"photo" = FALSE,
"automated" = FALSE,
))
signal.send_to_receivers()
message_admins("[key_name_admin(usr)] has send custom PDA message to [spam ? "everyone" : params["user"]].")
log_admin("[key_name(usr)] has send custom PDA message to [spam ? "everyone" : params["user"]]. Message: [params["message"]].")