Skip to content

Commit 04bc9fb

Browse files
authored
516 compatibility for browsers (#20652)
this is a bit of cmss13-devs/cmss13#8646 cmss13-devs/cmss13#8875 cmss13-devs/cmss13#8606 cmss13-devs/cmss13#8607 cmss13-devs/cmss13#8359 cmss13-devs/cmss13#7860 ( and thus ParadiseSS13/Paradise#25105 ParadiseSS13/Paradise#25205 ParadiseSS13/Paradise#25363 ParadiseSS13/Paradise#26423 and ParadiseSS13/Paradise#26433 ) tgstation/tgstation#89766 in order to work properly - using the efficient storage method, instead of the byond json method - github pages needs to be enabled and built from the gh-pages branch. because yeah --------- Co-authored-by: harryob <[email protected]>
1 parent 1bc5abd commit 04bc9fb

File tree

73 files changed

+777
-312
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+777
-312
lines changed
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Generate web assets
2+
on:
3+
push:
4+
branches:
5+
- master
6+
jobs:
7+
generate_static_assets:
8+
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
9+
runs-on: ubuntu-latest
10+
concurrency: gen-assets
11+
steps:
12+
- uses: actions/checkout@v3
13+
- name: Generate static assets
14+
run: |
15+
mv tgui/public/ assets
16+
- name: Deploy
17+
uses: JamesIves/[email protected]
18+
with:
19+
BRANCH: gh-pages
20+
CLEAN: true
21+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
SINGLE_COMMIT: true
23+
FOLDER: assets

aurorastation.dme

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
#include "code\__DEFINES\gradient.dm"
7373
#include "code\__DEFINES\guns.dm"
7474
#include "code\__DEFINES\hallucinations.dm"
75+
#include "code\__DEFINES\html.dm"
7576
#include "code\__DEFINES\hud.dm"
7677
#include "code\__DEFINES\hydroponics.dm"
7778
#include "code\__DEFINES\icon_layering.dm"

code/ZAS/Variable Settings.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ GLOBAL_DATUM_INIT(vsc, /vs_control, new())
113113
if("[ch]_NAME" in vars) vw_name = vars["[ch]_NAME"]
114114
dat += "<b>[vw_name] = [vw]</b> <A href='byond://?src=[REF(src)];changevar=[ch]'>\[Change\]</A><br>"
115115
dat += "<i>[vw_desc]</i><br><br>"
116-
user << browse(dat,"window=settings")
116+
user << browse(HTML_SKELETON(dat), "window=settings")
117117

118118
/vs_control/Topic(href,href_list)
119119
if("changevar" in href_list)

code/__DEFINES/html.dm

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#define HTML_SKELETON_INTERNAL(head, body) \
2+
"<!DOCTYPE html><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><meta http-equiv='X-UA-Compatible' content='IE=edge'>[head]</head><body>[body]</body></html>"
3+
4+
#define HTML_SKELETON_TITLE(title, body) HTML_SKELETON_INTERNAL("<title>[title]</title>", body)
5+
#define HTML_SKELETON(body) HTML_SKELETON_INTERNAL("", body)

code/controllers/configuration.dm

+7
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,8 @@ GLOBAL_LIST_EMPTY(gamemode_cache)
477477
var/asset_cdn_webroot = ""
478478
var/asset_cdn_url = null
479479

480+
var/storage_cdn_iframe = "https://aurorastation.github.io/aurora.3/iframe.html"
481+
480482
GENERAL_PROTECT_DATUM(/datum/configuration)
481483

482484
/datum/configuration/New()
@@ -1087,6 +1089,9 @@ GENERAL_PROTECT_DATUM(/datum/configuration)
10871089
if("asset_cdn_url")
10881090
asset_cdn_url = (value[length(value)] != "/" ? (value + "/") : value)
10891091

1092+
if("storage_cdn_iframe")
1093+
storage_cdn_iframe = value
1094+
10901095
else
10911096
log_config("Unknown setting in configuration: '[name]'")
10921097

@@ -1181,6 +1186,8 @@ GENERAL_PROTECT_DATUM(/datum/configuration)
11811186
load_away_sites_config()
11821187
load_exoplanets_config()
11831188

1189+
Master.OnConfigLoad()
1190+
11841191
/datum/configuration/proc/save_logging_config()
11851192
rustg_file_write(json_encode(GLOB.config.logsettings), "config/logging.json")
11861193
rustg_file_write(json_encode(GLOB.config.logfiles), "config/logging_files.json")

code/controllers/subsystems/processing/tgui.dm

+18
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,24 @@ PROCESSING_SUBSYSTEM_DEF(tgui)
3434
basehtml = replacetextEx(basehtml, "<!-- tgui:inline-polyfill -->", polyfill)
3535
basehtml = replacetextEx(basehtml, "<!-- tgui:nt-copyright -->", "NanoTrasen © 2457-[text2num(time2text(world.realtime, "YYYY")) + 442]")
3636

37+
/datum/controller/subsystem/processing/tgui/OnConfigLoad()
38+
var/storage_iframe = GLOB.config.storage_cdn_iframe
39+
if(storage_iframe && storage_iframe != /datum/configuration::storage_cdn_iframe)
40+
basehtml = replacetextEx(basehtml, "tgui:storagecdn", storage_iframe)
41+
return
42+
43+
if(GLOB.config.asset_transport == "webroot")
44+
var/datum/asset_transport/webroot/webroot = SSassets.transport
45+
46+
var/datum/asset_cache_item/item = webroot.register_asset("iframe.html", file("tgui/public/iframe.html"))
47+
basehtml = replacetext(basehtml, "tgui:storagecdn", webroot.get_asset_url("iframe.html", item))
48+
return
49+
50+
if(!storage_iframe)
51+
return
52+
53+
basehtml = replacetextEx(basehtml, "tgui:storagecdn", storage_iframe)
54+
3755
/datum/controller/subsystem/processing/tgui/Shutdown()
3856
close_all_uis()
3957

code/datums/mind.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
out += "None."
188188
out += "<br><a href='byond://?src=[REF(src)];obj_add=1'>\[add\]</a>"
189189
out += "<b>Ambitions:</b> [ambitions ? ambitions : "None"] <a href='byond://?src=[REF(src)];amb_edit=[REF(src)]'>\[edit\]</a></br>"
190-
usr << browse(out, "window=edit_memory[src]")
190+
usr << browse(HTML_SKELETON(out), "window=edit_memory[src]")
191191

192192
/datum/mind/Topic(href, href_list)
193193
if(!check_rights(R_ADMIN)) return

code/game/gamemodes/technomancer/catalog.dm

+5-5
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ GLOBAL_LIST_INIT(all_technomancer_assistance, (typesof(/datum/technomancer/assis
152152
dat += "<a href='byond://?src=[REF(src)];spell_choice=[spell.name]'>Purchase</a> ([spell.cost])<br><br>"
153153
else
154154
dat += "<font color='red'><b>Cannot afford!</b></font><br><br>"
155-
user << browse(dat, "window=radio")
155+
user << browse(HTML_SKELETON(dat), "window=radio")
156156
onclose(user, "radio")
157157
if(1) //Equipment
158158
var/dat = ""
@@ -173,7 +173,7 @@ GLOBAL_LIST_INIT(all_technomancer_assistance, (typesof(/datum/technomancer/assis
173173
dat += "<a href='byond://?src=[REF(src)];item_choice=[E.name]'>Purchase</a> ([E.cost])<br><br>"
174174
else
175175
dat += "<font color='red'><b>Cannot afford!</b></font><br><br>"
176-
user << browse(dat, "window=radio")
176+
user << browse(HTML_SKELETON(dat), "window=radio")
177177
onclose(user, "radio")
178178
if(2) //Consumables
179179
var/dat = ""
@@ -194,7 +194,7 @@ GLOBAL_LIST_INIT(all_technomancer_assistance, (typesof(/datum/technomancer/assis
194194
dat += "<a href='byond://?src=[REF(src)];item_choice=[C.name]'>Purchase</a> ([C.cost])<br><br>"
195195
else
196196
dat += "<font color='red'><b>Cannot afford!</b></font><br><br>"
197-
user << browse(dat, "window=radio")
197+
user << browse(HTML_SKELETON(dat), "window=radio")
198198
onclose(user, "radio")
199199
if(3) //Assistance
200200
var/dat = ""
@@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(all_technomancer_assistance, (typesof(/datum/technomancer/assis
214214
dat += "<a href='byond://?src=[REF(src)];item_choice=[A.name]'>Purchase</a> ([A.cost])<br><br>"
215215
else
216216
dat += "<font color='red'><b>Cannot afford!</b></font><br><br>"
217-
user << browse(dat, "window=radio")
217+
user << browse(HTML_SKELETON(dat), "window=radio")
218218
onclose(user, "radio")
219219
if(4) //Info
220220
var/dat = ""
@@ -281,7 +281,7 @@ GLOBAL_LIST_INIT(all_technomancer_assistance, (typesof(/datum/technomancer/assis
281281
dat += "When a function refers to 'allies', it means you, your apprentices, currently controlled entities (with the \
282282
Control function), and friendly simple-minded entities that you've summoned with the Scepter of Enhancement.<br>"
283283
dat += "A meter is equal to one 'tile'.<br>"
284-
user << browse(dat, "window=radio")
284+
user << browse(HTML_SKELETON(dat), "window=radio")
285285
onclose(user, "radio")
286286

287287
// Proc: Topic()

code/game/machinery/computer/cloning.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@
217217
dat += "<b><a href='byond://?src=[REF(src)];menu=3'>No</a></b>"
218218

219219

220-
user << browse(dat, "window=cloning")
220+
user << browse(HTML_SKELETON(dat), "window=cloning")
221221
onclose(user, "cloning")
222222
return
223223

code/game/machinery/suit_storage_unit.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
//onclose(user, "suit_storage_unit")
170170

171171

172-
user << browse(dat, "window=suit_storage_unit;size=400x500")
172+
user << browse(HTML_SKELETON(dat), "window=suit_storage_unit;size=400x500")
173173
onclose(user, "suit_storage_unit")
174174
return
175175

code/game/objects/items/weapons/manuals.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@
14951495

14961496
/obj/item/book/manual/tcaf_pamphlet/attack_self(var/mob/user as mob)
14971497
if(src.dat)
1498-
user << browse("<TT><I>Penned by [author].</I></TT> <BR>" + "[dat]", "window=book")
1498+
user << browse(HTML_SKELETON("<TT><I>Penned by [author].</I></TT> <BR>" + "[dat]"), "window=book")
14991499
user.visible_message("[user] opens a pamphlet titled \"[src.title]\" and begins reading intently.")
15001500
playsound(loc, 'sound/bureaucracy/paperfold.ogg', 50, 1)
15011501
onclose(user, "book")

code/game/objects/items/weapons/storage/secure.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ ABSTRACT_TYPE(/obj/item/storage/secure)
9292
message = "*****"
9393
dat += "<HR>\n>[message]<BR>\n<A href='byond://?src=[REF(src)];type=1'>1</A>-<A href='byond://?src=[REF(src)];type=2'>2</A>-<A href='byond://?src=[REF(src)];type=3'>3</A><BR>\n<A href='byond://?src=[REF(src)];type=4'>4</A>-<A href='byond://?src=[REF(src)];type=5'>5</A>-<A href='byond://?src=[REF(src)];type=6'>6</A><BR>\n<A href='byond://?src=[REF(src)];type=7'>7</A>-<A href='byond://?src=[REF(src)];type=8'>8</A>-<A href='byond://?src=[REF(src)];type=9'>9</A><BR>\n<A href='byond://?src=[REF(src)];type=R'>R</A>-<A href='byond://?src=[REF(src)];type=0'>0</A>-<A href='byond://?src=[REF(src)];type=E'>E</A><BR>\n</TT>"
9494

95-
user << browse(dat, "window=caselock;size=300x280")
95+
user << browse(HTML_SKELETON(dat), "window=caselock;size=300x280")
9696

9797
/obj/item/storage/secure/Topic(href, href_list)
9898
..()

code/game/objects/items/weapons/teleportation.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Frequency:
5555
<A href='byond://?src=[REF(src)];freq=10'>+</A><BR>
5656

5757
<A href='byond://?src=[REF(src)];refresh=1'>Refresh</A>"}
58-
user << browse(dat, "window=radio")
58+
user << browse(HTML_SKELETON(dat), "window=radio")
5959
onclose(user, "radio")
6060
return
6161

code/modules/admin/DB ban/ban_mirroring.dm

+2-2
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
i = (++i % 2)
189189

190190
output += "</table>"
191-
user << browse(output, "window=banmirrors;size=600x400")
191+
user << browse(HTML_SKELETON(output), "window=banmirrors;size=600x400")
192192

193193
/proc/display_mirrors_ckeys(mob/user, mirror_id)
194194
if (!user || !check_rights(R_MOD|R_ADMIN) || !mirror_id)
@@ -223,7 +223,7 @@
223223
return
224224

225225
output += "<br><br><a href='byond://?_src_=holder;dbbanmirrors=[query.item[2]];'>Back</a>"
226-
user << browse(output, "window=banmirrors")
226+
user << browse(HTML_SKELETON(output), "window=banmirrors")
227227

228228
/proc/toggle_mirror_status(mob/user, mirror_id, inactive = FALSE)
229229
if (!user || !check_rights(R_MOD|R_ADMIN) || !mirror_id)

code/modules/admin/NewBan.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ var/savefile/Banlist
189189

190190
dat += "</table>"
191191
dat = "<HR><B>Bans:</B> <FONT COLOR=blue>(U) = Unban , (E) = Edit Ban</FONT> - <FONT COLOR=green>([count] Bans)</FONT><HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >[dat]"
192-
usr << browse(dat, "window=unbanp;size=875x400")
192+
usr << browse(HTML_SKELETON(dat), "window=unbanp;size=875x400")
193193

194194
//////////////////////////////////// DEBUG ////////////////////////////////////
195195

code/modules/admin/admin.dm

+6-6
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ var/global/enabled_spooking = 0
281281
if(index == page)
282282
dat += "</b>"
283283

284-
usr << browse(dat, "window=player_notes;size=400x400")
284+
usr << browse(HTML_SKELETON(dat), "window=player_notes;size=400x400")
285285

286286

287287
/datum/admins/proc/player_has_info(var/key as text)
@@ -598,7 +598,7 @@ var/global/enabled_spooking = 0
598598
dat+="Please report this on GitHub, along with what you did to make this appear."
599599

600600

601-
usr << browse(dat, "window=admincaster_main;size=400x600")
601+
usr << browse(HTML_SKELETON(dat), "window=admincaster_main;size=400x600")
602602
onclose(usr, "admincaster_main")
603603

604604

@@ -618,7 +618,7 @@ var/global/enabled_spooking = 0
618618
dat += "<tr><td>[ckey] - [ban[2]] - (<a href='byond://?src=[REF(src)];jobban_tgt=[ckey];jobban_job=[job];'>unban</a>)</td></tr>"
619619

620620
dat += "</table>"
621-
usr << browse(dat, "window=ban;size=400x400")
621+
usr << browse(HTML_SKELETON(dat), "window=ban;size=400x400")
622622

623623
/datum/admins/proc/Game()
624624
if(!check_rights(0)) return
@@ -640,7 +640,7 @@ var/global/enabled_spooking = 0
640640
<A href='byond://?src=[REF(src)];vsc=default'>Choose a default ZAS setting</A><br>
641641
"}
642642

643-
usr << browse(dat, "window=admin2;size=210x280")
643+
usr << browse(HTML_SKELETON(dat), "window=admin2;size=210x280")
644644
return
645645

646646
/datum/admins/proc/Secrets()
@@ -658,7 +658,7 @@ var/global/enabled_spooking = 0
658658
continue
659659
dat += "<A href='byond://?src=[REF(src)];admin_secrets=[REF(item)]'>[item.name()]</A><BR>"
660660
dat += "<BR>"
661-
usr << browse(dat, "window=secrets")
661+
usr << browse(HTML_SKELETON(dat), "window=secrets")
662662
return
663663

664664

@@ -1139,7 +1139,7 @@ var/global/enabled_spooking = 0
11391139
out += " None."
11401140
out += " <a href='byond://?src=[REF(SSticker.mode)];add_antag_type=1'>\[+\]</a><br/>"
11411141

1142-
usr << browse(out, "window=edit_mode[src]")
1142+
usr << browse(HTML_SKELETON(out), "window=edit_mode[src]")
11431143
feedback_add_details("admin_verb","SGM")
11441144

11451145

code/modules/admin/admin_verbs.dm

+1
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ GLOBAL_LIST_INIT(admin_verbs_dev, list( //will need to be altered - Ryan784
499499
/client/proc/cmd_generate_lag,
500500
/client/proc/create_poll, //Allows to create polls
501501
/client/proc/profiler_start,
502+
/client/proc/allow_browser_inspect,
502503
))
503504

504505
GLOBAL_LIST_INIT(admin_verbs_cciaa, list(

code/modules/admin/secrets/admin_secrets/admin_logs.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010
dat += "<li>[l]</li>"
1111
if(!GLOB.admin_log.len)
1212
dat += "No-one has done anything this round!"
13-
user << browse(dat, "window=admin_log")
13+
user << browse(HTML_SKELETON(dat), "window=admin_log")

code/modules/admin/secrets/admin_secrets/bombing_list.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
var/dat = "<B>Bombing List</B>"
1010
for(var/l in GLOB.bombers)
1111
dat += "[l]<BR>"
12-
user << browse(dat, "window=bombers")
12+
user << browse(HTML_SKELETON(dat), "window=bombers")

code/modules/admin/secrets/admin_secrets/list_dna.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
if(H.dna && H.ckey)
1212
dat += "<tr><td>[H]</td><td>[H.dna.unique_enzymes]</td><td>[H.b_type]</td></tr>"
1313
dat += "</table>"
14-
user << browse(dat, "window=DNA;size=440x410")
14+
user << browse(HTML_SKELETON(dat), "window=DNA;size=440x410")

code/modules/admin/secrets/admin_secrets/list_fingerprints.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@
1616
else if(!H.dna)
1717
dat += "<tr><td>[H]</td><td>H.dna = null</td></tr>"
1818
dat += "</table>"
19-
user << browse(dat, "window=fingerprints;size=440x410")
19+
user << browse(HTML_SKELETON(dat), "window=fingerprints;size=440x410")

code/modules/admin/secrets/admin_secrets/show_law_changes.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
var/dat = "<B>Showing last [length(GLOB.lawchanges)] law changes.</B><HR>"
1313
for(var/sig in GLOB.lawchanges)
1414
dat += "[sig]<BR>"
15-
user << browse(dat, "window=lawchanges;size=800x500")
15+
user << browse(HTML_SKELETON(dat), "window=lawchanges;size=800x500")

code/modules/admin/secrets/admin_secrets/show_signalers.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
var/dat = "<B>Showing last [length(GLOB.lastsignalers)] signalers.</B><HR>"
1313
for(var/sig in GLOB.lastsignalers)
1414
dat += "[sig]<BR>"
15-
user << browse(dat, "window=lastsignalers;size=800x500")
15+
user << browse(HTML_SKELETON(dat), "window=lastsignalers;size=800x500")

code/modules/admin/stickyban.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@
369369
[banhtml.Join("")]
370370
</body>
371371
"}
372-
usr << browse(html,"window=stickybans;size=700x400")
372+
usr << browse(HTML_SKELETON(html), "window=stickybans;size=700x400")
373373

374374
/proc/sticky_banned_ckeys()
375375
if (establish_db_connection(GLOB.dbcon) || length(SSstickyban.dbcache))

code/modules/admin/topic.dm

+3-3
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@
416416
dat += {"<A href='byond://?src=[REF(src)];c_mode2=secret'>Secret</A><br>"}
417417
dat += {"<A href='byond://?src=[REF(src)];c_mode2=random'>Random</A><br>"}
418418
dat += {"Now: [GLOB.master_mode]"}
419-
usr << browse(dat, "window=c_mode")
419+
usr << browse(HTML_SKELETON(dat), "window=c_mode")
420420

421421
else if(href_list["f_secret"])
422422
if(!check_rights(R_ADMIN))
@@ -431,7 +431,7 @@
431431
dat += {"<A href='byond://?src=[REF(src)];f_secret2=[mode]'>[GLOB.config.mode_names[mode]]</A><br>"}
432432
dat += {"<A href='byond://?src=[REF(src)];f_secret2=secret'>Random (default)</A><br>"}
433433
dat += {"Now: [GLOB.secret_force_mode]"}
434-
usr << browse(dat, "window=f_secret")
434+
usr << browse(HTML_SKELETON(dat), "window=f_secret")
435435

436436
else if(href_list["c_mode2"])
437437
if(!check_rights(R_ADMIN|R_SERVER))
@@ -981,7 +981,7 @@
981981
var/obj/pageobj = B.pages[page]
982982
data += "<A href='byond://?src=[REF(src)];AdminFaxViewPage=[page];paper_bundle=[REF(B)]'>Page [page] - [pageobj.name]</A><BR>"
983983

984-
usr << browse(data, "window=[B.name]")
984+
usr << browse(HTML_SKELETON(data), "window=[B.name]")
985985
else
986986
to_chat(usr, SPAN_WARNING("The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]"))
987987

0 commit comments

Comments
 (0)