mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
[READY] BYOND 516 compatability (#25105)
* Preliminary changes for 516 * Also removes the goon folder * Fixes a BUNCH of UIs * update our things * debug proc * le maintainer verb * fix strip panel * browseroutput => chat_panel * prettier, remove obsolete bat * tidu tgui say css * href purge * 515 compat * 515 compat 2 * more required chores * comments * fully working 515 * bungle * correct this * fixes 515 support * prettier * new CI * fixes old href styles sneaking in * update docs to reflect href changes * more href fixes (thanks cdui) * MORE href nonsense * even more hrefs (seriously wtf) * Update code/modules/admin/permissionverbs/permissionedit.dm * error on fail --------- Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
This commit is contained in:
@@ -103,7 +103,7 @@
|
||||
var/text = ""
|
||||
for(var/o in objs)
|
||||
var/datum/t = o
|
||||
text += "<A HREF='?_src_=vars;Vars=[t.UID()]'>\ref[t]</A>"
|
||||
text += "<A href='byond://?_src_=vars;Vars=[t.UID()]'>\ref[t]</A>"
|
||||
if(istype(t, /atom))
|
||||
var/atom/a = t
|
||||
|
||||
|
||||
@@ -166,17 +166,17 @@
|
||||
adminhelp(reply) //sender has left, adminhelp instead
|
||||
return
|
||||
|
||||
var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(<a href='?src=[pm_tracker.UID()];ping=[C.key]'>PING</a>)" : ""
|
||||
var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(<a href='byond://?src=[pm_tracker.UID()];ping=[C.key]'>PING</a>)" : ""
|
||||
var/ticket_link
|
||||
var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(<a href='?src=[pm_tracker.UID()];adminalert=[C.mob.UID()]'>ALERT</a>)" : ""
|
||||
var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(<a href='byond://?src=[pm_tracker.UID()];adminalert=[C.mob.UID()]'>ALERT</a>)" : ""
|
||||
if(ticket_id != -1)
|
||||
if(message_type == MESSAGE_TYPE_MENTORPM)
|
||||
ticket_link = "(<a href='?_src_=holder;openticket=[ticket_id];is_mhelp=1'>TICKET</a>)"
|
||||
ticket_link = "(<a href='byond://?_src_=holder;openticket=[ticket_id];is_mhelp=1'>TICKET</a>)"
|
||||
else
|
||||
ticket_link = "(<a href='?_src_=holder;openticket=[ticket_id]'>TICKET</a>)"
|
||||
ticket_link = "(<a href='byond://?_src_=holder;openticket=[ticket_id]'>TICKET</a>)"
|
||||
|
||||
var/emoji_msg = "<span class='emoji_enabled'>[msg]</span>"
|
||||
var/recieve_window_link = "(<a href='?src=[C.pm_tracker.UID()];newtitle=[key]'>WINDOW</a>)"
|
||||
var/recieve_window_link = "(<a href='byond://?src=[C.pm_tracker.UID()];newtitle=[key]'>WINDOW</a>)"
|
||||
if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, C.mob))
|
||||
recieve_window_link = ticket_link
|
||||
else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, C.mob))
|
||||
@@ -187,7 +187,7 @@
|
||||
else
|
||||
recieve_message = chat_box_ahelp(recieve_message)
|
||||
to_chat(C, recieve_message)
|
||||
var/send_window_link = "(<a href='?src=[pm_tracker.UID()];newtitle=[C.key]'>WINDOW</a>)"
|
||||
var/send_window_link = "(<a href='byond://?src=[pm_tracker.UID()];newtitle=[C.key]'>WINDOW</a>)"
|
||||
if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, mob))
|
||||
send_window_link = ticket_link
|
||||
else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, mob))
|
||||
@@ -348,10 +348,10 @@
|
||||
|
||||
// If it was forced open, make them use a special close button that alerts admins to closure
|
||||
if(forced)
|
||||
dat += "<div style='float: right'><big><a href='?src=[UID()];altclose=1'>Close</a></big></div>"
|
||||
dat += "<div style='float: right'><big><a href='byond://?src=[UID()];altclose=1'>Close</a></big></div>"
|
||||
|
||||
dat += "<a href='?src=[UID()];refresh=1'>Refresh</a>"
|
||||
dat += "<a href='?src=[UID()];showarchived=1'>[show_archived ? "Hide" : "Show"] Archived</a>"
|
||||
dat += "<a href='byond://?src=[UID()];refresh=1'>Refresh</a>"
|
||||
dat += "<a href='byond://?src=[UID()];showarchived=1'>[show_archived ? "Hide" : "Show"] Archived</a>"
|
||||
dat += "<br>"
|
||||
for(var/title in pms)
|
||||
if(pms[title].archived && !show_archived)
|
||||
@@ -363,7 +363,7 @@
|
||||
class = "linkOn"
|
||||
else if(!pms[title].read)
|
||||
label = "<i>*[label]</i>"
|
||||
dat += "<a class='[class]' href='?src=[UID()];newtitle=[title]'>[label]</a>"
|
||||
dat += "<a class='[class]' href='byond://?src=[UID()];newtitle=[title]'>[label]</a>"
|
||||
|
||||
var/datum/pm_convo/convo = pms[current_title]
|
||||
var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src)
|
||||
@@ -393,10 +393,10 @@
|
||||
dat += "<i><span class='typing'>[current_title] is typing</span></i>"
|
||||
dat += "<br>"
|
||||
dat += "</h4>"
|
||||
dat += "<a href='?src=[UID()];reply=[current_title]'>Reply</a>"
|
||||
dat += "<a href='?src=[UID()];archive=[current_title]'>[convo.archived ? "Unarchive" : "Archive"]</a>"
|
||||
dat += "<a href='byond://?src=[UID()];reply=[current_title]'>Reply</a>"
|
||||
dat += "<a href='byond://?src=[UID()];archive=[current_title]'>[convo.archived ? "Unarchive" : "Archive"]</a>"
|
||||
if(check_rights(R_ADMIN, FALSE, user))
|
||||
dat += "<a href='?src=[UID()];ping=[current_title]'>Ping</a>"
|
||||
dat += "<a href='byond://?src=[UID()];ping=[current_title]'>Ping</a>"
|
||||
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
@@ -914,6 +914,21 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
|
||||
|
||||
GLOB.error_cache.showTo(usr)
|
||||
|
||||
/client/proc/allow_browser_inspect()
|
||||
set category = "Debug"
|
||||
set name = "Allow Browser Inspect"
|
||||
set desc = "Allow browser debugging via inspect"
|
||||
|
||||
if(!check_rights(R_MAINTAINER) || !isclient(src))
|
||||
return
|
||||
|
||||
if(byond_version < 516)
|
||||
to_chat(src, "<span class='warning'>You can only use this on 516!</span>")
|
||||
return
|
||||
|
||||
to_chat(src, "<span class='info'>You can now right click to use inspect on browsers.</span>")
|
||||
winset(src, "", "browser-options=find,devtools")
|
||||
|
||||
/client/proc/visualise_active_turfs()
|
||||
set category = "Debug"
|
||||
set name = "Visualise Active Turfs"
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
usr.client.images += preview
|
||||
if(alert(usr,"Confirm location.","Template Confirm","Yes","No") == "Yes")
|
||||
var/timer = start_watch()
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has started to place the map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a></span>")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has started to place the map template ([template.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a></span>")
|
||||
if(template.load(T, centered = TRUE))
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>. Took [stop_watch(timer)]s.</span>")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>. Took [stop_watch(timer)]s.</span>")
|
||||
else
|
||||
to_chat(usr, "Failed to place map")
|
||||
usr.client.images -= preview
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
/datum/admins/proc/one_click_antag()
|
||||
|
||||
var/dat = {"<B>One-click Antagonist</B><br>
|
||||
<a href='?src=[UID()];makeAntag=1'>Make Traitors</a><br>
|
||||
<a href='?src=[UID()];makeAntag=2'>Make Changelings</a><br>
|
||||
<a href='?src=[UID()];makeAntag=3'>Make Revolutionaries</a><br>
|
||||
<a href='?src=[UID()];makeAntag=4'>Make Cult</a><br>
|
||||
<a href='?src=[UID()];makeAntag=5'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='?src=[UID()];makeAntag=6'>Make Vampires</a><br>
|
||||
<a href='?src=[UID()];makeAntag=7'>Make Abductor Team (Requires Ghosts)</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=1'>Make Traitors</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=2'>Make Changelings</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=3'>Make Revolutionaries</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=4'>Make Cult</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=5'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=6'>Make Vampires</a><br>
|
||||
<a href='byond://?src=[UID()];makeAntag=7'>Make Abductor Team (Requires Ghosts)</a><br>
|
||||
"}
|
||||
usr << browse(dat, "window=oneclickantag;size=400x400")
|
||||
return
|
||||
|
||||
@@ -43,7 +43,7 @@ GLOBAL_LIST_EMPTY(sounds_cache)
|
||||
uploaded_sound.volume = 100 * M.client.prefs.get_channel_volume(CHANNEL_ADMIN)
|
||||
|
||||
var/this_uid = M.client.UID()
|
||||
to_chat(M, "<span class='boldannounceic'>[ckey] played <code>[S]</code> (<a href='?src=[this_uid];action=silenceSound'>SILENCE</a>) (<a href='?src=[this_uid];action=muteAdmin&a=[ckey]'>ALWAYS SILENCE THIS ADMIN</a>)</span>")
|
||||
to_chat(M, "<span class='boldannounceic'>[ckey] played <code>[S]</code> (<a href='byond://?src=[this_uid];action=silenceSound'>SILENCE</a>) (<a href='byond://?src=[this_uid];action=muteAdmin&a=[ckey]'>ALWAYS SILENCE THIS ADMIN</a>)</span>")
|
||||
SEND_SOUND(M, uploaded_sound)
|
||||
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Global Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
deity = GET_CULT_DATA(entity_name, "Cult God")
|
||||
|
||||
log_say("(PRAYER) [msg]", usr)
|
||||
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && HAS_MIND_TRAIT(usr, TRAIT_HOLY) ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_TP(src,"TP")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
|
||||
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && HAS_MIND_TRAIT(usr, TRAIT_HOLY) ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_TP(src,"TP")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) ([ADMIN_SC(src,"SC")]) (<A href='byond://?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A href='byond://?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
|
||||
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
@@ -67,7 +67,7 @@
|
||||
"sender_uid" = Sender.UID(),
|
||||
"message" = html_decode(msg)))
|
||||
GLOB.ert_request_messages.Insert(1, insert_this) // insert it to the top of the list
|
||||
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (<A HREF='?_src_=holder;ErtReply=[Sender.UID()]'>RESPOND</A>):</b> [msg]</span>"
|
||||
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (<A href='byond://?_src_=holder;ErtReply=[Sender.UID()]'>RESPOND</A>):</b> [msg]</span>"
|
||||
if(repeat_warning)
|
||||
msg += "<BR><span class='adminnotice'><b>WARNING: ERT request has gone 5 minutes with no reply!</b></span>"
|
||||
for(var/client/X in GLOB.admins)
|
||||
|
||||
@@ -1042,9 +1042,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
msg += "<TR><TD>[key_string]</TD><TD>[H.real_name]</TD><TD>[job_string]</TD><TD>[mins_ssd]</TD><TD>[role_string][obj_string]</TD>"
|
||||
msg += "<TD>[get_area(H)]</TD><TD>[ADMIN_PP(H,"PP")]</TD>"
|
||||
if(istype(H.loc, /obj/machinery/cryopod))
|
||||
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()]'>De-Spawn</A></TD>"
|
||||
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()]'>De-Spawn</A></TD>"
|
||||
else
|
||||
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()]'>Cryo</A></TD>"
|
||||
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()]'>Cryo</A></TD>"
|
||||
msg += "</TR>"
|
||||
msg += "</TABLE><br></BODY></HTML>"
|
||||
|
||||
@@ -1082,9 +1082,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
msg += "<TR><TD>[key_string]</TD><TD>[H.real_name]</TD><TD>[job_string]</TD><TD>[mins_afk]</TD><TD>[role_string][obj_string]</TD>"
|
||||
msg += "<TD>[get_area(H)]</TD><TD>[ADMIN_PP(H,"PP")]</TD>"
|
||||
if(istype(H.loc, /obj/machinery/cryopod))
|
||||
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()];cryoafk=1'>De-Spawn</A></TD>"
|
||||
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()];cryoafk=1'>De-Spawn</A></TD>"
|
||||
else
|
||||
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()];cryoafk=1'>Cryo</A></TD>"
|
||||
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()];cryoafk=1'>Cryo</A></TD>"
|
||||
msg += "</TR>"
|
||||
msg += "</TABLE></BODY></HTML>"
|
||||
src << browse(msg, "window=Player_ssd_afk_check;size=600x300")
|
||||
@@ -1147,16 +1147,16 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
|
||||
return
|
||||
|
||||
var/list/dat = list()
|
||||
var/list/dat = list("<!DOCTYPE html>")
|
||||
for(var/datum/station_goal/S in SSticker.mode.station_goals)
|
||||
dat += "[S.name][S.completed ? " (C)" : ""] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a>"
|
||||
dat += "[S.name][S.completed ? " (C)" : ""] - <a href='byond://?src=[S.UID()];announce=1'>Announce</a> | <a href='byond://?src=[S.UID()];remove=1'>Remove</a>"
|
||||
dat += ""
|
||||
dat += "<a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
|
||||
dat += "<a href='byond://?src=[UID()];add_station_goal=1'>Add New Goal</a>"
|
||||
dat += ""
|
||||
dat += "<b>Secondary goals</b>"
|
||||
for(var/datum/station_goal/secondary/SG in SSticker.mode.secondary_goals)
|
||||
dat += "[SG.admin_desc][SG.completed ? " (C)" : ""] for [SG.requester_name || SG.department] - <a href='?src=[SG.UID()];announce=1'>Announce</a> | <a href='?src=[SG.UID()];remove=1'>Remove</a> | <a href='?src=[SG.UID()];mark_complete=1'>Mark complete</a> | <a href='?src=[SG.UID()];reset_progress=1'>Reset progress</a>"
|
||||
dat += "<a href='?src=[UID()];add_secondary_goal=1'>Add New Secondary Goal</a>"
|
||||
dat += "[SG.admin_desc][SG.completed ? " (C)" : ""] for [SG.requester_name || SG.department] - <a href='byond://?src=[SG.UID()];announce=1'>Announce</a> | <a href='byond://?src=[SG.UID()];remove=1'>Remove</a> | <a href='byond://?src=[SG.UID()];mark_complete=1'>Mark complete</a> | <a href='byond://?src=[SG.UID()];reset_progress=1'>Reset progress</a>"
|
||||
dat += "<a href='byond://?src=[UID()];add_secondary_goal=1'>Add New Secondary Goal</a>"
|
||||
|
||||
usr << browse(dat.Join("<br>"), "window=goals;size=400x400")
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
var/list/rows = list()
|
||||
rows += "<table><tr><th scope='col' width='90%'>Slot</th><th scope='col' width='10%'>Actions</th></tr>"
|
||||
for(var/slotname in slots)
|
||||
rows += "<tr><td>[slotname]</td><td><a href='?src=[holder_uid];spawnjsondatum=[slots[slotname]]'>Spawn</a> <a href='?src=[holder_uid];deletejsondatum=[slots[slotname]]'>Delete</a></td></tr>"
|
||||
rows += "<tr><td>[slotname]</td><td><a href='byond://?src=[holder_uid];spawnjsondatum=[slots[slotname]]'>Spawn</a> <a href='byond://?src=[holder_uid];deletejsondatum=[slots[slotname]]'>Delete</a></td></tr>"
|
||||
|
||||
rows += "</table>"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user