[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:
S34N
2024-04-15 18:49:50 +00:00
committed by GitHub
co-authored by AffectedArc07
parent 95efc8fbda
commit 0b838dc3c4
216 changed files with 2971 additions and 15327 deletions
+1 -1
View File
@@ -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
+13 -13
View File
@@ -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()
+15
View File
@@ -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
+7 -7
View File
@@ -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
+1 -1
View File
@@ -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!
+2 -2
View File
@@ -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)
+9 -9
View File
@@ -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")
+1 -1
View File
@@ -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>&nbsp;&nbsp;<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>&nbsp;&nbsp;<a href='byond://?src=[holder_uid];deletejsondatum=[slots[slotname]]'>Delete</a></td></tr>"
rows += "</table>"