diff --git a/code/modules/tgui/modules/admin/player_notes.dm b/code/modules/tgui/modules/admin/player_notes.dm index e977674b6a9..90aed435fab 100644 --- a/code/modules/tgui/modules/admin/player_notes.dm +++ b/code/modules/tgui/modules/admin/player_notes.dm @@ -56,58 +56,8 @@ switch(action) if("__fallback") - var/page = 1 - var/filter - - var/dat = "Player notes - Apply Filter
" - dat +="WARNING: TGUI-FALLBACK MODE
" - var/savefile/S=new("data/player_notes.sav") - var/list/note_keys - S >> note_keys - if(!note_keys) - dat += "No notes found." - else - dat += "" - note_keys = sortList(note_keys) - - if(filter) - var/list/results = list() - var/regex/needle = regex(filter, "i") - for(var/haystack in note_keys) - if(needle.Find(haystack)) - results += haystack - note_keys = results - - // Display the notes on the current page - var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE - // Emulate CEILING(why does BYOND not have ceil, 1) - if(number_pages != round(number_pages)) - number_pages = round(number_pages) + 1 - var/page_index = page - 1 - - if(page_index < 0 || page_index >= number_pages) - dat += "" - else - var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 - var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE - upper_bound = min(upper_bound, note_keys.len) - for(var/index = lower_bound, index <= upper_bound, index++) - var/t = note_keys[index] - dat += "" - - dat += "
No keys found.
[t]

" - - // Display a footer to select different pages - for(var/index = 1, index <= number_pages, index++) - if(index == page) - dat += "" - dat += "[index] " - if(index == page) - dat += "" - if(note_keys) - note_keys = sortList(note_keys) - - usr << browse(dat, "window=player_notes;size=400x400") + var/datum/admins/A = admin_datums[usr.ckey] + A.PlayerNotesLegacy() if("show_player_info") var/datum/tgui_module/player_notes_info/A = new(src) @@ -134,6 +84,7 @@ return data +// PLAYER NOTES INFO /datum/tgui_module/player_notes_info name = "Player Notes Info" tgui_id = "PlayerNotesInfo" @@ -149,44 +100,8 @@ switch(action) if("__fallback") - var/dat = "Info on [key]" - dat += "" - dat +="WARNING: TGUI-FALLBACK MODE
" - - var/p_age = "unknown" - for(var/client/C in GLOB.clients) - if(C.ckey == key) - p_age = C.player_age - break - dat +="Player age: [p_age]
" - - var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav") - var/list/infos - info >> infos - if(!infos) - dat += "No information found on the given key.
" - else - var/update_file = 0 - var/i = 0 - for(var/datum/player_info/I in infos) - i += 1 - if(!I.timestamp) - I.timestamp = "Pre-4/3/2012" - update_file = 1 - if(!I.rank) - I.rank = "N/A" - update_file = 1 - dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] " - if(I.author == usr.key || I.author == "Adminbot" || ishost(usr)) - dat += "Remove" - dat += "

" - if(update_file) info << infos - - dat += "
" - dat += "Add Comment
" - - dat += "" - usr << browse(dat, "window=adminplayerinfo;size=480x480") + var/datum/admins/A = admin_datums[usr.ckey] + A.show_player_info_legacy(key) if("add_player_info") var/key = params["ckey"] @@ -241,3 +156,158 @@ data["age"] = p_age return data + +// ==== LEGACY UI ==== + +/datum/admins/proc/PlayerNotesLegacy() + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + PlayerNotesPageLegacy(1) + +/datum/admins/proc/PlayerNotesFilterLegacy() + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + var/filter = input(usr, "Filter string (case-insensitive regex)", "Player notes filter") as text|null + PlayerNotesPageLegacy(1, filter) + +/datum/admins/proc/PlayerNotesPageLegacy(page, filter) + var/dat = "Player notes - Apply Filter
" + var/savefile/S=new("data/player_notes.sav") + var/list/note_keys + S >> note_keys + if(!note_keys) + dat += "No notes found." + else + dat += "" + note_keys = sortList(note_keys) + + if(filter) + var/list/results = list() + var/regex/needle = regex(filter, "i") + for(var/haystack in note_keys) + if(needle.Find(haystack)) + results += haystack + note_keys = results + + // Display the notes on the current page + var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE + // Emulate CEILING(why does BYOND not have ceil, 1) + if(number_pages != round(number_pages)) + number_pages = round(number_pages) + 1 + var/page_index = page - 1 + + if(page_index < 0 || page_index >= number_pages) + dat += "" + else + var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 + var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE + upper_bound = min(upper_bound, note_keys.len) + for(var/index = lower_bound, index <= upper_bound, index++) + var/t = note_keys[index] + dat += "" + + dat += "
No keys found.
[t]

" + + // Display a footer to select different pages + for(var/index = 1, index <= number_pages, index++) + if(index == page) + dat += "" + dat += "[index] " + if(index == page) + dat += "" + + usr << browse(dat, "window=player_notes;size=400x400") + +/datum/admins/proc/player_has_info_legacy(var/key as text) + var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav") + var/list/infos + info >> infos + if(!infos || !infos.len) return 0 + else return 1 + +/datum/admins/proc/show_player_info_legacy(var/key as text) + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + var/dat = "Info on [key]" + dat += "" + + var/p_age = "unknown" + for(var/client/C in GLOB.clients) + if(C.ckey == key) + p_age = C.player_age + break + dat +="Player age: [p_age]
" + + var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav") + var/list/infos + info >> infos + if(!infos) + dat += "No information found on the given key.
" + else + var/update_file = 0 + var/i = 0 + for(var/datum/player_info/I in infos) + i += 1 + if(!I.timestamp) + I.timestamp = "Pre-4/3/2012" + update_file = 1 + if(!I.rank) + I.rank = "N/A" + update_file = 1 + dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] " + if(I.author == usr.key || I.author == "Adminbot" || ishost(usr)) + dat += "Remove" + dat += "

" + if(update_file) info << infos + + dat += "
" + dat += "Add Comment
" + + dat += "" + usr << browse(dat, "window=adminplayerinfo;size=480x480") + +/datum/admins/Topic(href, href_list) + ..() + + if(href_list["add_player_info_legacy"]) + var/key = href_list["add_player_info_legacy"] + var/add = sanitize(input(usr, "Add Player Info (Legacy)") as null|text) + if(!add) return + + notes_add(key,add,usr) + show_player_info_legacy(key) + + if(href_list["remove_player_info_legacy"]) + var/key = href_list["remove_player_info_legacy"] + var/index = text2num(href_list["remove_index"]) + + notes_del(key, index) + show_player_info_legacy(key) + + if(href_list["notes_legacy"]) + var/ckey = href_list["ckey"] + if(!ckey) + var/mob/M = locate(href_list["mob"]) + if(ismob(M)) + ckey = M.ckey + + switch(href_list["notes_legacy"]) + if("show") + show_player_info_legacy(ckey) + if("list") + var/filter + if(href_list["filter"] && href_list["filter"] != "0") + filter = url_decode(href_list["filter"]) + PlayerNotesPageLegacy(text2num(href_list["index"]), filter) + if("filter") + PlayerNotesFilterLegacy() + return \ No newline at end of file